:root{
  --navy:#1E3A8A; --navy-deep:#152D6E;
  --green:oklch(0.48 0.105 140); --green-deep:oklch(0.40 0.10 140); --green-vivid:oklch(0.633 0.174 148);
  --ink:oklch(0.30 0.12 265); --ink-soft:oklch(0.42 0.04 250); --ink-faint:oklch(0.52 0.03 250);
  --paper:oklch(0.985 0.005 250); --card:#fff;
  --rule:oklch(0.88 0.008 260); --rule-soft:oklch(0.93 0.006 260);
  --field:oklch(0.986 0.004 250);
  --err:oklch(0.55 0.18 25);
  --serif:"Instrument Serif",Georgia,serif; --sans:"Geist",system-ui,-apple-system,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{font-family:var(--sans);background:var(--paper);color:var(--ink);font-size:16px;line-height:1.6;min-height:100vh}

/* top bar */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
  padding:16px clamp(20px,5vw,40px);background:oklch(0.991 0.005 92 / 0.86);
  backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--rule-soft)}
.brand{display:flex;align-items:baseline;gap:9px;font-family:var(--serif);font-size:20px;color:var(--navy);
  letter-spacing:-0.01em;text-decoration:none}
.brand .pip{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block}
.brand .sub{font-family:var(--mono);font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-faint)}
.confide{font-family:var(--mono);font-size:10.5px;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--ink-faint);display:flex;align-items:center;gap:8px}
.confide svg{display:block}
@media(max-width:560px){.confide .txt{display:none}}

.wrap{max-width:660px;margin:0 auto;padding:clamp(28px,5vw,56px) clamp(20px,5vw,28px) 80px}

/* intro */
.intro .eyebrow{margin-bottom:22px}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:0.16em;text-transform:uppercase;
  color:var(--green-deep);display:inline-flex;align-items:center;gap:9px;font-weight:500}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--green)}
.intro h1{font-family:var(--serif);font-weight:400;font-size:clamp(38px,7vw,60px);line-height:1.02;
  letter-spacing:-0.015em;color:var(--navy);margin-bottom:22px}
.intro h1 .ital{font-style:italic;color:var(--green-deep)}
.intro .lead{font-size:18.5px;line-height:1.58;color:var(--ink-soft);max-width:54ch;margin-bottom:18px}
.intro .reassure{display:flex;flex-direction:column;gap:13px;margin:30px 0 36px;padding:24px 26px;
  background:var(--card);border:1px solid var(--rule);border-radius:4px}
.intro .reassure .r{display:grid;grid-template-columns:18px 1fr;gap:13px;align-items:start;font-size:14.5px;
  color:var(--ink-soft);line-height:1.5}
.intro .reassure .r b{color:var(--ink);font-weight:600}
.intro .reassure .r svg{margin-top:3px;color:var(--green-deep)}
.intro .fine{font-family:var(--mono);font-size:11px;letter-spacing:0.05em;color:var(--ink-faint);
  line-height:1.7;margin-top:22px}

/* stages */
.stage{display:none}
.stage.on{display:block}
.prog{margin-bottom:34px}
.prog.hidden{display:none}
.prog-top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:13px}
.prog-step{font-family:var(--mono);font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-faint)}
.prog-step b{color:var(--green-deep);font-weight:500}
.prog-title{font-family:var(--serif);font-size:15px;color:var(--ink-soft);font-style:italic}
.prog-bar{display:flex;gap:6px}
.prog-bar .seg{height:3px;flex:1;background:var(--rule);border-radius:2px;overflow:hidden;position:relative}
.prog-bar .seg.done{background:var(--green)}
.prog-bar .seg.cur::after{content:"";position:absolute;inset:0;background:var(--green);transform-origin:left;animation:fill .5s ease forwards}
@keyframes fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

.step-head{margin-bottom:30px}
.step-head h2{font-family:var(--serif);font-weight:400;font-size:clamp(27px,4.4vw,36px);line-height:1.08;
  letter-spacing:-0.012em;color:var(--navy)}
.step-head p{color:var(--ink-soft);font-size:15.5px;margin-top:10px;max-width:52ch}

.fields{display:flex;flex-direction:column;gap:26px}
.field > label.q{display:block;font-weight:500;font-size:15.5px;color:var(--ink);margin-bottom:4px;letter-spacing:-0.005em}
.field .req{color:var(--green-deep);margin-left:3px}
.field .help{font-size:13px;color:var(--ink-faint);margin-bottom:11px;line-height:1.45}
.field.depth > label.q{font-family:var(--serif);font-size:21px;font-weight:400;color:var(--navy);line-height:1.2;margin-bottom:10px}
.field .note{font-size:13.5px;color:var(--ink-soft);margin-bottom:11px;line-height:1.5;
  padding:12px 15px;background:oklch(0.48 0.105 140 / 0.05);border-radius:7px;border:1px solid oklch(0.48 0.105 140 / 0.14)}
.field .note b{color:var(--ink);font-weight:600}

input[type=text],input[type=email],input[type=tel],input[type=number],input[type=url],textarea{
  width:100%;font-family:var(--sans);font-size:16px;color:var(--ink);background:var(--field);
  border:1px solid var(--rule);border-radius:8px;padding:13px 15px;line-height:1.5;
  transition:border-color .15s,box-shadow .15s,background .15s}
