/* Apostle Hub - design language: monochrome + sage, Cormorant display, Inter UI, Georgia reading. */
:root{
  --canvas:#f5f5f4; --surface:#ffffff; --ink:#141414; --ink-soft:#5f5f5c; --ink-faint:#8a8a86;
  --line:#e7e7e3; --fill:#efefec; --fill-hover:#e6e6e2;
  --accent:#4a5d4f; --accent-ink:#ffffff; --wash:#eaefe9;
  --good:#1f6540; --good-bg:#e6f0ea; --warn:#6d4a0f; --warn-bg:#f3ecdc; --bad:#a8433a; --bad-bg:#f2e3e1;
  --radius:16px; --r-btn:10px; --r-pill:999px;
  --shadow:0 1px 2px rgba(20,20,20,.04),0 10px 30px rgba(20,20,20,.05);
  --font-display:'Cormorant Garamond',Georgia,serif;
  --font-read:Georgia,'Cormorant Garamond',serif;
  --font:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--font);
  font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3{margin:0;font-family:var(--font-display);letter-spacing:0;font-weight:600}
.muted{color:var(--ink-soft)}
.error{color:var(--bad)}
button{font:inherit;cursor:pointer;color:inherit}
a{color:var(--accent)}

/* Login */
.login{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:34px;width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.login-card h1{font-size:30px}
.login-brand{background:var(--ink);border-radius:12px;padding:14px 16px;align-self:flex-start;margin-bottom:4px}
.login-brand img{display:block;width:150px;height:auto}
.login-card label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--ink-soft)}
.login-card input{padding:11px 12px;border:1px solid var(--line);border-radius:var(--r-btn);font:inherit;font-size:15px;color:var(--ink)}
.login-card input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.login-card button[type=submit]{background:var(--accent);color:var(--accent-ink);border:0;
  padding:12px;border-radius:var(--r-pill);font-weight:600;margin-top:4px}

/* App shell */
.app{display:grid;grid-template-columns:250px 1fr;gap:20px;padding:20px;min-height:100vh;background:var(--canvas)}
.sidebar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  display:flex;flex-direction:column;gap:6px;padding:16px;box-shadow:var(--shadow);
  position:sticky;top:20px;height:calc(100vh - 40px)}
.side-top{display:flex;align-items:center}
.nav-toggle{display:none;background:transparent;border:0;color:var(--ink);padding:6px;
  border-radius:10px;cursor:pointer;line-height:0}
.nav-toggle:hover{background:var(--canvas)}
.brand{background:var(--ink);border:0;border-radius:12px;padding:16px 18px;margin-bottom:8px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;width:100%}
.brand-logo{width:100%;max-width:168px;height:auto;display:block}
.brand-tile{width:34px;height:34px;border-radius:10px;background:var(--ink);color:#fff;
  display:grid;place-items:center;font-family:var(--font-display);font-weight:600;font-size:17px}
#nav{display:flex;flex-direction:column;gap:3px;flex:1 1 auto;min-height:0;
  overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
#nav::-webkit-scrollbar{width:6px}
#nav::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
#nav button{text-align:left;background:transparent;border:0;padding:10px 12px;border-radius:10px;
  color:var(--ink);font-weight:500;font-size:14px}
#nav button:hover{background:var(--canvas)}
#nav button.active{background:var(--wash);font-weight:600}
.nav-sep{height:1px;background:var(--line);margin:7px 10px}
/* Collapsible groups */
.nav-group{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;
  background:transparent;border:0;padding:10px 12px;border-radius:10px;font:inherit;font-size:14px;
  font-weight:600;color:var(--ink);cursor:pointer}
.nav-group:hover{background:var(--canvas)}
.nav-group.active{background:var(--wash)}
.nav-group .caret{width:7px;height:7px;border:solid var(--ink-soft);border-width:0 1.5px 1.5px 0;
  transform:rotate(-45deg);transition:transform .15s;flex:0 0 auto;margin-left:8px}
.nav-group.open .caret{transform:rotate(45deg)}
.nav-children{display:none;flex-direction:column;gap:3px;margin:2px 0 4px 12px;padding-left:8px;
  border-left:1px solid var(--line)}
.nav-children.open{display:flex}
.nav-children button{font-size:13.5px}
/* Assets & links list (compact, left aligned) */
.linklist{display:flex;flex-direction:column}
.linkrow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.linkrow:last-child{border-bottom:0}
.linkrow a{font-weight:500}
.linkrow .linkval{margin-left:auto;color:var(--ink-soft)}
.linkrow .btn.sm{margin-left:auto}
.linkadd{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}
.linkadd .mini{flex:1;min-width:150px}
.linkadd .lk-cat{flex:0 0 130px;min-width:0}
.btn.sm{padding:6px 13px;font-size:13px}
.linkrow.linkedit{gap:8px;flex-wrap:wrap}
.linkedit .mini{flex:1;min-width:120px}
.linkedit .lk-cat{flex:0 0 120px;min-width:0}
.sidebar-foot{margin-top:auto;display:flex;flex-direction:column;gap:6px;padding:10px 8px 2px;
  border-top:1px solid var(--line)}
.link{background:none;border:0;color:var(--accent);text-align:left;padding:2px;font-size:13px;font-weight:600}

/* Content + always-on quick actions */
.main-col{min-width:0;display:flex;flex-direction:column}
.quickbar{display:flex;gap:10px;justify-content:flex-end;align-items:center;
  padding:6px 8px;margin-bottom:2px;position:sticky;top:20px;z-index:15;background:var(--canvas)}
.quickbar .qa{display:inline-flex;align-items:center;gap:8px;box-shadow:var(--shadow)}
.quickbar .qa svg{width:16px;height:16px}
.quickbar .qa.ghost{background:var(--surface)}
@media (max-width:820px){
  .quickbar{position:static;justify-content:stretch;padding:4px 2px 0;margin-bottom:6px}
  .quickbar .qa{flex:1;justify-content:center;padding:11px 10px}
}
.content{padding:8px 8px 60px;min-width:0}
.loading{color:var(--ink-soft)}
.view-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:22px}
.view-head h2{font-size:32px}
.grid{display:grid;gap:16px}
.cards{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}
.stat{display:flex;flex-direction:column;gap:4px}
.stat .n{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:32px;font-weight:700;line-height:1.05;letter-spacing:-.01em}
.stat .l{font-size:13px;color:var(--ink-soft)}

/* Tables */
table{width:100%;border-collapse:collapse;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
th,td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--line);font-size:14px}
th{color:var(--ink-soft);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:var(--canvas)}
tr:last-child td{border-bottom:0}

/* Pills */
.pill{display:inline-block;padding:3px 11px;border-radius:var(--r-pill);font-size:12px;font-weight:600}
.pill.pending{background:var(--warn-bg);color:var(--warn)}
.pill.approved,.pill.logged,.pill.done{background:var(--good-bg);color:var(--good)}
.pill.declined,.pill.cancelled,.pill.blocked{background:var(--bad-bg);color:var(--bad)}
.pill.todo,.pill.in_progress{background:var(--fill);color:var(--ink-soft)}
.pill.neutral{background:var(--fill);color:var(--ink-soft)}
.pill.solid{background:var(--ink);color:#fff}
.pill.stage-sales{background:var(--fill);color:var(--ink-soft)}
.pill.stage-signed{background:var(--warn-bg);color:var(--warn)}
.pill.stage-tech_audit{background:var(--wash);color:var(--accent)}
.pill.stage-handover_ready{background:var(--wash);color:var(--accent)}
.pill.stage-live{background:var(--good-bg);color:var(--good)}
.pill.acc-yes{background:var(--good-bg);color:var(--good)}
.pill.acc-no{background:var(--bad-bg);color:var(--bad)}
.pill.acc-na{background:var(--fill);color:var(--ink-soft)}
.pill.sev-high{background:var(--bad-bg);color:var(--bad)}
.pill.sev-medium{background:var(--warn-bg);color:var(--warn)}
.pill.sev-low{background:var(--fill);color:var(--ink-soft)}

/* Forms + buttons */
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:end}
.field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--ink-soft)}
.field input,.field select{padding:9px 11px;border:1px solid var(--line);border-radius:var(--r-btn);font:inherit;font-size:14px;color:var(--ink);background:var(--surface)}
.field input:focus,.field select:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.btn{background:var(--accent);color:var(--accent-ink);border:0;padding:9px 16px;border-radius:var(--r-pill);font-weight:600;font-size:14px}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.small{padding:6px 12px;font-size:13px}
.empty{color:var(--ink-soft);padding:28px;text-align:center;background:var(--surface);
  border:1px dashed var(--line);border-radius:var(--radius)}
.note{background:var(--wash);border:1px solid var(--line);border-radius:12px;padding:11px 14px;
  font-size:13px;color:var(--ink-soft);margin-bottom:18px}
/* Segmented filter (e.g. leave requests: Awaiting / Resolved / All) */
.seg{display:inline-flex;background:var(--fill);border-radius:var(--r-pill);padding:3px;gap:2px}
.seg-btn{background:transparent;border:0;padding:6px 14px;border-radius:var(--r-pill);
  font-size:13px;font-weight:600;color:var(--ink-soft);cursor:pointer;white-space:nowrap}
.seg-btn.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(20,20,20,.08)}
.req-head{align-items:center}

/* Onboarding record additions */
.sect{margin-bottom:16px}
.sect h3{margin-bottom:14px;font-size:22px}
.clickrow{cursor:pointer}
.clickrow:hover{background:var(--canvas)}
.badge{display:inline-block;padding:2px 9px;border-radius:7px;font-size:12px;font-weight:600}
.badge.good{background:var(--good-bg);color:var(--good)}
.badge.warn{background:var(--warn-bg);color:var(--warn)}
.chip{display:inline-block;padding:4px 11px;border-radius:var(--r-pill);background:var(--canvas);
  border:1px solid var(--line);font-size:13px;margin:0 2px 4px 0}
.chip.sm{padding:2px 8px;font-size:11px}
.kvgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.kv{display:flex;flex-direction:column;gap:2px;padding:9px 0;border-bottom:1px solid var(--line)}
.kv .k{font-size:12px;color:var(--ink-soft)}
.kv .v{font-size:14px;word-break:break-word}
.kv .v a{color:var(--accent)}
select.mini{padding:4px 7px;border:1px solid var(--line);border-radius:7px;font-size:12px;color:var(--ink);background:var(--surface)}

/* Knowledge base */
.kb-search{width:100%;max-width:380px;padding:10px 14px;border:1px solid var(--line);
  border-radius:var(--r-pill);font:inherit;font-size:14px;margin-bottom:18px;color:var(--ink);background:var(--surface)}
.kb-search:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.kb-group{margin-bottom:22px}
.kb-group h3{margin-bottom:12px;font-size:22px}
.kb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.kb-card{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;cursor:pointer}
.kb-card:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.kb-card.static{cursor:default}
.kb-card.static:hover{border-color:var(--line);box-shadow:none}
.kb-title{font-weight:600;font-size:15px}
.kb-snip{font-size:13px;color:var(--ink-soft);line-height:1.4}
.sop-body{line-height:1.65;font-family:var(--font-read);font-size:16px}
.sop-body p{margin:0 0 10px}
.sop-body ul{margin:0 0 10px;padding-left:20px}
.sop-body li{margin:4px 0}

/* Leave: insight layer */
.insight{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:20px}
.insight-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px;box-shadow:var(--shadow)}
.insight-lbl{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--ink-soft);font-weight:600;margin-bottom:10px}
.off-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.off-list li{display:flex;flex-direction:column;gap:1px}
.off-name{font-weight:600;font-size:14px}
.off-dates{font-size:12px;color:var(--ink-soft)}

/* Leave: balance cards (name on top, then days-left stat and taken/sick) */
.balcard{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;cursor:pointer;padding:18px}
.balcard:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.balcard-name{font:600 18px var(--font-display);color:var(--ink);line-height:1.1}
.balcard-stat{font-size:13.5px;color:var(--ink-soft)}
.balcard-stat b{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:22px;font-weight:700;color:var(--ink);margin-right:3px}
.balcard-sub{font-size:12.5px;color:var(--ink-faint)}
/* legacy balance-card bits, kept for safety */
.balcard-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:600}
.balcard-num{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:38px;font-weight:700;line-height:1;letter-spacing:-.02em}
.name-pill{margin-top:10px;background:var(--wash);color:var(--accent)}
td.reason{color:var(--ink-soft);font-size:13px;max-width:220px}

