/* ===== Design tokens (shared by the app shell and the case workspace), light and dark. Refreshed 2026-10-03 for the
   modern theme (dashboard-theme.css): a cool neutral ground, one royal-blue brand colour for actions and selection,
   and the status colours (red blocked, amber warning, green cleared) kept for status only. --teal is the green "cleared"
   colour (the name is kept so every rule that uses it still reads). Fonts are system stacks: the CSP (default-src
   'self') allows no font host. --ink3 is about 3:1 on --paper: borders, input outlines and decoration only, never text
   people must read. ===== */
:root{color-scheme:light;
  --bg:#f4f6f9;--paper:#fff;--ink:#0f1b2d;--ink2:#4a586c;--ink3:#8592a3;--line:#dbe1e8;--line2:#ebeff3;
  --fill:#f7f8fa;--sel:#edf1fd;--ink-btn:#0f1b2d;--on-ink:#fff;
  --brand:#2f50c8;--brand-hover:#2643ad;--brandbg:#edf1fd;--on-brand:#fff;
  --red:#b9302a;--redbg:#fdeceb;--amber:#8f5600;--amberbg:#fff3df;--teal:#0f7a55;--tealbg:#e2f5ec;--focus:#2f50c8;--blue:#2f50c8;--bluebg:#edf1fd;
  --shadow-1:0 1px 2px rgba(15,27,45,.06),0 1px 1px rgba(15,27,45,.03);
  --shadow-2:0 2px 4px rgba(15,27,45,.04),0 8px 24px -8px rgba(15,27,45,.12);
  --shadow-3:0 12px 40px -12px rgba(15,27,45,.28),0 4px 10px rgba(15,27,45,.06);
  --glow:linear-gradient(180deg,#e8edfb 0,rgba(244,246,249,0) 360px);
  --sans:"IBM Plex Sans","Inter","Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;
  --display:"IBM Plex Sans","Inter Display","Inter","Segoe UI Variable Display","Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"Cascadia Mono","Segoe UI Mono",Consolas,"SF Mono",Menlo,monospace}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;
  --bg:#0b111c;--paper:#121a28;--ink:#e7ecf3;--ink2:#a8b3c3;--ink3:#6c798d;--line:#263247;--line2:#1b2536;
  --fill:#162030;--sel:#1b2747;--ink-btn:#e7ecf3;--on-ink:#0b111c;
  --brand:#8fa8ff;--brand-hover:#a9bcff;--brandbg:#1b2747;--on-brand:#0b111c;
  --red:#ff8b82;--redbg:#3a1c1c;--amber:#f0bb5a;--amberbg:#33270f;--teal:#5ccf9f;--tealbg:#12322a;--focus:#8fa8ff;--blue:#8fa8ff;--bluebg:#1b2747;
  --shadow-1:0 1px 2px rgba(0,0,0,.4);--shadow-2:0 2px 4px rgba(0,0,0,.3),0 8px 24px -8px rgba(0,0,0,.5);--shadow-3:0 12px 40px -12px rgba(0,0,0,.7),0 4px 10px rgba(0,0,0,.4);
  --glow:linear-gradient(180deg,#121d38 0,rgba(11,17,28,0) 360px)}}
:root[data-theme="dark"]{color-scheme:dark;
  --bg:#0b111c;--paper:#121a28;--ink:#e7ecf3;--ink2:#a8b3c3;--ink3:#6c798d;--line:#263247;--line2:#1b2536;
  --fill:#162030;--sel:#1b2747;--ink-btn:#e7ecf3;--on-ink:#0b111c;
  --brand:#8fa8ff;--brand-hover:#a9bcff;--brandbg:#1b2747;--on-brand:#0b111c;
  --red:#ff8b82;--redbg:#3a1c1c;--amber:#f0bb5a;--amberbg:#33270f;--teal:#5ccf9f;--tealbg:#12322a;--focus:#8fa8ff;--blue:#8fa8ff;--bluebg:#1b2747;
  --shadow-1:0 1px 2px rgba(0,0,0,.4);--shadow-2:0 2px 4px rgba(0,0,0,.3),0 8px 24px -8px rgba(0,0,0,.5);--shadow-3:0 12px 40px -12px rgba(0,0,0,.7),0 4px 10px rgba(0,0,0,.4);
  --glow:linear-gradient(180deg,#121d38 0,rgba(11,17,28,0) 360px)}
/* ===== End of design tokens ===== */
:root{font-family:var(--sans);color:var(--ink);background:var(--bg);font-synthesis:none;line-height:1.55;--navy:#12354b;--muted:var(--ink2);--accent:var(--teal)}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;font-size:15px}main{padding:26px 4% 70px;max-width:1560px;margin:auto}h2,h3,h4{line-height:1.3;letter-spacing:-.02em}h2{font-size:23px;margin:0 0 12px}h3{font-size:18px;margin:24px 0 10px}h4{font-size:16px;margin:0 0 8px}p{margin:10px 0}a{color:#075e87;text-underline-offset:3px}.workspace-intro h2{font-size:clamp(23px,2.4vw,31px);margin:3px 0 8px}.eyebrow{font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.13em;color:var(--accent)}.muted,small,.field-help{color:var(--muted)}.field-help,small{font-size:13px}.field-help{margin:6px 0 12px}.banner{padding:10px 14px;background:#e6edf2;border:1px solid #d2dfe8;border-radius:7px;font-size:13px}.help-panel{background:#fff;border:1px solid var(--line);border-radius:9px;padding:14px 18px}.help-panel>summary{color:var(--navy)}.help-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:30px;padding:2px 0 8px;font-size:14px}.help-grid h3{font-size:16px}.help-grid ol{padding-left:20px}.help-grid li{padding:0 0 10px}.help-grid dt{font-weight:650}.help-grid dd{margin:0 0 10px;color:var(--muted)}#status{position:sticky;top:8px;z-index:5;min-height:28px;margin:12px 0;padding:8px 12px;border-left:3px solid #4e7a8f;background:#ebf1f5;font-size:14px;box-shadow:0 2px 8px #12354b1f}#status:empty{display:none}#status.error{border-color:#ac332e;background:#fff1ef}#identity{font-size:13px;margin:18px 0 12px}article{background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:0 2px 5px #12354b04}article{padding:28px;min-width:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #b9c9d4;border-radius:6px;background:#f5f8fa;color:var(--navy);padding:9px 13px;min-height:40px;margin:4px 6px 4px 0;font-weight:600;font-size:14px;line-height:1.4}button:hover:not(:disabled){background:#e7eef3;border-color:#7695a8}button.primary{background:var(--navy);border-color:var(--navy);color:#fff}button.primary:hover:not(:disabled){background:#20516b}button.secondary{background:#fff}button:disabled{opacity:.55;cursor:not-allowed}label{display:block;margin:12px 0;font-size:13px;font-weight:600}input,select,textarea{display:block;margin-top:6px;width:100%;padding:10px;border:1px solid #a9bdcb;border-radius:5px;color:#20364a;background:#fff;font-weight:400;font-size:14px;min-height:42px}input[type=checkbox],input[type=radio]{display:inline-block;min-height:0;width:auto;margin-right:7px}input[type=file]{padding:8px;font-size:13px}input::file-selector-button{border:0;border-radius:4px;background:#e8eff4;padding:6px 9px;margin-right:8px;color:var(--navy)}textarea{min-height:88px;resize:vertical}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #087ba5;outline-offset:3px}article:focus{outline:0}article:focus-visible{outline:3px solid #087ba5;outline-offset:3px}.skip-link{position:absolute;top:-100px;left:12px;background:white;padding:12px;z-index:20}.skip-link:focus{top:12px}.blocked,.error{color:#a32e27}.ready{color:#176044}.callout{padding:15px 18px;margin:16px 0;background:#fff7e8;border:1px solid #e8d7b1;border-radius:7px}.callout h3{margin-top:0}.callout p:last-child{margin-bottom:0}.decision-form{background:#f5f8fa;border-radius:6px;padding:16px;margin-top:12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.form-message{font-size:13px;margin:8px 0;min-height:1em}.form-message.error{padding:9px;border-left:3px solid #a32e27;background:#fff0ed}.source-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding:10px 0;font-size:13px;overflow-wrap:anywhere}.empty-state{padding:38px 20px;max-width:700px;margin:auto}.empty-state h2{font-size:27px}.empty-state p{color:var(--muted)}.start-steps{padding-left:23px;margin:25px 0;color:var(--navy)}.start-steps li{padding:7px 0}details{margin:14px 0}summary{cursor:pointer;font-weight:600;padding:3px 0;line-height:1.5}summary:hover{color:#086759}blockquote{white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0;padding:14px 18px;background:#f4f7f9;border-left:3px solid #a8becb;font-size:14px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}td{text-align:left;padding:10px;border-bottom:1px solid var(--line);vertical-align:top}ul{padding-left:22px}li{margin-bottom:5px}@media(max-width:1000px){.help-grid{grid-template-columns:1fr;gap:0}article{padding:20px}.form-grid{grid-template-columns:1fr}}@media(max-width:760px){main{padding:20px 5% 45px}article{padding:18px}.empty-state{padding:20px 2px}.empty-state h2{font-size:23px}.workspace-intro h2{font-size:25px}.source-row{display:block}.source-row button{margin-top:8px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.source-row strong{flex:1;min-width:0;overflow-wrap:anywhere}.field-help{overflow-wrap:anywhere}h2:focus-visible{outline:3px solid #087ba5;outline-offset:4px}#documents,#history{scroll-margin-top:24px}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}input::placeholder,textarea::placeholder{color:#5f7382;opacity:1}button.small{min-height:34px;padding:5px 10px;font-size:13px;margin:6px 0 0}.facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 18px;margin:12px 0;font-size:14px}.facts dt{color:var(--muted);font-weight:600}.facts dd{margin:0;overflow-wrap:anywhere}.callout h4{margin:0 0 6px;font-size:15px}.hash{display:inline-block;margin-left:8px;font-size:12px;background:#f1f4f6;padding:1px 6px;border-radius:4px;color:#3b4f60}.queue-list{padding-left:22px;margin:8px 0}.queue-list li{padding:8px 0;border-bottom:1px solid var(--line)}.queue-list label{margin:6px 0 0}.queue-list select,.queue-list input{max-width:420px}#help pre{background:#f4f7f9;padding:10px 12px;border-radius:5px;font-size:13px}#glossary dt{margin-top:8px}#glossary-search{max-width:360px}.help-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
@media(pointer:coarse){button,input,select{min-height:44px}button.small{min-height:44px}}@media(max-width:760px){.facts{grid-template-columns:1fr;gap:2px 0}.facts dd{margin-bottom:8px}}

#status .save-link{display:inline-block;margin-left:10px;font-weight:650}
.missing-list{padding-left:20px;margin:8px 0}.missing-list li{overflow-wrap:anywhere}

/* ===== Shared primitives on the tokens: colours only, so light mode looks as before and dark mode is legible. ===== */
body{background:var(--bg);color:var(--ink)}
article,.help-panel{background:var(--paper);border-color:var(--line)}
.help-panel>summary{color:var(--ink)}
.banner{background:var(--fill);border-color:var(--line);color:var(--ink)}
#status{background:var(--fill);color:var(--ink);border-left-color:var(--ink3)}
#status.error{background:var(--redbg);border-color:var(--red)}
/* --focus blue is 4.3:1 on the tinted fills, so link text takes the ink colour and the underline carries the blue. */
a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--focus);text-decoration-thickness:1.5px}
.eyebrow{color:var(--teal)}
.skip-link{background:var(--paper);color:var(--ink)}
button{background:var(--fill);border-color:var(--ink3);color:var(--ink)}
button:hover:not(:disabled){background:var(--sel);border-color:var(--ink2)}
button.secondary{background:var(--paper)}
button.primary{background:var(--ink-btn);border-color:var(--ink-btn);color:var(--on-ink)}
button.primary:hover:not(:disabled){background:var(--ink-btn);border-color:var(--ink-btn);opacity:.88}
input,select,textarea{background:var(--paper);color:var(--ink);border-color:var(--ink3)}
input::placeholder,textarea::placeholder{color:var(--ink2)}
input::file-selector-button{background:var(--sel);color:var(--ink)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,summary:focus-visible,article:focus-visible,h2:focus-visible{outline-color:var(--focus)}


.callout{background:var(--amberbg);border-color:var(--line);color:var(--ink)}



.blocked,.error{color:var(--red)}.ready{color:var(--teal)}

blockquote{background:var(--fill);border-left-color:var(--ink3);color:var(--ink)}

.form-message.error{background:var(--redbg);border-left-color:var(--red)}
.hash{background:var(--fill);color:var(--ink2)}
#help pre{background:var(--fill)}
.help-grid dd,.empty-state p{color:var(--ink2)}
.start-steps{color:var(--ink)}

/* ===== Case view (#detail): header, highlights, check line, progress track, tabs, checklist, item panel, sign-off.
   Tokens only, so light and dark both hold; system fonts (the CSP allows no font hosts). ===== */
#detail{min-width:0}
/* Focus targets clear the sticky status bar. */
#detail h2,#signoff-heading,.panel h3,#documents-heading,#deal-heading,#activity-heading{scroll-margin-top:72px}
.casehead{display:flex;gap:12px 18px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap}
.casehead-main{flex:1 1 420px;min-width:0}
.casehead-actions{flex:none;display:flex;gap:8px;flex-wrap:wrap}
.casehead-actions button{margin:0}
.titlerow{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap}
#detail .titlerow h2{margin:0;font-size:26px;letter-spacing:-.02em;overflow-wrap:anywhere;min-width:0}
.titlerow .status-pill{font-size:13px;padding:4px 12px}
.head-refresh{margin:0 0 0 auto!important;font-size:13px}
.hl{display:flex;flex-wrap:wrap;gap:12px 28px;margin:12px 0 4px;padding:0}
.hl-i{min-width:0}
.hl dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);font-weight:600;margin-bottom:2px}
.hl dd{margin:0;font-size:16px;font-weight:650;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.hl-wide dd{white-space:normal;overflow-wrap:anywhere}
.hl-sub{font-size:13px;font-weight:500;color:var(--ink2);margin-left:4px}
.hl-ns{font-size:14px;font-weight:500;color:var(--blue)}
.hl-link{align-self:flex-end}.hl-link dd{font-weight:400}
/* The check strip (Round 8, R3-01): one state and at most one action under the case header, on every page. */
.check-strip{margin:12px 0 0;padding:10px 16px;background:var(--paper);border:1px solid var(--line);border-radius:12px;font-size:14px;color:var(--ink)}
.strip-row{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap}
.strip-state{margin:0;flex:1 1 280px;min-width:0;overflow-wrap:anywhere}
.strip-state .spin{vertical-align:-1px;margin-right:8px}
.strip-label{font-weight:650}
.strip-detail{color:var(--ink2);font-size:13px}
.strip-actions{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap}
.strip-actions button{margin:0}.strip-actions button.linkbtn{font-size:13px}
.strip-stale{border-color:color-mix(in srgb,var(--amber) 45%,var(--line));background:var(--amberbg)}
.strip-signed{border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:var(--tealbg)}
.strip-ai-queued,.strip-ai-running,.strip-checking{border-color:color-mix(in srgb,var(--blue) 40%,var(--line));background:var(--bluebg)}
.strip-ic{display:inline-grid;vertical-align:-5px;margin-right:8px;place-items:center;width:22px;height:22px;border-radius:50%;border:2px solid currentColor;font-size:13px;font-weight:800;line-height:1}
.strip-ic-warn{color:var(--amber);background:var(--paper)}.strip-ic-ok{color:var(--teal);background:var(--paper)}
.strip-running{margin:8px 0 0;max-width:80ch;font-size:13px;color:var(--ink2)}.strip-running b{color:var(--ink)}
.strip-overtaken{margin:8px 0 0;max-width:80ch;font-size:13px;padding:6px 10px;border-left:3px solid var(--amber);background:var(--amberbg);color:var(--ink)}
.check-strip .field-help{margin:6px 0 0}.check-strip button.small{margin:8px 0 0}
.strip-result{display:flex;align-items:baseline;gap:4px 12px;flex-wrap:wrap;margin:10px 0 0;padding:8px 12px;border-radius:9px;background:var(--paper);border:1px solid var(--blue)}
.strip-result p{margin:0;flex:1 1 280px;max-width:80ch}.strip-result button{margin:0}
.strip-result-warn{background:var(--amberbg);border-color:var(--amber)}
.spin{width:12px;height:12px;border:2px solid var(--blue);border-right-color:transparent;border-radius:50%;display:inline-block;flex:none}
@media(prefers-reduced-motion:no-preference){.spin{animation:cr-spin .8s linear infinite}@keyframes cr-spin{to{transform:rotate(360deg)}}}
#detail>.callout{margin:12px 0 0}
/* Progress track: five stages, done or not (no partial fill). */
.prog5{margin-top:16px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px 16px}
.prog5-t{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);font-weight:600;margin:0 0 10px}
.segs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.seg5{display:flex;flex-direction:column;gap:5px;min-width:0;margin:0}
.bar5{display:block;height:10px;border-radius:999px;background:var(--line2)}
.seg5.done .bar5{background:var(--teal)}
.seg5.cur .bar5{background:var(--redbg);box-shadow:inset 0 0 0 1.5px var(--red)}
.seg5.late .bar5{background:var(--amberbg);box-shadow:inset 0 0 0 1.5px var(--amber)}
.lab5{font-size:13px;font-weight:650;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seg5.done .lab5{color:var(--teal)}.seg5.cur .lab5{color:var(--ink)}
.seg5.done .lab5::before{content:"✓ "}
.sub5{font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.seg5.cur .sub5{color:var(--red);font-weight:650}
.seg5.late .sub5{color:var(--amber);font-weight:650}
.pace{display:flex;gap:6px 16px;align-items:center;flex-wrap:wrap;margin-top:10px;padding-top:8px;border-top:1px solid var(--line2)}
.pace-text{margin:0;font-size:13px;color:var(--ink2);flex:1 1 260px}
.pace-label{font-weight:650;color:var(--ink)}
.pace.late .pace-text{color:var(--amber);font-weight:600}
.spark{display:block;width:100%;max-width:300px;height:auto;flex:0 1 300px}
.spark-axis{stroke:var(--line);stroke-width:1}
.spark-line{fill:none;stroke:var(--teal);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.spark-area{fill:var(--teal);opacity:.12}
.spark-proj{stroke:var(--ink3);stroke-width:1.5;stroke-dasharray:3 4}
.spark-dot{fill:var(--teal)}
.spark.late .spark-line{stroke:var(--amber)}.spark.late .spark-area,.spark.late .spark-dot{fill:var(--amber)}
/* On a phone the five stages stay side by side and their names wrap (Round 8, R8-16), so the bar stays a few lines tall. */
@media(max-width:640px){.segs{gap:4px}.lab5{white-space:normal;font-size:12px;line-height:1.25}.sub5{font-size:11px;line-height:1.25}}
/* Tabs and the body: the tab content, and the item panel beside it on wide screens, above it on narrow ones. */
.case-body{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin-top:4px;align-items:start}
.case-body.open{grid-template-columns:minmax(0,1fr) minmax(0,440px)}
.case-main{min-width:0}
.file-sub>section+section{margin-top:26px;padding-top:6px;border-top:1px solid var(--line2)}
.subnav{margin:0 0 14px}
/* Checklist: filter bar, chips, groups, items. */
.fbar{display:flex;justify-content:space-between;align-items:center;gap:10px 16px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px solid var(--line)}
.fbar-l,.fbar-r{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-width:0}
.fbar button{margin:0}
.fmeta{font-size:13px;color:var(--ink2)}
.chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
#detail .cchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:4px 11px 4px 9px;font-size:13px;color:var(--ink2);min-height:34px;font-weight:500}
.cchip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--gc,var(--ink3))}
.cchip b{color:var(--ink);font-variant-numeric:tabular-nums}
#detail .cchip[aria-pressed=true],#detail .cchip[aria-pressed=true]:hover:not(:disabled){background:var(--ink-btn);border-color:var(--ink-btn);color:var(--on-ink)}
.cchip[aria-pressed=true] b{color:var(--on-ink)}
.g-get{--gc:var(--red)}.g-ask{--gc:var(--blue)}.g-decide{--gc:var(--ink2)}.g-redecide{--gc:var(--amber)}.g-approver{--gc:var(--focus)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}
#detail .seg button{border:0;border-radius:0;background:var(--paper);color:var(--ink);padding:5px 10px;min-height:34px;font-size:13px;font-weight:500;margin:0}
#detail .seg button+button{border-left:1px solid var(--line)}
#detail .seg button[aria-pressed=true]{background:var(--ink-btn);color:var(--on-ink)}
.filternote{margin:14px 0 0;font-size:13px;color:var(--ink2)}
.filternote button.linkbtn{font-size:13px}
.group{margin-top:18px;scroll-margin-top:16px}
.group>h4.gh{margin:0 0 6px;font-size:12px}
#detail .ghead{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:1px solid transparent;padding:6px 10px 6px 6px;margin:0;border-radius:9px;font:600 12px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink2);min-height:40px}
#detail .ghead:hover:not(:disabled){background:var(--sel);color:var(--ink)}
#detail .ghead[aria-expanded=false]{background:var(--paper);border:1px dashed var(--line)}
.chev{display:inline-grid;place-items:center;flex:none;width:24px;height:24px;border-radius:7px;background:var(--paper);border:1px solid var(--line);color:var(--ink)}
.chev::before{content:"";width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.ghead[aria-expanded=false] .chev,details.disc:not([open])>summary .chev{transform:rotate(-90deg)}
@media(prefers-reduced-motion:no-preference){.chev{transition:transform .15s cubic-bezier(.23,1,.32,1)}}
.gdot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--gc,var(--ink3))}
.glabel{color:var(--ink);white-space:nowrap}
.gcount{font:650 12px/20px var(--sans);letter-spacing:0;text-transform:none;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:0 8px;font-variant-numeric:tabular-nums}
.ghint{margin-left:auto;text-transform:none;letter-spacing:0;font:400 13px/1.4 var(--sans);color:var(--ink2);text-align:right;min-width:0}
.ghead[aria-expanded=false] .ghint{color:var(--red);font-weight:600}
.items{background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden}
#detail .item{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 16px;border:0;border-top:1px solid var(--line2);border-radius:0;width:100%;text-align:left;background:none;margin:0;min-height:0;font-weight:400;color:var(--ink);line-height:1.45}
#detail .item:first-child{border-top:0}
#detail .item:hover:not(:disabled){background:var(--fill)}
#detail .item[aria-current=true]{background:var(--sel);box-shadow:inset 3px 0 var(--ink)}
#detail .item:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.sev{width:10px;height:10px;border-radius:50%;margin-top:6px;background:var(--gc,var(--red))}
.sev-get{--gc:var(--red)}.sev-ask{--gc:var(--blue)}.sev-decide{--gc:var(--ink2)}.sev-redecide{--gc:var(--amber)}.sev-approver{--gc:var(--focus)}.sev-done{--gc:var(--teal)}
.sev-warn{background:transparent;border:2px solid var(--amber)}
.item-text{min-width:0;overflow-wrap:anywhere}
.item .t{display:block;font-weight:600}
.item .f{display:block;font-size:13px;color:var(--ink2)}
.tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;margin:0}
.tag{font-size:11px;font-weight:650;border-radius:4px;padding:1px 6px;white-space:nowrap;border:1px solid transparent}
.tag-stale{color:var(--amber);background:var(--amberbg)}
.tag-added,.tag-doc{color:var(--ink2);border-color:var(--line)}
.tag-gap{color:var(--ink2);background:var(--fill)}
.tag-q{color:var(--blue);background:var(--bluebg)}
.card.nothing{background:var(--paper);border:1px solid var(--teal);border-radius:10px;padding:14px 18px;margin-top:16px}
.card.nothing h4{margin:0 0 4px}
/* One disclosure style: a chevron on a header with something under it. */
details.disc{margin:14px 0 0}
details.disc>summary{list-style:none;display:flex;align-items:center;gap:10px;cursor:pointer;padding:7px 10px 7px 6px;border-radius:9px;color:var(--ink);font-weight:650;font-size:14px}
details.disc>summary::-webkit-details-marker{display:none}
details.disc>summary:hover{background:var(--sel)}
.disc-body{padding-top:6px;min-width:0}
details.disc-section>summary{font:600 12px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em}
details.disc-sm>summary{font-size:13px;padding-block:4px}
details.disc-sm .chev{width:22px;height:22px;border-radius:6px}
details.disc-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:6px 14px;margin-top:10px}
details.disc-card .disc-body{padding-bottom:6px}
/* Full checklist table: stacked rows on narrow screens, never a sideways scroll. */
.tbl{background:var(--paper);border:1px solid var(--line);border-radius:10px;margin-top:14px;overflow:hidden}
.full-table{border-collapse:collapse;width:100%;font-size:14px}
.full-table th,.full-table td{text-align:left;vertical-align:top;padding:9px 14px;border-top:1px solid var(--line2);border-bottom:0;overflow-wrap:break-word}
/* break-word, not anywhere: anywhere lets the table squeeze a column below its longest word ("STAT/US", "Borro/wer";
   design pass, 2026-10-27). The requirement and evidence columns, which can hold a long file name, may still break inside one. */
.full-table th{white-space:nowrap}.full-table td.req,.full-table td.ev{overflow-wrap:anywhere}
.full-table th{font:600 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);border-top:0;background:var(--fill)}
.full-table tr.click{cursor:pointer}.full-table tr.click:hover td{background:var(--fill)}
.full-table tr[aria-current=true] td{background:var(--sel)}
.full-table tr:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.full-table td.ev{color:var(--ink2);font-size:13px}
.st{font-size:12px;font-weight:650}
.st-way{color:var(--red)}.st-ok{color:var(--teal)}.st-warn,.st-stale{color:var(--amber)}.st-na{color:var(--ink2)}.st-q{color:var(--blue)}
@media(max-width:640px){.full-table thead{display:none}.full-table tr{display:block;border-top:1px solid var(--line2);padding:6px 0}.full-table tbody tr:first-child{border-top:0}.full-table td{display:block;border-top:0;padding:2px 14px}}
/* The item panel. */
.panel{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:16px 18px;align-self:start;position:sticky;top:56px;max-height:calc(100vh - 72px);overflow:auto;min-width:0}
#detail .panel .x{float:right;background:none;border:0;font-size:20px;line-height:1;padding:4px 8px;margin:-4px -6px 0 8px;color:var(--ink2);min-height:36px}
.panel-item{min-width:0}
.panel-item:focus{outline:0}
.panel h3{font-size:19px;margin:0 0 8px;letter-spacing:-.01em;overflow-wrap:anywhere;scroll-margin-top:72px}
.panel h3:focus{outline:0}.panel h3:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.panel .kind{font-size:12px;color:var(--ink2);margin:0 0 6px}
.panel .tags{justify-content:flex-start;margin:0 0 8px}
.panel-item section{border-top:1px solid var(--line2);padding-top:12px;margin-top:14px}
.panel section>h4,.panel details.decision>summary{font:600 12px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink2);margin:0 0 8px}
.panel>section p,.panel-item>p{font-size:14px}
.why{background:var(--fill);border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin:10px 0;font-size:14px}
.why p{margin:6px 0 0}
.evidence-needed{color:var(--ink2)}
.gap-clearances{margin:12px 0}.gap-file{margin:8px 0;overflow-wrap:anywhere}.gap-entry{margin:6px 0 10px;padding-left:10px;border-left:2px solid var(--line,#ddd)}.gap-text{margin:2px 0;overflow-wrap:anywhere}.gap-cleared{margin:2px 0;font-size:14px}.gap-clear-form label{display:block;margin:6px 0}
.gap-list{padding-left:20px;margin:8px 0;font-size:14px}.gap-list li{overflow-wrap:anywhere}.gap-list li button.small{margin:4px 0 0 8px}
.gate-lines .blocker-list{margin:0 0 8px}
.answer-q{font-weight:650}
#detail .tri{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}
#detail .tri button{border:0;border-radius:0;margin:0;min-height:38px;background:var(--paper);color:var(--ink);padding:5px 16px;font-size:14px;font-weight:600}
#detail .tri button+button{border-left:1px solid var(--line)}
.decision-form{background:var(--fill);border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-top:6px}
.decision-form fieldset.evidence-fields{border:0;padding:0;margin:8px 0 0;min-width:0}
.decision-form fieldset.evidence-fields>legend{font-size:13px;font-weight:650;padding:0;margin:0 0 2px}
.approver-only{margin:6px 0 0}
.verified{font-size:12px;color:var(--teal);font-weight:650}
.hist{list-style:none;padding:0;margin:0;font-size:13px}
.hist li{padding:5px 0;margin:0;border-top:1px solid var(--line2);overflow-wrap:anywhere}
.hist li:first-child{border-top:0}
.evidence-fold h4{margin:12px 0 4px;font-size:13px}
.source-card{border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin:0 0 10px;background:var(--paper)}
.pane-h{display:flex;justify-content:space-between;align-items:center;gap:6px 8px;flex-wrap:wrap;margin-bottom:6px}
.pane-h strong{overflow-wrap:anywhere;min-width:0}
.pane-h .hash{margin-left:0;font-family:var(--mono)}
.hash.hash-ok{color:var(--teal);background:var(--tealbg)}
.cite-location{font:12px/1.4 var(--mono);color:var(--ink2);margin:8px 0 2px;overflow-wrap:anywhere}
.source-card blockquote{font:12.5px/1.6 var(--mono);margin:4px 0 8px;padding:10px 12px}
.paid-offer{border-top:1px solid var(--line2);padding-top:10px;margin-top:10px}
.callout .paid-offer{border-top-color:var(--line)}
.added-list{padding-left:20px;font-size:14px}.added-list li{overflow-wrap:anywhere;margin-bottom:10px}
@media(max-width:1060px){.case-body.open{grid-template-columns:minmax(0,1fr)}.case-body.open>.panel{order:-1;position:static;max-height:none}}
/* Pills (gate checks and source cards). */
.pill{display:inline-block;font:600 11px/1.45 var(--mono);letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:4px;border:1.3px solid currentColor;white-space:nowrap}
.pill-ok{color:var(--teal);background:var(--tealbg)}.pill-bad{color:var(--red);background:var(--redbg)}.pill-muted{color:var(--ink2);background:var(--fill)}
/* Gate checks, inside the sign-off brief. */
.gate-box{border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin:10px 0;background:var(--paper)}
.gate-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.gate-head h4{margin:0}
.checks{list-style:none;padding:0;margin:8px 0 0}
.chk{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:10px;padding:9px 0;margin:0;border-bottom:1px solid var(--line2);align-items:start}
.chk:last-child{border-bottom:0}
.chk .box{width:15px;height:15px;border-radius:3px;border:1.5px solid var(--ink3);margin-top:3px}
.chk-ok .box{background:var(--teal);border-color:var(--teal)}.chk-no .box{background:var(--redbg);border-color:var(--red)}
.chk-unknown .box{background:repeating-linear-gradient(135deg,var(--ink3) 0 2px,transparent 2px 5px)}
.chk-text{min-width:0;font-size:14px}.chk-text small{display:block;color:var(--ink2);font-size:12px}
.chk details{margin:4px 0 0}.chk summary{font-size:13px;font-weight:500}
.blocker-list{padding-left:18px;margin:4px 0;font-size:13px}.blocker-list li{overflow-wrap:anywhere}
.timeline{padding-left:20px;margin:8px 0}.timeline li{margin:0 0 6px;overflow-wrap:anywhere}
/* Sign-off: the verdict card, then the brief as disclosures. */
.verdict{background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--red);border-radius:10px;padding:16px 20px;display:flex;gap:12px 18px;justify-content:space-between;align-items:center;flex-wrap:wrap}
.verdict.ok{border-color:var(--teal);border-left-color:var(--teal)}
.verdict-text{flex:1 1 320px;min-width:0}
.verdict h3{margin:0;font-size:20px}
.verdict h3:focus{outline:0}.verdict h3:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.verdict p{margin:4px 0 0;color:var(--ink2);max-width:62ch}
.verdict-actions{display:flex;gap:8px;flex-wrap:wrap}.verdict-actions button{margin:0}
.signoff-note{margin-top:8px}
.brief{margin:14px 0 18px}
.brief-part .disc-body>p{margin:6px 0;font-size:14px;overflow-wrap:anywhere}
.brief-part .gate-box{margin:10px 0 4px}.brief-count{font-weight:650;margin:10px 0 4px}
.brief-list{list-style:none;padding:0;margin:6px 0 10px;font-size:14px}.brief-list li{margin:0 0 8px;padding:2px 0 2px 10px;border-left:3px solid var(--line);overflow-wrap:anywhere}.brief-list li p{margin:2px 0 0;font-size:13px}
.brief-list li.brief-waived{border-left-color:var(--amber);background:var(--amberbg)}.brief-list li.brief-stale{border-left-color:var(--red)}.brief-none{margin:4px 0 10px}.brief-none>summary{font-size:13px}
.brief-list button.linkbtn,.brief-part .linkbtn{font-size:14px}
.brief-links{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;padding-top:10px;margin:12px 0 0}.brief-links button.small{margin:0}
#downloads{margin-top:26px;padding-top:6px;border-top:1px solid var(--line2)}
#downloads button{margin-right:6px}
@media(max-width:600px){.choice-row{grid-template-columns:minmax(0,1fr)}.chk{grid-template-columns:16px minmax(0,1fr)}.chk>.pill{grid-column:2;justify-self:start}.hl{gap:10px 20px}.hl dd{font-size:15px}.ghint{display:none}.ghead[aria-expanded=false] .ghint{display:inline}#detail .item{grid-template-columns:12px minmax(0,1fr)}#detail .item .tags{grid-column:2;justify-content:flex-start}.panel{padding:14px}}
/* The decision form's choices. */
fieldset.choices{border:0;padding:0;margin:0 0 8px;min-width:0}
fieldset.choices legend{font-size:13px;font-weight:650;padding:0;margin:0 0 6px}
.choice-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:6px}
label.choice{display:flex;align-items:center;gap:6px;margin:0;padding:8px 8px;border:1px solid var(--ink3);border-radius:6px;background:var(--paper);font-size:14px;font-weight:500;cursor:pointer;min-height:42px}
label.choice input{margin:0;accent-color:var(--teal);min-height:0;width:auto}
label.choice:has(input:checked){border-color:var(--ink-btn);background:var(--ink-btn);color:var(--on-ink);font-weight:650}
label.choice:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.more-choices{margin:8px 0 0}.more-choices>summary{font-size:13px;font-weight:500}
.more-choices .choice-row{margin-top:6px}
.definition{min-height:1.5em;margin:4px 0 6px}
.form-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.risk-notes{margin-top:8px}
/* Withdraw from file: the reason form takes its own line under the document row. */
.withdraw-form{flex-basis:100%;border-left:3px solid var(--line);padding:4px 0 4px 12px}.withdraw-form button{margin-right:8px}
/* Document intake: drop zone, pickers and the queue of files waiting for a confirmed type. */
.drop-zone{border:2px dashed var(--line);border-radius:9px;padding:14px 16px;margin:12px 0;background:var(--fill)}.drop-zone.drag-over{border-color:var(--teal);background:var(--tealbg)}
.drop-title{margin:0 0 6px;font-weight:650}.drop-pickers{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:end}.drop-pickers label{flex:1 1 240px;min-width:0;margin:6px 0}.drop-pickers>button{margin:6px 0}.drop-pickers label.file-pick{flex:0 1 auto}
.skipped-note{overflow-wrap:anywhere}.queue-summary{font-weight:600;margin:12px 0 4px}.queue-tools{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:end}.queue-tools label{flex:1 1 260px;min-width:0;margin:6px 0}.queue-tools>button{margin:6px 0}
.queue-list{list-style:decimal}.queue-item{min-width:0}.queue-file{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}.queue-file strong{flex:1 1 220px;min-width:0;overflow-wrap:anywhere}.queue-file .muted{font-size:13px}.queue-file button.small{margin:0}
.queue-hint{font-size:13px;margin:6px 0 0}.queue-hint.suggested{color:var(--amber)}.queue-hint.untyped{color:var(--red)}.queue-hint.confirmed{color:var(--teal)}.queue-hint.pending{color:var(--muted);font-style:italic}
.page-quote{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;font-style:italic}.page-note{margin:6px 0}
.upload-ready{margin:14px 0 4px}
@media(max-width:600px){.drop-zone{padding:12px}.queue-list{padding-left:18px}.queue-list select,.queue-list input{max-width:none}}
.queue-path{min-width:0;overflow-wrap:anywhere}
.field-cell label{margin-bottom:4px}.field-note{display:block;margin:0 0 2px}.field-message{display:block;font-size:13px;margin:0 0 8px}.field-message.error{color:var(--red);font-weight:600}
fieldset.guarantors{border:1px solid var(--line);border-radius:7px;padding:8px 14px 2px;margin:12px 0;min-width:0}fieldset.guarantors legend{font-size:13px;font-weight:650;padding:0 4px}
.guarantor-count{font-size:13px;font-weight:600;margin:6px 0}.guarantor-list{list-style:none;padding:0;margin:6px 0}
.guarantor-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0;padding:4px 0;border-bottom:1px solid var(--line);font-size:14px}.guarantor-name{min-width:0;overflow-wrap:anywhere}.guarantor-list button.small{margin:0;flex-shrink:0}
fieldset.guarantors label.choice{display:inline-flex;margin:6px 0}.guarantor-add{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}.guarantor-add label{flex:1;min-width:200px;margin:8px 0}.guarantor-add button{margin:0 0 8px}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:0 12px;flex-wrap:wrap}.section-head h3{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}.section-head>button{margin:0 0 10px}
#documents-heading:focus{outline:0}#documents-heading:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
/* Optional waiver details: shown only while Waive is chosen, framed like the guarantor list. */
fieldset.waiver-details{border:1px solid var(--line);border-radius:7px;padding:8px 14px 2px;margin:12px 0;min-width:0}fieldset.waiver-details legend{font-size:13px;font-weight:650;padding:0 4px}
/* Folds whose summary is plain text (the decision under an upload or a question, the waiver's risk notes): the same
   chevron, drawn in CSS, pointing right while closed and down while open. */
