/* Doxora design system
   Tokens first; components below use tokens only. 4px spacing grid, one radius scale, one shadow scale. */
/* Doxora typography: Manrope for headlines, Inter for text. Bundled, so nothing loads from outside. */
@font-face{font-family:"Manrope";font-style:normal;font-weight:200 800;font-display:swap;src:url(fonts/Manrope-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Manrope";font-style:normal;font-weight:200 800;font-display:swap;src:url(fonts/Manrope-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/Inter-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/Inter-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{
  --font:"Inter","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Roboto,Arial,sans-serif;
  --font-head:"Manrope","Inter","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Roboto,Arial,sans-serif;
  --ink:#111c30;--ink-2:#2b3b53;--muted:#4a5b73;--faint:#64748b;
  --bg:#f4f7fa;--surface:#fff;--surface-2:#f8fafc;--line:#e2e8ef;--line-strong:#cbd5df;
  --brand:#087f65;--brand-strong:#066652;--brand-soft:#e8f8f4;--brand-line:#b4eadd;--mint:#48dfc5;--violet:#7c3aed;--slate:#263c55;
  --rail:#0f1b2d;--rail-2:#1a2b42;--rail-ink:#cbd5e1;
  --good:#166534;--good-bg:#dcfce7;--warn:#92400e;--warn-bg:#fef3c7;--danger:#b91c1c;--danger-bg:#fee2e2;--info:#263c55;--info-bg:#e4ebf3;--neutral:#334155;--neutral-bg:#eef2f7;
  --r-sm:6px;--r-md:10px;--r-lg:14px;--r-pill:999px;
  --sh-1:0 1px 2px rgba(15,23,42,.06);--sh-2:0 4px 14px rgba(15,23,42,.08);--sh-3:0 18px 48px rgba(15,23,42,.22);
  --ring:0 0 0 3px rgba(8,127,101,.35);
  --ease:cubic-bezier(.2,.7,.2,1);--t:150ms;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--s10:40px;
  --control:40px;
  --brand-fill:var(--brand);--brand-fill-strong:var(--brand-strong);
  --h-115e59:#115e59;--h-166534:#166534;--h-1e40af:#1e40af;--h-2f5f94:#2f5f94;--h-475569:#475569;--h-5b21b6:#5b21b6;--h-64748b:#64748b;--h-6d28d9:#6d28d9;--h-86d9a3:#86d9a3;--h-92400e:#92400e;--h-9d174d:#9d174d;--h-b91c1c:#b91c1c;--h-bbf7d0:#bbf7d0;--h-be185d:#be185d;--h-ccfbf1:#ccfbf1;--h-d9ccf7:#d9ccf7;--h-dbeafe:#dbeafe;--h-dcfce7:#dcfce7;--h-e0b04a:#e0b04a;--h-e2e8ef:#e2e8ef;--h-e2e8f0:#e2e8f0;--h-e4eaf2:#e4eaf2;--h-e8edf5:#e8edf5;--h-ede9fe:#ede9fe;--h-eef2f7:#eef2f7;--h-f0a0a0:#f0a0a0;--h-f0fdf4:#f0fdf4;--h-f2c36b:#f2c36b;--h-f6f8fb:#f6f8fb;--h-f8fafc:#f8fafc;--h-faf7ff:#faf7ff;--h-fce7f3:#fce7f3;--h-fde68a:#fde68a;--h-fecaca:#fecaca;--h-fef2f2:#fef2f2;--h-fef3c7:#fef3c7;--h-fef3f2:#fef3f2;--h-fff7f7:#fff7f7;--h-fff8e6:#fff8e6;--h-fffbeb:#fffbeb;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 var(--font);display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh;font-variant-numeric:tabular-nums}
h1,h2,h3{margin:0;color:var(--ink);letter-spacing:-.01em}
h1{font-size:26px;line-height:1.2;font-weight:750;letter-spacing:-.025em}
h2{font-size:16px;line-height:1.3;font-weight:700}
h3{font-size:14px;font-weight:700}
p{margin:0 0 var(--s3)}
small{font-size:12px;color:var(--muted)}
.muted{color:var(--muted)}
a{color:var(--brand)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-sm)}
.skip{position:absolute;left:-999px;top:8px;background:var(--surface);padding:var(--s2) var(--s3);border-radius:var(--r-sm);z-index:100;box-shadow:var(--sh-2)}
.skip:focus{left:8px}
.icon{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
.icon.sm{width:14px;height:14px;vertical-align:-2px}

/* ---- buttons ---- */
button{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:var(--control);padding:0 var(--s4);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);border-radius:var(--r-md);font-weight:600;font-size:14px;line-height:1.2;cursor:pointer;transition:background var(--t) var(--ease),border-color var(--t) var(--ease),box-shadow var(--t) var(--ease);touch-action:manipulation}
button:hover{background:var(--surface-2);border-color:var(--faint)}
button:active{background:var(--neutral-bg)}
button:disabled{opacity:.5;cursor:not-allowed}
button.primary,.primary-link{background:var(--brand-fill);border-color:var(--brand);color:#fff;box-shadow:var(--sh-1)}
button.primary:hover,.primary-link:hover{background:var(--brand-fill-strong);border-color:var(--brand-strong)}
button.primary:disabled{background:var(--brand-fill);}
button.quiet{border-color:transparent;background:transparent;color:var(--ink-2)}
button.quiet:hover{background:var(--neutral-bg);border-color:transparent}
button.link,td button.link{display:inline;min-height:0;padding:0;border:none;background:none;color:var(--brand);font-weight:650;text-align:left;box-shadow:none;border-radius:var(--r-sm)}
button.link:hover{background:none;text-decoration:underline}
button.wide{width:100%}
.primary-link{display:inline-flex;align-items:center;gap:var(--s2);min-height:var(--control);padding:0 var(--s4);border-radius:var(--r-md);text-decoration:none;font-weight:600}

/* ---- forms ---- */
label{display:grid;gap:6px;margin:var(--s3) 0;font-weight:600;font-size:13px;color:var(--ink-2)}
input,select,textarea{width:100%;min-height:var(--control);padding:0 var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-weight:400;font-size:14px;transition:border-color var(--t) var(--ease),box-shadow var(--t) var(--ease)}
textarea{padding:var(--s2) var(--s3);min-height:96px;resize:vertical;line-height:1.5}
input::placeholder,textarea::placeholder{color:var(--faint)}
input:hover,select:hover,textarea:hover{border-color:var(--faint)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}
select{appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;cursor:pointer}
input[type=checkbox]{width:18px;height:18px;min-height:0;padding:0;accent-color:var(--brand)}
input[type=file]{padding:6px var(--s2);line-height:26px}
input[type=search]{appearance:none}
.inline-check{display:flex;align-items:center;gap:var(--s2);font-weight:550;margin:var(--s2) 0;grid-column:1/-1}
fieldset{border:1px solid var(--line);border-radius:var(--r-md);margin:var(--s4) 0;padding:var(--s1) var(--s4) var(--s3)}
legend{font-weight:700;font-size:13px;padding:0 var(--s2);color:var(--ink-2)}
.brief-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s4)}
.brief-form:has(textarea){grid-template-columns:1fr}
.form-error,#form-error,#login-error{color:var(--danger);font-weight:600;font-size:13px;margin:var(--s2) 0 0}
#form-error:empty,#login-error:empty{display:none}

/* ---- shell ---- */
.rail{background:linear-gradient(180deg,var(--rail) 0%,#0a1423 100%);color:var(--rail-ink);display:flex;flex-direction:column;padding:var(--s5) var(--s3);position:sticky;top:0;height:100vh;overflow:auto}
.brand{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:0 var(--s2);color:#fff}
.brand img{height:28px;width:auto;display:block}
.brand .mark,.brand-lg .mark{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--brand-fill);color:#fff;flex:none}
.brand small{display:block;font-size:12px;letter-spacing:.14em;color:#8fa3b8;font-weight:600;margin-top:0}
.nav-label{margin:var(--s8) var(--s2) var(--s2);color:#94a3b8;font-size:12px;font-weight:700;letter-spacing:.12em}
nav button{width:100%;justify-content:flex-start;gap:var(--s3);margin-bottom:2px;border-color:transparent;background:transparent;color:var(--rail-ink);padding:0 var(--s3);font-weight:550}
nav button:hover{background:rgba(255,255,255,.06);border-color:transparent;color:#fff}
nav button.active{background:var(--rail-2);color:#fff;box-shadow:inset 3px 0 0 var(--mint)}
nav button:focus-visible{box-shadow:0 0 0 3px rgba(72,223,197,.55)}
.rail-foot{margin-top:auto;display:flex;gap:var(--s3);align-items:center;padding:var(--s5) var(--s2) 0;border-top:1px solid rgba(255,255,255,.08);color:#fff;font-weight:600;font-size:13px;line-height:1.3}
.rail-foot small{display:block;color:#94a3b8;font-weight:500;font-size:12px}
.avatar{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--brand-soft);color:var(--brand-strong);font-size:12px;font-weight:750;flex:none;letter-spacing:.02em}
.avatar.sm{width:22px;height:22px;font-size:12px}
.top{position:sticky;top:0;z-index:10;min-height:60px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.92);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:space-between;gap:var(--s4);padding:var(--s2) var(--s8);color:var(--muted);font-size:13px}
.top b{margin:0 var(--s2);color:var(--line-strong);font-weight:400}
.top strong{color:var(--ink)}
#local-tools{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap;justify-content:flex-end}
#local-tools a{color:var(--brand);font-weight:650;text-decoration:none;font-size:13px;display:inline-flex;align-items:center;gap:6px;min-height:var(--control);padding:0 var(--s2);border-radius:var(--r-md)}
#local-tools a:hover{background:var(--brand-soft)}
.demo{display:inline-flex;align-items:center;gap:6px;color:var(--good);background:var(--good-bg);padding:5px 12px;border-radius:var(--r-pill);font-size:12px;font-weight:700;white-space:nowrap}
.demo.attention{background:var(--warn-bg);color:var(--warn)}
.demo:empty{display:none}
.bell{position:relative;width:var(--control);padding:0}
.bell b{position:absolute;top:2px;right:2px;background:var(--danger);color:#fff;border-radius:var(--r-pill);font-size:12px;line-height:1;min-width:18px;padding:3px 5px;text-align:center;font-weight:700}
.bell b[hidden]{display:none}
.switcher{display:flex;align-items:center;gap:var(--s2);margin:0;font-weight:600;font-size:12px;color:var(--muted);white-space:nowrap}
.switcher select{width:auto;min-height:36px;font-size:13px}
#app{padding:var(--s8);max-width:1600px;width:100%;margin:0 auto}
#app:focus,h1:focus{outline:none}

/* ---- page heading ---- */
.heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s4);margin-bottom:var(--s6)}
.heading .actions{justify-content:flex-end}
.eyebrow{color:var(--brand);font-size:12px;letter-spacing:.1em;font-weight:750;text-transform:uppercase}
.heading h1{margin-top:var(--s1)}
.heading .muted{margin:var(--s1) 0 0;max-width:62ch}
.heading.hero{padding:0}
.spaced{margin-top:var(--s3)}
.actions{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.toolbar,.proof-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}

/* ---- surfaces ---- */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s5);box-shadow:var(--sh-1)}
.panel>h2:first-child,.panel>.proof-head:first-child{margin-bottom:var(--s3)}
.queue{padding:0;overflow:hidden}
.queue .toolbar{padding:var(--s3) var(--s4);border-bottom:1px solid var(--line)}
.queue .toolbar h2{margin:0}
.toolbar .actions{gap:var(--s2)}
.toolbar select,.toolbar input[type=search]{width:auto;min-width:170px;min-height:36px}
.toolbar input[type=search]{padding-left:var(--s3);min-width:220px}
.csv-link{color:var(--brand);font-weight:650;text-decoration:none;font-size:13px;display:inline-flex;align-items:center;gap:6px;padding:0 var(--s2)}
.toggle{min-height:36px;padding:0 var(--s3);font-size:13px}
.toggle.active{background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand-strong)}

/* ---- stat tiles ---- */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s4);margin-bottom:var(--s5)}
.stat{display:grid;grid-template-columns:1fr auto;grid-template-areas:"n i" "l i";align-items:center;text-align:left;gap:0 var(--s3);padding:var(--s4) var(--s5);min-height:88px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);color:var(--muted);font-weight:600;font-size:13px}
.stat:hover{background:var(--surface);border-color:var(--brand-line);box-shadow:var(--sh-2)}
.stat strong{grid-area:n;font-size:28px;line-height:1.1;color:var(--ink);font-weight:750;letter-spacing:-.03em}
.stat i{grid-area:i;display:grid;place-items:center;width:38px;height:38px;border-radius:var(--r-md);background:var(--brand-soft);color:var(--brand);font-style:normal}
.stat.active{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand)}
.stat.static{cursor:default;display:block}.stat.static:hover{border-color:var(--line);box-shadow:var(--sh-1)}
.stat.static strong{display:block;margin-bottom:4px}

/* ---- badges ---- */
.badge{display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-pill);background:var(--info-bg);color:var(--info);padding:3px 10px;font-size:12px;font-weight:700;line-height:1.4;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.badge.good{background:var(--good-bg);color:var(--good)}
.badge.warn{background:var(--warn-bg);color:var(--warn)}
.badge.danger{background:var(--danger-bg);color:var(--danger)}
.badge.neutral{background:var(--neutral-bg);color:var(--neutral)}
.late{color:var(--danger)!important;font-weight:700}

/* ---- table ---- */
.scroll{overflow:auto;max-width:100%}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:var(--s3) var(--s4);vertical-align:middle}
td{border-top:1px solid var(--line)}
th{position:sticky;top:0;font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;background:var(--surface-2);color:var(--muted);white-space:nowrap;border-bottom:1px solid var(--line)}
tbody tr{transition:background var(--t) var(--ease)}
tbody tr:hover{background:var(--surface-2)}
td small{display:block;margin-top:2px}
td:first-child{min-width:240px}
.empty{padding:var(--s10) var(--s4);color:var(--muted);text-align:center}
.empty-state{display:grid;justify-items:center;gap:var(--s2);padding:var(--s10) var(--s4);color:var(--muted);text-align:center}
.empty-state .icon{width:28px;height:28px;color:var(--faint)}
.empty-state strong{color:var(--ink)}

