/* ==========================================================
   The Message: styles
   Obolo's design (Claude's warm neutrals, liquid glass on floating
   layers, and "glass everywhere" over a background) with The Message's
   red (#9c1d36, from the logo) as the accent and Obolo's spark as the mark.
   Design tokens live in :root. Change colours here first.
   Sections: fonts · tokens · base · glass · ambient · mark · gate ·
             sidebar · header · home · thread · answer · drafts ·
             approvals · composer · pages · payroll · insights · library · settings ·
             sheets · glass everywhere · motion · responsive
   ========================================================== */
/* overlap's type: Geist Regular for text, Geist Medium for names and headings in the UI (SIL Open Font License) */
@font-face{font-family:"Geist";src:url("vendor/Geist-Light.woff2") format("woff2");font-weight:200 349;font-style:normal;font-display:swap}
@font-face{font-family:"Geist";src:url("vendor/Geist-Regular.woff2") format("woff2");font-weight:350 450;font-style:normal;font-display:swap}
@font-face{font-family:"Geist";src:url("vendor/Geist-Medium.woff2") format("woff2");font-weight:451 900;font-style:normal;font-display:swap}
/* Carlito: the font HR's letter templates are set in (same widths as Calibri), for the letter's paper (hr/pdf.py embeds it) */
@font-face{font-family:"Carlito";src:url("vendor/Carlito-Regular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Carlito";src:url("vendor/Carlito-Bold.ttf") format("truetype");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Carlito";src:url("vendor/Carlito-Italic.ttf") format("truetype");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Obolo Serif";src:url("vendor/SourceSerif4-Variable.woff2") format("woff2");font-weight:200 900;font-style:normal;font-display:swap}
@font-face{font-family:"Obolo Serif";src:url("vendor/SourceSerif4-Variable-Italic.woff2") format("woff2");font-weight:200 900;font-style:italic;font-display:swap}

/* ---------- Tokens (Obolo's, with The Message's red as the accent) ---------- */
:root{
  --bg:#fcfbf9; --side-bg:#f6f5f2; --surface:#f3f2ee; --ink:#0f0f0e; --ink-2:#3d3d3a; --muted:#73726c; --faint:#a19f97;
  --line:rgba(31,30,29,.11); --line-2:rgba(31,30,29,.19);
  --hover:rgba(31,30,29,.05); --press:rgba(31,30,29,.09);
  --accent:#9c1d36; --accent-2:#b8324c; --accent-ink:#ffffff; --accent-soft:rgba(156,29,54,.09); --accent-ring:rgba(156,29,54,.17);
  --q-bg:#f0eee6; --code-bg:#f5f4ed; --input-bg:#ffffff;
  --danger:#c2410c; --ok:#277a4c; --code-ink:#9c1d36; --warn:#94600f;
  --danger-soft:color-mix(in srgb,var(--danger) 11%,transparent); --ok-soft:color-mix(in srgb,var(--ok) 12%,transparent); --warn-soft:color-mix(in srgb,var(--warn) 14%,transparent);
  --glass-bg:rgba(255,255,255,.34); --glass-strong:rgba(255,255,255,.7); --glass-solid:#ffffff;
  --glass-filter:blur(16px) saturate(190%) brightness(1.04);
  --glass-read:rgba(255,255,255,.8);
  --glass-shadow:0 10px 30px -12px rgba(20,20,19,.16),0 1px 3px rgba(20,20,19,.06),inset 0 1px 0 rgba(255,255,255,.9);
  --shadow-sm:0 1px 2px rgba(20,20,19,.05),0 2px 8px -3px rgba(20,20,19,.08);
  --thumb:rgba(31,30,29,.18);
  --font:"Geist",-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --serif:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;   /* headings: Geist, overlap's type */
  --letter-serif:"Obolo Serif",ui-serif,"New York",Georgia,serif;   /* the letter's paper preview keeps a serif, as the Word letter does */
  --mono:"SF Mono",ui-monospace,Menlo,Consolas,monospace;
  --chat-font:var(--font);
  --t-caption:11.5px; --t-small:13px; --t-ui:14px; --t-body:15px; --t-heading:17px; --t-display:clamp(28px,3.4vw,34px);
  --ease:cubic-bezier(.2,.8,.2,1); --spring:cubic-bezier(.3,1.35,.4,1);
  --side-w:272px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
  --bg:#1d1d1c; --side-bg:#181817; --surface:#272725; --ink:#faf9f5; --ink-2:#d4d2c8; --muted:#a3a198; --faint:#6f6d66;
  --line:rgba(250,249,245,.09); --line-2:rgba(250,249,245,.16);
  --hover:rgba(250,249,245,.055); --press:rgba(250,249,245,.1);
  --accent:#ec7f93; --accent-2:#f3a0af; --accent-ink:#2b0810; --accent-soft:rgba(236,127,147,.15); --accent-ring:rgba(236,127,147,.22);
  --q-bg:#141413; --code-bg:#1f1e1d; --input-bg:#30302e;
  --danger:#f0935f; --ok:#6cc58f; --code-ink:#ef8f9f; --warn:#e3a54a;
  --glass-bg:rgba(48,48,46,.32); --glass-strong:rgba(48,48,46,.72); --glass-solid:#30302e;
  --glass-filter:blur(16px) saturate(170%) brightness(1.08);
  --glass-read:rgba(38,38,36,.8);
  --glass-shadow:0 12px 32px -12px rgba(0,0,0,.55),0 0 0 .5px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.24),inset 0 -1px 0 rgba(255,255,255,.07),inset 0 0 0 1px rgba(255,255,255,.09);
  --shadow-sm:0 1px 2px rgba(0,0,0,.3),0 2px 8px -3px rgba(0,0,0,.4);
  --thumb:rgba(250,249,245,.16);
  color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#1d1d1c; --side-bg:#181817; --surface:#272725; --ink:#faf9f5; --ink-2:#d4d2c8; --muted:#a3a198; --faint:#6f6d66;
  --line:rgba(250,249,245,.09); --line-2:rgba(250,249,245,.16);
  --hover:rgba(250,249,245,.055); --press:rgba(250,249,245,.1);
  --accent:#ec7f93; --accent-2:#f3a0af; --accent-ink:#2b0810; --accent-soft:rgba(236,127,147,.15); --accent-ring:rgba(236,127,147,.22);
  --q-bg:#141413; --code-bg:#1f1e1d; --input-bg:#30302e;
  --danger:#f0935f; --ok:#6cc58f; --code-ink:#ef8f9f; --warn:#e3a54a;
  --glass-bg:rgba(48,48,46,.32); --glass-strong:rgba(48,48,46,.72); --glass-solid:#30302e;
  --glass-filter:blur(16px) saturate(170%) brightness(1.08);
  --glass-read:rgba(38,38,36,.8);
  --glass-shadow:0 12px 32px -12px rgba(0,0,0,.55),0 0 0 .5px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.24),inset 0 -1px 0 rgba(255,255,255,.07),inset 0 0 0 1px rgba(255,255,255,.09);
  --shadow-sm:0 1px 2px rgba(0,0,0,.3),0 2px 8px -3px rgba(0,0,0,.4);
  --thumb:rgba(250,249,245,.16);
  color-scheme:dark;
}

/* ---------- Base ---------- */
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{font-synthesis-weight:none;height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font:var(--t-ui)/1.4 var(--font);letter-spacing:-.018em;height:100dvh;overflow:hidden;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
input,textarea,select{font:inherit;color:inherit}
a{color:var(--accent)}
::selection{background:var(--accent-soft)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
textarea:focus-visible,input:focus-visible,select:focus-visible{outline:0}
.svg-defs{position:absolute;width:0;height:0;overflow:hidden}
.spacer{flex:1}
kbd{font:500 var(--t-caption)/1 var(--font);color:var(--faint);margin-left:auto}
svg{flex:0 0 auto}
.muted{color:var(--muted)}
.scroll,.page,.chats,.modal-card,.doc-text,.tbl,.ap-body{scrollbar-width:thin;scrollbar-color:var(--thumb) transparent}
.iconbtn{border:0;background:none;width:36px;height:36px;border-radius:10px;color:var(--muted);display:grid;place-items:center;flex:0 0 auto;transition:background .2s,color .2s,transform .2s var(--spring)}
@media (hover:hover){.iconbtn:hover{background:var(--hover);color:var(--ink)}}
.iconbtn:active{transform:scale(.92)}
.iconbtn:disabled{opacity:.35;cursor:default;background:none}
.btn{height:40px;border:0;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line-2);padding:0 18px;border-radius:11px;font:500 var(--t-ui) var(--font);color:var(--ink);
  display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;transition:background .2s,transform .25s var(--spring),opacity .2s}
@media (hover:hover){.btn:hover{background:var(--hover)}}
.btn:active{transform:scale(.96)}
.btn:disabled{opacity:.42;cursor:default;transform:none}
.btn.primary{background:var(--ink);color:var(--bg);box-shadow:none}
@media (hover:hover){.btn.primary:hover{background:var(--ink);opacity:.88}}
.btn.danger{color:var(--danger)}
.btn.primary.danger{background:var(--danger);color:#fff}
.btn.ghost{background:none;box-shadow:none}
@media (hover:hover){.btn.ghost:hover{background:var(--hover)}}
.btn.sm{height:34px;padding:0 14px;font-size:var(--t-small);border-radius:9px}
.pill{height:26px;display:inline-flex;align-items:center;gap:6px;padding:0 10px;border-radius:8px;background:var(--hover);color:var(--ink-2);font:500 var(--t-small) var(--font);white-space:nowrap}
.pill.sample,.pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.ok{background:var(--ok-soft);color:var(--ok)}
.pill.bad{background:var(--danger-soft);color:var(--danger)}
.pill.accent{background:var(--accent-soft);color:var(--accent)}
.field{display:grid;gap:8px;margin-bottom:16px;align-content:start}
.field>span{font:500 var(--t-small) var(--font);color:var(--ink-2)}
.field small{color:var(--muted);font-size:var(--t-small)}
.input{width:100%;appearance:none;-webkit-appearance:none;border:0;background:var(--input-bg);color:var(--ink);border-radius:11px;padding:11px 14px;
  font:var(--t-ui) var(--font);box-shadow:inset 0 0 0 1px var(--line-2);outline:0;transition:box-shadow .2s}
select.input{padding-right:36px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 19px) 52%,calc(100% - 14px) 52%;background-size:5px 5px;background-repeat:no-repeat}
textarea.input{resize:vertical;min-height:92px;line-height:1.5}
.input:focus{box-shadow:inset 0 0 0 1px var(--accent),0 0 0 4px var(--accent-ring)}
.input:disabled{opacity:.6}
.check{display:flex;align-items:center;gap:9px;margin:8px 0;cursor:pointer;color:var(--ink-2)}
.check input{accent-color:var(--accent);width:16px;height:16px}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
/* Segmented control (Obolo's) */
.seg{position:relative;display:grid;grid-template-columns:repeat(var(--n,3),1fr);padding:3px;border-radius:11px;background:var(--hover);box-shadow:inset 0 0 0 1px var(--line)}
.seg button{position:relative;z-index:1;border:0;background:none;height:34px;border-radius:9px;font:500 var(--t-small) var(--font);color:var(--muted);transition:color .25s}
.seg button[aria-checked="true"]{color:var(--ink)}
.seg-thumb{position:absolute;top:3px;bottom:3px;left:3px;width:calc((100% - 6px) / var(--n,3));border-radius:9px;background:var(--glass-solid);
  box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--line);transform:translateX(calc(var(--i,0) * 100%));transition:transform .45s var(--spring)}

/* ---------- Liquid glass ----------
   Translucent tint, blur and saturation, a light-catching top edge. In Chromium
   app.js also adds an SVG lens that bends what's behind the edges (Glass, on
   elements with data-refract). */
.glass{isolation:isolate;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow)}
.glass>*{position:relative;z-index:3}

/* ---------- Ambient light (the background behind everything) ---------- */
.ambient{position:fixed;inset:0;z-index:-1;background:var(--bg);overflow:hidden;pointer-events:none}

/* ---------- The mark: overlap's two loops (mark.js), in The Message's red ---------- */
.mark{display:block;color:var(--accent);overflow:visible}
/* Working: the loops draw themselves, then the overlap fills in, over and over (overlap's animated mark, quicker) */
.working .mark.ov .ov-l{stroke-dasharray:1 1;animation:ov-draw 2.8s cubic-bezier(.45,.05,.4,1) infinite}
.working .mark.ov .ov-1{animation-delay:.25s}
.working .mark.ov .ov-e{animation-delay:.4s}
.working .mark.ov .ov-f{animation:ov-tint 2.8s ease-in-out infinite}
@keyframes ov-draw{0%{stroke-dashoffset:1}45%,82%{stroke-dashoffset:0}100%{stroke-dashoffset:-1}}
@keyframes ov-tint{0%,30%{opacity:0}52%,82%{opacity:1}100%{opacity:0}}
@keyframes turn{to{transform:rotate(360deg)}}
/* Home and sign-in: the loops draw themselves once as the screen opens, then the overlap fills in (overlap's animated
   mark, played once; it plays again each time the screen is shown) */