details.decision>summary::before,details.risk-notes>summary::before{content:"";flex:none;width:7px;height:7px;margin:0 8px 0 4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg)}
details.decision[open]>summary::before,details.risk-notes[open]>summary::before{transform:rotate(45deg)}
.brief-part button.linkbtn,.brief-list button.linkbtn{margin:0}
/* The sign-off card's review-minutes field sits beside the sign button, label on top. */
.verdict-actions{align-items:flex-end}.review-minutes{margin:0}.review-minutes label{margin:0}.review-minutes input{width:9em;margin-top:4px}
/* The case's hub and step pages (2026-10-08 redesign): the rail beside the page, one page at a time, the compact header
   on step pages, and the overview's cards. Structure only; the theme gives them their look. */
.case-body{grid-template-columns:230px minmax(0,1fr)}
.case-body.open{grid-template-columns:230px minmax(0,1fr) minmax(0,420px)}
/* The overview is its own cards; the step pages sit in the case's one card. */
#detail .case-body[data-page=overview]>.case-main{background:none;border:0;box-shadow:none;padding:0}
.case-rail{display:flex;flex-direction:column;gap:2px;position:sticky;top:80px;align-self:start;min-width:0}
.rail-link{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 12px;border-radius:8px;color:var(--ink);text-decoration:none;border:1px solid transparent}
.rail-link:hover{background:var(--fill)}
.rail-link[aria-current=page]{background:var(--paper);border-color:var(--line);font-weight:650}
.rail-num{flex:none;width:24px;height:24px;border-radius:12px;border:1px solid var(--ink3);display:inline-grid;place-items:center;font:12px var(--mono)}
.rail-link[aria-current=page] .rail-num{background:var(--ink-btn);border-color:var(--ink-btn);color:var(--on-ink)}
.rail-label{flex:1 1 auto;min-width:0}
.rail-badge{font:12px var(--mono);color:var(--ink2)}
.rail-sub{padding-left:46px}
.rail-head{font:600 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);padding:14px 12px 4px}
.rail-sep{height:1px;background:var(--line);margin:10px 12px}
.casehead-compact{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;padding:12px 16px;background:var(--paper);border:1px solid var(--line);border-radius:12px}
.compact-title{font-weight:650;color:var(--ink);text-decoration:none}.compact-title:hover{text-decoration:underline}
.compact-facts{font-size:13px;color:var(--ink2);overflow-wrap:anywhere}
.page-head{margin:8px 0 16px}.page-head h2{margin:2px 0 0;font-size:24px}.page-head h2:focus{outline:0}.page-head h2:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.page-intro{margin:6px 0 0;color:var(--ink2);font-size:14px;max-width:72ch}
.hub-card{border:1px solid var(--line);border-radius:12px;background:var(--paper);min-width:0}
.hub-card h3{margin:0;font-size:16px}
.hub-card-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:16px 20px;border-bottom:1px solid var(--line)}
.unseen-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px 20px;border-bottom:1px solid var(--line2)}
.unseen-row:last-child{border-bottom:0}
.unseen-n{font:500 14px var(--mono);width:28px;color:var(--amber)}
.unseen-text{flex:1 1 320px;min-width:0}.unseen-text p{margin:0}
.unseen-title{font-weight:550;font-size:14px}.unseen-detail{font-size:13px;color:var(--ink2);overflow-wrap:anywhere}
.hub-row{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start;margin:20px 0}
.next-card{flex:3 1 400px;min-width:0;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:10px;background:#16191d;color:#f4f4f0}
.next-card h3{margin:0;font-size:22px;line-height:1.25;color:#f4f4f0}
.next-kicker{margin:0;font:600 12px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#c9cdd4}
.next-text{margin:0;font-size:15px;line-height:1.55;color:#dadde2;max-width:600px}
.next-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
#detail .next-card button{min-height:44px;padding:0 18px;border-radius:8px;background:#fff;color:#16191d;border:1px solid #fff;font-weight:650}
#detail .next-card button:focus-visible{outline:3px solid #8fa8ff;outline-offset:2px}
.questions{flex:2 1 300px;padding:20px;display:flex;flex-direction:column;gap:10px}
.questions>p{margin:0}
.question{padding-top:12px;border-top:1px solid var(--line2)}
.question p{margin:0 0 6px}.question-text{font-weight:550}.question-rows{font-size:12.5px;color:var(--ink2)}
.question .tri button[aria-pressed=true]{background:var(--ink-btn);color:var(--on-ink);border-color:var(--ink-btn)}
.steps h3{margin:0 0 12px;font-size:16px}
.step-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.step-card{display:flex;flex-direction:column;gap:8px;padding:18px;min-height:170px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);text-decoration:none;min-width:0}
.step-card:hover{border-color:var(--ink3)}
.step-kicker{font:600 11.5px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}
.step-title{font-size:17px;font-weight:650}
.step-count{font:500 26px var(--mono)}
.step-line{font-size:13px;color:var(--ink2);line-height:1.45}
.step-who{margin-top:auto;font-size:12px;font-weight:650;color:var(--ink2)}
.hub-foot{margin:0 0 8px;font-size:13px;color:var(--ink2)}
.paid-card{margin-top:20px;padding:20px}.paid-card h3{margin:0 0 8px}.paid-card>p{margin:0 0 10px;max-width:72ch}.paid-card form{max-width:560px}
.doc-items{margin:8px 0 16px}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .next-card{border:1px solid var(--line)}}
:root[data-theme="dark"] .next-card{border:1px solid var(--line)}
@media(max-width:1060px){.case-body,.case-body.open{grid-template-columns:minmax(0,1fr)}.case-rail{position:static;flex-direction:row;flex-wrap:wrap;order:-2}.rail-head,.rail-sep{display:none}.rail-link{min-height:40px;padding:0 10px}}
/* Step 1, Collect documents (2026-10-08): the stage pills, one supplying party at a time, that party's list with its
   request-list buttons, the intake's files waiting for a type, and the footer links. Structure only. */
.doc-filter{margin:4px 0 6px}
.doc-cols{display:grid;grid-template-columns:minmax(200px,260px) minmax(0,1fr);gap:20px;align-items:start;margin:12px 0 20px}
.party-col{display:flex;flex-direction:column;gap:8px;min-width:0}
#detail .party-btn{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:baseline;text-align:left;width:100%;padding:10px 14px;margin:0;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font-weight:400}
#detail .party-btn:hover:not(:disabled){background:var(--fill)}
#detail .party-btn[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.party-name{font-weight:650;overflow-wrap:anywhere}.party-count{font:500 15px var(--mono)}
.party-note{grid-column:1/-1;font-size:12.5px;color:var(--ink2)}
#detail .party-btn.party-empty:not([aria-pressed=true]){color:var(--ink2);background:transparent;border-style:dashed}
.party-main{min-width:0}.doc-items{margin:0}
.party-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:8px 16px;margin-bottom:8px}
.party-title{min-width:0}.party-title h3{margin:0;overflow-wrap:anywhere}.party-title p{margin:2px 0 0;font-size:13px;color:var(--ink2)}
.party-actions{display:flex;flex-wrap:wrap;gap:8px}.party-actions button{margin:0}
.doc-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:0 8px;border-top:1px solid var(--line2);padding-right:12px}
.items>.doc-row:first-child{border-top:0}
#detail .doc-row>.item{flex:1 1 280px;width:auto;min-width:0;border-top:0}
.row-upload{margin:10px 0}
.row-queue{flex-basis:100%;padding:0 16px 10px 40px;min-width:0}.row-queue:empty{display:none}
.queued-line{margin:2px 0;font-size:13px;color:var(--amber);overflow-wrap:anywhere}.queued-line.confirmed{color:var(--teal)}
.ref-rule{flex-basis:100%;margin:0;padding:0 16px 8px 40px;font-size:13px}.queued-line .linkbtn{margin-left:8px}
.ref-match{display:flex;flex-wrap:wrap;align-items:flex-end;gap:4px 8px;margin:4px 0}.ref-match button{margin:0}
.set-ref{flex-basis:100%;padding:0 16px 10px 40px}.set-ref summary{font-size:13px}.set-ref-form button{margin-top:6px}
.queue-ref{margin:6px 0}.queue-ref button{margin:4px 0 0}
.recorded-ref-form{flex-basis:100%;border-left:3px solid var(--line);padding:4px 0 4px 12px}.recorded-ref-form button{margin-right:8px}
.unsorted{border:1px dashed var(--line);border-radius:10px;padding:12px 16px;margin:12px 0;background:var(--amberbg)}.unsorted h3{margin:0 0 4px}
.unsorted-list{list-style:none;margin:8px 0 0;padding:0}.unsorted-list li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:6px 0;border-top:1px solid var(--line2)}
.unsorted-name{flex:1 1 220px;min-width:0;overflow-wrap:anywhere}.unsorted-list button{margin:0}
.page-foot{display:flex;flex-wrap:wrap;gap:8px 24px;margin:24px 0 0;padding-top:14px;border-top:1px solid var(--line)}.page-foot a{font-weight:600}
@media(max-width:760px){.doc-cols{grid-template-columns:minmax(0,1fr)}}
/* Round 8, Collect documents (R3-06, R3-07, R3-14, R3-26, R5-05): the Add documents bar first, the confirm sheet, one stage
   tag per row, info marks that open on a tap, the gaps grouped by document, and the drop-anywhere notice. */