/* ---- board ---- */
.board{display:flex;gap:var(--s3);overflow-x:auto;padding:var(--s4);background:var(--surface-2);align-items:flex-start;min-height:360px;scroll-snap-type:x proximity}
.lane{flex:1 0 188px;max-width:340px;border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s2);background:var(--h-eef2f7);min-width:0;--lane:#64748b;scroll-snap-align:start}
.lane.blue{--lane:#3b6ea5}.lane.amber{--lane:#b45309}.lane.violet{--lane:#7c3aed}.lane.rose{--lane:#be185d}.lane.green{--lane:#15803d}
.lane h3{display:flex;gap:var(--s2);align-items:center;font-size:12px;letter-spacing:.02em;padding:var(--s2) var(--s2) var(--s3);color:var(--ink-2);white-space:nowrap}
.lane h3 i{width:8px;height:8px;border-radius:50%;background:var(--lane);flex:none}
.lane h3 small{margin-left:auto;background:var(--surface);border-radius:var(--r-pill);padding:1px 8px;font-weight:700;color:var(--ink-2)}
.lane.drag-over{outline:2px dashed var(--brand);outline-offset:-2px;background:var(--brand-soft)}
.card{background:var(--surface);border-radius:var(--r-md);border:1px solid var(--line);border-top:3px solid var(--lane);padding:var(--s3);margin:0 0 var(--s2);box-shadow:var(--sh-1);cursor:grab;transition:box-shadow var(--t) var(--ease),transform var(--t) var(--ease)}
.card:hover{box-shadow:var(--sh-2)}
.card[draggable=false]{cursor:default}
.card:active{cursor:grabbing}
.card.dragging{opacity:.5}
.card-meta{font-size:12px;font-weight:650;color:var(--muted);display:flex;align-items:center;justify-content:space-between;gap:var(--s2);min-height:22px;letter-spacing:.02em}
.card .badge{padding:1px 8px;font-size:12px}
.card button.link{font-weight:700;color:var(--ink);line-height:1.35;margin-top:var(--s1);overflow-wrap:anywhere;font-size:14px;display:block}
.card button.link:hover{color:var(--brand)}
.card p{font-size:12px;color:var(--muted);margin:var(--s2) 0 var(--s3);line-height:1.4;overflow-wrap:anywhere}
.card footer{display:flex;justify-content:space-between;align-items:center;gap:var(--s2);padding-top:var(--s2);border-top:1px solid var(--line);font-size:12px;color:var(--ink-2);font-weight:550}
.card footer span{display:inline-flex;align-items:center;gap:6px;min-width:0}
.card footer time{white-space:nowrap;display:inline-flex;align-items:center;gap:4px;color:var(--muted)}
.lane-empty{border:1px dashed var(--line-strong);border-radius:var(--r-sm);text-align:center;color:var(--faint);padding:var(--s4) var(--s2);font-size:12px;margin:0}

/* ---- calendar ---- */
.calendar{min-width:720px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line)}
.weekday{background:var(--surface-2);color:var(--muted);padding:var(--s2) var(--s3);font-weight:700;font-size:12px;letter-spacing:.07em;text-transform:uppercase;border-bottom:1px solid var(--line)}
.day{min-height:104px;padding:var(--s2);border-bottom:1px solid var(--line);border-right:1px solid var(--line);min-width:0;display:flex;flex-direction:column;gap:4px}
.day>strong{font-size:12px;color:var(--muted);width:24px;height:24px;display:grid;place-items:center;border-radius:50%}
.day.blank{background:var(--surface-2)}
.day.today{background:var(--brand-soft)}
.day.today>strong{background:var(--brand-fill);color:#fff}
.calendar-item{display:block;min-height:0;padding:4px var(--s2);text-align:left;font-size:12px;font-weight:600;line-height:1.3;width:100%;overflow-wrap:anywhere;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface);justify-content:flex-start}
.calendar-item.artwork{border-left:3px solid #7c3aed}
.calendar-item.final{border-left:3px solid var(--brand);background:var(--brand-soft)}

/* ---- docket detail ---- */
.heading h1{font-size:28px}
.heading .eyebrow.spaced{margin-top:var(--s3)}
.heading .badge{margin:var(--s2) var(--s1) 0 0}
.tabs{display:flex;gap:var(--s1);margin:0 0 var(--s5);border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--muted);padding:0 var(--s4);min-height:44px;font-weight:650;margin-bottom:-1px;white-space:nowrap}
.tabs button:hover{background:transparent;color:var(--ink);border-bottom-color:var(--line-strong)}
.tabs button.active{color:var(--brand);border-bottom-color:var(--brand)}
.detail{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--s4);align-items:start}
.stack{display:grid;gap:var(--s4);align-content:start}
.meta{display:grid;gap:var(--s3);margin:var(--s3) 0 0}
.meta div{display:flex;justify-content:space-between;gap:var(--s3)}
.meta dt{color:var(--muted)}
.meta dd{margin:0;text-align:right;font-weight:600}
.brief{white-space:pre-wrap;overflow-wrap:anywhere;max-width:72ch}
.next-action{border:1px solid var(--brand-line);background:var(--brand-soft);border-radius:var(--r-md);padding:var(--s4) var(--s5);margin-top:var(--s5)}
.next-action h2{margin:var(--s1) 0 var(--s2);font-size:17px}
.brief-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:var(--s3);margin:var(--s4) 0}
.brief-grid>div{padding:var(--s3);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);overflow-wrap:anywhere}
.brief-grid dt{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.brief-grid dd{margin:4px 0 0;font-weight:600}
.brief-section{border-top:1px solid var(--line);padding-top:var(--s4);margin-top:var(--s4)}
.timeline{margin:0;padding:0;list-style:none;border-left:2px solid var(--line)}
.timeline li{position:relative;padding:0 0 var(--s4) var(--s5)}
.timeline li::before{content:"";position:absolute;left:-6px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--brand)}
.timeline small{display:block;margin-top:2px}
.tasks{list-style:none;padding:0;margin:var(--s2) 0 0}
.tasks li{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);border-top:1px solid var(--line);padding:var(--s3) 0}
.tasks small{display:block;margin-top:2px}
.release-summary{margin-top:var(--s5);border-top:1px solid var(--line);padding-top:var(--s4)}
.release-summary li{margin:var(--s1) 0;overflow-wrap:anywhere}
.file-link{color:var(--brand);font-weight:600}
.note{border-top:1px solid var(--line);padding:var(--s3) 0;overflow-wrap:anywhere}
.note:first-of-type{border-top:none}
.note p{margin:var(--s1) 0}
.note.focus{background:var(--brand-soft);margin:0 calc(var(--s2) * -1);padding-left:var(--s2);padding-right:var(--s2);border-radius:var(--r-sm)}
.proof-head{align-items:flex-start;margin-bottom:var(--s3)}
.proof-head h2{margin-bottom:var(--s1)}
.proof-list{display:flex;flex-wrap:wrap;gap:var(--s2);margin:var(--s3) 0 var(--s5)}
.proof-list button{min-height:36px;font-size:13px}
.proof-list .active{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-strong)}
.review{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--s4);margin-top:var(--s4);align-items:start}
.review aside{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s4);background:var(--surface-2);position:sticky;top:76px;max-height:calc(100vh - 100px);overflow:auto}
.review aside h3{margin-bottom:var(--s2)}
.pages{display:grid;gap:var(--s2);min-width:0;align-content:start}
.pages.compare{grid-template-columns:repeat(2,minmax(0,1fr))}
.sheet{background:var(--h-e8edf5);border-radius:var(--r-md);padding:var(--s3);min-width:0}
.sheet>small{display:block;margin:0 0 var(--s2);font-weight:700;letter-spacing:.06em}
.paper{position:relative;background:var(--surface);line-height:0;box-shadow:var(--sh-1);min-height:120px}
.paper canvas,.paper img,.paper video{width:100%;height:auto;display:block}
.paper audio{width:100%;display:block;padding:var(--s3)}
.paper button.pin{position:absolute;transform:translate(-50%,-50%);border:2px solid var(--surface);background:var(--brand-fill);color:#fff;border-radius:50%;padding:0;width:26px;height:26px;min-height:0;font-size:12px;box-shadow:var(--sh-2)}
.pinning .paper.current{cursor:crosshair;outline:2px dashed var(--brand);outline-offset:2px}
.loading{padding:var(--s6);line-height:1.4;color:var(--muted);text-align:center;font-size:13px}
.review+*{}
#page-label{font-weight:600;min-width:90px;text-align:center}

/* ---- dialog and toast ---- */
dialog{border:none;border-radius:var(--r-lg);width:min(480px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:var(--s6);background:var(--surface);color:var(--ink);box-shadow:var(--sh-3)}
dialog::backdrop{background:rgba(15,23,42,.55)}
dialog:has(.brief-form){width:min(760px,calc(100vw - 24px))}
dialog[open]{animation:pop .18s var(--ease)}
dialog h2{font-size:18px;margin-bottom:var(--s2)}
dialog .actions{margin-top:var(--s5);justify-content:flex-end;padding-top:var(--s4);border-top:1px solid var(--line)}
dialog .meta{margin-bottom:var(--s3)}
#toast{position:fixed;bottom:var(--s5);left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:var(--s3) var(--s5);border-radius:var(--r-md);max-width:min(560px,calc(100vw - 32px));box-shadow:var(--sh-3);z-index:60;font-weight:550}
#toast:empty{display:none}
.notes-list{list-style:none;padding:0;margin:var(--s3) 0 0;max-height:50vh;overflow:auto}
.notes-list li{border-top:1px solid var(--line);padding:var(--s3) 0 var(--s3) var(--s4);position:relative}
.notes-list li.unread{font-weight:650}
.notes-list li.unread::before{content:"";position:absolute;left:0;top:18px;width:8px;height:8px;border-radius:50%;background:var(--brand-fill)}
.notes-list small{display:block;font-weight:400;margin-top:2px}
.notes-list button.link{font:inherit;font-weight:inherit;color:var(--ink)}
.notes-list button.link:hover{color:var(--brand)}

/* ---- login ---- */
body[data-state=login]{grid-template-columns:1fr}
body[data-state=login] .rail{display:none}
body[data-state=login] .top{justify-content:center}
.login{max-width:440px;margin:6vh auto 0;padding:var(--s8);box-shadow:var(--sh-2)}
.login h1{font-size:26px;margin:var(--s4) 0 var(--s1)}
.brand-lg{display:flex;align-items:center;gap:var(--s3);font-weight:750;font-size:17px}
.demo-accounts{margin-top:var(--s6);border-top:1px solid var(--line);padding-top:var(--s4)}
.demo-accounts ul{list-style:none;padding:0;margin:var(--s2) 0 0;display:grid;gap:2px}
.demo-accounts li{padding:6px 0;display:flex;gap:var(--s2);align-items:baseline;flex-wrap:wrap}
.two-up{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:var(--s4);align-items:start}

@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}

/* ---- responsive ---- */
@media(max-width:1280px){.detail{grid-template-columns:minmax(0,1fr) 280px}.review{grid-template-columns:1fr}.review aside{position:static;max-height:none}}
@media(max-width:1000px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.two-up{grid-template-columns:1fr}.detail{grid-template-columns:1fr}}
@media(max-width:860px){
  body{grid-template-columns:1fr}
  .rail{position:static;height:auto;flex-direction:row;align-items:center;gap:var(--s3);padding:var(--s2) var(--s3);overflow:visible}
  .brand small,.nav-label,.rail-foot{display:none}
  .brand{flex:none;padding:0}
  nav{display:flex;gap:var(--s1);overflow-x:auto;flex:1}
  nav button{width:auto;white-space:nowrap;margin:0;min-height:44px}
  .top{position:static;padding:var(--s2) var(--s4)}
  #app{padding:var(--s4)}
  h1,.heading h1{font-size:24px}
  .heading{flex-direction:column}
  .toolbar{flex-wrap:wrap}
  .toolbar select,.toolbar input[type=search]{flex:1;min-width:140px}
  .brief-form{grid-template-columns:1fr}
  button,input,select{min-height:44px}
  input,select,textarea{font-size:16px}
  .pages.compare{grid-template-columns:1fr}
}
@media(max-width:520px){.stats{grid-template-columns:1fr 1fr;gap:var(--s2)}.stat{padding:var(--s3)}.stat strong{font-size:24px}.stat i{display:none}dialog{padding:var(--s4)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.rail,.top,#toast,.actions button,.tabs{display:none}body{display:block;background:var(--surface)}#app{padding:0}.panel{box-shadow:none;break-inside:avoid}}

/* ---- refinements ---- */
.heading button.link{display:inline-flex;align-items:center;gap:6px;min-height:32px;color:var(--muted);font-weight:600}
.heading button.link:hover{color:var(--brand)}
.actions label{margin:0}
.actions.spaced{align-items:flex-end}
.actions.spaced button{min-height:var(--control)}
.proof-head .badge+small{margin-left:var(--s2)}
.panel .proof-head+.proof-head{margin-top:var(--s2)}
dialog .actions{position:sticky;bottom:calc(var(--s6) * -1);background:var(--surface);margin:var(--s5) calc(var(--s6) * -1) calc(var(--s6) * -1);padding:var(--s4) var(--s6)}
@media(max-width:520px){dialog .actions{margin:var(--s5) calc(var(--s4) * -1) calc(var(--s4) * -1);padding:var(--s3) var(--s4);bottom:calc(var(--s4) * -1)}}
h1:focus-visible,#app:focus-visible{box-shadow:none;outline:none}
@media(max-width:860px){body{grid-template-rows:auto auto 1fr}.rail{align-self:start}.switcher{font-size:12px}.top{flex-wrap:wrap}#local-tools{justify-content:flex-start}.top>span{width:100%}}
main{min-width:0}
@media(max-width:860px){body{grid-template-columns:minmax(0,1fr)}}
body[data-state=login]{grid-template-columns:minmax(0,1fr)}
@media(max-width:520px){.stat{grid-template-columns:1fr;grid-template-areas:"n" "l";align-content:center}}
body[data-state=login] .top{display:none}

/* ---- docket grid (Smartsheet-style list) ---- */
.health{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:12px;white-space:nowrap;color:var(--ink-2)}
.health i{width:10px;height:10px;border-radius:50%;background:var(--faint);flex:none;box-shadow:0 0 0 2px var(--surface),0 0 0 3px currentColor}
.health.green{color:var(--good)}.health.green i{background:#16a34a}
.health.amber{color:var(--warn)}.health.amber i{background:#f59e0b}
.health.red{color:var(--danger)}.health.red i{background:#dc2626}
.health.grey{color:var(--muted)}.health.grey i{background:#94a3b8}
table.grid{min-width:100%;width:max-content}
table.grid th,table.grid td{padding:10px 14px;white-space:nowrap}
table.grid td.col-project{white-space:normal;min-width:260px;max-width:380px}
table.grid td.col-next{white-space:normal;min-width:200px;max-width:300px}
table.grid td:first-child{min-width:0}
.sort{min-height:0;padding:0;border:none;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;display:inline-flex;align-items:center;gap:4px;box-shadow:none;border-radius:var(--r-sm)}
.sort:hover{background:none;color:var(--ink)}
.icon.flip{transform:rotate(180deg)}
.docket-no{font-weight:700;color:var(--ink-2);letter-spacing:.01em}
.project-cell{display:flex;flex-direction:column;gap:2px}
.counts{display:inline-flex;gap:var(--s3);color:var(--muted);font-size:12px;font-weight:600}
.counts span{display:inline-flex;align-items:center;gap:3px}
.counts:empty{display:none}
.person{display:inline-flex;align-items:center;gap:6px;font-weight:550}
.people{display:inline-flex;flex-wrap:wrap;gap:var(--s1) var(--s3)}
td .person+small,td small:not(:only-child){margin-top:2px}
button.link.struck,tr.cancelled .docket-no{text-decoration:line-through}
tr.cancelled td{color:var(--muted)}
tr.cancelled .badge{opacity:.8}
.column-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s4);max-height:46vh;overflow:auto;padding:var(--s1) 0}
@media(max-width:520px){.column-list{grid-template-columns:1fr}}

/* ---- board card details ---- */
.card-flags{display:inline-flex;align-items:center;gap:var(--s2)}
.card-people{margin:0 0 var(--s2);display:grid;gap:2px}
.card-people div{display:flex;gap:var(--s2);font-size:12px;line-height:1.4}
.card-people dt{color:var(--faint);min-width:72px;font-weight:600}
.card-people dd{margin:0;color:var(--ink-2);font-weight:550;overflow-wrap:anywhere}
.card-tags{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 var(--s3)}
.card-tags span{font-size:12px;font-weight:700;letter-spacing:.03em;padding:2px 7px;border-radius:var(--r-sm);background:var(--neutral-bg);color:var(--neutral)}
.card-tags:empty{display:none}
.more{font-style:normal;font-size:12px;font-weight:700;background:var(--brand-soft);color:var(--brand-strong);border-radius:var(--r-pill);padding:1px 6px;margin-left:2px}
.lane{flex-basis:220px}
.card p{margin:var(--s2) 0}
.card-meta{flex-wrap:wrap;row-gap:4px}
.docket-no{white-space:nowrap}
.card-people dt{min-width:84px}

/* ---- review chain ---- */
.chain .muted{margin:var(--s2) 0 var(--s3)}
#chain-rows{list-style:none;margin:0 0 var(--s3);padding:0;counter-reset:chain;display:grid;gap:var(--s2)}
.chain-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto auto;grid-template-areas:"n sel up down rm" ". em em em em";gap:var(--s2);align-items:center;counter-increment:chain}
.chain-row::before{content:counter(chain);grid-area:n;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--brand-soft);color:var(--brand-strong);font-weight:700;font-size:12px}
.chain-row select{grid-area:sel}.chain-row .guest-email{grid-area:em}.chain-row .guest-email[hidden]{display:none}
.icon-btn{min-height:36px;width:36px;padding:0}
.chain-progress{list-style:none;margin:var(--s4) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s2)}
.chain-progress .step{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"dot who" "dot st" "dot act";gap:0 var(--s2);align-items:center;padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);min-width:170px}
.chain-progress .dot{grid-area:dot;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--neutral-bg);color:var(--neutral);font-weight:700;font-size:12px}
.chain-progress .who{grid-area:who;font-weight:650;overflow-wrap:anywhere}
.chain-progress small{grid-area:st}.chain-progress .link{font-size:12px}.chain-progress .act{grid-area:act;display:flex;flex-wrap:wrap;gap:0 var(--s3);justify-self:start}
.chain-progress .step.done{background:var(--h-f0fdf4);border-color:var(--h-bbf7d0)}.chain-progress .step.done .dot{background:var(--good-bg);color:var(--good)}
.chain-progress .step.now{background:var(--brand-soft);border-color:var(--brand-line)}.chain-progress .step.now .dot{background:var(--brand-fill);color:#fff}
.chain-progress .step.changes{background:var(--h-fffbeb);border-color:var(--h-fde68a)}.chain-progress .step.changes .dot{background:var(--warn-bg);color:var(--warn)}
.tag{font-style:normal;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background:var(--neutral-bg);color:var(--neutral);border-radius:var(--r-sm);padding:1px 6px;margin-left:4px}
/* ---- outside reviewer page ---- */
body[data-state=guest]{grid-template-columns:minmax(0,1fr)}
body[data-state=guest] .rail{display:none}
body[data-state=guest] .top{justify-content:space-between}
.guest-wrap{display:grid;gap:var(--s4);max-width:1200px;margin:0 auto}
.guest-wrap h1{margin:var(--s1) 0 var(--s2)}
.guest-wrap .review{margin-top:0}

/* ---- dashboard ---- */
.dash-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:var(--s4);align-items:start}
.dash-main,.dash-side{display:grid;gap:var(--s4);align-content:start;min-width:0}
@media(max-width:1100px){.dash-grid{grid-template-columns:1fr}}
.todo-list,.mini-list{list-style:none;margin:0;padding:0}
.todo{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--s3);align-items:center;padding:var(--s3) 0;border-top:1px solid var(--line)}
.todo:first-child{border-top:none}
.todo-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--r-md);background:var(--brand-soft);color:var(--brand)}
.todo-icon.review{background:var(--h-ede9fe);color:var(--h-6d28d9)}.todo-icon.revise{background:var(--warn-bg);color:var(--warn)}.todo-icon.respond{background:var(--h-fce7f3);color:var(--h-be185d)}.todo-icon.task{background:var(--good-bg);color:var(--good)}.todo-icon.assign{background:var(--neutral-bg);color:var(--neutral)}
.todo-main{min-width:0}.todo-main button.link{font-size:14px}.todo-main small{display:block;margin-top:2px;overflow-wrap:anywhere}
.mini-list li{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s3);padding:var(--s2) 0;border-top:1px solid var(--line)}
.mini-list li:first-child{border-top:none}.mini-list small{display:block;margin-top:2px}
.due-chip{display:inline-block;font-size:12px;font-weight:700;padding:3px 9px;border-radius:var(--r-pill);background:var(--neutral-bg);color:var(--neutral);white-space:nowrap}
.due-chip.soon{background:var(--warn-bg);color:var(--warn)}.due-chip.late{background:var(--danger-bg);color:var(--danger)}
.chips{display:flex;flex-wrap:wrap;gap:var(--s2)}
.chip{min-height:34px;padding:0 var(--s3);font-size:13px;border-radius:var(--r-pill)}
.chip b{margin-left:4px;background:var(--neutral-bg);border-radius:var(--r-pill);padding:0 7px;font-size:12px;color:var(--ink-2)}
.chip.active{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-strong)}
.chip.active b{background:var(--surface);color:var(--brand-strong)}
table.compact th,table.compact td{padding:8px 12px}
.icon.filled{fill:currentColor}
.stats .stat.static i{grid-area:i}
.center{text-align:center}
.pad{padding:0 var(--s4) var(--s4)}
.button-link{display:inline-flex;align-items:center;gap:var(--s2);min-height:var(--control);padding:0 var(--s4);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-weight:600;text-decoration:none}
.button-link:hover{background:var(--surface-2);border-color:var(--faint)}