.greet-mark .mark.ov .ov-l,.gate-mark .mark.ov .ov-l{stroke-dasharray:1 1;animation:ov-once 1.5s cubic-bezier(.45,.05,.4,1) .15s both}
.greet-mark .mark.ov .ov-1,.gate-mark .mark.ov .ov-1{animation-delay:.4s}
.greet-mark .mark.ov .ov-e,.gate-mark .mark.ov .ov-e{animation-delay:.6s}
.greet-mark .mark.ov .ov-f,.gate-mark .mark.ov .ov-f{animation:ov-fill .6s ease-out 1.5s both}
@keyframes ov-once{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes ov-fill{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.working .mark.ov *,.greet-mark .mark.ov *,.gate-mark .mark.ov *{animation:none}}
/* "by overlap": Geist Medium, lowercase, tracked in about 5% (overlap's wordmark) */
.by-ov{display:inline-flex;align-items:center;gap:6px;font:500 var(--t-small) var(--font);letter-spacing:.05em;text-transform:lowercase;color:var(--muted)}
.by-ov .mark{width:16px;height:16px;color:currentColor}
.gate-by{position:absolute;left:0;right:0;bottom:26px;display:flex;justify-content:center}
.set-foot{display:flex;align-items:center;justify-content:center;gap:8px;margin:36px 0 0;color:var(--faint);font-size:var(--t-small)}
.set-foot .by-ov{color:var(--muted)}
.brand-mark .mark{width:22px;height:22px}
.greet-mark .mark{width:34px;height:34px}
.gate-mark .mark{width:50px;height:50px}

/* ---------- Gate: who's using it ---------- */
.gate{position:fixed;inset:0;display:grid;place-items:center;padding:24px;overflow:auto;z-index:20}
.gate-card{width:min(480px,100%);text-align:center;animation:rise .8s var(--ease) both}
.gate-mark{display:flex;justify-content:center;margin-bottom:14px}
.gate-title{font:500 var(--t-display)/1.15 var(--serif);letter-spacing:-.025em;margin:0 0 8px}
.gate-sub{color:var(--muted);margin:0 0 24px;font-size:var(--t-ui)}
.people{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:12px}
.person{width:136px;border:0;border-radius:16px;padding:18px 10px 14px;display:flex;flex-direction:column;align-items:center;gap:9px;
  background:color-mix(in srgb,var(--glass-bg) 80%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);transition:transform .35s var(--spring),box-shadow .3s}
.person:hover{transform:translateY(-3px);box-shadow:inset 0 0 0 1px var(--line-2),0 16px 34px -14px rgba(0,0,0,.25)}
.person .avatar{width:46px;height:46px;flex-basis:46px;font-size:var(--t-heading)}
.person-name{font-weight:500;color:var(--ink)}
.pin-box{display:flex;flex-direction:column;align-items:center;gap:14px}
.pin-input{width:220px;text-align:center;font-size:22px;letter-spacing:.5em;padding:12px}
.card-form{text-align:left;border-radius:22px;padding:24px 24px 20px}
.err{color:var(--danger);font-size:var(--t-small);min-height:16px}

/* ---------- App shell and sidebar (flat, like Claude's) ---------- */
.app{display:flex;height:100dvh}
.side{position:relative;z-index:10;width:var(--side-w);flex:0 0 var(--side-w);display:flex;flex-direction:column;overflow:hidden;
  background:var(--side-bg);border-right:1px solid var(--line);transition:margin .4s var(--ease),transform .4s var(--ease)}
.app.folded .side{margin-left:calc(-1 * var(--side-w))}
.side-top{display:flex;align-items:center;justify-content:space-between;padding:12px 10px 6px 14px;min-height:56px}
.brand{display:flex;align-items:center;gap:9px;border:0;background:none;padding:4px 6px;border-radius:8px;white-space:nowrap;font:600 var(--t-heading)/1 var(--font);letter-spacing:-.035em;color:var(--ink)}
.nav{padding:6px 8px 4px;display:grid;gap:1px}
.nav-item{display:flex;align-items:center;gap:9px;height:31px;padding:0 10px 0 8px;border-radius:7px;border:0;background:none;
  color:var(--ink-2);font:var(--t-ui)/1 var(--font);white-space:nowrap;text-align:left;transition:background .15s}
@media (hover:hover){.nav-item:hover{background:var(--hover);color:var(--ink)}}
.nav-item.on{background:var(--press);color:var(--ink)}
.nav-item .ni{width:22px;height:22px;flex:0 0 22px;display:grid;place-items:center;border-radius:50%;color:var(--ink-2)}
.nav-item.primary .ni{background:var(--press);color:var(--ink);transition:background .2s,color .2s}
@media (hover:hover){.nav-item.primary:hover .ni{background:var(--accent);color:var(--accent-ink)}}
.badge{margin-left:auto;min-width:20px;height:18px;padding:0 6px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font:600 10.5px/18px var(--font);text-align:center}
/* Folding groups: a small heading with a chevron; the body slides shut (grid rows 1fr to 0fr) */
.side-scroll{flex:1;min-height:0;overflow-y:auto;padding-bottom:12px;scrollbar-width:thin;scrollbar-color:var(--thumb) transparent}
.sec{margin-top:8px}
.sec-h{display:flex;align-items:center;gap:6px;width:calc(100% - 16px);margin:0 8px;height:28px;padding:0 10px 0 8px;border:0;border-radius:8px;background:none;
  font:500 var(--t-small)/1 var(--font);color:var(--muted);text-align:left;transition:background .15s,color .15s}
@media (hover:hover){.sec-h:hover{background:var(--hover);color:var(--ink-2)}}
.sec-chev{display:grid;width:14px;transition:transform .25s var(--ease)}
.sec-chev svg{width:12px;height:12px}
.sec.shut .sec-chev{transform:rotate(-90deg)}
.sec-n{margin-left:auto;min-width:18px;height:16px;padding:0 5px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font:600 10px/16px var(--font);text-align:center;opacity:0;transition:opacity .2s}
.sec.shut .sec-n{opacity:1}
.sec-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s var(--ease),opacity .25s}
.sec.shut .sec-wrap{grid-template-rows:0fr;opacity:0;visibility:hidden}
.sec-body{min-height:0;overflow:hidden}
/* Folded, a group still shows the page you are on */
.app:not(.rail) .sec.shut:has(.nav-item.on) .sec-wrap{grid-template-rows:1fr;opacity:1;visibility:visible}
.app:not(.rail) .sec.shut .nav-item:not(.on){display:none}
.sec-body.nav{padding:2px 8px 0}
.chats{padding:0 8px}
.chat-when{padding:10px 10px 4px;font:var(--t-small)/1 var(--font);color:var(--muted);opacity:.8}
.chat-when:first-child{padding-top:4px}
.chat-more{border:0;background:none;padding:8px 10px;border-radius:8px;font:var(--t-small)/1 var(--font);color:var(--muted)}
@media (hover:hover){.chat-more:hover{color:var(--ink);background:var(--hover)}}
.chat-item{display:flex;align-items:center;gap:4px;height:29px;padding:0 4px 0 0;border-radius:7px;color:var(--ink-2);transition:background .15s}
@media (hover:hover){.chat-item:hover{background:var(--hover);color:var(--ink)}}
.chat-item.on{background:var(--press);color:var(--ink)}
.chat-item button.open{flex:1;min-width:0;height:100%;border:0;background:none;text-align:left;padding:0 0 0 10px;display:flex;align-items:center;gap:7px;font-size:var(--t-ui)}
.chat-item button.open>span:last-child{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-ic{display:grid;flex:0 0 auto;color:var(--muted)}
.chat-ic svg{width:13px;height:13px}
.chat-item .iconbtn{width:26px;height:26px;border-radius:7px;opacity:0}
.chat-item:hover .iconbtn,.chat-item .iconbtn:focus-visible{opacity:1}
.empty-chats{color:var(--muted);font-size:var(--t-small);padding:10px}
.side-foot{border-top:1px solid var(--line);display:flex;align-items:center;padding-right:8px}
.foot-set{width:34px;height:34px;flex:0 0 34px;padding:0;justify-content:center}
.who{display:flex;align-items:center;gap:10px;flex:1;min-width:0;border:0;background:none;text-align:left;padding:12px 12px 14px;color:inherit}
.who:hover{background:var(--hover)}
.who-text{flex:1;min-width:0;display:grid;gap:2px}
.who-text>span:first-child{font:500 var(--t-ui)/1.2 var(--font);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who-role{font:var(--t-small)/1.2 var(--font);color:var(--muted)}
.who .ni{color:var(--muted);display:grid}
.avatar{width:34px;height:34px;flex:0 0 34px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font:600 var(--t-ui)/1 var(--font)}

/* ---------- Rail: the sidebar folded to icons (Obolo's) ----------
   On a computer, folding (⌘\) leaves a column of 40px icons: open the sidebar at the top, New chat, Chats,
   the pages, and the person at the bottom. Badges become dots. With glass everywhere it floats as a rounded pane. */
.side{transition:width .4s var(--ease),flex-basis .4s var(--ease),margin .4s var(--ease),transform .4s var(--ease)}
.rail-only{display:none!important}
.person-title{margin-top:-5px;font-size:var(--t-small);color:var(--muted)}
@media (min-width:761px){
  .app.rail{--side-w:64px}
  .app.rail .side-top{justify-content:center;padding:12px 0 8px}
  .app.rail .brand{display:none}
  .app.rail #fold{width:40px;height:40px}
  .app.rail .nav{padding:4px 0;justify-items:center;gap:6px}
  .app.rail .nav-item{position:relative;width:40px;height:40px;padding:0;gap:0;justify-content:center;border-radius:10px}
  .app.rail .nav-item .lbl,.app.rail .nav-item kbd{display:none}
  .app.rail .nav-item.on,:root[data-glass="all"] .app.rail .nav-item.on{background:var(--press);color:var(--ink)}
  .app.rail .rail-only{display:flex!important}
  .app.rail .nav-item .ni svg{width:18px;height:18px}
  .app.rail .nav-item.primary{margin-bottom:6px}
  .app.rail .nav-item.primary .ni{width:34px;height:34px;flex-basis:34px}
  .app.rail .nav-item.primary:hover{background:none}
  .app.rail .badge{position:absolute;top:6px;right:6px;min-width:0;width:8px;height:8px;padding:0;font-size:0;box-shadow:0 0 0 2px var(--side-bg)}
  :root[data-glass="all"] .app.rail .badge{box-shadow:none}
  .app.rail .sec{margin:0}
  .app.rail .sec-h,.app.rail .sec-chats{display:none}
  .app.rail .sec-wrap,.app.rail .sec.shut .sec-wrap{grid-template-rows:1fr;opacity:1;visibility:visible}
  .app.rail .sec-body{overflow:visible}
  .app.rail .sec+.sec{margin-top:6px}
  .app.rail .side-scroll{padding-bottom:0}
  .app.rail .badge{background:var(--accent)}
  .app.rail .side-foot{margin-top:auto;flex-direction:column-reverse;padding:8px 0 0}
  .app.rail .foot-set{width:40px;height:40px;flex-basis:40px}
  .app.rail .who{justify-content:center;padding:14px 0 16px}
  .app.rail .who-text,.app.rail .who>.ni{display:none}
  .app.rail .who:hover{background:none}
  .app.rail .who .avatar{width:40px;height:40px;flex-basis:40px;transition:box-shadow .15s}
  .app.rail .who:hover .avatar{box-shadow:0 0 0 3px var(--press)}
  :root[data-glass="all"] .app.rail .side{border-radius:19px}
}

/* ---------- Main and the floating header ---------- */
.main{flex:1;min-width:0;position:relative;overflow:hidden}
.top{position:absolute;top:0;left:0;right:0;z-index:6;display:flex;align-items:center;gap:8px;padding:12px 16px;min-height:60px;pointer-events:none;transition:background .25s,box-shadow .25s}
.top>*{pointer-events:auto}
.top-title{height:34px;max-width:min(520px,56%);padding:0 10px;border-radius:8px;font:500 var(--t-ui)/34px var(--font);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-title:empty{display:none}
.glass-btn{position:relative;width:40px;height:40px;border-radius:50%;border:0;display:grid;place-items:center;color:var(--ink-2);transition:transform .25s var(--spring)}
.glass-btn:active{transform:scale(.92)}
/* Transparent at the top, frosted with a hairline once content scrolls under it (like macOS) */
.main.scrolled .top{background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(20px) saturate(150%);backdrop-filter:blur(20px) saturate(150%);box-shadow:0 1px 0 var(--line)}
.view{position:absolute;inset:0}

/* ---------- Home ---------- */
.scroll{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
.home{display:none}
body.is-home #chatView{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px 10vh;overflow-y:auto}
body.is-home .scroll{position:static;overflow:visible;flex:0 0 auto}
body.is-home .home{display:flex;justify-content:center}
.greet{display:flex;align-items:center;gap:12px;margin:0 0 22px;font:500 var(--t-display)/1.1 var(--serif);letter-spacing:-.025em;color:var(--ink);animation:rise .9s var(--ease) both}
.chips{display:none;flex-wrap:wrap;justify-content:center;gap:8px;margin:16px auto 0;max-width:768px}
body.is-home .chips{display:flex}
.chip{display:flex;align-items:center;gap:7px;height:32px;padding:0 13px 0 11px;border-radius:8px;border:0;font:var(--t-ui) var(--font);color:var(--ink-2);
  background:color-mix(in srgb,var(--bg) 70%,transparent);box-shadow:inset 0 0 0 1px var(--line-2);animation:rise .8s var(--ease) both;animation-delay:calc(.16s + var(--i,0) * .05s);
  transition:background .15s,color .15s,box-shadow .15s}
.chip:hover{background:var(--input-bg);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2),var(--shadow-sm)}
.chip .ni{display:grid;color:var(--muted)}
.chip:hover .ni{color:var(--accent)}
.foot-note{display:none;text-align:center;color:var(--faint);font-size:var(--t-caption);margin-top:8px;position:relative}
body.is-chat .foot-note{display:block}

/* ---------- Thread ---------- */
.thread{max-width:720px;margin:0 auto;padding:72px 28px calc(var(--dock-h,120px) + 48px)}
body.is-home .thread{display:none}
.turn{padding:4px 0 22px;position:relative;animation:rise .5s var(--ease) both}
.q{display:flex;justify-content:flex-end}
.q-b{background:var(--q-bg);color:var(--ink);padding:8px 14px;border-radius:13px;max-width:80%;white-space:pre-wrap;word-wrap:break-word;
  font:var(--t-body)/1.45 var(--font);box-shadow:inset 0 0 0 1px var(--line)}
.q-files{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-bottom:6px}
.a{margin-top:14px}
.a-head{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:var(--t-small);margin:2px 0 8px}
.a-head .mark{width:22px;height:22px}
.steps{margin:0 0 10px;font:var(--t-small)/1.5 var(--font);color:var(--muted)}
.steps summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:5px;padding:3px 8px 3px 4px;border-radius:8px;margin-left:-4px}
.steps summary:hover{background:var(--hover);color:var(--ink-2)}
.steps summary::-webkit-details-marker{display:none}
.steps summary svg{transform:rotate(-90deg);transition:transform .25s var(--ease)}
.steps[open] summary svg{transform:none}
.steps ul{margin:4px 0 0 7px;padding:2px 0 2px 14px;list-style:none;border-left:1.5px solid var(--line-2)}
.steps li{padding:1px 0}
.steps li::before{content:"✓ ";color:var(--ok)}
.steps .live{animation:breathe 1.6s ease-in-out infinite}
.steps .live::before{content:"· ";color:var(--muted)}
@keyframes breathe{50%{opacity:.45}}
.content{font:400 var(--t-body)/1.5 var(--chat-font);letter-spacing:-.012em;color:var(--ink);word-wrap:break-word;padding-right:8px}
.content>*{margin:0}
.content>*+*{margin-top:9px}
.content h1,.content h2,.content h3{font-weight:600;line-height:1.35;letter-spacing:-.015em}
.content>*+h1,.content>*+h2,.content>*+h3{margin-top:18px}
.content>h1+*,.content>h2+*,.content>h3+*{margin-top:5px}
.content h1,.content h2{font-size:var(--t-heading)}.content h3{font-size:var(--t-body)}
.content ul,.content ol{padding-left:22px}
.content li+li{margin-top:3px}
.content li>ul,.content li>ol{margin-top:3px}
.content strong{font-weight:600}
.content code{font:.86em var(--mono);color:var(--code-ink);background:var(--code-bg);padding:1.5px 5px;border-radius:5px;box-shadow:inset 0 0 0 1px var(--line)}
.content pre{background:var(--code-bg);border-radius:10px;padding:12px 14px;overflow:auto;font:12.5px/1.55 var(--mono);box-shadow:inset 0 0 0 1px var(--line)}
.content pre code{background:none;box-shadow:none;padding:0;color:var(--ink)}
.content blockquote{padding:0 0 0 14px;border-left:3px solid var(--line-2);color:var(--ink-2)}
.content hr{border:0;border-top:1px solid var(--line);margin:16px 0}
.tbl{overflow-x:auto;border-radius:10px;box-shadow:inset 0 0 0 1px var(--line)}
.tbl table{border-collapse:collapse;width:100%;font:var(--t-ui)/1.45 var(--font)}
.tbl th,.tbl td{padding:8px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.tbl th{font-weight:600;background:var(--code-bg)}
.tbl tr:last-child td{border-bottom:0}
.cite{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:6px;border:0;background:var(--accent-soft);color:var(--accent);font:600 10.5px/1 var(--font);vertical-align:2px;margin:0 1px;transition:background .15s,color .15s}
.cite:hover{background:var(--accent);color:var(--accent-ink)}
.sources{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.src{display:inline-flex;align-items:center;gap:7px;border:0;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);border-radius:10px;padding:6px 11px;font-size:var(--t-small);color:var(--ink-2);max-width:280px}
.src b{color:var(--accent)}
.src span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.src:hover{box-shadow:inset 0 0 0 1px var(--line-2),var(--shadow-sm)}
.file{display:inline-flex;align-items:center;gap:8px;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);border-radius:10px;padding:7px 8px 7px 11px;font-size:var(--t-small);max-width:260px;color:var(--ink-2)}
.file span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file svg{color:var(--accent)}
.file .iconbtn{width:22px;height:22px;border-radius:6px}
.a-acts{display:flex;gap:2px;margin-top:8px;opacity:0;transition:opacity .2s}
.turn:hover .a-acts,.a-acts:focus-within{opacity:1}
.a-acts .iconbtn{width:30px;height:30px;border-radius:7px}
.error-line{color:var(--danger);background:var(--danger-soft);border-radius:10px;padding:9px 13px;margin-top:10px}
.cursor>:last-child::after,.cursor:empty::after{content:"";display:inline-block;width:.55em;height:.55em;margin-left:4px;border-radius:50%;background:var(--accent);vertical-align:.05em;animation:breathe 1s ease-in-out infinite}

/* ---------- Drafts: an email in three versions (Obolo's tabs) ---------- */
.drafts{border-radius:14px;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);overflow:hidden}
.d-tabs{display:flex;gap:4px;padding:8px 8px 0}
.d-tab{border:0;background:none;height:32px;padding:0 13px;border-radius:8px;color:var(--muted);font:500 var(--t-small) var(--font);transition:background .15s,color .15s}
.d-tab:hover{background:var(--hover);color:var(--ink)}
.d-tab.on{background:var(--accent-soft);color:var(--accent)}
.d-meta{display:grid;grid-template-columns:60px 1fr;align-items:center;gap:4px 10px;padding:10px 16px 2px;font-size:var(--t-ui)}
.d-meta label{color:var(--muted);font-size:var(--t-small)}
.d-meta input{border:0;border-bottom:1px solid var(--line);background:none;padding:5px 0;outline:0;color:var(--ink)}
.d-meta input:focus{border-color:var(--accent)}
.d-body{display:block;width:100%;border:0;background:none;padding:12px 16px 14px;font:var(--t-body)/1.6 var(--font);color:var(--ink);resize:none;outline:0;min-height:160px;field-sizing:content}
.d-acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:10px 12px;border-top:1px solid var(--line)}
.d-note{font-size:var(--t-small);color:var(--muted);margin-left:auto}

/* ---------- Approval cards (Allow / Deny) ---------- */
.approve{border-radius:14px;margin-top:12px;overflow:hidden;background:var(--input-bg);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent),var(--shadow-sm);animation:pop .4s var(--spring) both}
.ap-h{display:flex;align-items:center;gap:8px;padding:11px 16px;background:var(--accent-soft);font:600 var(--t-ui) var(--font);color:var(--accent)}
.ap-f{display:grid;grid-template-columns:70px 1fr;gap:4px 10px;padding:12px 16px 0;margin:0;font-size:var(--t-ui)}
.ap-f dt{color:var(--muted)}
.ap-f dd{margin:0;word-break:break-word}
.ap-body{margin:10px 16px 0;padding:11px 13px;background:var(--code-bg);border-radius:10px;white-space:pre-wrap;font-size:var(--t-ui);max-height:240px;overflow:auto;box-shadow:inset 0 0 0 1px var(--line)}
.ap-acts{display:flex;gap:8px;padding:12px 16px 14px;align-items:center;flex-wrap:wrap}
/* Obolo's questions (```ask) and emailed change requests in a chat */
.ask{border-radius:14px;margin:4px 0;background:var(--input-bg);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent),var(--shadow-sm);overflow:hidden;animation:pop .4s var(--spring) both}
.ask-h{display:flex;align-items:center;gap:8px;padding:11px 16px;background:var(--accent-soft);font:600 var(--t-ui) var(--font);color:var(--accent)}
.ask-h .mark{width:18px;height:18px}
.ask-n{margin-left:auto;font:500 var(--t-small) var(--font);color:var(--ink-2)}
.ask-n b{font-weight:600;color:var(--accent)}
.ask-q{padding:12px 16px 4px}
.ask-t{display:flex;gap:9px;font-weight:500;color:var(--ink);margin-bottom:8px}
.ask-t>span{flex:0 0 20px;height:20px;border-radius:50%;background:var(--press);display:grid;place-items:center;font:600 11px var(--font);color:var(--ink-2)}
.ask-hint{display:block;font:400 var(--t-small) var(--font);font-style:normal;color:var(--ink-2);margin-top:2px}
.ask-opts{display:flex;flex-wrap:wrap;gap:6px;padding-left:29px}
.ask-o{display:inline-flex;align-items:center;gap:8px;border:0;min-height:32px;padding:0 13px;border-radius:8px;background:none;box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink-2);font:var(--t-ui) var(--font);text-align:left;transition:background .15s,box-shadow .15s,color .15s,transform .2s var(--spring)}
.ask-o:hover:not(:disabled){background:var(--hover);color:var(--ink)}
.ask-o:active:not(:disabled){transform:scale(.97)}
.ask-o:focus-visible{outline:0;box-shadow:inset 0 0 0 1px var(--accent),0 0 0 3px var(--accent-ring)}
.ask-l b{font-weight:500}
.ask-l small{display:block;font-size:var(--t-small);color:var(--ink-2);margin-top:1px}
.ask-rec{margin-left:7px;padding:1px 6px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font:600 10.5px/16px var(--font);font-style:normal;vertical-align:1px}
.ask-q:not(.multi) .ask-o.on{background:var(--accent);color:var(--accent-ink);box-shadow:none}
.ask-q:not(.multi) .ask-o.on .ask-l small{color:inherit;opacity:.85}
.ask-q:not(.multi) .ask-o.on .ask-rec{background:rgba(255,255,255,.2);color:inherit}
.ask-box{flex:0 0 16px;width:16px;height:16px;border-radius:5px;box-shadow:inset 0 0 0 1.5px var(--line-2);display:grid;place-items:center;color:var(--accent-ink);transition:background .15s,box-shadow .15s}
.ask-box svg{width:12px;height:12px;opacity:0;transform:scale(.6);transition:opacity .15s,transform .2s var(--spring)}
.ask-q.multi .ask-o.on{background:var(--accent-soft);color:var(--ink);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)}
.ask-q.multi .ask-o.on .ask-box{background:var(--accent);box-shadow:none}
.ask-q.multi .ask-o.on .ask-box svg{opacity:1;transform:none}
.ask-opts.rows{flex-direction:column;align-items:stretch}
.ask-opts.rows .ask-o{padding:8px 13px}
.ask-opts.rows .ask-other{flex:0 0 auto}
.ask-other{flex:1 1 180px;min-width:160px;height:32px;border:0;border-radius:8px;padding:0 11px;background:var(--code-bg);box-shadow:inset 0 0 0 1px var(--line);outline:0;font:var(--t-ui) var(--font)}
.ask-other:focus{box-shadow:inset 0 0 0 1px var(--accent),0 0 0 3px var(--accent-ring)}
.ask-acts{display:flex;align-items:center;gap:10px;padding:12px 16px 14px}
.ask.one .ask-q{padding-bottom:0}
.ask.done{opacity:.72}
.ask.done .ask-o.on{opacity:1}
.ask.done .ask-q:last-of-type{padding-bottom:14px}
.mail-card{border-radius:14px;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);overflow:hidden;margin-left:auto;max-width:92%}
.mail-h{display:flex;align-items:center;gap:8px;padding:9px 16px;background:var(--code-bg);font:500 var(--t-small) var(--font);color:var(--muted)}
.mail-h svg{color:var(--accent)}
.mail-meta{padding:10px 16px 0;display:grid;gap:2px}
.mail-meta span{color:var(--muted);font-size:var(--t-small)}
.mail-body{padding:8px 16px 14px;white-space:pre-wrap;font:var(--t-ui)/1.55 var(--font);color:var(--ink-2);max-height:260px;overflow:auto}
.pill.working .mark{width:14px;height:14px}
.ap-next{margin:10px 16px 0;padding:10px 12px;border-radius:10px;background:var(--code-bg);font-size:var(--t-small);color:var(--ink-2)}
.ap-next b{display:block;margin-bottom:3px;color:var(--muted);font-weight:500}
.ap-next li{margin:2px 0}
.ap-next ul{margin:0;padding-left:18px}
.ap-warn{display:flex;flex-wrap:wrap;gap:5px;padding:10px 16px 0}
.ap-amend{margin:10px 16px 0;padding:10px 12px 12px;border-radius:10px;background:var(--code-bg);box-shadow:inset 0 0 0 1px var(--line);font-size:var(--t-small);color:var(--ink-2)}
.am-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.am-h b{font-weight:600;color:var(--ink)}
summary.am-h{cursor:pointer;list-style:none;align-items:center}
summary.am-h::-webkit-details-marker{display:none}
summary.am-h b::before{content:'›';display:inline-block;margin-right:6px;color:var(--muted);transition:transform .15s}
details[open].ap-amend summary.am-h b::before{transform:rotate(90deg)}
details.ap-amend .am-notes{margin-top:8px}
.am-ev{margin-top:8px;color:var(--muted)}
.am-h a{color:var(--accent);text-decoration:none}
.am-h a:hover{text-decoration:underline}
.am-f{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:8px 0 0}
.am-f dt{color:var(--muted)}
.am-f dd{margin:0;word-break:break-word}
.am-nh{display:flex;align-items:center;justify-content:space-between;margin-top:8px;color:var(--muted)}
.am-nh .btn svg{width:14px;height:14px}
.am-notes{margin:4px 0 0;padding:8px 10px;border-radius:7px;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line);white-space:pre-wrap;word-break:break-word;font:var(--t-small)/1.5 var(--mono);color:var(--ink);max-height:220px;overflow:auto}
.am-gap{display:flex;gap:6px;align-items:center;margin-top:8px;color:var(--warn)}
.am-gap svg{width:14px;height:14px;flex:none}
.am-steps{margin:8px 0 0;padding-left:18px}
.am-steps li{margin:2px 0}
.am-submit{margin-top:8px}
.am-done{display:flex;gap:6px;align-items:center;margin-top:8px;color:var(--ok)}
.am-done svg{width:14px;height:14px;flex:none}
.ap-src{padding:10px 16px 0;font-size:var(--t-small);color:var(--muted)}
#changesView .approve{margin:0 0 12px}
.panel-h h2 svg{vertical-align:-3px;margin-right:4px;color:var(--accent)}
.ap-status{font-weight:500}
.ap-status.done{color:var(--ok)}
.ap-status.denied{color:var(--muted)}
.ap-status.failed{color:var(--danger)}

