:root{
  --bg:#f6f3ec; --surface:#fffdf9; --surface-2:#f1ece1; --line:#e0d8c8;
  --ink:#1e2a2b; --ink-2:#5b6a6b; --ink-3:#8a9695;
  --teal:#0d5c63; --teal-2:#12787f; --sand:#c9a227; --coral:#c4553f; --green:#3f7d4f;
  --shadow:0 1px 2px rgba(30,42,43,.05), 0 8px 24px rgba(30,42,43,.06);
  --r:14px;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#12181a; --surface:#1a2225; --surface-2:#222c30; --line:#2f3b3f;
    --ink:#e8ece9; --ink-2:#a3b0b0; --ink-3:#78868a;
    --teal:#4bb3ba; --teal-2:#63c7ce; --sand:#d9b64a; --coral:#e0806a; --green:#6fb583;
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.28);
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:16px/1.65 ui-sans-serif,-apple-system,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  text-rendering:optimizeLegibility;
}
.wrap{max-width:920px;margin:0 auto;padding:0 20px}
h1,h2,h3{line-height:1.25;letter-spacing:-.015em}
h2{font-size:1.5rem;margin:2.4rem 0 .6rem}
h3{font-size:1.08rem;margin:0 0 .4rem}
p{margin:.6rem 0}
a{color:var(--teal-2)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}

