/* Treadstone Law — Intake-only components (Sprint J)
 * Loaded ONLY by the intake pages (start-file.html). Keeps styles.css lean.
 * Reuses the shared design system + existing intake classes from styles.css
 * (.intake, .pbar, .pstep, .card, .svc-grid, .svc, .fee-summary, .confirm,
 *  .next-steps, .secure, .field, .frow). Only NEW components live here.
 *
 * Conflict-avoidance (do not rename in styles.css):
 *   .mrow  — picker matter row   (styles.css already defines .matter = dashboard row)
 *   .swtch — private-mortgage switch (styles.css already defines .tgl = multi-select button)
 * Tokens are the live --tsl-, --text- and --border- variables from styles.css.
 * (Keep a "star" and "slash" apart in this comment — an accidental star-slash
 *  pair closes the comment early. That bug silently swallowed the .areagrid rule
 *  below until Sprint AU caught it by rendering the chooser.) */

/* ---- Practice-area chooser (general entry — Sprint Q; Sprint AM gap 12→14px;
   Sprint AR gap 14→16px + taller tiles to de-cramp the chooser;
   Sprint AU: gap 16→24px + padding 17→18px. NOTE — the AM/AR gap edits were
   silent no-ops because a premature star-slash pair in the file header comment
   (above) was swallowing this whole .areagrid rule; it never applied on desktop.
   Sprint AU fixed that header comment, so this rule now actually renders (row-gap
   24px, render-verified ≥22px in a real browser). ----
   Sprint AN: the two-door entry (.doors/.door/.route-pill) was removed. */
.areagrid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:18px 0 6px}
.areatile{display:flex;align-items:center;gap:13px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:18px 16px;background:var(--bg-card);cursor:pointer;text-align:left;width:100%;font-family:var(--font-body);transition:all var(--dur-fast)}
.areatile:hover{border-color:var(--tsl-gold);background:var(--tsl-surface-2)}
.areatile .ai{width:42px;height:42px;border-radius:11px;background:var(--bg-raised);display:flex;align-items:center;justify-content:center;color:var(--tsl-crimson);flex:none}
.areatile .ai .ic{width:22px;height:22px}
.areatile .ab b{display:block;font-size:14.5px;color:var(--tsl-ink);font-weight:600}
.areatile .ab span{display:block;font-size:12px;color:var(--text-muted);margin-top:1px}