/* ---------- Composer (glass, with the lens in Chromium) ---------- */
.dock{position:absolute;left:0;right:0;bottom:0;z-index:6;padding:0 24px 12px}
/* The strip under the composer is solid, so text only shows through the glass itself */
.dock::before{content:"";position:absolute;left:0;right:0;top:34px;bottom:0;background:var(--bg);z-index:-1}
body.is-home .dock{position:relative;width:100%;max-width:720px;padding:0;animation:rise .9s .08s var(--ease) both}
body.is-home .dock::before{display:none}
.composer{position:relative;max-width:720px;margin:0 auto;border-radius:14px;padding:10px 8px 8px 12px;transition:box-shadow .3s,transform .3s var(--ease)}
.composer:focus-within{box-shadow:var(--glass-shadow),0 0 0 4px var(--accent-ring)}
body.is-home .composer{padding:12px 8px 8px 14px}
.composer.drag{outline:1.5px dashed color-mix(in srgb,var(--accent) 60%,transparent);outline-offset:-6px}
textarea#input{display:block;width:100%;border:0;outline:0;resize:none;background:none;color:var(--ink);font:var(--t-body)/1.45 var(--font);max-height:240px;padding:4px 6px 2px;min-height:24px}
body.is-home textarea#input{min-height:40px}
textarea#input::placeholder{color:var(--muted)}
.comp-row{display:flex;align-items:center;gap:4px;margin-top:4px}
.comp-row .iconbtn{width:32px;height:32px;border-radius:7px;color:var(--ink-2)}
.model-tag{font:500 var(--t-small) var(--font);color:var(--muted);padding:0 4px}
.mode-badge{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:transparent;color:var(--ink-2);font:500 var(--t-small) var(--font);padding:4px 9px 4px 8px;border-radius:999px;white-space:nowrap;cursor:pointer;transition:background .15s,border-color .15s}
.mode-badge b{font-weight:500;color:var(--ink)}
.mode-badge .mb-more{color:var(--muted)}
.mode-badge svg{flex:0 0 auto;opacity:.8}
.mode-badge:disabled{cursor:default}
.mode-badge:not(:disabled):hover{background:var(--hover);border-color:var(--line-2,var(--line))}
.mode-badge.enhanced{border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}
@media (max-width:640px){.mode-badge .mb-more{display:none}}
/* Dictation: the box becomes a recording (sound wave, the words faintly as they come, timer, ✕ and ✓) */
.dict-time,.dict-btn{display:none}
.composer.dictating textarea#input,.composer.dictating .comp-row>:not(.spacer):not(.dict-time):not(.dict-btn){display:none}
.composer.dictating .dict-btn{display:grid}
.composer.dictating .dict-time{display:inline-flex;align-items:center;gap:7px;order:-1;padding:0 6px;font:500 var(--t-small) var(--font);color:var(--muted);font-variant-numeric:tabular-nums}
.dict-time::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);animation:dict-blink 1.6s ease-in-out infinite}
.dict-starting .dict-time::before{animation:none;opacity:.35}
@keyframes dict-blink{0%,100%{opacity:1}50%{opacity:.3}}
.dict{padding:4px 6px 2px}
.dict-wave{display:flex;align-items:center;justify-content:space-between;height:36px;overflow:hidden}
.dict-wave i{flex:0 0 2.5px;height:100%;border-radius:2px;background:var(--ink);transform:scaleY(.1);transition:transform .08s linear}
.dict-wave i.q{background:var(--muted);opacity:.45}
.dict-starting .dict-wave i{background:var(--muted);opacity:.45}
.dict-text{display:flex;flex-direction:column;justify-content:flex-end;max-height:4.35em;overflow:hidden;margin-top:6px;color:var(--muted);font:var(--t-ui)/1.45 var(--font)}
body.is-home .dict-text{min-height:1.45em}
@media (prefers-reduced-motion:reduce){.dict-wave i{transition:none}.dict-time::before{animation:none}}
.send{width:34px;height:34px;border-radius:8px;border:0;display:grid;place-items:center;flex:0 0 34px;background:var(--accent);color:var(--accent-ink);transition:background .2s,transform .3s var(--spring),opacity .2s}
.send:not(:disabled):hover{transform:scale(1.07)}
.send:not(:disabled):active{transform:scale(.92)}
.send:disabled{opacity:.38;cursor:default}
.send.stop{background:var(--ink);color:var(--bg)}
.files{display:flex;flex-wrap:wrap;gap:8px;padding:2px 4px}
.files:not(:empty){padding-bottom:10px}

/* ---------- Pages (Payroll, Library, Settings) ---------- */
.page{overflow-y:auto;overflow-x:hidden}
.page-in{max-width:880px;margin:0 auto;padding:88px 28px 80px;animation:rise .6s var(--ease) both}   /* one reading column for every work page */
.page-h{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.page-h h1{margin:0;font:500 var(--t-display)/1.15 var(--serif);letter-spacing:-.025em}
.page-h .sub{margin:6px 0 0;color:var(--muted);font-size:var(--t-ui)}
.panel{border-radius:16px;margin-bottom:16px;background:color-mix(in srgb,var(--glass-bg) 80%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm)}
.panel-h{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.panel-h h2{font:600 var(--t-ui) var(--font);margin:0;letter-spacing:-.01em}
.panel-b{padding:16px 18px}
.banner{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:11px;background:var(--accent-soft);color:var(--ink-2);font-size:var(--t-small);line-height:1.5;margin-bottom:16px}
.banner.warn{background:var(--warn-soft)}
.banner.bad{background:var(--danger-soft)}
.banner>svg{margin-top:1px;color:var(--accent)}
.banner.warn>svg{color:var(--warn)}
.banner.bad>svg{color:var(--danger)}
.banner.lt-tidy{background:var(--hover)}
.banner.lt-tidy>svg{color:var(--muted)}
.banner .row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.empty{padding:40px 20px;text-align:center;color:var(--muted);font-size:var(--t-ui)}
.empty p{margin:8px 0}
.empty>svg{color:var(--accent)}

/* ---------- Payroll ---------- */
.pay-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.pay-bar select.input{width:auto;height:40px;padding-top:0;padding-bottom:0}
.pay-meta{display:flex;gap:6px 18px;flex-wrap:wrap;color:var(--muted);font-size:var(--t-small);margin-bottom:14px}
.pay-meta b{color:var(--ink);font-weight:500}
.progress{height:4px;border-radius:7px;background:var(--line);overflow:hidden;margin-top:8px}
.progress i{display:block;height:100%;background:var(--ok);border-radius:7px;transition:width .4s var(--ease)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.stat{border-radius:14px;padding:13px 16px;background:color-mix(in srgb,var(--glass-bg) 80%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm)}
.stat .v{font:500 24px/1.15 var(--font);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.stat .l{color:var(--muted);font-size:var(--t-small)}
.stat.bad .v{color:var(--danger)}
.stat.warn .v{color:var(--warn)}
.sec-count{color:var(--muted);font-weight:400;margin-left:4px}
.items{list-style:none;margin:0;padding:0}
.it{border-radius:11px}
.it-row{display:grid;grid-template-columns:28px 1fr auto;gap:12px;align-items:start;padding:10px 18px;cursor:pointer;transition:background .15s;outline:0}
.it-row:focus-visible{background:var(--hover);box-shadow:inset 3px 0 0 var(--accent)}
.it-row:hover{background:var(--hover)}
.it.checked:not(.open) .it-row{opacity:.6}
.tick{width:22px;height:22px;border-radius:7px;border:0;box-shadow:inset 0 0 0 1.5px var(--line-2);background:var(--input-bg);display:grid;place-items:center;color:transparent;transition:background .2s,box-shadow .2s,transform .25s var(--spring)}
.tick:not(:disabled):active{transform:scale(.88)}
.tick.on{background:var(--ok);box-shadow:none;color:#fff}
.tick:disabled{cursor:default}
.it-who b{display:block;font-weight:500}
.it-who .it-sum{display:block;color:var(--muted);font-size:var(--t-small);margin-top:1px}
.it-flags{display:grid;gap:2px;margin-top:5px}
/* Payroll warnings: plain coloured lines, red must be fixed, amber worth a look */
.pflag{display:flex;align-items:flex-start;gap:6px;font-size:var(--t-small);line-height:1.45;color:var(--warn)}
.pflag svg{margin-top:2px;width:13px;height:13px}
.pflag.block{color:var(--danger);font-weight:500}
.pflag-more{font-size:var(--t-small);color:var(--muted);padding-left:19px}
.it-note-line{font-size:var(--t-small);color:var(--muted);margin-top:4px}
.pay-page{max-width:880px}
.pay-h{align-items:center;margin-bottom:14px}
.pay-h select.input{width:auto;height:38px;padding-top:0;padding-bottom:0}
.pay-top{margin-bottom:16px}
.pay-top .progress{height:3px;margin-top:12px}
.pay-top .info-btn{margin-left:6px}
.pay-tools{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.pay-seg{width:230px}
.pay-seg button:disabled{opacity:.45;cursor:default}
.pay-general .panel-b{display:grid;gap:4px}
.pay-sec .panel-h{padding:12px 18px}
.flag{display:inline-flex;align-items:center;gap:5px;font-size:var(--t-small);padding:3px 9px;border-radius:8px;background:var(--warn-soft);color:var(--warn)}
.flag.block{background:var(--danger-soft);color:var(--danger)}
.it-figs{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.it-figs div{line-height:1.55}
.it-figs small{color:var(--muted);margin-right:6px}
.neg{color:var(--danger)}
.it-more{padding:2px 18px 16px 58px;animation:rise .35s var(--ease) both}
.it-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.it-allflags{display:grid;gap:4px;margin:0 0 14px}
.kv{display:grid;grid-template-columns:120px 1fr;gap:4px 10px;font-size:var(--t-ui);margin:0}
.kv dt{color:var(--muted)}
.kv dd{margin:0}
.workings{font-size:var(--t-small);color:var(--muted);margin-top:10px}
.workings div{margin:3px 0}
.workings code{font:11.5px var(--mono);background:var(--code-bg);padding:1.5px 6px;border-radius:6px;color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line)}
.by{font-size:var(--t-small);color:var(--muted);margin-top:6px}
.it-note{min-height:64px}

/* ---------- Insights (insights.js) ----------
   Chart colours are their own tokens, checked for colour-blind separation in both modes:
   --v1 The Message's red (a step deeper in dark mode), then blue, amber, green and violet.
   Status colours (--ok, --warn, --danger) only ever mean good, due soon and overdue. */
:root{--v1:#9c1d36;--v2:#2a78d6;--v3:#eda100;--v4:#1baf7a;--v5:#4a3aa7;--v2-soft:color-mix(in srgb,var(--v2) 24%,transparent);
  --v-grid:rgba(31,30,29,.075);--v-axis:rgba(31,30,29,.24);--hm-0:var(--input-bg);--hm-dark-ink:#ffffff;--viz-surface:var(--input-bg);
  --st-good:#0ca30c;--st-warn:#fab219;--st-bad:#d03b3b}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--v1:#dc5a74;--v2:#3987e5;--v3:#c98500;--v4:#199e70;--v5:#9085e9;
  --v-grid:rgba(250,249,245,.07);--v-axis:rgba(250,249,245,.2);--hm-dark-ink:#141413}}
:root[data-theme="dark"]{--v1:#dc5a74;--v2:#3987e5;--v3:#c98500;--v4:#199e70;--v5:#9085e9;--v-grid:rgba(250,249,245,.07);--v-axis:rgba(250,249,245,.2);--hm-dark-ink:#141413}
.page-in.ins{max-width:1180px}
.page-in.still{animation:none}
.ins-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:90px 0;color:var(--muted)}
.ins-loading .mark{width:26px;height:26px}
.ins-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.ins-bar select.input{width:auto;max-width:260px;height:40px;padding-top:0;padding-bottom:0}
.ins-nav{position:sticky;top:64px;z-index:4;display:flex;gap:2px;overflow-x:auto;padding:4px;margin:0 0 24px;border-radius:11px;scrollbar-width:none;
  background:color-mix(in srgb,var(--bg) 84%,transparent);-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm)}
.ins-nav::-webkit-scrollbar{display:none}
.ins-nav button{flex:0 0 auto;border:0;background:none;height:30px;padding:0 12px;border-radius:8px;color:var(--muted);font:500 var(--t-small) var(--font);white-space:nowrap;transition:background .15s,color .15s}
.ins-nav button:hover{background:var(--hover);color:var(--ink)}

/* The story */
.ins-story{scroll-margin-top:124px;margin-bottom:24px}
.story-lead{max-width:900px;margin:2px 0 18px;font:400 21px/1.5 var(--serif);letter-spacing:-.014em;color:var(--ink);text-wrap:pretty}
.story-lead b{font-weight:600}
.story-lead em{font-style:italic;color:var(--accent)}
.story-h{margin:0 0 12px;font:600 var(--t-ui) var(--font);color:var(--muted)}
.story.hid{display:none}
.story-more{margin-top:10px}
.story-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.story{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:6px;border:0;text-align:left;padding:14px 16px 12px 18px;border-radius:14px;color:var(--ink);
  background:color-mix(in srgb,var(--glass-bg) 80%,transparent);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);
  transition:transform .35s var(--spring),box-shadow .3s;animation:rise .6s var(--ease) both;animation-delay:calc(var(--i,0) * .03s)}
.story::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--tone)}
.story.concern{--tone:var(--danger)}.story.watch{--tone:var(--warn)}.story.good{--tone:var(--ok)}.story.info{--tone:var(--line-2)}
@media (hover:hover){.story:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px var(--line-2),0 14px 30px -14px rgba(0,0,0,.25)}}
.story-tag{display:inline-flex;align-items:center;gap:5px;font:600 var(--t-caption)/1 var(--font);letter-spacing:.04em;text-transform:uppercase;color:var(--tone)}
.story.info .story-tag{color:var(--muted)}
.story b{font:600 var(--t-body)/1.3 var(--font);letter-spacing:-.015em}
.story-t{color:var(--ink-2);font-size:var(--t-ui);line-height:1.45}
.story-go{margin-top:auto;padding-top:4px;display:inline-flex;align-items:center;gap:2px;color:var(--muted);font-size:var(--t-small)}
.story:hover .story-go{color:var(--accent)}
/* Headline figures */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px;margin:0 0 28px}
.kpi{display:flex;flex-direction:column;gap:3px;border:0;text-align:left;padding:14px 16px 12px;border-radius:14px;color:var(--ink);min-height:150px;
  background:color-mix(in srgb,var(--glass-bg) 80%,transparent);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);transition:transform .35s var(--spring),box-shadow .3s}
@media (hover:hover){.kpi:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px var(--line-2),0 14px 30px -14px rgba(0,0,0,.25)}}
.kpi-l{font:500 var(--t-small)/1.3 var(--font);color:var(--muted)}
.kpi-v{font:500 30px/1.1 var(--font);letter-spacing:-.035em}
.kpi-n{font-size:var(--t-small);line-height:1.35;color:var(--muted)}
.delta{font:600 var(--t-small)/1.3 var(--font)}
.delta span{font-weight:400;color:var(--muted)}
.delta.better{color:var(--ok)}.delta.worse{color:var(--danger)}.delta.flat{color:var(--muted)}
.kpi .spark{margin-top:auto;padding-top:6px}
.spark path{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.spark circle{stroke:var(--viz-surface);stroke-width:1.5}
.kpi.mini{min-height:0;gap:4px}
.kpi.mini .kpi-v{font-size:26px}
.ahead-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
/* Chapters and figures */
.chap{scroll-margin-top:120px;margin:0 0 42px}
.chap-h{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px;padding-top:20px;border-top:1px solid var(--line)}
.chap-n{padding-top:9px;font:500 var(--t-small)/1 var(--mono);color:var(--accent)}
.chap-h h2{margin:0;font:500 26px/1.2 var(--serif);letter-spacing:-.022em}
.chap-lede{max-width:800px;margin:6px 0 0;font-size:var(--t-body);line-height:1.5;color:var(--ink-2);text-wrap:pretty}
.viz-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.viz-grid>.wide{grid-column:1/-1}
.viz{min-width:0;margin:0;display:flex;flex-direction:column;padding:16px 18px 14px;border-radius:16px;
  background:color-mix(in srgb,var(--glass-bg) 80%,transparent);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm)}