/* hero */
.hero{
  background:linear-gradient(160deg,#0d5c63 0%,#0a4348 55%,#123a35 100%);
  color:#f2efe6;padding:44px 0 38px;
}
@media (prefers-color-scheme:dark){.hero{background:linear-gradient(160deg,#0c3f44 0%,#0a2c30 55%,#101f1e 100%)}}
.kicker{margin:0;font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;color:#8fc6c4}
.hero h1{margin:.3rem 0 .1rem;font-size:clamp(1.9rem,6vw,2.8rem);font-weight:650}
.dates{margin:0;color:#bcd6d2;font-size:1rem}
.countdown{margin-top:14px;font-size:.86rem;color:#8fc6c4}
.countdown b{color:#fff;font-size:1.5rem;font-weight:650;letter-spacing:-.02em}

/* tabs */
.tabs{display:flex;gap:4px;overflow-x:auto;padding-top:14px;padding-bottom:2px;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{
  flex:0 0 auto;border:0;background:none;cursor:pointer;font:inherit;font-size:.94rem;
  color:var(--ink-2);padding:9px 14px;border-radius:9px 9px 0 0;border-bottom:2px solid transparent;
}
.tab:hover{color:var(--ink);background:var(--surface-2)}
.tab.is-active{color:var(--teal-2);border-bottom-color:var(--teal-2);font-weight:600}
.panel{display:none;padding-bottom:56px}
.panel.is-active{display:block;animation:fade .22s ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.panel.is-active{animation:none}}

.lede{color:var(--ink-2);font-size:1.03rem;max-width:64ch}

/* flights */
.flights{display:grid;gap:14px;grid-template-columns:1fr 1fr;margin-top:26px}
@media(max-width:640px){.flights{grid-template-columns:1fr}}
.flight{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow)}
.fl-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.fl-code{font-weight:650;letter-spacing:.02em}
.fl-tag{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-3)}
.fl-body{display:flex;align-items:center;gap:10px}
.fl-end{text-align:center;min-width:64px}
.fl-end b{display:block;font-size:1.5rem;font-weight:650;letter-spacing:-.02em}
.fl-end span{font-size:.8rem;color:var(--ink-3);letter-spacing:.06em}
.fl-mid{flex:1;text-align:center}
.fl-dur,.fl-stop{display:block;font-size:.72rem;color:var(--ink-3)}
.fl-line{display:block;height:1px;background:var(--line);margin:5px 0;position:relative}
.fl-line::after{content:"";position:absolute;right:0;top:-2.5px;width:5px;height:5px;border-radius:50%;background:var(--teal-2)}
.fl-date{margin:12px 0 0;font-size:.84rem;color:var(--ink-2);border-top:1px dashed var(--line);padding-top:10px}

/* callouts */
.callout{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--teal-2);
  border-radius:0 var(--r) var(--r) 0;padding:16px 18px;margin:22px 0}
.callout.warn{border-left-color:var(--coral)}
.callout h3{color:var(--teal-2)}
.callout.warn h3{color:var(--coral)}
.callout ul{margin:.5rem 0 0;padding-left:1.1rem}
.callout li{margin:.4rem 0}
.callout p{color:var(--ink-2);margin:.4rem 0 0}

.grid-3{display:grid;gap:12px;grid-template-columns:repeat(3,1fr);margin:20px 0}
@media(max-width:640px){.grid-3{grid-template-columns:1fr}}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px}
.stat b{display:block;font-size:1.9rem;font-weight:650;color:var(--teal-2);letter-spacing:-.03em;line-height:1.1}
.stat span{font-size:.86rem;color:var(--ink-2)}

/* plan picker */
.planpick{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0 6px}
.pp{font:inherit;font-size:.9rem;cursor:pointer;padding:9px 14px;border-radius:999px;
  border:1px solid var(--line);background:var(--surface);color:var(--ink-2)}
.pp:hover{border-color:var(--teal-2);color:var(--ink)}
.pp.on{background:var(--teal);border-color:var(--teal);color:#fff;font-weight:600}
.pp.on .rec{background:rgba(255,255,255,.22);color:#fff}
.rec{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;background:var(--sand);
  color:#3a2f05;padding:2px 7px;border-radius:99px;margin-left:6px;font-weight:700;vertical-align:1px}
.pp-status{font-size:.86rem;color:var(--ink-2);min-height:1.4em;margin:.3rem 0 0}

/* comparison table */
.tablewrap{overflow-x:auto;margin:22px 0;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.cmp{border-collapse:collapse;width:100%;min-width:560px;font-size:.9rem}
.cmp th,.cmp td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line)}
.cmp thead th{background:var(--surface-2);font-size:.82rem;vertical-align:bottom;color:var(--ink)}
.cmp thead th span{display:block;font-weight:400;color:var(--ink-3);font-size:.76rem}
.cmp tbody th{font-weight:500;color:var(--ink-2);width:150px}
.cmp tbody tr:last-child th,.cmp tbody tr:last-child td{border-bottom:0}
.cmp .best{background:color-mix(in srgb,var(--teal-2) 9%,transparent)}
.cmp thead .best{color:var(--teal-2)}

/* plans */
.plans{display:grid;gap:18px;margin-top:8px}
.plan{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;box-shadow:var(--shadow)}
.plan[data-planid="B2"]{border-color:var(--teal-2);border-width:1.5px}
.plan header{border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:4px}
.plan header p{margin:.25rem 0 0;color:var(--ink-3);font-size:.88rem}
.days{list-style:none;margin:0;padding:0;counter-reset:d}
.days>li{padding:16px 0 16px 0;border-bottom:1px dashed var(--line)}
.days>li:last-child{border-bottom:0;padding-bottom:2px}
.days>li>b{display:block;font-size:.94rem;color:var(--teal-2);letter-spacing:.01em;margin-bottom:.2rem}
.days p{margin:.35rem 0;color:var(--ink-2);font-size:.94rem}
.t{font-variant-numeric:tabular-nums;font-weight:650;color:var(--ink);margin-right:3px}
.note{border-left:2px solid var(--sand);padding-left:11px;font-size:.87rem!important;color:var(--ink-3)!important}
.verdict{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:.92rem;color:var(--ink-2)}

/* forms & cards */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin:18px 0}
.addform summary{cursor:pointer;padding:14px 18px;font-weight:600;font-size:.95rem;color:var(--teal-2);list-style:none}
.addform summary::-webkit-details-marker{display:none}
.addform summary::before{content:"+ ";font-weight:700}
.addform[open] summary::before{content:"− "}
.addform form{padding:4px 18px 18px;display:grid;gap:12px}
.row{display:grid;gap:12px;grid-template-columns:2fr 1fr 1fr}
@media(max-width:640px){.row{grid-template-columns:1fr}}
label{display:block;font-size:.8rem;color:var(--ink-2);font-weight:500}
input,select{
  width:100%;margin-top:4px;padding:9px 11px;font:inherit;font-size:.94rem;
  border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--ink);
}
input:focus,select:focus{outline:2px solid var(--teal-2);outline-offset:1px;border-color:transparent}
.split{border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin:0}
.split legend{font-size:.8rem;color:var(--ink-2);padding:0 5px}
#splitBoxes{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:1px solid var(--line);
  border-radius:999px;font-size:.86rem;cursor:pointer;background:var(--bg);user-select:none}
.chip input{width:auto;margin:0}
.chip.on{background:var(--teal);border-color:var(--teal);color:#fff}
.mini{margin-top:8px;font:inherit;font-size:.8rem;padding:4px 10px;border-radius:99px;
  border:1px solid var(--line);background:none;color:var(--ink-2);cursor:pointer}
.pc input{max-width:260px}
button.primary{
  justify-self:start;font:inherit;font-weight:600;font-size:.94rem;cursor:pointer;
  padding:10px 20px;border:0;border-radius:9px;background:var(--teal);color:#fff;
}
button.primary:hover{background:var(--teal-2)}
button.primary:disabled{opacity:.55;cursor:progress}

/* balances */
.bal{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin:20px 0}
.person{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:13px 15px}
.person .nm{font-size:.9rem;font-weight:600;display:block;margin-bottom:2px}
.person .amt{font-size:1.22rem;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums;display:block}
.person .sub{font-size:.76rem;color:var(--ink-3)}
.pos .amt{color:var(--green)} .neg .amt{color:var(--coral)} .zero .amt{color:var(--ink-3)}
.settle{background:var(--surface-2);border-radius:var(--r);padding:14px 18px;margin:6px 0 24px;font-size:.92rem}
.settle h4{margin:0 0 8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}
.settle ul{margin:0;padding-left:1.1rem;color:var(--ink-2)}
.settle li{margin:.3rem 0}
.settle b{color:var(--ink)}

/* lists */
.tot{font-size:.85rem;font-weight:400;color:var(--ink-3);margin-left:6px}
.exlist,.doclist,.checklist{display:grid;gap:8px;margin-top:12px}
.ex,.doc,.chk{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:12px 15px;
  display:flex;gap:12px;align-items:flex-start}
.ex-main{flex:1;min-width:0}
.ex-desc{font-weight:600;font-size:.94rem}
.ex-meta{font-size:.8rem;color:var(--ink-3);margin-top:2px}
.ex-amt{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ex-amt b{display:block;font-size:1rem;font-weight:650}
.ex-amt span{font-size:.75rem;color:var(--ink-3)}
.cat{display:inline-block;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;
  background:var(--surface-2);color:var(--ink-2);padding:2px 7px;border-radius:99px;margin-right:6px}
.del{border:0;background:none;color:var(--ink-3);cursor:pointer;font-size:1.05rem;padding:0 2px;line-height:1}
.del:hover{color:var(--coral)}
.doc a{font-weight:600;font-size:.94rem;text-decoration:none}
.doc a:hover{text-decoration:underline}
.doc .nolink{font-weight:600;font-size:.94rem}
.doc .note2{font-size:.82rem;color:var(--ink-3);margin-top:2px}
.chk{cursor:pointer;align-items:center}
.chk input{width:18px;height:18px;margin:0;accent-color:var(--teal);flex:0 0 auto}
.chk-txt{flex:1;font-size:.93rem}
.chk.done .chk-txt{text-decoration:line-through;color:var(--ink-3)}
.chk-by{font-size:.74rem;color:var(--ink-3);white-space:nowrap}
.empty{color:var(--ink-3);font-size:.9rem;padding:18px;text-align:center;
  border:1px dashed var(--line);border-radius:11px}

footer{padding:22px 20px 40px;font-size:.8rem;color:var(--ink-3);border-top:1px solid var(--line);margin-top:20px}

.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,80px);background:var(--ink);color:var(--bg);
  padding:11px 20px;border-radius:99px;font-size:.9rem;box-shadow:var(--shadow);opacity:0;
  transition:.25s;pointer-events:none;z-index:50;max-width:88vw}
.toast.show{transform:translate(-50%,0);opacity:1}
.toast.bad{background:var(--coral);color:#fff}

.memgrid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.memgrid input{margin-top:0}