/* ---- linked folders ---- */
.folders{list-style:none;margin:0;padding:0;display:grid;gap:var(--s3)}
.folder-card{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s4);background:var(--surface-2);display:grid;gap:var(--s3)}
.folder-head{display:flex;gap:var(--s3);align-items:flex-start}
.folder-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:var(--r-md);background:var(--brand-soft);color:var(--brand);flex:none}
.folder-info{min-width:0}.folder-title{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}
code.path{display:block;margin:var(--s2) 0;padding:6px 10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);font:12px/1.5 ui-monospace,Consolas,monospace;overflow-wrap:anywhere;word-break:break-all}
.browse:empty{display:none}.browse{border-top:1px solid var(--line);padding-top:var(--s3)}
.browse-head{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:center;margin-bottom:var(--s2)}
.file-list{list-style:none;margin:0;padding:0;max-height:300px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm)}
.file-list li{display:flex;justify-content:space-between;gap:var(--s3);padding:7px 12px;border-top:1px solid var(--line)}.file-list li:first-child{border-top:none}
.file-list li>span,.file-list li>button{display:inline-flex;align-items:center;gap:6px;min-width:0;overflow-wrap:anywhere}

/* ---- people, teams, setup, imports ---- */
.team-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--s3)}
.team-card{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s3) var(--s4);background:var(--surface-2)}
.team-card small{display:block;margin-top:2px}
.bulk-bar{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);background:var(--brand-soft);border-bottom:1px solid var(--brand-line)}
.bulk-bar[hidden]{display:none}
.row-actions{white-space:nowrap}
.checklist{list-style:none;margin:var(--s4) 0 0;padding:0}
.checklist li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--s3);align-items:center;padding:var(--s3) 0;border-top:1px solid var(--line)}
.checklist li:first-child{border-top:none}.checklist small{display:block;margin-top:2px}
.tick{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:2px solid var(--line-strong);color:#fff}
.checklist li.done .tick{background:#16a34a;border-color:#16a34a}
.progress{height:8px;background:var(--neutral-bg);border-radius:var(--r-pill);overflow:hidden;margin-top:var(--s2)}
.progress span{display:block;height:100%;background:var(--brand-fill)}
.setup-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
@media(max-width:1000px){.setup-grid{grid-template-columns:1fr}.checklist li{grid-template-columns:auto 1fr}.checklist li .actions{grid-column:2}}
dialog:has(.preview){width:min(980px,calc(100vw - 24px))}
.stats.mini{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:var(--s2);margin:var(--s3) 0}
.stats.mini .stat{min-height:0;padding:var(--s3) var(--s4)}.stats.mini .stat strong{font-size:22px}
.stat.static.good{border-color:var(--h-bbf7d0)}.stat.static.bad{border-color:var(--h-fecaca);background:var(--h-fff7f7)}
.preview{max-height:42vh;border:1px solid var(--line);border-radius:var(--r-md);margin:var(--s3) 0}
.preview td small{display:block;max-width:340px;white-space:normal}
.mapping{margin:var(--s3) 0;border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s2) var(--s4)}
.mapping summary{cursor:pointer;font-weight:650;padding:var(--s2) 0}
.mapping-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s4);max-height:34vh;overflow:auto}
@media(max-width:600px){.mapping-grid{grid-template-columns:1fr}}
.dash-main,.dash-side,.stack{grid-template-columns:minmax(0,1fr)}
.dash-main>.panel,.dash-side>.panel,.stack>.panel{min-width:0}
.panel .proof-head{flex-wrap:wrap}

/* ---- sign-in options ---- */
.ms-btn{justify-content:center;gap:var(--s3);margin:var(--s3) 0}
.divider{display:flex;align-items:center;gap:var(--s3);color:var(--faint);font-size:12px;margin:var(--s4) 0}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line)}
.admin-login{margin-top:var(--s3)}.admin-login summary{cursor:pointer;color:var(--muted);font-weight:600;padding:var(--s2) 0}
#sso-error{color:var(--danger);font-weight:600}

/* ---- assigning work ---- */
select.inline-assign{min-height:32px;font-size:13px;padding:0 28px 0 8px;width:auto;min-width:170px;max-width:240px}
.todo-side{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;justify-content:flex-end}
.inline-label{display:flex;align-items:center;gap:var(--s2);margin:0;font-weight:600}
.inline-label select{width:auto;min-width:200px;min-height:36px}
.col-select{width:36px}
.queue .bulk-bar{border-top:none}
.demo-password{background:var(--brand-soft);border:1px solid var(--brand-line);border-radius:var(--r-md);padding:var(--s3) var(--s4);margin:var(--s3) 0}
.demo-password code{font:600 13px ui-monospace,Consolas,monospace;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:2px 8px;overflow-wrap:anywhere}

/* ---- team overview ---- */
.designer-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--s3);margin-top:var(--s3)}
.designer-card{display:grid;gap:var(--s1);justify-items:start;text-align:left;padding:var(--s4);min-height:0;border-radius:var(--r-md);background:var(--surface-2);height:auto;font-weight:500}
.designer-card:hover{background:var(--brand-soft);border-color:var(--brand-line)}
.designer-card .who{display:flex;align-items:center;gap:var(--s2)}
.designer-card .big{font-size:26px;font-weight:750;letter-spacing:-.03em;line-height:1.1}.designer-card .big small{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:0}
.designer-card .sub{font-size:12px;color:var(--muted)}.designer-card .next{font-size:12px;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.notice{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);background:var(--warn-bg);border:1px solid var(--h-fde68a);border-radius:var(--r-md);margin-bottom:var(--s4);color:var(--warn)}
.notice span{flex:1}
.stack-end{display:flex;flex-direction:column;align-items:flex-end;gap:var(--s1)}
.agenda{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:var(--s3)}
.agenda>li{display:grid;grid-template-columns:74px minmax(0,1fr);gap:var(--s3);padding-top:var(--s3);border-top:1px solid var(--line)}.agenda>li:first-child{border-top:none;padding-top:0}
.agenda-day{font-weight:700;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.agenda-day.today{color:var(--brand)}
.agenda ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}.agenda ul li small{display:block}
.kind{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:1px 7px;border-radius:var(--r-sm);margin-right:6px}
.kind.final{background:var(--brand-soft);color:var(--brand-strong)}.kind.artwork{background:var(--h-ede9fe);color:var(--h-6d28d9)}

/* ---- docket page ---- */
.docket-head{margin-bottom:var(--s4)}
.docket-head .chips{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s3)}
.docket-head .chips .badge{margin:0}
.stepper{list-style:none;margin:0 0 var(--s4);padding:var(--s3) var(--s5);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.stepper li{display:flex;align-items:center;gap:var(--s3);position:relative;color:var(--muted);font-weight:600;font-size:13px;min-width:0}
.stepper li:not(:last-child)::after{content:"";flex:1;height:2px;margin:0 var(--s3);background:var(--line);border-radius:2px;min-width:12px}
.stepper li.done:not(:last-child)::after{background:var(--brand-fill)}
.stepper .dot{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;border:2px solid var(--line-strong);background:var(--surface);font-size:12px;font-weight:750;flex:none;color:var(--muted)}
.stepper li.done .dot{background:var(--brand-fill);border-color:var(--brand);color:#fff}
.stepper li.done .dot::before{content:"\2713";font-size:13px}
.stepper li.now{color:var(--ink)}
.stepper li.now .dot{border-color:var(--brand);color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}
.step-label{display:grid;line-height:1.2;white-space:nowrap}
.step-label small{color:var(--warn);font-weight:700;font-size:12px}
.next-step{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s4);padding:var(--s4) var(--s5);margin-bottom:var(--s4);background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line-strong);border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.next-step h2{margin:2px 0;font-size:18px}
.next-step p{margin:0;color:var(--ink-2);max-width:78ch}
.next-step .eyebrow{color:var(--muted)}
.next-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r-md);background:var(--neutral-bg);color:var(--muted)}
.next-step.you{border-left-color:var(--brand);background:var(--brand-soft);border-color:var(--brand-line);border-left-color:var(--brand)}
.next-step.you .next-icon{background:var(--brand-fill);color:#fff}.next-step.you .eyebrow{color:var(--brand)}
.next-step.hold{border-left-color:var(--warn)}.next-step.hold .next-icon{background:var(--warn-bg);color:var(--warn)}.next-step.hold .eyebrow{color:var(--warn)}
.next-step.done{border-left-color:var(--good)}.next-step.done .next-icon{background:var(--good-bg);color:var(--good)}
.next-actions{justify-content:flex-end}
.facts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0 0 var(--s5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.fact{display:block;padding:var(--s3) var(--s5);min-width:0}
.fact+.fact{border-left:1px solid var(--line)}
.fact dt{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700}
.fact dd{margin:4px 0 0;font-size:16px;font-weight:700;display:flex;align-items:center;gap:var(--s2);min-width:0}
.fact.late dd{color:var(--danger)}
.tabs .count{vertical-align:middle;display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;margin-left:6px;border-radius:var(--r-pill);background:var(--neutral-bg);color:var(--ink-2);font-size:12px;font-weight:750}
.tabs button.active .count{background:var(--brand-soft);color:var(--brand)}
.overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s5);margin-top:var(--s6)}
.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s2)}
.section-head h3{margin:0;font-size:14px}
.rows{list-style:none;margin:0;padding:0}
.rows li{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s3) 0;border-top:1px solid var(--line)}
.rows li:first-child{border-top:none}
.rows small{display:block;color:var(--muted)}
.recent{margin-top:var(--s6)}
.brief{white-space:pre-line}
@media (max-width:900px){.stepper{grid-template-columns:1fr;gap:var(--s2)}.stepper li:not(:last-child)::after{display:none}.next-step{grid-template-columns:auto minmax(0,1fr)}.next-actions{grid-column:1/-1;justify-content:flex-start}.facts{grid-template-columns:repeat(2,minmax(0,1fr))}.fact:nth-child(odd){border-left:none}.fact:nth-child(n+3){border-top:1px solid var(--line)}.overview-grid{grid-template-columns:1fr}.detail{grid-template-columns:minmax(0,1fr)}}

.toolbar{align-items:center;gap:var(--s3)}
.toolbar label{display:flex;align-items:center;gap:var(--s2);font-weight:600;color:var(--muted);font-size:13px}
.toolbar .pager{margin-left:auto;display:inline-flex;align-items:center;gap:var(--s2);font-weight:600}
.toolbar .pager button{min-height:36px;padding:0 var(--s3)}

/* ---- dashboard ---- */
.summary{font-size:15px;color:var(--ink-2);max-width:70ch}
button.stat{width:100%;cursor:pointer;font:inherit}
button.stat:focus-visible{outline:3px solid var(--brand-line);outline-offset:2px}
.todo-group{border-top:1px solid var(--line)}.todo-group:first-child{border-top:none}
.todo-group summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--s3);align-items:center;padding:var(--s3) 0;cursor:pointer;list-style:none}
.todo-group summary::-webkit-details-marker{display:none}
.todo-group .chev{display:inline-grid;transition:transform var(--t) var(--ease);color:var(--muted)}
.todo-group details[open] .chev{transform:rotate(90deg)}
.todo-group .todo-list{margin:0 0 var(--s2) var(--s6);border-left:2px solid var(--line);padding-left:var(--s3)}
.filter-note{margin:0 0 var(--s3);color:var(--muted);font-size:13px}
.agenda-day.late{color:var(--danger)}
.kind.task{background:var(--neutral-bg);color:var(--ink-2)}

.dash-side .agenda>li{grid-template-columns:92px minmax(0,1fr)}.dash-side .agenda-day{white-space:nowrap}

/* ---- completed archive, schedule, board ---- */
.file-links{display:flex;flex-wrap:wrap;gap:var(--s2)}
.calendar-item{border-left:3px solid var(--line-strong)}
.calendar-item.h-green{border-left-color:#15803d}.calendar-item.h-amber{border-left-color:#b45309;background:var(--h-fffbeb)}.calendar-item.h-red{border-left-color:#b91c1c;background:var(--h-fef2f2)}.calendar-item.h-grey{border-left-color:#64748b;background:var(--surface-2)}
.calendar-item.is-late{color:var(--danger)}
.more-day summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--brand);padding:2px var(--s2);list-style:none}
.more-day summary::-webkit-details-marker{display:none}
.more-day[open]{display:grid;gap:4px}
.schedule-list{padding:var(--s4) var(--s5);display:grid;gap:var(--s5)}
.schedule-list h3{margin:0 0 var(--s2);font-size:13px}
.schedule-list h3.late{color:var(--danger)}
.schedule-list .rows li{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:var(--s3);align-items:center}
.lane.collapsed{flex:0 0 132px}
.lane.collapsed .lane-empty{padding:var(--s2);border-style:solid;border-color:transparent;background:transparent}

/* ---- global search, form sections, reports ---- */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.gsearch{position:relative;flex:1 1 280px;max-width:420px;margin:0 var(--s4)}
.gsearch>svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.gsearch input{width:100%;min-height:38px;padding:0 40px 0 36px;border-radius:var(--r-pill);background:var(--surface-2)}
.gsearch kbd{position:absolute;right:12px;top:50%;transform:translateY(-50%);font:600 12px/1 inherit;border:1px solid var(--line-strong);border-radius:4px;padding:2px 6px;color:var(--muted);background:var(--surface)}
.gsearch input:focus+kbd{display:none}
#gs-results{position:absolute;left:0;right:0;top:calc(100% + 6px);margin:0;padding:var(--s2);list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-3,0 12px 32px rgba(15,23,42,.18));max-height:60vh;overflow:auto;z-index:40}
#gs-results[hidden]{display:none}
#gs-results li.none{padding:var(--s3);color:var(--muted)}
#gs-results li.group{padding:var(--s2) var(--s3) var(--s1);color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
#gs-results button{display:grid;grid-template-columns:78px minmax(0,1fr);gap:0 var(--s3);width:100%;min-height:0;padding:var(--s2) var(--s3);text-align:left;border:none;background:transparent;border-radius:var(--r-md);font-weight:500}
#gs-results button strong{grid-row:span 2;color:var(--brand);font-size:12px;align-self:center}
#gs-results button small{color:var(--muted)}
#gs-results li[aria-selected=true] button,#gs-results button:hover{background:var(--brand-soft)}
.brief-more{border:1px solid var(--line);border-radius:var(--r-md);padding:0 var(--s4);margin-top:var(--s3)}
.brief-more>summary{cursor:pointer;padding:var(--s3) 0;font-weight:650;list-style:none}
.brief-more>summary::-webkit-details-marker{display:none}
.brief-more>summary::before{content:"+";display:inline-block;width:18px;color:var(--brand);font-weight:800}
.brief-more[open]>summary::before{content:"\2212"}
.brief-more>summary small{color:var(--muted);font-weight:500}
.brief-more fieldset{border:none;padding:0 0 var(--s3);margin:0}
.insights-head{margin-top:var(--s6);align-items:flex-end}
.insights-head h2{margin:0}
@media(max-width:860px){.gsearch{order:3;flex-basis:100%;max-width:none;margin:var(--s2) 0 0}}