input::placeholder,textarea::placeholder{color:oklch(0.7 0.01 260)}
input:focus,textarea:focus{outline:none;border-color:var(--navy);background:#fff;box-shadow:0 0 0 3px oklch(0.3 0.08 264 / 0.1)}
/* Keyboard focus indicators (intake pages don't load styles.css) */
a:focus-visible,button:focus-visible,.btn:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:3px}
.opt:focus-within{outline:2px solid var(--navy);outline-offset:2px}
textarea{resize:vertical;min-height:96px}
textarea.tall{min-height:120px}

.opts{display:flex;flex-direction:column;gap:9px}
.opts.row{flex-direction:row;flex-wrap:wrap}
.opt{position:relative;display:flex;align-items:center;gap:12px;padding:13px 16px;border:1px solid var(--rule);
  border-radius:8px;cursor:pointer;background:var(--field);transition:border-color .15s,background .15s;
  font-size:15px;color:var(--ink);user-select:none}
.opts.row .opt{flex:1;min-width:120px}
.opt:hover{border-color:oklch(0.78 0.04 260)}
.opt input{position:absolute;opacity:0;pointer-events:none}
.opt .mark{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--rule);flex:none;display:grid;place-items:center;transition:border-color .15s}
.opt .mark::after{content:"";width:9px;height:9px;border-radius:50%;background:var(--green);transform:scale(0);transition:transform .15s}
.opt.sel{border-color:var(--green);background:oklch(0.48 0.105 140 / 0.06)}
.opt.sel .mark{border-color:var(--green)}
.opt.sel .mark::after{transform:scale(1)}
.opt-other-input{margin-top:9px}

/* consent checkbox */
.field-check .opt-check{align-items:flex-start;gap:13px;cursor:pointer}
.mark-sq{border-radius:5px;color:#fff;flex:none}
.mark-sq::after{display:none}
.mark-sq svg{opacity:0;transform:scale(0.6);transition:opacity .15s,transform .15s}
.opt-check.sel .mark-sq{background:var(--green);border-color:var(--green)}
.opt-check.sel .mark-sq svg{opacity:1;transform:scale(1)}
.opt-check-label{font-size:14px;line-height:1.5;color:var(--ink-soft)}

.field.invalid input,.field.invalid textarea{border-color:var(--err);background:oklch(0.55 0.18 25 / 0.04)}
.field.invalid .opts .opt{border-color:oklch(0.55 0.18 25 / 0.4)}
.field .errmsg{display:none;font-size:12.5px;color:var(--err);margin-top:8px;font-weight:500}
.field.invalid .errmsg{display:block}

.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:38px;padding-top:26px;border-top:1px solid var(--rule-soft)}
.btn{font-family:var(--sans);font-size:15px;font-weight:500;border-radius:100px;padding:13px 26px;cursor:pointer;
  border:1px solid transparent;transition:background .15s,border-color .15s,transform .05s;display:inline-flex;align-items:center;gap:9px;text-decoration:none}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--green-deep);color:#fff}
.btn-primary:hover{background:var(--green)}
.btn-ghost{background:transparent;color:var(--ink-soft);border-color:var(--rule);padding:13px 22px}
.btn-ghost:hover{border-color:var(--ink-faint);color:var(--ink)}
.btn.hidden{visibility:hidden}
.btn svg{display:block}

.done{display:none;text-align:center;padding:36px 0 20px}
.done.on{display:block}
.done .seal{width:64px;height:64px;border-radius:50%;background:oklch(0.48 0.105 140 / 0.1);display:grid;place-items:center;margin:0 auto 26px;color:var(--green-deep)}
.done h2{font-family:var(--serif);font-weight:400;font-size:clamp(30px,5vw,44px);color:var(--navy);letter-spacing:-0.015em;margin-bottom:16px;line-height:1.05}
.done h2 .ital{font-style:italic;color:var(--green-deep)}
.done .lead{color:var(--ink-soft);font-size:17px;max-width:46ch;margin:0 auto 34px;line-height:1.55}
.done .next{text-align:left;max-width:440px;margin:0 auto;border:1px solid var(--rule);border-radius:4px;background:var(--card);overflow:hidden}
.done .next .nh{font-family:var(--mono);font-size:10.5px;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-faint);padding:15px 22px 11px}
.done .next .ns{display:grid;grid-template-columns:26px 1fr;gap:13px;padding:14px 22px;border-top:1px solid var(--rule-soft);font-size:14.5px;color:var(--ink-soft);line-height:1.5}
.done .next .ns .n{font-family:var(--mono);font-size:12px;color:var(--green-deep);font-weight:500}
.done .next .ns b{color:var(--ink);font-weight:600}
.done .back-home{margin-top:34px;display:inline-flex}

.saving{position:fixed;inset:0;background:oklch(0.991 0.005 92 / 0.7);backdrop-filter:blur(2px);display:none;place-items:center;z-index:40}
.saving.on{display:grid}
.saving .spin{width:34px;height:34px;border-radius:50%;border:2.5px solid var(--rule);border-top-color:var(--green);animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

@media(prefers-reduced-motion:reduce){*{animation:none!important}}
@media(max-width:560px){
  .nav .btn{padding:12px 20px;font-size:14px}
  .field.depth > label.q{font-size:19px}
}