/* Sales: deal cards + activity history */
.deal{margin-bottom:16px}
.deal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.deal-head h3{font-size:22px}
.deal-right{display:flex;align-items:center;gap:10px;flex-shrink:0}
.deal-quote{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:19px;font-weight:700}
.pill.stage-deal{background:var(--wash);color:var(--accent)}
.deal-meta{display:flex;flex-wrap:wrap;gap:8px 16px;margin:12px 0;font-size:13px;align-items:center}
.deal-next{background:var(--fill);color:var(--ink);border-radius:var(--r-pill);padding:3px 12px;font-size:12px;font-weight:600}
.deal-next.overdue{background:var(--bad-bg);color:var(--bad)}
.acts{list-style:none;margin:12px 0 0;padding:14px 0 0;border-top:1px solid var(--line);
  display:flex;flex-direction:column;gap:12px}
.act{display:grid;grid-template-columns:130px 1fr;gap:12px;font-size:13px}
.act-date{color:var(--ink-faint);font-size:12px;white-space:nowrap}
.act-body{color:var(--ink)}
.act-body strong{font-weight:600}

/* Client: scope, priorities, deliverables, traffic light */
.sect-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.sect-head h3{margin-bottom:0}
.badge.lock,.badge{white-space:nowrap}
.scope-text{margin:0 0 8px;font-size:15px}
.scope-hint{font-size:12px;margin:0}
.prio{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.prio li{font-size:14px}
.kv.wide{margin-top:10px}
.warnbar{background:var(--bad-bg);color:var(--bad);border-radius:12px;padding:11px 14px;
  font-size:13px;font-weight:600;margin-bottom:14px}
.light{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600}
.light .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.light.good{color:var(--good)}.light.good .dot{background:var(--good)}
.light.warn{color:var(--warn)}.light.warn .dot{background:var(--warn)}
.light.bad{color:var(--bad)}.light.bad .dot{background:var(--bad)}
.light.neutral{color:var(--ink-soft)}.light.neutral .dot{background:var(--ink-faint)}

/* Pods: compact card grid, ~4 across on a wide screen */
.pods-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;align-items:start}
.pod-card{padding:18px;display:flex;flex-direction:column}
.pod-card-head{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}
.pod-card-head h3{font-size:20px}
.pod-members{list-style:none;margin:0 0 12px;padding:0 0 12px;display:flex;flex-direction:column;gap:6px;
  border-bottom:1px solid var(--line)}
.pod-members li{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.pm-name{font-weight:600;font-size:13px}
.pm-role{font-size:10px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}
.pod-clients{display:flex;flex-direction:column;gap:4px}
.pc-row{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;
  background:transparent;border:0;padding:7px 8px;border-radius:10px;cursor:pointer;width:100%}
.pc-row:hover{background:var(--canvas)}
.pc-name{font-weight:600;font-size:13px}
.pc-meta{display:flex;align-items:center;gap:8px;font-size:12px}
.pill.tiny{padding:2px 8px;font-size:10px}

/* Calendar */
.cal-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.cal-nav{display:flex;align-items:center;gap:8px}
.cal-title{font-size:24px;margin-left:6px}
.cal-legend{display:flex;gap:14px;flex-wrap:wrap}
.cal-legend .lg{font-size:11px;color:var(--ink-soft);display:flex;align-items:center;gap:6px}
.cal-legend .lg::before{content:"";width:11px;height:11px;border-radius:3px;background:var(--k-bg);display:inline-block}
/* kind colour tokens, shared by calendar chips + legend swatches */
.kind-leave{--k-bg:var(--wash);--k-fg:var(--accent)}
.kind-kickoff{--k-bg:var(--ink);--k-fg:#ffffff}
.kind-deliverable{--k-bg:var(--warn-bg);--k-fg:var(--warn)}
.kind-event{--k-bg:var(--fill);--k-fg:var(--ink-soft)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.cal-wd{background:var(--canvas);padding:8px 10px;font-size:11px;text-transform:uppercase;
  letter-spacing:.05em;color:var(--ink-faint);font-weight:600}
.cal-cell{background:var(--surface);min-height:104px;padding:6px 7px;display:flex;flex-direction:column;gap:3px}
.cal-cell.out{background:var(--canvas)}
.cal-cell.today{background:var(--wash)}
.cal-dn{font-size:12px;color:var(--ink-soft);font-weight:600}
.cal-cell.today .cal-dn{color:var(--accent)}
.cal-evs{display:flex;flex-direction:column;gap:3px;min-width:0}
.cal-ev{background:var(--k-bg);color:var(--k-fg);border-radius:6px;padding:2px 6px;font-size:11px;
  font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.cal-more{font-size:10px;color:var(--ink-faint);padding:0 4px}
.cal-panels{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.cal-cell.clickable{cursor:pointer}
.cal-cell.clickable:hover{background:var(--wash)}
.cal-cell.sel{outline:2px solid var(--accent);outline-offset:-2px;background:var(--wash)}
.cal-modes{margin-left:auto}
/* Day + week detail rows */
.cal-day,.cal-week{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:6px 18px;box-shadow:var(--shadow)}
.cal-ev-row{display:flex;align-items:flex-start;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}
.cal-ev-row:last-child{border-bottom:0}
.ce-dot{width:9px;height:9px;border-radius:50%;margin-top:5px;flex-shrink:0;background:var(--ink-faint)}
.cal-ev-row.kind-leave .ce-dot{background:var(--accent)}
.cal-ev-row.kind-kickoff .ce-dot{background:var(--ink)}
.cal-ev-row.kind-deliverable .ce-dot{background:var(--warn)}
.cal-ev-row.kind-event .ce-dot{background:var(--ink-faint)}
.ce-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.ce-title{font-weight:600;font-size:14px}
.ce-meta{font-size:12px;color:var(--ink-soft)}
.cal-week .cal-wk-day{padding:10px 0;border-bottom:1px solid var(--line)}
.cal-week .cal-wk-day:last-child{border-bottom:0}
.cal-wk-head{font-weight:600;font-size:13px;margin-bottom:4px}
.cal-wk-day.today .cal-wk-head{color:var(--accent)}
.cal-wk-empty{font-size:13px}
.cal-wk-day .cal-ev-row{border-bottom:0;padding:5px 0}
/* Week grid (days across, hourly slots down) */
.kind-training{--k-bg:#e6edf3;--k-fg:#3f5a74}
.cal-wkgrid-wrap{max-height:560px;overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-top:4px}
.cal-wkgrid{display:grid;grid-template-columns:52px repeat(7,minmax(96px,1fr));min-width:760px}
.wk-h{position:sticky;top:0;z-index:3;background:var(--surface);border-bottom:1px solid var(--line);border-left:1px solid var(--line);height:46px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.wk-corner{border-left:0}
.wk-wd{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}
.wk-dn{font-size:16px;font-weight:600;line-height:1}
.wk-col-head.today .wk-wd{color:var(--accent)}
.wk-col-head.today .wk-dn{color:var(--accent-ink);background:var(--accent);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center}
.wk-ad{position:sticky;top:46px;z-index:2;background:var(--canvas);border-bottom:1px solid var(--line);border-left:1px solid var(--line);min-height:34px;padding:4px}
.wk-adlab,.wk-tl{font-size:10px;color:var(--ink-faint);text-align:right;padding:5px 6px 0 0}
.wk-adlab{position:sticky;top:46px;z-index:2;background:var(--canvas);border-left:0}
.wk-tl{border-top:1px solid var(--line)}
.wk-slot{border-top:1px solid var(--line);border-left:1px solid var(--line);min-height:42px;padding:2px}
.wk-chip{display:block;font-size:11px;line-height:1.3;padding:2px 6px;border-radius:5px;margin-bottom:3px;background:var(--k-bg,var(--fill));color:var(--k-fg,var(--ink-soft));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}
.wk-chip.clickrow{cursor:pointer}
.wk-ev{display:block;font-size:11px;line-height:1.3;padding:2px 6px;border-radius:5px;background:var(--k-bg,var(--wash));color:var(--k-fg,var(--accent))}

/* Toast (write failures + confirmations) */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);
  color:#fff;padding:11px 18px;border-radius:var(--r-pill);font-size:13px;font-weight:600;
  box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:50;max-width:90vw}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.err{background:var(--bad)}

/* Visible keyboard focus on interactive rows/cards */
.clickrow:focus-visible,.balcard:focus-visible,.pc-row:focus-visible,.kb-card:focus-visible{
  outline:2px solid var(--accent);outline-offset:-2px}
#nav button.active{position:relative}

/* System Map: node canvas + guided walkthrough */
.sm-wrap{margin-top:10px}
.sm-viewport{position:relative;height:calc(100vh - 250px);min-height:520px;overflow:hidden;
  background:var(--canvas);border:1px solid var(--line);border-radius:var(--radius);cursor:grab}
.sm-viewport.grabbing{cursor:grabbing}
.sm-canvas{position:absolute;top:0;left:0;transform-origin:0 0}
.sm-edges{position:absolute;top:0;left:0;overflow:visible;pointer-events:none}
.sm-edge{fill:none;stroke:var(--line);stroke-width:2}
.sm-edge.internal{stroke:var(--accent);opacity:.45}
.sm-edge.dashed{stroke-dasharray:6 6;opacity:.65}
.sm-edge.active{stroke:var(--accent);stroke-width:3;opacity:1}
.sm-elabel{position:absolute;transform:translate(-50%,-50%);background:var(--canvas);
  padding:1px 6px;font:600 11px var(--font);color:var(--ink-soft);white-space:nowrap;border-radius:6px;pointer-events:none}
.sm-elabel.active{color:var(--accent);background:var(--wash)}
.sm-node{position:absolute;background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:13px 15px;box-shadow:var(--shadow);box-sizing:border-box;transition:box-shadow .25s,opacity .25s}
.sm-node .k{font:700 10.5px/1 var(--font);letter-spacing:.09em;text-transform:uppercase;color:var(--accent)}
.sm-node .t{font:600 21px/1.05 var(--font-display);color:var(--ink);margin-top:5px}
.sm-node .b{font:400 12.5px/1.35 var(--font);color:var(--ink-soft);margin-top:5px}
.sm-node.handover{border-color:var(--accent)}
.sm-node.warm{border:1.5px dashed var(--accent)}
.sm-node.core{border:2px solid var(--accent);background:var(--wash)}
.sm-node.core .t{font-size:24px}
.sm-node.dim{opacity:.3}
.sm-node.active{box-shadow:0 0 0 3px var(--accent),var(--shadow)}
.sm-ctrl{position:absolute;top:14px;right:14px;display:flex;gap:8px;align-items:center;z-index:5}
.sm-btn{width:34px;height:34px;border:1px solid var(--line);background:var(--surface);border-radius:9px;
  cursor:pointer;font-size:16px;color:var(--ink);box-shadow:var(--shadow)}
.sm-btn:hover{background:var(--wash)}
#sm-fit{width:auto;padding:0 12px;font-size:13px}
.sm-tourbar{position:absolute;left:16px;right:16px;bottom:16px;background:var(--surface);border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--shadow);padding:14px 18px;display:flex;align-items:center;gap:16px;z-index:6}
.sm-step{flex:1;font:400 15px/1.45 var(--font);color:var(--ink)}
.sm-tnav{display:flex;align-items:center;gap:8px}
.sm-prog{font:600 12px var(--font);color:var(--ink-soft);margin-right:4px}
@media (max-width:640px){
  .sm-tourbar{flex-direction:column;align-items:stretch;gap:10px;text-align:center}
  .sm-step{text-align:center}
  .sm-tnav{justify-content:center;flex-wrap:wrap;gap:8px}
  .sm-prog{width:100%;text-align:center;margin:0 0 2px}
}

/* Client Pulse: attention-ordered board */
.cp-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:16px 0 12px}
.cp-tile{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;cursor:pointer;box-shadow:var(--shadow);transition:border-color .15s,background .15s}
.cp-tile:hover{border-color:var(--accent)}
.cp-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.cp-tile.on{border-color:var(--accent);background:var(--wash)}
.cp-tile-n{font:700 28px/1 var(--font);font-variant-numeric:tabular-nums;color:var(--ink)}
.cp-tile-l{font-size:12px;color:var(--ink-soft)}
.cp-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 14px}
.cp-filters select{max-width:100%}
.cp-check{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-soft);cursor:pointer}
.cp-clear{background:none;border:0;padding:0;margin-left:6px;font:inherit;font-weight:600;color:var(--accent);cursor:pointer;text-decoration:underline}
.cp-board{container-type:inline-size;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.cp-row{position:relative;display:grid;grid-template-columns:minmax(180px,1.4fr) 72px 72px 72px minmax(200px,1.6fr);align-items:center;column-gap:16px;row-gap:10px;padding:14px 18px 14px 21px;background:var(--surface);border-top:1px solid var(--line);cursor:pointer;transition:background .12s}
.cp-row:first-child{border-top:0}
.cp-row:hover{background:var(--canvas)}
.cp-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.cp-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--line)}
.cp-row.sev-bad::before{background:var(--bad)}
.cp-row.sev-warn::before{background:var(--warn)}
.cp-row.off::before{background:transparent}
.cp-row.off{opacity:.62}
.cp-who,.cp-next,.cp-num{min-width:0}
.cp-who-top{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px}
.cp-name{font:600 18px/1.2 var(--font-display);color:var(--ink);overflow-wrap:anywhere}
.cp-sub{margin-top:3px;font-size:12px;color:var(--ink-soft);overflow-wrap:anywhere}
.cp-lab{display:block;font:700 10px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:3px}
.cp-num b{font:700 20px/1.1 var(--font);font-variant-numeric:tabular-nums;color:var(--ink)}
.cp-num b.warn{color:var(--warn)}
.cp-nx{display:flex;align-items:center;gap:8px;min-width:0;margin-top:3px;font-size:13px}
.cp-nx-t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--ink)}
.cp-nx .pill{flex:none;white-space:nowrap}
.cp-nx-d{flex:none;font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-soft)}
.cp-nx-d.late{color:var(--bad);font-weight:600}
.cp-empty-nx,.cp-none{font-size:13px;color:var(--ink-soft)}
.cp-none{grid-column:2 / -1}
@container (max-width:859px){
  .cp-row{grid-template-columns:minmax(0,1fr) 72px 72px 72px}
  .cp-next{grid-column:1 / -1}
  .cp-none{grid-column:2 / -1}
}
@media (max-width:640px){
  .cp-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .cp-tile{padding:12px 14px}
}
@container (max-width:560px){
  .cp-row{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:10px}
  .cp-who{grid-column:1 / -1}
  .cp-none{grid-column:1 / -1}
}