/* ---- Service tabs + matter rows (registry-driven picker) ---- */
.svctabs{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 18px}
.svctab{font-size:13px;font-weight:600;padding:8px 14px;min-height:40px;display:inline-flex;align-items:center;border-radius:var(--radius-pill);border:1.3px solid var(--border-strong);color:var(--tsl-ink);background:var(--bg-card);cursor:pointer;font-family:var(--font-body)}
.svctab:hover{border-color:var(--tsl-gold)}
.svctab.sel{border-color:var(--tsl-crimson);background:rgba(179,32,37,.06);color:var(--tsl-crimson)}
.mrow{display:flex;align-items:center;gap:13px;min-height:64px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 15px;margin-bottom:12px;background:var(--bg-card);cursor:pointer;text-align:left;width:100%;font-family:var(--font-body);transition:all var(--dur-fast)}
.mrow:hover{border-color:var(--tsl-gold)}
.mrow .mi{width:40px;height:40px;border-radius:11px;background:var(--bg-raised);display:flex;align-items:center;justify-content:center;color:var(--tsl-crimson);flex:none}
.mrow .mi .ic{width:20px;height:20px}
.mrow .mb{flex:1}
.mrow .mb b{display:block;font-size:14.5px;color:var(--tsl-ink)}
.mrow .mb span{display:block;font-size:12.5px;color:var(--text-muted)}
.mrow .fee2{font-size:13px;font-weight:600;color:var(--tsl-ink);white-space:nowrap}
.rtag{font-size:11px;font-weight:600;padding:3px 10px;border-radius:var(--radius-pill);white-space:nowrap}
.rtag.a{background:rgba(31,138,91,.13);color:var(--tsl-green)}
.rtag.b{background:rgba(28,24,63,.10);color:var(--tsl-navy)}
.rtag.c{background:rgba(169,133,60,.18);color:#8a6a28}
.rtag.go{background:rgba(179,32,37,.10);color:var(--tsl-crimson)}/* Sprint W: unified non-RE "Get started" */
/* Sprint AN: the "Other" catch-all picker row — dashed, warm, gold icon */
.mrow.other{border-style:dashed;border-color:var(--border-strong);background:var(--tsl-surface-2)}
.mrow.other .mi{color:var(--tsl-gold)}

/* ---- Mandatory note (Sprint AO: the upload-hero/.skiprow/.trustrow/.autofill
   rules were removed with the agreement-upload + auto-extraction path) ---- */
.mand{font-size:12px;color:var(--text-muted);margin:2px 0 16px;display:flex;align-items:flex-start;gap:7px;line-height:1.45}
.mand .ic{width:15px;height:15px;color:var(--tsl-gold);flex:none;margin-top:1px}
.mand.err{color:var(--tsl-crimson)}
.mand.err .ic{color:var(--tsl-crimson)}

/* ---- Parties (Sprint AM: inferred read-only role chip + role hint) ---- */
.party{border:1px solid var(--border);border-radius:var(--radius-sm);padding:15px 15px 4px;margin-bottom:12px;background:var(--bg-card)}
.party .ph{display:flex;align-items:center;gap:9px;margin-bottom:11px}
.party .ph b{font-size:13.5px;color:var(--tsl-ink)}
.party .ph .spacer{flex:1}
.party .ph .pe{font-size:11px;font-weight:600;color:var(--tsl-green);background:rgba(31,138,91,.12);padding:2px 9px;border-radius:var(--radius-pill)}
.party .ph .prm{font-size:11px;font-weight:600;color:var(--tsl-crimson);background:none;border:none;cursor:pointer;font-family:var(--font-body)}
.role-chip{font-size:11px;font-weight:600;color:var(--tsl-navy);background:rgba(28,24,63,.08);padding:2px 10px;border-radius:var(--radius-pill);display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.role-chip .ic{width:11px;height:11px;color:var(--tsl-navy);stroke-width:3}
.rolehint{display:flex;gap:7px;align-items:flex-start;font-size:12px;color:var(--text-muted);margin:0 0 16px;line-height:1.45}
.rolehint .ic{width:15px;height:15px;color:var(--tsl-gold);flex:none;margin-top:1px}
.rolehint b{color:var(--tsl-ink)}
.addparty{display:flex;align-items:center;gap:8px;justify-content:center;font-size:13px;font-weight:600;color:var(--tsl-crimson);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);padding:12px 14px;background:var(--tsl-surface-2);margin-bottom:6px;cursor:pointer;width:100%;font-family:var(--font-body)}

/* ---- Financing: tap-select options ---- */
.opt{display:flex;gap:13px;align-items:center;min-height:48px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:13px 15px;margin-bottom:10px;background:var(--bg-card);cursor:pointer;width:100%;text-align:left;font-family:var(--font-body)}
.opt:hover{border-color:var(--tsl-gold)}
.opt.sel{border:1.6px solid var(--tsl-crimson);background:rgba(179,32,37,.045)}
.opt .rdo{flex:none;width:19px;height:19px;border-radius:50%;border:1.6px solid var(--border-strong);display:flex;align-items:center;justify-content:center}
.opt.sel .rdo{border-color:var(--tsl-crimson);background:var(--tsl-crimson)}
.opt .rdo svg{width:11px;height:11px;stroke:#fff;fill:none;stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round;display:none}
.opt.sel .rdo svg{display:block}
.opt .ob{flex:1}
.opt .ob b{display:block;font-size:14.5px;font-weight:600;color:var(--tsl-ink)}
.opt .ob span{display:block;font-size:12.5px;color:var(--text-muted);margin-top:1px}

/* ---- Lender typeahead ---- */
.input-faux{border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:12px 14px;font-size:14px;color:var(--tsl-ink);background:var(--bg-card);display:flex;align-items:center;justify-content:space-between}
.ta-wrap{position:relative}
.ta-menu{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:20;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-card);box-shadow:var(--shadow-sm);overflow:hidden;max-height:240px;overflow-y:auto}
.ta-menu div{padding:10px 14px;font-size:13.5px;color:var(--tsl-ink);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);cursor:pointer}
.ta-menu div:last-child{border-bottom:none}
.ta-menu div:hover,.ta-menu div.on{background:rgba(179,32,37,.06)}
.ta-menu .rg{font-size:10.5px;color:var(--tsl-green);font-weight:600;letter-spacing:.02em}
.reg-tag{color:var(--tsl-green);font-weight:600;font-size:11px;white-space:nowrap}

