:root {
  --bg: #f5f8fa;
  --surface: #ffffff;
  --surface-soft: #edf6fa;
  --ink: #0b2f47;
  --muted: #647784;
  --line: #d7e1e7;
  --brand: #005487;
  --brand-dark: #003d63;
  --accent: #ed315d;
  --accent-dark: #cf234d;
  --danger: #c6283d;
  --danger-soft: #fff1f3;
  --warning-soft: #fff6e8;
  --shadow: 0 12px 34px rgba(11, 47, 71, .09);
  --radius: 14px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: linear-gradient(180deg, #eef5f8 0, var(--bg) 310px);
}
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
a { color: inherit; }
.shell { max-width: 1160px; margin: 0 auto; padding: 16px 20px 46px; }
.topbar { display:flex; justify-content:space-between; align-items:center; gap:18px; margin-bottom:14px; }
.topbar-actions { display:flex; align-items:center; justify-content:flex-end; gap:12px; }
.main-site-return { display:inline-flex; align-items:center; justify-content:center; gap:9px; min-height:48px; padding:11px 18px; border-radius:12px; background:var(--accent); color:#fff; text-decoration:none; font-size:14px; font-weight:850; box-shadow:0 8px 22px rgba(237,49,93,.22); transition:background .16s, transform .16s, box-shadow .16s; }
.main-site-return:hover { background:var(--accent-dark); transform:translateY(-1px); box-shadow:0 10px 26px rgba(237,49,93,.28); }
.main-site-return:focus-visible { outline:3px solid rgba(237,49,93,.24); outline-offset:3px; }
.main-site-return span[aria-hidden="true"] { font-size:20px; line-height:1; }
.success-return { width:min(360px,100%); margin:20px auto 0; }
.brand { display:flex; align-items:center; gap:10px; min-width:0; }
.brand-logo { display:block; width:auto; height:64px; max-width:min(380px, 50vw); object-fit:contain; }
.lang-switch { display:flex; padding:3px; background:#fff; border:1px solid var(--line); border-radius:999px; box-shadow:0 3px 12px rgba(11,47,71,.05); }
.lang-switch button { border:0; background:transparent; padding:7px 11px; border-radius:999px; font-weight:800; color:var(--muted); }
.lang-switch button.active { background:var(--brand); color:#fff; }
.hero {
  background: linear-gradient(115deg, #ffffff 0%, #edf7fb 100%);
  color:var(--ink); border:1px solid #d7e8f0; border-left:5px solid var(--accent);
  border-radius:16px; padding:18px 22px; box-shadow:var(--shadow); margin-bottom:14px;
}
.hero-kicker { font-size:11px; text-transform:uppercase; letter-spacing:.12em; color:var(--accent-dark); font-weight:850; }
.hero h1 { margin:7px 0 7px; max-width:760px; font-size:clamp(26px,3.2vw,35px); line-height:1.05; color:var(--brand-dark); }
.hero p { margin:0; max-width:760px; font-size:14px; line-height:1.5; color:var(--muted); }
.progress { display:grid; grid-template-columns:repeat(5,1fr); gap:7px; margin:14px 0 6px; }
.progress-item { position:relative; padding-top:12px; color:var(--muted); font-size:12px; font-weight:800; }
.progress-item::before { content:""; position:absolute; inset:0 0 auto; height:4px; border-radius:999px; background:#d8e1e6; }
.progress-item.active { color:var(--brand-dark); }
.progress-item.active::before, .progress-item.done::before { background:var(--accent); }
.mobile-progress-label, .mobile-total { display:none; }
.layout { display:grid; grid-template-columns:minmax(0,1fr) 315px; gap:18px; align-items:start; margin-top:16px; }
.panel, .summary-card { background:var(--surface); border:1px solid rgba(0,84,135,.11); border-radius:var(--radius); box-shadow:var(--shadow); }
.panel { padding:21px; min-height:480px; }
.summary-card { padding:19px; position:sticky; top:14px; }
.step { display:none; }
.step.active { display:block; }
.step h2 { margin:0 0 6px; font-size:25px; line-height:1.15; color:var(--brand-dark); }
.step-intro { color:var(--muted); margin:0 0 20px; line-height:1.5; }
.section-block { margin-top:18px; }
.section-block.compact-top { margin-top:24px; padding-top:20px; border-top:1px solid var(--line); }
.section-title { margin:0 0 12px; font-size:17px; color:var(--brand-dark); }
.grid-2 { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.grid-3 { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.field { display:flex; flex-direction:column; gap:7px; margin-bottom:14px; }
.field label { font-size:13px; font-weight:820; }
.required-label::after { content:" *"; color:var(--danger); }
.field small { color:var(--muted); line-height:1.4; }
input, select, textarea {
  width:100%; border:1px solid var(--line); background:#fff; border-radius:10px; padding:12px 13px;
  color:var(--ink); outline:none; transition:border .16s, box-shadow .16s, background .16s;
}
input:focus, select:focus, textarea:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(237,49,93,.10); }
input.invalid, select.invalid, textarea.invalid { border-color:var(--danger); background:var(--danger-soft); box-shadow:0 0 0 3px rgba(198,40,61,.09); }
textarea { min-height:105px; resize:vertical; }
.invalid-group { border:1px solid var(--danger); background:var(--danger-soft); border-radius:12px; padding:10px; }
.field-error { display:block; margin-top:3px; color:var(--danger); font-size:12px; font-weight:750; line-height:1.35; }
.field-error-block { margin:-2px 0 14px; padding:11px 13px; border-radius:10px; background:var(--danger-soft); color:var(--danger); font-size:13px; font-weight:780; line-height:1.4; }
.occupancy-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.choice-card { border:1px solid var(--line); background:#fff; border-radius:11px; padding:13px; text-align:left; transition:.16s; min-height:74px; }
.choice-card:hover { border-color:var(--accent); transform:translateY(-1px); }
.choice-card.selected { border-color:var(--accent); box-shadow:0 0 0 3px rgba(237,49,93,.09); background:#fff7f9; }
.choice-card strong { display:block; margin-bottom:4px; color:var(--brand-dark); }
.choice-card span { color:var(--muted); font-size:12.5px; line-height:1.35; }
.notice { padding:12px 14px; border-radius:10px; background:var(--surface-soft); color:var(--brand-dark); line-height:1.42; margin:12px 0; font-size:14px; }
.notice.warn { background:var(--warning-soft); color:#6d471e; }
.notice.error { background:var(--danger-soft); color:var(--danger); border:1px solid rgba(198,40,61,.18); }
.hotel-strip { padding:12px 14px; border-radius:10px; background:#f7fafc; border:1px solid var(--line); color:var(--brand-dark); font-size:13px; font-weight:750; margin-top:12px; }
.program-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; }
.program-card { border:1px solid var(--line); border-radius:12px; padding:14px; background:#fff; display:flex; flex-direction:column; gap:8px; min-width:0; }
.program-card.selected { border-color:var(--accent); box-shadow:0 0 0 3px rgba(237,49,93,.11); background:#fffafd; }
.program-card-head { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; }
.program-card h4 { margin:0; font-size:17px; line-height:1.2; color:var(--brand-dark); }
.badge { white-space:nowrap; padding:5px 7px; border-radius:999px; background:var(--surface-soft); color:var(--brand); font-size:10.5px; font-weight:850; }
.program-card p { margin:0; color:var(--muted); line-height:1.4; font-size:13px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.program-meta { font-size:12.5px; font-weight:800; color:var(--ink); }
.program-details { border-top:1px solid var(--line); padding-top:8px; }
.program-details summary { cursor:pointer; color:var(--brand); font-weight:800; font-size:12.5px; }
.program-details ul { margin:8px 0 0; padding-left:17px; color:var(--muted); font-size:12.5px; line-height:1.45; }
.program-select { margin-top:auto; border:0; background:var(--brand); color:#fff; border-radius:9px; padding:10px 12px; font-weight:820; }
.program-card.selected .program-select { background:var(--accent); }
.traveler-card { border:1px solid var(--line); border-radius:11px; padding:14px; margin-top:10px; }
.traveler-card h4 { margin:0 0 9px; color:var(--brand-dark); }
.radio-stack { display:grid; gap:9px; }
.radio-card { display:flex; gap:10px; align-items:flex-start; border:1px solid var(--line); border-radius:11px; padding:13px; }
.radio-card:has(input:checked) { border-color:var(--accent); background:#fff7f9; box-shadow:0 0 0 2px rgba(237,49,93,.08); }
.radio-card input { width:auto; margin-top:3px; }
.radio-card strong { display:block; margin-bottom:3px; color:var(--brand-dark); }
.radio-card span { color:var(--muted); font-size:12.5px; line-height:1.35; }
.flight-grid { margin-top:16px; }
.actions { display:flex; justify-content:space-between; gap:10px; margin-top:22px; padding-top:17px; border-top:1px solid var(--line); }
.btn { border:0; border-radius:10px; padding:12px 17px; font-weight:850; min-height:44px; }
.btn.primary { background:var(--accent); color:#fff; }
.btn.primary:hover { background:var(--accent-dark); }
.btn.secondary { background:#edf2f5; color:var(--ink); }
.btn:disabled { opacity:.45; cursor:not-allowed; }
.summary-card h2 { margin:0 0 15px; font-size:19px; color:var(--brand-dark); }
.summary-list { display:grid; gap:10px; }
.summary-row { display:flex; justify-content:space-between; gap:12px; border-bottom:1px solid var(--line); padding-bottom:10px; font-size:12.5px; }
.summary-row span:first-child { color:var(--muted); }
.summary-row strong { text-align:right; overflow-wrap:anywhere; }
.summary-total { margin-top:15px; padding:15px; border-radius:11px; background:var(--brand-dark); color:#fff; }
.summary-total small { display:block; opacity:.78; margin-bottom:5px; }
.summary-total strong { font-size:25px; }
.included { margin:14px 0 0; padding:0; list-style:none; display:grid; gap:7px; font-size:12.5px; color:var(--muted); }
.included li::before { content:"✓"; color:var(--accent); font-weight:900; margin-right:7px; }
.checkline { display:flex; gap:9px; align-items:flex-start; margin:15px 0; padding:9px; border-radius:9px; }
.checkline.invalid-check { background:var(--danger-soft); outline:1px solid var(--danger); }
.checkline input { width:auto; margin-top:4px; }
.checkline label { font-size:13px; line-height:1.45; }
.success { text-align:center; padding:28px 8px; }
.success-mark { width:62px; height:62px; margin:0 auto 16px; border-radius:50%; display:grid; place-items:center; background:var(--surface-soft); color:var(--accent); font-size:30px; font-weight:900; }
.success h2 { font-size:27px; }
.success-box { margin:20px auto 0; max-width:640px; text-align:left; border:1px solid var(--line); border-radius:12px; padding:16px; background:#fbfcfd; }
.hidden { display:none !important; }
.small-note { color:var(--muted); font-size:12px; line-height:1.45; }
.admin-link { display:inline-block; margin-top:16px; color:var(--muted); font-size:11px; text-decoration:none; }

@media (max-width:940px) {
  .layout { grid-template-columns:1fr; }
  .summary-card { position:static; }
}
@media (max-width:680px) {
  body { background:linear-gradient(180deg,#f1f7fa 0,var(--bg) 250px); }
  .shell { padding:12px 10px 30px; }
  .topbar { margin-bottom:10px; align-items:flex-start; flex-wrap:wrap; }
  .topbar-actions { width:100%; display:grid; grid-template-columns:1fr auto; gap:9px; order:2; }
  .main-site-return { min-height:50px; padding:12px 14px; font-size:14px; border-radius:11px; }
  .success-return { display:flex; width:100%; margin-top:18px; }
  .brand-logo { height:50px; max-width:min(275px, 62vw); }
  .lang-switch button { padding:6px 9px; font-size:13px; }
  .hero { padding:15px 16px; border-radius:13px; border-left-width:4px; margin-bottom:11px; }
  .hero-kicker { font-size:9px; letter-spacing:.1em; }
  .hero h1 { font-size:23px; margin:5px 0 5px; line-height:1.08; }
  .hero p { font-size:13px; line-height:1.4; }
  .progress { margin:10px 2px 3px; gap:5px; }
  .progress-item { font-size:0; padding-top:9px; }
  .progress-item::before { height:3px; }
  .mobile-progress-label { display:block; margin:6px 2px 9px; color:var(--brand-dark); font-size:12px; font-weight:800; }
  .mobile-total { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 10px; padding:10px 12px; border-radius:10px; background:var(--brand-dark); color:#fff; }
  .mobile-total span { font-size:11px; opacity:.82; }
  .mobile-total strong { font-size:18px; white-space:nowrap; }
  .layout { margin-top:0; }
  .panel { padding:16px 13px 0; min-height:0; border-radius:12px; overflow:visible; }
  .step.active { padding-bottom:72px; }
  .step h2 { font-size:22px; }
  .step-intro { font-size:14px; margin-bottom:16px; }
  .section-block { margin-top:14px; }
  .section-block.compact-top { margin-top:18px; padding-top:16px; }
  .section-title { font-size:16px; }
  .grid-2, .grid-3, .program-grid, .occupancy-grid { grid-template-columns:1fr; }
  .program-grid { gap:9px; }
  .program-card { padding:12px; gap:7px; }
  .program-card h4 { font-size:16px; }
  .program-card p { font-size:12.5px; -webkit-line-clamp:2; }
  .program-details ul { font-size:12px; }
  .choice-card { min-height:0; padding:12px; }
  .notice, .hotel-strip { font-size:13px; }
  input, select, textarea { padding:12px; font-size:16px; }
  .actions { position:sticky; bottom:0; z-index:10; margin:18px -13px 0; padding:10px 13px calc(10px + env(safe-area-inset-bottom)); background:rgba(255,255,255,.97); border-top:1px solid var(--line); box-shadow:0 -8px 18px rgba(11,47,71,.07); }
  .btn { padding:11px 14px; min-height:43px; }
  .summary-card { display:none; }
  .summary-row { align-items:flex-start; }
}
.honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.loading-price{opacity:.65}
.staff-gate{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(180deg,#eef5f8,#f8fafb)}
.staff-login-card{width:min(420px,100%);background:#fff;border:1px solid #d7e1e7;border-radius:16px;padding:28px;box-shadow:0 18px 50px rgba(11,47,71,.12);display:grid;gap:14px}
.staff-login-card img{height:58px;width:auto;max-width:100%;object-fit:contain;object-position:left center}
.staff-login-card h1{margin:4px 0 0;color:#003d63;font-size:26px}.staff-login-card p{margin:0;color:#647784}.staff-login-card label{display:grid;gap:7px;font-weight:800;font-size:13px}
.staff-bar{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-bottom:10px;padding:8px 10px;border-radius:10px;background:#fff;border:1px solid #d7e1e7;color:#003d63;font-size:13px}.staff-bar strong{margin-right:auto}.staff-bar .btn{min-height:34px;padding:7px 10px}
#appStatus{margin:0 0 12px}.submit-loading{position:relative;pointer-events:none;opacity:.72}
.checkline a{color:#005487;text-decoration:underline;font-weight:750}
@media(max-width:680px){.staff-bar{align-items:flex-start;flex-wrap:wrap}.staff-bar strong{width:100%}.staff-login-card{padding:22px}.staff-login-card img{height:50px}}

@media (max-width:420px) {
  .topbar-actions { grid-template-columns:1fr; }
  .lang-switch { justify-self:end; position:absolute; top:12px; right:10px; }
  .brand-logo { max-width:58vw; }
  .main-site-return { width:100%; }
}