.add-docs{margin:4px 0 16px}.add-docs-head,.read-in-part-head{display:flex;align-items:center;gap:8px}.add-docs-head h3,.read-in-part-head h3{margin:0}
#detail .info-mark{width:28px;height:28px;min-height:28px;padding:0;margin:0;border-radius:50%;font:italic 650 14px/1 var(--serif,Georgia,serif);flex:none}
.info-text{margin:6px 0 8px;padding:8px 12px;border-left:3px solid var(--line);background:var(--fill);border-radius:0 8px 8px 0}
.party-actions .info-mark{align-self:center}
.confirm-sheet{border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin:12px 0;background:var(--paper);box-shadow:0 1px 2px rgba(0,0,0,.05)}
.confirm-heading{margin:0 0 4px;font-size:15px}
.queue-match{margin:4px 0 0;font-size:13.5px;font-weight:550;overflow-wrap:anywhere}
.doc-item .tags{align-self:center}
/* A document row has no severity dot (R3-06), so it takes two columns, not the dot grid's three: in the 12px dot column the name broke at every letter (#505). At phone width the tag drops under the name. */
#detail .item.doc-item{grid-template-columns:minmax(0,1fr) auto}
@media(max-width:600px){#detail .item.doc-item{grid-template-columns:minmax(0,1fr)}#detail .item.doc-item .tags{grid-column:1;justify-self:start;align-self:start}}
.add-docs-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:16px 0;padding:10px 14px;border:1.5px dashed var(--line);border-radius:10px;background:var(--fill)}
.add-docs-bar .muted{flex:1 1 260px;min-width:0;font-size:13.5px}.add-docs-bar button{margin:0}
.case-drop{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:40;max-width:calc(100vw - 32px);padding:12px 18px;border:2px dashed var(--teal);border-radius:12px;background:var(--tealbg);color:var(--ink);pointer-events:none;text-align:center;box-shadow:0 6px 24px rgba(0,0,0,.18)}
.case-drop p{margin:0}.case-drop-title{font-weight:700}
.read-in-part{margin:24px 0 8px;padding-top:14px;border-top:1px solid var(--line)}
.read-in-part-intro{margin:4px 0 10px}
.gap-doc{border:1px solid var(--line);border-radius:10px;padding:12px 16px;margin:10px 0;background:var(--paper);min-width:0;overflow-wrap:anywhere}
.gap-doc-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.gap-doc-title{margin:0;font:600 14px var(--mono);overflow-wrap:anywhere;min-width:0}
.gap-doc-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:8px 0}.gap-doc-actions[hidden]{display:none}.gap-doc-actions button{margin:0}
/* Exhibits a deed of trust mentions (#382): each mention, the proposed places, the record and its form, inside the width. */
.exhibits{margin:24px 0 8px;padding-top:14px;border-top:1px solid var(--line)}.exhibits h3{margin:0}.exhibits-intro{margin:4px 0 10px}
.exhibit-sub{margin:10px 0 4px;font-weight:600;font-size:14px}.exhibit-mentions,.exhibit-candidates{margin:0 0 6px;padding-left:18px;min-width:0}.exhibit-mention{margin:4px 0 8px;overflow-wrap:anywhere}
.exhibit-sentence{margin:2px 0;overflow-wrap:anywhere;white-space:pre-wrap}.exhibit-check-read{white-space:pre-wrap}.exhibit-record{margin:8px 0;font-size:14px;overflow-wrap:anywhere}
.exhibit-where{border:0;padding:0;margin:8px 0;min-width:0}.exhibit-where legend{font-weight:600;padding:0;margin-bottom:4px}.exhibit-choice{display:flex;gap:6px;align-items:flex-start;margin:4px 0;overflow-wrap:anywhere;min-width:0}
.exhibit-choice input{flex:none;margin-top:3px}.exhibit-record-form label,.controls-form label{display:block;margin:6px 0}.exhibit-record-form label.check{display:flex}.exhibit-record-form select,.controls-form select{max-width:100%}
.exhibit-mark[hidden],.exhibit-description-note[hidden]{display:none}.exhibit-description{gap:6px;align-items:flex-start}.land-substitution{margin:8px 0;overflow-wrap:anywhere}
.versions{margin:12px 0}.version-entry{margin:6px 0 10px;padding-left:10px;border-left:2px solid var(--line,#ddd);overflow-wrap:anywhere}
.copy-request{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;min-width:0}.copy-request p{margin:0}.copy-request button{margin:0}
.gap-pointers{padding-left:20px;margin:8px 0}.gap-pointers li{margin:4px 0;overflow-wrap:anywhere}.gap-pointer[aria-current=true]{font-weight:700}
@media(max-width:600px){.confirm-sheet{padding:10px 12px}.gap-doc{padding:10px 12px}.case-drop{bottom:12px}}
/* Step 2, Decide findings: the queue on the left, the open finding's card on the right (2026-10-08). The card is the item
   panel, always open on this page; tokens only, so light and dark both hold. */
.case-body[data-page=findings].open{grid-template-columns:230px minmax(0,1fr) minmax(0,560px)}
.queue-progress{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:10px 0 0}
.queue-count{margin:0;font-size:14px;font-weight:650;color:var(--ink)}
.queue-meter{flex:1 1 160px;min-width:120px;max-width:340px;height:8px;appearance:none;-webkit-appearance:none;border:0;border-radius:999px;background:var(--line);overflow:hidden}
.queue-meter::-webkit-progress-bar{background:var(--line);border-radius:999px}
.queue-meter::-webkit-progress-value{background:var(--teal);border-radius:999px}
.queue-meter::-moz-progress-bar{background:var(--teal);border-radius:999px}
.queue-moves{display:flex;gap:6px;margin-left:auto}
.queue-moves button{margin:0}
.before-decide{margin:0 0 18px}
.before-decide h3,.queue h3{margin:0 0 4px;font-size:16px}
#detail .queue-item{grid-template-columns:28px minmax(0,1fr) auto}
.q-n{width:24px;height:24px;border-radius:12px;border:1px solid var(--ink3);display:inline-grid;place-items:center;font:12px var(--mono);color:var(--ink2);margin-top:1px}
.queue-item[aria-current=true] .q-n{background:var(--ink-btn);border-color:var(--ink-btn);color:var(--on-ink)}
.queue-item.is-recorded .t{color:var(--ink2);font-weight:550}
.q-state{font:600 11px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.06em;padding:2px 9px;border-radius:999px;border:1px solid var(--line);white-space:nowrap}
.q-open{color:var(--amber);background:var(--amberbg);border-color:transparent}
.q-done{color:var(--teal);background:var(--tealbg);border-color:transparent}
.finding-tags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.finding-tags .tag{white-space:normal;overflow-wrap:anywhere;max-width:100%}
.tag-sev-blocker{color:var(--red);background:var(--redbg)}
.tag-sev-warn{color:var(--amber);background:var(--amberbg)}
.tag-where{font-family:var(--mono);overflow-wrap:anywhere}
.finding-quote{margin:14px 0 0}
.finding-quote figcaption{font-size:12px;font-weight:650;color:var(--ink2);margin:0 0 4px;overflow-wrap:anywhere}
.finding-quote blockquote{margin:0}
.finding-trace{margin:14px 0 0}
.land-clause{margin:14px 0 0}
.land-clause h4{font-size:12px;font-weight:650;letter-spacing:.07em;text-transform:uppercase;color:var(--ink2);margin:0 0 6px}
.land-clause h5{font-size:13px;font-weight:650;margin:0 0 4px}
.land-clause-grid{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
@media (min-width:760px){.land-clause-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.land-clause-text{margin:0 0 8px;white-space:pre-wrap;overflow-wrap:anywhere}
.land-clause mark{background:var(--bluebg);color:inherit;border-radius:3px;padding:0 2px;outline:1px solid var(--blue)}
.land-clause-places{margin:0 0 8px;padding-left:18px;overflow-wrap:anywhere}
.finding-trace h4,.finding-block h4{font-size:12px;font-weight:650;letter-spacing:.07em;text-transform:uppercase;color:var(--ink2);margin:0 0 6px}
.trace-line{margin:0;padding:12px 16px;background:var(--fill);border:1px solid var(--line2);border-radius:8px;font-family:var(--mono);font-size:13px;overflow-wrap:anywhere}
.reader-text{white-space:pre-wrap;overflow-wrap:anywhere}
.finding-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px 20px;margin:16px 0 4px}
.finding-block{min-width:0}
.finding-block p{margin:0 0 8px;overflow-wrap:anywhere}
.panel-item.condition>.decision{border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-top:18px;background:var(--paper)}
.panel-item.condition>.decision .decision-form{margin-top:8px}
.waiver-request{border:1px solid var(--line);border-left:3px solid var(--amber);border-radius:8px;padding:12px 14px;margin-top:16px;background:var(--amberbg)}
.waiver-request h4{margin:0 0 6px}
.request-text{overflow-wrap:anywhere}
.request-list{padding:0}
.request-row{padding:14px 16px;border-top:1px solid var(--line2)}
.request-row:first-child{border-top:0}
.request-row p{margin:0 0 6px}
.request-label{font-weight:650}
@media(max-width:1060px){.case-body[data-page=findings].open{grid-template-columns:minmax(0,1fr)}.case-body[data-page=findings].open>.panel{order:0;position:static;max-height:none}.queue-list{max-height:min(38vh,320px);overflow:auto}}
@media(max-width:600px){#detail .queue-item{grid-template-columns:28px minmax(0,1fr)}#detail .queue-item .q-state{grid-column:2;justify-self:start}.queue-moves{margin-left:0}}
.gap-queue { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 24px; }
.gap-choices, .gap-cards, .gap-card { min-width: 0; overflow-wrap: anywhere; }
.gap-choice { display: block; width: 100%; text-align: left; white-space: normal; margin: 8px 0; }
.gap-choice[aria-pressed="true"] { border-color: var(--ink); font-weight: 700; }
.gap-reader { background: var(--fill); border-radius: 8px; padding: 12px 16px; margin: 12px 0; }
.gap-card .gap-clear-form { min-width: 0; }
@media (max-width: 700px) { .gap-queue { grid-template-columns: minmax(0, 1fr); gap: 16px; } }

/* ===== To do (Round 8, 2026-10-17): the progress line over a thin bar, the tabs, the task rows, the icon rail and the
   phone's page menu. Structure and look only: every figure comes from the gates and the task model. ===== */
.prog-line{display:flex;flex-wrap:wrap;align-items:baseline;margin:0 0 8px;font-size:14px;color:var(--ink2);font-variant-numeric:tabular-nums}
.prog-line>*+*::before{content:"\00B7";margin:0 8px;color:var(--ink3)}
.prog-stage{color:var(--ink);font-weight:700}
.prog5 .pace{margin-top:8px;padding-top:6px}
.todo-tip{margin:14px 0 0;font-size:13px;color:var(--ink2)}
.todo-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:16px 0 10px}
.todo-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);max-width:100%;overflow-x:auto}
#detail .todo-tab{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;min-height:40px;color:var(--ink2);font-weight:600;white-space:nowrap;box-shadow:none}
#detail .todo-tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--ink)}
#detail .todo-chip[aria-pressed=true]{background:var(--ink-btn);color:var(--on-ink);border-color:var(--ink-btn)}
.todo-start{margin-left:auto}
.todo-panel:focus{outline:0}.todo-panel:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.tasks{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.task{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-start;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--line2);margin:0}
.task:first-child{border-top:0;border-radius:12px 12px 0 0}
.task.first{background:var(--fill)}
.task-main{flex:1 1 320px;min-width:0}
.task-main p{margin:2px 0 0}
.task-tags{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.task-next{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--brand)}
#detail .task-title{font-size:15px;font-weight:650;text-align:left;color:var(--ink);padding:0;white-space:normal;overflow-wrap:anywhere;text-decoration:none}
#detail .task-title:hover{text-decoration:underline}
@media(pointer:coarse){#detail .task-title{min-height:44px}}
.task-question{font-weight:550;color:var(--ink)}
.task-why,.task-names,.task-also{font-size:13px;color:var(--ink2);overflow-wrap:anywhere}
.task-act{display:flex;flex-wrap:wrap;gap:6px;align-items:center;flex:none}
.task-act .tri button[aria-pressed=true]{background:var(--ink-btn);color:var(--on-ink);border-color:var(--ink-btn)}
.tag-late{background:var(--redbg);color:var(--red);border-color:var(--red)}
.tag-soon,.tag-opt{background:var(--amberbg);color:var(--ink);border-color:var(--amber)}
.tag-appr{background:var(--bluebg);color:var(--ink);border-color:var(--blue)}
.todo-foot{margin-top:8px}
.todo-empty{padding:18px 20px}.todo-empty p{margin:0 0 10px}
#unseen-fold{margin-top:20px}
.full-table .kind-col,.full-table .who-col{font-size:13px;color:var(--ink2)}
/* The rail: a wrapper that holds its place beside the page, the icon before each label, and a menu button on a phone. */
.rail-wrap{position:sticky;top:80px;align-self:start;min-width:0}
.case-rail{position:static}
.rail-ic{flex:none;width:20px;height:20px;color:var(--ink2)}
.rail-link[aria-current=page] .rail-ic{color:var(--ink)}
.rail-menu{display:none}
@media(max-width:1060px){.rail-wrap{position:static;order:-2}}
/* Off To do, on a wide screen, the rail folds to its icons; each count stays as a badge, a short label sits under each
   icon (D7), and the full label stays the link's name and its tooltip (R3-05). */
@media(min-width:1061px){
  .case-body:not([data-page=overview]){grid-template-columns:64px minmax(0,1fr)}
  .case-body.open:not([data-page=overview]){grid-template-columns:64px minmax(0,1fr) minmax(0,420px)}
  #detail .case-body[data-page=findings].open{grid-template-columns:64px minmax(0,1fr) minmax(0,560px)}
  .case-body:not([data-page=overview]) .rail-link{justify-content:center;padding:0;position:relative}
  .case-body:not([data-page=overview]) .rail-sub{padding-left:0}
  .case-body:not([data-page=overview]) .rail-label{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .case-body:not([data-page=overview]) .rail-badge{position:absolute;top:1px;right:1px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--fill);border:1px solid var(--line);font-size:10.5px;line-height:16px;text-align:center}
  .case-body:not([data-page=overview]) .rail-sep{margin:8px 6px}
  /* Each folded icon has a short label under it (D7, 2026-10-27). */
  .case-body:not([data-page=overview]) .rail-link{flex-direction:column;gap:2px;min-height:52px;padding:4px 0}
  .case-body:not([data-page=overview]) .rail-short{display:block;font-size:10.5px;line-height:1.2;color:var(--ink2);text-align:center;white-space:nowrap}
  .case-body:not([data-page=overview]) .rail-link[aria-current=page] .rail-short{color:var(--ink);font-weight:650}
}
.rail-short{display:none}
/* On a phone one button says where you are, with its count, and opens the list of pages (R3-34). */
@media(max-width:760px){
  .rail-menu{display:flex;width:100%;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:0 14px;border-radius:10px;font-weight:650}
  .rail-menu-label{flex:1 1 auto;text-align:left}
  .rail-menu-count{font:12px var(--mono);color:var(--ink2)}
  .rail-wrap:not([data-open=true]) .case-rail{display:none}
  .rail-wrap[data-open=true] .case-rail{flex-direction:column;flex-wrap:nowrap;margin-top:6px}
  .rail-wrap[data-open=true] .rail-sep{display:block}
  .todo-tip{display:none}
  .todo-start{margin-left:0}
  .todo-bar{margin-top:12px}
  .task{padding:10px 12px}
}
/* The deal facts as one line, for a phone only (R8-07). */
.hl-line{display:none;margin:6px 0 0;font-size:14px;color:var(--ink2);overflow-wrap:anywhere}
@media(max-width:760px){#highlights{display:none}.hl-line{display:block}#detail .prog5 .spark{display:none}}
/* Document requests on a task (#321): the items, who asked and from whom, and the form to mark more as requested. */
.task-requests{margin-top:6px;font-size:13px}.task-requests summary{cursor:pointer;color:var(--ink2);font-weight:600}
.request-items{margin:6px 0;padding-left:18px}.request-items li{margin:2px 0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.request-form{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:flex-end;margin-top:6px}.request-form label{display:flex;flex-direction:column;gap:2px;font-size:12.5px}
/* ===== Decide findings (Round 8, R3-08): the list and the open finding's detail share the page's full width, the detail the
   wider; each row is a short title held to two lines over a one-line citation, with its state in a word. Structure and
   look only: every word comes from the engine and every state from the case. ===== */
@media(min-width:1061px){
  #detail .case-body[data-page=findings].open{grid-template-columns:64px minmax(300px,2fr) minmax(0,3fr)}
  /* The open finding scrolls with the page, as below 1060px, not inside a box of its own, so its form is never under a
     second scroll (D2, 2026-10-27). */
  #detail .case-body[data-page=findings].open:not(.task-full):not(.task-open)>.panel{position:static;max-height:none;overflow:visible}
}
#detail .queue-item{align-items:start}
#detail .queue-item .q-title{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
#detail .queue-item .q-cite{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--mono);font-size:12px;color:var(--ink2);margin-top:2px}
@media(max-width:1060px){.queue-list{max-height:min(46vh,420px)}}
.request-acts{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin:8px 0 0}.request-acts button{margin:0}
.reference-home{display:inline-block;margin:4px 0;overflow-wrap:anywhere}
.request-history{color:var(--ink2)}
/* An approver's Clear this gap reads as a control beside Upload and Ask, not as a caption (design pass, 2026-10-27). */
.gap-entry details.gap-clear>summary{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-weight:600;cursor:pointer}
/* A document row's recording number, when its type is not a recorded instrument, sits under More (D10, 2026-10-27). */
.source-more{margin:0}.source-more>summary{font-size:13px;color:var(--ink2);font-weight:600}

/* App shell: slim top bar, the case list (Home) and the New case steps. Design tokens (light and dark) are defined by
 * the workspace stylesheet, which loads first. System fonts only (the CSP allows no font hosts). */
header.topbar{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;justify-content:flex-start;background:var(--paper);color:var(--ink);padding:10px max(16px,calc((100vw - 1180px)/2));border-bottom:1px solid var(--line);font-family:var(--sans)}
.logo-h{margin:0;font-size:inherit;line-height:1}
button.logo{display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:4px 2px;margin:0;min-height:0;font-size:16px;font-weight:750;color:var(--ink);letter-spacing:-.01em}
button.logo:hover:not(:disabled){background:none;border:0}
.logo-mark{font-family:var(--mono);font-size:11px;font-weight:650;border:1.5px solid var(--ink);border-radius:5px;padding:2px 5px}
.crumbs ol{display:flex;flex-wrap:wrap;gap:4px 6px;list-style:none;margin:0;padding:0;font-size:14px;color:var(--ink2)}
.crumbs li{margin:0;display:flex;gap:6px;align-items:center;min-width:0;overflow-wrap:anywhere}
.crumbs li+li::before{content:"/";color:var(--ink2)}
.crumbs li[data-crumb=case]>*{display:inline-block;max-width:40ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.crumbs a{color:var(--ink2)}
.crumbs [aria-current=page]{color:var(--ink);font-weight:600}
.spacer{flex:1}
.envtag{font-family:var(--mono);font-size:11px;color:var(--ink2);border:1px dashed var(--ink3);border-radius:5px;padding:3px 7px;white-space:nowrap}
.envtag.envtag-live{border-style:solid}
a.navlink{font-size:14px;padding:4px 6px;border-radius:5px;color:var(--ink)}
.identity{margin:0;font-size:13px;color:var(--ink2)}
.workspace-switch{display:flex;align-items:center;gap:6px;margin:0 8px;font-size:13px;color:var(--ink2)}.workspace-switch[hidden]{display:none}.workspace-switch select{font:inherit;max-width:16em}
.workspace-chooser{max-width:640px;margin:24px auto;padding:0 16px}.workspace-chooser ul{list-style:none;padding:0}.workspace-chooser li{padding:10px 0;border-bottom:1px solid var(--line, #ddd)}
main#content:focus{outline:0}
#view-home,#view-new{max-width:1180px;margin:0 auto;font-family:var(--sans);color:var(--ink)}
.view h2{font-size:26px;margin:0 0 4px;letter-spacing:-.02em}
.view h2:focus{outline:0}.view h2:focus-visible,.wizard-card h3:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.lede{color:var(--ink2);margin:0;max-width:62ch}

/* Home: the date, what closes soon, New case, filters and one list. */
.hello{display:flex;gap:16px;justify-content:space-between;align-items:flex-end;flex-wrap:wrap}
.hello button{margin:0}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 12px;align-items:center}
.filters button{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:999px;padding:5px 12px;font-size:13px;margin:0;min-height:34px;font-weight:500}
.filters button[aria-pressed=true],.filters button[aria-pressed=true]:hover:not(:disabled){background:var(--ink-btn);color:var(--on-ink);border-color:var(--ink-btn)}
.case-list{background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.case-list-rows{list-style:none;margin:0;padding:0}
.case-list-rows li{margin:0;border-top:1px solid var(--line2)}
.case-list-head,a.case-row{display:grid;grid-template-columns:minmax(0,1fr) 130px 180px 160px;gap:16px;align-items:center;padding:14px 18px}
.case-list-head{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);font-weight:600;background:var(--fill);padding-block:9px}
a.case-row{position:relative;color:var(--ink);text-decoration:none}
a.case-row:hover{background:var(--fill)}
a.case-row:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.cell-loan{min-width:0}
.case-row .name{display:block;font-weight:650;overflow-wrap:anywhere;text-decoration:underline;text-decoration-color:var(--focus);text-underline-offset:3px;text-decoration-thickness:1.5px}
.case-row .sub{display:block;font-size:13px;color:var(--ink2)}
.cell-closes{font-variant-numeric:tabular-nums;font-size:14px}
.cell-closes b{display:block;font-weight:600}
.cell-closes .muted{display:block;color:var(--ink2)}
.case-list-empty{padding:18px;margin:0;color:var(--ink2)}
.status-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:650;border-radius:999px;padding:3px 10px;white-space:nowrap;border:1px solid transparent}
.status-pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.p-blocked{background:var(--redbg);color:var(--red)}
.p-stale{background:var(--amberbg);color:var(--amber)}
.p-ready{background:var(--tealbg);color:var(--teal)}
.p-signed{background:var(--tealbg);color:var(--teal);border-color:var(--teal)}
.p-none{background:var(--fill);color:var(--ink2);border-color:var(--line)}
.p-check{background:var(--bluebg);color:var(--blue)}
.cell-progress{display:flex;align-items:center;gap:10px}
.meter-l{font-size:13px;color:var(--ink2);font-variant-numeric:tabular-nums}
.meter-l b{color:var(--ink);font-weight:650}
.ring{flex:none;display:block}
.ring-track{stroke:var(--line2)}
.ring-done{stroke:var(--teal)}

/* New case: steps, one card per step. */
.wizard{max-width:820px;margin:0 auto}
.wizard-steps{display:flex;gap:8px;list-style:none;padding:0;margin:14px 0 22px;flex-wrap:wrap;counter-reset:none}
.wizard-steps li{flex:1;min-width:150px;font-size:13px;padding:8px 12px;margin:0;border-radius:7px;border:1px solid var(--line);background:var(--paper);color:var(--ink2)}
.wizard-steps li[aria-current=step]{border-color:var(--ink);color:var(--ink);font-weight:650}
.wizard-steps li.done{color:var(--teal);border-color:var(--teal)}
.wizard-steps li.done::after{content:" ✓"}
.wizard-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:20px 22px}
.wizard-card h3{margin:0 0 4px;font-size:20px}
.wizard-card h3:focus{outline:0}
.wizard-intro{color:var(--ink2);margin:0 0 12px}
.wizard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:4px 16px}
.wizard-grid label{display:block;font-size:13px;font-weight:600;margin:10px 0 0}
.wizard-grid input{display:block;width:100%;margin-top:5px}
.wizard-drop{text-align:left}
.wizard-listbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}
.wizard-listbar .queue-summary{margin:0;font-size:14px;color:var(--ink2)}
.wizard-listbar button{margin:0}
.wizard-card .table-scroll{position:relative;overflow-x:auto;max-width:100%;background:var(--paper);border:1px solid var(--line);border-radius:10px;margin-top:10px}
.wizard-card .table-scroll:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.ftable{border-collapse:collapse;width:100%;font-size:14px}
.ftable th,.ftable td{text-align:left;vertical-align:middle;padding:9px 14px;border-top:1px solid var(--line2)}
.ftable th{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);font-weight:600;border-top:0;background:var(--fill)}
.ftable-file{overflow-wrap:anywhere;min-width:160px}
.ftable-file strong,.ftable-file .muted{display:block}
.ftable-file .muted{font-size:12px;color:var(--ink2)}
.ftable select{min-width:200px;max-width:100%;padding:6px 8px;font-size:13px}
.ftable-actions{white-space:nowrap;text-align:right}
.ftable-actions button{margin:0 0 0 6px}
.ftable .queue-hint{margin:4px 0 0;font-size:12px;color:var(--ink2)}
.ftable .queue-hint.need{color:var(--red);font-weight:650}
.ftable .queue-hint.confirmed{color:var(--teal)}
.wizard-meta{margin-top:8px}
.qrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line2)}
.qrow:first-child{border-top:0}
.qrow .q{font-size:14px}
.qrow .q small{display:block;color:var(--ink2);font-size:12px}
.tri{justify-self:start;display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}
.tri button{border:0;border-radius:0;margin:0;min-height:34px;background:var(--paper);color:var(--ink);padding:5px 11px;font-size:13px;font-weight:500;border-left:1px solid var(--line)}
.tri button:first-child{border-left:0}
.tri button[aria-pressed=true],.tri button[aria-pressed=true]:hover:not(:disabled){background:var(--ink-btn);color:var(--on-ink)}
.wizard-callout{background:var(--bluebg);border:1px solid var(--blue);border-radius:8px;padding:10px 14px;font-size:14px;margin:12px 0 0;color:var(--ink)}
.wizard-note{font-size:13px;color:var(--ink2);margin:12px 0 0}
.wizard-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:18px;align-items:center}
.wizard-foot button{margin:0}
.wizard-foot-end{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
button.linkbtn,button.linkbtn:hover:not(:disabled){background:none;border:0;padding:4px 0;min-height:0;text-decoration:underline;text-decoration-color:var(--focus);text-underline-offset:3px;font-size:14px;color:var(--ink);font-weight:500}
button[aria-disabled=true]{opacity:.55;cursor:not-allowed}
.wizard .upload-ready{text-align:right}

@media(max-width:1000px) and (min-width:761px){.case-list-head,a.case-row{grid-template-columns:minmax(0,1fr) 110px 150px 140px;gap:12px}}
@media(max-width:760px){
  .case-list-head{display:none}
  a.case-row{grid-template-columns:minmax(0,1fr) auto;row-gap:8px;padding:12px 14px}
  .cell-status,.cell-progress{grid-column:1/-1}
  .identity{flex-basis:100%}
}
@media(max-width:560px){
  .qrow{grid-template-columns:1fr}
  .wizard-card{padding:16px 14px}
  .view h2{font-size:22px}
  .wizard .upload-ready{text-align:left}
  /* The file list stacks: one block per file, the type list full width, no sideways scroll. */
  .ftable thead{display:none}
  .ftable tr{display:block;border-top:1px solid var(--line2);padding:8px 0}
  .ftable tr:first-child{border-top:0}
  .ftable td{display:block;border-top:0;border-bottom:0;padding:4px 12px}
  .ftable select{min-width:0;width:100%}
  .ftable-actions{text-align:left}
  .ftable-actions button{margin:4px 8px 0 0}
}
/* The list while it is re-read, or after a read failed: still there, visibly not current. */
.case-list-note{margin:0 0 8px;font-size:13px;color:var(--ink2)}
.case-list-note.error{color:var(--red);font-weight:600}
/* A link to a case: what shows while it opens, in place of the case list (Arun, 2026-10-09). */
.opening-case{margin:24px 0;font-size:15px;color:var(--ink2)}
.case-list.case-list-old{opacity:.6}

/* ===== Modern theme (2026-10-03). Loads last, after the workspace and shell stylesheets, and changes how things look,
   never what they say or which controls exist: labels, ids, order and every rule stay as the other two files and the
   client define them. Tokens only (dashboard.css), so light and dark both hold. Small uppercase labels are set in the
   sans face instead of monospace; monospace stays for hashes, quotes and citations, where exact characters matter.
   color-mix() and :has() are progressive: every background that matters has a plain fallback declared first, and a
   browser without :has() simply keeps notices on screen and stacks the sign-in page. ===== */

:root{--r-sm:8px;--r:12px;--r-lg:16px;--ease-out:cubic-bezier(.23,1,.32,1);--ease-drawer:cubic-bezier(.32,.72,0,1);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
body{background:var(--glow) no-repeat,var(--bg);background-attachment:scroll;min-height:100vh}
main{padding:28px max(16px,calc((100vw - 1240px)/2)) 96px;max-width:none}
h2,h3,h4{font-family:var(--display);color:var(--ink)}
a{text-decoration-color:color-mix(in srgb,var(--brand) 55%,transparent);text-decoration-thickness:1.5px;text-underline-offset:3px}
a:hover{text-decoration-color:var(--brand)}
::selection{background:color-mix(in srgb,var(--brand) 22%,transparent)}

/* --- Small labels: one style everywhere, sans, tracked, never monospace. --- */
.hl dt,.prog5-t,#detail .ghead,details.disc-section>summary,.full-table th,.panel section>h4,.panel details.decision>summary,
.case-list-head,.ftable th,.eyebrow{font-family:var(--sans);font-size:11.5px;font-weight:650;letter-spacing:.07em;text-transform:uppercase;color:var(--ink2)}
.eyebrow{color:var(--brand)}
.pill{font-family:var(--sans);font-size:11px;font-weight:650;letter-spacing:.04em;border-width:1px;border-radius:999px;padding:2px 9px}

/* --- Top bar: sticky, translucent, with a filled brand mark. --- */
header.topbar{position:sticky;top:0;z-index:30;min-height:60px;padding:10px max(16px,calc((100vw - 1240px)/2));
  background:var(--paper);background:color-mix(in srgb,var(--paper) 86%,transparent);border-bottom:1px solid var(--line2);
  -webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px)}
button.logo{font-family:var(--display);font-size:17px;font-weight:700;gap:10px;letter-spacing:-.015em}
.logo-mark{display:inline-grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:9px;font-family:var(--display);font-size:12.5px;font-weight:750;letter-spacing:.02em;color:var(--on-brand);
  background:var(--brand);background:linear-gradient(135deg,var(--brand) 0%,color-mix(in srgb,var(--brand) 62%,#14b8a6) 100%);box-shadow:0 1px 0 rgba(255,255,255,.25) inset,0 2px 6px -1px color-mix(in srgb,var(--brand) 45%,transparent)}
.crumbs{margin-left:6px;padding-left:14px;border-left:1px solid var(--line)}
.crumbs ol{font-size:14px}
.crumbs a{text-decoration:none;font-weight:500}.crumbs a:hover{color:var(--ink);text-decoration:underline}
.envtag{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--amber);background:var(--amberbg);border:0;border-radius:999px;padding:4px 10px 4px 9px;display:inline-flex;align-items:center;gap:6px}
.envtag::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.envtag.envtag-live{color:var(--teal);background:var(--tealbg)}
a.navlink{font-weight:550;text-decoration:none;padding:7px 10px;border-radius:var(--r-sm)}
a.navlink:hover{background:var(--fill)}
.identity{font-weight:500}
.avatar-stub,#user .cl-userButtonAvatarBox{border-radius:50%}

/* --- Buttons: rounded, brand-coloured primary, quiet secondary. --- */
button{border-radius:10px;font-weight:600;min-height:40px;padding:9px 15px;background:var(--paper);border:1px solid var(--line);color:var(--ink);
  transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,color .15s ease,transform .12s var(--ease-out)}
button:hover:not(:disabled){background:var(--fill);border-color:var(--ink3)}
/* Press feedback (R8-12): a button gives a little under the finger, 120ms ease-out; a whole list row does not. */
button:active:not(:disabled){transform:scale(.97)}
#detail .item:active:not(:disabled),#detail .ghead:active:not(:disabled){transform:none}
button.primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand);box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 2px 8px -2px color-mix(in srgb,var(--brand) 55%,transparent)}
button.primary:hover:not(:disabled){background:var(--brand-hover);border-color:var(--brand-hover);opacity:1}
button:disabled{opacity:.5;box-shadow:none}
button.small{border-radius:var(--r-sm)}
button.linkbtn,button.linkbtn:hover:not(:disabled){box-shadow:none;color:var(--brand);font-weight:600;text-decoration:none}
button.linkbtn:hover:not(:disabled){text-decoration:underline}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,summary:focus-visible,article:focus-visible,h2:focus-visible{outline:2px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 5px color-mix(in srgb,var(--focus) 18%,transparent)}
@media(prefers-reduced-motion:reduce){button{transition:none}button:active:not(:disabled){transform:none}}

/* --- Fields. --- */
label{font-weight:600;color:var(--ink)}
input,select,textarea{border-radius:10px;border:1px solid var(--ink3);background:var(--paper);min-height:44px;padding:10px 12px;transition:border-color .15s ease,box-shadow .15s ease}
input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--ink2)}
input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--focus)}
input[type=checkbox],input[type=radio]{accent-color:var(--brand)}
input::file-selector-button{border-radius:var(--r-sm);background:var(--brandbg);color:var(--brand);font-weight:600;padding:7px 12px}