/* ---- Pill selects (yes/no, count) ---- */
.pillsel{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 18px}
.pillsel .ps{border:1.4px solid var(--border-strong);border-radius:var(--radius-pill);padding:9px 18px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-size:13.5px;font-weight:600;color:var(--tsl-ink);background:var(--bg-card);cursor:pointer;font-family:var(--font-body)}
.pillsel .ps:hover{border-color:var(--tsl-gold)}
.pillsel .ps.sel{border-color:var(--tsl-crimson);background:rgba(179,32,37,.06);color:var(--tsl-crimson)}
.qlbl{display:block;font-size:13px;font-weight:600;color:var(--tsl-ink);margin:4px 0 9px}

/* ---- Per-mortgage block + private switch ---- */
.mort{border:1px solid var(--border);border-radius:var(--radius-sm);padding:15px;margin-bottom:12px;background:var(--bg-card)}
.mort .mh{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.mort .mh b{font-size:13.5px;color:var(--tsl-ink)}
.priv{display:flex;align-items:center;gap:10px;margin-top:12px;min-height:48px;font-size:12.5px;color:var(--text-muted);cursor:pointer;background:none;border:none;width:100%;text-align:left;font-family:var(--font-body)}
.swtch{flex:none;width:42px;height:24px;border-radius:var(--radius-pill);background:var(--border-strong);position:relative;transition:background .15s}
.swtch.on{background:var(--tsl-crimson)}
.swtch::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:left .15s}
.swtch.on::after{left:20px}