/* ---- discussion ---- */
.thread{list-style:none;margin:0 0 var(--s4);padding:0;display:grid;gap:var(--s4)}
.thread li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s3);align-items:start}
.thread .who{display:flex;align-items:baseline;gap:var(--s2)}
.thread .who small{color:var(--muted)}
.thread p{margin:2px 0 0;white-space:pre-line;overflow-wrap:anywhere}
.thread li.mine .avatar{background:var(--brand-fill);color:#fff}
.mention{background:var(--brand-soft);color:var(--brand-strong);border-radius:4px;padding:0 3px;font-weight:650}
.composer{border-top:1px solid var(--line);padding-top:var(--s4);display:grid;gap:var(--s3)}
.composer textarea{width:100%;resize:vertical;min-height:84px}
.composer .actions{justify-content:space-between}

.composer .actions{display:flex;flex-wrap:wrap;align-items:center}.composer .actions select{width:auto;min-width:220px;max-width:280px}

/* ---- brand typography ---- */
h1,h2,h3,.stat strong,.fact dd,.eyebrow{font-family:var(--font-head)}
h1,h2{letter-spacing:-.02em}
.eyebrow{color:var(--brand)}
.avatar{background:var(--brand-soft);color:var(--brand-strong)}
.next-step.you .next-icon{background:var(--brand-fill)}
.stepper li.now .dot{box-shadow:0 0 0 4px rgba(72,223,197,.28)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---- sign-in ---- */
body[data-state=login]{grid-template-columns:minmax(0,1fr);background:var(--bg)}
body[data-state=login] #app{max-width:none;padding:0;margin:0}
.auth{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(400px,.92fr);min-height:100vh}
.auth-brand{position:relative;overflow:hidden;color:#fff;padding:var(--s10) clamp(32px,6vw,96px);display:flex;flex-direction:column;justify-content:space-between;gap:var(--s8);
  background:radial-gradient(900px 520px at 8% -8%,rgba(72,223,197,.22),transparent 60%),radial-gradient(760px 520px at 105% 108%,rgba(124,58,237,.30),transparent 62%),linear-gradient(158deg,#0f1b2d 0%,#0d2338 58%,#0b3340 100%)}
.auth-brand::after{content:"";position:absolute;right:-140px;top:12%;width:420px;height:420px;border-radius:50%;border:1px solid rgba(255,255,255,.07);box-shadow:0 0 0 70px rgba(255,255,255,.025),0 0 0 150px rgba(255,255,255,.018);pointer-events:none}
.auth-brand>*{position:relative;z-index:1}
.auth-logo-white{height:44px;width:auto;display:block}
.auth-title{margin:0 0 var(--s4);font:800 clamp(36px,4.2vw,60px)/1.04 var(--font-head);letter-spacing:-.035em;color:#fff}
.auth-title span{color:var(--mint)}
.auth-hero p{font-size:17px;line-height:1.55;color:#c5d4e4;max-width:44ch;margin:0}
.flow-art{display:flex;align-items:center;gap:0;margin:var(--s2) 0}
.fcard{width:104px;height:104px;border-radius:22px;display:grid;place-items:center;color:#cfe0f2;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05));border:1px solid rgba(255,255,255,.16);box-shadow:0 18px 40px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.18);backdrop-filter:blur(6px)}
.fcard .icon{width:38px;height:38px;stroke-width:1.5}
.fcard.ok{color:#04231c;background:linear-gradient(160deg,#6df0cd,#2ed3a4);border-color:rgba(255,255,255,.4);box-shadow:0 18px 44px rgba(46,211,164,.38),inset 0 1px 0 rgba(255,255,255,.5)}
.fcard:nth-child(1){transform:rotate(-5deg)}.fcard:nth-child(3){transform:translateY(-12px)}.fcard.ok{transform:rotate(4deg)}
.fjoin{width:54px;height:2px;margin:0 -4px;background:repeating-linear-gradient(90deg,rgba(72,223,197,.9) 0 6px,transparent 6px 12px);z-index:1}
.auth-points{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,max-content));gap:10px 36px;color:#dbe7f3;font-weight:600;font-size:14px}
.auth-points .icon{color:var(--mint);margin-right:8px;vertical-align:-3px}
.auth-card{display:grid;place-items:center;padding:var(--s8) clamp(20px,4vw,56px);background:var(--bg)}
.auth-card-inner{width:100%;max-width:420px}
.auth-card .auth-logo{display:none;height:32px;width:auto;margin-bottom:var(--s6)}
.auth-card h1{font:800 28px/1.15 var(--font-head);letter-spacing:-.025em;margin:0 0 var(--s1)}
.auth-card>.auth-card-inner>p.muted:first-of-type{margin-bottom:var(--s5)}
.auth-form{display:grid;gap:var(--s4)}
.auth-form label{display:grid;gap:6px;font-weight:650;font-size:13px;color:var(--ink-2)}
.field-wrap{position:relative;display:block}
.field-wrap>.icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--faint);pointer-events:none}
.field-wrap input{width:100%;height:48px;padding:0 44px 0 42px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface);font-size:15px}
.field-wrap input:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}
.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);min-height:36px;width:36px;padding:0;border:none;background:transparent;color:var(--faint);border-radius:8px}
.pw-toggle:hover{background:var(--neutral-bg);color:var(--ink)}
.auth-form .primary{height:48px;font-size:15px;border-radius:12px;font-weight:700;background:var(--brand-fill)}
.auth-form .primary:hover{background:var(--brand-fill-strong)}
.auth-aux{display:flex;justify-content:flex-end;margin:-6px 0 0}
.auth-aux .link{font-size:13px}
.auth-card .ms-btn{display:flex;align-items:center;justify-content:center;gap:10px;height:48px;border-radius:12px;background:var(--surface);border:1px solid var(--line-strong);color:var(--ink);font-weight:650;text-decoration:none;width:100%}
.auth-card .ms-btn:hover{border-color:var(--faint);background:var(--surface-2)}
.auth-card .divider{display:flex;align-items:center;gap:var(--s3);color:var(--faint);font-size:12px;margin:var(--s4) 0}
.auth-card .divider::before,.auth-card .divider::after{content:"";flex:1;height:1px;background:var(--line)}
.auth-card .divider span{white-space:nowrap}
.auth-card #login-error,.auth-card #sso-error{color:var(--danger);background:var(--danger-bg);border-radius:10px;padding:10px 12px;margin:0;font-weight:600;font-size:13px}
.auth-card #login-error:empty{display:none;padding:0}
.demo-accounts{margin-top:var(--s6);padding:var(--s4);border:1px solid var(--brand-line);background:var(--brand-soft);border-radius:var(--r-lg)}
.demo-accounts h2{font-size:14px;margin:0 0 var(--s2);color:var(--brand-strong)}
.demo-accounts .demo-password{background:var(--surface);margin:var(--s2) 0}
.demo-chips{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s2)}
.demo-chip{display:flex;align-items:center;gap:var(--s2);width:100%;justify-content:flex-start;text-align:left;min-height:46px;padding:6px 10px;border:1px solid var(--brand-line);background:var(--surface);border-radius:10px;font-weight:600}
.demo-chip:hover{border-color:var(--brand);background:var(--surface)}
.demo-chip strong{display:block;font-size:13px;line-height:1.2}
.demo-chip small{display:block;font-size:12px;color:var(--muted);font-weight:500}
.auth-legal{margin:var(--s6) 0 0;color:var(--faint);font-size:12px;text-align:center}
@media (max-width:900px){
  .auth{grid-template-columns:minmax(0,1fr)}
  .auth-brand{padding:var(--s6) var(--s6) var(--s8);min-height:0;gap:var(--s5)}
  .auth-brand .flow-art,.auth-brand .auth-points{display:none}
  .auth-title{font-size:32px}
  .auth-logo-white{height:36px}
  .auth-card{padding:var(--s6) var(--s5)}
}
@media (max-width:520px){.demo-chips{grid-template-columns:1fr}}
/* sign-in polish */
.auth-form label{margin:0}
.auth-form{gap:16px}
.auth-logo-white{align-self:flex-start}
@media (min-width:901px){.auth-brand{position:sticky;top:0;height:100vh}}
.demo-password code{display:block;margin:6px 0;word-break:break-all}
.auth-card{align-items:start;padding-top:clamp(32px,9vh,96px);padding-bottom:var(--s8)}
.auth-card-inner{margin:0 auto}

.auth-logo-white{height:56px}
.brand img{height:30px}
@media (max-width:900px){.auth-logo-white{height:42px}}