.viz figcaption{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}
.viz figcaption>div:first-child{flex:1;min-width:0}
.viz h3{margin:0;font:600 var(--t-ui)/1.3 var(--font);letter-spacing:-.01em}
.viz figcaption p{margin:3px 0 0;font-size:var(--t-small);line-height:1.45;color:var(--muted)}
.viz-acts{display:flex;gap:2px;flex:0 0 auto}
.viz-btn{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 9px;border:0;border-radius:7px;background:none;color:var(--muted);font:500 var(--t-small) var(--font);transition:background .15s,color .15s}
.viz-btn:hover{background:var(--hover);color:var(--ink)}
.viz-btn.on{background:var(--accent-soft);color:var(--accent)}
.viz-btn .mark{width:14px;height:14px}
.viz-body{flex:1;min-width:0}
.viz-note{margin:10px 0 0;font-size:var(--t-small);line-height:1.45;color:var(--muted)}
.viz-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:var(--t-small);color:var(--ink-2)}
.viz-legend span{display:inline-flex;align-items:center;gap:6px}
.viz-legend i{width:10px;height:10px;border-radius:3px}
.viz-empty{padding:26px 8px;text-align:center;font-size:var(--t-ui);color:var(--muted)}
/* SVG charts: hairline grid, 2px lines, 4px rounded bar ends */
.chart{display:block;overflow:visible;font-family:var(--font)}
.chart .grid{stroke:var(--v-grid);stroke-width:1}
.chart .base{stroke:var(--v-axis);stroke-width:1}
.chart .tick{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:0}
.chart .ln{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.chart .area{opacity:.1}
.chart .dot{stroke:var(--viz-surface);stroke-width:2}
.chart .end{fill:var(--ink-2);font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums}
.chart .cap{fill:var(--ink-2);font-size:11px;font-weight:500;font-variant-numeric:tabular-nums}
.chart .ref{stroke:var(--muted);stroke-width:1}
.chart .ref-t{fill:var(--muted);font-size:11px}
.chart .cross{stroke:var(--v-axis);stroke-width:1}
.chart .hit{fill:transparent}
.chart .hit[data-i]:hover{fill:var(--hover)}
/* Horizontal bars */
.hb{display:grid;gap:5px}
.hb-r{display:grid;grid-template-columns:minmax(90px,38%) 1fr auto;align-items:center;gap:10px;padding:3px 6px;margin:0 -6px;border-radius:8px}
.hb-r:hover{background:var(--hover)}
.hb-l{font-size:var(--t-small);line-height:1.25;color:var(--ink-2);overflow-wrap:anywhere}
.hb-l small{display:block;font-size:var(--t-caption);color:var(--muted)}
.hb-t{height:12px}
.hb-t i{display:block;height:100%;border-radius:0 4px 4px 0}
.hb-v{min-width:34px;text-align:right;font:500 var(--t-small) var(--font);font-variant-numeric:tabular-nums}
/* Parts of a whole */
.sp{display:grid;gap:14px}
.sp-r{display:grid;gap:6px}
.sp-l{display:flex;justify-content:space-between;gap:8px;font-size:var(--t-small);color:var(--ink-2)}
.sp-l small{color:var(--muted);font-size:var(--t-small);text-align:right}
.sp-bar{display:flex;gap:2px;height:20px}
.sp-bar i{min-width:3px}
.sp-bar i:first-child{border-radius:4px 0 0 4px}.sp-bar i:last-child{border-radius:0 4px 4px 0}.sp-bar i:only-child{border-radius:4px}
.sp-bar i:hover{filter:brightness(1.12)}
.sp.cols{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px 22px}
.sp-k{display:flex;flex-wrap:wrap;gap:3px 12px;font-size:var(--t-small);color:var(--ink-2)}
.sp-k span{display:inline-flex;align-items:center;gap:5px}
.sp-k i{width:8px;height:8px;border-radius:2px}
.sp-k b{font-weight:600;font-variant-numeric:tabular-nums}
/* Pay ranges */
.rg{display:grid;gap:6px}
.rg-r{display:grid;grid-template-columns:minmax(110px,26%) 1fr 74px;align-items:center;gap:12px;padding:4px 6px;margin:0 -6px;border-radius:8px}
.rg-r:not(.rg-axis):hover{background:var(--hover)}
.rg-l{font-size:var(--t-small);color:var(--ink-2)}
.rg-l small{display:block;font-size:var(--t-caption);color:var(--muted)}
.rg-t{position:relative;height:22px}
.rg-t i{position:absolute;top:50%;transform:translateY(-50%)}
.rg-w{height:6px;border-radius:3px;background:var(--v2-soft)}
.rg-b{height:16px;border-radius:4px;background:var(--v2)}
.rg-m{width:3px;height:22px;margin-left:-1.5px;border-radius:2px;background:var(--ink);box-shadow:0 0 0 2px var(--viz-surface)}
.rg-v{text-align:right;font:500 var(--t-small) var(--font);font-variant-numeric:tabular-nums}
.rg-axis .rg-t{height:14px}
.rg-axis span{position:absolute;transform:translateX(-50%);font-size:var(--t-caption);color:var(--muted)}
/* Heat grids and tables */
.hm-wrap{overflow-x:auto}
.hm{width:100%;border-collapse:separate;border-spacing:2px;font-size:var(--t-small);font-variant-numeric:tabular-nums}
.hm th{padding:4px 6px;font-weight:500;color:var(--muted);text-align:center;white-space:nowrap}
.hm tr th:first-child{text-align:left;color:var(--ink-2)}
.hm th small{display:block;font-weight:400;font-size:var(--t-caption);color:var(--muted)}
.hm td{min-width:36px;padding:8px 4px;border-radius:5px;text-align:center;color:var(--ink)}
.hm td.hm-na{background:transparent}
.hm td[data-i]:hover{box-shadow:inset 0 0 0 2px var(--ink)}
.hm td.hm-dark,.sc td.hm-dark{color:var(--hm-dark-ink)}
.viz-tbl{max-height:420px;overflow:auto;border-radius:10px;box-shadow:inset 0 0 0 1px var(--line)}
.viz-tbl table{width:100%;border-collapse:collapse;font-size:var(--t-small);font-variant-numeric:tabular-nums}
.viz-tbl th,.viz-tbl td{padding:7px 10px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line)}
.viz-tbl th{position:sticky;top:0;z-index:1;background:var(--code-bg);font-weight:600}
.viz-tbl tr:last-child td{border-bottom:0}
.viz-tbl .num{text-align:right}
.viz-tbl.sc td:first-child{white-space:normal}
.viz-tbl.sc td.heat{border-bottom-color:var(--viz-surface)}
/* Lists of people */
.plist table{width:100%;border-collapse:collapse;font-size:var(--t-ui)}
.plist td{padding:7px 4px;vertical-align:middle;border-bottom:1px solid var(--line)}
.plist tr:last-child td{border-bottom:0}
.plist td b{display:block;font-weight:500}
.plist td small{font-size:var(--t-small);color:var(--muted)}
.plist td.num{text-align:right;white-space:nowrap}
.plist td.muted{font-size:var(--t-small)}
.plist:not(.all) tr.more{display:none}
.plist .btn{margin-top:6px}
/* The tooltip */
.viz-tip{position:fixed;left:0;top:0;z-index:80;min-width:150px;max-width:300px;padding:9px 12px;border-radius:10px;pointer-events:none;opacity:0;transition:opacity .12s;
  background:var(--glass-strong);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);box-shadow:var(--glass-shadow),0 12px 30px -12px rgba(0,0,0,.3);
  font:var(--t-small)/1.5 var(--font);color:var(--ink)}