@media (max-width:820px){
  .cal-panels{grid-template-columns:1fr}
  .cal-cell{min-height:72px}
  .pods-grid{grid-template-columns:1fr 1fr}
  .app{grid-template-columns:1fr;padding:12px;gap:12px}
  /* Collapsed top bar: logo + hamburger, sticky; the menu drops down on tap. */
  .sidebar{position:sticky;top:8px;height:auto;flex-direction:column;gap:0;padding:10px 12px;z-index:30}
  .side-top{width:100%;justify-content:space-between}
  .brand{margin:0;padding:9px 12px;width:auto}
  .brand-logo{max-width:116px}
  .nav-toggle{display:flex}
  #nav{display:none}
  .sidebar.open #nav{display:flex;flex-direction:column;gap:2px;width:100%;margin-top:10px}
  .sidebar.open #nav button{padding:12px;font-size:15px}
  .sidebar-foot{display:none}
  .sidebar.open .sidebar-foot{display:flex;flex-direction:row;justify-content:space-between;
    align-items:center;width:100%;margin-top:8px;padding-top:10px;border-top:1px solid var(--line)}
  .content{padding:2px 2px 48px}
  /* Stack the view header so the title never gets squeezed into a wrap */
  .view-head{flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:16px}
  .view-head h2{font-size:24px}
  .sect h3,.kb-group h3,.deal-head h3{font-size:19px}
  .stat .n{font-size:28px}
  .balcard-num{font-size:32px}
  .card{padding:18px}
  /* 16px form controls stop iOS from auto-zooming (and never zooming back) on focus */
  input,select,textarea,.field input,.field select,.login-card input,.kb-search,select.mini{font-size:16px}
}

/* Phones: the 7-column month grid cannot fit, so fall back to the agenda lists
   ("On leave" + "Milestones") that already render below it; wide tables scroll. */