/* ---- readability and touch (v2) ---- */
body{font-size:15px;line-height:1.55}
table.grid th,table.grid td{padding:12px 14px}
button,.btn,select,input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]){min-height:40px}
button.sm,.badge{min-height:0}
button.link,button.chip{display:inline-flex;align-items:center;min-height:36px;text-align:left}
button.quiet,.heading button.link{min-height:40px}
input[type=checkbox],input[type=radio]{width:24px;height:24px;min-height:0;flex:none}
td:has(>input[type=checkbox]),th:has(>input[type=checkbox]){padding:0 6px;text-align:center}
td>input[type=checkbox],th>input[type=checkbox]{margin:10px}
[data-action=open],a.docket-link,td a,.todo a,.todo button.link,.row-link{display:inline-flex;align-items:center;min-height:36px;padding-top:4px;padding-bottom:4px}
td [data-action=open]{white-space:normal;text-align:left}
.muted,small,.lane-empty,.badge,.chip,th{font-size:max(12px,.8em)}
th{font-size:12px;letter-spacing:.04em}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* phones: lighter header, tables scroll inside their card, board shows there is more */
@media(max-width:860px){
  .rail{flex-wrap:wrap;gap:var(--s1) var(--s3);padding:var(--s2) var(--s3) 0}
  .rail .brand{flex:1 0 100%;display:flex;align-items:center;padding:var(--s1) 0}
  .rail .brand img{width:auto;height:24px}
  .rail nav{flex:1 0 100%;order:3;margin:0 calc(var(--s3) * -1);padding:0 var(--s3) var(--s2);scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .rail nav::-webkit-scrollbar{display:none}
  .rail nav button{min-height:44px;padding:0 var(--s3)}
  .top{display:flex;flex-wrap:wrap;gap:var(--s2);padding:var(--s2) var(--s3);min-height:0}
  .top>span{display:none}
  #local-tools{order:1;margin-left:auto;gap:var(--s1);flex-wrap:wrap;justify-content:flex-end;max-width:100%}
  #local-tools .demo,#workspace-mode{display:none}
  #local-tools [data-action=account]{max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .switcher{font-size:0;gap:0}.switcher select{font-size:13px;max-width:44vw}
  .gsearch{order:2;flex:1 1 100%;margin:0}
  .panel{overflow-x:auto;max-width:100%}
  .panel table{min-width:480px}
  .two-up>.panel{min-width:0}
  .board{padding-right:var(--s8);-webkit-mask-image:linear-gradient(90deg,#000 92%,transparent);mask-image:linear-gradient(90deg,#000 92%,transparent)}
  .stats{gap:var(--s2)}
  table.grid{display:block;max-width:100%;overflow-x:auto;width:100%}
  .muted a{display:inline-flex;align-items:center;min-height:36px}
}
td button.link,.card button.link,.todo-main button.link{display:inline-flex;align-items:center;min-height:36px;padding-top:4px;padding-bottom:4px}
.card button.link{display:flex}

/* ---- features (v2) ---- */
.facts{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
progress.util{width:150px;max-width:100%;height:10px;vertical-align:middle;accent-color:var(--brand)}
progress.util.over{accent-color:var(--danger)}
.schedule-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--s3);align-items:end}
.schedule-form .actions{grid-column:1/-1}
.paper .box{position:absolute;border:2px solid var(--brand);background:rgba(8,127,101,.12);border-radius:3px;pointer-events:none}
.paper .box.draft{border-style:dashed;background:rgba(8,127,101,.2)}
.pinning .paper.current canvas,.pinning .paper.current img{touch-action:none}
.row-actions{text-align:right;white-space:nowrap}
.panel+.panel{margin-top:var(--s5)}

/* phones: list rows stack their controls under the text instead of squeezing it */
@media(max-width:700px){
  .todo{grid-template-columns:auto minmax(0,1fr)}
  .todo-side{grid-column:2;justify-content:flex-start}
  .todo-side select,.todo-side .inline-assign{width:100%;max-width:100%}
  .todo-group summary{grid-template-columns:auto minmax(0,1fr)}
  .todo-group summary>:last-child{grid-column:2;justify-self:start}
  .rows li,.mini-list li{flex-wrap:wrap}
}
@media(max-width:700px){
  .schedule-list{padding:var(--s3)}
  .schedule-list .rows li{grid-template-columns:auto minmax(0,1fr)}
  .schedule-list .rows li>:nth-child(n+3){grid-column:2;justify-self:start}
}


/* ---- colour (v3): meaning-coloured tiles, a brand banner, tinted lanes, coloured avatars ---- */
.stat[data-tone]{--acc:#087f65;--acc-soft:#e8f8f4;--acc-line:#b4eadd;background:linear-gradient(135deg,var(--acc-soft),var(--surface) 72%);border-color:var(--acc-line);border-left:4px solid var(--acc)}
.stat[data-tone=amber]{--acc:#b45309;--acc-soft:#fef3c7;--acc-line:#f3d98a}
.stat[data-tone=red]{--acc:#b91c1c;--acc-soft:#fee2e2;--acc-line:#f4b4b4}
.stat[data-tone=blue]{--acc:#2f5f94;--acc-soft:#e1ecf8;--acc-line:#b8d1ec}
.stat[data-tone=violet]{--acc:#6d28d9;--acc-soft:#ede9fe;--acc-line:#cdbdf7}
.stat[data-tone=green]{--acc:#15803d;--acc-soft:#dcfce7;--acc-line:#a6e3b9}
.stat[data-tone] strong{color:var(--acc)}
.stat[data-tone] i{background:var(--acc);color:#fff}
.stat[data-tone]:hover{border-color:var(--acc);box-shadow:var(--sh-2)}
.stat[data-tone].active{background:var(--acc-soft);border-color:var(--acc);box-shadow:inset 0 0 0 1px var(--acc)}

.dash-hero{position:relative;overflow:hidden;align-items:center;padding:var(--s6) var(--s8);border-radius:var(--r-lg);color:#fff;box-shadow:var(--sh-2);
  background:radial-gradient(520px 240px at 104% -30%,rgba(72,223,197,.30),transparent 62%),radial-gradient(420px 260px at -4% 130%,rgba(124,58,237,.34),transparent 62%),linear-gradient(120deg,#0f1b2d,#1a2b42 58%,#263c55)}
.dash-hero h1{color:#fff}
.dash-hero .eyebrow{color:var(--mint)}
.dash-hero .muted,.dash-hero .summary{color:#cfdbe8}
.dash-hero .primary{background:var(--mint);border-color:var(--mint);color:#05241d}
.dash-hero .primary:hover{background:#6ae8d2;border-color:#6ae8d2}
/* the greeting card, 12 November 2026: a larger greeting, three facts as chips, and a bolder button */
.dash-hero{padding:var(--s8) var(--s10);gap:var(--s6);border:1px solid rgba(255,255,255,.08);background:
  radial-gradient(540px 260px at 102% -20%,rgba(72,223,197,.34),transparent 62%),radial-gradient(460px 280px at -4% 140%,rgba(124,58,237,.38),transparent 62%),linear-gradient(120deg,#0e1a2c,#182a42 55%,#25405c)}
.dash-hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.09) 1px,transparent 1.4px);background-size:20px 20px;-webkit-mask-image:linear-gradient(100deg,transparent 40%,#000 100%);mask-image:linear-gradient(100deg,transparent 40%,#000 100%);pointer-events:none}
.dash-hero>*{position:relative}
.dash-hero .dh-copy{min-width:0}
.dash-hero h1{font-size:clamp(28px,3.2vw,40px);line-height:1.12;margin:6px 0 0;letter-spacing:-.02em}
.dash-hero .eyebrow{font-size:13px;letter-spacing:.14em}
.dh-chips{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s4)}
.dh-chip{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:34px;padding:0 14px;border-radius:var(--r-pill);font-size:14px;font-weight:600;color:#e8eef6;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.16)}
.dh-chip b{font-weight:800;font-size:15px}
.dh-chip.warn{background:rgba(251,191,36,.18);border-color:rgba(251,191,36,.45);color:#fde68a}
.dh-chip.bad{background:rgba(248,113,113,.2);border-color:rgba(248,113,113,.5);color:#fecaca}
.dh-chip.good{background:rgba(74,222,128,.16);border-color:rgba(74,222,128,.42);color:#bbf7d0}
.dh-chip.next .icon{flex:none;width:16px;height:16px;opacity:.85}
.dh-chip .dh-next{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-hero .primary{min-height:50px;padding:0 var(--s6);border-radius:14px;font-size:16px;font-weight:700;box-shadow:0 6px 18px rgba(72,223,197,.28)}

.panel.tone-amber{border-top:4px solid #d97706}.panel.tone-teal{border-top:4px solid var(--brand)}.panel.tone-blue{border-top:4px solid #3b6ea5}.panel.tone-violet{border-top:4px solid var(--violet)}.panel.tone-slate{border-top:4px solid var(--slate)}
.panel.tone-amber>h2{color:var(--h-92400e)}.panel.tone-blue>h2{color:var(--h-2f5f94)}.panel.tone-violet>h2{color:var(--h-5b21b6)}

.lane{background:color-mix(in srgb,var(--lane) 9%,var(--h-f6f8fb));border-color:color-mix(in srgb,var(--lane) 30%,var(--h-e2e8ef))}
.lane h3 small{background:var(--lane);color:#fff}
.lane .card{background:linear-gradient(180deg,color-mix(in srgb,var(--lane) 8%,var(--surface)),var(--surface) 58%)}
.lane.collapsed{background:color-mix(in srgb,var(--lane) 5%,var(--h-f8fafc))}

.avatar[data-tone="0"]{background:var(--h-dbeafe);color:var(--h-1e40af)}
.avatar[data-tone="1"]{background:var(--h-fce7f3);color:var(--h-9d174d)}
.avatar[data-tone="2"]{background:var(--h-ede9fe);color:var(--h-5b21b6)}
.avatar[data-tone="3"]{background:var(--h-fef3c7);color:var(--h-92400e)}
.avatar[data-tone="4"]{background:var(--h-dcfce7);color:var(--h-166534)}
.avatar[data-tone="5"]{background:var(--h-ccfbf1);color:var(--h-115e59)}
@media(max-width:700px){
  .dash-hero{padding:var(--s5) var(--s4);gap:var(--s4);align-items:stretch}
  .dash-hero h1{font-size:28px}
  .dash-hero .primary{width:100%;justify-content:center}
  .dh-chip{min-height:36px}
}

/* ---- photo sets: many images, a decision on each ---- */
.set-summary{display:grid;gap:var(--s3);margin:var(--s3) 0 var(--s4)}
.set-bar{display:flex;height:12px;border-radius:99px;overflow:hidden;background:var(--neutral-bg)}
.set-bar .seg-approved,.vote.v-approved,.mini span{background:#16a34a}
.set-bar .seg-changes{background:#d97706}
.set-bar .seg-rejected{background:#dc2626}
.set-counts{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5);list-style:none;margin:0;padding:0;font-size:14px}
.set-counts b{font-size:18px}
.set-counts .c-approved b{color:var(--good)}.set-counts .c-changes b{color:var(--warn)}.set-counts .c-rejected b{color:var(--danger)}
.set-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--s2) var(--s5);list-style:none;margin:0;padding:0;font-size:13px}
.set-people li{display:grid;grid-template-columns:minmax(80px,1fr) 90px auto;align-items:center;gap:var(--s2)}
.mini{display:block;height:8px;border-radius:99px;background:var(--neutral-bg);overflow:hidden}.mini span{display:block;height:100%}
.set-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);margin-bottom:var(--s3);position:sticky;top:0;z-index:5;background:var(--surface);padding:var(--s2) 0;border-bottom:1px solid var(--line)}
.set-toolbar .bulk{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--s2);padding:4px 10px;border-radius:10px;background:var(--brand-soft);border:1px solid var(--brand-line)}
.set-toolbar .bulk[hidden]{display:none}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--s3)}
.tile{position:relative;display:flex;flex-direction:column;gap:6px;padding:8px;border:2px solid var(--line);border-radius:12px;background:var(--surface);content-visibility:auto;contain-intrinsic-size:auto 300px}
.tile.out-approved{border-color:var(--h-86d9a3)}.tile.out-changes{border-color:var(--h-f2c36b)}.tile.out-rejected{border-color:var(--h-f0a0a0)}
.tile.selected{box-shadow:0 0 0 3px var(--brand);}
.tile-check{position:absolute;top:12px;left:12px;z-index:2;background:rgba(255,255,255,.92);border-radius:6px;padding:4px;display:flex}
.tile-check input{width:20px;height:20px;margin:0}
.tile-img{display:block;padding:0;border:0;background:var(--neutral-bg);border-radius:8px;overflow:hidden;aspect-ratio:4/3;cursor:zoom-in;min-height:0}
.tile-img img{width:100%;height:100%;object-fit:cover;display:block}
.tile-meta{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:12px}
.tile-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.tile-votes{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}
.vote-dots{display:inline-flex;gap:4px}
.vote{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;font-style:normal;font-size:12px;font-weight:800;color:#fff;background:#94a3b8}
.vote.v-changes{background:#d97706}.vote.v-rejected{background:#dc2626}.vote.v-none{background:var(--h-e2e8f0);color:var(--h-64748b)}
.tile-actions{display:flex;gap:6px}
.vote-btn{flex:1;min-height:40px;font-size:18px;font-weight:800;border-radius:8px;border:1px solid var(--line-strong);background:var(--surface)}
.vote-btn.v-approved{color:var(--h-166534)}.vote-btn.v-changes{color:var(--h-92400e)}.vote-btn.v-rejected{color:var(--h-b91c1c)}
.vote-btn.v-approved.on{background:#16a34a;color:#fff;border-color:#16a34a}.vote-btn.v-changes.on{background:#d97706;color:#fff;border-color:#d97706}.vote-btn.v-rejected.on{background:#dc2626;color:#fff;border-color:#dc2626}
.vote-btn.wide{font-size:14px;padding:0 10px}
.lightbox{position:fixed;inset:0;z-index:200;display:grid;grid-template-columns:minmax(0,1fr) 340px;background:rgba(8,13,24,.94)}
.lightbox .lb-stage{display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;position:relative;padding:16px}
.lightbox .lb-stage img{max-width:100%;max-height:100%;object-fit:contain}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:72px;font-size:36px;border-radius:10px;border:0;background:rgba(255,255,255,.14);color:#fff}
.lb-nav[data-lb=prev]{left:12px}.lb-nav[data-lb=next]{right:12px}
.lb-side{background:var(--surface);padding:var(--s4);overflow:auto;display:flex;flex-direction:column;gap:var(--s3)}
.lb-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;word-break:break-all}
.lb-votes{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}
.lb-votes li{display:flex;gap:10px;align-items:flex-start}.lb-votes small{display:block;color:var(--muted)}.lb-votes p{margin:2px 0 0;font-size:13px}
.lb-actions{display:grid;gap:var(--s2)}
.replace input{display:block;margin-top:6px}
.check-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px}.check{display:flex;gap:8px;align-items:center;min-height:36px}
body.lb-open{overflow:hidden}
@media (max-width:760px){.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s2)}.lightbox{grid-template-columns:1fr;grid-template-rows:minmax(0,55%) minmax(0,45%)}.set-people li{grid-template-columns:minmax(70px,1fr) 70px auto}}
.tile{min-width:0}
.tile-actions .vote-btn{min-width:0;padding:0}
.tile-votes small{white-space:nowrap}
@media (max-width:760px){.tile-meta{flex-direction:column;align-items:flex-start}.tile-name{max-width:100%}.tile-votes{flex-wrap:wrap;gap:4px}.tile-votes small{font-size:11px}}

/* ---- drawing markup, threads and mentions ---- */
.marks{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;overflow:visible}
.review.pinning .paper.current{touch-action:none;cursor:crosshair}
.mention{color:var(--brand-strong);background:var(--brand-soft);border-radius:4px;padding:0 3px;font-weight:700}
.replies{list-style:none;margin:var(--s2) 0 0;padding:0 0 0 var(--s3);border-left:3px solid var(--line-strong);display:grid;gap:var(--s2)}
.replies p{margin:0;font-size:14px}.replies small{color:var(--muted)}
.inline-label{display:inline-flex;align-items:center;gap:6px;font-size:13px}
.inline-label select{min-height:36px}
blockquote.muted{margin:0 0 var(--s3);padding:var(--s2) var(--s3);border-left:3px solid var(--line-strong);background:var(--surface-2);border-radius:6px}

/* ---- version comparison ---- */
.cmp-modes{display:inline-flex;gap:6px;flex-wrap:wrap}
.cmp-stage{grid-column:1/-1;min-width:0}
.cmp-view{background:var(--surface);box-shadow:var(--sh-1)}
.cmp-view>canvas{width:100%;height:auto;display:block}
.cmp-stack{position:relative;line-height:0;touch-action:pan-y;cursor:ew-resize;user-select:none}
.cmp-base{width:100%;height:auto;display:block}
.cmp-top{position:absolute;inset:0;width:100%;height:100%}
.cmp-line{position:absolute;top:0;bottom:0;width:3px;margin-left:-1px;background:var(--brand-fill);box-shadow:0 0 0 1px var(--surface);pointer-events:none}
.cmp-range{width:100%;margin-top:var(--s2)}

/* ---- video and audio timeline ---- */
.timeline{line-height:1.4;padding:var(--s3);background:var(--surface-2);border-top:1px solid var(--line)}
.tl-track{position:relative;height:30px;margin:6px 8px 10px;background:var(--neutral-bg);border-radius:99px;cursor:pointer}
.tl-head{position:absolute;top:-4px;bottom:-4px;width:3px;margin-left:-1px;background:var(--ink);border-radius:2px;pointer-events:none}
.tl-mark{position:absolute;top:50%;transform:translate(-50%,-50%);width:26px;height:26px;min-height:0;padding:0;border-radius:50%;border:2px solid var(--surface);background:var(--brand-fill);color:#fff;font-size:12px;box-shadow:var(--sh-2)}
.tl-mark.done{background:#64748b}
.tl-controls{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}
.tl-controls button{min-height:36px;font-size:13px}
.tl-time{font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px;margin-left:auto}
.paper .pin.draft{position:absolute;transform:translate(-50%,-50%);width:26px;height:26px;border-radius:50%;background:var(--brand-fill);color:#fff;display:grid;place-items:center;opacity:.7;font-size:16px;line-height:1;pointer-events:none}

/* ---- sign-in methods ---- */
.idp-btn,.ms-btn{margin-bottom:var(--s2)}
.magic-login{margin:var(--s3) 0}.magic-login summary{cursor:pointer;font-weight:600;min-height:44px;display:flex;align-items:center}
.signin-list{list-style:none;margin:var(--s4) 0;padding:0;display:grid;gap:var(--s3)}
.signin-list li{display:flex;justify-content:space-between;gap:var(--s4);align-items:flex-start;padding:var(--s3);border:1px solid var(--line);border-radius:12px}
.signin-list li>div:first-child{display:grid;gap:4px;min-width:0;justify-items:start}.signin-list small{color:var(--muted);word-break:break-word}
.signin-pw{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;margin:var(--s3) 0}
@media (max-width:760px){.signin-list li{flex-direction:column}}
.idp-btn{width:100%;justify-content:center}
.setup-key{font-size:20px;letter-spacing:.08em;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:8px 12px;display:inline-block}
.recovery{list-style:none;padding:0;margin:var(--s3) 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s2)}
.recovery code{display:block;font-size:16px;padding:8px 10px;border:1px dashed var(--line-strong);border-radius:8px;text-align:center}

/* ---- packaging: preflight and checklist ---- */
.pf{border:1px solid var(--line);border-radius:var(--r-md,10px);background:var(--panel,var(--surface));padding:var(--s3);margin-bottom:var(--s3)}
.pf>summary{cursor:pointer;display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;min-height:44px}
.pf-list{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:var(--s3)}
.pf-list li{display:grid;grid-template-columns:78px minmax(0,1fr);gap:var(--s3);align-items:start}
.pf-list li small{display:block;color:var(--muted,var(--h-475569));margin-top:2px;overflow-wrap:anywhere}
.pf-status{font-size:12px;font-weight:700;text-align:center;border-radius:var(--r-pill);padding:3px 8px;background:var(--neutral-bg);color:var(--neutral)}
.pf-status.good{background:var(--good-bg);color:var(--good)}.pf-status.warn{background:var(--warn-bg);color:var(--warn)}.pf-status.danger{background:var(--danger-bg);color:var(--danger)}
.pf-foot{margin:var(--s3) 0 0;font-size:12px}
.checklist-box{margin-bottom:var(--s3)}
.cl-list{list-style:none;margin:var(--s2) 0 0;padding:0;display:grid;gap:var(--s2)}
.cl-list li small{display:block;margin-left:30px;color:var(--muted,var(--h-475569))}
.cl-list .inline-check{display:flex;align-items:flex-start;gap:var(--s2);min-height:44px;cursor:pointer}
.cl-list input{width:22px;height:22px;flex:none;margin-top:2px}
.cl-list li.on span{color:var(--good)}

/* ---- outside reviewers: decision bar and page jump ---- */
.page-jump select{min-height:44px;font-size:15px}
.guest-wrap .decide-bar{position:sticky;bottom:0;z-index:5;background:var(--panel,var(--surface));border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s3) var(--s4) calc(var(--s3) + env(safe-area-inset-bottom,0px));box-shadow:0 -6px 18px rgba(15,27,45,.10)}
.decide-bar p{margin:0}
.decide-bar .actions{margin-top:var(--s2)}
.decide-bar button{min-height:48px;font-size:16px}
@media(max-width:860px){.decide-bar .actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}}
.review aside .pf-list li{grid-template-columns:1fr;gap:4px}.review aside .pf-status{justify-self:start;padding:2px 10px}

/* ---- phones and touch screens: comfortable tap targets, no zoom-on-focus, no tap delay ---- */
@media (max-width:860px),(pointer:coarse){
  button:not(.link):not(.pin):not(.mark),select,summary,.button-link,.csv-link,input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]):not([type=range]){min-height:44px!important}
  select,textarea,input:not([type=checkbox]):not([type=radio]):not([type=range]){font-size:16px}
  button,a,select,summary,label,input{touch-action:manipulation}
  .button-link,.csv-link,.actions a,.toolbar a{display:inline-flex;align-items:center;gap:6px}
  .inline-check{display:flex;align-items:center;gap:var(--s2);min-height:44px}
  input[type=checkbox],input[type=radio]{width:22px;height:22px;flex:none}
  td input[type=checkbox],th input[type=checkbox]{width:28px;height:28px}
  .badge,.tag,.badge button{min-height:0!important}
  .col-project button.link,.project-cell button.link,.section-head button.link,.file-link{display:inline-flex;align-items:center;min-height:44px!important}
  .file-links{display:flex;flex-wrap:wrap;gap:0 var(--s3)}
  .icon-btn{min-width:44px}
  .skip:focus{min-height:44px}
}
.decide-bar button{padding:0 var(--s2)}
/* ---- outside reviewers on a phone: the proof first, the decision within thumb reach ---- */
.phone-only{display:none}
.sign-line{display:block;margin-top:var(--s2);font-weight:600}
.sign-line input{display:block;width:100%;margin:4px 0}
.sign-line small{display:block;font-weight:400}
@media(max-width:860px){
  .phone-only{display:inline-flex;align-items:center;justify-content:center}
  body[data-state=guest] main{padding:var(--s2)}
  .guest-wrap>.panel,.guest-wrap .review>.panel{padding:var(--s3)}
  .guest-wrap>.panel h1{font-size:20px;line-height:1.25;margin:2px 0 4px}
  .guest-wrap>.panel .brief{max-height:4.5em;overflow:auto}
  .guest-wrap .next-action{padding:var(--s2) var(--s3);margin-top:var(--s2)}
  .guest-wrap .toolbar{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:thin}
  .guest-wrap .toolbar>*{flex:none;white-space:nowrap}
  .guest-wrap .decide-bar{padding:var(--s2) var(--s3) calc(var(--s2) + env(safe-area-inset-bottom,0px));border-radius:var(--r-md) var(--r-md) 0 0}
  .decide-bar .actions{grid-template-columns:1fr 1fr}
  .decide-bar #approve{grid-column:1/-1}
  .decide-bar.signing #approve{grid-column:auto}
  .decide-bar #error:empty{display:none}
  .decide-bar button.link{min-height:0!important;display:inline;padding:0;font-size:inherit}
  .decide-bar .actions button{font-size:15px;white-space:nowrap}
}

/* ---- chat ---- */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.chat-badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--mint);color:var(--rail);font-size:11px;font-weight:700;line-height:20px;text-align:center}
.chat-badge[hidden]{display:none}
.chat{display:grid;grid-template-columns:320px minmax(0,1fr);height:calc(100vh - 120px);min-height:460px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);overflow:hidden}
.chat-list{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:var(--surface-2)}
.chat-list-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s4);border-bottom:1px solid var(--line)}
.chat-list-head h1{font-size:20px}
#chat-rows{overflow-y:auto;flex:1;padding:var(--s2)}
.chat-row{width:100%;display:flex;align-items:center;gap:var(--s3);padding:var(--s3);border:0;border-radius:var(--r-md);background:transparent;text-align:left;color:var(--ink);min-height:56px;cursor:pointer}
.chat-row:hover{background:var(--neutral-bg)}.chat-row.active{background:var(--brand-soft)}
.chat-row-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.chat-row-top{display:flex;justify-content:space-between;gap:var(--s2)}.chat-row-top time{font-size:11px;color:var(--faint)}
.chat-row-text{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-row .chat-badge{margin-left:0}
.chat-avatar{flex:none;width:38px;height:38px;border-radius:50%;background:var(--info-bg);color:var(--slate);display:grid;place-items:center;font-size:13px;font-weight:700}
.chat-avatar .icon{width:18px;height:18px}
.chat-avatar.group{background:var(--neutral-bg)}
.chat-avatar.folio{background:linear-gradient(135deg,var(--brand),var(--violet));color:#fff}
.chat-empty{padding:var(--s4)}
.chat-pane{display:flex;flex-direction:column;min-width:0;min-height:0}
.chat-head{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);min-height:64px}
.chat-head h2{font-size:16px}.chat-head-text{min-width:0;flex:1}.chat-head-text .muted{font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-head-actions{display:flex;gap:var(--s2);flex-wrap:wrap}
.chat-back{display:none}
.chat-edit{display:flex;gap:var(--s2);padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);background:var(--surface-2)}.chat-edit input,.chat-edit select{flex:1;min-width:0}
.chat-thread{flex:1;overflow-y:auto;padding:var(--s4);display:flex;flex-direction:column;gap:var(--s2);background:var(--bg)}
.chat-msg{display:flex}.chat-msg.mine{justify-content:flex-end}
.chat-bubble{max-width:min(520px,82%);padding:var(--s2) var(--s3);border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-1);overflow-wrap:anywhere}
.chat-msg.mine .chat-bubble{background:var(--brand-soft);border-color:var(--brand-line)}
.chat-msg.folio .chat-bubble{border-color:var(--h-d9ccf7);background:var(--h-faf7ff)}
.chat-author{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--brand-strong)}.chat-msg.folio .chat-author{color:var(--violet)}.chat-author .icon{width:13px;height:13px}
.chat-bubble time{display:block;text-align:right;font-size:10px;color:var(--faint);margin-top:2px}
.chat-body a{color:var(--brand-strong);font-weight:600}
.chat-event{align-self:center;margin:var(--s2) 0;font-size:12px;color:var(--faint)}
.dots{display:inline-flex;gap:4px;padding:6px 0}.dots i{width:7px;height:7px;border-radius:50%;background:var(--violet);opacity:.35;animation:chat-dot 1s infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes chat-dot{50%{opacity:1;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.dots i{animation:none;opacity:.7}}
.chat-compose{display:flex;gap:var(--s2);align-items:flex-end;padding:var(--s3) var(--s4);border-top:1px solid var(--line);background:var(--surface)}
.chat-compose textarea{flex:1;resize:none;min-height:44px;max-height:140px;padding:10px var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-lg);font:inherit}
.chat-compose button{width:44px;height:44px;padding:0;border-radius:50%;justify-content:center}
.chat-blank{margin:auto;max-width:320px;text-align:center;display:flex;flex-direction:column;gap:var(--s2);color:var(--muted);align-items:center}.chat-blank .icon{width:32px;height:32px;color:var(--faint)}
.chat-picker{padding:var(--s4);overflow-y:auto;display:flex;flex-direction:column;gap:var(--s3)}
.chat-people{display:flex;flex-direction:column;gap:2px;max-height:46vh;overflow-y:auto}.chat-picker-actions{display:flex;justify-content:flex-end}
@media (max-width:860px){
  .chat{grid-template-columns:1fr;height:calc(100vh - 150px)}
  .chat .chat-pane{display:none}.chat.chat-open .chat-pane{display:flex}.chat.chat-open .chat-list{display:none}
  .chat-back{display:inline-flex}.chat-bubble{max-width:88%}
}
.chat,.chat-list,.chat-pane,#chat-rows{min-width:0;max-width:100%}.chat-row{overflow:hidden}.chat-list-head .primary{flex:none}
@media (max-width:860px){.chat-head{flex-wrap:wrap}.chat-head-text{flex-basis:0;min-width:120px}.chat-head-actions{width:100%;justify-content:flex-end}.chat-head-actions button{min-height:36px}}

/* ---- request form (new docket, edit brief, duplicate) ---- */
dialog:has(.nd){width:min(940px,calc(100vw - 24px))}
.nd-lead{margin:0 0 var(--s3)}
.nd-template{border:1px dashed var(--brand-line);background:var(--brand-soft);border-radius:var(--r-md);padding:var(--s3) var(--s4) var(--s1);margin:0 0 var(--s4)}
.nd{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--s4);align-items:start}
.nd-extra{grid-column:1/-1;display:grid;gap:var(--s3)}
.nd-extra .brief-more{margin-top:0}
.nd-side{display:grid;gap:var(--s4)}
.nd-sec{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s4) var(--s5) var(--s2)}
.nd-primary{background:var(--surface);border-color:var(--line-strong);box-shadow:var(--sh-1)}
.nd-sec h3{display:flex;align-items:center;gap:var(--s2);font-size:15px;margin-bottom:var(--s3)}
.nd-num{width:22px;height:22px;border-radius:50%;background:var(--brand-fill);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center}
.nd .hint{display:block;color:var(--muted);font-weight:400;font-size:12px;margin:1px 0 3px}
.nd-name input{font-size:18px;font-weight:650;min-height:48px}
.nd textarea{min-height:104px;resize:vertical}
.nd-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s3)}
.nd-more-body{padding-bottom:var(--s3)}.nd-checks{display:flex;flex-wrap:wrap;gap:0 var(--s5)}.nd-checks .inline-check{grid-column:auto}
.seg-field{border:0;padding:0;margin:0 0 var(--s3);min-width:0}
.seg-field legend{font-weight:550;padding:0;margin-bottom:6px}
.seg-row{display:flex;flex-wrap:wrap;gap:6px}
.seg-opt{position:relative;display:inline-block;margin:0}
.seg-opt input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.seg-opt span{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--surface);font-weight:550;color:var(--ink-2);transition:background var(--t),border-color var(--t)}
.seg-opt:hover span{border-color:var(--brand)}
.seg-opt input:checked+span{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-strong);box-shadow:inset 0 0 0 1px var(--brand)}
.seg-opt input:focus-visible+span{box-shadow:var(--ring)}
.quick-chips{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:-4px 0 var(--s3);font-size:12px;color:var(--muted)}
.date-chip{min-height:30px;padding:0 var(--s3);border-radius:var(--r-pill);border:1px dashed var(--line-strong);background:transparent;font-size:12px;font-weight:600;color:var(--ink-2);cursor:pointer}
.date-chip:hover{border-color:var(--brand);color:var(--brand-strong);background:var(--brand-soft)}
@media(max-width:820px){.nd{grid-template-columns:1fr}.nd-sec{padding:var(--s4) var(--s4) var(--s2)}}
@media(max-width:520px){.nd-two{grid-template-columns:1fr}}

/* ---- docket page design pass ---- */
.dk-hero{position:relative;background:linear-gradient(180deg,var(--surface) 0%,var(--surface-2) 100%);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);padding:var(--s5) var(--s6) var(--s4);margin-bottom:var(--s4);overflow:hidden}
.dk-hero::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--brand),var(--mint))}
.dk-hero.mood-late::before{background:linear-gradient(90deg,var(--danger),#f97316)}
.dk-hero.mood-hold::before{background:linear-gradient(90deg,#d97706,#fbbf24)}
.dk-hero.mood-done::before{background:linear-gradient(90deg,#15803d,#4ade80)}
.dk-hero.mood-cancelled::before{background:var(--line-strong)}
.dk-hero .docket-head{margin-bottom:var(--s4)}
.dk-hero .heading h1{font-size:30px;line-height:1.15;letter-spacing:-.03em;max-width:28ch}
.dk-hero .eyebrow.spaced{display:flex;align-items:center;gap:var(--s2);margin-top:var(--s3);letter-spacing:.06em}
.num-chip{display:inline-flex;align-items:center;min-height:24px;padding:0 var(--s2);border-radius:var(--r-sm);background:var(--rail);color:#fff;font-size:12px;font-weight:700;letter-spacing:.04em}
.type-chip{display:inline-flex;align-items:center;min-height:24px;padding:0 var(--s3);border-radius:var(--r-pill);border:1px solid var(--brand-line);background:var(--brand-soft);color:var(--brand-strong);font-size:11px;font-weight:700;letter-spacing:.06em}
.byline{margin:var(--s3) 0 0;color:var(--muted);font-size:13px}.byline strong{color:var(--ink-2)}
.dk-hero .stepper{margin:0;padding:var(--s4) 0 0;background:transparent;border:0;box-shadow:none;border-top:1px solid var(--line);border-radius:0}
.next-step{border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.next-step.you{background:linear-gradient(100deg,var(--brand-soft) 0%,var(--surface) 85%);box-shadow:0 6px 18px rgba(8,127,101,.12)}
.next-step.hold{background:linear-gradient(100deg,var(--warn-bg) 0%,var(--surface) 85%)}
.next-step.done{background:linear-gradient(100deg,var(--good-bg) 0%,var(--surface) 85%)}
.next-icon{width:44px;height:44px;border-radius:var(--r-lg)}
.facts{gap:0;border-radius:var(--r-lg)}
.fact{padding:var(--s4) var(--s5)}
.fact dt{display:flex;align-items:center;gap:6px}.fact dt .icon{width:14px;height:14px;color:var(--faint)}
.fact dd{font-size:17px;letter-spacing:-.01em}
.fact.late{background:linear-gradient(180deg,var(--danger-bg),var(--surface))}.fact.late dt .icon{color:var(--danger)}
.fact.ok dd{color:var(--good)}.fact.ok dt .icon{color:var(--good)}
.meter{display:inline-flex;gap:3px;flex:none}.meter i{display:block;width:12px;height:6px;border-radius:var(--r-pill);background:var(--line-strong)}.meter i.on{background:var(--brand-fill)}
.tabs{position:sticky;top:0;z-index:6;gap:4px;padding:6px;margin-bottom:var(--s4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.tabs button{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:var(--r-md);min-height:40px;margin:0;padding:0 var(--s4);color:var(--muted)}
.tabs button .icon{width:16px;height:16px;flex:none}
.tabs button:hover{background:var(--neutral-bg);color:var(--ink)}
.tabs button.active{background:var(--brand-soft);color:var(--brand-strong);box-shadow:inset 0 0 0 1px var(--brand-line)}
.detail>.panel,.detail .stack .panel{border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.detail>.panel{padding:var(--s6)}
.detail h2{font-size:18px;letter-spacing:-.015em}
.brief{font-size:15px;line-height:1.6;color:var(--ink-2);max-width:68ch}
.section-head{align-items:center;padding-bottom:var(--s2);border-bottom:1px solid var(--line);margin-bottom:var(--s1)}
.section-head h3{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.rows li{gap:var(--s3);justify-content:flex-start}.rows li>div{flex:1;min-width:0}.rows li>.badge{margin-left:auto}
.file-tile{display:grid;place-items:center;width:36px;height:36px;flex:none;border-radius:var(--r-md);background:var(--brand-soft);color:var(--brand-strong)}.file-tile .icon{width:18px;height:18px}
.ring{display:inline-grid;place-items:center;width:20px;height:20px;flex:none;border-radius:50%;border:2px solid var(--line-strong);background:var(--surface);color:#fff}
.ring.done{background:var(--good);border-color:var(--good)}.ring .icon{width:12px;height:12px}
.tasks li{gap:var(--s3);justify-content:flex-start;padding:var(--s3) var(--s2);border-radius:var(--r-md);border-top:0}
.tasks li+li{border-top:1px solid var(--line);border-radius:0}
.tasks li:hover{background:var(--surface-2)}
.tasks li>div{flex:1;min-width:0}.tasks li>button,.tasks li>.badge{margin-left:auto;flex:none}
.tasks small{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.tasks li.is-done strong{color:var(--faint);text-decoration:line-through}
.task-due{display:inline-flex;align-items:center;padding:1px 8px;border-radius:var(--r-pill);background:var(--neutral-bg);color:var(--neutral);font-size:11px;font-weight:650}
.is-late .task-due{background:var(--danger-bg);color:var(--danger)}
.people-list{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:var(--s3)}
.people-list li{display:flex;align-items:center;gap:var(--s3)}
.people-list .avatar{width:36px;height:36px}
.people-list strong{display:block;line-height:1.2}.people-list small{color:var(--muted)}
.people-trail{margin:var(--s4) 0 0;padding-top:var(--s3);border-top:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.6}
.brief-grid>div{background:var(--surface);box-shadow:var(--sh-1)}
.timeline li{padding-bottom:var(--s4)}
.timeline li::before{background:var(--brand-fill);border-color:var(--surface);box-shadow:0 0 0 2px var(--brand-line)}
/* proofs */
.proof-tools{gap:var(--s1)}.proof-tools button{min-height:34px;font-size:13px;gap:6px;display:inline-flex;align-items:center}
.decision-bar{position:sticky;bottom:12px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;margin:var(--s4) 0;padding:var(--s3) var(--s5);background:linear-gradient(100deg,var(--brand-soft),var(--surface));border:1px solid var(--brand-line);border-radius:var(--r-lg);box-shadow:0 10px 28px rgba(15,23,42,.14)}
.decision-bar strong{display:block;font-size:15px}.decision-bar small{color:var(--muted)}
.decision-bar .primary{min-height:44px;padding:0 var(--s5);display:inline-flex;align-items:center;gap:6px}
button.ghost-danger{border-color:var(--h-fecaca);color:var(--danger);background:var(--surface)}button.ghost-danger:hover{background:var(--danger-bg);border-color:var(--danger)}
.review .pages{background:linear-gradient(180deg,var(--h-eef2f7),var(--h-e4eaf2));border-radius:var(--r-lg);padding:var(--s4)}
.review aside{border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--sh-1)}
.review aside .note{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s3);margin-bottom:var(--s2)}
.review aside .note:first-of-type{border-top:1px solid var(--line)}
.review aside .note.focus{margin:0 0 var(--s2);padding:var(--s3);background:var(--brand-soft);border-color:var(--brand)}
@media(max-width:760px){.dk-hero{padding:var(--s4) var(--s4) var(--s3)}.dk-hero .heading h1{font-size:24px}.detail>.panel{padding:var(--s4)}.decision-bar{bottom:8px;padding:var(--s3) var(--s4)}.decision-bar .actions{width:100%}.decision-bar .actions>*{flex:1}}
@media print{.tabs,.decision-bar{position:static}}

.tabs{top:68px}
@media(max-width:900px){.tabs{top:8px}}
@media(max-width:760px){.dk-hero .docket-head{flex-direction:column;gap:var(--s3)}.dk-hero .heading .actions{justify-content:flex-start}}

/* ---- every tab: brief, discussion, activity, required reviews, proof workspace ---- */
.proof-head>div>.muted{margin:2px 0 0;font-size:13px}
.bf-group,.bf-text{margin-top:var(--s5)}
.bf-group h3,.bf-text h3{display:flex;align-items:center;gap:var(--s2);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s2)}
.bf-group h3 .icon,.bf-text h3 .icon{width:15px;height:15px;color:var(--brand)}
.bf-group .brief-grid{margin:0}
.bf-text{padding:var(--s4) var(--s5);background:var(--surface-2);border:1px solid var(--line);border-left:3px solid var(--brand-line);border-radius:var(--r-md)}
.bf-text .brief{margin:0;white-space:pre-line}
.empty-val{color:var(--faint);font-weight:400;font-style:italic}
.brief-grid dd .empty-val{font-size:13px}
.rr-list{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:var(--s3)}
.rr-list li{display:flex;gap:var(--s3);align-items:flex-start;padding:var(--s3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2)}
.rr-list li.done{background:var(--h-f0fdf4);border-color:var(--h-bbf7d0)}
.rr-dot{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:var(--warn-bg);color:var(--warn)}
.rr-list li.done .rr-dot{background:var(--good-bg);color:var(--good)}
.rr-list small{display:block;color:var(--muted)}.rr-list p{margin:var(--s2) 0 0;font-size:13px}.rr-list button{margin-top:var(--s2)}
/* discussion */
.thread{gap:var(--s3)}
.thread li{align-items:flex-start}
.thread li>div{background:var(--surface-2);border:1px solid var(--line);border-radius:4px var(--r-lg) var(--r-lg) var(--r-lg);padding:var(--s3) var(--s4);min-width:0}
.thread li.mine>div{background:var(--brand-soft);border-color:var(--brand-line)}
.thread .who strong{font-size:13px}
.composer{border:1px solid var(--line-strong);border-radius:var(--r-lg);background:var(--surface);padding:var(--s2);box-shadow:var(--sh-1)}
.composer:focus-within{border-color:var(--brand);box-shadow:var(--ring)}
.composer textarea{border:0;box-shadow:none;background:transparent;resize:vertical;min-height:72px}
.composer textarea:focus{box-shadow:none;outline:none}
.composer .actions{justify-content:space-between;padding:var(--s2);border-top:1px solid var(--line);margin-top:var(--s1)}
.composer .actions select{max-width:220px}
/* activity */
.act-day{margin-top:var(--s5)}
.act-day h3{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s3)}
.act-list{list-style:none;margin:0;padding:0 0 0 var(--s1);position:relative}
.act-list::before{content:"";position:absolute;left:17px;top:10px;bottom:10px;width:2px;background:var(--line)}
.act-list li{position:relative;display:flex;gap:var(--s3);align-items:flex-start;padding:0 0 var(--s4)}
.act-icon{position:relative;z-index:1;display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:50%;background:var(--brand-soft);color:var(--brand-strong);border:3px solid var(--surface)}
.act-icon .icon{width:14px;height:14px}
.act-list p{margin:3px 0 0;line-height:1.4}.act-list small{color:var(--muted)}
.recent .act-day:first-of-type{margin-top:var(--s3)}
/* proof workspace */
.review-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s4);padding:var(--s3) var(--s4);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-lg);margin-top:var(--s4)}
.tb-group{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2)}
.tb-group+.tb-group{padding-left:var(--s4);border-left:1px solid var(--line-strong)}
.tb-end{margin-left:auto}
.tb-label{font-size:11px;font-weight:750;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.review-toolbar button,.review-toolbar .button-link{min-height:36px;font-size:13px}
.review-toolbar .pager{margin-left:0}
.review aside .aside-head{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s3)}
.review aside .aside-head h3{margin:0;font-size:15px}.review aside .aside-head small{color:var(--muted);margin-left:auto}
.count-pill{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 7px;border-radius:var(--r-pill);background:var(--brand-fill);color:#fff;font-size:12px;font-weight:750}
.review aside .note{position:relative}
.note-link{display:flex!important;align-items:center;gap:var(--s2);font-weight:700;color:var(--ink)!important;min-height:28px}
.pin-no{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--brand-fill);color:#fff;font-size:12px;font-weight:750;flex:none}
.note-done{position:absolute;right:var(--s3);top:var(--s3)}
.review aside .note p{margin:var(--s2) 0;line-height:1.5}
.note-by{display:flex;align-items:center;gap:var(--s2);color:var(--muted)}
.note-by .avatar.sm{width:20px;height:20px;font-size:10px}
.replies{list-style:none;margin:var(--s2) 0 0;padding:0 0 0 var(--s3);border-left:2px solid var(--brand-line);display:grid;gap:var(--s2)}
.replies li p{margin:0}
.review aside>h3,.review aside>.pf{margin-bottom:var(--s3)}
.pf{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s3)}
.pf summary{cursor:pointer;display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.checklist-box{background:var(--surface-2)}
@media(max-width:760px){
  .review-toolbar{padding:var(--s3)}
  .tb-group+.tb-group{padding-left:0;border-left:0;width:100%}
  .tb-end{margin-left:0}
  .review{grid-template-columns:1fr}
  .review aside{position:static;max-height:none}
}

.tabs{scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.review aside .note .spaced{display:inline-block;margin:var(--s1) var(--s4) 0 0}
.review aside .checklist-box,.review aside .pf{margin-top:var(--s4)}

/* ---- photo set review ---- */
.set-summary{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s4) var(--s5);margin:var(--s4) 0;display:grid;gap:var(--s4)}
.set-bar{height:12px;border-radius:var(--r-pill);overflow:hidden;background:var(--neutral-bg);display:flex}
.set-counts{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s3);list-style:none;margin:0;padding:0}
.set-counts li{display:inline-flex;align-items:baseline;gap:6px;padding:6px 14px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--line);font-size:13px;color:var(--muted)}
.set-counts li b{font-size:18px;color:var(--ink)}
.set-counts .c-approved b{color:var(--good)}.set-counts .c-changes b{color:var(--warn)}.set-counts .c-rejected b{color:var(--danger)}
.set-people{list-style:none;margin:0;padding:var(--s3) 0 0;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--s2) var(--s6)}
.set-people li{display:grid;grid-template-columns:minmax(90px,auto) minmax(60px,1fr) auto;gap:var(--s3);align-items:center;font-weight:600}
.set-people small{color:var(--muted);font-weight:500}
.set-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);padding:var(--s3) var(--s4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);margin-bottom:var(--s4)}
.set-toolbar button{min-height:36px;font-size:13px}
.photo-grid .tile{border-radius:var(--r-lg);transition:box-shadow var(--t) var(--ease),transform var(--t) var(--ease)}
.photo-grid .tile:hover{box-shadow:var(--sh-2);transform:translateY(-1px)}
@media(max-width:760px){.set-summary{padding:var(--s3) var(--s4)}.set-people{grid-template-columns:1fr}.set-toolbar{padding:var(--s3)}}
@media(prefers-reduced-motion:reduce){.photo-grid .tile{transition:none}.photo-grid .tile:hover{transform:none}}
.set-toolbar{top:130px}
@media(max-width:900px){.set-toolbar{top:64px}}

/* billing */
.stat.warn{border-color:var(--h-e0b04a);background:var(--h-fff8e6)}
.stat strong small{font-size:15px;font-weight:600;color:var(--muted)}

.conn-row{display:flex;justify-content:space-between;gap:var(--s4);align-items:flex-start;padding:var(--s4) 0;border-top:1px solid var(--line)}
.conn-row p{margin:4px 0 0}
.conn-row .actions{flex:none}
@media(max-width:700px){.conn-row{flex-direction:column}}

/* ---- UI polish, 12 November 2026 ---- */
/* top bar: the breadcrumb and the account tools each stay on one line instead of wrapping under themselves */
@media(min-width:1200px){
  .top>span{white-space:nowrap;flex:0 1 auto;min-width:0;max-width:26vw;overflow:hidden;text-overflow:ellipsis}
  #local-tools{flex-wrap:nowrap;flex:none}
  .gsearch{flex:1 1 200px;min-width:160px}
  /* docket header: the actions sit on one line beside the title */
  .dk-hero .heading .actions{flex-wrap:nowrap;flex:none}
}
/* small controls get a comfortable minimum height: table sort headers, export links, disclosure rows */
.sort{min-height:24px}
.csv-link{min-height:28px}
details>summary{min-height:24px}
/* nothing smaller than 11px, and chips at 12px */
.chat-bubble time{font-size:11px}
.type-chip{font-size:12px;letter-spacing:.04em}
/* cancelling a docket is not a routine action, so it does not look like one */
.dk-hero .heading .actions [data-action=cancel-docket]{color:var(--danger)}
.dk-hero .heading .actions [data-action=cancel-docket]:hover{background:var(--danger-bg,var(--h-fef3f2))}
/* phone: the docket's actions scroll sideways in one row instead of stacking into three */
@media(max-width:760px){
  .dk-hero .heading .actions{flex-wrap:nowrap;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent);padding-right:var(--s6)}
  .dk-hero .heading .actions::-webkit-scrollbar{display:none}
  .dk-hero .heading .actions>*{flex:none}
}

/* ---- phone: bottom tab bar and a slim top, 12 November 2026 ---- */
#tabbar{display:none}
.more-list{display:grid;gap:var(--s2)}
.more-list button{display:flex;align-items:center;gap:var(--s3);justify-content:flex-start;min-height:48px;font-size:15px;font-weight:600}
.more-list button.active{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-strong)}
@media(max-width:760px){
  body[data-state=app] #tabbar{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--rail);padding:4px 6px calc(4px + env(safe-area-inset-bottom,0px));box-shadow:0 -6px 18px rgba(15,27,45,.2)}
  #tabbar button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px!important;padding:4px 2px;border:none;background:none;box-shadow:none;color:#b6c4d6;font-size:11px;font-weight:600;line-height:1.2;border-radius:10px}
  #tabbar button svg{width:22px;height:22px}
  #tabbar button.active{color:#fff;background:rgba(72,223,197,.18)}
  #tabbar button.active svg{color:var(--mint)}
  #tabbar .chat-badge{position:absolute;top:3px;left:calc(50% + 4px);margin:0;min-width:18px;height:18px;line-height:18px;font-size:10px}
  /* the bar replaces the sideways-scrolling menu, and content, toasts and the decision bar keep clear of it */
  body[data-state=app] .rail nav,body[data-state=app] .rail .nav-label,body[data-state=app] .rail .brand small{display:none}
  body[data-state=app] .rail{padding:var(--s2) var(--s3)}
  body[data-state=app] main{padding-bottom:calc(68px + env(safe-area-inset-bottom,0px))}
  body[data-state=app] #toast{bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  body[data-state=app] .decision-bar{bottom:calc(66px + env(safe-area-inset-bottom,0px))}
  /* one slim row: search, the bell and the account */
  body[data-state=app] .top{flex-wrap:nowrap;align-items:center}
  body[data-state=app] .gsearch{order:1;flex:1 1 auto;min-width:0}
  body[data-state=app] #local-tools{order:2;flex:none;flex-wrap:nowrap;margin:0;max-width:none}
  body[data-state=app] #local-tools .switcher,body[data-state=app] #local-tools>a{display:none}
  body[data-state=app] .theme-toggle{min-width:44px}
  body[data-state=app] #local-tools [data-action=account]{max-width:30vw}
}

