/* Shared structure. Each theme sets the tokens and adds its own touches. */
*{box-sizing:border-box}
html,body{background:var(--bg)}
body{margin:0;color:var(--ink);font-family:var(--font-body);font-size:var(--body-size,19px);line-height:1.5;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--header-bg,var(--bg))}
a{color:var(--link)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
h1,h2,h3{font-family:var(--font-display);font-weight:var(--display-weight);line-height:1.08;margin:0;text-wrap:balance;letter-spacing:var(--display-tracking,0)}
h1{font-size:var(--h1)}
h2{font-size:var(--h2)}
h3{font-size:var(--h3,24px);line-height:1.2}
p{margin:0}
.wrap{max-width:var(--max,1080px);margin:0 auto;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px))}
.muted{color:var(--muted)}
.small{font-size:16px}

/* header */
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--header-bg,var(--bg));color:var(--header-ink,var(--ink));border-bottom:var(--header-border,1px solid var(--line))}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:68px}
.brand{display:flex;align-items:center;gap:10px;background:none;border:none;padding:0;color:inherit;font:var(--brand-font);cursor:pointer;min-height:44px}
.brand-mark{width:34px;height:34px;border-radius:var(--mark-radius,9px);background:var(--mark-bg);color:var(--mark-ink);display:flex;align-items:center;justify-content:center;flex:none}
.phase{background:var(--phase-bg,transparent);border-bottom:1px solid var(--line);font-size:16px}
.phase .wrap{padding-block:10px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.phase-tag{font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;background:var(--tag-bg);color:var(--tag-ink);border-radius:var(--tag-radius,4px)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:56px;padding:0 26px;border:var(--btn-border,none);border-radius:var(--btn-radius);background:var(--accent);color:var(--accent-ink);font:700 var(--btn-size,19px) var(--font-body);text-decoration:none;cursor:pointer;box-shadow:var(--btn-shadow,none);transition:background .15s, transform .08s}
.btn:hover{background:var(--accent-hover)}
.btn:active{transform:translateY(var(--btn-press,1px))}
.btn.secondary{background:var(--btn2-bg);color:var(--btn2-ink);box-shadow:var(--btn2-shadow,none);border:var(--btn2-border,none)}
.btn.secondary:hover{background:var(--btn2-hover)}
.btn.sm{min-height:46px;padding:0 18px;font-size:17px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.link-btn{background:none;border:none;padding:0;min-height:44px;font:700 18px var(--font-body);color:var(--link);text-decoration:underline;text-underline-offset:4px;cursor:pointer}
@media (prefers-reduced-motion: reduce){.btn{transition:none}}

/* landing */
.hero{padding-block:var(--hero-pad,64px);display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:48px;align-items:center}
.hero-copy{display:flex;flex-direction:column;gap:22px;align-items:flex-start}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:16px;padding:var(--eyebrow-pad,6px 14px);border-radius:var(--eyebrow-radius,999px);background:var(--eyebrow-bg);color:var(--eyebrow-ink)}
.lead{font-size:var(--lead,21px);color:var(--muted);max-width:52ch}
.hero-actions{display:flex;flex-wrap:wrap;gap:18px;align-items:center}
.calc{padding:26px;display:flex;flex-direction:column;gap:12px;background:var(--surface);border:var(--card-border);border-radius:var(--radius-lg);box-shadow:var(--card-shadow,none)}
.calc-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.calc-row b{font-family:var(--font-display);font-size:26px;font-variant-numeric:tabular-nums}
.calc-total{border-bottom:none;padding:14px 16px;border-radius:var(--radius);background:var(--hl-bg);color:var(--hl-ink)}
.section{padding-block:var(--section-pad,72px);border-top:var(--section-border,1px solid var(--line))}
.section.alt{background:var(--surface-2)}
.section-head{display:flex;flex-direction:column;gap:12px;max-width:720px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:20px;margin-top:36px}
.grid4{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:18px;margin-top:36px}
.tile{padding:26px;background:var(--surface);border:var(--card-border);border-radius:var(--radius-lg);box-shadow:var(--card-shadow,none);display:flex;flex-direction:column;gap:10px}
.section.alt .tile{background:var(--tile-on-alt,var(--surface))}
.step-num{width:46px;height:46px;border-radius:var(--num-radius,50%);background:var(--num-bg);color:var(--num-ink);display:flex;align-items:center;justify-content:center;font:var(--display-weight) 22px var(--font-display)}
.price .amt{font:var(--display-weight) 52px/1 var(--font-display);letter-spacing:var(--display-tracking,0)}
.price ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;color:var(--muted)}
.price.featured{background:var(--featured-bg);color:var(--featured-ink);border:var(--featured-border,var(--card-border))}
.price.featured ul{color:inherit;opacity:.85}
.tag{align-self:flex-start;padding:3px 12px;border-radius:var(--tag-radius,999px);font-size:15px;font-weight:700;background:var(--tag-bg);color:var(--tag-ink)}
.price.featured .tag{background:var(--featured-tag-bg,var(--tag-bg));color:var(--featured-tag-ink,var(--tag-ink))}
.faq{margin-top:28px;display:flex;flex-direction:column;max-width:820px;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;font-weight:700;padding:20px 0;list-style:none;display:flex;justify-content:space-between;gap:16px;font-size:20px;color:var(--faq-q,var(--ink))}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:26px;line-height:1;font-weight:400;flex:none}
.faq details[open] summary::after{content:"−"}
.faq details p{padding:0 0 20px;color:var(--muted);max-width:68ch}
.site-footer{border-top:1px solid var(--line);padding-block:36px 56px;color:var(--muted);font-size:16px;background:var(--footer-bg,transparent)}
.site-footer .wrap{display:flex;flex-direction:column;gap:8px}

