/* root·caves — Destination design kit · components (v0.1)
   Namespaced (dst-) component layer ported from the three validated reference
   screens. Requires destination-tokens.css for the --dst-* custom properties.
   Additive + CSP-clean: no inline styles, never restyles bare body/html — the
   base lives on .dst-page so the kit cannot leak into legacy pages. Light only. */

/* ---- self-hosted fonts (no external calls) ---- */
@font-face{font-family:'DM Sans';font-style:normal;font-weight:300;font-display:swap;
  src:url('fonts/dm-sans-300.woff2') format('woff2')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/dm-sans-400.woff2') format('woff2')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/dm-sans-500.woff2') format('woff2')}
@font-face{font-family:'Libre Baskerville';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/libre-baskerville-400.woff2') format('woff2')}
@font-face{font-family:'Libre Baskerville';font-style:italic;font-weight:400;font-display:swap;
  src:url('fonts/libre-baskerville-400i.woff2') format('woff2')}

/* ---- base page (NEVER bare body/html — use .dst-page) ---- */
.dst-page{background:var(--dst-paper);color:var(--dst-ink-soft);font-family:var(--dst-sans);
  -webkit-font-smoothing:antialiased;font-weight:400;line-height:1.6;
  margin:0;padding:0 24px 80px;box-sizing:border-box}
.dst-page *{box-sizing:border-box}
.dst-wrap{max-width:1040px;margin:0 auto}
.dst-wrap--narrow{max-width:880px}
.dst-wrap--mid{max-width:900px}

/* ---- top bar / app shell ---- */
.dst-topbar{display:flex;align-items:center;justify-content:space-between;
  padding:22px 4px;border-bottom:1px solid var(--dst-line)}
.dst-topbar-left{display:flex;align-items:center;gap:18px}
.dst-mark{font-family:var(--dst-serif);font-size:21px;color:var(--dst-ink);letter-spacing:.2px}
.dst-mark-dot{color:var(--dst-amber)}
.dst-mark-v{font-family:var(--dst-sans);font-size:11px;font-weight:500;color:var(--dst-faint);
  margin-left:8px;letter-spacing:1.5px;vertical-align:3px}
.dst-topright{display:flex;align-items:center;gap:18px;font-size:13.5px;color:var(--dst-muted)}
.dst-fund{display:flex;align-items:center;gap:7px;color:var(--dst-ink);font-weight:500}
.dst-fund-chev{color:var(--dst-faint);font-size:11px}
.dst-sep{width:1px;height:18px;background:var(--dst-line)}
.dst-step{color:var(--dst-ink);font-weight:500}
.dst-back{font-size:13.5px;color:var(--dst-muted);text-decoration:none}
.dst-back:hover{color:var(--dst-ink)}
.dst-avatar{width:32px;height:32px;border-radius:50%;background:var(--dst-navy);color:#F4F1E9;
  font-size:12px;font-weight:500;display:flex;align-items:center;justify-content:center;letter-spacing:.5px}

/* ---- wayfinding nav (reachability) — quiet, muted, hairline ---- */
.dst-nav{display:flex;align-items:center;gap:26px;padding:13px 4px 0}
.dst-nav-link{font-size:13.5px;color:var(--dst-muted);text-decoration:none;
  padding:2px 0;border-bottom:2px solid transparent;transition:color .15s}
.dst-nav-link:hover{color:var(--dst-ink)}
.dst-nav-link--active{color:var(--dst-ink);font-weight:500;border-bottom-color:var(--dst-ink)}

/* ---- nav seam marker (Phase 5) — not-yet-rebuilt tabs open the classic shell ---- */
.dst-nav-link--seam{color:var(--dst-faint)}
.dst-nav-link--seam:hover{color:var(--dst-muted)}
.dst-nav-seam{font-size:9.5px;font-weight:500;letter-spacing:.6px;text-transform:uppercase;
  color:var(--dst-faint);border:1px solid var(--dst-line);border-radius:9px;padding:1px 5px;margin-left:6px;vertical-align:1.5px}

/* ---- greeting band ---- */
.dst-greeting{padding:64px 4px 14px}
.dst-greeting--tight{padding:46px 4px 0}
.dst-kicker{font-size:12px;font-weight:500;letter-spacing:2.4px;text-transform:uppercase;color:var(--dst-faint)}
.dst-h1{font-family:var(--dst-serif);font-weight:400;color:var(--dst-ink);
  font-size:42px;line-height:1.15;margin:18px 0 16px;letter-spacing:.2px}
.dst-h1--sm{font-size:36px}
.dst-lede{font-size:18px;line-height:1.6;color:var(--dst-ink-soft);max-width:680px;font-weight:300}
.dst-lede b{font-weight:500;color:var(--dst-ink)}

/* ---- section label ---- */
.dst-section{display:flex;align-items:baseline;gap:12px;margin:54px 4px 18px}
.dst-section .dst-section-t{font-size:12px;font-weight:500;letter-spacing:2px;text-transform:uppercase;color:var(--dst-muted)}
.dst-section--amber .dst-section-t{color:var(--dst-amber)}
.dst-section .dst-section-rule{flex:1;height:1px;background:var(--dst-line)}
.dst-section .dst-section-count{font-size:12px;color:var(--dst-faint);letter-spacing:.5px}

/* ---- shared white-panel surface — bg + warm #ECE8DF hairline border (identical across
       the three mocks). Radius + shadow stay per-element to match each reference exactly. ---- */
.dst-card,.dst-conn,.dst-prefill,.dst-stat{background:var(--dst-surface);border:1px solid var(--dst-line)}
.dst-card{border-left:3px solid var(--dst-amber)}   /* keep the needs-you accent only here */

/* ---- attention card (today mock: radius 14, two-layer .04 shadow) ---- */
.dst-card{border-radius:14px;box-shadow:var(--dst-shadow);
  padding:24px 26px;display:flex;gap:24px;align-items:flex-start;margin-bottom:16px}
.dst-card-body{flex:1;min-width:0}
.dst-ctag{font-size:11px;font-weight:500;letter-spacing:1.6px;text-transform:uppercase;color:var(--dst-amber)}
.dst-card h3,.dst-card-title{font-family:var(--dst-serif);font-weight:400;color:var(--dst-ink);
  font-size:20px;margin:9px 0;line-height:1.3}
.dst-card p{font-size:15px;color:var(--dst-ink-soft);line-height:1.6;max-width:560px;font-weight:300}
.dst-meta{display:flex;align-items:center;gap:10px;margin-top:15px;font-size:13px;color:var(--dst-muted);flex-wrap:wrap}
.dst-meta-anchor{color:var(--dst-ink-soft)}
.dst-meta-due{display:inline-flex;align-items:center;gap:6px;background:var(--dst-amber-bg);
  border:1px solid var(--dst-amber-line);color:var(--dst-amber);border-radius:20px;padding:3px 11px;font-weight:500;font-size:12.5px}
.dst-dotdiv{width:3px;height:3px;border-radius:50%;background:var(--dst-faint)}
.dst-card-act{flex-shrink:0;align-self:center;display:flex;flex-direction:column;gap:8px;align-items:stretch}

/* ---- buttons ---- */
.dst-btn{font-family:var(--dst-sans);font-size:14px;font-weight:500;border-radius:10px;padding:11px 20px;
  cursor:pointer;border:1px solid var(--dst-navy);background:var(--dst-navy);color:#F5F2EA;white-space:nowrap;transition:.15s}
.dst-btn:hover{background:var(--dst-navy-hi);border-color:var(--dst-navy-hi)}
.dst-btn--ghost{background:transparent;color:var(--dst-ink-soft);border-color:var(--dst-line)}
.dst-btn--ghost:hover{background:#F3F1EA;color:var(--dst-ink)}
.dst-btn--light{background:#F5F2EA;color:var(--dst-navy);border-color:#F5F2EA}
.dst-btn--light:hover{background:#fff}
.dst-btn--onnavy{background:transparent;color:#E7EAF2;border-color:#3c4a68}
.dst-btn--onnavy:hover{background:var(--dst-navy-hi)}
.dst-btn--sm{font-size:13px;padding:8px 15px}

/* ---- on-track band + stat tiles ---- */
.dst-ontrack{background:var(--dst-sage-bg);border:1px solid var(--dst-sage-line);border-radius:14px;
  padding:20px 24px;display:flex;align-items:center;gap:18px;margin-bottom:14px}
.dst-gdot{width:9px;height:9px;border-radius:50%;background:var(--dst-sage);flex-shrink:0;
  box-shadow:0 0 0 4px rgba(44,119,99,.13)}
.dst-ontrack p{font-size:14.5px;color:#1f5848;font-weight:400}
.dst-ontrack p b{font-weight:500}
.dst-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:4px}
.dst-stat{border-radius:12px;padding:16px 18px}   /* today mock: flat, no shadow */
.dst-stat-n{font-family:var(--dst-serif);font-size:26px;color:var(--dst-ink);line-height:1}
.dst-stat-l{font-size:12.5px;color:var(--dst-muted);margin-top:8px;letter-spacing:.2px}

/* ---- coming-up list ---- */
.dst-up{list-style:none;margin:0;padding:0}
.dst-up li{display:flex;align-items:center;gap:18px;padding:15px 6px;border-bottom:1px solid var(--dst-line)}
.dst-up li:last-child{border-bottom:none}
.dst-up-date{font-family:var(--dst-serif);font-size:14px;color:var(--dst-ink);width:74px;flex-shrink:0;letter-spacing:.3px}
.dst-up-name{flex:1;font-size:15px;color:var(--dst-ink-soft);font-weight:300}
.dst-up-anchor{font-size:12.5px;color:var(--dst-faint);letter-spacing:.2px}
.dst-up-far{font-size:12.5px;color:var(--dst-faint);width:84px;text-align:right}
/* A filing-backed coming-up row deep-links to its detail; a non-filing row stays
   plain text (F-18 — no dead-ends). The link fills the flex row, quietly.
   Persistent wayfinding (not hover-only): an openable row reads its name in --ink
   and carries a faint trailing chevron, so it's distinguishable from the inert
   plain rows (which keep the muted --ink-soft name and no chevron) at a glance. */
.dst-up-link{flex:1;display:flex;align-items:center;gap:18px;text-decoration:none;border-radius:6px;
  margin:-15px -6px;padding:15px 6px}
.dst-up-link .dst-up-name{color:var(--dst-ink)}
.dst-up-link .dst-up-far{position:relative}
.dst-up-link .dst-up-far::after{content:"\203A";margin-left:8px;color:var(--dst-faint);
  font-size:15px;line-height:1;vertical-align:baseline}
.dst-up-link:hover{background:var(--dst-navy-bg)}
.dst-up-link:hover .dst-up-far::after{color:var(--dst-ink-soft)}

/* ---- index list (reachability) — flat rows, whole row a link ---- */
.dst-list{list-style:none;margin:0;padding:0}
.dst-list li{border-bottom:1px solid var(--dst-line)}
.dst-list li:last-child{border-bottom:none}
.dst-listrow{display:flex;align-items:center;gap:18px;padding:16px 6px;text-decoration:none;
  color:inherit;transition:background .12s}
.dst-listrow:hover{background:var(--dst-navy-bg)}
/* A row with no resolvable detail (no deadline_id) is honestly non-interactive
   (F-18 — no dead-end link). Same layout, no hover/cursor affordance. */
.dst-listrow--static{cursor:default}
.dst-listrow-role{font-size:12px;font-weight:500;letter-spacing:1.4px;text-transform:uppercase;
  color:var(--dst-faint);width:160px;flex-shrink:0}
.dst-listrow-name{flex:1;font-size:15px;color:var(--dst-ink);font-weight:400}
.dst-listrow-meta{font-size:12.5px;color:var(--dst-faint);text-align:right;margin-left:auto}
.dst-listrow-pill{flex-shrink:0}
/* S142: existing-party rows in the Setup wizard link to the party hub's Edit
   (F-143) — the name is a real link, quiet until hover. */
.dst-listrow-namelink{color:var(--dst-ink);text-decoration:none;border-bottom:1px solid var(--dst-line)}
.dst-listrow-namelink:hover{color:var(--dst-sage);border-bottom-color:var(--dst-sage-line)}
@media(max-width:640px){.dst-listrow-role{width:auto}.dst-listrow-meta{display:none}}

/* ---- calm empty state (reachability) ---- */
.dst-empty{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:14px;
  padding:30px 26px;margin-top:8px}
.dst-empty h3{font-family:var(--dst-serif);font-weight:400;font-size:19px;color:var(--dst-ink);margin-bottom:7px}
.dst-empty p{font-size:14px;color:var(--dst-muted)}

/* ---- progress bar ---- */
.dst-progress{display:flex;align-items:center;gap:16px;margin:30px 4px 8px}
.dst-ptrack{flex:1;height:6px;background:#EDEAE1;border-radius:6px;overflow:hidden}
.dst-pfill{height:100%;background:var(--dst-sage);border-radius:6px;width:66%}
.dst-pfill--66{width:66%}
.dst-pfill--69{width:69%}
/* CSP-clean dynamic progress: width utilities in 5% steps (no inline style) */
.dst-pfill--p0{width:0}
.dst-pfill--p5{width:5%}
.dst-pfill--p10{width:10%}
.dst-pfill--p15{width:15%}
.dst-pfill--p20{width:20%}
.dst-pfill--p25{width:25%}
.dst-pfill--p30{width:30%}
.dst-pfill--p35{width:35%}
.dst-pfill--p40{width:40%}
.dst-pfill--p45{width:45%}
.dst-pfill--p50{width:50%}
.dst-pfill--p55{width:55%}
.dst-pfill--p60{width:60%}
.dst-pfill--p65{width:65%}
.dst-pfill--p70{width:70%}
.dst-pfill--p75{width:75%}
.dst-pfill--p80{width:80%}
.dst-pfill--p85{width:85%}
.dst-pfill--p90{width:90%}
.dst-pfill--p95{width:95%}
.dst-pfill--p100{width:100%}
.dst-pnum{font-size:13.5px;color:var(--dst-muted);white-space:nowrap}
.dst-pnum b{color:var(--dst-ink);font-weight:500}

/* ---- status pills ---- */
.dst-pill{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:500;
  border-radius:20px;padding:5px 13px;white-space:nowrap}
.dst-pill--ok{background:var(--dst-sage-bg);border:1px solid var(--dst-sage-line);color:var(--dst-sage)}
.dst-pill--action{background:var(--dst-amber-bg);border:1px solid var(--dst-amber-line);color:var(--dst-amber)}
.dst-pill--due{background:transparent;border:1px solid var(--dst-line);color:var(--dst-ink-soft)}
.dst-pill--optional{background:transparent;border:1px solid var(--dst-line);color:var(--dst-faint)}
.dst-pill--anchor{background:transparent;border:1px solid var(--dst-line);color:var(--dst-muted)}
.dst-tick{width:14px;height:14px;stroke:var(--dst-sage);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* ---- setup connection row ---- */
.dst-conn{border-radius:14px;box-shadow:0 1px 2px rgba(21,34,60,.03),0 6px 18px rgba(21,34,60,.035);
  padding:18px 20px;display:flex;align-items:center;gap:18px;margin-bottom:12px}
.dst-conn--todo{border-left:3px solid var(--dst-amber)}
.dst-tile{width:42px;height:42px;border-radius:11px;background:var(--dst-navy-bg);color:var(--dst-navy);
  display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dst-tile svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.dst-conn-body{flex:1;min-width:0}
.dst-conn-name{font-size:15.5px;font-weight:500;color:var(--dst-ink)}
.dst-conn-sub{font-size:13.5px;color:var(--dst-muted);margin-top:3px;font-weight:300;line-height:1.5}
.dst-conn-sub b{font-weight:400;color:var(--dst-ink-soft)}
.dst-conn-why{font-size:12.5px;color:var(--dst-amber);margin-top:7px;font-weight:400}
.dst-conn-right{flex-shrink:0;display:flex;align-items:center;gap:12px}
/* muted, non-interactive right-side note (honest disabled / coming — never looks clickable) */
.dst-conn-note{font-size:12.5px;color:var(--dst-faint);white-space:nowrap;font-weight:400}

/* ---- prefill fund card ---- */
.dst-prefill{border-radius:16px;box-shadow:0 1px 2px rgba(21,34,60,.03),0 6px 18px rgba(21,34,60,.035);
  padding:24px 26px}
.dst-prefill-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:6px}
.dst-prefill h3,.dst-prefill-title{font-family:var(--dst-serif);font-weight:400;color:var(--dst-ink);font-size:20px}
.dst-prefill-note{font-size:13.5px;color:var(--dst-muted);font-weight:300;margin-top:6px;max-width:430px}
.dst-prefill-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 36px;margin-top:18px}
.dst-field-static{padding:13px 0;border-bottom:1px solid var(--dst-line)}
.dst-field-static .dst-field-l{font-size:12px;letter-spacing:1.2px;text-transform:uppercase;color:var(--dst-faint)}
.dst-field-static .dst-field-val{font-size:15.5px;color:var(--dst-ink);margin-top:5px}
.dst-confirm{display:inline-block;margin-left:8px;font-size:11.5px;font-weight:500;color:var(--dst-amber);
  background:var(--dst-amber-bg);border:1px solid var(--dst-amber-line);border-radius:14px;padding:1px 9px;vertical-align:2px}

/* ---- progressive-emphasis tiers (the signature pattern) ---- */
/* needs-you: full row card with inline inputs */
.dst-item{background:var(--dst-surface);border:1px solid var(--dst-line);border-left:3px solid var(--dst-amber);
  border-radius:13px;padding:18px 20px;display:flex;gap:18px;align-items:flex-start;margin-bottom:12px;
  box-shadow:0 1px 2px rgba(21,34,60,.03),0 6px 16px rgba(21,34,60,.035)}
.dst-item-body{flex:1;min-width:0}
.dst-item-nm{font-size:15.5px;font-weight:500;color:var(--dst-ink)}
.dst-item-sb{font-size:13.5px;color:var(--dst-muted);margin-top:4px;font-weight:300;line-height:1.5;max-width:480px}
.dst-item-act{flex-shrink:0;align-self:center;display:flex;align-items:center;gap:10px}
.dst-field{display:flex;flex-direction:column;gap:4px}
.dst-field label{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--dst-faint)}
.dst-field input{font-family:var(--dst-sans);font-size:14px;color:var(--dst-ink);width:96px;padding:8px 10px;
  border:1px solid var(--dst-line);border-radius:8px;background:#FCFBF8}
.dst-field input:focus{outline:none;border-color:var(--dst-navy);background:#fff}

/* in-motion: medium row */
.dst-row{display:flex;align-items:center;gap:16px;padding:14px 16px;background:var(--dst-surface);
  border:1px solid var(--dst-line);border-radius:12px;margin-bottom:10px}
.dst-row-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--dst-slate)}
.dst-row-nm{flex:1;font-size:14.5px;color:var(--dst-ink)}
.dst-row-nm .dst-item-sb{display:block;margin-top:2px;font-size:12.5px}
.dst-row-st{font-size:12.5px;color:var(--dst-slate);background:var(--dst-slate-bg);border-radius:14px;padding:3px 11px;font-weight:500}

/* done: compact hushed list with sage ticks */
.dst-done{border:1px solid var(--dst-line);border-radius:13px;overflow:hidden;background:var(--dst-surface)}
.dst-done-d{display:flex;align-items:center;gap:13px;padding:12px 18px;border-bottom:1px solid var(--dst-line)}
.dst-done-d:last-child{border-bottom:none}
.dst-done .dst-tick{width:15px;height:15px;flex-shrink:0}
.dst-done-nm{flex:1;font-size:14px;color:var(--dst-ink-soft)}
.dst-done-meta{font-size:12px;color:var(--dst-faint)}

/* ---- party hub (Phase 4) — additive, ported per-element from party mock ---- */
/* needs-you card meta line (detected / SLA / risk) */
.dst-card-metaline{font-size:12.5px;color:var(--dst-faint);margin-top:8px}

/* "what they owe you" — standing deliverables, compact two-state list (mock .owe) */
.dst-owe{border:1px solid var(--dst-line);border-radius:13px;overflow:hidden;background:var(--dst-surface)}
.dst-owe-d{display:flex;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid var(--dst-line)}
.dst-owe-d:last-child{border-bottom:none}
.dst-owe-cadence{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--dst-faint);width:74px;flex-shrink:0}
.dst-owe-blank{width:15px;flex-shrink:0}
.dst-owe .dst-tick{width:15px;height:15px;flex-shrink:0}
.dst-owe-nm{flex:1;font-size:14px;color:var(--dst-ink-soft)}
.dst-owe-nm b{font-weight:500;color:var(--dst-ink)}
.dst-owe-meta{font-size:12.5px;color:var(--dst-muted);white-space:nowrap}
.dst-owe-meta--warn{color:var(--dst-amber)}

/* mandate & documents — two-column panel of floating cards (mock .panel/.pcard) */
.dst-panel{display:grid;grid-template-columns:1.1fr .9fr;gap:14px;margin-top:4px}
.dst-pcard{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:13px;padding:20px 22px;
  box-shadow:var(--dst-shadow)}
.dst-pcard-h{font-family:var(--dst-serif);font-weight:400;font-size:17px;color:var(--dst-ink);margin-bottom:14px}
.dst-kv{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px solid var(--dst-line);font-size:14px}
.dst-kv:last-of-type{border-bottom:none}
.dst-kv-k{color:var(--dst-muted);font-weight:300}
.dst-kv-v{color:var(--dst-ink);text-align:right}
.dst-contact{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--dst-muted);margin-top:14px}
.dst-contact b{font-weight:500;color:var(--dst-ink-soft)}
.dst-doc{display:flex;align-items:center;gap:11px;padding:9px 0;font-size:13.5px;border-bottom:1px solid var(--dst-line)}
.dst-doc:last-child{border-bottom:none}
.dst-doc a{color:var(--dst-ink-soft);text-decoration:none}
.dst-doc a:hover{color:var(--dst-ink);text-decoration:underline}
.dst-doc-nm{color:var(--dst-ink-soft)}
.dst-doc-dt{font-size:11px;color:var(--dst-faint);margin-left:auto;white-space:nowrap}
.dst-fileicon{width:15px;height:15px;stroke:var(--dst-slate);fill:none;stroke-width:1.6;flex-shrink:0}

/* ---- navy closing card ---- */
.dst-closing{margin-top:34px;background:var(--dst-navy);border-radius:16px;padding:26px 28px;color:#E7EAF2}
.dst-closing h3,.dst-closing-title{font-family:var(--dst-serif);font-weight:400;color:#fff;font-size:20px;margin-bottom:8px}
.dst-closing p{font-size:14.5px;color:#C2C9D8;font-weight:300;line-height:1.6;max-width:560px}
.dst-closing-row{display:flex;align-items:center;gap:12px;margin-top:18px;flex-wrap:wrap}

/* ---- record-submission form (S136) — in-surface "file it", on the navy closing card ---- */
.dst-record-form{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;margin-top:20px}
.dst-record-form .dst-field{display:flex;flex-direction:column;gap:5px}
.dst-record-form .dst-field-l{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:#9aa6bd}
.dst-record-form .dst-field-opt{text-transform:none;letter-spacing:0;color:#7c89a3}
.dst-record-form .dst-field-i{font-family:var(--dst-sans);font-size:14px;color:#fff;width:100%;
  background:rgba(255,255,255,.06);border:1px solid #3c4a68;border-radius:9px;padding:9px 11px}
.dst-record-form .dst-field-i::placeholder{color:#7c89a3}
.dst-record-form .dst-field-i:focus{outline:none;border-color:#6b86c4;background:rgba(255,255,255,.10)}
.dst-record-form select.dst-field-i{appearance:none;-webkit-appearance:none}
.dst-record-form .dst-closing-row{grid-column:1 / -1;margin-top:4px}
@media(max-width:640px){.dst-record-form{grid-template-columns:1fr}}

/* ---- thesis line ---- */
.dst-thesis{margin-top:58px;padding:30px 4px 0;border-top:1px solid var(--dst-line);
  font-family:var(--dst-serif);font-style:italic;font-size:16.5px;color:var(--dst-muted);line-height:1.7;max-width:760px}
.dst-thesis b{font-style:normal;font-weight:400;color:var(--dst-ink-soft)}

/* ---- party act-on-it (Phase 4.1) ---- */
/* Ported verbatim from the validated mock docs/design/party-acton_destination_v0.1.html.
   The CSP-clean inline-expand uses native <details>/<summary> (no inline JS); the
   form submits via HTMX (X-CSRF-Token header), mirroring the Phase 3.1 filing resolve. */
.dst-card-act--row{flex-direction:row;align-items:center;gap:10px;align-self:center;flex-wrap:wrap}
.dst-resolve{margin-top:18px;border-top:1px solid var(--dst-line);padding-top:16px}
.dst-resolve-l{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--dst-faint);display:block;margin-bottom:7px}
.dst-resolve textarea{font-family:var(--dst-sans);font-size:14px;color:var(--dst-ink);width:100%;min-height:74px;
  padding:11px 13px;border:1px solid var(--dst-line);border-radius:10px;background:#FCFBF8;resize:vertical;line-height:1.5}
.dst-resolve textarea:focus{outline:none;border-color:var(--dst-navy);background:#fff}
.dst-resolve-input{font-family:var(--dst-sans);font-size:14px;color:var(--dst-ink);width:100%;
  padding:10px 13px;border:1px solid var(--dst-line);border-radius:10px;background:#FCFBF8;margin-bottom:12px}
.dst-resolve-input:focus{outline:none;border-color:var(--dst-navy);background:#fff}
.dst-resolve-input--inline{width:auto;margin:0}
.dst-resolve-row{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}
.dst-resolve-hint{font-size:12.5px;color:var(--dst-muted);font-weight:300}
/* a small inline "request" button living on an owe row */
.dst-owe-act{margin-left:6px}
.dst-owe-act .dst-btn--sm{padding:6px 13px;font-size:12.5px}
/* native disclosure toggles — summary styled as a button, marker suppressed */
.dst-act-toggle{display:inline-block}
.dst-act-toggle>summary,.dst-owe-item>summary,.dst-review>summary{list-style:none;cursor:pointer}
.dst-act-toggle>summary::-webkit-details-marker,
.dst-owe-item>summary::-webkit-details-marker,
.dst-review>summary::-webkit-details-marker{display:none}
.dst-act-toggle>summary{display:inline-flex}
.dst-owe-item{display:block;border-bottom:1px solid var(--dst-line)}
.dst-owe-item:last-child{border-bottom:none}
.dst-owe-item>summary{display:flex;align-items:center}
.dst-owe-item .dst-resolve{margin:0;padding:0 18px 18px;border-top:none}
.dst-review{margin-top:18px}
.dst-review>summary{display:inline-flex;margin-bottom:14px}
/* on-navy variants for the DD-review form inside the closing card */
.dst-resolve--onnavy{border-top-color:#3c4a68}
.dst-resolve-l--onnavy{color:#9aa6c0}
.dst-resolve--onnavy textarea,.dst-resolve--onnavy .dst-resolve-input{background:#16223c;border-color:#3c4a68;color:#E7EAF2}
.dst-resolve--onnavy textarea:focus,.dst-resolve--onnavy .dst-resolve-input:focus{border-color:#6c7da0;background:#1b2a4a}
.dst-resolve-hint--onnavy{color:#9aa6c0}

/* ---- graceful narrow degradation (not mobile-first; v0.2) ---- */
@media(max-width:680px){
  .dst-h1{font-size:33px}
  .dst-h1--sm{font-size:29px}
  .dst-card,.dst-item{flex-direction:column;gap:16px}
  .dst-card-act,.dst-item-act{align-self:stretch}
  .dst-stats{grid-template-columns:repeat(2,1fr)}
  .dst-prefill-grid{grid-template-columns:1fr}
  .dst-conn{flex-wrap:wrap}
  .dst-up-anchor{display:none}
  .dst-panel{grid-template-columns:1fr}
}

/* ---- Slice 0: AUM resolve-with-evidence card ---- */
.dst-evid{margin-top:12px;border-top:1px solid var(--dst-line);padding-top:14px;
  display:flex;flex-direction:column;gap:12px}
.dst-evid-row{display:flex;flex-direction:column;gap:3px}
.dst-evid-k{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--dst-faint)}
.dst-evid-v{font-size:15px;font-weight:500;color:var(--dst-ink)}
.dst-evid-v--muted{font-weight:400;color:var(--dst-muted)}
.dst-evid-meta{font-size:12.5px;color:var(--dst-muted);font-weight:300;margin-top:2px}
.dst-evid-open{font-size:13px;color:var(--dst-navy);text-decoration:none;font-weight:500}
.dst-evid-open:hover{text-decoration:underline}
.dst-evid-figure{font-variant-numeric:tabular-nums}
/* The attach affordance: a styled label triggers a visually-hidden file input
   (kept reachable for assistive tech, off-screen rather than display:none). The
   file input auto-submits via htmx on change. CSP-clean — no inline styles. */
.dst-evid-attach{cursor:pointer}
.dst-evid-file{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ── Documents (Slice 2) — one surface by document_class ───────────────── */
.dst-trip{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:30px}
.dst-tcard{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:13px;padding:20px 22px}
.dst-tcard-n{font-family:var(--dst-serif);font-size:30px;color:var(--dst-ink);line-height:1}
.dst-tcard-t{font-size:14.5px;color:var(--dst-ink);font-weight:500;margin-top:12px}
.dst-tcard-d{font-size:13px;color:var(--dst-muted);margin-top:5px;line-height:1.5;font-weight:300}
.dst-seccap{font-size:13.5px;color:var(--dst-muted);margin:-10px 4px 16px;font-weight:300;max-width:660px}
.dst-doclist{list-style:none;margin:0;padding:0}
/* S135: fixed-column grid so the type-select and action buttons land in the SAME
   column on every row (a flex row let the select drift with name width — Franz
   counted 4 different "Change type" x-positions). Columns: kind | name | type |
   acts. Fixed widths (not auto) are what make them align across rows, since each
   <li> is its own grid. Source rows size the type column; other sections collapse
   it. Titles are single-line (ellipsis) so every row is the same height. */
.dst-doc{display:grid;grid-template-columns:170px minmax(0,1fr) auto 360px;align-items:center;
  gap:14px;padding:14px 6px;border-bottom:1px solid var(--dst-line)}
.dst-doc--source{grid-template-columns:170px minmax(0,1fr) 150px 360px}
.dst-doc:last-child{border-bottom:none}
.dst-doc-kind{font-size:11px;font-weight:500;letter-spacing:.3px;color:var(--dst-ink-soft);
  background:#F3F1EA;border:1px solid var(--dst-line);border-radius:6px;padding:4px 10px;
  white-space:nowrap;text-align:center;justify-self:start}
.dst-doc-kind--src{background:var(--dst-sage-bg);border-color:var(--dst-sage-line);color:var(--dst-sage)}
.dst-doc-kind--needs{background:var(--dst-amber-bg);border-color:var(--dst-amber-line);color:var(--dst-amber)}
.dst-doc-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-size:15px;color:var(--dst-ink);font-weight:300}
.dst-doc-meta{font-size:12.5px;color:var(--dst-faint);font-weight:300}
.dst-doc-missing{display:block;white-space:normal;font-size:12px;color:var(--dst-amber);font-style:italic;margin-top:3px}
.dst-doc-verrec{display:block;white-space:normal;font-size:12px;color:var(--dst-muted);font-style:italic;margin-top:3px}
.dst-doc-type{justify-self:start;min-width:0}
.dst-doc-open{font-size:13px;color:var(--dst-ink-soft);text-decoration:none;border:1px solid var(--dst-line);
  border-radius:8px;padding:6px 14px;white-space:nowrap;transition:.15s;background:transparent}
.dst-doc-open:hover{background:#F3F1EA;color:var(--dst-ink)}
.dst-viewall{font-size:13px;color:var(--dst-muted);padding:13px 6px 0;font-weight:300}
.dst-viewall a{color:var(--dst-sage);text-decoration:none}
@media(max-width:680px){.dst-trip{grid-template-columns:1fr}.dst-doc{grid-template-columns:1fr}.dst-doc--source{grid-template-columns:1fr}}
.dst-doc-acts{justify-self:end;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center}
.dst-doc-typesel{font-family:var(--dst-sans);font-size:12.5px;color:var(--dst-ink-soft);
  background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:8px;
  padding:6px 10px;flex-shrink:0;cursor:pointer;max-width:150px}
.dst-doc-typesel:hover{border-color:var(--dst-amber-line)}
/* F-140 permanent-delete — the only destructive affordance on the surface.
   Clay (muted brick), distinct from the amber needs-you accent; stark copy,
   two-step <details> confirm in the template. */
.dst-doc-danger{color:var(--dst-clay);border-color:var(--dst-clay-line)}
.dst-doc-danger:hover{background:var(--dst-clay-bg);color:var(--dst-clay);border-color:var(--dst-clay)}
.dst-doc-purge{display:inline-flex}
/* The summary verb shows once: "Delete permanently" when shut, "Cancel" when
   open — so the expanded panel's only "delete" is the confirm button. Cancel
   is neutral, not danger-clay. */
.dst-doc-purge[open] .dst-purge-shut{display:none}
.dst-doc-purge:not([open]) .dst-purge-open{display:none}
.dst-doc-purge[open]>summary{color:var(--dst-muted);border-color:var(--dst-line)}
.dst-doc-purge[open]>summary:hover{background:#F3F1EA;color:var(--dst-ink)}
/* F-130-B Resolution Card — the operator-readable lede when a mutation can't
   proceed (first use: purge 409/403). Calm left-accent, never red-alarm. */
.dst-resolution{background:var(--dst-clay-bg);border:1px solid var(--dst-clay-line);
  border-left:3px solid var(--dst-clay);border-radius:var(--dst-r-md);
  padding:16px 18px;margin:0 0 20px}
.dst-resolution-lede{font-size:15px;color:var(--dst-ink);font-weight:500;margin:0 0 10px}
.dst-resolution-act{font-size:14px;color:var(--dst-ink-soft);font-weight:300;margin:0}
.dst-resolution-axes{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}
.dst-resolution-axes dt{font-size:11px;font-weight:500;letter-spacing:1.4px;text-transform:uppercase;
  color:var(--dst-clay);padding-top:2px}
.dst-resolution-axes dd{font-size:13.5px;color:var(--dst-ink-soft);font-weight:300;margin:0}

/* ---- Documents at scale (F-141) — exact port of the validated mock ---- */
/* Search / filter bar */
.dst-docsearch{margin:8px 0 26px;position:relative}
.dst-docsearch input{width:100%;box-sizing:border-box;font-family:var(--dst-sans);
  font-size:15px;font-weight:300;color:var(--dst-ink);background:var(--dst-surface);
  border:1px solid var(--dst-line);border-radius:var(--dst-r-md);padding:13px 16px 13px 42px}
.dst-docsearch input::placeholder{color:var(--dst-faint)}
.dst-docsearch input:focus{outline:none;border-color:var(--dst-sage-line);box-shadow:0 0 0 3px var(--dst-sage-bg)}
.dst-docsearch::before{content:"";position:absolute;left:15px;top:50%;width:15px;height:15px;
  transform:translateY(-50%);border:1.5px solid var(--dst-faint);border-radius:50%}
.dst-docsearch::after{content:"";position:absolute;left:26px;top:calc(50% + 5px);width:7px;height:1.5px;
  background:var(--dst-faint);transform:rotate(45deg)}

/* Collapsible class group */
.dst-docgroup{border-top:1px solid var(--dst-line);padding:0}
.dst-docgroup:last-of-type{border-bottom:1px solid var(--dst-line)}
.dst-docgroup>summary{list-style:none;cursor:pointer;display:flex;align-items:baseline;gap:14px;
  padding:20px 4px;transition:.15s}
.dst-docgroup>summary::-webkit-details-marker{display:none}
.dst-docgroup>summary:hover{background:#FCFBF7}
.dst-docgroup-chev{flex-shrink:0;color:var(--dst-faint);font-size:13px;transition:.2s;width:12px}
.dst-docgroup[open] .dst-docgroup-chev{transform:rotate(90deg)}
.dst-docgroup-t{font-family:var(--dst-serif);font-size:19px;font-weight:400;color:var(--dst-ink)}
.dst-docgroup-n{font-size:13px;color:var(--dst-muted);font-weight:500}
.dst-docgroup-cap{flex:1;font-size:13px;color:var(--dst-faint);font-weight:300;text-align:right;
  max-width:46%}
.dst-docgroup-body{padding:0 0 14px}

/* Inline row card (the 409 lands AT the row, not the page top). Lives inside
   the row's own <li> grid, spanning every column. */
.dst-rowcard{grid-column:1/-1;margin:2px 0 10px;background:var(--dst-clay-bg);border:1px solid var(--dst-clay-line);
  border-left:3px solid var(--dst-clay);border-radius:var(--dst-r-md);padding:13px 16px}
.dst-rowcard-lede{font-size:14px;color:var(--dst-ink);font-weight:500;margin:0 0 6px}
.dst-rowcard-act{font-size:13px;color:var(--dst-ink-soft);font-weight:300;margin:0}

/* Class tag shown on flat search results (so you still know which of the three) */
.dst-doc-class{font-size:10.5px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase;
  color:var(--dst-muted)}

/* Deep-link arrival — a brief sage wash on the row, both for the server-set
   highlight (?doc=) and the URL-fragment :target (no JS, CSP-clean). */
@keyframes dst-doc-arrive{0%{background:var(--dst-sage-bg)}100%{background:transparent}}
.dst-doc--flash,.dst-doc:target{animation:dst-doc-arrive 2.4s ease-out 1}

/* Failed-action note (S142, F-145 class) — a failed htmx write says so next
   to the element the operator acted on. Clay accent, never red-alarm. */
.dst-actionerr{font-size:13px;color:var(--dst-clay);font-weight:400;margin:8px 0 0;
  padding:8px 12px;background:var(--dst-clay-bg);border:1px solid var(--dst-clay-line);
  border-radius:var(--dst-r-md)}

/* Deadline Mark-complete — carries the date it actually happened (S142):
   a quiet inline date next to the verb, not a form ceremony. */
.dst-complete-form{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}
.dst-complete-when{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--dst-muted)}
.dst-complete-when input{font-family:var(--dst-sans);font-size:13px;color:var(--dst-ink);
  background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:8px;padding:6px 9px}

/* Documents entry cards — the three tcards are ENTRIES that open their class
   group, not stat tiles (S142 eyes-on: no bare numbers in boxes). */
a.dst-tcard{display:block;text-decoration:none;cursor:pointer;transition:.15s}
a.dst-tcard:hover{border-color:var(--dst-sage-line);background:#FCFBF7}
a.dst-tcard .dst-tcard-t{margin-top:0}
.dst-tcard-c{font-size:12px;color:var(--dst-faint);margin-top:10px;letter-spacing:.4px}

/* Row-action expanders (Rename / Discard / Delete) — a consistent open-state
   panel so an expanded form never scrambles the row layout (S142 eyes-on:
   rows with an open confirm ballooned differently per action). The open
   expander takes the full actions-cell width on its own line; the form is a
   quiet stacked panel. */
.dst-doc-acts details{display:inline-flex;flex-direction:column;align-items:flex-end}
.dst-doc-acts details[open]{flex-basis:100%}
.dst-doc-acts details>form{display:flex;flex-direction:column;align-items:stretch;gap:8px;
  margin-top:8px;padding:12px 14px;background:#FCFBF7;border:1px solid var(--dst-line);
  border-radius:var(--dst-r-md);width:100%;box-sizing:border-box;text-align:left}
.dst-doc-acts details>form input[type="text"]{font-family:var(--dst-sans);font-size:13.5px;color:var(--dst-ink);
  background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:8px;padding:8px 10px;
  width:100%;box-sizing:border-box}
.dst-doc-acts details>form .dst-doc-meta{white-space:normal;line-height:1.5}
.dst-doc-acts details>form button{align-self:flex-start}

/* ---- Setup-next (design day 2026-07-03): day-0 + wizard + stage panels ---- */
/* vehicle picker on the navy card */
.dst-veh{display:flex;gap:12px;margin:18px 0 2px;flex-wrap:wrap}
.dst-veh-l{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:#9aa6bd;display:block;margin-top:16px}
.dst-veh input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.dst-veh label{flex:1;min-width:230px;cursor:pointer;border:1px solid #3c4a68;border-radius:12px;padding:14px 16px;transition:.15s;display:block}
.dst-veh label:hover{border-color:#6b86c4}
.dst-veh input:checked+label{background:rgba(255,255,255,.07);border-color:#8ba1cf}
.dst-veh-nm{font-size:15px;font-weight:500;color:#fff;display:flex;align-items:center;gap:9px}
.dst-veh-nm .dst-veh-dot{width:8px;height:8px;border-radius:50%;border:1.5px solid #7c89a3;flex-shrink:0}
.dst-veh input:checked+label .dst-veh-dot{background:#F5F2EA;border-color:#F5F2EA}
.dst-veh-d{font-size:12.5px;color:#9aa6c0;font-weight:300;line-height:1.5;margin-top:5px}
/* honest in-preparation tile (RAIF, D-plan Q1): never looks clickable */
.dst-veh-soon{flex:1;min-width:230px;border:1px dashed #3c4a68;border-radius:12px;padding:14px 16px;opacity:.75}
.dst-veh-soon .dst-veh-nm{color:#c2c9d8}
/* on-navy disclosure */
.dst-navy-more{margin-top:16px;border-top:1px solid #3c4a68;padding-top:14px}
.dst-navy-more>summary{list-style:none;cursor:pointer;font-size:13px;color:#9aa6c0;font-weight:400;display:inline-flex;align-items:center;gap:8px}
.dst-navy-more>summary::-webkit-details-marker{display:none}
.dst-navy-more>summary::before{content:"\25B8";font-size:11px;transition:.2s;color:#7c89a3}
.dst-navy-more[open]>summary::before{transform:rotate(90deg)}
.dst-navy-more>summary:hover{color:#E7EAF2}
.dst-navy-more ul{margin:12px 0 2px;padding:0 0 0 2px;list-style:none}
.dst-navy-more li{font-size:13.5px;color:#C2C9D8;font-weight:300;line-height:1.6;padding:5px 0 5px 20px;position:relative}
.dst-navy-more li::before{content:"";position:absolute;left:2px;top:14px;width:8px;height:1px;background:#5a6b8c}
.dst-navy-more li b{font-weight:500;color:#E7EAF2}
/* spine preview / done / active stage chassis */
.dst-spine{border:1px solid var(--dst-line);border-radius:13px;overflow:hidden;background:var(--dst-surface)}
.dst-spine-step{display:flex;align-items:baseline;gap:16px;padding:16px 20px;border-bottom:1px solid var(--dst-line)}
.dst-spine-step:last-child{border-bottom:none}
.dst-spine-n{font-family:var(--dst-serif);font-size:15px;color:var(--dst-faint);width:18px;flex-shrink:0;text-align:right}
.dst-spine-body{flex:1;min-width:0}
.dst-spine-nm{font-size:15px;font-weight:500;color:var(--dst-ink-soft)}
.dst-spine-d{font-size:13.5px;color:var(--dst-muted);font-weight:300;line-height:1.55;margin-top:2px;max-width:560px}
.dst-spine-note{font-size:12px;color:var(--dst-faint);white-space:nowrap;flex-shrink:0}
.dst-stage-done{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:13px;padding:16px 20px;display:flex;align-items:center;gap:14px;margin-bottom:12px}
.dst-stage-done .dst-spine-n{align-self:center}
.dst-stage-done-nm{font-size:15px;color:var(--dst-ink);font-weight:500}
.dst-stage-done-nm .dst-stage-done-sum{font-weight:300;color:var(--dst-ink-soft)}
.dst-stage-done-meta{font-size:12.5px;color:var(--dst-muted);font-weight:300;margin-top:2px}
.dst-stage-done-meta .dst-stage-warn{color:var(--dst-amber);font-weight:400}
.dst-stage-active{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:16px;box-shadow:0 1px 2px rgba(21,34,60,.03),0 6px 18px rgba(21,34,60,.035);padding:24px 26px;margin-bottom:12px}
.dst-stage-kick{font-size:11px;font-weight:500;letter-spacing:1.6px;text-transform:uppercase;color:var(--dst-amber)}
.dst-stage-h{font-family:var(--dst-serif);font-weight:400;color:var(--dst-ink);font-size:20px;margin:8px 0 6px}
.dst-stage-cap{font-size:13.5px;color:var(--dst-muted);font-weight:300;max-width:560px;line-height:1.55}
.dst-stage-foot{display:flex;align-items:center;gap:14px;margin-top:22px;flex-wrap:wrap}
/* stage form fields (two-column) */
.dst-sf-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;margin-top:20px}
.dst-sf{display:flex;flex-direction:column;gap:5px}
.dst-sf-l{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--dst-faint)}
.dst-sf-l .dst-sf-opt{text-transform:none;letter-spacing:0;color:var(--dst-faint);font-weight:300}
.dst-sf-i{font-family:var(--dst-sans);font-size:14.5px;color:var(--dst-ink);width:100%;padding:10px 12px;border:1px solid var(--dst-line);border-radius:9px;background:#FCFBF8}
.dst-sf-i::placeholder{color:var(--dst-faint);font-weight:300}
.dst-sf-i:focus{outline:none;border-color:var(--dst-navy);background:#fff}
.dst-sf-i[disabled]{color:var(--dst-muted);background:#F5F3EC;cursor:not-allowed}
.dst-sf-note{font-size:12px;color:var(--dst-muted);font-weight:300;margin-top:3px;line-height:1.45}
.dst-sf-flag{display:inline-flex;align-items:center;font-size:10.5px;font-weight:500;letter-spacing:.6px;text-transform:uppercase;border-radius:10px;padding:1px 8px;margin-left:8px;vertical-align:2px}
.dst-sf-flag--confirm{background:var(--dst-amber-bg);border:1px solid var(--dst-amber-line);color:var(--dst-amber)}
.dst-sf-flag--ok{background:var(--dst-sage-bg);border:1px solid var(--dst-sage-line);color:var(--dst-sage)}
/* role tile picker (parties stage) */
.dst-role-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}
.dst-role-grid input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.dst-role-grid label{cursor:pointer;border:1px solid var(--dst-line);border-radius:11px;background:#FCFBF8;padding:12px 14px;transition:.15s;display:block}
.dst-role-grid label:hover{border-color:var(--dst-navy);background:#fff}
.dst-role-grid input:checked+label{border-color:var(--dst-navy);background:var(--dst-navy-bg);box-shadow:inset 0 0 0 1px var(--dst-navy)}
.dst-role-nm{font-size:13.5px;font-weight:500;color:var(--dst-ink);display:block}
.dst-role-d{font-size:11.5px;color:var(--dst-muted);font-weight:300;margin-top:2px;line-height:1.4;display:block}
.dst-role-more{margin-top:10px}
.dst-role-more summary{cursor:pointer;font-size:12.5px;color:var(--dst-muted);font-weight:300;padding:4px 0}
.dst-role-more summary:hover{color:var(--dst-navy)}
.dst-role-more[open] summary{color:var(--dst-ink)}
.dst-role-more .dst-role-grid{margin-top:10px}
@media(max-width:680px){.dst-sf-grid{grid-template-columns:1fr}.dst-role-grid{grid-template-columns:1fr 1fr}}

/* ── Compliance pane (S143, compliance-v0.1 mock port) ─────────────────── */
.dst-cprow{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:13px;
  box-shadow:var(--dst-shadow);padding:15px 18px;display:flex;align-items:center;gap:14px;margin:0 4px 10px}
.dst-cprow--needsyou{border-left:3px solid var(--dst-amber)}
.dst-cprow-body{flex:1;min-width:0}
.dst-cprow-nm{font-size:14.5px;color:var(--dst-ink);font-weight:400}
.dst-cprow-meta{font-size:12.5px;color:var(--dst-muted);font-weight:300;margin-top:2px}
.dst-cprow-warn{font-size:12.5px;color:var(--dst-amber);margin-top:5px}
.dst-cprow-right{flex-shrink:0}
.dst-pill--slate{background:var(--dst-slate-bg);color:var(--dst-slate);border:1px solid var(--dst-line-cool)}
.dst-cpbasket>summary,.dst-cpauthor>summary,.dst-cpreg>summary{list-style:none;cursor:pointer}
.dst-cpbasket>summary::-webkit-details-marker,.dst-cpauthor>summary::-webkit-details-marker,
.dst-cpreg>summary::-webkit-details-marker{display:none}
.dst-cpbasket[open]>summary .dst-btn,.dst-cpauthor[open]>summary .dst-btn,
.dst-cpreg[open]>summary .dst-btn{background:#F3F1EA;color:var(--dst-ink)}
.dst-cpbasket-group{margin:14px 8px 0}
.dst-cpbasket-h{font-family:var(--dst-serif);font-weight:400;font-size:15.5px;color:var(--dst-ink);margin:14px 0 6px}
.dst-cpbasket-list{list-style:none;margin:0;padding:0}
.dst-cpbasket-list li{font-size:13.5px;padding:5px 0;border-bottom:1px solid var(--dst-line)}
.dst-cpbasket-list li:last-child{border-bottom:none}
.dst-cpform{margin:8px 8px 18px;padding:16px 18px;background:var(--dst-surface);
  border:1px solid var(--dst-line);border-radius:13px;display:flex;flex-direction:column;gap:12px;max-width:640px}
.dst-cpreg-body{margin:8px 8px 18px}
.dst-cpreg-list{list-style:none;margin:0 0 8px;padding:0}
.dst-cpreg-list li{font-size:13.5px;padding:6px 2px;border-bottom:1px solid var(--dst-line)}
.dst-cpreg-list li:last-child{border-bottom:none}
.dst-cpreg-date{color:var(--dst-muted);font-size:12.5px;margin-right:8px;white-space:nowrap}

/* ── Entities pane (S145) — the structure identity card ──────────────── */
.dst-idcard{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:14px;box-shadow:var(--dst-shadow);padding:26px 28px;margin-bottom:14px}
.dst-idcard-nm{font-family:var(--dst-serif);font-weight:400;font-size:21px;color:var(--dst-ink)}
.dst-idcard-sub{font-size:13px;color:var(--dst-muted);font-weight:300;margin-top:3px}
.dst-idcard-kv{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:20px}
.dst-idcard-k{font-size:11.5px;letter-spacing:1.2px;text-transform:uppercase;color:var(--dst-faint)}
.dst-idcard-v{font-size:14.5px;color:var(--dst-ink);margin-top:3px}
.dst-idcard-foot{font-size:13px;color:var(--dst-muted);font-weight:300;margin-top:20px;padding-top:14px;border-top:1px solid var(--dst-line)}
.dst-idcard-foot a{color:var(--dst-sage);text-decoration:none}
@media(max-width:640px){.dst-idcard-kv{grid-template-columns:1fr 1fr}}
.dst-idcard-line{font-size:14px;color:var(--dst-ink-soft);font-weight:300;margin-top:14px}
.dst-record-form .dst-field--wide{grid-column:1 / -1}
/* Add-an-investor conditional middle (S145): the individual branch shows only
   when the type select says individual; corporate/trust/foundation share the
   registration branch. Pure CSS :has() — no script, CSP-clean. */
.dst-record-form .dst-when-individual{display:none}
.dst-record-form:has(select[name="entity_type"] option[value="individual"]:checked) .dst-when-individual{display:flex}
.dst-record-form:has(select[name="entity_type"] option[value="individual"]:checked) .dst-when-corporate{display:none}
textarea.dst-field-i{min-height:76px;resize:vertical;font-family:var(--dst-sans)}
.dst-cpform .dst-field-i{width:100%}

/* ---- standing watch (S152 slice 3 — from work-watch-aml-v0.1 mock) ---- */
.dst-watch-pill{margin:0 0 14px}
.sla{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:26px 4px 0}
.sla-tile{background:var(--dst-slate-bg);border-radius:12px;padding:16px 18px}
.sla-n{font-family:var(--dst-serif);font-size:23px;color:var(--dst-ink)}
.sla-l{font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--dst-muted);margin-top:3px}
.reg{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:13px;
  box-shadow:var(--dst-shadow);padding:14px 18px;display:flex;align-items:center;gap:14px;margin-bottom:10px}
.reg--needsyou{border-left:3px solid var(--dst-amber)}
.reg-body{flex:1;min-width:0}
.reg-nm{font-size:14.5px;color:var(--dst-ink);font-weight:400}
.reg-meta{font-size:12.5px;color:var(--dst-muted);font-weight:300;margin-top:2px}
.reg-warn{font-size:12.5px;color:var(--dst-amber);margin-top:5px}
.reg-right{flex-shrink:0}
.reg-tick{width:17px;height:17px;flex-shrink:0}
@media(max-width:680px){.sla{grid-template-columns:1fr}}

/* ---- console (S155 — from console-v0.2 mock: integrity rows + quiet log) ---- */
.chk{background:var(--dst-surface);border:1px solid var(--dst-line);border-radius:13px;
  box-shadow:var(--dst-shadow);padding:14px 18px;display:flex;align-items:center;gap:14px;margin-bottom:10px}
.chk--needsyou{border-left:3px solid var(--dst-amber)}
.chk--feed{box-shadow:none;padding:10px 16px;margin-bottom:8px}
.chk-body{flex:1;min-width:0}
.chk-nm{font-size:14.5px;color:var(--dst-ink);font-weight:400}
.chk-meta{font-size:12.5px;color:var(--dst-muted);font-weight:300;margin-top:2px}
.chk-warn{font-size:12.5px;color:var(--dst-amber);margin-top:5px}
.chk-tick{width:17px;height:17px;flex-shrink:0}
.log{border-left:2px solid var(--dst-line-cool);margin:6px 4px 0 10px;padding-left:22px}
.log-row{position:relative;padding:8px 0}
.log-row::before{content:'';position:absolute;left:-27px;top:16px;width:8px;height:8px;border-radius:50%;
  background:var(--dst-surface);border:2px solid var(--dst-slate)}
.log-what{font-size:14px;color:var(--dst-ink-soft)}
.log-meta{font-size:12.5px;color:var(--dst-muted);font-weight:300;margin-top:1px}
.dst-console-filters{display:flex;gap:16px;margin:0 4px 14px}
.dst-console-filters .dst-field-i{min-width:180px}

/* ---- risk review expander (S155 walk — read before the act) ---- */
.dst-risk-review{position:relative;text-align:right}
.dst-risk-review summary{list-style:none;cursor:pointer;display:inline-block}
.dst-risk-review summary::-webkit-details-marker{display:none}
.dst-risk-review .dst-cpform{margin-top:8px;min-width:300px;max-width:420px;text-align:left;
  display:flex;flex-direction:column;gap:8px}

/* ---- sign-in + sign-out (F-169, S156) ---- */
.dst-login{display:flex;flex-direction:column;align-items:center;padding-top:11vh}
.dst-login-mark{font-size:22px;margin-bottom:34px}
.dst-login-card{background:#fff;border:1px solid var(--dst-line);border-radius:14px;
  box-shadow:var(--dst-shadow);padding:36px 40px 40px;width:100%;max-width:420px}
.dst-login-form{display:flex;flex-direction:column;gap:18px;margin-top:24px}
.dst-login-field input{width:100%}
.dst-login-btn{margin-top:6px;width:100%}
.dst-login-err{margin-top:16px;font-size:14px;color:#8a4b2d;background:#FBF3EC;
  border:1px solid #EAD9C9;border-radius:10px;padding:11px 14px}
.dst-signout-form{display:inline;margin:0}
.dst-signout{font-family:var(--dst-sans);font-size:13px;color:var(--dst-faint);
  background:none;border:none;padding:0;margin-left:14px;cursor:pointer}
.dst-signout:hover{color:var(--dst-ink);text-decoration:underline}

/* ── S170 (F-180 slice 2): the risk matrix — likelihood × impact counts.
   The same numbers the generated report freezes; flat like stat tiles
   (depth encodes "needs you", and a summary grid doesn't). ── */
.dst-riskmatrix{margin:8px 8px 18px;border-collapse:collapse;font-family:var(--dst-sans);font-size:13px}
.dst-riskmatrix th,.dst-riskmatrix td{border:1px solid var(--dst-hair);padding:8px 14px;text-align:center;color:var(--dst-ink)}
.dst-riskmatrix th{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--dst-faint);font-weight:600}
.dst-riskmatrix td.dst-riskmatrix-hot{background:#F7EAE4}
.dst-riskmatrix td.dst-riskmatrix-zero{color:var(--dst-faint)}

/* ── S171 (F-180 slice 3): the risk-report variant reveal — CSSOM-only
   (the S160 CSP idiom, zero JS on the form). The "Which risk report?"
   field shows only while "Risk report" is the picked kind; a browser
   without :has() keeps it visible — fail-open, because a hidden field
   would make the annual unreachable there. ── */
.dst-generate-form:has(select[name="report_kind"] option:checked:not([value="RISK"])) .dst-risk-variant{display:none}