/* ---- dark theme: tokens first, then the few things that cannot follow a token ---- */
html[data-theme=dark]{
  color-scheme:dark;
  --ink:#e8eef6;--ink-2:#ccd7e5;--muted:#a6b4c8;--faint:#8b9bb1;
  --bg:#0a1120;--surface:#121b2c;--surface-2:#0e1626;--line:#243149;--line-strong:#34455f;
  --brand:#3fd9ba;--brand-strong:#7be9d3;--brand-soft:rgba(63,217,186,.13);--brand-line:rgba(63,217,186,.34);--violet:#a78bfa;--slate:#b9c8dc;
  --brand-fill:#0a7f67;--brand-fill-strong:#086b57;
  --rail:#070d19;--rail-2:#111b2d;
  --good:#7ee7a8;--good-bg:rgba(34,197,94,.16);--warn:#fbbf6a;--warn-bg:rgba(245,158,11,.17);--danger:#fca5a5;--danger-bg:rgba(239,68,68,.19);--info:#a8c2e0;--info-bg:rgba(99,140,190,.2);--neutral:#b6c2d3;--neutral-bg:#1a2538;
  --sh-1:0 1px 2px rgba(0,0,0,.35);--sh-2:0 4px 14px rgba(0,0,0,.4);--sh-3:0 18px 48px rgba(0,0,0,.6);
  --ring:0 0 0 3px rgba(63,217,186,.45);
  --h-115e59:hsl(176,69%,76%);--h-166534:hsl(142,64%,76%);--h-1e40af:hsl(225,70%,76%);--h-2f5f94:hsl(211,51%,76%);--h-475569:hsl(215,19%,76%);--h-5b21b6:hsl(263,69%,76%);--h-64748b:hsl(215,16%,76%);--h-6d28d9:hsl(263,69%,76%);--h-86d9a3:hsl(140,40%,27%);--h-92400e:hsl(22,82%,76%);--h-9d174d:hsl(335,74%,76%);--h-b91c1c:hsl(0,73%,76%);--h-bbf7d0:hsl(141,40%,18%);--h-be185d:hsl(335,77%,76%);--h-ccfbf1:hsl(167,40%,16%);--h-d9ccf7:hsl(258,40%,24%);--h-dbeafe:hsl(214,40%,18%);--h-dcfce7:hsl(140,40%,15%);--h-e0b04a:hsl(40,40%,30%);--h-e2e8ef:hsl(212,28%,19%);--h-e2e8f0:hsl(214,31%,19%);--h-e4eaf2:hsl(214,34%,18%);--h-e8edf5:hsl(216,39%,17%);--h-ede9fe:hsl(251,40%,17%);--h-eef2f7:hsl(213,36%,16%);--h-f0a0a0:hsl(0,40%,31%);--h-f0fdf4:hsl(138,40%,13%);--h-f2c36b:hsl(39,40%,26%);--h-f6f8fb:hsl(216,38%,14%);--h-f8fafc:hsl(210,40%,13%);--h-faf7ff:hsl(262,40%,14%);--h-fce7f3:hsl(325,40%,17%);--h-fde68a:hsl(48,40%,19%);--h-fecaca:hsl(0,40%,23%);--h-fef2f2:hsl(0,40%,15%);--h-fef3c7:hsl(47,40%,15%);--h-fef3f2:hsl(4,40%,15%);--h-fff7f7:hsl(0,40%,13%);--h-fff8e6:hsl(43,40%,14%);--h-fffbeb:hsl(47,40%,13%);
}
/* the proof itself is a printed page: it stays white, and so do sign-in buttons that carry a brand */
html[data-theme=dark] .paper,html[data-theme=dark] .cmp-view,html[data-theme=dark] .auth-card .ms-btn{background:#fff;color:#111c30}
html[data-theme=dark] .top{background:rgba(10,17,32,.92)}
html[data-theme=dark] body{background:var(--bg)}
html[data-theme=dark] img.shot,html[data-theme=dark] .paper img,html[data-theme=dark] canvas{filter:none}
html[data-theme=dark] .demo{background:rgba(34,197,94,.16)}
html[data-theme=dark] ::selection{background:rgba(63,217,186,.35)}
html[data-theme=dark] dialog{background:var(--surface);color:var(--ink)}
html[data-theme=dark] dialog::backdrop{background:rgba(2,6,14,.7)}
/* the theme switch in the top bar */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:var(--control);min-height:var(--control);padding:0 var(--s2)}
.theme-toggle .icon{width:20px;height:20px}
.theme-toggle .sun{display:none}
html[data-theme=dark] .theme-toggle .sun{display:inline}
html[data-theme=dark] .theme-toggle .moon{display:none}
.theme-choice{display:grid;gap:var(--s2);margin-top:var(--s2)}
.theme-choice label{width:100%;display:flex;align-items:center;gap:var(--s3);min-height:44px;padding:0 var(--s3);border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;font-weight:600}
.theme-choice label:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}
/* dark theme: the coloured stat tiles keep their tone but on a dark surface */
html[data-theme=dark] .stat[data-tone]{--acc:#3fd9ba;--acc-soft:rgba(63,217,186,.12);--acc-line:rgba(63,217,186,.35)}
html[data-theme=dark] .stat[data-tone=amber]{--acc:#fbbf6a;--acc-soft:rgba(245,158,11,.14);--acc-line:rgba(245,158,11,.4)}
html[data-theme=dark] .stat[data-tone=red]{--acc:#fca5a5;--acc-soft:rgba(239,68,68,.15);--acc-line:rgba(239,68,68,.42)}
html[data-theme=dark] .stat[data-tone=blue]{--acc:#8ab6ea;--acc-soft:rgba(99,140,190,.16);--acc-line:rgba(99,140,190,.42)}
html[data-theme=dark] .stat[data-tone=violet]{--acc:#b79cf7;--acc-soft:rgba(124,58,237,.18);--acc-line:rgba(167,139,250,.42)}
html[data-theme=dark] .stat[data-tone=green]{--acc:#6ee7a0;--acc-soft:rgba(34,197,94,.14);--acc-line:rgba(34,197,94,.4)}
/* dark theme: the dark logo becomes white wherever it sits on the page background */
html[data-theme=dark] .brand-lg img,html[data-theme=dark] .auth-logo,html[data-theme=dark] .invite-card img[src*="doxora-logo.svg"]{filter:brightness(0) invert(1)}
html[data-theme=dark] .auth-card .ms-btn{background:#fff}
/* native controls (checkboxes, pickers, scrollbars) follow the chosen theme, not the device */
html[data-theme=light]{color-scheme:light}
.dh-chip b{white-space:nowrap;flex:none}

/* wording comparison */
.word-diff{padding:var(--s4);line-height:1.8;font-size:15px;white-space:normal;overflow-wrap:anywhere;max-height:70vh;overflow:auto;text-align:left}
.word-diff ins{background:rgba(34,197,94,.22);color:inherit;text-decoration:none;border-radius:3px;padding:0 2px}
.word-diff del{background:rgba(239,68,68,.2);color:inherit;text-decoration:line-through;border-radius:3px;padding:0 2px}
.word-diff .wd-page{display:inline-block;margin:0 4px;padding:0 8px;border-radius:99px;background:var(--surface-2,#eef1f6);color:var(--muted,#5b6b80);font-size:12px;font-weight:700}
html[data-theme=dark] .word-diff{background:var(--surface);color:var(--text)}

/* drawn signature */
.sign-draw{margin:var(--s2) 0}
.sign-pad{display:block;width:100%;max-width:480px;height:auto;aspect-ratio:480/150;border:1px dashed var(--line-strong,#94a3b8);border-radius:var(--r-md,10px);background:#fff;touch-action:none;cursor:crosshair}
.sign-draw-row{display:flex;justify-content:space-between;align-items:center;max-width:480px;margin-top:4px}
.code-row{display:flex;gap:var(--s2);margin:4px 0}
.code-row input{flex:1;min-width:0;letter-spacing:.3em;font-size:18px;text-align:center}
html[data-theme=dark] .sign-pad{background:#fff}

.plain-list{list-style:none;margin:0 0 var(--s3);padding:0}
.plain-list li{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s2) 0;border-bottom:1px solid var(--line)}

/* planning grid and programmes */
.plan th,.plan td{text-align:center;white-space:nowrap}
.plan th:first-child,.plan td:first-child{text-align:left}
.plan-ok{background:rgba(34,197,94,.14)}
.plan-near{background:rgba(245,158,11,.22)}
.plan-over{background:rgba(239,68,68,.22);font-weight:700}
.plan-off{color:var(--muted)}
.bar-track{display:block;height:6px;border-radius:99px;background:var(--line);margin-top:4px;min-width:60px;overflow:hidden}
.bar-fill{display:block;height:100%;background:var(--brand-fill)}

/* spend */
.rate-input{width:7em}
.inline-field{display:inline-flex;align-items:center;gap:8px}
.scroll td select{min-width:16em}
.three-up{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s4)}
@media(max-width:700px){.three-up{grid-template-columns:1fr}}
.invoice-box{border:1px dashed var(--line);border-radius:var(--r);padding:var(--s4);margin:var(--s4) 0}
.presence{margin:4px 0 0;font-weight:650;color:var(--brand-fill,#0a7f66)}
.presence::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:currentColor;margin-right:8px}
.brand img.custom-logo,.brand-lg img.custom-logo{width:auto;height:auto;max-width:190px;max-height:40px;object-fit:contain;background:#fff;border-radius:8px;padding:4px 10px}

/* ---- Setup: sections on the left, each setting as a row ---- */
.setup-layout{display:grid;grid-template-columns:248px minmax(0,1fr);gap:var(--s8);align-items:start}
.setup-nav{position:sticky;top:var(--s4);display:grid;gap:2px}
.setup-nav-item{display:grid;grid-template-columns:20px minmax(0,1fr);gap:var(--s3);align-items:start;text-align:left;padding:10px 12px;border:0;border-left:3px solid transparent;border-radius:0 var(--r-md) var(--r-md) 0;background:transparent;color:var(--ink-2);box-shadow:none;min-height:0;font:inherit;cursor:pointer}
.setup-nav-item i{width:20px;height:20px;margin-top:1px;color:var(--faint)}
.setup-nav-item svg{width:20px;height:20px}
.setup-nav-item strong{display:block;font-weight:650;color:var(--ink)}
.setup-nav-item small{display:block;margin-top:2px;color:var(--faint);font-size:12.5px;font-weight:450}
.setup-nav-item:hover{background:var(--surface-2)}
.setup-nav-item.on{background:var(--brand-soft);border-left-color:var(--brand);}
.setup-nav-item.on i{color:var(--brand)}
.setup-nav-item.on small{color:var(--brand-strong)}
.setup-main{min-width:0}
.setup-section{display:grid;gap:var(--s4)}
.setup-section[hidden]{display:none}
.setup-section-head{padding:0 0 var(--s2)}
.setup-section-head h2{font-size:22px;line-height:1.25;margin:0 0 4px}
.setup-section-head p{margin:0;max-width:62ch}
.setup-section .panel{margin:0}
.panel.sp{display:grid;grid-template-columns:minmax(0,250px) minmax(0,1fr);gap:var(--s3) var(--s10);padding:var(--s6) var(--s6) var(--s6)}
.sp-head h2{font-size:17px;line-height:1.3;margin:0 0 6px}
.sp-head p{margin:0;font-size:14px;line-height:1.55}
.sp-body{min-width:0}
.sp-body>*:first-child{margin-top:0}
.sp-body input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]),.sp-body select{max-width:540px}
.sp-body textarea{max-width:640px}
.sp-body .inline-check{padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);margin:0 0 var(--s2);max-width:640px}
.sp-body .plain-list{margin-top:0}
.sp-body .actions.spaced{margin-top:var(--s4)}
@media(max-width:1100px){
  .setup-layout{grid-template-columns:1fr;gap:var(--s5)}
  .setup-nav{position:static;display:flex;overflow-x:auto;gap:var(--s2);padding-bottom:var(--s2)}
  .setup-nav-item{flex:none;border-left:0;border-bottom:3px solid transparent;border-radius:var(--r-md) var(--r-md) 0 0;min-width:170px}
  .setup-nav-item.on{border-bottom-color:var(--brand)}
}
@media(max-width:860px){.panel.sp{grid-template-columns:1fr}.sp-head p{max-width:none}}

/* ---- progress bars (no inline styles needed) ---- */
progress.bar{appearance:none;-webkit-appearance:none;display:block;width:100%;height:8px;border:0;border-radius:99px;background:var(--line);overflow:hidden;margin-top:6px}
progress.bar::-webkit-progress-bar{background:var(--line);border-radius:99px}
progress.bar::-webkit-progress-value{background:var(--brand-fill);border-radius:99px}
progress.bar::-moz-progress-bar{background:var(--brand-fill);border-radius:99px}
/* ---- Spend ---- */
.spend-heading{align-items:flex-end;gap:var(--s5);flex-wrap:wrap}
.spend-tools{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}
.seg{display:inline-flex;background:var(--neutral-bg);border-radius:var(--r-md);padding:3px;gap:2px}
.seg-item{min-height:34px;border:0;background:transparent;box-shadow:none;border-radius:8px;padding:0 12px;font:inherit;font-weight:600;color:var(--ink-2);cursor:pointer}
.seg-item:hover{background:rgba(255,255,255,.6)}
.seg-item.on{background:var(--surface);color:var(--ink);box-shadow:var(--sh-1)}
.spend-summary{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--s8);align-items:center;padding:var(--s6) var(--s8);margin-bottom:var(--s5)}
.spend-label{margin:0 0 4px;color:var(--muted);font-weight:600}
.spend-total strong{display:block;font:700 44px/1.05 var(--font-head);letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}
.spend-total progress.bar{height:10px;margin:var(--s4) 0 var(--s2)}
.spend-split{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5);margin:0}
.spend-split .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px}
.dot.hourly{background:var(--brand-fill)}.dot.other{background:var(--line-strong)}
.spend-facts{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0}
.spend-facts>div{padding:var(--s3) var(--s4);border-left:1px solid var(--line)}
.spend-facts>div:nth-child(-n+2){border-bottom:1px solid var(--line)}
.spend-facts dt{color:var(--muted);font-size:13px;font-weight:600;margin-bottom:2px}
.spend-facts dd{margin:0;font:700 22px/1.2 var(--font-head);font-variant-numeric:tabular-nums;color:var(--ink)}
.spend-facts .warn dd{color:var(--warn)}
.spend-tabs{display:flex;gap:var(--s2);border-bottom:1px solid var(--line);margin:0 0 var(--s5);overflow-x:auto}
.spend-tab{min-height:44px;border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;box-shadow:none;font:inherit;font-weight:650;color:var(--muted);padding:0 var(--s4);cursor:pointer;white-space:nowrap}
.spend-tab:hover{color:var(--ink)}
.spend-tab.on{color:var(--ink);border-bottom-color:var(--brand)}
.spend-tab .count{display:inline-block;min-width:22px;padding:1px 7px;margin-left:6px;border-radius:99px;background:var(--neutral-bg);font-size:12.5px;text-align:center}
.spend-tab.on .count{background:var(--brand-soft);color:var(--brand-strong)}
.spend-pane{display:grid;gap:var(--s5)}
.spend-pane .panel{margin:0}
.spend-note{margin:0 0 var(--s4);max-width:72ch}
.spend-table{width:100%}
.spend-table th.num,.spend-table td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.spend-table td select{min-width:15em}
.spend-table .rate-input{width:6.5em;text-align:right}
.empty-cell{color:var(--muted);text-align:center;padding:var(--s8) var(--s4)!important}
.spend-addperson{margin-top:var(--s6);padding-top:var(--s5);border-top:1px solid var(--line)}
.spend-addperson h3,.spend-fields h3,.invoice-drop h3{font-size:16px;margin:0 0 var(--s3)}
.spend-row{display:flex;flex-wrap:wrap;gap:var(--s4);align-items:flex-end;margin-bottom:var(--s4)}
.spend-row>label{flex:1 1 150px;min-width:0}
.spend-row>label.grow{flex:2 1 220px}
.spend-row>.primary{flex:none}
.spend-add{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:var(--s8);padding:var(--s6)}
.invoice-drop{border:2px dashed var(--line-strong);border-radius:var(--r-lg);padding:var(--s5);text-align:center;background:var(--surface-2);transition:border-color var(--t),background var(--t)}
.invoice-drop.over{border-color:var(--brand);background:var(--brand-soft)}
.invoice-drop>i{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--brand-soft);color:var(--brand);margin-bottom:var(--s2)}
.invoice-drop>i svg{width:22px;height:22px}
.invoice-drop p{margin:0 0 var(--s3);font-size:14px}
.invoice-drop .fine{font-size:12.5px;margin:var(--s3) 0 0}
.file-pick{position:relative;overflow:hidden;cursor:pointer}
.file-pick input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.invoice-drop #invoice-status{text-align:left;margin-top:var(--s3)}
.spend-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);flex-wrap:wrap}
.spend-foot .inline-check{margin:0}
@media(max-width:1000px){.spend-summary{grid-template-columns:1fr;gap:var(--s5)}.spend-add{grid-template-columns:1fr}}
@media(max-width:560px){.spend-total strong{font-size:36px}.spend-heading{display:block}.spend-tools{margin-top:var(--s3)}}
.spend-row label small,.spend-addperson label small{display:inline;margin-left:6px;font-weight:450;color:var(--faint)}
.spend-table td .link+.link,.spend-table td button+button{margin-left:var(--s3)}

/* ---- Billing ---- */
.bill-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:var(--s8);align-items:center;padding:var(--s6) var(--s8);margin-bottom:var(--s5)}
.plan-pill{display:inline-block;margin-left:8px;padding:2px 10px;border-radius:99px;background:var(--brand-soft);color:var(--brand-strong);font-weight:700;font-size:13px}
.bill-plan strong{display:block;font:700 44px/1.05 var(--font-head);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink)}
.bill-plan strong small{font-size:16px;font-weight:600;letter-spacing:0;color:var(--muted)}
.bill-plan>p{margin:var(--s2) 0 0}
.bill-status{padding:8px 12px;border-radius:var(--r-md);font-weight:600;font-size:14px;margin-top:var(--s4)!important}
.bill-status.ok{background:var(--good-bg);color:var(--good)}
.bill-status.warn{background:var(--warn-bg);color:var(--warn)}
.bill-gauges{display:grid;gap:var(--s5)}
.gauge-top{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3);font-weight:600;color:var(--ink-2)}
.gauge-top strong{font:700 22px/1 var(--font-head);font-variant-numeric:tabular-nums;color:var(--ink)}
.gauge-top small{font-size:14px;font-weight:600;color:var(--muted)}
.gauge progress.bar{height:10px;margin:var(--s2) 0 4px}
.gauge.over progress.bar::-webkit-progress-value{background:#d97706}
.gauge.over progress.bar::-moz-progress-bar{background:#d97706}
.gauge p{margin:0;font-size:13px}
.bill-extra{margin:0;font-size:14px}
.bill-how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s5);margin:0 0 var(--s5);padding:0 var(--s2)}
.bill-how h3{font-size:15px;margin:0 0 2px}
.bill-how p{margin:0;font-size:14px}
.block{display:block;margin-top:2px}
.yes{color:var(--good);font-weight:600}
.bar-cell{width:38%}
.bar-cell progress.bar{margin:0}
@media(max-width:1000px){.bill-summary{grid-template-columns:1fr;gap:var(--s5)}.bill-how{grid-template-columns:1fr}}
@media(max-width:560px){.bill-plan strong{font-size:36px}}
.billing-seg{margin:var(--s4) 0}
/* ---- People ---- */
.team-card{display:grid;grid-template-columns:1fr;gap:var(--s2);align-items:start;padding:var(--s4)}
.team-top{display:flex;justify-content:space-between;align-items:center;gap:var(--s2)}
.team-top strong{font-size:16px}
.team-top .count,.seg-item .count{display:inline-block;min-width:22px;padding:1px 7px;border-radius:99px;background:var(--neutral-bg);font-size:12.5px;text-align:center;font-weight:650}
.seg-item.on .count{background:var(--brand-soft);color:var(--brand-strong)}
.team-lead{margin:0;font-size:14px;min-height:26px;display:flex;align-items:center;gap:var(--s2)}
.team-card .link{justify-self:start;padding:0}
.people-bar{display:flex;justify-content:space-between;align-items:center;gap:var(--s4);flex-wrap:wrap;padding:var(--s4) var(--s5) var(--s3)}
.people-bar .seg{flex-wrap:wrap}
.people-filters{display:flex;gap:var(--s2);flex-wrap:wrap}
.people-filters input[type=search]{min-width:260px}
.people-table td{vertical-align:middle}
.people-table th.sel,.people-table td.sel{width:44px}
.chip-s{display:inline-block;padding:2px 9px;border-radius:99px;background:var(--neutral-bg);font-size:12.5px;font-weight:600;color:var(--ink-2)}
.people-foot{display:flex;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;margin:0;padding:var(--s3) var(--s5);border-top:1px solid var(--line);font-size:13.5px}
.people-filters>*{width:auto;flex:1 1 170px;min-width:0}
.people-filters>input[type=search]{flex:2 1 280px}
.people-bar{align-items:flex-start}
.people-table td.sel input,.people-table th.sel input{display:block;margin:0 auto}