/* flow */
.flow{padding-block:32px 72px}
.flow-inner{max-width:680px;margin:0 auto;display:flex;flex-direction:column;gap:22px}
.progress{display:flex;flex-direction:column;gap:8px}
.progress .lbl{display:flex;justify-content:space-between;font-weight:700;font-size:16px;color:var(--muted)}
.progress .bar{height:var(--bar-h,8px);border-radius:999px;background:var(--bar-bg);overflow:hidden}
.progress .fill{height:100%;background:var(--bar-fill);border-radius:999px;transition:width .3s}
.panel{display:flex;flex-direction:column;gap:22px;padding:var(--panel-pad,32px);background:var(--panel-bg,var(--surface));border:var(--panel-border,var(--card-border));border-radius:var(--radius-lg);box-shadow:var(--panel-shadow,none)}
.panel h2{font-size:var(--h2-flow,36px)}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.label{font-weight:700;font-size:19px}
.hint{font-size:17px;color:var(--muted)}
.error-msg{font-size:17px;color:var(--bad);font-weight:700}
input[type=text],input[type=email],input[type=date],input[type=number],select{width:100%;min-height:56px;padding:0 14px;border:var(--input-border);border-radius:var(--input-radius);background:var(--input-bg);color:var(--ink);font:400 19px var(--font-body)}
input:focus-visible,select:focus-visible{outline:var(--input-focus-outline,3px solid var(--focus));outline-offset:0;box-shadow:var(--input-focus-shadow,none)}
input.invalid{border-color:var(--bad)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:14px}
.tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:var(--tabs-pad,0);background:var(--tabs-bg,transparent);border-radius:var(--radius)}
.tab{min-height:64px;border:var(--tab-border);border-radius:var(--tab-radius,var(--radius));background:var(--tab-bg);color:var(--ink);font:700 19px var(--font-body);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center}
.tab small{font-weight:400;font-size:15px;color:var(--muted)}
.tab[aria-selected="true"]{background:var(--tab-on-bg);color:var(--tab-on-ink);border:var(--tab-on-border,var(--tab-border));box-shadow:var(--tab-on-shadow,none)}
.tab[aria-selected="true"] small{color:inherit;opacity:.8}
.trip{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end;padding:16px;border:var(--trip-border,1px solid var(--line));border-radius:var(--radius);background:var(--trip-bg,var(--surface-2))}
@media (max-width:540px){.trip{grid-template-columns:1fr 1fr}.trip .rm{grid-column:1 / -1}}
.trip .days{grid-column:1 / -1;font-weight:700}
.inset{display:flex;gap:12px;align-items:flex-start;padding:16px 18px;border-radius:var(--inset-radius,var(--radius));background:var(--info-bg);color:var(--info-ink);border-left:var(--inset-border,none);font-size:18px}
.inset.warn{background:var(--warn-bg);color:var(--warn-ink);border-left-color:var(--warn-line,currentColor)}
.inset.good{background:var(--good-bg);color:var(--good-ink);border-left-color:var(--good-line,currentColor)}
.inset.bad{background:var(--bad-bg);color:var(--bad-ink);border-left-color:var(--bad-line,currentColor)}
.inset svg{flex:none;margin-top:2px}
.choice{display:flex;align-items:center;gap:16px;width:100%;padding:18px 20px;border:var(--choice-border);border-radius:var(--radius);background:var(--choice-bg);color:var(--ink);text-align:left;cursor:pointer;font:400 19px var(--font-body)}
.choice:hover{border-color:var(--choice-hover,var(--ink))}
.choice[aria-pressed="true"]{border:var(--choice-on-border);background:var(--choice-on-bg)}
.choice .dot{flex:none;width:var(--dot,28px);height:var(--dot,28px);border:var(--dot-border,2px solid var(--ink));border-radius:50%;background:var(--input-bg)}
.choice[aria-pressed="true"] .dot{background:var(--dot-on,var(--ink));box-shadow:inset 0 0 0 var(--dot-gap,6px) var(--input-bg)}
.choice b{display:block}
.choice .s{display:block;color:var(--muted);font-size:17px}
.choice .pr{margin-left:auto;font:var(--display-weight) 28px var(--font-display)}
.ties{border:var(--choice-border);border-radius:var(--radius);overflow:hidden;background:var(--choice-bg)}
.tie{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 18px;border:none;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font:400 18px var(--font-body);text-align:left;cursor:pointer}
.tie:last-child{border-bottom:none}
.tie:hover{background:var(--surface-2)}
.chip{flex:none;padding:4px 12px;border-radius:var(--tag-radius,999px);font-weight:700;font-size:15px;background:var(--chip-bg);color:var(--chip-ink)}
.chip.both{background:var(--chip2-bg);color:var(--chip2-ink)}
.math{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.math div{display:flex;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}
.math div:last-child{border-bottom:none;background:var(--hl-bg);color:var(--hl-ink);font-weight:700}
.math b{font-variant-numeric:tabular-nums}
.verdict{padding:26px;border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:10px;background:var(--v-bg);color:var(--v-ink);text-align:var(--v-align,left)}
.verdict.good{--v-bg:var(--vgood-bg);--v-ink:var(--vgood-ink)}
.verdict.warn{--v-bg:var(--vwarn-bg);--v-ink:var(--vwarn-ink)}
.verdict.bad{--v-bg:var(--vbad-bg);--v-ink:var(--vbad-ink)}
.verdict.file{--v-bg:var(--vfile-bg);--v-ink:var(--vfile-ink)}
.verdict h2{font-size:clamp(28px,4.4vw,38px)}
.verdict .kicker{font-size:16px;font-weight:700;opacity:.85}
.actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;align-items:center}
.summary-list{margin:0;border-top:1px solid var(--line)}
.summary-list div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto;gap:6px 16px;padding:14px 0;border-bottom:1px solid var(--line);align-items:baseline}
.summary-list dt{font-weight:700}
.summary-list dd{margin:0;overflow-wrap:anywhere}
.summary-list .link-btn{font-size:17px;min-height:32px}
@media (max-width:540px){.summary-list div{grid-template-columns:1fr auto}.summary-list dd{grid-column:1 / 2}.summary-list div > :last-child{grid-row:1;grid-column:2}}
.form-card{display:flex;align-items:center;gap:16px;padding:18px;border:var(--choice-border);border-radius:var(--radius);background:var(--surface-2)}
.form-card .fi{flex:none;width:48px;height:60px;border:2px solid var(--ink);border-radius:4px;display:flex;align-items:flex-end;justify-content:center;font:700 11px var(--font-body);padding-bottom:6px;background:var(--surface)}
.form-card .txt{flex:1;min-width:0}
.sig{position:relative;border:var(--input-border);border-radius:var(--input-radius);background:#FFFFFF;height:180px;touch-action:none}
.sig canvas{width:100%;height:100%;display:block;border-radius:inherit;cursor:crosshair}
.sig .ph{position:absolute;left:18px;bottom:14px;color:#6F6A63;font-size:16px;pointer-events:none}
.sig .line{position:absolute;left:18px;right:18px;bottom:44px;border-bottom:1.5px dashed #B9B2A7;pointer-events:none}
.check{display:flex;gap:16px;align-items:flex-start;cursor:pointer;font-size:18px}
.check input{width:32px;height:32px;flex:none;margin:0;accent-color:var(--check-accent,var(--ink))}
.totals{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.totals div{display:flex;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}
.totals div:last-child{border-bottom:none;font-weight:700;font-size:21px}
.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.timeline li{display:flex;gap:16px}
.timeline .ic{display:flex;flex-direction:column;align-items:center}
.timeline .ic span{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;border:2px solid var(--line-strong);background:var(--surface);color:var(--muted)}
.timeline .ic span.on{background:var(--tl-on-bg);border-color:var(--tl-on-bg);color:var(--tl-on-ink)}
.timeline .ic i{flex:1;width:2px;min-height:24px;background:var(--line-strong)}
.timeline li:last-child .ic i{display:none}
.timeline .tx{padding-bottom:20px}
.timeline .tx b{display:block}
.timeline .tx span{color:var(--muted);font-size:17px}
.refer{padding:24px;border-radius:var(--radius-lg);background:var(--refer-bg);color:var(--refer-ink);display:flex;flex-direction:column;gap:8px}

/* PDF viewer */
dialog.viewer{border:none;padding:0;width:min(900px, calc(100vw - 24px));max-height:calc(100dvh - 24px);border-radius:var(--radius-lg);background:var(--surface);color:var(--ink);box-shadow:0 20px 60px rgba(0,0,0,.35)}
dialog.viewer::backdrop{background:rgba(10,12,14,.6)}
.vhead{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 18px;background:var(--surface);border-bottom:1px solid var(--line)}
.vhead strong{font-size:19px}
.vhead .vbtns{display:flex;gap:10px;flex-wrap:wrap}
.vbody{padding:18px;background:var(--viewer-bg,#E9E7E2);display:flex;flex-direction:column;gap:18px;align-items:center;max-height:calc(100dvh - 120px);overflow:auto}
.vbody canvas{width:100%;max-width:820px;height:auto;background:#FFFFFF;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.vnote{max-width:820px;width:100%;font-size:16px;color:#3A3732}
.vloading{padding:60px 0;color:#3A3732;font-size:18px}

body.in-flow .header-cta{display:none}
.price-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}

/* accounts + referrals */
.header-actions{display:flex;align-items:center;gap:18px}
.header-actions .signin{font-size:17px;text-decoration:none}
.header-actions .signin:hover{text-decoration:underline}
.ref-row{display:flex;gap:10px}
.ref-row input{flex:1;min-width:0}
.acct-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.acct-card{display:flex;flex-direction:column;gap:16px;padding:24px;border-radius:var(--radius-lg);background:var(--surface-2)}
.acct-card .form-card{background:var(--surface)}
.acct-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.acct-head .kicker,.refer .kicker{display:block;font-size:15px;font-weight:700;opacity:.8;margin-bottom:4px}
.refer .meter{height:12px;border-radius:999px;background:color-mix(in srgb, currentColor 18%, transparent);overflow:hidden}
.refer .meter span{display:block;height:100%;border-radius:999px;background:var(--meter-fill,var(--accent))}
.ref-code{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:14px 18px;border-radius:var(--radius);border:2px dashed color-mix(in srgb, currentColor 40%, transparent)}
.ref-code b{font:800 30px var(--font-display);letter-spacing:.08em}
.ref-btns{display:flex;flex-wrap:wrap;gap:10px}
.ref-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column}
.ref-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-top:1px solid color-mix(in srgb, currentColor 18%, transparent)}
.ref-list li > span:first-child{display:flex;flex-direction:column}
.ref-list .small{opacity:.8}
@media (max-width:540px){.header-actions .header-cta{display:none}}

[hidden]{display:none !important}

.form-card{flex-wrap:wrap}.form-card .txt{min-width:170px}
@media (max-width:540px){.form-card .btn{width:100%}.acct-card,.refer{padding:20px}}
.wordmark{display:block;width:auto}
.wordmark .dot{fill:var(--accent)}

/* centered short screens (sign in, code, welcome back) */
#flow.centered{min-height:calc(100dvh - var(--chrome, 160px));display:flex;align-items:center;padding-block:32px}
#flow.centered > .wrap{width:100%}
#flow.centered .flow-inner{max-width:520px}
#flow.centered .actions > span:first-child{display:none}
#flow.centered .actions{flex-direction:row-reverse}
#flow.centered .actions #next{flex:1}
#flow.centered .panel > p.small{text-align:center}

.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
select.invalid{border-color:var(--bad)}

/* content pages (privacy, terms, contact) */
a.brand{text-decoration:none}
.page{padding-block:48px 80px}
.prose{max-width:760px;display:flex;flex-direction:column;gap:18px}
.prose h1{font-size:clamp(40px,6vw,64px)}
.prose h2{font-size:clamp(26px,3.4vw,34px);margin-top:20px}
.prose ul{margin:0;padding-left:24px;display:flex;flex-direction:column;gap:8px}
.prose .updated{color:var(--muted);font-size:16px}
.footer-links{display:flex;flex-wrap:wrap;gap:8px 24px}
.footer-links a{color:var(--ink);font-weight:700}