/* ---- Consent (gated copy) + next-steps preview ---- */
.consent{position:relative;display:flex;gap:11px;align-items:flex-start;font-size:12.5px;line-height:1.5;color:var(--text-muted);margin:2px 0 18px;cursor:pointer;width:100%;text-align:left;background:none;border:none;font-family:var(--font-body)}
.consent input{position:absolute;width:1px;height:1px;opacity:0;margin:0}
.consent input:focus-visible + .box{outline:2px solid var(--tsl-crimson);outline-offset:2px}
.svctab:focus-visible,.mrow:focus-visible,.areatile:focus-visible,.opt:focus-visible,.pillsel .ps:focus-visible,.priv:focus-visible,.addparty:focus-visible,.backlink a:focus-visible{outline:2px solid var(--tsl-crimson);outline-offset:2px}
.consent .box{flex:none;width:19px;height:19px;border-radius:5px;border:1.6px solid var(--tsl-crimson);background:var(--bg-card);display:flex;align-items:center;justify-content:center;margin-top:1px}
.consent.on .box{background:var(--tsl-crimson)}
.consent .box svg{width:11px;height:11px;stroke:#fff;fill:none;stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round;display:none}
.consent.on .box svg{display:block}
.consent a{color:var(--tsl-crimson);font-weight:600}
/* Sprint W: Request-flow price reassurance line */
.reassure{display:flex;align-items:center;gap:10px;background:var(--tsl-surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;margin:0 0 20px;font-size:13px;color:var(--text-strong);line-height:1.45}
.reassure .ic{width:18px;height:18px;color:var(--tsl-green);flex:none}
.reassure b{font-weight:600}
.reassure .muted{color:var(--text-muted)}
.reassure a{color:var(--tsl-crimson);font-weight:600}
.nextp{background:var(--tsl-surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:15px 16px;margin:6px 0 16px}
.nextp b{font-size:13.5px;color:var(--tsl-ink)}
.nextp p{font-size:12.5px;color:var(--text-muted);margin:5px 0 0;line-height:1.5}
/* Sprint AN: RE intro-call advisory (navy-tinted) — replaces the optional-call checkbox */
.advise{display:flex;gap:11px;align-items:flex-start;background:rgba(28,24,63,.05);border:1px solid rgba(28,24,63,.16);border-radius:var(--radius-sm);padding:13px 15px;margin:2px 0 18px;font-size:13px;color:var(--text-strong);line-height:1.5}
.advise .ic{width:19px;height:19px;color:var(--tsl-navy);flex:none;margin-top:1px}
.advise b{color:var(--tsl-navy)}

/* ---- Engine C pay panel ---- */
.pay{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1.5px solid var(--tsl-crimson);background:rgba(179,32,37,.04);border-radius:var(--radius-sm);padding:15px 16px;margin:6px 0 14px}
.pay .pl b{font-size:14.5px;color:var(--tsl-ink)}
.pay .pl span{display:block;font-size:12px;color:var(--text-muted);margin-top:2px}
.pay .amt2{font-family:var(--font-display);font-size:24px;color:var(--tsl-ink);white-space:nowrap}

/* ---- Back-link (picker / interim) — Sprint AN removed the Door-2 .res-grid/.capture rules ---- */
.backlink{text-align:center;margin-top:16px;font-size:13px;color:var(--text-muted)}
.backlink a{color:var(--tsl-crimson);font-weight:600;cursor:pointer}

/* ---- Interim "coming online soon" state ---- */
.interim{text-align:center;padding:6px 0}
.interim .bigfee{font-family:var(--font-display);font-weight:300;font-size:40px;color:var(--tsl-ink);margin:8px 0}
.interim .bigfee sup{font-size:18px;color:var(--tsl-crimson);font-style:italic;top:-.5em;margin-right:2px}
.interim .row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:8px}

/* ---- Validation error highlight ---- */
.field.err input,.field.err select,.field.err textarea{border-color:var(--tsl-crimson);box-shadow:0 0 0 3px rgba(179,32,37,.12)}
.errnote{color:var(--tsl-crimson);font-size:12px;font-weight:600;margin:-6px 0 14px;display:flex;align-items:center;gap:6px}

/* ---- Submit states (loader / error) ---- */
.spin-load{width:18px;height:18px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:ispin .7s linear infinite;display:inline-block}
@keyframes ispin{to{transform:rotate(360deg)}}
.btn[disabled]{opacity:.7;cursor:default}
.errbox{display:flex;gap:11px;align-items:flex-start;background:rgba(179,32,37,.06);border:1px solid rgba(179,32,37,.3);border-radius:var(--radius-sm);padding:14px 16px;font-size:13px;color:var(--tsl-crimson-deep);margin:0 0 16px;line-height:1.5}
.errbox .ic{width:18px;height:18px;color:var(--tsl-crimson);flex:none;margin-top:1px}

/* ---- Honeypot (anti-spam — visually hidden, not display:none so bots fill it) ---- */
.hp-field{position:absolute!important;left:-9999px!important;top:auto;width:1px;height:1px;overflow:hidden}

/* ---- Reduced motion ---- */
@media (prefers-reduced-motion: reduce){
  .panel.show{animation:none}
  .spin-load{animation:none}
  .swtch::after,.swtch{transition:none}
}

/* ---- Charges box (Sprint S — Engine-A "Your charges" step) ---- */
.charge-box{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin:2px 0 8px}
.charge-hd{background:var(--tsl-surface-2);padding:18px;border-bottom:1px solid var(--border)}
.charge-hd .lab{font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--text-muted)}
.charge-hd .big{font-family:var(--font-display);font-weight:300;font-size:38px;letter-spacing:-.02em;margin-top:4px;display:flex;align-items:baseline;gap:10px;color:var(--text-strong)}
.charge-hd .big sup{font-size:17px;color:var(--tsl-crimson);font-style:italic;top:-.6em}
.charge-hd .big s{font-size:19px;color:var(--text-muted);opacity:.7}
.charge-hd .sub{font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-muted);margin-top:2px}
.charge-hd .save{margin-top:10px}
.charge-bd{padding:16px 18px}
.charge-bd h5{font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;margin-bottom:9px}
.charge-bd h5.inc{color:var(--tsl-green)}
.charge-bd h5.ext{color:var(--tsl-crimson);margin-top:15px}
.charge-bd ul{list-style:none;display:flex;flex-direction:column;gap:7px;font-size:12.5px;color:var(--text-muted)}
.charge-bd li{display:flex;gap:8px;line-height:1.4}
.charge-bd li::before{flex:none;font-weight:700}
.charge-bd .inc-l li::before{content:"\2713";color:var(--tsl-green)}
.charge-bd .ext-l li::before{content:"+";color:var(--tsl-gold)}
.charge-bd li b{color:var(--text-strong)}
.nothing{display:flex;gap:9px;align-items:center;background:rgba(31,138,91,.08);border:1px solid rgba(31,138,91,.25);border-radius:9px;padding:11px 13px;font-size:12.5px;color:var(--text-strong);margin:14px 0 6px}
.nothing b{color:var(--tsl-green)}
.nothing .ic{width:18px;height:18px;color:var(--tsl-green);flex:none}
.mrow .fee2 small{display:block;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-top:1px}