/* ---- Reports ---- */
.rep-summary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--s8);align-items:center;padding:var(--s6) var(--s8);margin-bottom:var(--s5)}
.rep-now{display:flex;gap:0}
.rep-now>div{flex:1;padding:0 var(--s5);border-left:1px solid var(--line)}
.rep-now>div:first-child{padding-left:0;border-left:0}
.rep-now strong{display:block;font:700 44px/1.05 var(--font-head);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink)}
.rep-now span{display:block;margin-top:4px;color:var(--muted);font-weight:600}
.rep-now .bad strong{color:var(--danger)}
.rep-finish{display:grid;grid-template-columns:1fr 1fr;margin:0}
.rep-finish>div{padding:var(--s3) var(--s4);border-left:1px solid var(--line)}
.rep-finish>div:nth-child(-n+2){border-bottom:1px solid var(--line)}
.rep-finish dt{color:var(--muted);font-size:13px;font-weight:600;margin-bottom:2px}
.rep-finish dd{margin:0;font:700 22px/1.2 var(--font-head);font-variant-numeric:tabular-nums;color:var(--ink)}
.rep-two{align-items:start}
.stage-bars{list-style:none;margin:var(--s4) 0 0;padding:0;display:grid;gap:var(--s3)}
.stage-bars li{display:grid;grid-template-columns:130px minmax(0,1fr) 36px;gap:var(--s3);align-items:center}
.stage-bars progress.bar{margin:0;height:12px}
.stage-bars strong{text-align:right;font-variant-numeric:tabular-nums}
.rep-foot{margin:var(--s4) 0 0}
.cell-bar{display:flex;align-items:center;gap:var(--s3)}
.cell-bar progress.bar{margin:0;flex:1}
.cell-bar span{min-width:24px;text-align:right;font-variant-numeric:tabular-nums;font-weight:650}
@media(max-width:1000px){.rep-summary{grid-template-columns:1fr;gap:var(--s5)}}
@media(max-width:560px){.rep-now strong{font-size:34px}.rep-now>div{padding:0 var(--s3)}.stage-bars li{grid-template-columns:100px minmax(0,1fr) 32px}}
.people-filters{flex:1 1 100%}
.people-table td.sel input,.people-table th.sel input{display:inline-block;vertical-align:middle;margin:0}
.people-table td.sel,.people-table th.sel{text-align:center;vertical-align:middle}
.people-table td.sel,.people-table th.sel{display:table-cell;padding:0 var(--s3);width:48px}