/* --- Messages: a floating notice instead of a bar that pushes the page down. Errors and save links stay until
       dismissed; other messages fade after a few seconds (dashboard-client.js). Screen readers use the separate live regions. --- */
#status{position:fixed;left:50%;bottom:24px;top:auto;transform:translateX(-50%);z-index:40;margin:0;min-height:0;width:max-content;max-width:min(620px,calc(100vw - 32px));
  padding:12px 16px 12px 18px;border:0;border-radius:14px;background:var(--ink);color:var(--on-ink);font-size:14px;font-weight:500;line-height:1.45;box-shadow:var(--shadow-3);
  display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;overflow-wrap:anywhere}
#status:empty{display:none}
#status.error{background:var(--redbg);color:var(--ink);border:1px solid var(--red);border:1px solid color-mix(in srgb,var(--red) 45%,transparent);border-left:4px solid var(--red)}
#status .save-link{color:inherit;text-decoration-color:currentColor;margin-left:0;min-width:0;overflow-wrap:anywhere}
#status .status-dismiss{flex:none;margin:-4px -8px -4px auto;width:32px;height:32px;min-height:32px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;box-shadow:none;display:inline-grid;place-items:center}
#status .status-dismiss::before{content:"";width:12px;height:12px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1.5 1.5l9 9m0-9l-9 9' stroke='black' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1.5 1.5l9 9m0-9l-9 9' stroke='black' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}
#status .status-dismiss:hover:not(:disabled){background:color-mix(in srgb,currentColor 12%,transparent)}
/* Fade: a non-error message, nothing running, no save link, signed in, and not pointed at or focused (R3-32: it stays while
   it is, and its count starts again when it is left). Two identical animations under two names, so each new message
   (data-note flips) starts its own count. A message with Undo stays twice as long. Reduced motion: it simply disappears at
   the same moment. */