@media (max-width:640px){
  .pods-grid{grid-template-columns:1fr}
  /* Compact visual month grid: single-letter weekdays, events as colour dots. */
  .cal-title{font-size:20px;margin-left:0}
  .cal-wd{font-size:0;padding:6px 0;text-align:center}
  .cal-wd::first-letter{font-size:11px}
  .cal-cell{min-height:52px;padding:4px 3px;gap:2px}
  .cal-dn{font-size:11px}
  .cal-evs{flex-direction:row;flex-wrap:wrap;gap:3px;align-content:flex-start}
  .cal-ev{width:7px;height:7px;min-width:7px;max-width:7px;padding:0;border-radius:50%;
    font-size:0;line-height:0;overflow:hidden}
  .cal-ev.kind-leave{background:var(--accent)}
  .cal-ev.kind-kickoff{background:var(--ink)}
  .cal-ev.kind-deliverable{background:var(--warn)}
  .cal-ev.kind-event{background:var(--ink-faint)}
  .cal-more{font-size:9px;width:100%;color:var(--ink-faint)}
  .cal-legend{gap:12px;font-size:10px;width:100%}
  /* Plain tables (no .rtable) scroll horizontally instead of overflowing. */
  table:not(.rtable){display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
  /* Responsive tables reflow to stacked cards, no sideways scrolling. */
  .rtable{display:block;white-space:normal;overflow:visible;border:0;box-shadow:none;background:transparent}
  .rtable thead{display:none}
  .rtable tbody{display:block}
  .rtable tr{display:block;background:var(--surface);border:1px solid var(--line);border-radius:14px;
    padding:12px 15px;margin-bottom:10px;box-shadow:var(--shadow)}
  .rtable td{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
    padding:5px 0;border:0;white-space:normal;font-size:14px}
  .rtable td::before{content:attr(data-label);color:var(--ink-soft);font-weight:600;font-size:11px;
    text-transform:uppercase;letter-spacing:.04em;flex-shrink:0}
  .rtable td[data-label]{text-align:right}
  .rtable td.reason:empty,.rtable td:empty{display:none}
  .rtable td.row-actions{justify-content:flex-start;gap:8px;margin-top:6px;padding-top:8px;
    border-top:1px solid var(--line)}
  .rtable td.row-actions::before{display:none}
}

/* ===========================================================================
   Training booking + Tickets & ideas (features added 17AUG). All use existing
   tokens, symmetric padding, gap for spacing.
   =========================================================================== */

/* Calendar: training as a distinct muted-slate kind (leave keeps sage). */
.kind-training{--k-bg:#e3e8ef;--k-fg:#3b4a63}
.cal-ev-row.kind-training .ce-dot{background:#3b4a63}
@media (max-width:640px){ .cal-ev.kind-training{background:#3b4a63} }

/* Step headers (booking wizard) */
.step{display:flex;align-items:center;gap:9px;margin:0 0 14px}
.step-n{width:23px;height:23px;border-radius:50%;background:var(--accent);color:#fff;
  display:grid;place-items:center;font-size:12px;font-weight:700;flex-shrink:0}
.step h3{font-size:21px}

/* Trainer picker */
.tr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.tr-card{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;cursor:pointer}
.tr-card:hover{border-color:var(--accent)}
.tr-card.sel{border-color:var(--accent);background:var(--wash);box-shadow:var(--shadow)}
.tr-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tr-name{font-weight:600;font-size:15px}
.tr-role{font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em}
.tr-topics{font-size:13px;color:var(--ink-soft);line-height:1.4}

/* Day strip + slot grid */
.daystrip{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.day{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 14px;
  border:1px solid var(--line);border-radius:var(--r-btn);cursor:pointer;background:var(--surface);min-width:64px}
.day:hover{border-color:var(--accent)}
.day.sel{background:var(--wash);border-color:var(--accent)}
.day.off{opacity:.5;cursor:not-allowed;background:var(--canvas)}
.day .dow{font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em}
.day .dnum{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}
.day .dtag{font-size:10px;color:var(--accent);font-weight:600}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;max-width:560px}
.slot{padding:11px 8px;border:1px solid var(--line);border-radius:var(--r-btn);text-align:center;
  font-size:14px;font-weight:600;background:var(--surface);cursor:pointer;font-variant-numeric:tabular-nums}
.slot:hover{border-color:var(--accent)}
.slot.sel{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.slot.booked{background:var(--canvas);color:var(--ink-faint);text-decoration:line-through;
  cursor:not-allowed;border-style:dashed}

/* Availability toggle */
.toggle{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;cursor:pointer}
.toggle .sw{width:34px;height:20px;border-radius:999px;background:var(--fill);position:relative;flex-shrink:0}
.toggle.on .sw{background:var(--accent)}
.toggle .sw::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;
  background:#fff;transition:left .15s}
.toggle.on .sw::after{left:16px}
.toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}

/* Tickets: type / priority / status pills */
.pill.type-bug{background:var(--bad-bg);color:var(--bad)}
.pill.type-idea{background:var(--wash);color:var(--accent)}
.pill.type-task{background:var(--fill);color:var(--ink-soft)}
.pill.prio-high{background:var(--bad-bg);color:var(--bad)}
.pill.prio-medium{background:var(--warn-bg);color:var(--warn)}
.pill.prio-low{background:var(--fill);color:var(--ink-soft)}
.pill.st-open{background:var(--fill);color:var(--ink-soft)}
.pill.st-triaged{background:var(--warn-bg);color:var(--warn)}
.pill.st-in_progress{background:var(--wash);color:var(--accent)}
.pill.st-done{background:var(--good-bg);color:var(--good)}
.pill.st-parked{background:var(--fill);color:var(--ink-soft)}

/* Upvote control */
.vote{display:inline-flex;flex-direction:column;align-items:center;gap:0;border:1px solid var(--line);
  border-radius:10px;padding:4px 10px;background:var(--surface);font-weight:700;font-size:14px;
  line-height:1.05;font-variant-numeric:tabular-nums;cursor:pointer}
.vote:hover{border-color:var(--accent)}
.vote.sel{border-color:var(--accent);background:var(--wash)}
.vote .arw{font-size:10px;color:var(--accent);font-weight:700}
.vote .vlbl{font-size:9px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.tk-title{font-weight:600}
.tk-cell{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* Ticket detail two-column */
.detail-grid{display:grid;grid-template-columns:1fr 300px;gap:20px;align-items:start}
.commentbox{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:var(--r-btn);
  font:inherit;font-size:14px;color:var(--ink);background:var(--surface);min-height:70px;resize:vertical}
.commentbox:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
@media (max-width:820px){ .detail-grid{grid-template-columns:1fr} }
@media (max-width:640px){ input[type=time]{font-size:16px} }

/* Modal (raise a ticket, and future dialogs) */
.modal-backdrop{position:fixed;inset:0;background:rgba(20,20,20,.4);display:grid;place-items:center;
  z-index:100;padding:20px}
.modal{width:100%;max-width:520px;max-height:88vh;overflow:auto}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.modal-head h3{font-size:24px}
.modal-close{background:none;border:0;font-size:26px;line-height:1;color:var(--ink-soft);cursor:pointer;padding:0 4px}
.modal-close:hover{color:var(--ink)}

/* ---- Member profile: avatar + edit form (010) ---- */
.profile-head { display: flex; align-items: center; gap: 16px; }
.avatar { position: relative; width: 72px; height: 72px; border-radius: 50%;
  overflow: hidden; flex: 0 0 72px; background: var(--wash, #eaefe9);
  display: grid; place-items: center; }
.avatar[role="button"] { cursor: pointer; }
.avatar-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.avatar-fallback { font-family: "Cormorant Garamond", serif; font-weight: 600;
  font-size: 26px; color: var(--sage, #4a5d4f); }
.avatar-edit { position: absolute; left: 0; right: 0; bottom: 0; text-align: center;
  font-size: 10px; letter-spacing: .04em; text-transform: uppercase;
  background: rgba(30, 35, 33, .55); color: #fff; padding: 2px 0;
  opacity: 0; transition: opacity .15s; }
.avatar:hover .avatar-edit, .avatar:focus-visible .avatar-edit { opacity: 1; }
.pform { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px 16px; }
.pform .field { min-width: 0; }
.pform input, .pform select { width: 100%; font-size: 16px; }
.pform-actions { grid-column: 1 / -1; display: flex; gap: 10px; }
@media (max-width: 640px) {
  .profile-head { flex-wrap: wrap; }
  .profile-head #edit-profile { margin-left: 0 !important; }
}

/* ---- Profile tabs + onboarding checklist (011) ---- */
.tabs { display: flex; gap: 6px; margin: 4px 0 16px; border-bottom: 1px solid var(--line); }
.tab { background: transparent; border: 0; font: inherit; font-size: 14px; color: var(--ink-soft);
  padding: 8px 14px; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.tab.active { color: var(--ink); border-bottom-color: var(--sage, #4a5d4f); font-weight: 600; }
.ob-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.ob-progress-label { font-size: 13px; color: var(--ink-soft); }
.ob-bar { height: 6px; border-radius: 3px; background: var(--wash, #eaefe9); overflow: hidden; margin: 8px 0 6px; }
.ob-bar span { display: block; height: 100%; background: var(--sage, #4a5d4f); border-radius: 3px; transition: width .25s; }
.ob-cat { margin: 18px 0 6px; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); }
.ob-row { display: flex; align-items: center; gap: 12px; padding: 9px 2px; border-bottom: 1px solid var(--line); }
.ob-row:last-of-type { border-bottom: 0; }
.ob-tick { width: 26px; height: 26px; flex: 0 0 26px; border-radius: 50%; border: 1.5px solid var(--line);
  background: #fff; cursor: pointer; font-size: 14px; line-height: 1; color: #fff; display: grid; place-items: center; }
.ob-row.is-done .ob-tick { background: var(--sage, #4a5d4f); border-color: var(--sage, #4a5d4f); }
.ob-tick:disabled { cursor: default; opacity: .7; }
.ob-label { flex: 1; min-width: 0; }
.ob-row.is-done .ob-label { color: var(--ink-soft); }
.ob-date { border: 1px solid var(--line); border-radius: 8px; padding: 4px 6px; font: inherit; font-size: 16px; color: var(--ink-soft); }
.ob-date-ro { font-size: 13px; color: var(--ink-soft); white-space: nowrap; }
.ob-add { display: flex; gap: 8px; margin-top: 16px; flex-wrap: wrap; }
.ob-add input[name=label] { flex: 1; min-width: 180px; font-size: 16px; padding: 8px 10px;
  border: 1px solid var(--line); border-radius: 10px; font-family: inherit; }
.ob-add select { font: inherit; font-size: 16px; border: 1px solid var(--line); border-radius: 10px; padding: 8px; }
.who-link { display: flex; align-items: center; gap: 8px; background: transparent; border: 0;
  font: inherit; font-size: 13px; color: var(--ink-soft); cursor: pointer; padding: 4px 0; text-align: left; }
.who-link:hover { color: var(--ink); }
.who-avatar { width: 28px; height: 28px; border-radius: 50%; overflow: hidden; flex: 0 0 28px;
  background: var(--wash, #eaefe9); display: grid; place-items: center; font-size: 11px; font-weight: 600;
  color: var(--sage, #4a5d4f); }
.who-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 640px) { .ob-date { max-width: 130px; } }

/* ---- Hiring CRM (011) ---- */
.cand-detail > td { background: #fafbfa; padding: 16px 14px !important; }
.cand-grid { display: grid; grid-template-columns: minmax(220px, 340px) 1fr; gap: 20px 28px; }
.cand-grid .field { margin-bottom: 8px; }
.cand-grid input, .cand-grid select { font-size: 16px; width: 100%; }
.act-list { list-style: none; margin: 6px 0 0; padding: 0; }
.act-list .act { display: flex; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--line); }
.act-list .act:last-child { border-bottom: 0; }
.act-list .act-date { flex: 0 0 120px; font-size: 13px; color: var(--ink-soft); }
@media (max-width: 760px) { .cand-grid { grid-template-columns: 1fr; } }

/* ---- Self-assessment (competency grading) ---- */
.sa-tools{display:flex;gap:8px;margin:12px 0 4px}
.btn.ghost.sm{padding:5px 11px;font-size:12px}
.sa-section{border-top:1px solid var(--line)}
.sa-section:first-of-type{border-top:0}
.sa-sumbar{display:flex;align-items:center;gap:10px;padding:13px 2px;cursor:pointer;list-style:none;
  font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--ink)}
.sa-sumbar::-webkit-details-marker{display:none}
.sa-sumbar:hover{color:var(--accent)}
.sa-caret{width:7px;height:7px;border:solid var(--ink-soft);border-width:0 1.5px 1.5px 0;
  transform:rotate(-45deg);transition:transform .15s;flex:0 0 auto}
details[open] .sa-caret{transform:rotate(45deg)}
.sa-sec-name{flex:1}
.sa-sec-meta{font-family:var(--font);font-weight:500;font-size:12px;color:var(--ink-soft)}
.sa-mini-bad{color:var(--bad);font-weight:600;margin-left:4px}
.sa-body{padding:0 0 10px 17px}
.sa-row{display:flex;align-items:center;gap:14px;padding:9px 0;border-bottom:1px solid var(--line)}
.sa-row:last-child{border-bottom:0}
.sa-stmt{flex:1;font-size:14px;line-height:1.4}
.sa-grades{display:inline-flex;background:var(--fill);border-radius:var(--r-pill);padding:3px;gap:2px;flex:0 0 auto}
.sa-grade{background:transparent;border:0;padding:6px 12px;border-radius:var(--r-pill);
  font-size:12px;font-weight:600;color:var(--ink-soft);white-space:nowrap}
.sa-grade:hover:not(:disabled){color:var(--ink)}
.sa-grade:disabled{cursor:default}
.sa-grade.on.comfortable{background:var(--good-bg);color:var(--good)}
.sa-grade.on.needs_practice{background:var(--warn-bg);color:var(--warn)}
.sa-grade.on.needs_training{background:var(--bad-bg);color:var(--bad)}
.sa-summary{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
.sa-pill{display:inline-block;padding:4px 11px;border-radius:var(--r-pill);font-size:12px;font-weight:600;
  background:var(--canvas);color:var(--ink-soft)}
.sa-pill.comfortable{background:var(--good-bg);color:var(--good)}
.sa-pill.needs_practice{background:var(--warn-bg);color:var(--warn)}
.sa-pill.needs_training{background:var(--bad-bg);color:var(--bad)}
.sa-pill.ungraded{background:var(--fill);color:var(--ink-faint)}
@media (max-width: 760px){
  .sa-row{flex-direction:column;align-items:flex-start;gap:8px}
  .sa-grades{width:100%;justify-content:space-between}
  .sa-grade{flex:1;text-align:center;padding:8px 6px}
}
   Maps: EXACT port of the TPF hub maps feature (tpf-hub app 878-2056 +
   styles 400-685), SAM tokens only. Do not redesign; sync from TPF.
   ===================================================================== */
.map-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}
.map-card{cursor:pointer;transition:transform .18s ease, box-shadow .18s ease}
.map-card:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(38,36,31,.10)}
.map-thumb{height:110px;border-radius:0;border:1px solid var(--line);margin-bottom:12px;
  background-color:var(--canvas);
  background-image:radial-gradient(#DEDACF 1px, transparent 1px);background-size:14px 14px;
  overflow:hidden}
.map-thumb svg{display:block;width:100%;height:100%}
.map-title{font-size:17px;font-weight:700;margin:0 0 6px}
.map-meta{font-family:inherit;font-size:10px;letter-spacing:1px;color:var(--ink-soft);text-transform:uppercase}

/* ---------- map canvas (comp A: studio paper) ---------- */
main.map-mode{padding:0;overflow:hidden}
.map-stage{position:relative;height:100vh;overflow:hidden;background:var(--canvas);
  background-image:radial-gradient(#DEDACF 1.1px, transparent 1.1px);
  touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.map-stage.panning{cursor:grabbing}
.map-world{position:absolute;left:0;top:0;transform-origin:0 0}
.map-wires{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;pointer-events:none}
.wire{fill:none;stroke:#2E2C2B;opacity:.42;stroke-width:1.6;stroke-dasharray:5 6;stroke-linecap:round;
  animation:wireflow 1.4s linear infinite}
.wire.ghost{opacity:.25;animation-duration:.5s}
.wire.wsel{opacity:.95;stroke-width:2.2;animation-duration:.8s}
.wire.wfaint{opacity:.15}
.wire-hit{fill:none;stroke:transparent;stroke-width:18;stroke-linecap:round;
  pointer-events:stroke;cursor:pointer}
@keyframes wireflow{to{stroke-dashoffset:-11}}
.whandle{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;
  background:var(--surface);border:2px solid var(--ink);z-index:4;cursor:grab;
  animation:barin .2s cubic-bezier(.24,1.3,.42,1) both}
.whandle:hover{transform:scale(1.3)}
.minibar.wirebar{padding:4px 6px}

.mnode{position:absolute;width:280px;background:var(--surface);border:1px solid var(--line);
  border-radius:0;padding:14px 16px;box-shadow:0 6px 24px rgba(38,36,31,.06);
  cursor:default;animation:nodein .34s cubic-bezier(.24,1.3,.42,1) both;
  transition:box-shadow .18s ease, border-color .18s ease}
.mnode:hover{box-shadow:0 10px 28px rgba(38,36,31,.10)}
.mnode.sel{border:1.5px solid var(--ink);box-shadow:0 10px 30px rgba(38,36,31,.12)}
.mnode.dragging{box-shadow:0 18px 44px rgba(38,36,31,.16);animation:none;transition:none;cursor:grabbing}
.mnode.thinking .mkicker .kdot{animation:kpulse .9s ease-in-out infinite}
.mnode.thinking{border-color:var(--gold)}
.mnode.settling{transition:left .45s cubic-bezier(.3,1.15,.35,1), top .45s cubic-bezier(.3,1.15,.35,1),
  box-shadow .18s ease, border-color .18s ease}
@keyframes nodein{from{opacity:0;transform:scale(.9) translateY(8px)}to{opacity:1;transform:none}}
@keyframes kpulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.7);opacity:.55}}

.mkicker{font-family:inherit;font-size:10px;font-weight:600;letter-spacing:1.6px;
  margin-bottom:7px;display:flex;align-items:center;gap:7px;color:var(--ink-soft);text-transform:uppercase;cursor:pointer}
.mkicker .kdot{width:6px;height:6px;border-radius:50%;background:var(--gold);display:inline-block;flex:none}
.mnode[data-kind="seed"] .kdot{animation:breathe 3.2s ease-in-out infinite}
.mnode[data-kind="challenge"] .kdot{background:var(--accent)}
.mtitle{font-size:15px;font-weight:700;line-height:1.3;letter-spacing:-0.01em;outline:none;min-height:19px}
.mbody{font-size:12px;color:var(--ink-soft);margin-top:5px;line-height:1.45;outline:none}
.mbody:empty:not(:focus){display:none}
.mnode.sel .mbody:empty{display:block;min-height:17px}
.mtitle:focus,.mbody:focus{background:var(--fill);border-radius:0;box-shadow:0 0 0 4px var(--fill)}
.mtitle:empty:before{content:'New thought...';color:var(--ink-soft);opacity:.6;font-weight:400}
.mchips{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.mchip{font-family:inherit;font-size:9.5px;font-weight:600;letter-spacing:.8px;
  padding:4px 8px;border-radius:0;background:var(--gold);color:var(--ink);text-transform:uppercase}
.mchip.o{background:transparent;border:1px solid var(--ink-soft);color:var(--ink-soft)}
.mport{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--surface);
  border:1.5px solid var(--ink);cursor:crosshair;opacity:0;transition:opacity .15s, transform .15s}
.mport:hover{transform:scale(1.35)}
.mnode:hover .mport,.mnode.sel .mport{opacity:1}
.mport.r{right:-6px;top:50%;margin-top:-6px}
.mport.l{left:-6px;top:50%;margin-top:-6px}

/* source cards (comp A: media thumb + kicker + title + badges) */
.msrc-thumb{height:96px;border-radius:0;margin-bottom:10px;overflow:hidden;
  background:linear-gradient(135deg,#3A4F39 0%, #2E2C2B 70%)}
.msrc-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.mnode[data-kind="source"] .mtitle{font-size:13.5px}
.mchip a,a.mchip{text-decoration:none;cursor:pointer}

/* chat node: the Powerhouse brain on the canvas */
.mnode[data-kind="chat"]{width:340px}
.mnode[data-kind="chat"] .kdot{background:var(--ink)}
.mchat-io{margin-top:10px}
.mchat-thread{max-height:280px;overflow-y:auto;touch-action:pan-y;display:flex;
  flex-direction:column;gap:10px;padding-right:4px;overscroll-behavior:contain}
.mmsg-empty{font-size:12px;color:var(--ink-soft);opacity:.7}
.mmsg-who{font-family:inherit;font-size:9px;font-weight:700;
  letter-spacing:1.2px;color:var(--ink-soft);margin-bottom:3px}
.mmsg-tx{font-size:12.5px;line-height:1.5;color:var(--ink);white-space:pre-wrap}
.mmsg.you .mmsg-tx{color:var(--ink-soft)}
.mmsg.hub{background:var(--fill);border-radius:0;padding:9px 11px}
.mmsg.hub .mmsg-who{color:var(--accent)}
.mchat-row{display:flex;gap:8px;margin-top:10px;align-items:center}
.mchat-input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:0;
  padding:9px 14px;font:inherit;font-size:16px;background:var(--surface);color:var(--ink);outline:none}
.mchat-input:focus{border-color:var(--ink)}
.mchat-send{border:none;border-radius:0;padding:9px 14px;background:var(--gold);
  color:var(--ink);font-family:inherit;font-weight:700;font-size:11px;
  letter-spacing:1.2px;cursor:pointer}
.mchat-send:hover{opacity:.85}
.mchat-send[disabled]{opacity:.5;cursor:wait}

/* pending cards: document dropzone + url input */
.mdrop{margin-top:10px;border:1.5px dashed #C9C5BD;border-radius:0;padding:18px 14px;
  display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;
  transition:border-color .15s, background .15s;text-align:center}
.mdrop:hover,.mdrop.over{border-color:var(--ink);background:var(--fill)}
.mdrop-plus{font-size:26px;font-weight:800;line-height:1;color:var(--ink)}
.mdrop-label{font-size:13.5px;font-weight:700;color:var(--ink)}
.mdrop-sub{font-family:inherit;font-size:9.5px;font-weight:600;
  letter-spacing:.8px;color:var(--ink-soft);text-transform:uppercase}
.mnode.thinking .mdrop{border-color:var(--gold);background:var(--fill)}
.murl-row{display:flex;gap:8px;margin-top:10px;align-items:center}
.murl-input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:0;
  padding:9px 14px;font:inherit;font-size:16px;background:var(--surface);color:var(--ink);outline:none}
.murl-input:focus{border-color:var(--ink)}
.murl-go{border:none;border-radius:0;padding:9px 14px;background:var(--ink);color:#fff;
  font-family:inherit;font-weight:700;font-size:11px;letter-spacing:1.2px;cursor:pointer}
.murl-go:hover{opacity:.85}
.murl-go[disabled]{opacity:.5;cursor:wait}
.map-toolbar button.armed{background:#B23A2F;color:#fff}

/* text node: one free-form block */
.mnode[data-kind="text"]{width:320px}
.mtext{margin-top:2px;font-size:13.5px;line-height:1.55;color:var(--ink);outline:none;
  min-height:44px;white-space:pre-wrap}
.mtext:focus{background:var(--fill);border-radius:0;box-shadow:0 0 0 4px var(--fill)}
.mtext:empty:before{content:'Write anything...';color:var(--ink-soft);opacity:.6}

/* voice recorder card */
.mvoice{margin-top:10px;display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:14px 10px;text-align:center}
.mvoice-btn{width:52px;height:52px;border-radius:50%;border:1.5px solid var(--ink);
  background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:transform .15s, background .15s}
.mvoice-btn:hover{transform:scale(1.06)}
.mvoice-dot{width:18px;height:18px;border-radius:50%;background:#B23A2F;display:block;
  transition:border-radius .2s}
.mvoice.rec .mvoice-btn{background:#FBEAE7;border-color:#B23A2F}
.mvoice.rec .mvoice-dot{border-radius:0;animation:recpulse 1.2s ease-in-out infinite}
@keyframes recpulse{0%,100%{opacity:1}50%{opacity:.45}}
.mvoice-label{font-size:13.5px;font-weight:700;color:var(--ink)}
.mvoice-timer{font-family:inherit;font-size:13px;font-weight:700;
  letter-spacing:1px;color:#B23A2F}
.mvoice-sub{background:none;border:none;font-family:inherit;font-size:9.5px;
  font-weight:600;letter-spacing:.8px;color:var(--ink-soft);cursor:pointer;text-transform:uppercase;padding:0}
.mvoice-sub:hover{color:var(--ink)}
.mchip.mplay{background:var(--ink);color:#fff;border:none;cursor:pointer;font-family:inherit}
button.mchip{cursor:pointer}

/* inline transcript panel on source cards */
.mtranscript{margin-top:10px;background:var(--fill);border-radius:0;padding:12px 14px}
.mtranscript-body{font-size:12.5px;line-height:1.55;color:var(--ink);max-height:200px;
  overflow-y:auto;touch-action:pan-y;overscroll-behavior:contain;white-space:pre-wrap;
  user-select:text;-webkit-user-select:text;cursor:text}
.mtranscript-acts{display:flex;gap:6px;margin-top:10px}

/* group frames: sit under the cards, carry their members */
svg.map-wires{z-index:1}
.mnode{z-index:2}
.mnode.mgroup{z-index:0;background:rgba(226,224,213,.45);border:1.5px dashed var(--line);
  box-shadow:none;padding:12px 16px;cursor:grab}
.mnode.mgroup:hover{box-shadow:none;border-color:var(--accent)}
.mnode.mgroup.sel{border:1.5px dashed var(--ink);box-shadow:none}
.mnode.mgroup .mkicker{color:var(--accent)}
.mnode.mgroup .kdot{background:var(--accent)}
.mgroup-title{font-size:14px}
.mgrip{position:absolute;right:2px;bottom:2px;width:18px;height:18px;cursor:nwse-resize;
  border-right:2.5px solid var(--line);border-bottom:2.5px solid var(--line);border-radius:0 0 6px 0}
.mnode.mgroup:hover .mgrip,.mnode.mgroup.sel .mgrip{border-color:var(--accent)}

/* selection minibar */
.minibar{position:absolute;display:flex;gap:2px;border-radius:0;padding:5px 8px;background:var(--ink);
  box-shadow:0 8px 24px rgba(20,18,16,.25);animation:barin .2s cubic-bezier(.24,1.3,.42,1) both;z-index:5}
@keyframes barin{from{opacity:0;transform:translateY(6px) scale(.94)}to{opacity:1;transform:none}}
.minibar button{background:none;border:none;color:#fff;font-family:inherit;
  font-size:10px;font-weight:700;letter-spacing:1.2px;padding:6px 10px;cursor:pointer;border-radius:0;white-space:nowrap}
.minibar button:hover{background:rgba(255,255,255,.16)}
.minibar button.warn{color:#F3A9A0}

/* chrome + toolbar + zoom */
.map-chrome{position:absolute;top:26px;left:32px;z-index:6;pointer-events:none}
.map-chrome>*{pointer-events:auto}
.map-chrome .kickrow{display:flex;align-items:center;gap:10px}
.map-back{background:none;border:none;font-family:inherit;font-size:11px;font-weight:700;
  letter-spacing:1.5px;color:var(--ink-soft);cursor:pointer;padding:0;text-transform:uppercase}
.map-back:hover{color:var(--ink)}
.map-savestate{font-family:inherit;font-size:10.5px;font-weight:600;letter-spacing:2px;
  color:var(--ink-soft);text-transform:uppercase;transition:color .3s}
.map-savestate.busy{color:var(--accent)}
.map-title-input{border:none;background:transparent;font:inherit;font-size:26px;font-weight:800;
  letter-spacing:-0.02em;color:var(--ink);outline:none;margin-top:6px;width:min(560px,60vw);padding:0}
.map-title-input:focus{border-bottom:2px solid var(--gold)}

.map-toolbar{position:absolute;left:50%;bottom:30px;transform:translateX(-50%);display:flex;align-items:center;
  gap:4px;border-radius:0;padding:8px 12px;background:var(--ink);color:#fff;z-index:6;
  box-shadow:0 10px 30px rgba(20,18,16,.28)}
.map-toolbar button{background:none;border:none;color:#fff;font-family:inherit;
  font-size:11px;font-weight:700;letter-spacing:1.4px;padding:7px 12px;cursor:pointer;border-radius:0;white-space:nowrap}
.map-toolbar button:hover{background:rgba(255,255,255,.14)}
.map-toolbar .tsep{width:1px;height:14px;background:rgba(255,255,255,.22);margin:0 4px}
.map-zoom{position:absolute;right:32px;bottom:30px;border-radius:0;padding:6px 8px;z-index:6;
  background:var(--surface);border:1px solid var(--line);display:flex;gap:2px;align-items:center;
  font-family:inherit;font-size:11px;font-weight:700;letter-spacing:1px}
.map-zoom button{background:none;border:none;font:inherit;cursor:pointer;padding:4px 10px;border-radius:0;color:var(--ink)}
.map-zoom button:hover{background:var(--fill)}
.map-zoom .zval{padding:0 4px;color:var(--ink-soft);min-width:44px;text-align:center}
.map-hint{position:absolute;left:50%;top:30px;transform:translateX(-50%);z-index:6;
  font-family:inherit;font-size:10.5px;letter-spacing:1.5px;color:var(--ink-soft);
  text-transform:uppercase;background:var(--surface);border:1px solid var(--line);border-radius:0;
  padding:8px 16px;animation:hintfade .5s ease .2s both}
@keyframes hintfade{from{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%,0)}}

@media (prefers-reduced-motion:reduce){
  .wire,.mnode,.minibar,.map-hint{animation:none}
  .mnode.thinking .mkicker .kdot{animation:none;opacity:.5}
}
@media (max-width:640px){
  .map-grid{grid-template-columns:1fr}
  .map-stage{height:calc(100dvh - 92px)}
  .map-chrome{top:14px;left:16px}
  .map-title-input{font-size:20px;width:70vw}
  .map-toolbar{bottom:18px;padding:6px 8px;max-width:92vw;overflow-x:auto;
    -webkit-overflow-scrolling:touch;scrollbar-width:none}
  .map-toolbar::-webkit-scrollbar{display:none}
  .map-toolbar button{padding:7px 9px;font-size:10px}
  .mnode[data-kind="chat"]{width:300px}
  .mmsg-tx{font-size:16px}
  .map-zoom{right:16px;bottom:72px}
  .map-hint{display:none}
  /* iOS focus zoom: editing text must be 16px+ */
  .mtitle,.mbody{font-size:16px}
  .mbody{font-size:16px}
  .mnode{width:240px}
}


/* layout utilities the ported maps list expects (TPF conventions) */
.stack{display:flex;flex-direction:column;gap:16px}
.header-row{display:flex;align-items:flex-end;gap:16px}
.grow{flex:1}

/* Map mode in the Studio OS shell: the canvas owns the whole column. The
   ported TPF sizing assumed their full-viewport layout; here the quickbar
   and column padding must collapse or the toolbar lands below the fold. */
.main-col.map-full{padding:0}
.main-col.map-full .quickbar{display:none}
main.map-mode{padding:0 !important;overflow:hidden;height:100dvh}
main.map-mode .map-stage{height:100%;min-height:0}
@media (max-width:820px){
  .main-col.map-full{padding:0}
  main.map-mode{height:calc(100dvh - 60px)}
}

/* ---- Certifications tracker ---- */
.cert-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--surface);margin-bottom:16px}
.cert-matrix{border-collapse:collapse;width:100%;font-size:13px}
.cert-matrix th,.cert-matrix td{border-bottom:1px solid var(--line);padding:9px 10px;text-align:center;white-space:nowrap}
.cert-matrix thead th{position:sticky;top:0;background:var(--surface);font-weight:600;color:var(--ink-soft);
  border-bottom:2px solid var(--line);z-index:1}
.cert-matrix .cert-name{text-align:left;font-weight:600;color:var(--ink);position:sticky;left:0;
  background:var(--surface);min-width:230px}
.cert-matrix tbody .cert-name a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line)}
.cert-matrix tbody .cert-name a:hover{color:var(--accent);border-color:var(--accent)}
.cert-prov{display:block;font-weight:400;font-size:11px;color:var(--ink-faint)}
.cert-mcol{font-weight:600;color:var(--ink-soft);min-width:42px}
.cert-deadline{color:var(--ink-soft);font-size:12px}
.cert-overdue{color:var(--bad);font-weight:600}
.cert-cell{cursor:pointer;font-weight:700;width:42px;user-select:none}
.cert-cell:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.cert-done{background:var(--good-bg);color:var(--good)}
.cert-todo{background:transparent;color:var(--ink-faint)}
.cert-todo:hover{background:var(--wash)}
.cert-na{color:var(--ink-faint);opacity:.5}
.cert-na:hover{opacity:1;background:var(--wash)}
.cert-count{font-variant-numeric:tabular-nums;color:var(--ink-soft)}
.cert-count b{color:var(--ink)}
.cert-pct{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:12px}
.cert-matrix tfoot th,.cert-matrix tfoot td{border-top:2px solid var(--line);border-bottom:0;
  font-weight:600;background:var(--canvas)}
.cert-form{margin-top:4px}
.cert-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:10px 0}
.cert-assignall{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-soft);margin:6px 0 14px}
.cert-due{margin-left:auto;font-size:12px;color:var(--ink-soft);white-space:nowrap;padding-left:10px}

/* ---- Team 'needs attention' summary ---- */
.ns-panel{margin-bottom:18px}
.ns-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:2px}
.ns-head h3{margin:0}
.ns-sub{color:var(--ink-soft);font-size:13px}
.ns-oversub{color:var(--bad);font-weight:600}
.ns-list{margin-top:8px}
.ns-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 2px;
  border-top:1px solid var(--line);cursor:pointer}
.ns-row:first-child{border-top:0}
.ns-row:hover{background:var(--wash)}
.ns-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.ns-name{font-weight:600;color:var(--ink)}
.ns-pills{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.ns-pill{font-size:12px;font-weight:600;padding:3px 10px;border-radius:7px;white-space:nowrap}
.ns-pill.warn{background:var(--warn-bg);color:var(--warn)}
.ns-pill.ob{background:var(--wash);color:var(--accent)}
.ns-pill.bad{background:var(--bad-bg);color:var(--bad)}
.ns-clear{display:flex;align-items:center;gap:10px;margin-bottom:18px;color:var(--ink-soft)}
.ns-tick{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
  border-radius:50%;background:var(--good-bg);color:var(--good);font-weight:700;font-size:13px}
.row-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.lv-note{font-size:13px;padding:5px 8px;border:1px solid var(--line);border-radius:7px;
  max-width:150px;vertical-align:middle}

/* ---- Team Pulse (admin results dashboard) ---- */
/* semantic tone: fills/dots use background, text uses .pt-t-* */
.pt-good{background:var(--good)} .pt-ok{background:var(--accent)} .pt-warn{background:var(--warn)} .pt-bad{background:var(--bad)}
.pt-t-good{color:var(--good)} .pt-t-ok{color:var(--accent)} .pt-t-warn{color:var(--warn)} .pt-t-bad{color:var(--bad)}
.pt-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}
.pulse-hint{margin:-2px 0 16px;font-size:13px;color:var(--ink-soft)}
.pulse-caution{margin-top:-2px}

.pulse-share{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:16px}
.pulse-linkrow{display:flex;gap:8px;align-items:center;flex:1;min-width:260px;justify-content:flex-end}
.pulse-linkrow input{flex:1;max-width:340px;padding:9px 12px;border:1px solid var(--line);
  border-radius:var(--r-btn);font:inherit;font-size:13px;color:var(--ink-soft);background:var(--canvas)}

.pulse-hero{display:grid;grid-template-columns:auto 1fr;gap:26px;align-items:center;margin-bottom:16px}
.pulse-ring{position:relative;width:136px;height:136px;flex:none}
.pulse-ringmid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.pulse-ringpct{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:34px;font-weight:700;letter-spacing:-.02em;line-height:1}
.pulse-ringsub{font-size:12px;color:var(--ink-soft);font-weight:600;margin-top:3px}
.pulse-read h3{margin:0 0 8px}
.pulse-read p{margin:0;color:var(--ink-soft);font-size:15px;max-width:52ch}
.pulse-read p b{color:var(--ink);font-weight:600}

.pulse-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.pulse-kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;min-width:0}
.pulse-kpi .k{font-size:12px;color:var(--ink-soft);font-weight:600;display:flex;align-items:center;gap:7px}
.pulse-kpi .v{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:30px;font-weight:700;letter-spacing:-.02em;margin-top:6px;line-height:1}
.pulse-kpi .v small{font-size:15px;color:var(--ink-faint);font-weight:600}
.pulse-kpi .note{font-size:12.5px;color:var(--ink-soft);margin-top:5px}

.pulse-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.pulse-grid h3{margin:0 0 2px}

.pulse-bars{display:flex;flex-direction:column;gap:15px}
.pulse-barline{display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:center}
.pulse-barline .lab{font-size:14px;font-weight:600}
.pulse-barline .val{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:14px;font-weight:700}
.pulse-barline .val small{color:var(--ink-faint);font-weight:600}
.pulse-track{height:9px;background:var(--fill);border-radius:999px;overflow:hidden}
.pulse-track > span{display:block;height:100%;border-radius:999px}
.pulse-barline .pulse-track{grid-column:1 / -1}

.pulse-statusrow{display:grid;grid-template-columns:110px 1fr 56px;align-items:center;gap:12px;margin-bottom:11px}
.pulse-statusrow .lab{font-size:13.5px;color:var(--ink-soft)}
.pulse-statusbar{height:11px;background:var(--fill);border-radius:999px;overflow:hidden}
.pulse-statusbar > span{display:block;height:100%;border-radius:999px}
.pulse-statusrow .n{text-align:right;font-family:var(--font);font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}
.pulse-statusrow .n small{color:var(--ink-faint);font-weight:600}

.pulse-ins ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.pulse-ins li{display:grid;grid-template-columns:1fr auto;gap:3px 12px;align-items:baseline;padding-bottom:11px;border-bottom:1px solid var(--line)}
.pulse-ins li:last-child{border-bottom:0;padding-bottom:0}
.pulse-ins li .sec{grid-column:1 / -1;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);font-weight:600}
.pulse-ins li .q{font-size:14px}
.pulse-ins li .s{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:14px;font-weight:700;white-space:nowrap}
.pulse-ins li .s small{color:var(--ink-faint);font-weight:600}
.pulse-ins h3{display:flex;align-items:center;gap:9px}

.pulse-qtable{display:flex;flex-direction:column;gap:6px}
.pulse-qsec{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--accent);font-weight:700;margin:16px 0 3px}
.pulse-qsec:first-child{margin-top:0}
.pulse-qrow{display:grid;grid-template-columns:minmax(0,1fr) 90px 46px;gap:14px;align-items:center;padding:6px 0}
.pulse-qrow .q{font-size:13.5px;min-width:0}
.pulse-qrow .q .skips{color:var(--ink-faint);font-size:12px}
.pulse-qrow .v{text-align:right;font-family:var(--font);font-variant-numeric:tabular-nums;font-weight:700;font-size:13.5px}
.pulse-qrow .v small{color:var(--ink-faint);font-weight:600}

.pulse-themes{display:flex;flex-direction:column;gap:13px}
.pulse-theme{border:1px solid var(--line);border-radius:12px;padding:15px 17px;background:var(--canvas)}
.pulse-theme .th{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.pulse-theme .tl{display:flex;align-items:center;gap:9px;font-weight:700;font-size:14.5px}
.pulse-theme .cnt{font-size:12px;font-weight:700;color:var(--ink-soft);background:var(--surface);border:1px solid var(--line);padding:2px 9px;border-radius:var(--r-pill);white-space:nowrap}
.pulse-theme blockquote{margin:0;padding:7px 0 0 13px;border-left:2px solid var(--line);color:var(--ink-soft);font-size:13.5px;font-style:italic}

@media (max-width:860px){
  .pulse-hero{grid-template-columns:1fr;justify-items:center;text-align:center;gap:16px}
  .pulse-read p{margin-inline:auto}
  .pulse-kpis{grid-template-columns:1fr 1fr}
  .pulse-grid{grid-template-columns:1fr}
}
@media (max-width:460px){
  .pulse-qrow{grid-template-columns:minmax(0,1fr) 60px 44px;gap:10px}
  .pulse-statusrow{grid-template-columns:92px 1fr 50px}
}

/* ---- Time tracking ---- */
.tnum{font-variant-numeric:tabular-nums}
.kicker{font-weight:700;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
.tt-tabs{display:flex;gap:8px;margin:-6px 0 16px}
.tt-tab{font-family:inherit;font-size:13px;font-weight:600;padding:7px 15px;border:1px solid var(--line);
  background:var(--surface);color:var(--ink-soft);border-radius:var(--r-pill);cursor:pointer}
.tt-tab.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.tt-panel{margin:0 0 8px}
.tt-idle{max-width:460px;margin:8px 0 18px}
.tt-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:16px}
.tt-big{font-size:14px;padding:14px 30px}
/* live (recording) = ink panel */
.tt-live{background:var(--ink);border-color:var(--ink);color:#f3f4f2}
.tt-rec{display:flex;align-items:center;gap:10px}
.tt-pulse{width:9px;height:9px;border-radius:50%;background:#8fbfa9;animation:ttpulse 1.6s ease-in-out infinite}
@keyframes ttpulse{0%,100%{opacity:1}50%{opacity:.3}}
.tt-reclbl{font-weight:700;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:#8fbfa9}
.tt-clock{font-family:var(--font);font-variant-numeric:tabular-nums;font-weight:700;font-size:clamp(52px,11vw,104px);
  letter-spacing:-.03em;line-height:1.05;margin:8px 0 6px;color:#f3f4f2}
.tt-clock .sec{font-weight:300;color:rgba(255,255,255,.5)}
.tt-pickrow{display:flex;align-items:center;gap:12px;margin:12px 0 0;flex-wrap:wrap}
.tt-plbl{font-weight:700;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);width:48px;flex-shrink:0}
.tt-live .tt-plbl{color:rgba(255,255,255,.55)}
.tt-sel{font-family:inherit;font-size:15px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-btn);
  background:var(--surface);color:var(--ink);min-width:170px}
.tt-live .tt-sel{background:transparent;color:#f3f4f2;border-color:rgba(255,255,255,.22)}
.tt-sel option{color:var(--ink)}
.tt-chips{display:flex;gap:8px;flex-wrap:wrap;flex:1}
.tt-chip{font-family:inherit;font-size:13px;font-weight:600;padding:7px 13px;border:1px solid var(--line);
  background:var(--surface);color:var(--ink);cursor:pointer;border-radius:var(--r-pill)}
.tt-chip:hover{background:var(--fill)}
.tt-chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.tt-live .tt-chip{border-color:rgba(255,255,255,.22);color:#f3f4f2;background:transparent}
.tt-live .tt-chip:hover{background:rgba(255,255,255,.08)}
.tt-live .tt-chip.on{background:#8fbfa9;color:#14201b;border-color:#8fbfa9}
.tt-task{width:100%;margin-top:14px;font-family:inherit;font-size:15px;padding:11px 13px;border-radius:var(--r-btn);
  border:1px solid rgba(255,255,255,.22);background:transparent;color:#f3f4f2}
.tt-task::placeholder{color:rgba(255,255,255,.45)}
/* stats strip */
.tt-stats{display:flex;gap:26px;border-top:1px solid var(--line);margin-top:22px;padding:18px 0}
.tt-stat{flex:1;min-width:0}
.tt-stat + .tt-stat{border-left:1px solid var(--line);padding-left:26px}
.tt-v{font-family:var(--font);font-variant-numeric:tabular-nums;font-weight:700;font-size:32px;letter-spacing:-.02em;margin-top:8px}
.tt-v small{font-weight:400;font-size:14px;color:var(--ink-soft);margin-left:4px}
.tt-gsub{font-size:12px;color:var(--ink-soft);margin-top:8px}
.tt-samlist{margin-top:10px;display:flex;flex-direction:column;gap:5px;max-width:280px}
.tt-samrow{display:flex;justify-content:space-between;font-size:13px;border-bottom:1px dotted var(--line);padding-bottom:4px}
.tt-samrow b{font-weight:700}
/* month-by lanes (team by client) */
.tt-lanes{margin-top:24px}
.tt-lanes .kicker{display:block;margin-bottom:10px}
.tt-lane{display:flex;align-items:baseline;gap:14px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.tt-lane span{font-weight:500;flex-shrink:0}
.tt-lane i{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-4px)}
.tt-lane b{font-weight:700;font-size:15px}
/* ledger */
.tt-ledgerhead{display:flex;align-items:baseline;justify-content:space-between;margin:30px 0 10px}
.tt-ledger{border-top:1px solid var(--line)}
.tt-lrow{display:flex;align-items:flex-start;gap:14px;padding:13px 0;border-bottom:1px solid var(--line)}
.tt-day{width:42px;flex-shrink:0;font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding-top:2px}
.tt-entry{flex:1;min-width:0}
.tt-entry .t{display:block;font-weight:500;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tt-act{font-weight:600;font-size:12px;color:var(--ink-soft)}
.tt-none{color:var(--ink-faint);font-style:italic}
.tt-entry .c{display:block;font-size:12px;color:var(--ink-soft);margin-top:1px}
.tt-dur{font-family:var(--font);font-variant-numeric:tabular-nums;font-weight:700;font-size:16px;flex-shrink:0;padding-top:1px}
.tt-dur small{font-weight:400;font-size:12px;color:var(--ink-soft);margin-left:2px}
.tt-teamwk{font-family:var(--font);font-variant-numeric:tabular-nums;font-weight:600;font-size:14px;color:var(--ink-soft);flex-shrink:0;padding-top:2px}
.tt-teamwk small{font-weight:400;font-size:11px;margin-left:2px}
.tt-adjust{border:0;background:transparent;color:var(--ink-faint);cursor:pointer;font-size:12px;font-weight:600;padding:2px 6px;flex-shrink:0}
.tt-adjust:hover{color:var(--accent)}
.tt-x{border:0;background:transparent;color:var(--ink-faint);cursor:pointer;font-size:18px;line-height:1;padding:2px 6px;flex-shrink:0}
.tt-x:hover{color:var(--bad)}
.tt-empty{font-size:14px;color:var(--ink-soft);padding:14px 0;border-bottom:1px solid var(--line)}
.tt-addlink{margin-top:16px}
.tt-addform{margin-top:14px}
.tt-lrow-edit{align-items:center}
.tt-editgrid{flex:1;display:flex;gap:10px;flex-wrap:wrap;align-items:center;min-width:0}
.tt-editgrid .tt-sel{min-width:0;padding:8px 10px}
.tt-editgrid input{font-family:inherit;font-size:15px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-btn);background:var(--surface);color:var(--ink)}
.tt-e-note{flex:1;min-width:140px}
.tt-e-dur{width:110px}
.tt-e-date{width:150px}
.tt-editactions{display:flex;gap:8px;flex-shrink:0;margin-top:10px}
@media (max-width:680px){
  .tt-stats{flex-direction:column;gap:0}
  .tt-stat{padding:14px 0}
  .tt-stat + .tt-stat{border-left:0;padding-left:0;border-top:1px solid var(--line)}
}

/* ---- Public holidays ---- */
.ph-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin-bottom:16px}
.ph-card{padding:20px 22px}
.ph-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.ph-head h3{margin:0}
.ph-members{font-size:12.5px;color:var(--ink-soft);text-align:right;min-width:0}
.ph-rows{display:flex;flex-direction:column}
.ph-row{display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--line)}
.ph-row:last-child{border-bottom:0}
.ph-date{font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums}
.ph-name{grid-column:1 / -1;font-size:12.5px;color:var(--ink-soft)}
.ph-when{font-size:11px;font-weight:600;color:var(--ink-faint);white-space:nowrap}
.ph-soon .ph-when{color:var(--accent)}
.ph-soon .ph-date{color:var(--accent)}
.ph-tag{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);background:var(--wash);padding:1px 6px;border-radius:var(--r-pill);vertical-align:middle;margin-left:4px}
.ph-when{display:inline-flex;align-items:center;gap:6px}
.ph-x{border:0;background:transparent;color:var(--ink-faint);cursor:pointer;font-size:16px;line-height:1;padding:0 2px}
.ph-x:hover{color:var(--bad)}
.ph-addcard{margin-top:4px}
.ph-hint{margin:-2px 0 14px;font-size:13px;color:var(--ink-soft)}
/* client status pills */
.pill.cst-active{background:var(--good-bg);color:var(--good)}
.pill.cst-onboarding{background:var(--wash);color:var(--accent)}
.pill.cst-paused{background:var(--warn-bg);color:var(--warn)}
.pill.cst-churned{background:var(--fill);color:var(--ink-faint)}
/* global Record pill: quiet when idle, ink + pulsing sage dot while a timer runs */
#qa-record .qa-dot{width:9px;height:9px;border-radius:50%;background:var(--ink-faint);flex:none}
#qa-record.recording{background:var(--ink);color:#f3f4f2;border-color:var(--ink)}
#qa-record.recording .qa-dot{background:#8fbfa9;animation:ttpulse 1.6s ease-in-out infinite}

/* ---- Client record tabs (Overview | Production | Setup); tab strip reuses .tabs/.tab ---- */
.rec-panel{min-width:0}
.rec-type{font-size:13px;font-weight:600}
.rec-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 16px}
.rec-stat{min-width:0;display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;box-shadow:var(--shadow)}
.rec-stat-l{font:700 10px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
.rec-stat-n{font:700 28px/1 var(--font);font-variant-numeric:tabular-nums;color:var(--ink)}
.rec-stat-n.warn{color:var(--warn)}
.rec-done td{color:var(--ink-soft)}
.rec-toggle{margin-top:12px}
.rec-panel .rtable td{min-width:0;overflow-wrap:anywhere}
@media (max-width:720px){
  .rec-strip{gap:10px}
  .rec-stat{padding:12px 14px}
  .rec-stat-n{font-size:24px}
}
/* global recording strip: top of every view (except Time) while a timer runs */
.rec-strip{display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:var(--ink);color:#f3f4f2;
  border-radius:var(--radius);padding:12px 18px;margin:0 0 16px;box-shadow:var(--shadow)}
.main-col.map-full .rec-strip{display:none}
.rs-left{display:flex;align-items:center;gap:10px;flex:none}
.rs-lbl{font-weight:700;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:#8fbfa9}
.rs-clock{font-family:var(--font);font-variant-numeric:tabular-nums;font-weight:700;font-size:26px;letter-spacing:-.02em;line-height:1;margin-left:6px}
.rs-clock .sec{font-weight:300;color:rgba(255,255,255,.5)}
.rs-mid{display:flex;align-items:center;gap:12px;flex:1;min-width:240px}
.rs-for{font-size:13px;font-weight:600;white-space:nowrap;color:#f3f4f2}
.rs-sep{margin:0 7px;color:rgba(255,255,255,.45)}
.rs-task{flex:1;min-width:140px;font-family:inherit;font-size:14px;padding:8px 11px;border-radius:var(--r-btn);
  border:1px solid rgba(255,255,255,.22);background:transparent;color:#f3f4f2}
.rs-task::placeholder{color:rgba(255,255,255,.45)}
.rs-right{display:flex;align-items:center;gap:10px;flex:none;margin-left:auto}
.rs-stop{padding:9px 16px}
.rs-open{background:transparent;border:0;color:rgba(255,255,255,.7);font:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:underline}
.rs-open:hover{color:#fff}
@media (max-width:640px){.rs-for{white-space:normal}.rs-right{margin-left:0;width:100%}.rs-stop{flex:1}}
/* Time: the idle state uses the same dark panel, dimmed, so the timer is always the fixture */
.tt-off .tt-pulse{background:rgba(255,255,255,.35);animation:none}
.tt-off .tt-reclbl{color:rgba(255,255,255,.5)}
.tt-off .tt-clock{color:rgba(255,255,255,.35)}
.tt-off .tt-clock .sec{color:rgba(255,255,255,.2)}
.tt-idlehint{font-size:13px;color:rgba(255,255,255,.55);align-self:center;max-width:420px}

/* Account health */
.ah-intro{margin:-6px 0 14px;max-width:760px}
.ah-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.ah-status{min-height:20px;margin-bottom:10px;font-size:13px}
.pill.ah-red{background:var(--bad-bg);color:var(--bad)}
.pill.ah-amber{background:var(--warn-bg);color:var(--warn)}
.pill.ah-green{background:var(--good-bg);color:var(--good)}
.ah-card{margin-bottom:18px;border-left:4px solid var(--line)}
.ah-edge-red{border-left-color:var(--bad)}.ah-edge-amber{border-left-color:#c9a24a}.ah-edge-green{border-left-color:var(--good)}
.ah-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}
.ah-head h3{font-size:26px}
.ah-wins{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.ah-winhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.ah-winhead h4{margin:0;font-size:15px;font-weight:600}
.ah-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.ah-tile{background:var(--canvas);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.ah-tile.red{background:var(--bad-bg);border-color:#e3c3bf}.ah-tile.amber{background:var(--warn-bg);border-color:#e6d8b5}
.ah-v{font-size:24px;font-weight:600;line-height:1.2}
.ah-s{font-size:12px;color:var(--ink-soft)}
.ah-flags{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.ah-flags li{display:flex;gap:10px;align-items:flex-start}
.ah-flags i{flex:none;width:9px;height:9px;border-radius:50%;margin-top:6px;background:var(--ink-faint)}
.ah-flags li.red i{background:var(--bad)}.ah-flags li.amber i{background:#c9a24a}
.ah-flags b{display:block;font-size:14px}.ah-flags span{display:block;font-size:12.5px;color:var(--ink-soft)}
.ah-clear{margin:12px 0 0;font-size:13px;color:var(--good)}
.ah-chart{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.ah-bars{display:flex;align-items:flex-end;gap:3px;height:84px;margin-top:8px}
.ah-bar{flex:1;height:100%;display:flex;align-items:flex-end}
.ah-bar i{display:block;width:100%;background:var(--line);border-radius:3px 3px 0 0}
.ah-bar.recent i{background:var(--accent)}
.ah-axis{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--ink-faint);margin-top:6px}
.ah-axis span:nth-child(2){text-align:center;flex:1}
@media (max-width:760px){.ah-wins{grid-template-columns:1fr}.ah-axis span:nth-child(2){display:none}}

/* Time overview (managers) */
.to-filters{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;margin:0 0 18px}
.to-chips{display:flex;gap:6px;flex-wrap:wrap}
.to-chip{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-pill);padding:6px 14px;font-size:13px}
.to-chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.to-filters label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-soft)}
.to-filters select{padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-btn);background:var(--surface);font:inherit;font-size:13px;color:var(--ink)}
.to-cols{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;margin-bottom:18px}
.to-sub{margin:2px 0 14px;font-size:12.5px}
.to-row{display:grid;grid-template-columns:minmax(110px,170px) 1fr 96px;gap:12px;align-items:center;padding:5px 0}
.to-name{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:7px}
.to-dot{flex:none;width:9px;height:9px;border-radius:50%}
.to-track{height:14px;background:var(--fill);border-radius:7px;overflow:hidden}
.to-fill{display:flex;height:100%;border-radius:7px;overflow:hidden}
.to-fill i{display:block;height:100%}
.to-num{text-align:right;font-size:12.5px;color:var(--ink-soft)}.to-num b{color:var(--ink);margin-right:4px}
.to-scroll{overflow-x:auto}
.to-matrix{border-collapse:separate;border-spacing:3px;width:100%;font-size:12.5px}
.to-matrix th{font-weight:500;color:var(--ink-soft);text-align:center;padding:4px 6px;white-space:nowrap}
.to-matrix td{text-align:center;padding:8px 6px;border-radius:6px;background:var(--fill);min-width:56px}
.to-matrix th.to-person{text-align:left;color:var(--ink);font-weight:600;position:sticky;left:0;background:var(--surface);padding-right:12px}
.to-matrix tr[data-member]{cursor:pointer}.to-matrix tr[data-member]:hover th.to-person{color:var(--accent);text-decoration:underline}
.to-tot small{display:block;color:inherit;opacity:.7}
.to-other{background:var(--fill)}
@media (max-width:860px){.to-cols{grid-template-columns:1fr}.to-row{grid-template-columns:100px 1fr 80px}}

/* Account health v2: compact rows, tabs */
.ah-tabs{display:flex;flex-wrap:wrap;gap:10px 22px;margin:0 0 14px;align-items:center}
.ah-tabgroup{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ah-glabel{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin-right:2px}
.ah-tab{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-pill);padding:6px 14px;font-size:13px;display:inline-flex;gap:7px;align-items:center}
.ah-tab.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.ah-badge{background:var(--bad);color:#fff;border-radius:999px;font-size:11px;min-width:18px;height:18px;line-height:18px;text-align:center;padding:0 5px}
.ah-list{display:flex;flex-direction:column;gap:8px}
.ah-item{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:12px;overflow:hidden}
.ah-item.ah-edge-red{border-left-color:var(--bad)}.ah-item.ah-edge-amber{border-left-color:#c9a24a}.ah-item.ah-edge-green{border-left-color:var(--good)}
.ah-row{width:100%;display:grid;grid-template-columns:minmax(150px,230px) auto 1fr 20px;gap:14px;align-items:center;padding:12px 16px;background:none;border:0;text-align:left}
.ah-row:hover{background:var(--canvas)}
.ah-name b{display:block;font-size:15px}.ah-name small{display:block;color:var(--ink-soft);font-size:12px}
.ah-pills{display:flex;gap:6px;flex-wrap:wrap}
.ah-headline{font-size:13px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ah-caret{width:8px;height:8px;border-right:2px solid var(--ink-faint);border-bottom:2px solid var(--ink-faint);transform:rotate(45deg);justify-self:end;transition:transform .15s}
.ah-item.open .ah-caret{transform:rotate(-135deg)}
.ah-detail{padding:4px 18px 18px;border-top:1px solid var(--line)}
.ah-detail .ah-wins{margin-top:14px}
.ah-detail .btn{margin-top:16px}
.ah-sechead{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
.ah-sechead h3{margin:0}
.ah-upd{font-size:12px;margin:12px 0 0}
.sect .ah-wins{margin-top:0}
@media (max-width:760px){.ah-row{grid-template-columns:1fr 20px;row-gap:6px}.ah-row .ah-pills,.ah-row .ah-headline{grid-column:1}.ah-caret{grid-row:1;grid-column:2}}

/* Time overview V2 */
.v2-donuts{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.v2-donutwrap{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin-top:8px}
.v2-donut{width:170px;height:170px;flex:none}
.v2-dnum{font-size:26px;font-weight:600;fill:var(--ink)}.v2-dsub{font-size:11px;fill:var(--ink-soft)}
.v2-legend{flex:1;min-width:200px;display:flex;flex-direction:column;gap:5px}
.v2-leg{display:grid;grid-template-columns:12px 1fr 42px 54px;gap:8px;align-items:center;font-size:13px}
.v2-leg i,.v2-chip i{display:block;width:11px;height:11px;border-radius:3px}
.v2-leg span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v2-leg small{color:var(--ink-soft);text-align:right}.v2-leg b{text-align:right}
.v2-bhead{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:flex-start}
.v2-toggles{display:flex;gap:18px;flex-wrap:wrap}
.v2-tg{display:flex;gap:6px;align-items:center}.v2-tg>span{font-size:12px;color:var(--ink-soft);margin-right:2px}
.v2-legendtop{display:flex;flex-wrap:wrap;gap:6px 16px;margin:12px 0 16px}
.v2-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px}
.v2-rows{display:flex;flex-direction:column;gap:10px}
.v2-row{display:grid;grid-template-columns:150px 1fr 110px;gap:14px;align-items:center}
.v2-rname{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v2-rname.link{cursor:pointer}.v2-rname.link:hover{color:var(--accent);text-decoration:underline}
.v2-stack{display:flex;height:34px;border-radius:8px;overflow:hidden;background:var(--fill)}
.v2-seg{display:flex;align-items:center;justify-content:center;min-width:2px;border-right:2px solid var(--surface)}
.v2-seg:last-child{border-right:0}
.v2-seg span{color:#fff;font-size:12px;font-weight:600}
.v2-rtot{text-align:right;line-height:1.25}.v2-rtot b{display:block;font-size:14px}.v2-rtot small{color:var(--ink-soft);font-size:11.5px}
@media (max-width:860px){.v2-donuts{grid-template-columns:1fr}.v2-row{grid-template-columns:1fr;gap:4px}.v2-rtot{text-align:left;display:flex;gap:8px;align-items:baseline}}

/* AI roadmap tracker */
.rm-sec{margin:22px 0}
.rm-sec h3{font-family:var(--font-display);font-size:24px;font-weight:500;margin:0 0 8px;display:flex;align-items:center;gap:10px}
.rm-n{font-family:var(--font);font-size:12px;font-weight:600;background:var(--fill);color:var(--ink-soft);border-radius:var(--r-pill);padding:2px 9px}
.rm-needs_decision h3{color:var(--bad)}
.rm-item{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:0 0 8px}
.rm-item>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:13px 16px}
.rm-item>summary::-webkit-details-marker{display:none}
.rm-title{font-weight:600;font-size:15px}
.rm-meta{display:flex;gap:12px;align-items:center;font-size:13px;flex-shrink:0}
.rm-date{font-weight:600;color:var(--ink)}
.rm-late{color:var(--bad)}
.rm-count{background:var(--wash);color:var(--accent);border-radius:var(--r-pill);padding:2px 9px;font-size:12px;font-weight:600}
.rm-body{padding:2px 16px 16px;border-top:1px solid var(--line)}
.rm-summary{margin:12px 0;color:var(--ink-soft);font-size:14px}
.rm-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:12px 0}
.rm-edit{margin:6px 0 10px;font-size:13px}
.rm-edit>summary{cursor:pointer;color:var(--ink-soft)}
.rm-edit .field{margin:8px 0}
.rm-body h4{margin:14px 0 6px;font-size:13px;color:var(--ink-soft);font-weight:600}
.rm-thread{list-style:none;margin:0 0 10px;padding:0}
.rm-c{padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.rm-c:last-child{border-bottom:0}
.rm-cform{display:flex;gap:10px;align-items:flex-start}
.rm-cform textarea,.rm-edit textarea{flex:1;padding:9px 11px;border:1px solid var(--line);border-radius:var(--r-btn);font:inherit;font-size:14px;width:100%}
.rm-none{padding:6px 2px;font-size:13px}
@media (max-width:640px){.rm-item>summary{flex-direction:column;align-items:flex-start;gap:6px}.rm-cform{flex-direction:column}}

/* AI roadmap v2: tabs, board, timeline */
.rm-top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:6px 0 18px;flex-wrap:wrap}
.rm-progress{flex:1;min-width:240px;max-width:520px}
.rm-bar{height:8px;border-radius:var(--r-pill);background:var(--fill);overflow:hidden}
.rm-bar span{display:block;height:100%;background:var(--accent);border-radius:var(--r-pill)}
.rm-stats{margin-top:7px;font-size:13px;color:var(--ink-soft)}
.rm-warn{color:var(--bad);font-weight:600}
.rm-seg{display:inline-flex;background:var(--fill);border-radius:var(--r-pill);padding:3px}
.rm-seg button{border:0;background:transparent;padding:7px 16px;border-radius:var(--r-pill);font:inherit;font-size:13px;font-weight:600;color:var(--ink-soft);cursor:pointer}
.rm-seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(20,20,20,.08)}
.rm-n{font-family:var(--font);font-size:12px;font-weight:600;background:var(--fill);color:var(--ink-soft);border-radius:var(--r-pill);padding:2px 9px;margin-left:6px}
.rm-decide{background:var(--bad-bg);border:1px solid #e6c9c5;border-radius:14px;padding:14px 14px 6px;margin:0 0 22px}
.rm-decide h3{font-family:var(--font-display);font-size:24px;font-weight:500;margin:0 0 10px;color:var(--bad);display:flex;align-items:center}
.rm-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin:0 0 14px;overflow-x:auto}
.rm-tab{border:0;background:transparent;padding:10px 14px;font:inherit;font-size:15px;font-weight:600;color:var(--ink-soft);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.rm-tab.on{color:var(--ink);border-bottom-color:var(--accent)}
.rm-chip{display:inline-block;padding:3px 10px;border-radius:var(--r-pill);background:var(--wash);color:var(--accent);font-size:12px;font-weight:600;white-space:nowrap}
.rm-chip.late{background:var(--bad-bg);color:var(--bad)}
.rm-chip.none{background:transparent;color:var(--ink-faint);font-weight:500;padding-left:0}
.rm-own{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:11px;font-weight:700}
.rm-meta{display:flex;gap:10px;align-items:center;flex-shrink:0}
.rm-count{background:var(--fill);color:var(--ink-soft);border-radius:var(--r-pill);padding:2px 8px;font-size:12px;font-weight:600}
.rm-count::before{content:"\1F4AC\00a0";font-size:11px}
/* board */
.rm-board{display:grid;grid-template-columns:repeat(5,minmax(210px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}
.rm-col{background:var(--fill);border-radius:14px;padding:10px;min-height:260px;transition:background .15s}
.rm-col.over{background:var(--wash);outline:2px dashed var(--accent)}
.rm-col-h{font-weight:700;font-size:13px;margin:2px 4px 10px;display:flex;align-items:center;border-top:3px solid var(--ink-faint);padding-top:8px;margin-top:-2px}
.rm-col-needs_decision .rm-col-h{border-top-color:var(--bad);color:var(--bad)}
.rm-col-under_way .rm-col-h{border-top-color:var(--accent)}
.rm-col-next .rm-col-h{border-top-color:#b08a3e}
.rm-col-later .rm-col-h{border-top-color:var(--ink-faint)}
.rm-col-done .rm-col-h{border-top-color:var(--good)}
.rm-card{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:9px;cursor:grab;box-shadow:0 1px 2px rgba(20,20,20,.04)}
.rm-card:hover{box-shadow:0 4px 14px rgba(20,20,20,.08)}
.rm-card.drag{opacity:.45}
.rm-card.is-done{opacity:.75}
.rm-card-t{font-weight:600;font-size:14px;line-height:1.3}
.rm-card-s{font-size:12.5px;color:var(--ink-soft);margin-top:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rm-card-f{display:flex;align-items:center;justify-content:space-between;margin-top:10px;gap:8px}
.rm-card-r{display:flex;gap:6px;align-items:center}
.rm-hint{font-size:12.5px;margin:6px 2px 0}
/* pop-up */
.rm-modal{position:fixed;inset:0;background:rgba(20,20,20,.38);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;z-index:60;overflow-y:auto}
.rm-sheet{position:relative;background:var(--surface);border-radius:16px;box-shadow:var(--shadow);width:100%;max-width:640px;padding:24px 26px 26px}
.rm-sheet h3{font-family:var(--font-display);font-size:28px;font-weight:500;margin:0 34px 8px 0}
.rm-sheet-meta{display:flex;gap:8px;margin-bottom:4px}
.rm-sheet .rm-body{border-top:0;padding:0}
.rm-back{display:inline-flex;align-items:center;gap:8px;max-width:calc(100% - 52px);margin:0 0 10px;padding:6px 12px 6px 10px;border:0;border-radius:999px;background:var(--fill);color:var(--ink-soft);font:inherit;font-size:14px;line-height:1.2;cursor:pointer}
.rm-back:hover{color:var(--ink)}
.rm-back-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rm-x{position:absolute;top:14px;right:16px;border:0;background:var(--fill);width:32px;height:32px;border-radius:50%;font-size:20px;line-height:1;cursor:pointer;color:var(--ink-soft)}
/* timeline */
.rm-tl-scroll{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:14px}
.rm-tl{min-width:calc(260px + var(--n) * 96px)}
.rm-tl-head,.rm-tl-row{display:grid;grid-template-columns:260px 1fr}
.rm-tl-head{border-bottom:1px solid var(--line);background:var(--canvas)}
.rm-tl-months{display:grid;grid-template-columns:repeat(var(--n),1fr)}
.rm-tl-months>div{padding:10px 8px;font-size:12px;font-weight:700;color:var(--ink-soft);border-left:1px solid var(--line)}
.rm-tl-body{position:relative}
.rm-tl-row{border-bottom:1px solid var(--line);cursor:pointer;min-height:46px}
.rm-tl-row:hover{background:var(--canvas)}
.rm-tl-name{padding:12px 14px;font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}
.rm-tl-track{position:relative;background:repeating-linear-gradient(to right,transparent 0,transparent calc(100% / var(--n) - 1px),var(--line) calc(100% / var(--n) - 1px),var(--line) calc(100% / var(--n)))}
.rm-tl-pill{position:absolute;top:50%;transform:translate(-50%,-50%);padding:4px 11px;border-radius:var(--r-pill);font-size:12px;font-weight:700;color:#fff;white-space:nowrap;background:var(--ink-faint)}
.rm-pill-needs_decision{background:var(--bad)}.rm-pill-under_way{background:var(--accent)}.rm-pill-next{background:#b08a3e}.rm-pill-later{background:var(--ink-faint)}.rm-pill-done{background:var(--good)}
.rm-tl-pill.late{outline:2px solid var(--bad);outline-offset:1px}
.rm-tl-today{position:absolute;top:0;bottom:0;width:0;border-left:2px solid var(--bad);z-index:2;pointer-events:none}
.rm-tl-today span{position:absolute;top:-1px;left:4px;font-size:10px;font-weight:700;color:var(--bad);background:var(--surface);padding:0 3px}
.rm-tl-empty{padding:22px 16px;grid-column:1/-1}
.rm-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--ink-faint)}
.rm-dot-needs_decision{background:var(--bad)}.rm-dot-under_way{background:var(--accent)}.rm-dot-next{background:#b08a3e}.rm-dot-later{background:var(--ink-faint)}.rm-dot-done{background:var(--good)}
.rm-undated{margin-top:22px}
.rm-undated h3{font-family:var(--font-display);font-size:22px;font-weight:500;margin:0 0 10px;display:flex;align-items:center}
.rm-undated-list{display:flex;flex-wrap:wrap;gap:8px}
.rm-undated-i{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-pill);padding:7px 14px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.rm-undated-i:hover{background:var(--canvas)}
@media (max-width:640px){.rm-top{flex-direction:column;align-items:stretch}.rm-progress{max-width:none}.rm-seg{align-self:flex-start}}
#rm-add{margin-top:24px}
/* roadmap v2.1: collapsed cards, owner photo + name */
.rm-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.rm-card-s{-webkit-line-clamp:unset;display:block;overflow:visible}
.rm-exp{flex-shrink:0;border:0;background:var(--fill);color:var(--ink-soft);width:24px;height:24px;border-radius:50%;cursor:pointer;font-size:13px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:transform .15s}
.rm-exp:hover{background:var(--fill-hover)}
.rm-exp.on{transform:rotate(180deg);background:var(--wash);color:var(--accent)}
.rm-person{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink-soft)}
.rm-person img{width:24px;height:24px;border-radius:50%;object-fit:cover}
.rm-card-f{flex-wrap:wrap;justify-content:flex-start}
.rm-card-r{margin-left:auto}