/* ---- queue lists: Team queue, Intake, My work, Completed, Schedule ---- */
.qbar{display:flex;flex-direction:column;gap:var(--s3);padding:var(--s4) var(--s5);border-bottom:1px solid var(--line)}
.qbar-filters{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}
.qbar-filters .qsearch{flex:1 1 260px;min-width:200px;max-width:420px}
.qbar-filters select{width:auto;flex:0 1 170px;min-width:130px}
.qbar-tools{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s3);align-items:center}
.qbar-tools select{width:auto;min-width:150px}
.qbar-tools .csv-link{margin-left:auto}
.qbar .seg{margin-right:var(--s2)}
.grid td .link,.grid td button.link{display:inline;text-align:left;padding:0;min-height:0;color:var(--ink);font-weight:650;line-height:1.35}
.grid td .link:hover{color:var(--brand);text-decoration:underline}
.grid td.col-project{text-align:left}
.grid .docket-no{color:var(--muted);font-weight:650;font-variant-numeric:tabular-nums}
.intake-note{margin-bottom:var(--s4)}
.mini-list .link,.agenda .link{color:var(--ink);font-weight:650;text-align:left}
.mini-list .link:hover,.agenda .link:hover{color:var(--brand)}
/* ---- team overview ---- */
.ov-summary{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
.rep-now .warn strong{color:var(--warn)}
.ov-assign{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);padding:var(--s4) var(--s5);border-radius:var(--r-lg);background:var(--warn-bg)}
.ov-assign.ok{background:var(--good-bg)}
.ov-assign>span{display:grid;grid-template-columns:auto 1fr;column-gap:var(--s3);align-items:center;color:var(--warn)}
.ov-assign.ok>span{color:var(--good)}
.ov-assign svg{grid-row:1/3;width:22px;height:22px}
.ov-assign strong{color:var(--ink)}
.ov-assign small{color:var(--muted)}
.mini-list.attn li{align-items:center}
.designer-card.has-late{border-color:#f3c9c9}
.disclose summary{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);cursor:pointer;list-style:none}
.disclose summary::-webkit-details-marker{display:none}
.disclose summary h2{margin:0 0 2px}
.disclose summary::after{content:'Show';font-weight:650;color:var(--brand-strong)}
.disclose[open] summary::after{content:'Hide'}
.disclose-body{margin-top:var(--s4)}
.actions-row{margin:0 0 var(--s3)}
@media(max-width:1000px){.ov-summary{grid-template-columns:1fr}}
@media(max-width:560px){.ov-assign{flex-direction:column;align-items:flex-start}}