.viz-tip.show{opacity:1}
.viz-tip b{display:block;margin-bottom:2px;font-weight:600}
.viz-tip div{display:flex;align-items:center;gap:6px}
.viz-tip div span{margin-left:auto;padding-left:16px;font-weight:600;font-variant-numeric:tabular-nums}
.viz-tip i{flex:0 0 8px;width:8px;height:8px;border-radius:2px}
.viz-tip .tip-net{margin-top:4px;padding-top:4px;border-top:1px solid var(--line);color:var(--muted)}
.ins-foot{max-width:780px;margin:6px 0 0;font-size:var(--t-small);line-height:1.5;color:var(--faint)}
:root[data-glass="all"] .page-in .viz,:root[data-glass="all"] .page-in .kpi,:root[data-glass="all"] .page-in .story{background:color-mix(in srgb,var(--input-bg) 55%,transparent);-webkit-backdrop-filter:none;backdrop-filter:none}
:root[data-glass="all"] .ins-nav{background:var(--glass-read)}
@media (max-width:900px){.viz-grid{grid-template-columns:1fr}.story-lead{font-size:18px}.kpi-v{font-size:26px}}
/* Printing Insights (for trustees and board papers): just the page, charts kept whole */
@media print{
  html,body{height:auto;overflow:visible;background:#fff}
  .side,.top,.ambient,.toast,.viz-tip,.ins-bar,.ins-nav,.viz-acts,.plist .btn,.story-go,.page-acts{display:none!important}
  .app,.main,.view,.page{position:static!important;display:block!important;height:auto!important;overflow:visible!important}
  .page-in{max-width:none;padding:0;animation:none}
  .viz,.story,.kpi{break-inside:avoid;background:none;box-shadow:inset 0 0 0 1px #ddd}
  .chap-h{break-after:avoid}
  .plist tr.more{display:table-row!important}
  .story.hid{display:flex!important}.story-more{display:none}
  *{animation:none!important;transition:none!important}
}

/* Tooltips with the working */
.viz-tip{max-width:340px}
.viz-tip div{align-items:baseline}
.viz-tip div span{text-align:right}
.viz-tip .tip-sep{height:1px;background:var(--line);margin:5px 0}
.viz-tip .tip-list{display:block;margin-top:6px;padding-top:6px;border-top:1px solid var(--line)}
.viz-tip .tip-list div{gap:12px}
.viz-tip .tip-list span{font-weight:400;color:var(--muted);text-align:right}
.viz-tip .tip-hint{display:block;margin-top:6px;font-size:var(--t-caption);color:var(--faint)}
.plist tr[data-i]:hover td,.viz-tbl.sc tr[data-i]:hover td:not(.heat){background:var(--hover)}
.kpi[data-kpi]{cursor:help}

/* ---------- Reports (reports.js) ---------- */
.modal-card.rp-card{width:min(900px,100%)}
.rp .sub{margin-bottom:14px}
.rp-tpls{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin-bottom:18px}
.rp-tpl{display:grid;gap:4px;text-align:left;border:0;padding:11px 13px;border-radius:11px;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink);transition:box-shadow .2s,background .2s}
.rp-tpl b{font:600 var(--t-ui)/1.3 var(--font)}
.rp-tpl span{font-size:var(--t-small);line-height:1.4;color:var(--muted)}
.rp-tpl:hover{box-shadow:inset 0 0 0 1px var(--accent)}
.rp-tpl.on{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}
.rp-opts{margin-bottom:2px}
.rp-opts .field input[type=date]{margin-top:0}
.rp-chaps{display:flex;flex-wrap:wrap;gap:6px}
.rp-chip{display:inline-flex;align-items:center;height:32px;padding:0 12px;border-radius:8px;box-shadow:inset 0 0 0 1px var(--line-2);font-size:var(--t-ui);color:var(--ink-2);cursor:pointer;transition:background .15s,color .15s}
.rp-chip input{position:absolute;opacity:0;pointer-events:none}
.rp-chip.on{background:var(--accent);color:var(--accent-ink);box-shadow:none}
.rp-chip:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.rp-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.rp-foot .seg{width:240px}
.rp-hint{font-size:var(--t-small)}
.rp-spin .mark{width:16px;height:16px;color:currentColor}
.rp-spin{display:inline-flex}
.rp-warn{margin:14px 0 0}
.rp-recent:not(:empty){margin-top:18px;padding-top:12px;border-top:1px solid var(--line)}
.rp-recent h3{margin:0 0 6px;font:600 var(--t-ui) var(--font);color:var(--muted)}
.rp-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.rp-row:last-child{border-bottom:0}
.rp-row .btn.sm{padding:0 10px}
.rp-row .btn .mark{width:14px;height:14px}
.btn .mark,.viz-btn .mark{width:15px;height:15px;flex:0 0 15px}
/* The report's layout: always light, like paper (the tokens are set again here so dark mode doesn't reach it) */
.viz-light{color-scheme:light;--bg:#ffffff;--ink:#141413;--ink-2:#3d3d3a;--muted:#73726c;--faint:#a19f97;--line:rgba(31,30,29,.12);--line-2:rgba(31,30,29,.2);
  --hover:rgba(31,30,29,.05);--press:rgba(31,30,29,.09);--accent:#9c1d36;--accent-soft:rgba(156,29,54,.09);--accent-ink:#ffffff;--input-bg:#ffffff;--code-bg:#f5f4ed;
  --glass-bg:#ffffff;--ok:#2e8a57;--warn:#b7791f;--danger:#c2410c;--ok-soft:rgba(46,138,87,.12);--warn-soft:rgba(183,121,31,.14);--danger-soft:rgba(194,65,12,.11);
  --v1:#9c1d36;--v2:#2a78d6;--v3:#eda100;--v4:#1baf7a;--v5:#4a3aa7;--v2-soft:rgba(42,120,214,.24);--v-grid:rgba(31,30,29,.075);--v-axis:rgba(31,30,29,.24);
  --hm-0:#ffffff;--hm-dark-ink:#ffffff;--viz-surface:#ffffff;--st-good:#0ca30c;--st-warn:#fab219;--st-bad:#d03b3b;--shadow-sm:none;color:var(--ink);background:#ffffff}
.report-stage{position:fixed;left:-12000px;top:0;width:720px;pointer-events:none}
.report-doc{font:var(--t-ui)/1.45 var(--font);color:var(--ink);letter-spacing:-.012em}
.report-doc h2{font:500 24px/1.2 var(--serif);letter-spacing:-.02em;margin:0 0 10px}
.rd-cover{padding:0 0 22px;margin-bottom:22px;border-bottom:2px solid var(--accent)}
.rd-org{font:600 var(--t-caption)/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:10px}
.rd-cover h1{margin:0 0 10px;font:500 36px/1.1 var(--serif);letter-spacing:-.03em}
.rd-cover p{margin:2px 0;color:var(--muted)}
.rd-cover b{color:var(--ink);font-weight:600}
.rd-sample{color:var(--warn)!important;font-weight:600}
.rd-conf{color:var(--accent)!important;font-weight:600}
.rd-note{font-style:italic}
.rd-sum,.rd-find,.rd-method{margin-bottom:28px}
.report-doc .story-lead{font-size:18px;margin-bottom:16px}
.report-doc .kpis{margin-bottom:0;grid-template-columns:repeat(3,1fr)}
.report-doc .kpi,.report-doc .viz{background:#ffffff;box-shadow:inset 0 0 0 1px var(--line);transform:none!important;animation:none}
.rd-find h3.rd-tone{margin:14px 0 4px;font:600 var(--t-caption)/1 var(--font);letter-spacing:.05em;text-transform:uppercase}
.rd-tone.concern{color:var(--danger)}.rd-tone.watch{color:var(--warn)}.rd-tone.good{color:var(--ok)}.rd-tone.info{color:var(--muted)}
.rd-find ul,.rd-method ul{margin:0;padding-left:20px}
.rd-find li,.rd-method li{margin:4px 0;line-height:1.5}
.rd-method{font-size:var(--t-small);color:var(--ink-2)}
.report-doc .chap{scroll-margin-top:0}
.report-doc .viz-grid{grid-template-columns:1fr}
.report-doc .viz-tbl,.report-doc .hm-wrap{max-height:none;overflow:visible}
.report-doc .chap-h{border-top-color:var(--line-2)}
/* The preview (PDF) */
.report-sheet{position:fixed;inset:0;z-index:60;overflow:auto;background:rgba(20,15,8,.35);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:0 16px 40px}
.rs-bar{position:sticky;top:12px;z-index:2;display:flex;align-items:center;gap:8px;max-width:840px;margin:12px auto 16px;padding:8px 10px 8px 16px;border-radius:13px;--glass-bg:var(--glass-strong)}
.rs-paper{max-width:840px;margin:0 auto;padding:48px 56px;border-radius:6px;box-shadow:0 30px 80px -30px rgba(0,0,0,.45)}
@media (max-width:700px){.rs-paper{padding:28px 18px}.rp-foot .seg{width:100%}}
@media print{
  body.report-open{background:#fff}
  body.report-open #app,body.report-open #modal,body.report-open .rs-bar,body.report-open .toast,body.report-open .ambient{display:none!important}
  body.report-open .report-sheet{position:static!important;overflow:visible!important;background:#fff!important;padding:0!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  body.report-open .rs-paper{max-width:none;margin:0;padding:0;box-shadow:none;border-radius:0}
  .report-doc .chap{break-before:page}
  .report-doc .viz,.report-doc .kpi,.rd-find li{break-inside:avoid}
  .report-doc .chap-h{break-after:avoid}
}

/* ---------- Library ---------- */
.drop{border-radius:16px;padding:26px;text-align:center;color:var(--muted);margin-bottom:16px;box-shadow:inset 0 0 0 1.5px var(--line-2);transition:box-shadow .2s,background .2s}
.drop.on{box-shadow:inset 0 0 0 1.5px var(--accent);background:var(--accent-soft)}
.drop>svg{color:var(--accent);vertical-align:-3px}
.doc-row{display:flex;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid var(--line)}
.doc-row:last-child{border-bottom:0}
.doc-ic{width:36px;height:36px;border-radius:9px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font:600 10px var(--font);text-transform:uppercase;flex:0 0 auto}
.doc-main{flex:1;min-width:0}
.doc-main b{font-weight:500;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-main span{color:var(--muted);font-size:var(--t-small)}
#changesView .doc-main span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hit{border-top:1px solid var(--line);padding:12px 0}
.hit b{font-weight:500}
.hit p{margin:4px 0 0;color:var(--ink-2);font-size:var(--t-ui);white-space:pre-wrap}

/* ---------- Settings ---------- */
.set-tabs{display:flex;gap:2px;flex-wrap:wrap;margin-bottom:18px;padding:3px;border-radius:11px;background:var(--hover);box-shadow:inset 0 0 0 1px var(--line);width:fit-content;max-width:100%}
.set-tab{border:0;background:none;height:32px;padding:0 13px;border-radius:9px;color:var(--muted);font:500 var(--t-small) var(--font);transition:color .2s,background .2s,box-shadow .2s}
.set-tab:hover{color:var(--ink)}
.set-tab.on{color:var(--ink);background:var(--glass-solid);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--line)}
.user-row{display:flex;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid var(--line)}
.user-row:last-child{border-bottom:0}
.code-box{font:600 26px/1 var(--mono);letter-spacing:.12em;background:var(--input-bg);border-radius:11px;padding:14px 18px;display:inline-block;margin:6px 0 10px;box-shadow:inset 0 0 0 1px var(--line-2)}
.audit{width:100%;border-collapse:collapse;font-size:var(--t-small)}
.audit th,.audit td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.audit th{color:var(--muted);font-weight:500}
.audit td.d{color:var(--muted);font:11px var(--mono);max-width:360px;word-break:break-word}
.look{display:grid;gap:20px}
.flabel{font:500 var(--t-small) var(--font);color:var(--ink-2);margin-bottom:8px}
.fhint{font-size:var(--t-small);color:var(--muted);margin-top:8px}
/* Background picker */
.walls{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.walls button{display:grid;gap:6px;justify-items:center;border:0;background:none;padding:0;font:var(--t-small) var(--font);color:var(--muted)}
.walls button[aria-checked="true"]{color:var(--ink)}
.wall-sw{position:relative;overflow:hidden;width:100%;height:52px;border-radius:8px;box-shadow:inset 0 0 0 1px var(--line-2)}
.walls button[aria-checked="true"] .wall-sw{box-shadow:inset 0 0 0 2px var(--accent),0 0 0 3px var(--accent-ring)}

/* ---------- How it works (guide.js) ---------- */
.g-flow{display:flex;align-items:center;gap:6px;padding:16px;border-radius:16px;margin-bottom:18px;overflow-x:auto;
  background:color-mix(in srgb,var(--glass-bg) 80%,transparent);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm)}
.g-col{display:grid;gap:8px;flex:0 0 auto}
.g-node{flex:1 1 0;min-width:118px;display:grid;justify-items:start;gap:3px;padding:11px 12px;border-radius:11px;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);animation:rise .6s var(--ease) both}
.g-node svg{color:var(--accent);margin-bottom:2px}
.g-node .mark{width:18px;height:18px;margin-bottom:2px}
.g-node b{font:600 var(--t-ui)/1.2 var(--font)}
.g-node span{font-size:var(--t-small);color:var(--muted);line-height:1.35}
.g-node.accent{background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent)}
.g-arrow{flex:0 0 auto;color:var(--faint);display:grid}
:root[data-glass="all"] .g-flow,:root[data-glass="all"] .g-card{background:color-mix(in srgb,var(--input-bg) 55%,transparent)}
@media (max-width:900px){.g-body{grid-template-columns:1fr}.g-steps{position:static;display:flex;flex-wrap:wrap}.g-step .g-st{display:none}.g-flow{flex-direction:column;align-items:stretch}.g-arrow{transform:rotate(90deg);justify-self:center;margin:auto}.g-col{grid-template-columns:1fr 1fr}}

/* ---------- ⌘K search (search.js, Obolo's palette) ---------- */
dialog.palette{width:min(640px,92vw);max-height:none;margin:12vh auto auto;border:0;border-radius:18px;padding:0;color:var(--ink);overflow:hidden;
  --glass-bg:color-mix(in srgb,var(--glass-solid) 90%,transparent);animation:sheetIn .35s var(--spring) both}
dialog.palette::backdrop{background:rgba(20,15,8,.22);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.pal-in{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);color:var(--muted)}
.pal-ic{display:grid}
.pal-ic svg{width:18px;height:18px}
.pal-in input{flex:1;min-width:0;border:0;outline:0;background:none;color:var(--ink);font:var(--t-heading) var(--font);letter-spacing:-.02em}
.pal-in input::placeholder{color:var(--faint)}
.pal-cancel{display:none;border:0;background:none;color:var(--accent);font:500 var(--t-ui) var(--font)}
.pal-list{max-height:min(58vh,520px);overflow-y:auto;padding:6px;scrollbar-width:thin;scrollbar-color:var(--thumb) transparent}
.pal-sec{padding:10px 12px 5px;font:500 var(--t-small) var(--font);color:var(--faint)}
.pal-item{display:flex;align-items:center;gap:12px;width:100%;border:0;background:none;text-align:left;padding:8px 12px;border-radius:10px;color:var(--ink-2);font-size:var(--t-ui)}
.pal-item>svg{flex:0 0 auto;color:var(--muted)}
.pal-item .pi-main{flex:1;min-width:0}
.pal-item .pi-main b{display:block;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pal-item .pi-main span{display:block;margin-top:1px;font-size:var(--t-small);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pal-item mark,.doc-text mark{background:var(--accent-soft);color:inherit;border-radius:3px;padding:0 1px}
.doc-text mark{background:color-mix(in srgb,var(--accent) 28%,transparent)}
.pal-item kbd{margin-left:auto}
.pal-item.act{background:var(--hover)}
.pal-item.act>svg{color:var(--accent)}
.pi-av{flex:0 0 26px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font:600 10.5px/1 var(--font)}
.pi-mark{display:grid}
.pi-mark .mark{width:18px;height:18px}
.pi-tag{display:inline-block;flex:0 0 auto;padding:1px 6px;border-radius:6px;background:var(--hover);color:var(--muted);font:600 10px/1.6 var(--font);font-style:normal;text-transform:uppercase;letter-spacing:.04em;vertical-align:1px}
.pi-tag.acas{background:var(--accent-soft);color:var(--accent)}
.pi-link{flex:0 0 auto;margin-left:auto;padding:3px 9px;border-radius:8px;font:500 var(--t-small) var(--font);color:var(--muted);text-decoration:none;box-shadow:inset 0 0 0 1px var(--line-2);opacity:0;transition:opacity .15s}
.pal-item.act .pi-link,.pal-item:hover .pi-link{opacity:1}
.pi-link:hover{color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.pal-empty{padding:22px;text-align:center;color:var(--muted);font-size:var(--t-small)}
.pal-wait{display:flex;align-items:center;justify-content:center;gap:8px}
.pal-wait .mark{width:16px;height:16px}
.pal-foot{display:flex;gap:16px;padding:9px 16px;border-top:1px solid var(--line);font-size:var(--t-caption);color:var(--faint)}
.pal-foot kbd{margin:0 2px 0 0;padding:1px 5px;border-radius:5px;box-shadow:inset 0 0 0 1px var(--line-2)}
@media (max-width:760px){dialog.palette{margin-top:8vh}.pal-in kbd,.pal-foot{display:none}.pal-cancel{display:block}}

/* ---------- Sheets (dialogs) and the toast: glass ---------- */
.modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgba(20,15,8,.22);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fade .3s both}
.modal-card{position:relative;width:min(600px,100%);max-height:88vh;overflow:auto;border-radius:22px;padding:22px 26px 20px;color:var(--ink);
  background:var(--glass-strong);-webkit-backdrop-filter:blur(30px) saturate(180%);backdrop-filter:blur(30px) saturate(180%);box-shadow:var(--glass-shadow),0 30px 80px -30px rgba(0,0,0,.35);
  animation:sheetIn .5s var(--spring) both}
.modal-card.wide{width:min(820px,100%)}
.modal-card h2{margin:0 0 6px;font:600 var(--t-heading) var(--font);letter-spacing:-.022em}
.modal-card .sub{color:var(--muted);margin:0 0 18px}
.modal-card .panel{background:color-mix(in srgb,var(--input-bg) 55%,transparent)}
.modal-acts{display:flex;gap:8px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}
.doc-text{white-space:pre-wrap;font-size:var(--t-ui);line-height:1.55;background:var(--input-bg);border-radius:11px;padding:14px 16px;max-height:60vh;overflow:auto;box-shadow:inset 0 0 0 1px var(--line)}
.toast{position:fixed;left:50%;bottom:calc(var(--dock-h,120px) + 26px);z-index:70;max-width:min(560px,90vw);padding:11px 20px;border-radius:999px;
  --glass-bg:var(--glass-strong);font:500 var(--t-small)/1.45 var(--font);color:var(--ink);text-align:center;
  opacity:0;transform:translate(-50%,14px) scale(.96);transition:opacity .3s,transform .45s var(--spring);pointer-events:none}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.bad{color:var(--danger)}
@keyframes sheetIn{from{opacity:0;transform:translateY(16px) scale(.95)}}
@keyframes fade{from{opacity:0}}

/* ---------- Liquid glass everywhere (Settings › My account › Appearance › Everywhere) ----------
   A background sits behind; the sidebar floats as a glass pane and every surface
   (bubbles, answers, pages, cards, drafts, chips, header) is frosted glass.
   Each background sets its own accent (--wa-l light, --wa-d dark, --wa-ink text on it). */
:root{
  --wall:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 900' preserveAspectRatio='xMidYMid slice'><path fill='%23e8eee2' d='M-60 720C160 470 470 430 700 540 470 690 190 790-60 720Z'/><path fill='%23edf1e7' d='M1500 120C1290 330 990 350 770 250 1000 110 1270 40 1500 120Z'/><path fill='%23e4ebdd' d='M1180 960C1150 760 1260 610 1440 560 1460 740 1360 880 1180 960Z'/><path fill='%23edf1e7' d='M140-40C300 90 330 250 250 400 110 280 70 110 140-40Z'/><circle fill='%23e4ebdd' cx='1060' cy='640' r='120'/></svg>");
  --w-message:radial-gradient(40% 46% at 12% 24%,#7a1128 0%,transparent 70%),radial-gradient(38% 42% at 84% 14%,#f2b8a8 0%,transparent 70%),radial-gradient(40% 40% at 55% 62%,#b8324c 0%,transparent 70%),radial-gradient(42% 42% at 16% 90%,#4a0b19 0%,transparent 70%),radial-gradient(34% 34% at 92% 88%,#f6e2d8 0%,transparent 70%),radial-gradient(30% 30% at 62% 28%,#d0566b 0%,transparent 70%),#8d1b33;
  --w-meadow:radial-gradient(38% 48% at 12% 28%,#1d4f22 0%,transparent 70%),radial-gradient(34% 40% at 30% 55%,#2f6e2c 0%,transparent 70%),radial-gradient(42% 42% at 82% 10%,#f3bf93 0%,transparent 70%),radial-gradient(30% 38% at 96% 48%,#3f86c4 0%,transparent 70%),radial-gradient(36% 32% at 50% 62%,#cfae2c 0%,transparent 70%),radial-gradient(40% 40% at 18% 92%,#a9bcc2 0%,transparent 70%),radial-gradient(42% 42% at 78% 90%,#2a6526 0%,transparent 70%),radial-gradient(30% 30% at 60% 30%,#8fae5a 0%,transparent 70%),#5d7d3e;
  --w-dusk:radial-gradient(40% 45% at 15% 25%,#5b3d8f 0%,transparent 70%),radial-gradient(40% 40% at 85% 15%,#f5a35c 0%,transparent 70%),radial-gradient(35% 40% at 70% 55%,#e58fb5 0%,transparent 70%),radial-gradient(45% 45% at 20% 85%,#1f2a5c 0%,transparent 70%),radial-gradient(35% 35% at 90% 90%,#f7c9a3 0%,transparent 70%),#7b4f8f;
  --w-ocean:radial-gradient(40% 45% at 10% 20%,#0f4c6b 0%,transparent 70%),radial-gradient(38% 40% at 80% 20%,#8fd3e0 0%,transparent 70%),radial-gradient(40% 40% at 55% 60%,#2d8fb3 0%,transparent 70%),radial-gradient(40% 40% at 15% 90%,#1c6b5a 0%,transparent 70%),radial-gradient(35% 35% at 92% 88%,#d9f0f2 0%,transparent 70%),#2a6f8f;
  --w-sand:radial-gradient(40% 45% at 12% 20%,#f3e3c7 0%,transparent 70%),radial-gradient(38% 40% at 85% 15%,#d8b48a 0%,transparent 70%),radial-gradient(40% 40% at 55% 65%,#e8d2b0 0%,transparent 70%),radial-gradient(40% 40% at 15% 90%,#c9d6c1 0%,transparent 70%),radial-gradient(35% 35% at 90% 90%,#f7efe2 0%,transparent 70%),#e2cfb1;
  --w-graphite:radial-gradient(40% 45% at 15% 20%,#3e4a44 0%,transparent 70%),radial-gradient(38% 40% at 85% 20%,#545a57 0%,transparent 70%),radial-gradient(40% 40% at 50% 65%,#1f2321 0%,transparent 70%),radial-gradient(40% 40% at 15% 90%,#6b7a70 0%,transparent 70%),radial-gradient(35% 35% at 90% 88%,#2b2d2c 0%,transparent 70%),#333836;
  --w-grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/><feComponentTransfer><feFuncR type='linear' slope='2.2' intercept='-.6'/><feFuncG type='linear' slope='2.2' intercept='-.6'/><feFuncB type='linear' slope='2.2' intercept='-.6'/><feFuncA type='linear' slope='0' intercept='1'/></feComponentTransfer></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--wall:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 900' preserveAspectRatio='xMidYMid slice'><path fill='%232d332c' d='M-60 720C160 470 470 430 700 540 470 690 190 790-60 720Z'/><path fill='%232a2f29' d='M1500 120C1290 330 990 350 770 250 1000 110 1270 40 1500 120Z'/><path fill='%2330372f' d='M1180 960C1150 760 1260 610 1440 560 1460 740 1360 880 1180 960Z'/><path fill='%232a2f29' d='M140-40C300 90 330 250 250 400 110 280 70 110 140-40Z'/><circle fill='%2330372f' cx='1060' cy='640' r='120'/></svg>")}}
:root[data-theme="dark"]{--wall:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 900' preserveAspectRatio='xMidYMid slice'><path fill='%232d332c' d='M-60 720C160 470 470 430 700 540 470 690 190 790-60 720Z'/><path fill='%232a2f29' d='M1500 120C1290 330 990 350 770 250 1000 110 1270 40 1500 120Z'/><path fill='%2330372f' d='M1180 960C1150 760 1260 610 1440 560 1460 740 1360 880 1180 960Z'/><path fill='%232a2f29' d='M140-40C300 90 330 250 250 400 110 280 70 110 140-40Z'/><circle fill='%2330372f' cx='1060' cy='640' r='120'/></svg>")}
/* Swatches in the picker */
.wall-sw.w-message{background:var(--w-message)}
.wall-sw.w-meadow{background:var(--w-meadow)}
.wall-sw.w-dusk{background:var(--w-dusk)}
.wall-sw.w-ocean{background:var(--w-ocean)}
.wall-sw.w-sand{background:var(--w-sand)}
.wall-sw.w-graphite{background:var(--w-graphite)}
.wall-sw.w-leaves{background:var(--bg) var(--wall) center/cover}
.wall-sw.w-plain{background:var(--bg)}
/* The ambient layer takes the chosen background */
:root[data-glass="all"] .ambient{background:var(--bg) var(--wall) center/cover no-repeat}
:root[data-glass="all"][data-wall="plain"] .ambient{background:var(--bg)}
:root[data-glass="all"][data-wall="message"] .ambient{background:var(--w-message)}
:root[data-glass="all"][data-wall="meadow"] .ambient{background:var(--w-meadow)}
:root[data-glass="all"][data-wall="dusk"] .ambient{background:var(--w-dusk)}
:root[data-glass="all"][data-wall="ocean"] .ambient{background:var(--w-ocean)}
:root[data-glass="all"][data-wall="sand"] .ambient{background:var(--w-sand)}
:root[data-glass="all"][data-wall="graphite"] .ambient{background:var(--w-graphite)}
/* Film grain on the mesh backgrounds and their swatches */
:root[data-glass="all"]:is([data-wall="message"],[data-wall="meadow"],[data-wall="dusk"],[data-wall="ocean"],[data-wall="sand"],[data-wall="graphite"]) .ambient::after,
.wall-sw:is(.w-message,.w-meadow,.w-dusk,.w-ocean,.w-sand,.w-graphite)::after{content:"";position:absolute;inset:0;background-image:var(--w-grain);background-size:180px;opacity:.3;mix-blend-mode:overlay;pointer-events:none}
/* Dark mode dims colourful backgrounds a little */
:root[data-glass="all"][data-theme="dark"]:not([data-wall="plain"]) .ambient::before{content:"";position:absolute;inset:0;background:rgba(0,0,0,.34)}
@media (prefers-color-scheme: dark){:root[data-glass="all"]:not([data-theme="light"]):not([data-wall="plain"]) .ambient::before{content:"";position:absolute;inset:0;background:rgba(0,0,0,.34)}}
/* The colour scheme follows the background (leaves and plain keep The Message's red) */
:root[data-glass="all"]{--wa-l:#9c1d36;--wa-d:#ec7f93;--wa-ink:#2b0810}
:root[data-glass="all"][data-wall="meadow"]{--wa-l:#2e6b4e;--wa-d:#5fae84;--wa-ink:#0f2418}
:root[data-glass="all"][data-wall="dusk"]{--wa-l:#6a4c9c;--wa-d:#b89be3;--wa-ink:#1e1530}
:root[data-glass="all"][data-wall="ocean"]{--wa-l:#1d6a86;--wa-d:#72bfd8;--wa-ink:#0a2230}
:root[data-glass="all"][data-wall="sand"]{--wa-l:#99653a;--wa-d:#dcac7a;--wa-ink:#2b1b0c}
:root[data-glass="all"][data-wall="graphite"]{--wa-l:#4b5752;--wa-d:#b0bdb6;--wa-ink:#151917}
:root[data-glass="all"]{--accent:var(--wa-l);--accent-2:color-mix(in srgb,var(--wa-l) 82%,#fff);--accent-ink:#fff;
  --accent-soft:color-mix(in srgb,var(--accent) 12%,transparent);--accent-ring:color-mix(in srgb,var(--accent) 22%,transparent);
  --glass-read:color-mix(in srgb,var(--wa-l) 7%,rgba(255,255,255,.8))}
@media (prefers-color-scheme: dark){:root[data-glass="all"]:not([data-theme="light"]){--accent:var(--wa-d);--accent-2:color-mix(in srgb,var(--wa-d) 82%,#fff);--accent-ink:var(--wa-ink);--glass-read:color-mix(in srgb,var(--wa-d) 8%,rgba(38,38,36,.8))}}
:root[data-glass="all"][data-theme="dark"]{--accent:var(--wa-d);--accent-2:color-mix(in srgb,var(--wa-d) 82%,#fff);--accent-ink:var(--wa-ink);--glass-read:color-mix(in srgb,var(--wa-d) 8%,rgba(38,38,36,.8))}
:root[data-glass="all"] body{background:transparent}
/* The sidebar floats as a glass pane */
:root[data-glass="all"] .side{margin:10px 0 10px 10px;border:0;border-radius:16px;background:var(--glass-read);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow)}
:root[data-glass="all"] .app.folded .side{margin-left:calc(-1 * var(--side-w) - 20px)}
:root[data-glass="all"] .side-foot{border-top-color:transparent}
:root[data-glass="all"] .who{border-radius:0 0 0 16px}
:root[data-glass="all"] .chat-item.on,:root[data-glass="all"] .nav-item.on{background:color-mix(in srgb,var(--input-bg) 70%,transparent)}
/* Over a busy background, text sits on glass: answers in frosted cards, your messages as clear glass, pages on panels */
:root[data-glass="all"] .a{background:var(--glass-read);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow);border-radius:18px;padding:14px 18px 10px}
:root[data-glass="all"] .q-b{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow),inset 0 0 0 1px rgba(255,255,255,.5)}
:root[data-glass="all"] .greet{background:var(--glass-read);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow);border-radius:999px;padding:8px 26px 8px 16px}
:root[data-glass="all"] .gate-card>.gate-title,:root[data-glass="all"] .gate-card>.gate-sub{width:fit-content;margin-left:auto;margin-right:auto;background:var(--glass-read);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);border-radius:999px}
:root[data-glass="all"] .gate-title{padding:6px 22px}
:root[data-glass="all"] .gate-sub{padding:3px 14px}
:root[data-glass="all"] .foot-note{width:fit-content;margin:8px auto 0;background:var(--glass-read);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);padding:3px 12px;border-radius:999px;color:var(--muted)}
:root[data-glass="all"] .page-in{background:var(--glass-read);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow);border-radius:19px;margin-top:64px;margin-bottom:24px;padding:26px 28px 34px}
:root[data-glass="all"] .a .drafts,:root[data-glass="all"] .a .tbl,:root[data-glass="all"] .a pre,:root[data-glass="all"] .a .approve{background:var(--input-bg)}
:root[data-glass="all"] .chip,
:root[data-glass="all"] .src,
:root[data-glass="all"] .person,
:root[data-glass="all"] .top-title{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow)}
:root[data-glass="all"] .today{background:var(--glass-read)}
:root[data-glass="all"] .top-title{padding:0 12px;height:36px;line-height:36px;border-radius:10px}
:root[data-glass="all"] .top .pill.sample{background:color-mix(in srgb,var(--warn) 22%,var(--glass-read));-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);height:30px;border-radius:8px}
:root[data-glass="all"] .main.scrolled .top{background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
/* No backing band over a background: the thread scrolls behind the frosted composer */
:root[data-glass="all"] .dock::before{display:none}
:root[data-glass="all"] .page-in .panel,:root[data-glass="all"] .page-in .stat{background:color-mix(in srgb,var(--input-bg) 55%,transparent);-webkit-backdrop-filter:none;backdrop-filter:none}

/* ---------- Letters (letters.js) ---------- */
.doc-row.click{cursor:pointer;transition:background .15s}
@media (hover:hover){.doc-row.click:hover{background:var(--hover)}}
.lt-gap{color:var(--warn)}
.letter-card{display:flex;align-items:center;gap:12px;margin-top:12px;padding:12px 14px;border-radius:14px;background:var(--input-bg);box-shadow:inset 0 0 0 1px var(--line-2),var(--shadow-sm);animation:pop .4s var(--spring) both}
.lc-ic{width:36px;height:36px;border-radius:9px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;flex:0 0 auto}
.lc-main{flex:1;min-width:0;display:grid;gap:1px}
.lc-main b{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lc-main span{color:var(--muted);font-size:var(--t-small)}
.lt-page .page-h .sub .pill{height:22px;vertical-align:1px;margin-left:2px}
.lt-back{display:inline-flex;align-items:center;gap:4px;color:var(--muted);text-decoration:none;font-size:var(--t-small);margin-bottom:10px}
.lt-back svg{transform:rotate(180deg);width:13px;height:13px}
.lt-back:hover{color:var(--ink)}
.lt-acts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.lt-body{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px;align-items:start}
.lt-left{min-width:0}
.lt-side{position:sticky;top:80px}
.lt-to{display:grid;gap:2px;font-size:var(--t-ui)}
.lt-to span{word-break:break-word}
.lt-hist{list-style:none;margin:0;padding:0 0 0 12px;border-left:1.5px solid var(--line-2);display:grid;gap:9px;font-size:var(--t-small)}
.lt-hist li{display:grid;gap:1px}
.lt-hist b{font-weight:500}
.lt-hist span{color:var(--muted)}
/* The letter's paper: the PDF's own page (hr/letters.py render()) in points, scaled to the column: 1pt = 100cqw/595.28 */
.lt-paper{container-type:inline-size;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.08),0 18px 44px -24px rgba(0,0,0,.35);overflow:hidden}
.lp-sheet{--pt:calc(100cqw / 595.28);position:relative;background:#fff;color:#000;font-family:"Carlito","Calibri",sans-serif;font-synthesis-weight:auto;
  font-size:calc(var(--size) * var(--pt));line-height:calc(var(--lead) * var(--pt));min-height:calc(841.89 * var(--pt));
  padding:calc(101 * var(--pt)) calc(72 * var(--pt)) calc(100 * var(--pt))}
.lp-sheet.lp-doc{padding:calc(36 * var(--pt))}
.lp-sheet p,.lp-list{margin:0 0 calc(var(--para) * var(--pt))}
.lp-sheet b{font-weight:700}
.lp-top{position:absolute;top:0;left:0;width:calc(598.35 * var(--pt));max-width:none;pointer-events:none}
.lp-foot{position:absolute;bottom:0;left:0;width:calc(597.25 * var(--pt));max-width:none;pointer-events:none}
.lp-head{position:relative;min-height:calc(128 * var(--pt));margin-bottom:calc(var(--lead) * var(--pt))}
.lp-rec{margin-bottom:calc(var(--lead) * var(--pt))}
.lp-item{display:grid;grid-template-columns:calc(18 * var(--pt)) 1fr;margin-left:calc(18 * var(--pt))}
.lp-cols{display:grid;grid-template-columns:1fr 1fr}
.lp-close{margin-bottom:0!important}
.lp-sig{margin-top:calc(58 * var(--pt))!important;margin-bottom:0!important}
.lp-sheet mark.gap{font:inherit}
.lt-how{margin:0 0 8px;padding-left:18px;display:grid;gap:6px;font-size:var(--t-small)}
.lt-how+p{margin:0;font-size:var(--t-small)}
mark.gap{background:var(--warn-soft);color:var(--warn);border-radius:4px;padding:0 3px;cursor:pointer;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--warn) 40%,transparent)}
.lt-text{font:13px/1.55 var(--font);min-height:300px}
.lt-tpl{border-top:1px solid var(--line);padding:10px 0}
.lt-tpl:first-of-type{border-top:0}
.lt-tpl summary{cursor:pointer;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;list-style:none;padding:4px 0}
.lt-tpl summary::-webkit-details-marker{display:none}
.lt-tpl summary b{font-weight:600}
.lt-tpl summary span{font-size:var(--t-small)}
.lt-tpl[open] summary{margin-bottom:10px}

/* ---------- Meetings to book (meetings.js) ---------- */
.mt-list{border-radius:13px;box-shadow:inset 0 0 0 1px var(--line);overflow:hidden}
.mt-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line)}
.mt-row:last-child{border-bottom:0}
.mt-times{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.mt-times:empty{display:none}
.mt-times .rp-chip{border:0;background:none;font:inherit;font-size:var(--t-ui)}
.mt-times .rp-chip.on{background:var(--accent);color:var(--accent-ink)}

/* ---------- DBS checks (dbs.js) ---------- */
.db-prog{height:6px;border-radius:99px;background:var(--hover);margin-top:8px;overflow:hidden;width:min(320px,60vw)}
.db-prog i{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .4s var(--ease)}
.banner>.mark{width:18px;height:18px;flex:0 0 18px;color:var(--accent)}
.stat .v small{font-size:14px;color:var(--warn)}
.db-how{overflow:hidden}
.db-how>summary{cursor:pointer;list-style:none;border-bottom:0}
.db-how>summary::-webkit-details-marker{display:none}
.db-how[open]>summary{border-bottom:1px solid var(--line)}
.db-how .panel-b{font-size:var(--t-ui);line-height:1.55}
.db-how ul{padding-left:20px}
.db-bar{gap:8px}
.db-seg{display:flex;flex-wrap:wrap;gap:6px}
.db-seg .rp-chip{border:0;background:none;font:inherit;font-size:var(--t-small);height:30px}
.db-seg .rp-chip.on{background:var(--accent);color:var(--accent-ink)}
.db-pick{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 18px;background:var(--accent-soft);border-bottom:1px solid var(--line);font-size:var(--t-ui)}
.db-table{overflow-x:auto}
.db-table table{width:100%;border-collapse:collapse;font-size:var(--t-ui)}
.db-table th{text-align:left;font-weight:500;color:var(--muted);font-size:var(--t-small);padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.db-table td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.db-table td>span{display:block;font-size:var(--t-small)}
.db-table tr:last-child td{border-bottom:0}
.db-table tr[data-id]{cursor:pointer;transition:background .15s}
@media (hover:hover){.db-table tr[data-id]:hover{background:var(--hover)}}
.db-table th:first-child,.db-table td:first-child{width:28px;padding-right:0}
.db-table input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px}
.db-who b{font-weight:500;display:block}
.db-cert{font:12.5px var(--mono);color:var(--ink)!important;font-size:12.5px!important}
.db-decl{font-size:var(--t-small);max-height:200px}

/* ---------- Motion ---------- */
@keyframes rise{from{opacity:0;transform:translateY(8px)}}
@keyframes pop{from{opacity:0;transform:scale(.94)}}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
@media (prefers-reduced-transparency: reduce){
  .glass,.modal-card{background:var(--glass-solid)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .lt-body{grid-template-columns:minmax(0,1fr)}
  .lt-side{position:static}
  .mt-row{flex-wrap:wrap}
  .mt-row .doc-main{flex-basis:calc(100% - 60px)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .it-row{grid-template-columns:28px 1fr}
  .it-sum,.it-figs{grid-column:2}
  .it-figs{text-align:left}
  .it-more{padding-left:18px}
  .it-cols{grid-template-columns:1fr}
  .pay-seg{width:100%}
  .pay-tools .spacer{display:none}
  .pay-tools{justify-content:flex-end}
  .grid2{grid-template-columns:1fr}
  .walls{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:760px){
  .side{position:fixed;top:0;bottom:0;left:0;margin:8px;border-radius:14px;border:1px solid var(--line);box-shadow:0 20px 60px -20px rgba(0,0,0,.4);z-index:30}
  .dock{padding:0 12px 10px}
  .thread{padding:76px 16px calc(var(--dock-h,120px) + 40px)}
  .page-in{padding:76px 16px 60px}
  :root[data-glass="all"] .page-in{margin:64px 8px 16px;padding:22px 16px 28px}
}

/* ---------- Deadlines ---------- */
.rm-to{margin:0 0 12px;padding:10px 12px;border-radius:10px;box-shadow:inset 0 0 0 1px var(--line);font-size:var(--t-ui)}
.rm-to summary{display:flex;justify-content:space-between;gap:10px;cursor:pointer}
.rm-to summary b{font-weight:500}
.rm-to ul{list-style:none;margin:8px 0 0;padding:0;max-height:220px;overflow:auto}
.rm-to li{margin:2px 0}
.rm-to .muted{font-size:var(--t-small)}
.rm-sheet{display:flex;align-items:center;gap:8px;margin:4px 0 0;font-size:var(--t-small);color:var(--ink-2)}
.rm-sheet svg{width:14px;height:14px;flex:none}
.rm-sheet span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dl-page{max-width:880px}
.dl-group{overflow:hidden}
.dl-group .panel-h{border-bottom:0;padding-bottom:4px}
.dl-when-h{padding:14px 18px 6px;font:500 var(--t-small) var(--font);color:var(--muted)}
.dl-when-h span{margin-left:4px;font-weight:400;opacity:.8}
.dl-when-h.late{color:var(--danger)}
.dl-when-h:not(:first-child){border-top:1px solid var(--line);margin-top:6px}
.dl-row{display:flex;align-items:center;gap:14px;padding:9px 12px 9px 18px;cursor:pointer;transition:background .15s;outline:0}
.dl-row:hover,.dl-row:focus-visible{background:var(--hover)}
.dl-row:last-child{padding-bottom:12px}
.dl-date{flex:0 0 auto;width:42px;height:44px;border-radius:10px;display:grid;place-content:center;text-align:center;line-height:1;
  background:var(--hover);color:var(--ink-2)}
.dl-date b{font:500 17px/1 var(--font);letter-spacing:-.02em}
.dl-date small{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;margin-top:3px;color:var(--muted)}
.dl-date.late{background:var(--danger-soft);color:var(--danger)}
.dl-date.soon{background:var(--warn-soft);color:var(--warn)}
.dl-date.late small,.dl-date.soon small{color:inherit;opacity:.8}
.dl-main{flex:1;min-width:0;display:grid;gap:1px}
.dl-main b{font-weight:500;font-size:var(--t-ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-main>span{color:var(--muted);font-size:var(--t-small);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-ago{flex:0 0 auto;font-size:var(--t-small);color:var(--muted);font-variant-numeric:tabular-nums}
.dl-ago.late{color:var(--danger)}
.dl-ago.soon{color:var(--warn)}
.dl-tick{width:32px;height:32px;border-radius:8px;box-shadow:inset 0 0 0 1px var(--line-2)}
.dl-tick:hover{background:var(--ok-soft);color:var(--ok);box-shadow:none}
.dl-course{border-top:1px solid var(--line)}
.dl-group .panel-h+.dl-course{border-top:0}
.dl-course>summary{display:flex;align-items:center;gap:14px;padding:10px 12px 10px 18px;cursor:pointer;list-style:none;transition:background .15s}
.dl-course>summary:hover{background:var(--hover)}
.dl-course>summary::-webkit-details-marker{display:none}
.dl-bar{flex:0 0 120px;height:6px;border-radius:99px;background:var(--danger-soft);overflow:hidden}
.dl-bar i{display:block;height:100%;background:var(--ok);border-radius:99px}
.dl-pct{flex:0 0 36px;text-align:right;font-size:var(--t-small);color:var(--muted);font-variant-numeric:tabular-nums}
.dl-chev{display:inline-flex;width:32px;justify-content:center;color:var(--muted);transition:transform .2s var(--ease)}
.dl-course[open] .dl-chev{transform:rotate(180deg)}
.dl-course-b{padding:4px 18px 16px}
.dl-people{list-style:none;margin:0 0 6px;padding:0;columns:2;column-gap:32px;font-size:var(--t-small)}
.dl-people li{display:flex;justify-content:space-between;gap:10px;padding:3px 0;break-inside:avoid}
.dl-people li>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dl-people small{margin-left:6px;color:var(--muted)}
.dl-people .late{color:var(--danger);white-space:nowrap}
.dl-people .soon{color:var(--warn);white-space:nowrap}
.dl-more{border:0;background:none;padding:2px 0;margin-bottom:12px;color:var(--accent);font:inherit;font-size:var(--t-small);cursor:pointer}
.dl-course-b .flabel{margin:8px 0 6px}
.dl-course-a{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;font-size:var(--t-small)}
.dl-closed-t{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:4px 2px;margin:2px 0 12px;color:var(--muted);font:inherit;font-size:var(--t-small);cursor:pointer}
.dl-closed-t svg{transform:rotate(-90deg);transition:transform .2s var(--ease)}
.dl-closed-t.on svg{transform:none}
.dl-closed .dl-row{padding-top:9px}
.dl-closed .panel-h{display:none}
.dl-sheet-h{display:flex;gap:12px;align-items:flex-start;margin-bottom:16px}
.dl-sheet-h h2{margin:0}
.dl-sheet-h .sub{margin:2px 0 0}
.dl-kind{flex:0 0 auto;width:36px;height:36px;border-radius:9px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.dl-fact{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:13px;box-shadow:inset 0 0 0 1px var(--line);margin-bottom:16px}
.dl-fact>div{display:grid;gap:2px;font-size:var(--t-ui)}
.dl-fact b{font-weight:500}
.dl-fact span{color:var(--muted);font-size:var(--t-small)}
.dl-quote{margin:0 0 14px;padding:2px 0 2px 12px;border-left:2px solid var(--line-2);color:var(--ink-2);font-size:var(--t-small);line-height:1.5}
.dl-how{margin:0 0 14px;font-size:var(--t-ui);line-height:1.55;color:var(--ink-2)}
.dl-steps{margin:0 0 14px;padding-left:20px;font-size:var(--t-ui);line-height:1.55;color:var(--ink-2)}
.dl-steps li{margin:3px 0}
.dl-sheet .ap-amend{margin:0 0 14px;padding:12px 14px;border-radius:11px;box-shadow:inset 0 0 0 1px var(--line);font-size:var(--t-small)}
.dl-working{margin:0 0 14px;font-size:var(--t-small);color:var(--ink-2)}
.dl-working summary{cursor:pointer;color:var(--muted)}
.dl-working ul{margin:6px 0 0;padding-left:18px;line-height:1.55;font-variant-numeric:tabular-nums}
/* Bank holidays (bankholidays.js): Follow-ups' rows, with a tick box for the approver and the amount on the right */
.bh-page>.summary{margin-bottom:14px}
.bh-year{width:auto;height:34px;padding:4px 30px 4px 12px}
.bh-pick{flex:0 0 auto;width:16px;height:16px;margin:0;accent-color:var(--accent);cursor:pointer}
.bh-fig{flex:0 0 auto;font-size:var(--t-small);color:var(--ink-2);font-variant-numeric:tabular-nums}
.dl-when-h .bh-all{float:right;margin:0;font-weight:400}
.bh-periods .dl-row{cursor:default}
.bh-facts{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;margin:0 0 16px;font-size:var(--t-ui)}
.bh-facts dt{color:var(--muted)}
.bh-facts dd{margin:0}
.bh-days{list-style:none;margin:0 0 12px;padding:0}
.bh-days li{display:grid;grid-template-columns:1fr auto 190px;align-items:center;gap:4px 14px;padding:7px 0;border-top:1px solid var(--line);font-size:var(--t-ui)}
.bh-days li>.btn{grid-column:3;justify-self:start}
.bh-d{display:grid;gap:1px;min-width:0}
.bh-d b{font-weight:500}
.bh-d small,.bh-h small{color:var(--muted);font-size:var(--t-small)}
.bh-h{font-variant-numeric:tabular-nums;text-align:right}
.bh-h small{margin-left:6px}
.bh-days .st{white-space:normal}
.bh-note{grid-column:1/-1;color:var(--warn);font-size:var(--t-small)}
.bh-list{list-style:none;margin:0 0 12px;padding:0;font-size:var(--t-ui)}
.bh-list li{display:flex;justify-content:space-between;gap:12px;padding:3px 0}
.bh-list li span:last-child{color:var(--ink-2);font-variant-numeric:tabular-nums}
@media (max-width:760px){.bh-days li{grid-template-columns:1fr auto}.bh-days .st,.bh-days li>.btn{grid-column:1/-1}}
.dl-propose{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;padding:10px 12px;border-radius:10px;background:var(--input-bg);font-size:var(--t-small);color:var(--ink-2)}
.dl-propose svg{width:14px;height:14px;vertical-align:-2px}
.dl-sheet .modal-acts .spacer{flex:1}
@media (max-width:760px){
  .dl-row{gap:12px;padding-left:14px}
  .dl-ago{display:none}
  .dl-bar{flex-basis:56px}
  .dl-pct{display:none}
  .dl-people{columns:1}
  .dl-course>summary{padding-left:14px}
}

/* ---------- Shared: the ⋯ menu and ⓘ explanations (Pop), summary lines, quiet notes ---------- */
.pop{position:fixed;z-index:80;min-width:200px;max-width:min(340px,calc(100vw - 24px));padding:6px;border-radius:13px;
  background:var(--glass-strong);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow);
  animation:pop-in .16s var(--ease) both}
@keyframes pop-in{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}
.pop-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:8px 10px;border-radius:8px;text-align:left;
  font:var(--t-ui) var(--font);color:var(--ink)}
.pop-item svg{color:var(--muted);width:15px;height:15px;flex:0 0 15px}
.pop-item .mark,.pop-item .mark svg{color:var(--accent)}
.pop-item:hover:not(:disabled),.pop-item:focus-visible{background:var(--hover);outline:0}
.pop-item:disabled{opacity:.4;cursor:default}
.pop-item.danger,.pop-item.danger svg{color:var(--danger)}
.pop-gap{width:15px}
.pop-info{padding:14px 16px;font-size:var(--t-small);line-height:1.55;color:var(--ink-2);max-width:min(360px,calc(100vw - 24px))}
.pop-info b{color:var(--ink);font-weight:500}
.pop-info p{margin:0 0 8px}.pop-info p:last-child{margin:0}
.pop-info dl{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0 0 10px}
.pop-info dt{color:var(--muted)}.pop-info dd{margin:0}
.more-btn[aria-expanded="true"],.info-btn[aria-expanded="true"]{background:var(--hover);color:var(--ink)}
.info-btn{width:28px;height:28px;border-radius:7px}
.summary{display:flex;flex-wrap:wrap;align-items:center;gap:4px 0;color:var(--ink-2);font-size:var(--t-ui)}
.summary>span:not(:last-of-type)::after{content:"·";margin:0 9px;color:var(--faint)}
.summary b{font-weight:600;color:var(--ink)}
.summary .late,.summary .late b{color:var(--danger)}
.summary .soon,.summary .soon b{color:var(--warn)}
.summary .good,.summary .good b{color:var(--ok)}
.summary .link{border:0;background:none;padding:0;color:var(--accent);font:inherit;cursor:pointer}
.sample-note{display:flex;align-items:center;gap:7px;margin:-10px 0 18px;color:var(--muted);font-size:var(--t-small)}
.sample-note svg{color:var(--warn)}

/* ---------- Header tabs: pages that belong together (This month, To approve, Payroll check; Checks, DBS) ---------- */
.top-tabs{display:flex;gap:2px;padding:3px;border-radius:11px;background:var(--hover);box-shadow:inset 0 0 0 1px var(--line);max-width:min(620px,70%);overflow-x:auto;scrollbar-width:none}
.top-tabs::-webkit-scrollbar{display:none}
.top-tab{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 13px;border-radius:9px;color:var(--muted);text-decoration:none;font:500 var(--t-small)/30px var(--font);white-space:nowrap;transition:color .2s,background .2s,box-shadow .2s}
.top-tab:hover{color:var(--ink)}
.top-tab.on,.ins-nav button.on,.db-seg .rp-chip.on{color:var(--ink);background:var(--glass-solid);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--line)}   /* = .set-tab.on */
.tab-n{min-width:18px;height:16px;padding:0 5px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font:600 10.5px/16px var(--font);text-align:center}
:root[data-glass="all"] .top-tabs{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow)}
/* Checks is the only red badge: legal deadlines */
.badge.bad{background:var(--danger-soft);color:var(--danger)}
.app.rail .badge.bad{background:var(--danger)}

/* ---------- This month and People: a row is a person, one line, its steps, and the next step's button ---------- */
.mo-list{padding:6px 0}
.mo-row{display:flex;align-items:center;gap:14px;padding:10px 12px 10px 18px;transition:background .15s;outline:0}
.mo-row.click{cursor:pointer}
.mo-row.click:hover,.mo-row.click:focus-visible{background:var(--hover)}
.mo-row.done .mo-main b{color:var(--ink-2)}
.panel>.panel-h+.mo-row{padding-top:4px}
.mo-main{flex:1;min-width:0;display:grid;gap:1px}
.mo-main b{font-weight:500;color:var(--ink);font-size:var(--t-ui)}
.mo-main>span{color:var(--muted);font-size:var(--t-small);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mo-main>span svg{width:12px;height:12px;vertical-align:-2px}
.mo-steps{display:flex;gap:2px 14px;flex-wrap:wrap;margin-top:4px}
.st{display:inline-flex;align-items:center;gap:5px;font-size:12px;line-height:18px;white-space:nowrap;color:var(--muted)}
.st svg{width:11px;height:11px;color:var(--ok)}
.st-todo{color:var(--ink)}
.st-todo::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}
.st-later{color:var(--faint)}
.st-later::before{content:"";width:6px;height:6px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--faint)}
.st-failed{color:var(--danger)}
.mo-ok{color:var(--muted);font-size:var(--t-small);white-space:nowrap}
.mo-wait{margin:-10px 0 18px}
.mo-wait b{font-weight:600;color:var(--ink)}
.mo-row .btn{flex:0 0 auto}
.mo-done{margin-top:14px}
.mo-done summary{cursor:pointer;color:var(--muted);font-size:var(--t-small);margin-bottom:8px}
.mo-sheet .approve{margin:0}
.pe-search{display:flex;align-items:center;gap:8px;margin:0 0 14px}
.pe-search svg{width:16px;height:16px;color:var(--muted)}
.pe-search .input{flex:1}
@media (max-width:760px){
  .mo-row{flex-wrap:wrap;row-gap:8px}
  .mo-row .mo-main{flex-basis:100%}
  .mo-row .btn{margin-left:0}
  .top-tabs{max-width:calc(100vw - 150px)}
}

.page-acts{margin-left:auto;display:flex;gap:8px;align-items:center}

.mo-dates{margin-top:8px;font-size:var(--t-small)}
.mo-dates .past{color:var(--faint)}
.page-in.lt-page{max-width:1000px}     /* the letter and its paper preview side by side */
.page-h>div:first-child:not(.spacer){flex:1 1 0;min-width:min(100%,320px)}
.page-h>.spacer{flex:0 0 0}          /* the heading takes the room; the page's buttons stay on the right */
.page-h>.page-acts{align-self:flex-start;margin-top:6px}
.pe-none{margin:0;padding:4px 18px 16px;color:var(--muted);font-size:var(--t-small)}

/* Filters on a list (DBS) select like tabs: neutral, never red */
.db-seg{padding:3px;border-radius:11px;background:var(--hover);box-shadow:inset 0 0 0 1px var(--line);display:flex;gap:2px;flex-wrap:wrap}
.db-seg .rp-chip{box-shadow:none;border-radius:9px;color:var(--muted)}
.db-sum{margin:-8px 0 18px}

/* ---------- Insights: a brief, then one chapter at a time ---------- */
.kpis.four{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:900px){.kpis.four{grid-template-columns:repeat(2,minmax(0,1fr))}}
.find-list{padding:6px 0;margin:0 0 12px}
.find{display:flex;align-items:flex-start;gap:12px;width:100%;border:0;background:none;text-align:left;padding:11px 14px 11px 18px;color:var(--ink);cursor:pointer;transition:background .15s;font:inherit}
.find:hover,.find:focus-visible{background:var(--hover);outline:0}
.find-dot{flex:0 0 auto;width:8px;height:8px;margin-top:7px;border-radius:50%;background:var(--faint)}
.find.concern .find-dot{background:var(--warn)}
.find.good .find-dot{background:var(--ok)}
.find.watch .find-dot{background:var(--muted)}
.find-m{flex:1;min-width:0;display:grid;gap:2px}
.find-m b{font-weight:500;font-size:var(--t-ui)}
.find-m span{color:var(--muted);font-size:var(--t-small);line-height:1.45}
.find-go{flex:0 0 auto;margin-top:2px;color:var(--faint);transition:color .15s}
.find:hover .find-go{color:var(--ink)}
.find-more{display:block;border:0;background:none;padding:6px 18px 10px;color:var(--muted);font:inherit;font-size:var(--t-small);cursor:pointer}
.find-more:hover{color:var(--ink)}
.find-folds{display:grid;justify-items:start;gap:0;margin-top:4px}
.find-folds .find-list{justify-self:stretch}
.ins-story .story-h{margin-top:4px}
.ins-next{display:flex;align-items:center;gap:8px;margin:8px 0 0 auto;border:0;background:none;padding:10px 4px;color:var(--muted);font:inherit;font-size:var(--t-ui);cursor:pointer}
.ins-next b{font-weight:500;color:var(--ink)}
.ins-next:hover b{color:var(--accent)}
.ins-next svg{width:14px;height:14px}
.ins-bar .more-btn{margin-left:2px}

/* DBS list in a narrow window: each person becomes a compact row (name and result, then the certificate, consent and
   last check underneath), so nothing is squeezed into thin columns */
.db-table{container-type:inline-size}
@container (max-width:640px){
  .db-table table,.db-table tbody{display:block}
  .db-table tr:first-child{display:none}
  .db-table tr[data-id]{display:grid;grid-template-columns:24px minmax(0,1fr) auto;column-gap:10px;row-gap:3px;
    grid-template-areas:"pick who res" "pick cert cert" "pick cons last";padding:12px 14px 12px 16px;border-bottom:1px solid var(--line)}
  .db-table tr[data-id]:last-child{border-bottom:0}
  .db-table td{display:block;padding:0;border:0;width:auto!important}
  .db-table td:nth-child(1){grid-area:pick;padding-top:2px}
  .db-table td:nth-child(2){grid-area:who}
  .db-table td:nth-child(3){grid-area:cert;font-size:var(--t-small)}
  .db-table td:nth-child(3)>span{display:inline;margin-right:6px}
  .db-table td:nth-child(4){grid-area:cons;font-size:var(--t-small)}
  .db-table td:nth-child(4)>span{display:inline}
  .db-table td:nth-child(5){grid-area:last;font-size:var(--t-small);text-align:right;color:var(--muted)}
  .db-table td:nth-child(5)>span{display:inline;margin-left:4px}
  .db-table td:nth-child(6){grid-area:res;text-align:right}
  .db-table td:nth-child(4)::before{content:"Consent: ";color:var(--muted)}
  .db-table td:nth-child(5)::before{content:"Checked ";color:var(--muted)}
  .db-bar{flex-wrap:wrap}
  .db-bar .input{width:100%!important}
}
.ins-acts{display:flex;align-items:center;gap:6px;margin-left:auto}

/* ---------- Home: Today, one list of what is waiting on you (hr/today.py) ---------- */
.today-wrap{display:none;width:100%;max-width:768px;margin:28px auto 0}
body.is-home .today-wrap{display:block}
.today{padding:4px 0 8px;margin:0;animation:rise .8s .25s var(--ease) both}
.today-h{display:flex;align-items:baseline;gap:10px;padding:14px 18px 6px;flex-wrap:wrap}
.today-h h2{margin:0;font:600 var(--t-ui) var(--font)}
.today-n{color:var(--muted);font-size:var(--t-small)}
.today-n.late{color:var(--danger)}
.today-glance{color:var(--muted);font-size:var(--t-small);display:flex;align-items:baseline;flex-wrap:wrap}
.today-glance .link{border:0;background:none;padding:0;font:inherit;color:var(--ink-2);cursor:pointer}
.today-glance .link:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.today-glance .dot{margin:0 7px;color:var(--faint)}
.td-row{gap:12px}
.td-ic{flex:0 0 auto;width:30px;height:30px;border-radius:7px;display:grid;place-items:center;background:var(--hover);color:var(--muted)}
.td-ic svg{width:15px;height:15px}
.td-ic.late{background:var(--danger-soft);color:var(--danger)}
.td-ic.soon{background:var(--warn-soft);color:var(--warn)}
.td-when{flex:0 0 auto;color:var(--muted);font-size:var(--t-small);white-space:nowrap;font-variant-numeric:tabular-nums}
.td-when.late{color:var(--danger);font-weight:500}
.td-when.soon{color:var(--warn)}
.today-none{display:flex;align-items:center;gap:10px;padding:10px 18px 12px;color:var(--muted);font-size:var(--t-ui)}
.today-none svg{color:var(--ok);flex:none}
.today-more{display:block;border:0;background:none;padding:8px 18px 6px;color:var(--muted);font:var(--t-small) var(--font);cursor:pointer}
.today-more:hover{color:var(--ink)}
@media (max-width:760px){.today-wrap{margin-top:20px}.td-row{flex-wrap:nowrap}.td-row .mo-main{flex-basis:auto}}

/* ---------- While a page loads: its heading at once, then quiet placeholder rows ---------- */
.page-in.skel{animation:none}
.skel .page-h h1{min-height:1.15em}
.skel-list,.skel-sub,.skel-h{opacity:0;animation:skel-in .3s .15s var(--ease) forwards}
.skel-line{display:block;height:10px;border-radius:6px;background:var(--hover);position:relative;overflow:hidden}
.skel-line::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ink) 6%,transparent),transparent);animation:skel-shine 1.4s infinite}
.skel-h{width:220px;height:30px;border-radius:8px;display:inline-block}
.skel-sub{width:300px;max-width:70%;margin-top:12px}
.skel-list{padding:8px 0}
.skel-row{display:flex;align-items:center;gap:14px;padding:12px 18px}
.skel-row>div{flex:1;display:grid;gap:8px}
.skel-av{width:30px;height:30px;border-radius:7px;background:var(--hover);flex:none}
@keyframes skel-in{to{opacity:1}}
@keyframes skel-shine{to{transform:translateX(100%)}}
@media (prefers-reduced-motion:reduce){.skel-line::after{animation:none}}

/* ---------- One change, start to finish (change.js) ---------- */
.cg-back{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:var(--t-small);text-decoration:none;margin-bottom:10px}
.cg-back svg{width:13px;height:13px;transform:rotate(90deg)}
.cg-back:hover{color:var(--ink)}
.cg-what{margin-top:6px;color:var(--ink-2);font-size:var(--t-body)}
.cg-facts{margin-top:8px;font-size:var(--t-small)}
.cg-steps{list-style:none;margin:8px 0 0;padding:0;position:relative}
.cg-step{position:relative;display:grid;grid-template-columns:26px 1fr;gap:14px;padding:0 0 26px}
.cg-step:not(:last-child)::before{content:"";position:absolute;left:12px;top:26px;bottom:2px;width:1.5px;background:var(--line-2)}
.cg-mark{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--line-2);position:relative;z-index:1}
.cg-mark svg{width:13px;height:13px}
.cg-mark.done{background:var(--ok-soft);box-shadow:none;color:var(--ok)}
.cg-mark.todo{box-shadow:inset 0 0 0 1.5px var(--accent)}
.cg-mark.todo::after{content:"";width:9px;height:9px;border-radius:50%;background:var(--accent)}
.cg-mark.failed{background:var(--danger-soft);box-shadow:none;color:var(--danger)}
.cg-b{min-width:0;padding-top:2px}
.cg-t{display:grid;gap:2px}
.cg-t b{font-weight:500;font-size:var(--t-body);color:var(--ink)}
.cg-step.later .cg-t b{color:var(--muted)}
.cg-t span{color:var(--muted);font-size:var(--t-small)}
.cg-t .late{color:var(--danger)}
.cg-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.cg-acts:empty{display:none}
.cg-f{margin:12px 0 0;padding:12px 14px;border-radius:11px;background:var(--hover)}
.cg-more{margin-top:8px}
.cg-more>summary{cursor:pointer;color:var(--muted);font-size:var(--t-small);list-style:none;display:inline-flex}
.cg-more>summary::-webkit-details-marker{display:none}
.cg-more>summary:hover{color:var(--ink)}
.cg-more[open]>summary{margin-bottom:2px}
.cg-step .ap-amend{margin-top:12px}
.cg-chain{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:12px;font-size:var(--t-small)}
.cg-chain-l{color:var(--muted);margin-right:4px}
.cg-p{padding:3px 9px;border-radius:8px;background:var(--hover);color:var(--ink-2);white-space:nowrap}
.cg-p.last{box-shadow:inset 0 0 0 1px var(--line-2)}
.cg-p small{color:var(--muted);font-size:11px}
.cg-arrow{display:grid;color:var(--faint)}
.cg-arrow svg{width:11px;height:11px}
.cg-note{margin:8px 0 0;color:var(--muted);font-size:var(--t-small)}
.cg-link{display:flex;align-items:center;gap:8px;margin-top:10px;padding:8px 12px;border-radius:10px;background:var(--hover);color:var(--ink);text-decoration:none;font-size:var(--t-ui)}
.cg-link svg{width:15px;height:15px;color:var(--muted)}
.cg-link span{flex:1;min-width:0}
.cg-link small{color:var(--muted);font-size:var(--t-small)}
.cg-work{margin:6px 0 0;padding-left:18px;color:var(--ink-2);font-size:var(--t-small)}
.ap-open{margin-left:auto;display:inline-flex;align-items:center;gap:2px;font:500 var(--t-small) var(--font);color:var(--muted);text-decoration:none}
.ap-open svg{width:12px;height:12px}
.ap-open:hover{color:var(--accent)}
.cg-page .ap-open{display:none}

/* ---------- This month: whose payroll, and what's late ---------- */
.mo-due{font-size:12px;line-height:18px;color:var(--muted);white-space:nowrap;margin-left:auto;padding-left:8px}
.mo-due.late{color:var(--danger);font-weight:500}
.mo-dates-l{color:var(--ink-2)}
.mo-dates .soon{color:var(--warn)}

/* ---------- Payroll check: buttons by the heading, one filter look, keys ---------- */
.page-acts select.input{width:auto;height:36px;padding-top:0;padding-bottom:0}
.pay-sum{margin-top:8px}
.pay-sum .info-btn{margin-left:6px}
.pay-prog{height:3px;margin:-8px 0 16px}
.pay-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.pay-tools .rp-chip:disabled{opacity:.45;cursor:default}
.pay-keys{margin-left:auto;color:var(--faint);font-size:var(--t-caption)}
.pay-keys kbd{display:inline-block;min-width:18px;text-align:center;font:500 11px/18px var(--font);padding:0 4px;border-radius:5px;box-shadow:inset 0 0 0 1px var(--line-2);color:var(--muted);margin:0 2px 0 0}
.pay-sec .panel-h{border-bottom:0;padding-bottom:4px}
.pay-sec .items{padding:0 0 6px}
@media (max-width:760px){.pay-keys{display:none}}

/* ---------- To approve ---------- */
.ch-wait .approve{margin:0 0 14px}
.ch-mail-h{border-bottom:0;padding-bottom:4px}
.ch-mail-h .muted{font-size:var(--t-small)}
.ch-err{margin:4px 18px 8px}
.mo-main b.ch-subj{overflow-wrap:anywhere}

/* ---------- Follow-ups: the old backlog, cleared in one go ---------- */
.dl-clear{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:10px 18px 14px;font-size:var(--t-small)}

/* ---------- Lines that matter wrap to a second line instead of being cut off ---------- */
.mo-main>span,.dl-main>span{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}

/* ---------- History: every payroll change, month by month (history.js) ---------- */
.hi-sum{margin-top:8px;font-size:var(--t-small)}
.hi-sum .info-btn{margin-left:6px}
.hi-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px}
.hi-filters .hi-q{flex:1 1 260px;margin:0}
.hi-filters select.input{width:auto;max-width:220px;height:38px;padding-top:0;padding-bottom:0}
.hi-list{padding-bottom:6px}
.hi-st{flex:0 0 auto;font-size:var(--t-small);color:var(--muted);white-space:nowrap}
.hi-st.soon{color:var(--warn)}
.hi-left{font-weight:400;color:var(--muted);font-size:var(--t-caption);margin-left:4px}
.hi-kv{margin:4px 0 14px}
.hi-notes{max-height:320px;overflow:auto;white-space:pre-wrap}
.hi-sheet h2{margin-bottom:2px}
.ins-hist{margin:4px 0 28px}

/* ---------- List rows: the hover and focus tint is an inset rounded shape inside the panel (as in Claude's lists),
   never a square band running into the panel's rounded corners. Text stays 18px in, in line with the headings ---------- */
.panel .mo-row,.panel .dl-row,.dl-course>summary{margin:0 6px;padding-left:12px;padding-right:6px;border-radius:10px}
.find-list .find{width:calc(100% - 12px);margin:0 6px;padding-left:12px;padding-right:8px;border-radius:10px}
.items{padding:0 6px 6px}
.it-row{padding-left:12px;padding-right:12px;border-radius:10px}
.it-more{padding-left:52px}
@media (max-width:760px){.it-more{padding-left:12px}}
.dl-group .dl-when-h:not(:first-child){margin-left:18px;margin-right:18px;padding-left:0;padding-right:0}
.dl-course{border-top:0}

/* ---------- Settings: a grouped list down the side (like Claude's and macOS settings) ---------- */
.page-in.set-page{max-width:1080px}
.set-grid{display:grid;grid-template-columns:210px minmax(0,1fr);gap:36px;align-items:start}
.set-nav{position:sticky;top:76px;display:grid;gap:1px}
.set-g{margin:16px 10px 4px;font:500 var(--t-caption) var(--font);color:var(--muted);letter-spacing:.02em}
.set-i{display:block;padding:7px 10px;border-radius:8px;color:var(--ink-2);font:var(--t-ui) var(--font);text-decoration:none;transition:background .15s,color .15s}
.set-i:hover{background:var(--hover);color:var(--ink)}
.set-i.on{background:var(--glass-solid);color:var(--ink);font-weight:500;box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--line)}   /* = .top-tab.on */
.set-i:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.set-title{margin:2px 0 16px;font:500 var(--t-heading) var(--font);letter-spacing:-.01em}
.set-back{display:none}
.set-main{min-width:0}
@media (max-width:760px){
  .set-grid{grid-template-columns:1fr;gap:0}
  .set-nav{position:static}
  .set-page:not(.list-only) .set-nav{display:none}
  .set-page.list-only .set-main{display:none}
  .set-page.list-only .set-i{padding:11px 12px;font-size:var(--t-body)}
  .set-page.list-only .set-i.on{background:none;box-shadow:none;font-weight:400}
  .set-back{display:inline-flex;align-items:center;gap:4px;margin-bottom:10px;color:var(--muted);font-size:var(--t-small);text-decoration:none}
  .set-back svg{width:13px;height:13px;transform:rotate(90deg)}
}

/* A card already on screen doesn't replay its entrance when a streaming reply is redrawn (Chat.fill) */
.turn .ask.still,.turn .approve.still,.turn .letter-card.still{animation:none}

/* ---------- Learn: lessons you do in the app (tour.js) ---------- */
.tour{position:fixed;inset:0;z-index:75;pointer-events:none}
.tour-spot{position:fixed;border-radius:12px;box-shadow:0 0 0 2px var(--accent),0 0 0 9999px rgba(20,15,8,.28);transition:left .3s var(--ease),top .3s var(--ease),width .3s var(--ease),height .3s var(--ease),opacity .2s;opacity:0}
.tour-tip{position:fixed;inset:auto;margin:0;width:min(330px,calc(100vw - 24px));padding:14px 16px 12px;border:0;border-radius:14px;color:var(--ink);
  background:var(--glass-solid);box-shadow:var(--shadow-lg,0 18px 40px -12px rgba(0,0,0,.35)),inset 0 0 0 1px var(--line);font:var(--t-ui)/1.45 var(--font);transition:left .3s var(--ease),top .3s var(--ease)}
.tt-h{display:flex;align-items:center;justify-content:space-between;margin:-4px -6px 4px 0}
.tt-n{font-size:var(--t-caption);color:var(--muted)}
.tt-x svg{width:14px;height:14px}
.tt-t{display:block;font-weight:500;font-size:var(--t-body);margin-bottom:3px}
.tt-p{margin:0 0 12px;color:var(--ink-2)}
.tt-acts{display:flex;align-items:center;gap:8px}
.tt-wait{display:inline-flex;align-items:center;gap:6px;font-size:var(--t-small);color:var(--muted)}
.tt-wait .mark{width:16px;height:16px}
.tt-wait .mark.ov .ov-l{stroke-dasharray:1 1;animation:ov-draw 2.8s cubic-bezier(.45,.05,.4,1) infinite}
.tt-wait .mark.ov .ov-f{animation:ov-tint 2.8s ease-in-out infinite}
.tour-practice .tp-tag{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:8px;background:var(--warn-soft);color:var(--warn);font:500 var(--t-small) var(--font);margin-bottom:10px}
.tour-practice .tp-tag .mark{width:14px;height:14px;color:currentColor}
.tp-next{margin:14px 0 0;padding:12px 14px;border-radius:12px;background:var(--hover);color:var(--ink-2);font-size:var(--t-ui);line-height:1.5}
.tp-next svg{width:13px;height:13px;color:var(--ok);vertical-align:-1px}
.learn-offer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;padding:10px 14px;border-radius:14px;background:var(--accent-soft);color:var(--ink-2);font-size:var(--t-ui)}
.learn-offer .mark{width:18px;height:18px;flex:none}
.learn-offer span{flex:1 1 220px}
.learn-offer b{font-weight:500;color:var(--ink)}
.lr-intro{margin:0 0 14px}
.lr-list{padding:6px 0}
.td-ic.lr-done{background:var(--ok-soft);color:var(--ok)}
@media (prefers-reduced-motion:reduce){.tour-spot,.tour-tip{transition:none}.tt-wait .mark *{animation:none}}

.set-main .g-flow{margin-bottom:16px;padding:12px;gap:4px}
.set-main .g-node{min-width:0;padding:9px 10px}
.set-main .g-col{flex:1 1 0;min-width:0}
.set-main .g-node b{font-size:var(--t-small)}
.set-main .g-node span{font-size:12px}
@media (max-width:1100px){.set-main .g-flow{flex-direction:column;align-items:stretch}.set-main .g-arrow{transform:rotate(90deg);margin:0 auto}.set-main .g-col{grid-template-columns:1fr 1fr}}
/* This month › Payroll log sheet: emailing it folds away under one line */
.lg-email{margin:0 0 6px}
.lg-email summary{cursor:pointer;list-style:none;font-weight:600;font-size:var(--t-ui);color:var(--ink);padding:6px 0}
.lg-email summary::-webkit-details-marker{display:none}
.lg-email summary::before{content:'›';display:inline-block;margin-right:8px;color:var(--muted);transition:transform .15s}
.lg-email[open] summary::before{transform:rotate(90deg)}
.lg-email[open]{padding-bottom:6px}
.lg-sum{margin:2px 0 14px}
.lg-sum+.sample-note{margin:-6px 0 12px}
.lg-list{margin:0 0 14px;padding:4px 0}
.lg-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:6px 18px;font-size:var(--t-ui);color:var(--ink-2)}
.lg-row>span{display:flex;flex-direction:column;gap:2px}
.lg-row small{color:var(--warn);font-size:var(--t-small)}
.lg-row b{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}

/* ---------- Learn: the course of task videos (learn.js) ---------- */
.lv-next{display:flex;align-items:center;gap:20px;width:100%;padding:14px;margin:0 0 16px;border:0;border-radius:18px;text-align:left;font:inherit;color:inherit;cursor:pointer;
  background:color-mix(in srgb,var(--glass-bg) 80%,transparent);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);transition:background .15s}
.lv-next:hover,.lv-next:focus-visible{background:var(--hover);outline:0}
.lv-next-t{display:grid;gap:4px;min-width:0}
.lv-next-t b{font:500 var(--t-heading) var(--font);letter-spacing:-.015em;color:var(--ink)}
.lv-next-t>span{color:var(--muted);font-size:var(--t-small)}
.lv-eyebrow{color:var(--accent)!important;font-size:var(--t-caption)!important;font-weight:500;letter-spacing:.05em;text-transform:uppercase}
.lv-dur-t{font-variant-numeric:tabular-nums}
.lv-thumb{position:relative;flex:0 0 auto;width:112px;aspect-ratio:16/10;border-radius:8px;overflow:hidden;background:var(--hover);box-shadow:inset 0 0 0 1px var(--line)}
.lv-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.lv-thumb.big{width:min(280px,42%)}
.lv-dur{position:absolute;right:5px;bottom:5px;padding:1px 5px;border-radius:5px;background:rgba(20,20,19,.72);color:#fff;font-size:var(--t-caption);font-variant-numeric:tabular-nums}
.lv-play{position:absolute;inset:0;margin:auto;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:rgba(20,20,19,.62);color:#fff;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .2s var(--spring)}
.lv-play svg{width:20px;height:20px;margin-left:2px}
.lv-next:hover .lv-play{transform:scale(1.08)}
.lv-sum{gap:12px!important;margin:0 0 22px}
.lv-bar{flex:1 1 120px;max-width:240px;height:5px;border-radius:5px;background:var(--hover);overflow:hidden}
.lv-bar i{display:block;height:100%;border-radius:5px;background:var(--ok);transition:width .4s var(--ease)}
.lv-mod{margin:0 0 22px}
.lv-mod-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 2px 8px}
.lv-mod-h h2{margin:0;font:600 var(--t-ui) var(--font);letter-spacing:-.01em}
.lv-mod-h span{color:var(--muted);font-size:var(--t-small)}
.lv-mod-h span svg{color:var(--ok);vertical-align:-2px}
.lv-list{padding:6px}
.lv-row{width:100%;border:0;background:none;font:inherit;color:inherit;text-align:left;border-radius:10px;padding:8px 12px 8px 8px}
.lv-row.seen .mo-main b{color:var(--ink-2)}
.lv-tick{flex:0 0 22px;height:22px;border-radius:50%;display:grid;place-items:center;color:var(--ok)}
.lv-row.seen .lv-tick{background:var(--ok-soft)}
.modal-card.lv-card{width:min(980px,100%);padding:0;overflow:auto}
.lv-player{position:relative}
.lv-x{position:absolute;right:10px;top:10px;z-index:2;background:rgba(20,20,19,.55)!important;color:#fff!important;border-radius:50%}
.lv-screen{background:#141413;border-radius:22px 22px 0 0;overflow:hidden}
.lv-screen video{display:block;width:100%;aspect-ratio:16/10;background:#141413}
.lv-meta{display:flex;align-items:flex-start;gap:16px;padding:16px 22px 4px;flex-wrap:wrap}
.lv-meta-t{flex:1 1 300px;display:grid;gap:3px}
.lv-meta-t h2{margin:0}
.lv-meta-t .sub{margin:0}
.lv-acts{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lv-acts [data-lv="speed"]{font-variant-numeric:tabular-nums;min-width:40px;justify-content:center}
.lv-pulse{animation:lv-pulse 1.4s var(--ease) 2}
@keyframes lv-pulse{50%{box-shadow:0 0 0 6px var(--accent-ring)}}
.lv-chaps{padding:8px 16px 18px;display:grid;gap:1px}
.lv-ch-h{padding:8px 6px 6px;color:var(--muted);font-size:var(--t-small)}
.lv-ch{display:flex;gap:14px;align-items:baseline;padding:7px 10px;border:0;border-radius:10px;background:none;font:inherit;font-size:var(--t-ui);color:var(--ink-2);text-align:left;cursor:pointer}
.lv-ch:hover,.lv-ch:focus-visible{background:var(--hover);outline:0}
.lv-ch.on{background:var(--accent-soft);color:var(--ink)}
.lv-t{flex:0 0 38px;color:var(--muted);font-size:var(--t-small);font-variant-numeric:tabular-nums}
.lv-ch.on .lv-t{color:var(--accent)}
@media (max-width:640px){.lv-next{flex-direction:column;align-items:stretch}.lv-thumb.big{width:100%}.lv-thumb{width:84px}.lv-screen{border-radius:0}}
@media (prefers-reduced-motion:reduce){.lv-pulse{animation:none}.lv-play{transition:none}}

/* Starters and leavers (starters.js): one checklist per person, a sheet per task */
.st.sl-late,.dl-main>span.sl-late{color:var(--warn)}
.sl-tasks{margin:0 -6px 6px}
.sl-task{display:flex;align-items:center;gap:12px;padding:8px 6px 8px 8px;border-radius:10px;cursor:pointer;outline:0;transition:background .15s}
.sl-task:hover,.sl-task:focus-visible{background:var(--hover)}
.sl-task .dl-main b,.sl-task .dl-main span{white-space:normal}
.sl-task.done .dl-main b{color:var(--muted);font-weight:400}
.sl-task .dl-tick{flex:0 0 auto;width:26px;height:26px;border-radius:50%}
.sl-task .dl-tick.on{background:var(--ok-soft);color:var(--ok);box-shadow:none}
.sl-task .btn{flex:0 0 auto}
.sl-go{width:18px;color:var(--faint)}
.sl-go svg{width:13px;height:13px}
.sl-back{display:inline-flex;align-items:center;gap:4px;margin:0 0 10px;padding:0;border:0;background:none;color:var(--muted);font:inherit;font-size:var(--t-small);cursor:pointer}
.sl-back svg{width:13px;height:13px;transform:rotate(90deg)}
.sl-back:hover{color:var(--ink)}
.sl-sent{margin:0 0 12px;font-size:var(--t-small)}
.sl-mail-acts{display:flex;flex-wrap:wrap;gap:8px;margin:-2px 0 14px}
.sl-mail-acts .spacer{flex:1}
.sl-page>.summary{margin-bottom:14px}

/* Rules (rules.js): HR's own "when this happens, tell them" */
.rl-page>.panel+.panel{margin-top:14px}
.rl-page .dl-date svg{width:17px;height:17px}
.rl-page .dl-row .btn{flex:0 0 auto}
.rl-from{margin:-8px 0 14px;font-size:var(--t-small)}
.rl-tell{display:grid;grid-template-columns:1fr 1fr;gap:2px 16px;margin-top:4px}
.rl-tell .check small{margin-left:4px}
@media (max-width:640px){.rl-tell{grid-template-columns:1fr}}

/* Missing in BambooHR (gaps.js): one folding row per check, its people inside */
.gp-page>.summary{margin-bottom:14px}
.gp-page .panel+.panel{margin-top:14px}
.gp-count{flex:0 0 auto;min-width:28px;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:var(--t-ui)}
.gp-count.fix{color:var(--ink);font-weight:500}
.gp-was{margin:0 0 8px;font-size:var(--t-small)}
.gp-list{list-style:none;margin:0 0 6px;padding:0}
.gp-p{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:var(--t-small)}
.gp-n{flex:1;min-width:0;display:grid}
.gp-n b{font-weight:500}
.gp-n small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gp-p .btn{flex:0 0 auto}
@media (max-width:640px){.gp-n small{white-space:normal}}

/* Settings › overlap: the two modes */
.radio-row{display:flex;align-items:flex-start;gap:10px;padding:9px 10px;margin:0 -10px;border-radius:10px;cursor:pointer}
.radio-row:hover{background:var(--hover)}
.radio-row input{margin-top:3px;accent-color:var(--accent)}
.radio-row span{display:flex;flex-direction:column;gap:2px}
.radio-row b{font-weight:500;color:var(--ink)}
.radio-row small{font-size:var(--t-small);color:var(--muted)}
.sub-h{font:500 var(--t-ui) var(--serif);color:var(--ink);margin:20px 0 6px}

/* Prepare the month (agents.js) */
.ag-ask .ask{margin:6px 0 10px}
.ag-steps{list-style:none;margin:4px 0 18px;padding:0;display:grid;gap:6px}
.ag-step{display:flex;align-items:flex-start;gap:9px;font-size:var(--t-ui);color:var(--ink-2)}
.ag-step>svg{flex:0 0 auto;margin-top:3px;width:13px;height:13px;color:var(--ok)}
.ag-step.live{color:var(--ink)}
.ag-step span{display:grid;gap:1px}
.ag-step small{color:var(--muted);font-size:var(--t-small)}
.ag-spin{flex:0 0 auto;width:13px;height:13px;margin-top:3px;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--accent);animation:ag-spin .8s linear infinite}
@keyframes ag-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ag-spin{animation:none}}
.ag-done-steps{margin:0 0 14px}
.ag-said{display:flex;gap:9px;align-items:flex-start;margin:4px 0 16px;font-size:var(--t-body);line-height:1.5;color:var(--ink)}
.ag-said .mark{flex:0 0 auto;width:18px;height:18px;margin-top:2px;color:var(--accent)}
.ag-group{margin-bottom:8px}
.ag-row.done .dl-main b{color:var(--muted);font-weight:400}
.ag-all{display:flex;align-items:center;gap:7px;padding:12px 18px;color:var(--muted);font-size:var(--t-small)}
.ag-all svg{color:var(--ok)}

.ag-away{margin-bottom:14px}
.ag-away ul{list-style:none;margin:0;padding:10px 18px;display:grid;gap:5px;font-size:var(--t-ui)}
.ag-away b{font-weight:500;display:inline-block;min-width:22px}

.rp-words{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:2px 0 14px;font-size:var(--t-small);color:var(--muted)}
.rp-words a{display:inline-flex;align-items:center;gap:6px;font-weight:500;color:var(--accent);text-decoration:none}
.rp-words a:hover{text-decoration:underline}

.pf-what{font-size:var(--t-body);line-height:1.5;margin:6px 0 12px}
.pf-q{margin:0 0 12px}
.pf-q blockquote{margin:4px 0 0;padding:10px 14px;border-left:3px solid var(--line-2);background:var(--hover);border-radius:0 10px 10px 0;font-size:var(--t-ui);line-height:1.5;color:var(--ink-2)}
.pf-not{margin:8px 0}

/* ==========================================================
   Calmer (Nov 2026, docs/design/calmer-plan.html, after ElevenLabs)
   Black and grey by default; red only for pay or the law; light
   large headings; soft grey surfaces without borders; rows straight
   on the page; black pill buttons (red stays for the mark and the
   current step). Glass and the backgrounds stay as Appearance choices.
   ========================================================== */
.link{border:0;background:none;padding:0;font:inherit;color:var(--ink-2);cursor:pointer;text-decoration:none}
.link:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.link.muted{color:var(--muted)}
/* Buttons: pills; the main one black, the rest outlined */
.btn,.btn.sm{border-radius:999px}
.btn{box-shadow:inset 0 0 0 1px var(--line-2);background:transparent}
:root[data-glass="all"] .btn:not(.primary):not(.ghost){background:color-mix(in srgb,var(--input-bg) 70%,transparent)}
.btn.sm{height:32px;padding:0 14px}
/* Headings: Geist Light, large; explanations behind an ⓘ */
.page-h h1{font:300 var(--t-display)/1.1 var(--font);letter-spacing:-.035em}
.page-h h1 .h-info{display:inline-grid;vertical-align:middle;margin-left:6px;width:28px;height:28px;color:var(--faint)}
.page-h{margin-bottom:20px}
.page-h .summary{margin-top:8px;color:var(--muted)}
/* Panels: a soft grey surface, no border or shadow; a panel that only holds rows disappears */
.panel{background:var(--surface);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:16px}
.panel-h{border-bottom:0;padding:14px 18px 4px}
.panel:has(>.mo-row,>.dl-row,>.dl-when-h,>.skel-row),.panel.mo-list,.panel.dl-group,.panel.skel-list{background:none;border-radius:0}
.panel:has(>.mo-row,>.dl-row,>.dl-when-h)>.panel-h,.panel.dl-group>.panel-h{padding-left:6px}
.panel .mo-row,.panel .dl-row{margin:0;padding-left:8px}
:root[data-glass="all"] .panel{background:color-mix(in srgb,var(--surface) 60%,transparent)}
/* Dates are a column of text, not a tile */
.dl-date{width:58px;height:auto;border-radius:0;display:flex;align-items:baseline;gap:4px;place-content:normal;text-align:left;background:none;color:var(--ink-2)}
.dl-date b{font:500 var(--t-small)/1.2 var(--font);letter-spacing:0;font-variant-numeric:tabular-nums}
.dl-date small{font-size:var(--t-small);text-transform:none;letter-spacing:0;margin:0;color:inherit}
.dl-date.late,.dl-date.soon{background:none}
.dl-date.late{color:var(--danger)}
.dl-date.soon{color:var(--warn)}
/* Counts are plain numbers, never coloured badges */
.badge,.badge.bad,.sec-n{background:none;color:var(--muted);font:500 12px/18px var(--font);font-variant-numeric:tabular-nums;min-width:0;padding:0}
.nav-item.on .badge{color:var(--ink-2)}
.app.rail .badge{display:none}
.nav-sub{margin-left:auto;color:var(--faint);font-size:12px}
.side-pages{padding-top:6px;margin-bottom:10px}
/* Banners that remain (errors, a step in progress) are quiet grey, the word in colour carries the tone */
.banner{background:var(--surface)}
.banner.warn,.banner.bad{background:var(--surface)}
.toast-act{border:0;background:none;padding:0 0 0 10px;font:500 var(--t-ui) var(--font);color:var(--ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.toast.has-act{pointer-events:auto}

/* ---------- To do and Today's rows: date · name and line · kind · one action ---------- */
.td2-row{display:flex;align-items:center;gap:16px;padding:10px 8px;border-radius:10px;cursor:pointer;outline:0;transition:background .15s}
.td2-row:hover,.td2-row.sel,.td2-row:focus-visible{background:var(--hover)}
.td2-d{flex:0 0 92px;font-size:var(--t-small);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td2-d.late{color:var(--danger);font-weight:500}
.td2-d.soon{color:var(--warn)}
.td2-main{flex:1;min-width:0;display:grid;gap:2px}
.td2-main>b{font:500 var(--t-body)/1.3 var(--font);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.td2-main>span{color:var(--muted);font-size:var(--t-ui);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.td2-k{flex:0 0 auto;color:var(--faint);font-size:var(--t-small);white-space:nowrap}
.td2-row .btn{flex:0 0 auto;min-width:88px}
.td2-g{margin-top:18px}
.td2-h{display:flex;align-items:baseline;gap:8px;padding:0 8px 4px}
.td2-h h2{margin:0;font:500 var(--t-ui) var(--font);color:var(--ink)}
.td2-h .n,.td2-filter .n,.pay-h .n{color:var(--faint);font-size:var(--t-small);font-variant-numeric:tabular-nums}
.td2-h .link{margin-left:auto;font-size:var(--t-small);color:var(--muted)}
.td2-filter{margin-top:14px}
.td2-filter .rp-chip.on .n{color:var(--muted)}
.td2-keys{margin:28px 8px 0;color:var(--faint);font-size:var(--t-small)}
.td2-keys kbd{margin:0;padding:1px 5px;border-radius:5px;background:var(--surface);color:var(--muted)}
.td2-empty{padding-top:56px}
.td2-empty>svg{color:var(--ok)}
@media (max-width:760px){
  .td2-row{flex-wrap:wrap;gap:4px 12px}
  .td2-d{flex-basis:100%;order:-1}
  .td2-k{display:none}
}

/* ---------- Today: the payroll's next step, then five things ---------- */
.pay-line{display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:16px;background:var(--surface);margin:0 0 22px;animation:rise .8s .2s var(--ease) both}
.pay-line>div{flex:1;min-width:0}
.pay-line h2{margin:0 0 3px;font:500 var(--t-body)/1.3 var(--font)}
.pay-line p{margin:0;color:var(--muted);font-size:var(--t-ui)}
:root[data-glass="all"] .pay-line{background:var(--glass-read);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter)}
.today{background:none;box-shadow:none}
.today-h{padding:0 8px 6px}
.today-h .link{font-size:var(--t-small);color:var(--muted)}
.today-none{padding:10px 8px}
p.today-glance{margin:14px 8px 0}
.learn-line{display:flex;align-items:center;gap:8px;margin:14px 8px 0;color:var(--muted);font-size:var(--t-small)}
.learn-line .mark{width:16px;height:16px;color:var(--accent)}
.learn-line>span{flex:1}
.chips.suggest:empty{display:none}
.chips.suggest .chip{border-radius:999px}
@media (max-width:760px){.pay-line{flex-wrap:wrap}.pay-line .btn{width:100%}}

/* ---------- Payroll: the six steps ---------- */
.pay-steps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;margin:4px 0 30px;border-top:1px solid var(--line)}
.pay-step{display:grid;gap:3px;align-content:start;text-align:left;border:0;background:none;padding:12px 8px 6px 0;margin-top:-1px;border-top:2px solid transparent;cursor:pointer;color:var(--muted)}
.pay-step .ps-t{display:flex;align-items:center;gap:5px;font:500 var(--t-ui)/1.3 var(--font);color:var(--ink-2)}
.pay-step .ps-t svg{width:13px;height:13px;color:var(--ok)}
.pay-step .ps-l{font-size:var(--t-small);line-height:1.35}
.pay-step.done .ps-t{color:var(--muted)}
.pay-step.now{border-top-color:var(--accent)}
.pay-step.now .ps-t{color:var(--ink)}
.pay-step:hover .ps-t{color:var(--ink)}
.pay-h{display:flex;align-items:baseline;gap:8px;padding:0 8px 6px;flex-wrap:wrap}
.pay-h h2{margin:0;font:500 var(--t-ui) var(--font)}
.pay-h .mo-wait{margin-left:auto;font-size:var(--t-small)}
.mo-list .mo-row{padding-left:8px;border-radius:10px}
@media (max-width:760px){.pay-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- A person ---------- */
.pe-tabs{margin:0 0 18px;width:fit-content}
.pe-grid{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:28px;align-items:start}
.pe-grid.one{grid-template-columns:minmax(0,1fr)}
.pe-ev{display:flex;gap:16px;padding:10px 8px;border-radius:10px;outline:0}
.pe-ev.click{cursor:pointer}
.pe-ev.click:hover,.pe-ev:focus-visible{background:var(--hover)}
.pe-ev-d{flex:0 0 92px;font-size:var(--t-small);color:var(--muted);font-variant-numeric:tabular-nums;padding-top:2px}
.pe-ev-d.ahead{color:var(--ink-2);font-weight:500}
.pe-ev .td2-main>span{white-space:normal}
.pe-side{padding:18px;border-radius:16px;background:var(--surface);position:sticky;top:76px}
.pe-side h2{margin:0;font:500 var(--t-body) var(--font)}
.pe-side>p{margin:2px 0 12px;font-size:var(--t-small)}
.pe-task{display:flex;gap:10px;align-items:flex-start;padding:6px 0;font-size:var(--t-ui);color:var(--ink-2)}
.pe-task.done{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--faint)}
.pe-task.next{color:var(--ink);font-weight:500}
.pe-task small{display:block;font-weight:400;color:var(--muted);font-size:var(--t-small)}
.pe-task small.late{color:var(--danger)}
.pe-tick{flex:0 0 auto;width:16px;height:16px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--line-2);display:grid;place-items:center;margin-top:2px}
.pe-task.done .pe-tick{background:var(--ink);box-shadow:none;color:var(--bg)}
.pe-tick svg{width:10px;height:10px}
.pe-more{margin:2px 0 12px 26px;font-size:var(--t-small)}
.pe-side .btn{margin-top:10px;width:100%}
.pe-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}
.pe-facts>div{padding:14px 16px;border-radius:14px;background:var(--surface);display:grid;gap:4px}
.pe-facts span{font-size:var(--t-small);color:var(--muted)}
.pe-facts b{font:300 22px/1.2 var(--font);letter-spacing:-.02em}
.pe-note{color:var(--ink-2);margin:0 0 14px}
.pe-h3{margin:24px 8px 6px;font:500 var(--t-ui) var(--font)}
@media (max-width:760px){.pe-grid{grid-template-columns:1fr}.pe-side{position:static}.pe-facts{grid-template-columns:1fr}}

/* ---------- Settings: the setup checklist ---------- */
.set-todo{display:flex;align-items:center;gap:10px;padding:8px 0;color:var(--ink);text-decoration:none}
.set-todo>span:nth-child(2){flex:1}
.set-todo svg{color:var(--faint)}
.set-todo:hover>span:nth-child(2){text-decoration:underline;text-underline-offset:3px}
/* The composer: Send is black like every main button; the focus ring is neutral; the dictation buttons only while dictating */
.send{background:var(--ink);color:var(--bg);border-radius:999px}
.send.dict-btn{display:none}
.composer.dictating .send.dict-btn{display:grid}
.composer:focus-within{box-shadow:var(--glass-shadow),0 0 0 4px color-mix(in srgb,var(--ink) 7%,transparent)}
.td2-filter .rp-chip{gap:6px}
.pe-ev-d{flex-basis:112px}
.panel-h+.panel-b{padding-top:6px}