#status:not(.error):not(.stay):not([data-busy]):not(:has(.save-link)):not(:hover):not(:focus-within)[data-note=a]{animation:cr-toast .18s var(--ease-out),cr-fade-a .3s ease-in 6s forwards}
#status:not(.error):not(.stay):not([data-busy]):not(:has(.save-link)):not(:hover):not(:focus-within)[data-note=b]{animation:cr-toast .18s var(--ease-out),cr-fade-b .3s ease-in 6s forwards}
#status[data-undo]:not(.error):not(.stay):not([data-busy]):not(:has(.save-link)):not(:hover):not(:focus-within){animation-delay:0s,12s}
#status .status-undo{flex:none;margin:-4px -6px -4px auto;min-height:32px;padding:4px 12px;border:1px solid currentColor;border-radius:999px;background:transparent;color:inherit;box-shadow:none;font-weight:650}
#status .status-undo:hover:not(:disabled){background:color-mix(in srgb,currentColor 14%,transparent)}
main:has(>#workspace[hidden]) #status{animation:none!important}
@keyframes cr-fade-a{to{opacity:0;visibility:hidden;transform:translate(-50%,8px)}}
@keyframes cr-fade-b{to{opacity:0;visibility:hidden;transform:translate(-50%,8px)}}
/* Entry (R8-17): the notice rises 8px and fades in over 180ms. Leaving it is the timed fade above, or instant on dismissal. */
@keyframes cr-toast{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
@media(prefers-reduced-motion:reduce){#status:not(.error):not(.stay):not([data-busy]):not(:has(.save-link)):not(:hover):not(:focus-within)[data-note=a]{animation:cr-fade-in .12s linear,cr-fade-a 0s 6s forwards}#status:not(.error):not(.stay):not([data-busy]):not(:has(.save-link)):not(:hover):not(:focus-within)[data-note=b]{animation:cr-fade-in .12s linear,cr-fade-b 0s 6s forwards}#status[data-undo]:not(.error):not(.stay):not([data-busy]):not(:has(.save-link)):not(:hover):not(:focus-within){animation-delay:12s}}
/* Focus targets and anchors clear the sticky top bar, and the skip link shows above it. */
#detail h2,#signoff-heading,.panel h3,#documents-heading,#deal-heading,#activity-heading,#documents,#history,#help{scroll-margin-top:84px}
.skip-link:focus{z-index:60;border-radius:var(--r-sm);box-shadow:var(--shadow-3)}

/* --- Signed out: a welcome beside the sign-in form. --- */
main:has(>#workspace[hidden]):has(>.workspace-intro:not([hidden])){display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-rows:auto 1fr auto;gap:28px 56px;align-items:start;padding-top:64px}
main:has(>#workspace[hidden]) .workspace-intro:not([hidden]){grid-column:1;grid-row:1/span 2;padding-top:8px}
main:has(>#workspace[hidden]) #signin{grid-column:2;grid-row:1;justify-self:center;min-width:0}
main:has(>#workspace[hidden]):has(>.workspace-intro:not([hidden])) #status{position:static;transform:none;grid-column:2;grid-row:2;justify-self:center;align-self:start;width:400px;max-width:100%;margin:0;padding:0;background:transparent;color:var(--ink2);box-shadow:none;animation:none}
main:has(>#workspace[hidden]):has(>.workspace-intro:not([hidden])) #status.error{padding:12px 16px;background:var(--redbg);color:var(--ink)}
main:has(>#workspace[hidden]) #help{grid-column:1/-1;grid-row:3}
.workspace-intro h2{font-size:clamp(30px,3.6vw,46px);line-height:1.08;letter-spacing:-.03em;margin:10px 0 14px;max-width:16ch}
.workspace-intro .muted{font-size:17px;max-width:46ch}
.intro-points{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:14px;max-width:52ch}
.intro-points li{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;align-items:start;margin:0;font-size:15px;color:var(--ink2)}
.intro-points li b{display:block;color:var(--ink);font-weight:650}
.intro-points li::before{content:"";width:34px;height:34px;border-radius:10px;background:var(--brandbg) no-repeat center/16px 16px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3 3 7-7' fill='none' stroke='%232f50c8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
@media(max-width:860px){main:has(>#workspace[hidden]):has(>.workspace-intro:not([hidden])){grid-template-columns:minmax(0,1fr);grid-template-rows:none;padding-top:32px}main:has(>#workspace[hidden]) .workspace-intro:not([hidden]){grid-row:1}main:has(>#workspace[hidden]) #signin{grid-column:1;grid-row:2;justify-self:stretch}main:has(>#workspace[hidden]):has(>.workspace-intro:not([hidden])) #status{grid-column:1;grid-row:3;justify-self:start;margin:0}main:has(>#workspace[hidden]) #help{grid-row:4}}

/* --- Help: a calm card. --- */
.help-panel{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper);box-shadow:var(--shadow-1);padding:16px 22px;margin-top:28px}
.help-panel>summary{font-weight:650}

/* --- Home: greeting, filters and the case list as a card of roomy rows. --- */
#view-home,#view-new{max-width:1240px}
.view h2{font-size:clamp(26px,2.6vw,34px);letter-spacing:-.025em;line-height:1.15}
.hello{margin-bottom:6px}
.hello .lede{font-size:15.5px;margin-top:6px}
.hello button.primary{padding:11px 18px;min-height:44px}
.filters{margin:24px 0 14px;gap:6px;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:4px;width:max-content;max-width:100%;box-shadow:var(--shadow-1)}
.filters button{border:0;box-shadow:none;background:transparent;color:var(--ink2);font-weight:600;padding:6px 14px;min-height:34px}
.filters button:hover:not(:disabled){background:var(--fill);color:var(--ink)}
.filters button[aria-pressed=true],.filters button[aria-pressed=true]:hover:not(:disabled){background:var(--ink-btn);color:var(--on-ink)}
.case-list{border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-2)}
.case-list-head{background:transparent;border-bottom:1px solid var(--line2);padding-block:12px}
.case-list-head,a.case-row{padding-inline:22px}
a.case-row{padding-block:18px;transition:background-color .15s ease}
a.case-row:hover{background:var(--fill);background:color-mix(in srgb,var(--brandbg) 55%,var(--paper))}
.case-row .name{font-size:15.5px;text-decoration:none;color:var(--ink)}
a.case-row:hover .name{color:var(--brand)}
a.case-row::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;border-right:2px solid var(--ink3);border-top:2px solid var(--ink3);transform:translateY(-50%) rotate(45deg);opacity:0;transition:opacity .15s ease,right .15s ease}
a.case-row:hover::after{opacity:1;right:12px}
.case-row .sub{margin-top:2px}
.status-pill{font-size:12.5px;font-weight:650;padding:4px 11px 4px 9px;border-width:1px}
.p-blocked{border-color:color-mix(in srgb,var(--red) 25%,transparent)}
.p-stale{border-color:color-mix(in srgb,var(--amber) 25%,transparent)}
.p-ready{border-color:color-mix(in srgb,var(--teal) 30%,transparent)}
.p-check{border-color:color-mix(in srgb,var(--blue) 25%,transparent)}
.ring circle{stroke-linecap:round}
.ring-track{stroke:var(--line2)}
.case-list-empty{padding:28px 22px}

/* --- New case: a stepper and one roomy card per step. --- */
.wizard{max-width:860px}
.wizard-steps{gap:10px;margin:18px 0 24px}
.wizard-steps li{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:var(--r);padding:12px 14px 10px;background:var(--paper);font-weight:550;box-shadow:var(--shadow-1)}
.wizard-steps li::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--line2)}
.wizard-steps li[aria-current=step]{border-color:var(--brand);color:var(--ink);font-weight:650;box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}
.wizard-steps li[aria-current=step]::before{background:var(--brand)}
.wizard-steps li.done{color:var(--teal);border-color:var(--line)}
.wizard-steps li.done::before{background:var(--teal)}
.wizard-card{border:1px solid var(--line);border-radius:var(--r-lg);padding:28px 30px;box-shadow:var(--shadow-2)}
.wizard-card h3{font-size:22px;letter-spacing:-.015em}
.wizard-card .table-scroll{border-radius:var(--r)}
.ftable th{background:var(--fill)}
.drop-zone{border:2px dashed color-mix(in srgb,var(--brand) 35%,var(--line));border-radius:var(--r-lg);background:var(--fill);background:color-mix(in srgb,var(--brandbg) 45%,var(--paper));padding:22px 22px;transition:border-color .15s ease,background-color .15s ease}
.drop-zone.drag-over{border-color:var(--brand);background:var(--brandbg)}
.drop-title{font-size:16px}
.tri{border-radius:10px;border-color:var(--line);box-shadow:var(--shadow-1);background:var(--paper)}
.tri button,#detail .tri button{box-shadow:none;border-radius:0}
.tri button[aria-pressed=true],.tri button[aria-pressed=true]:hover:not(:disabled){background:var(--brand);color:var(--on-brand)}
.qrow{padding:14px 0}
.wizard-callout{border-radius:var(--r);border:1px solid color-mix(in srgb,var(--blue) 30%,transparent);background:var(--bluebg)}
.wizard-foot{border-top:1px solid var(--line2);padding-top:18px;margin-top:22px}

/* --- Case view: cards on the soft ground instead of one large sheet. --- */
article#detail{background:transparent;border:0;box-shadow:none;padding:0}
#detail .empty-state{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-2);padding:44px 40px;max-width:760px}
.casehead{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-2);padding:24px 28px 20px;position:relative;overflow:hidden}
.casehead::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--brand),color-mix(in srgb,var(--brand) 50%,#14b8a6))}
#detail .titlerow h2{font-size:clamp(24px,2.4vw,30px);letter-spacing:-.025em}
.titlerow .status-pill{font-size:13px;padding:5px 12px 5px 10px}
.hl{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px 24px;margin:18px 0 6px;border-top:1px solid var(--line2);padding-top:16px}
.hl-wide{grid-column:span 2}
.hl-link{align-self:end}
.hl dd{font-size:16px;font-weight:650;margin-top:3px;white-space:normal}
.casehead-actions button.primary{padding:11px 18px;min-height:44px}
#detail>.callout{border-radius:var(--r);border:1px solid color-mix(in srgb,var(--amber) 30%,transparent)}
.callout{border-radius:var(--r)}
/* Progress: one line over a thin bar of five stages, each named with its status (Round 8, R8-01, R8-16). */
.prog5{border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1);padding:12px 18px 10px}
.segs{gap:10px}
.bar5{height:6px}
.seg5.done .bar5{background:var(--teal)}
.seg5.cur .bar5{background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--red) 22%,var(--redbg)) 0 6px,var(--redbg) 6px 12px);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--red) 55%,transparent)}
.seg5.late .bar5{background:var(--amberbg);box-shadow:inset 0 0 0 1px var(--amber)}
.lab5{font-size:13.5px;margin-top:2px}
.seg5.done .lab5::before{content:"✓ ";font-weight:800}
/* The body: tabs and their content on one card, the item panel floating beside it. */
.case-body{gap:24px;margin-top:20px}
.case-main{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1);padding:4px 24px 24px}
/* Checklist. */
.fbar{border-bottom:0;padding-bottom:4px}
#detail .cchip{box-shadow:none;min-height:36px;padding:5px 13px 5px 11px;font-weight:550;transition:background-color .15s ease,border-color .15s ease}
#detail .cchip:hover:not(:disabled){border-color:var(--ink3);background:var(--fill)}
.seg{border-radius:10px;border-color:var(--line)}
#detail .seg button{box-shadow:none;min-height:36px;padding:6px 12px;font-weight:550}
#detail .seg button[aria-pressed=true]{background:var(--ink-btn);color:var(--on-ink)}
.group{margin-top:22px}
#detail .ghead{box-shadow:none;border-radius:10px;padding:8px 10px 8px 6px;min-height:42px}
#detail .ghead[aria-expanded=false]{border-style:dashed}
.glabel{color:var(--ink)}
.gcount{font-weight:700}
.ghint{font-size:13px}
.chev{border-radius:8px}
.items{border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-1)}
#detail .item{box-shadow:none;padding:14px 18px;gap:14px;transition:background-color .12s ease}
#detail .item:hover:not(:disabled){background:var(--fill);background:color-mix(in srgb,var(--brandbg) 45%,var(--paper))}
#detail .item[aria-current=true]{background:var(--brandbg);box-shadow:inset 3px 0 var(--brand)}
.sev{box-shadow:0 0 0 4px color-mix(in srgb,var(--gc,var(--red)) 14%,transparent)}
.sev-warn{box-shadow:none}
.item .t{font-size:15px}
.item .f{margin-top:2px}
.tag{border-radius:999px;padding:2px 8px;font-size:11.5px}
.card.nothing{border-radius:var(--r);border-color:color-mix(in srgb,var(--teal) 40%,transparent);background:var(--tealbg)}
details.disc>summary{border-radius:10px}
details.disc-card{border-radius:var(--r);box-shadow:var(--shadow-1);padding:8px 16px}
.tbl{border-radius:var(--r);box-shadow:var(--shadow-1)}
.full-table th{background:var(--fill)}
/* The item panel: a floating sheet that stays in view under the top bar. */
.panel{border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-3);padding:20px 22px;top:80px;max-height:calc(100vh - 96px)}
#detail .panel .x{box-shadow:none;border-radius:50%;width:36px;height:36px;padding:0;display:inline-grid;place-items:center;margin:-8px -10px 0 8px}
#detail .panel .x:hover:not(:disabled){background:var(--fill)}
.panel .kind{font-weight:600;color:var(--brand)}
.panel h3{font-size:20px;line-height:1.3}
.why{border-radius:var(--r);border-color:var(--line2);background:var(--fill);padding:12px 14px}
.decision-form{border-radius:var(--r);border-color:var(--line2);padding:14px 16px}
label.choice{border-radius:10px;border-color:var(--line);transition:border-color .12s ease,background-color .12s ease}
label.choice:hover{border-color:var(--ink3)}
label.choice:has(input:checked){border-color:var(--brand);background:var(--brand);color:var(--on-brand)}
.source-card{border-radius:var(--r);border-color:var(--line2)}
.source-card blockquote,blockquote{border-radius:0 var(--r-sm) var(--r-sm) 0;border-left-color:var(--brand)}
.hash{border-radius:6px}
/* File tab rows. */
.source-row{padding:14px 2px;border-bottom-color:var(--line2)}
.source-row strong{font-weight:600}
/* Sign-off. */
.verdict{border-radius:var(--r-lg);box-shadow:var(--shadow-2);padding:22px 24px;border-left-width:5px}
.verdict h3{font-size:22px;letter-spacing:-.015em}
.verdict.ok{background:var(--tealbg);background:color-mix(in srgb,var(--tealbg) 55%,var(--paper))}
.gate-box{border-radius:var(--r);border-color:var(--line2)}
.chk .box{border-radius:5px}
.brief-list li{border-radius:0 var(--r-sm) var(--r-sm) 0}
#downloads{border-top-color:var(--line2)}