/* ---- Responsive ≤900px ---- */
@media(max-width:900px){
  .areagrid{grid-template-columns:1fr}
}
/* keep the 6-step progress bar usable on phones (mirror the modal pattern) */
@media(max-width:600px){
  .intake .pstep span{display:none}
  .intake .pstep + .pstep::before{width:18px;margin:0 6px}
  .svctabs{gap:6px}
  .svctab{padding:10px 14px;font-size:12.5px;min-height:44px}
  /* mobile-first tap targets: full-width nav buttons, bigger tap pills */
  .intake .nav-row{flex-direction:column;gap:10px}
  .intake .nav-row .btn{width:100%;min-height:48px}
  .pillsel .ps{min-height:48px}
  .mrow{min-height:66px}
  .areatile{min-height:60px}
}
/* Declutter matter rows on very narrow phones — the action tag carries the cue,
   exact fees live on pricing.html (Sprint Q). */
@media(max-width:480px){
  .mrow .fee2{display:none}
}

/* ---- Sprint AV (F2): intake confidence pack (area-chooser screen) ---- */
.expect{display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:center;background:var(--tsl-surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 16px;margin:14px 0 4px}
.expect .xi{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--text-muted)}
.expect .xi .ic{width:15px;height:15px;color:var(--tsl-gold);flex:none}
.expect .xi .dollar{color:var(--tsl-green);font-weight:700;font-size:14px}
.fallbackrow{text-align:center;font-size:13px;color:var(--text-muted);margin:18px 0 0}
.fallbackrow a{color:var(--tsl-crimson);font-weight:600}
.fallbackrow .sep{margin:0 9px;color:var(--border-strong)}
.truststrip{display:flex;flex-wrap:wrap;gap:10px 26px;justify-content:center;border-top:1px solid var(--border);margin-top:16px;padding-top:16px}
.truststrip .ti{display:inline-flex;align-items:flex-start;gap:8px;font-size:12px;color:var(--text-muted);max-width:300px;line-height:1.45}
.truststrip .ti .ic{width:15px;height:15px;color:var(--tsl-gold);flex:none;margin-top:1px}
.promise{text-align:center;font-family:var(--font-display);font-style:italic;font-size:12.5px;color:var(--text-muted);margin-top:12px}
@media(max-width:600px){
  .expect{flex-direction:column;align-items:flex-start;gap:8px}
}
/* blur-time validation note + consent error affordance (F2) */
.fieldnote{color:var(--tsl-crimson);font-size:12px;font-weight:600;margin:6px 0 0;display:flex;align-items:center;gap:6px}
.fieldnote .ic{width:14px;height:14px;flex:none}
.consent.err{background:rgba(179,32,37,.05);border:1px solid rgba(179,32,37,.35);border-radius:var(--radius-sm);padding:10px 12px}

