


  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

  :root {
    --green: #13AD65;
    --green-dark: #0f9558;
    --green-light: rgba(19,173,101,0.08);
    --green-border: rgba(19,173,101,0.3);
    --red: #E24B4A;
    --text: #1a1a1a;
    --text-2: #555;
    --text-3: #999;
    --border: #e2e2e2;
    --bg: #f5f6f8;
    --white: #fff;
    --radius: 10px;
    --shadow: 0 2px 16px rgba(0,0,0,0.08);
  }

  html, body { height: 100%; }

  body {
    font-family: 'Noto Sans TC', sans-serif;
    background: var(--bg);
    color: var(--text);
    font-size: 14px;
    line-height: 1.6;
  }

  /* ===== HEADER ===== */
  .header {
    background: var(--green);
    padding: 0 24px;
    display: flex;
    align-items: center;
    gap: 12px;
    height: 120px;
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
  }
  .logo-box {
    align-self: center;
    flex-shrink: 0;
    display: flex;
    align-items: center;
  }
  .logo-box img { height: 92px; width: auto; display: block; transform: translateY(-3px); }
  .header-title {
    color: #fff;
    font-size: 17px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.3px;
  }

  /* ===== LAYOUT ===== */
  .page { max-width: 720px; margin: 0 auto; padding: 28px 16px 60px; }

  /* ===== CARD ===== */
  .card {
    background: var(--white);
    border-radius: 14px;
    padding: 28px 28px 32px;
    box-shadow: var(--shadow);
    border: 1px solid #ebebeb;
  }
  .card-intro {
    font-size: 13px;
    color: var(--text-2);
    padding-bottom: 20px;
    border-bottom: 1px solid var(--border);
    margin-bottom: 24px;
    line-height: 1.7;
  }
  .card-intro .req-note { color: var(--red); font-weight: 500; }

  /* ===== FIELD GROUP ===== */
  .fg { margin-bottom: 20px; }
  .fg:last-child { margin-bottom: 0; }

  .fl {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 7px;
  }
  .fl .req { color: var(--red); margin-left: 2px; }

  .hint {
    font-size: 12px;
    color: var(--text-3);
    margin-top: 5px;
    line-height: 1.6;
  }

  /* ===== INPUTS ===== */
  input[type=text], input[type=email], input[type=tel], textarea, select {
    width: 100%;
    padding: 10px 13px;
    border: 1.5px solid var(--border);
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
    color: var(--text);
    background: var(--white);
    outline: none;
    transition: border-color 0.18s, box-shadow 0.18s;
    appearance: none;
  }
  input[type=text]:focus, input[type=email]:focus, input[type=tel]:focus,
  textarea:focus, select:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px rgba(19,173,101,0.12);
  }
  input.err, textarea.err, select.err {
    border-color: var(--red);
    box-shadow: 0 0 0 3px rgba(226,75,74,0.1);
  }
  textarea { resize: vertical; min-height: 120px; line-height: 1.65; }

  /* select arrow */
  .select-wrap { position: relative; }
  .select-wrap::after {
    content: '▾';
    position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
    font-size: 14px; color: var(--text-3); pointer-events: none;
  }
  select { cursor: pointer; padding-right: 32px; }

  .char-count { font-size: 11px; color: var(--text-3); text-align: right; margin-top: 4px; }
  .err-msg { font-size: 12px; color: var(--red); margin-top: 5px; min-height: 16px; }

  /* ===== EMAIL SUGGESTION ===== */
  .email-suggestion-box {
    display: none;
    margin-top: 6px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--white);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    overflow: hidden;
    position: relative;
    z-index: 5;
  }

  .email-suggestion-btn {
    display: block;
    width: 100%;
    padding: 9px 12px;
    text-align: left;
    border: none;
    background: var(--white);
    font-size: 14px;
    color: var(--text);
    cursor: pointer;
  }

  .email-suggestion-btn:hover,
  .email-suggestion-btn.email-suggestion-btn--active {
    background: var(--green-light);
  }

  /* ===== RADIO OPTS ===== */
  .radio-group { display: flex; flex-direction: column; gap: 7px; }
  .radio {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 13px;
    border: 1.5px solid var(--border);
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    color: var(--text);
    transition: border-color 0.15s, background 0.15s, color 0.15s;
    user-select: none;
  }
  .radio:hover { border-color: var(--green); background: var(--green-light); }
  .radio.selected { border-color: var(--green); background: var(--green); color: #fff; font-weight: 500; }
  .radio input[type=radio] { accent-color: #fff; width: 15px; height: 15px; flex-shrink: 0; cursor: pointer; }

  /* ===== DYNAMIC SECTION ===== */
  input[type=datetime-local] {
    width: 100%;
    padding: 10px 13px;
    border: 1.5px solid var(--border);
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
    color: var(--text);
    background: var(--white);
    outline: none;
    transition: border-color 0.18s, box-shadow 0.18s;
    cursor: pointer;
  }
  input[type=datetime-local]:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px rgba(19,173,101,0.12);
  }
  input[type=datetime-local]::-webkit-calendar-picker-indicator {
    cursor: pointer;
    opacity: 0.6;
    filter: invert(42%) sepia(80%) saturate(400%) hue-rotate(110deg);
  }

  .dyn-wrap {
    background: rgba(19,173,101,0.04);
    border: 1px solid var(--green-border);
    border-radius: 10px;
    padding: 18px;
    margin-top: 12px;
    animation: fadeIn 0.2s ease;
  }
  .dyn-wrap .fg { margin-bottom: 16px; }
  .dyn-wrap .fg:last-child { margin-bottom: 0; }

  @keyframes fadeIn { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:translateY(0); } }

  /* ===== DIVIDER ===== */
  hr { border: none; border-top: 1px solid var(--border); margin: 24px 0; }

  /* ===== UPLOAD ===== */
  .upload-area {
    border: 2px dashed var(--border);
    border-radius: 10px;
    padding: 28px 16px;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    background: #fafafa;
  }
  .upload-area:hover, .upload-area.drag { border-color: var(--green); background: var(--green-light); }
  .upload-area input { display: none; }
  .upload-ico { font-size: 30px; margin-bottom: 8px; }
  .upload-txt { font-size: 14px; color: var(--text-2); }
  .upload-txt span { color: var(--green); font-weight: 600; cursor: pointer; }
  .upload-sub { font-size: 11px; color: var(--text-3); margin-top: 5px; }
  .file-list { margin-top: 12px; }
  .fi {
    display: flex; align-items: center; gap: 8px;
    font-size: 12px; color: var(--text-2);
    padding: 6px 4px;
    border-bottom: 1px solid var(--border);
  }
  .fi:last-child { border-bottom: none; }
  .fi-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .fi-size { color: var(--text-3); flex-shrink: 0; }
  .fi-rm {
    background: none; border: none; color: var(--red);
    cursor: pointer; font-size: 16px; padding: 0 4px; line-height: 1;
    flex-shrink: 0;
  }

  /* ===== SUBMIT ===== */
  .submit-btn {
    width: 100%; padding: 14px;
    background: var(--green);
    color: #fff; border: none;
    border-radius: 10px;
    font-size: 15px; font-weight: 600; font-family: inherit;
    cursor: pointer; margin-top: 24px;
    transition: background 0.15s, opacity 0.15s, transform 0.1s;
    letter-spacing: 0.5px;
  }
  .submit-btn:hover:not(:disabled) { background: var(--green-dark); }
  .submit-btn:active:not(:disabled) { transform: scale(0.99); }
  .submit-btn:disabled { background: #c0c0c0; cursor: not-allowed; }

  /* ===== SUCCESS ===== */
  .success-card {
    background: var(--white);
    border-radius: 14px;
    padding: 40px 28px 36px;
    box-shadow: var(--shadow);
    border: 1px solid #ebebeb;
    text-align: center;
    animation: fadeIn 0.3s ease;
  }
  .sc-icon {
    width: 68px; height: 68px;
    background: rgba(19,173,101,0.1);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    margin: 0 auto 20px;
  }
  .sc-icon svg { width: 38px; height: 38px; }
  .sc-title { font-size: 20px; font-weight: 600; margin-bottom: 12px; }
  .sc-body { font-size: 14px; color: var(--text-2); line-height: 1.8; margin-bottom: 16px; }
  .sc-warn {
    background: #fffbf0;
    border-left: 3px solid #ef9f27;
    border-radius: 0 8px 8px 0;
    padding: 12px 14px;
    font-size: 13px;
    color: #5a4010;
    text-align: left;
    line-height: 1.65;
    margin-top: 16px;
  }
  .sc-warn strong { display: block; margin-bottom: 4px; font-size: 13px; }
  .sc-hours {
    margin-top: 12px;
    font-size: 13px;
    color: var(--text-3);
    background: var(--bg);
    border-radius: 8px;
    padding: 10px 14px;
    line-height: 1.7;
  }

  /* ===== RWD ===== */
  @media (max-width: 600px) {
    .card { padding: 20px 16px 24px; }
    .success-card { padding: 28px 16px 24px; }
    .page { padding: 18px 12px 48px; }
    .header-title { font-size: 15px; }
  }