/* --- Narrow screens. --- */
@media(max-width:1060px){.case-body.open>.panel{box-shadow:var(--shadow-2)}}
@media(max-width:760px){
  main{padding:20px 16px 88px}
  header.topbar{position:static;padding:8px 16px;min-height:56px;gap:6px 12px}
  .identity{font-size:12.5px;flex:1 1 auto;flex-basis:auto;min-width:0}
  .panel{top:16px}
  #detail h2,#signoff-heading,.panel h3,#documents-heading,#deal-heading,#activity-heading,#documents,#history,#help{scroll-margin-top:16px}
  .crumbs{margin-left:0;padding-left:0;border-left:0;flex-basis:100%;order:10}
  .envtag{font-size:11px;padding:3px 8px}
  .filters{border-radius:14px;width:auto}
  .case-list-head,a.case-row{padding-inline:16px}
  a.case-row::after{display:none}
  .casehead{padding:20px 18px 16px}
  .hl{grid-template-columns:repeat(2,minmax(0,1fr))}
  .case-main{padding:2px 14px 18px}
  .prog5{padding:14px 16px}
  .wizard-card{padding:20px 18px}
  #status{bottom:16px;border-radius:12px}
}

/* AI review timing (#221): the case list's "AI review finished" marker. The running and finished lines are the check strip's. */
.finished-mark{display:inline-block;margin-left:8px;font-size:12px;font-weight:650;border-radius:999px;padding:2px 9px;background:var(--bluebg);color:var(--ink);border:1px solid var(--blue);white-space:nowrap}
/* A check queued or running: a quiet mark on the case row, never a moving bar (Arun, 2026-10-09). */
.running-mark{display:inline-block;margin-left:8px;font-size:12px;font-weight:600;border-radius:999px;padding:2px 9px;background:var(--fill);color:var(--ink2);border:1px solid var(--line);white-space:nowrap}
#paid-estimate{font-weight:600;color:var(--ink)}