/* ---- Sprint AV (F3): unified done screens (timeline · safety net · booking) ---- */
.file-no .keep{margin-left:10px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#8a6a28}/* darker gold: AA text contrast on warm paper */
.tl-label{font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);text-align:center;margin:22px 0 14px}
.tl{text-align:left;margin:0 0 18px}
.tli{display:flex;gap:14px;position:relative;padding-bottom:22px}
.tli:last-child{padding-bottom:0}
.tli::before{content:"";position:absolute;left:14px;top:32px;bottom:0;width:2px;background:var(--border)}
.tli:last-child::before{display:none}
.tli .tn{flex:none;width:29px;height:29px;border-radius:50%;background:var(--bg-card);border:2px solid var(--tsl-crimson);color:var(--tsl-crimson);font-family:var(--font-display);font-style:italic;font-size:13px;display:flex;align-items:center;justify-content:center;position:relative;z-index:1}
.tli:first-child .tn{background:var(--tsl-crimson);color:#fff}
.tli .tb b{display:block;font-size:13.5px;color:var(--tsl-ink);margin-bottom:2px}
.tli .tb span{display:block;font-size:12.5px;color:var(--text-muted);line-height:1.5}
.tli .tb .tnote{display:inline-block;margin-top:4px;font-size:11.5px;color:#8a6a28;font-weight:700;font-style:normal}/* darker gold: AA text contrast on white */
.safety{display:flex;gap:12px;align-items:flex-start;background:var(--tsl-surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;margin:0 0 16px;text-align:left;font-size:13px;color:var(--text-muted);line-height:1.5}
.safety .ic{width:18px;height:18px;color:var(--tsl-crimson);flex:none;margin-top:2px}
.safety b{color:var(--tsl-ink)}
.safety a{color:var(--tsl-crimson);font-weight:600;white-space:nowrap}
.bookcta{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;border:1.5px solid var(--tsl-crimson);background:rgba(179,32,37,.04);border-radius:var(--radius-sm);padding:14px 16px;margin:0 0 16px;text-align:left}
.bookcta .bl b{display:block;font-size:13.5px;color:var(--tsl-ink)}
.bookcta .bl span{display:block;font-size:12.5px;color:var(--text-muted);margin-top:2px}
.bookcta .btn{white-space:nowrap}
.donefoot{border-top:1px solid var(--border);margin-top:16px;padding-top:14px;font-family:var(--font-display);font-style:italic;font-size:12.5px;color:var(--text-muted);text-align:center}
.donefoot b{font-style:normal;font-family:var(--font-body);font-weight:600;color:var(--tsl-ink)}

/* ---- Sprint AV (F1): save & resume banner (rides above the active screen) ----
   Sprint AX hygiene: raw hexes tokenized (--tsl-gold-line/--tsl-gold-ink) + a
   `rise` entrance (end-state safe under the global reduced-motion guard). */
.resume{display:flex;align-items:center;gap:14px;background:var(--tsl-gold-soft);border:1px solid var(--tsl-gold-line,#ddc79b);border-radius:var(--radius-sm);padding:14px 16px;margin:0 0 20px;opacity:0;animation:rise .5s var(--ease-out) forwards}
.resume .ric{flex:none;width:38px;height:38px;border-radius:50%;background:var(--bg-card);border:1px solid var(--tsl-gold-line,#ddc79b);display:flex;align-items:center;justify-content:center;color:var(--tsl-gold)}
.resume .ric .ic{width:19px;height:19px}
.resume .rb{flex:1;min-width:0;font-size:12.5px;color:var(--tsl-gold-ink,#5a4620);line-height:1.45}
.resume .rb b{display:block;font-family:var(--font-display);font-weight:400;font-size:15.5px;color:var(--tsl-ink)}
.resume .ract{display:flex;gap:8px;flex:none;align-items:center}
.resume .rbtn{font-family:var(--font-body);font-size:12.5px;font-weight:700;border-radius:var(--radius-pill);padding:9px 16px;min-height:40px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.resume .rbtn.go{background:var(--tsl-crimson);color:#fff;border:none}
.resume .rbtn.go:hover{background:var(--tsl-crimson-deep)}
.resume .rbtn.ghost{background:transparent;color:var(--text-muted);border:1px solid var(--tsl-gold-line,#ddc79b)}
.resume .rbtn.ghost:hover{border-color:var(--tsl-gold)}

/* ---- Sprint AX (F10b): wax-seal stamp on the Done screens ----
   The AV .seal-stamp gets a one-time ~600ms stamp-in when the screen mounts
   (no replay). The global reduced-motion guard collapses it to the end state. */
.card.confirm .seal-stamp{animation:axstamp .6s var(--ease-out) both}
@keyframes axstamp{from{opacity:0;transform:scale(1.7) rotate(-8deg)}60%{opacity:1;transform:scale(.96) rotate(1.5deg)}to{opacity:1;transform:scale(1) rotate(0)}}

/* ---- Sprint AX (F10d): receipt-style review summary (visual only —
   fields, ids and payload untouched) ---- */
.charge-box{border-style:dashed}
.charge-hd{position:relative}
.charge-hd::after{content:"";position:absolute;left:0;right:0;bottom:-1px;border-bottom:1px dashed var(--border-strong)}
.charge-bd .inc-l li,.charge-bd .ext-l li{border-bottom:1px dashed var(--border);padding-bottom:7px}
.charge-bd .inc-l li:last-child,.charge-bd .ext-l li:last-child{border-bottom:none}
.resume .rbtn:focus-visible{outline:2px solid var(--tsl-crimson);outline-offset:2px}
@media(max-width:900px){
  .resume{flex-wrap:wrap}
  .resume .ract{width:100%;justify-content:flex-start;margin-top:2px}
}

/* ---- Sprint BA: opt-in save-on-leave dialog ---- */
/* Sits ABOVE the Start-a-File modal (.sf-overlay z-index:1000) so the desktop ✕/
   Esc/overlay close routes through it; on the mobile full page it covers the
   viewport over the in-page form. Injected into <body> by intake-app.js. */
.leave-overlay{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;
  padding:20px;background:rgba(20,16,30,.55);backdrop-filter:blur(3px);
  animation:leavefade .18s var(--ease-out)}
.leave-dialog{width:100%;max-width:430px;background:var(--bg-page);border:1px solid var(--border);
  border-radius:16px;padding:26px 26px 24px;box-shadow:0 30px 70px -25px rgba(10,8,20,.7);
  animation:leavepop .22s var(--ease-out)}
.leave-seal{width:44px;height:44px;border-radius:50%;background:var(--tsl-gold-soft);color:var(--tsl-gold);
  display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.leave-seal .ic{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8}
.leave-dialog h3{font-family:var(--font-display);font-weight:600;font-size:21px;margin:0 0 8px;color:var(--text-strong)}
.leave-dialog>p{font-size:14px;color:var(--text-muted);margin:0 0 10px;line-height:1.5}
.leave-shared{display:flex;gap:9px;align-items:flex-start;background:var(--bg-raised);border:1px solid var(--border);
  border-radius:var(--radius);padding:11px 13px;font-size:13px;color:var(--tsl-ink);line-height:1.5;margin:12px 0 18px}
.leave-shared .ic{width:18px;height:18px;flex:none;margin-top:1px;fill:none;stroke:var(--tsl-crimson);stroke-width:1.8}
.leave-btns{display:flex;flex-direction:column;gap:9px}
.leave-btns .btn{width:100%;text-align:center;justify-content:center;padding:14px;font-size:16px}
.leave-plain{width:100%;background:var(--tsl-white);border:1px solid var(--border-strong);color:var(--tsl-ink);
  font-family:var(--font-body);font-weight:600;font-size:16px;border-radius:var(--radius-pill);padding:14px;cursor:pointer;
  min-height:44px}
.leave-plain:hover{background:var(--bg-raised)}
.leave-keep{width:100%;background:none;border:none;color:var(--text-muted);font-family:var(--font-body);
  font-weight:500;font-size:14px;text-decoration:underline;cursor:pointer;padding:8px;min-height:44px}
.leave-keep:hover{color:var(--tsl-ink)}
.leave-btns button:focus-visible{outline:2px solid var(--tsl-crimson);outline-offset:2px}
@keyframes leavefade{from{opacity:0}to{opacity:1}}
@keyframes leavepop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
/* Mobile: dock as a bottom sheet with a safe-area inset. */
@media(max-width:600px){
  .leave-overlay{align-items:flex-end;padding:0}
  .leave-dialog{max-width:100%;border-radius:16px 16px 0 0;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));
    animation:leavesheet .24s var(--ease-out)}
}
@keyframes leavesheet{from{transform:translateY(100%)}to{transform:none}}
@media (prefers-reduced-motion: reduce){
  .leave-overlay,.leave-dialog{animation:none}
}