.lab5-short{display:none}
/* To do on a phone (Round 8, R8-07): a tighter header, so the first task is on the first screen. The pace line and its
   chart stay on wider screens; the stages, their status and every fact stay here too. */
@media(max-width:760px){
  #detail .titlerow h2{font-size:19px;line-height:1.25}
  .casehead{padding:12px 12px 10px}
  .prog5{padding:8px 10px 6px;margin-top:8px}
  #detail .prog5 .pace{display:none}
  .case-body{gap:8px;margin-top:8px}
  .todo-bar{margin:4px 0 6px;gap:6px 8px}
  #detail .todo-tab{padding:6px 9px;min-height:36px}
  .titlerow{gap:2px 8px}
  .titlerow .status-pill{font-size:12px;padding:2px 9px}
  .hl-line{margin-top:2px;font-size:13px}
  .prog-line{margin-bottom:4px;font-size:13px}
  /* Each segment keeps its name and its status, one short line each, cut with an ellipsis rather than wrapped (R8-16). */
  .segs{gap:3px}
  .lab5,.sub5{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .lab5{font-size:11.5px}.sub5{font-size:10.5px}
  /* The gate stages show their short names here (D9, 2026-10-27); the full name stays for screen readers. */
  .lab5-full{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .lab5-short{display:inline}
  /* The breadcrumb keeps to one line (the case's full name is the heading just below it, and stays in the link for screen
     readers). */
  .check-strip{margin-top:6px;padding:8px 12px}
  .crumbs{min-width:0;max-width:100%;overflow:hidden}
  .crumbs ol{flex-wrap:nowrap;min-width:0}
  .crumbs li{white-space:nowrap;overflow:hidden;flex:0 1 auto}
  .crumbs li>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* --- The task side panel and the guided review on To do (Round 8, PR 3: R3-18, R3-29, R3-33, R8-10). The list stays in
       view beside the side panel, its row marked; expanded, in the review, or on a screen too narrow for both, the panel
       fills the screen and Tab stays inside it (dashboard-case.js). --- */
#detail .case-body[data-page=overview].task-open .task[aria-current=true]{background:var(--sel);box-shadow:inset 3px 0 0 var(--brand)}
#detail .case-body[data-page=overview].task-open tr[aria-current=true]>td{background:var(--sel)}
#detail .task-frame-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:-4px 0 12px;padding-bottom:10px;border-bottom:1px solid var(--line2)}
#detail .task-frame-label{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2)}
#detail .task-pos{font-size:13px;color:var(--ink2)}
#detail .task-frame-gap{flex:1 1 auto}
#detail .task-frame-head button{margin:0;min-height:36px}
#detail .task-nav{min-width:36px;padding:0 10px;font-size:18px;line-height:1}
#detail .guide-bar{display:block;width:100%;height:4px;margin:0 0 14px;accent-color:var(--brand)}
#detail .task-card{border:0;padding:0;margin:0 0 6px}
#detail .task-card h3{margin:4px 0 6px}
#detail .task-card .task-tags:empty{display:none}
#detail .task-card-act{margin-top:10px}
#detail .task-below{margin:12px 0 0}
#detail .guide-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:18px;padding-top:12px;border-top:1px solid var(--line2)}
#detail .guide-foot[hidden]{display:none}
#detail .guide-keys{flex:1 1 auto;font-size:12.5px;text-align:right}
#detail .guide-waiting{margin:10px 0;padding-left:20px;font-size:14px}
.tag-draft,.tag-unsaved{background:var(--amberbg);color:var(--ink);border:1px solid var(--amber)}
.field-error{margin:4px 0 0;font-size:13px;font-weight:600;color:var(--red)}
[aria-invalid=true]{border-color:var(--red)!important;box-shadow:0 0 0 1px var(--red)}
body.panel-modal{overflow:hidden}
#detail .case-body.task-full>.panel{position:fixed;inset:0;z-index:35;max-height:none;height:100%;border:0;border-radius:0;box-shadow:none;margin:0;padding:20px max(16px,calc((100vw - 860px)/2)) 40px;overflow:auto;background:var(--paper)}
@media(max-width:1060px){
  #detail .case-body.task-open>.panel{position:fixed;inset:0;z-index:35;max-height:none;height:100%;border:0;border-radius:0;box-shadow:none;margin:0;padding:14px 16px 32px;overflow:auto;background:var(--paper);order:0}
  #detail .guide-keys{display:none}
}

/* ===== Round 8, PR 6 (R3-27, R3-31, R8-04, R8-09, R8-12, R8-15, R8-17): dotted terms, info marks, hit areas and motion.
   How things look and move only: every word stays in the page, and no rule or control changes. ===== */
/* Dotted terms (R3-27): a word that opens the Help glossary's definition under its line, on a click, a tap or Enter. */
.term-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:8px 0;font-size:13px;color:var(--ink2)}
.term-row-label{font-weight:600}
button.term{display:inline;min-height:0;margin:0;padding:0;border:0;border-radius:2px;background:none;box-shadow:none;font:inherit;font-weight:550;color:var(--ink);
  text-decoration:underline dotted;text-decoration-color:var(--ink2);text-decoration-thickness:1.5px;text-underline-offset:3px;cursor:pointer;position:relative}
button.term:hover:not(:disabled){background:none;border:0;text-decoration-color:var(--brand)}
button.term[aria-expanded=true]{text-decoration-style:solid;text-decoration-color:var(--brand)}
.tt-pop{order:1;flex-basis:100%;display:block;max-width:62ch;margin:2px 0 4px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);
  box-shadow:var(--shadow-2);color:var(--ink);font-size:13.5px;font-weight:400;line-height:1.5;text-transform:none;letter-spacing:0;white-space:normal;transform-origin:top left}
.tt-pop .tt-term{display:block;font-weight:650;margin-bottom:2px}
/* A tag that explains itself is a button with the same toggletip (R3-31: no hover-only tooltips). */
#detail button.tag-tip{min-height:0;margin:0;padding:2px 8px;font-size:11.5px;font-weight:650;line-height:1.45;box-shadow:none;cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}
.finding-tags{align-items:center}
/* How-to text behind a tap-to-open i (R3-31), beside what it explains. */
.drop-title .info-mark,.confirm-heading .info-mark{margin-left:8px!important;vertical-align:middle}
.pane-h .info-mark{margin-left:auto}
.table-help{display:flex;align-items:center;gap:8px;margin:10px 0 0;font-size:13px}
/* A page-1 quote wraps instead of being cut, so the whole quotation is on screen without a tooltip. */
.page-quote{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}

/* Targets (R8-04, R8-09): on a touch screen (a coarse pointer), every control is at least 44px to hit. Buttons and chips
   grow to 44px; links, dotted terms, info marks and task titles keep their size and get a 44px hit area around them. A mouse,
   at any width, keeps the desktop's density (review of #359). */
@media (pointer:coarse){
  button{min-height:44px}
  button.small,#detail .cchip,.chip,.filters button,#detail .seg button,#detail .task-frame-head button,#detail .tri button,#detail .todo-tab,
  #detail .party-btn,.rail-link,#status .status-undo,#detail .queue-moves button,#detail .guide-foot button{min-height:44px}
  #status .status-dismiss,#detail .panel .x{width:44px;min-width:44px;height:44px;min-height:44px}
  #detail .task-nav,#detail .task-close{min-width:44px}
  button.term,button.linkbtn,#detail .info-mark,#detail .task-title,#detail button.tag-tip,#detail a:not(.rail-link),a.navlink{position:relative}
  button.term::after,button.linkbtn::after,#detail .info-mark::after,#detail .task-title::after,#detail button.tag-tip::after,#detail a:not(.rail-link)::after,a.navlink::after{
    content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
}

/* Motion (R8-12, R8-17): entry only, ease-out; closing stays instant ([hidden] is display:none). The guided review is not
   animated: it is opened and stepped through all day. */
@keyframes cr-fade-in{from{opacity:0}}
@keyframes cr-pop{from{opacity:0;transform:scale(.97)}}
@keyframes cr-in-x{from{opacity:0;transform:translateX(32px)}}
@keyframes cr-in-sheet-x{from{transform:translateX(100%)}}
@keyframes cr-in-sheet-y{from{transform:translateY(100%)}}
@media (prefers-reduced-motion:no-preference){
  /* The task side panel slides in over 240ms when it opens (data-enter, set by showPanel), never on a redraw or a move. */
  #detail .case-body.task-open>.panel[data-enter=true][aria-label=Task]{animation:cr-in-x .24s var(--ease-drawer)}
  /* Toggletips and info text scale up from .97 over 150ms. */
  .tt-pop:not([hidden]),.info-text:not([hidden]){animation:cr-pop .15s var(--ease-out)}
  details.decision>summary::before,details.risk-notes>summary::before{transition:transform .15s var(--ease-out)}
}
/* Full screen on a narrow screen it slides in from the right edge; on a phone, from the bottom. */
@media (prefers-reduced-motion:no-preference) and (max-width:1060px){#detail .case-body.task-open>.panel[data-enter=true][aria-label=Task]{animation-name:cr-in-sheet-x}}
@media (prefers-reduced-motion:no-preference) and (max-width:760px){#detail .case-body.task-open>.panel[data-enter=true][aria-label=Task]{animation-name:cr-in-sheet-y}}
/* Reduced motion: a 120ms fade only, with no movement and no scale anywhere. */
@media (prefers-reduced-motion:reduce){
  #detail .case-body.task-open>.panel[data-enter=true][aria-label=Task],.tt-pop:not([hidden]),.info-text:not([hidden]){animation:cr-fade-in .12s linear}
  .chev,details.decision>summary::before,details.risk-notes>summary::before{transition:none}
}
