@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;src:url(inter-latin.woff2?v=1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2190-2199,U+2212,U+2215,U+FEFF,U+FFFD,U+20B1,U+00A3}
:root{
  --bg:#f5f7fb; --card:#fff; --ink:#0f172a; --ink2:#334155; --muted:#64748b; --line:#e2e8f0; --line2:#f1f5f9;
  --navy:#0f172a; --navy2:#1e293b; --accent:#4f46e5; --accent-ink:#fff; --accent-soft:#eef2ff; --teal:#0d9488;
  --g:#15803d; --g-bg:#dcfce7; --a:#b45309; --a-bg:#fef3c7; --r:#b91c1c; --r-bg:#fee2e2; --n:#475569; --n-bg:#f1f5f9;
  --q1:#fecaca; --q2:#bbf7d0; --q3:#fde68a; --q4:#e2e8f0;
  --radius:12px; --shadow:0 1px 2px rgba(15,23,42,.05),0 4px 14px -6px rgba(15,23,42,.08);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline}
h1,h2,h3{margin:0 0 .6em;line-height:1.25} h1{font-size:22px;font-weight:700} h2{font-size:15px;font-weight:600} h3{font-size:13px;font-weight:600}
code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}
small,.small{font-size:12px} .muted{color:var(--muted)} .right{text-align:right}
.warn-text{color:var(--a)} .danger{color:var(--r)} .up{color:var(--g)} .down{color:var(--r)} .g-text{color:var(--g)} .a-text{color:var(--a)}

/* layout */
.nav{position:fixed;inset:0 auto 0 0;width:232px;background:var(--navy);color:#cbd5e1;display:flex;flex-direction:column;z-index:20}
.brand{display:flex;gap:10px;align-items:center;padding:18px 16px 14px;border-bottom:1px solid rgba(255,255,255,.08)}
.brand .logo{width:36px;height:36px;border-radius:9px;display:block;flex:none;box-shadow:0 0 0 1px rgba(148,163,184,.28),0 2px 8px rgba(0,0,0,.35)}
.brand strong{display:block;color:#fff;font-size:13.5px} .brand small{color:#94a3b8}
.nav nav{padding:10px 8px;flex:1;overflow:auto}
.nav nav a{display:flex;align-items:center;gap:10px;color:#cbd5e1;padding:8px 10px;border-radius:7px;margin-bottom:2px;font-weight:500}
.nav nav a:hover{background:rgba(255,255,255,.06);text-decoration:none}
.nav nav a.on{background:linear-gradient(90deg,rgba(99,102,241,.28),rgba(99,102,241,.08));color:#fff;box-shadow:inset 3px 0 0 #818cf8}
.nav svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.me{padding:12px 16px;border-top:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;align-items:center;gap:8px}
.me a{color:#fff;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me .linkbtn{color:#94a3b8}
.navtoggle{display:none}
.main{padding:24px clamp(16px,2vw,40px) 60px;max-width:none}
.has-nav .main{margin-left:232px}
.no-nav .main{margin:0 auto;max-width:520px;padding-top:8vh}
.main.narrow{max-width:760px}
.pagehead{margin-bottom:18px} .pagehead .sub{margin:2px 0 0;color:var(--muted)}

/* cards & grids */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:16px;box-shadow:var(--shadow)}
.card.flush{padding:0;overflow:auto} .card.flush .pad,.pad{padding:16px 18px 4px}
.card.highlight{border-color:#fcd34d;background:#fffbeb}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;align-items:center}

/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:16px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;color:var(--ink2);box-shadow:var(--shadow);font-size:12.5px;border-top:3px solid var(--line)}
a.stat:hover{text-decoration:none;border-color:#c9d2de}
.stat span{display:block;font-size:26px;font-weight:700;color:var(--ink);line-height:1.1;margin-bottom:2px;font-variant-numeric:tabular-nums}
.s-q1{border-top-color:#e58a8a}.s-red{border-top-color:var(--r)}.s-sign{border-top-color:#fcd34d}
.s-g{border-top-color:var(--g)}.s-a{border-top-color:#f59e0b}.s-r{border-top-color:var(--r)}

/* tables */
.tbl{width:100%;border-collapse:collapse}
.tbl th{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600;text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);background:#f8fafc;white-space:nowrap}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line2);vertical-align:top}
.tbl tr:last-child td{border-bottom:0}
.tbl.compact td,.tbl.compact th{padding:7px 10px}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl tr.clickable{cursor:pointer} .tbl tr.clickable:hover td{background:#f7f9fc}
.tbl tr.inactive td{opacity:.55}
.tbl tr.total td{font-weight:700;border-top:2px solid var(--line)}
.tbl tr.sep td{background:#f8fafc;font-size:12px;color:var(--ink2)}
.tbl .empty{text-align:center;color:var(--muted);padding:28px}
.tbl.sortable th{cursor:pointer} .tbl.sortable th:hover{color:var(--ink)}
.cell-q1{background:#fdeeee}.cell-q2{background:#f0f7ea}.cell-q3{background:#fef8e8}.cell-q4{background:#f4f4f4}
.bar{display:inline-block;width:42px;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--accent) var(--p),#e2e8f0 var(--p));margin-right:8px;vertical-align:middle}
.grp{font-size:10px;padding:1px 6px;border-radius:8px;margin-left:4px;text-transform:uppercase;letter-spacing:.04em}
.grp-trusted{background:#eef2ff;color:var(--accent)} .grp-doing{background:#eef5ea;color:var(--g)}

/* badges */
.rag,.gate,.st,.quad,.pill,.rec{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;line-height:1.6}
.rag-g,.gate-g,.tone-g .rec,.rec.tone-g{background:var(--g-bg);color:var(--g)}
.rag-a,.gate-a,.rec.tone-a{background:var(--a-bg);color:var(--a)}
.rag-r,.gate-r,.rec.tone-r{background:var(--r-bg);color:var(--r)}
.rag-n,.rec.tone-n{background:var(--n-bg);color:var(--n)}
.quad{color:#3b3b3b}.quad.q1{background:var(--q1)}.quad.q2{background:var(--q2)}.quad.q3{background:var(--q3)}.quad.q4{background:var(--q4)}
.st{background:var(--n-bg);color:var(--ink2)}
.st-inprogress{background:#e0e7ff;color:var(--accent)} .st-done,.st-closed{background:var(--g-bg);color:var(--g)}
.st-blocked{background:var(--r-bg);color:var(--r)} .st-awaitingsignoff{background:var(--a-bg);color:var(--a)}
.pill{background:var(--n-bg);color:var(--ink2);font-weight:500} .pill.warn{background:var(--a-bg);color:var(--a)} .pill.danger{background:var(--r-bg);color:var(--r)}
.badges-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:-6px 0 16px}

/* forms */
.form label{display:block;font-weight:500;margin-bottom:12px;color:var(--ink2);font-size:13px}
.form label small{font-weight:400;color:var(--muted)}
input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid #cbd5e1;border-radius:7px;padding:8px 10px;width:100%;margin-top:4px}
input:focus,select:focus,textarea:focus{outline:2px solid #c7d2fe;border-color:var(--accent)}
input[type=checkbox],input[type=radio]{width:auto;margin:0 6px 0 0}
input[type=file]{padding:6px;background:#f8fafc}
.form label.check,.form label.radio,label.radio{display:flex;align-items:center;font-weight:400}
fieldset{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:0 0 14px} legend{font-size:13px;font-weight:500;color:var(--ink2);padding:0 4px}
fieldset label.radio input[type=password]{margin:0 0 0 8px;flex:1}
.btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:600;font-size:13px;padding:8px 14px;border-radius:7px;border:1px solid #cbd5e1;background:#fff;color:var(--ink);cursor:pointer;white-space:nowrap}
.btn:hover{background:#f1f5f9;text-decoration:none}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)} .btn.primary:hover{background:#4338ca}
.btn.wide{width:100%;justify-content:center}
.danger-btn{color:var(--r);border-color:#e7b3ae} .danger-btn:hover{background:var(--r-bg)}
.linkbtn{background:none;border:0;padding:0;color:var(--accent);font:inherit;cursor:pointer} .linkbtn:hover{text-decoration:underline} .linkbtn.danger{color:var(--r)}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px}
.filters input,.filters select{width:auto;min-width:130px;margin:0;flex:0 1 auto} .filters input[name=q]{flex:1 1 220px}
.filters label.inline{display:flex;align-items:center;gap:8px;font-weight:500;margin:0}
.inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px} .inline-form input{flex:1;margin:0;min-width:160px}
.statuspick{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.statuspick .radio{border:1px solid #cbd5e1;border-radius:7px;padding:6px 12px;margin:0;cursor:pointer}
.statuspick .radio:has(input:checked){border-color:var(--accent);background:#eef2ff;color:var(--accent)}
.settings-tbl input{width:110px;margin:0}
.narrow-form{max-width:720px}
.login{margin-top:10px}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px;border:1px solid}
.flash-ok{background:var(--g-bg);border-color:#b8dcc6;color:#1e5e3b}
.flash-err{background:var(--r-bg);border-color:#efbcb7;color:#8a2a22}
.flash-warn,.warnbox{background:var(--a-bg);border-color:#f0d49a;color:#7a5200;padding:10px 14px;border-radius:8px}
.tabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.tabs a{padding:8px 14px;color:var(--ink2);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--accent);border-bottom-color:var(--accent)} .tabs a:hover{text-decoration:none;color:var(--ink)}
.pager{display:flex;gap:12px;align-items:center;justify-content:center}

/* key-values, timeline, feed */
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0} .kv dt{color:var(--muted);font-size:12.5px} .kv dd{margin:0}
.kv.stack{grid-template-columns:1fr} .kv.stack dt{margin-top:6px;font-weight:600;color:var(--ink2)}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{padding:10px 0 10px 16px;border-left:2px solid var(--line);margin-left:4px;position:relative}
.timeline li::before{content:"";position:absolute;left:-6px;top:15px;width:10px;height:10px;border-radius:50%;background:#c3cbd6;border:2px solid #fff}
.timeline .tl-signoff_approved::before{background:var(--g)} .timeline .tl-signoff_rejected::before,.timeline .tl-error_reported::before{background:var(--r)}
.tl-head{display:flex;flex-wrap:wrap;gap:6px;align-items:center} .tl-head .muted{margin-left:auto}
.tl-note{margin-top:4px;color:var(--ink2);background:#f8fafc;border-radius:6px;padding:6px 10px}
.feed{list-style:none;margin:0;padding:0} .feed li{padding:7px 0;border-bottom:1px solid var(--line2)} .feed li:last-child{border:0}
.errorcard{border-color:#efcfcc} .errorcard textarea{margin-bottom:10px}
details.manage summary{cursor:pointer;color:var(--accent);margin-top:12px;font-weight:500}
.filelist{margin:0 0 6px;padding-left:18px}

/* analysis */
.chartbox{position:relative;height:380px} .chartbox.short{height:260px}
.ragmix{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;text-align:center;margin:8px 0 12px}
.ragmix strong{display:block;font-size:22px;margin-top:4px}
.decision-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.dgroup{border:1px solid var(--line);border-left-width:4px;border-radius:8px;padding:10px 12px}
.dgroup h3{display:flex;justify-content:space-between;margin-bottom:6px} .dgroup h3 span{color:var(--muted)}
.dgroup ul{list-style:none;margin:0;padding:0} .dgroup li{padding:2px 0;display:flex;justify-content:space-between}
.dgroup.tone-g{border-left-color:var(--g)} .dgroup.tone-a{border-left-color:#f59e0b} .dgroup.tone-r{border-left-color:var(--r)} .dgroup.tone-n{border-left-color:#aab3bf}
.caveat{margin:14px 0 0;border-top:1px dashed var(--line);padding-top:10px}
.rec-card{border-left:5px solid #aab3bf} .rec-card.tone-g{border-left-color:var(--g)} .rec-card.tone-a{border-left-color:#f59e0b} .rec-card.tone-r{border-left-color:var(--r)}
.rec-top{display:flex;justify-content:space-between;gap:20px;align-items:center} .rec-top h2{font-size:19px;margin:2px 0 4px} .rec-top p{margin:0;color:var(--ink2)}
.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
.bigscore{text-align:center;min-width:90px} .bigscore>span:not(.rag){display:block;font-size:38px;font-weight:700;line-height:1;margin-bottom:6px} .bigscore small{display:block;color:var(--muted);margin-top:4px}

/* people tree */
.tree{list-style:none;margin:0;padding-left:14px;border-left:1px dashed #cbd5e1} .colside>.tree{padding-left:0;border:0}
.tree li{padding:4px 0 4px 8px}
.node{display:inline-block;padding:4px 10px;border-radius:7px;background:#f1f5f9;border:1px solid var(--line);font-weight:500}
.node small{display:block;font-weight:400;color:var(--muted)}
.node.role-director{background:#f5f3ff;border-color:#c4b5fd;font-weight:600} .node.role-management{background:#eef2ff;border-color:#c4d4e8} .node.role-lead{background:#fff7ed;border-color:#fed7aa} .node.role-senior{background:#eef5ea;border-color:#cfe3c3} .node.inactive{opacity:.5}

/* files */
.crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px 16px}
.crumbs .search{margin-left:auto;display:flex;gap:6px} .crumbs .search input{margin:0;width:200px}
.folders{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:16px}
.folder{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;color:var(--ink);box-shadow:var(--shadow)}
.folder:hover{text-decoration:none;border-color:#b9c6d6}
.folder svg{width:26px;height:26px;fill:#fcd34d;stroke:#c9a13e;stroke-width:1;display:block;margin-bottom:6px}
.folder strong{display:block} .folder small{color:var(--muted)}
.dropzone.drag{outline:2px dashed var(--accent);background:#f5f7ff}
.bigcode{font-size:22px;letter-spacing:.06em;background:#f1f5f9;padding:10px 14px;border-radius:8px;display:inline-block}
textarea.mono{font-size:12px}

@media (max-width:1100px){.cols{grid-template-columns:1fr}}
@media (max-width:820px){
  .has-nav .main{margin-left:0;padding:60px 16px 40px}
  .nav{transform:translateX(-100%);transition:transform .2s} .nav.open{transform:none;box-shadow:0 0 40px rgba(0,0,0,.3)}
  .navtoggle{display:block;position:fixed;top:12px;left:12px;z-index:30;background:var(--navy);color:#fff;border:0;border-radius:8px;width:40px;height:40px;font-size:18px}
  .grid2,.grid3{grid-template-columns:1fr}
  .tbl{font-size:13px}
  .rec-top{flex-direction:column;align-items:flex-start}
  .crumbs .search{margin-left:0;width:100%} .crumbs .search input{flex:1;width:auto}
}

/* v2: timer, own tasks, Dunning-Kruger */
.timerbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;background:#020617;color:#e7eef6;border-radius:10px;padding:8px 10px 8px 14px;margin:-8px 0 18px}
.timerbar a{color:#fff} .timerbar .elapsed{font-size:15px;font-weight:600;margin-left:auto;color:#fff;font-variant-numeric:tabular-nums}
.timerbar .btn{background:#fff;color:#020617;border-color:#fff}
.pulse{width:9px;height:9px;border-radius:50%;background:#5ad18a;box-shadow:0 0 0 0 rgba(90,209,138,.6);animation:pulse 1.6s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(90,209,138,0)}100%{box-shadow:0 0 0 0 rgba(90,209,138,0)}}
@media (prefers-reduced-motion:reduce){.pulse{animation:none}}
.inline-stop{margin:0}.small-btn{padding:5px 12px;font-size:12.5px}
.timer-card .big{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.timer-card .btn.start{background:#15803d;border-color:#15803d;color:#fff} .timer-card .btn.start:hover{background:#26774a}
.timer-card .btn.stop{background:#b91c1c;border-color:#b91c1c;color:#fff}
.timer-card .people{display:grid;grid-template-columns:1fr auto;gap:4px 12px;margin:10px 0 0;font-size:13px}
.src{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:1px 7px;border-radius:6px;background:#eef0f4;color:var(--ink2);margin-left:4px;vertical-align:1px}
.src-custom{background:#e9e3f6;color:#5b3f99} .shared{background:#e3f0ef;color:#1f6f6a}
.dk{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap}
.dk-r{background:var(--r-bg);color:var(--r)} .dk-a{background:var(--a-bg);color:var(--a)} .dk-b{background:#e0e7ff;color:var(--accent)}
.dk-g{background:var(--g-bg);color:var(--g)} .dk-p{background:#efe7f8;color:#6b44a6} .dk-n{background:var(--n-bg);color:var(--n)}
.dkcurve{width:100%;height:auto;max-width:360px;display:block}
.dkcurve .ax{stroke:#c9d0da;stroke-width:1} .dkcurve .curve{fill:none;stroke:#4f46e5;stroke-width:2;opacity:.55}
.dkcurve .lbl{font-size:10px;fill:var(--muted)} .dkcurve .tag{font-size:10px;fill:var(--ink2);font-weight:600}
.dkcurve circle{stroke:#fff;stroke-width:1.5} .dot-r circle{fill:#b91c1c}.dot-a circle{fill:#d08a00}.dot-b circle{fill:#4f46e5}.dot-g circle{fill:#15803d}.dot-p circle{fill:#7b4fa0}.dot-n circle{fill:#8a94a3}
.dk-row{display:grid;grid-template-columns:1fr auto;gap:6px 10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line2)} .dk-row:last-child{border:0}
.scale{display:flex;gap:4px;flex-wrap:wrap} .scale label{border:1px solid #cbd5e1;border-radius:7px;padding:4px 10px;cursor:pointer;font-size:12.5px;margin:0;display:flex;align-items:center}
.scale label:has(input:checked){border-color:var(--accent);background:#eef2ff;color:var(--accent);font-weight:600}
.scale input{position:absolute;opacity:0;width:1px;height:1px}
.weekgrid td.day{min-width:64px} .hbar{display:inline-block;height:8px;border-radius:4px;background:var(--accent);vertical-align:middle;margin-right:6px}
.chip-manual{font-size:10.5px;background:var(--a-bg);color:var(--a);padding:1px 6px;border-radius:6px;font-weight:600}
.chip-auto{font-size:10.5px;background:var(--r-bg);color:var(--r);padding:1px 6px;border-radius:6px;font-weight:600}
.stage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px}
.stage-tile{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}
.stage-tile strong{display:block;font-size:24px;font-variant-numeric:tabular-nums}
.stage-tile p{margin:6px 0 0;font-size:12px;color:var(--muted)}
.cols2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,300px);gap:16px;align-items:start}@media (max-width:820px){.cols2{grid-template-columns:1fr}}
.weekgrid td,.weekgrid th{white-space:nowrap}

.loginbrand{display:flex;align-items:center;gap:14px;margin:0 0 18px}
.loginbrand img{flex:none;border-radius:14px}
.loginbrand strong{display:block;font-size:20px;color:var(--navy);letter-spacing:-.2px}
.loginbrand span{color:var(--muted);font-size:13px}

/* v3 theme polish */
.card{border-color:#e8edf4}
.btn{border-radius:9px;transition:background .15s,border-color .15s,box-shadow .15s}
.btn.primary{box-shadow:0 1px 2px rgba(79,70,229,.25)}
.btn.primary:hover{background:#4338ca;border-color:#4338ca}
.kpi .n,.stat .n{letter-spacing:-.5px}

/* ===== v3: schedule, capacity, homes, impact, gaps ===== */
.navsec{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#64748b;padding:12px 10px 4px;font-weight:600}
.stat .n{font-size:26px;font-weight:700;color:var(--ink);line-height:1.1;margin-bottom:2px;font-variant-numeric:tabular-nums}
.stat.st-r{border-top-color:#ef4444}.stat.st-a{border-top-color:#f59e0b}.stat.st-g{border-top-color:#10b981}
.toolbar{margin-bottom:16px}.toolbar.inline-form,.btnrow .inline-form{margin-top:0}
.toolbar input,.toolbar select,.btnrow .inline-form input,.btnrow .inline-form select{margin:0;width:auto;min-width:0;flex:none}
.toolbar label{display:flex;align-items:center;gap:6px;margin:0;font-weight:500}
.colmain{min-width:0}
.kvrow,.legrow{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line2)}
.kvrow:last-child,.legrow:last-child{border-bottom:0}
.legrow i{width:10px;height:10px;border-radius:3px;flex:none}.legrow span{flex:1}.legrow b{font-variant-numeric:tabular-nums}
.ivrow{padding:6px 0;border-bottom:1px solid var(--line2);font-size:13px}.ivrow:last-child{border:0}
.mini{width:70px !important;margin:0 !important;padding:4px 6px !important;text-align:right}
.groupchecks{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:6px 0 12px}
.groupchecks legend{font-size:12px;color:var(--muted);padding:0 4px}
.groupchecks .check{display:block;margin:4px 0}
.otherpick{margin-top:4px}
/* week calendar */
.cal-card{padding:12px}
.cal{display:grid;grid-template-columns:52px repeat(7,minmax(0,1fr));gap:0 4px;--hr:34px}
.cal-hours{padding-top:46px}
.cal-hours div{height:var(--hr);font-size:10.5px;color:var(--muted);text-align:right;padding-right:6px;transform:translateY(-6px)}
.cal-hours .off{color:#cbd5e1}
.cal-head{height:46px;font-size:12px;color:var(--ink2);display:flex;flex-direction:column;justify-content:flex-start;padding:2px 4px 0;line-height:1.35}
.cal-head span{font-size:11px;color:var(--accent);font-weight:600}
.cal-body{position:relative;height:calc(var(--hr) * var(--rows));background:repeating-linear-gradient(to bottom,#f1f5f9 0,#f1f5f9 1px,transparent 1px,transparent var(--hr));border-radius:8px;overflow:hidden;border:1px solid var(--line2)}
.cal-day.wkend .cal-body{background-color:#fafafa}
.cal-off{position:absolute;left:0;right:0;background:rgba(15,23,42,.035)}
.blk{position:absolute;left:3px;right:3px;height:calc(var(--hr) / 4 - 1px);border-radius:3px;opacity:.95}
.blk.bridged{opacity:.38}
.blk.timer{left:auto;right:3px;width:30%;outline:1px solid #fff}
.ivflag{position:absolute;right:2px;font-size:11px;color:#dc2626;line-height:1;transform:translateY(-50%);text-decoration:none;z-index:2;text-shadow:0 0 2px #fff}
/* team heat */
.tbl.heat td,.tbl.heat th{padding:4px 2px;text-align:center}
.tbl.heat th.hd{font-size:10.5px;min-width:24px}.tbl.heat th.hd span{color:var(--muted);font-weight:500}
.tbl.heat td.who{text-align:left;padding:6px 10px;white-space:nowrap}
.tbl.heat .wkend{background:#fafafa}
.hc{position:relative;font-size:10.5px;font-variant-numeric:tabular-nums}
.hc a{display:block;border-radius:5px;padding:4px 0;color:inherit;min-height:22px}
.hc.l1 a{background:#e0e7ff}.hc.l2 a{background:#a5b4fc}.hc.l3 a{background:#6366f1;color:#fff}.hc.l4 a{background:#3730a3;color:#fff}
.hc .ooh{position:absolute;top:2px;right:3px;width:6px;height:6px;border-radius:50%;background:#f59e0b}
.hc .ivm{position:absolute;bottom:1px;left:50%;margin-left:-4px;border:4px solid transparent;border-bottom:6px solid #dc2626;border-top:0}
/* capacity */
.ubadge{display:inline-block;padding:2px 9px;border-radius:999px;font-weight:600;font-size:12px}
.u-over{background:var(--r-bg);color:var(--r)}.u-ok{background:var(--g-bg);color:var(--g)}.u-under{background:var(--a-bg);color:var(--a)}
.homebar{display:grid;grid-template-columns:110px 1fr auto;gap:8px;align-items:center;font-size:12.5px;margin:6px 0}
.homebar .track{height:8px;background:#f1f5f9;border-radius:6px;overflow:hidden}.homebar i{display:block;height:100%;border-radius:6px}
.homebar i.ok{background:#10b981}.homebar i.mid{background:#f59e0b}.homebar i.low{background:#ef4444}
/* homes */
.homegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;margin-bottom:16px}
.home{margin:0;border-top:4px solid var(--line)}.home-g{border-top-color:#10b981}.home-a{border-top-color:#f59e0b}.home-r{border-top-color:#ef4444}
.home-top{display:flex;justify-content:space-between;align-items:baseline}.home-top h2{margin:0 0 8px}
.home-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}
.home-nums div{background:#f8fafc;border-radius:8px;padding:6px 8px}.home-nums b{display:block;font-size:17px}.home-nums span{font-size:11px;color:var(--muted)}
.home-gap{font-size:12.5px;margin-bottom:8px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.chip{display:inline-flex;gap:4px;align-items:center;background:var(--accent-soft);color:#3730a3;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500}
.chip.ghost{background:#f1f5f9;color:var(--ink2)}.chip small{color:var(--muted)}
.admpick{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px 16px;max-height:340px;overflow:auto}
.admrow{display:flex;align-items:center;gap:8px;margin:0;font-weight:400}.admrow span{flex:1}.admrow .pct{width:64px;margin:0;padding:4px 6px}
/* impact & gaps */
.kind{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;color:var(--c);background:color-mix(in srgb,var(--c) 14%,#fff)}
.prio{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px}
.prio-high{background:var(--r-bg);color:var(--r)}.prio-medium{background:var(--a-bg);color:var(--a)}.prio-low{background:var(--n-bg);color:var(--n)}
.tbl.gaps td{vertical-align:top}
@media (max-width:900px){.cal{grid-template-columns:40px repeat(7,minmax(36px,1fr));overflow-x:auto}.home-nums{grid-template-columns:repeat(2,1fr)}}
/* back / close bar */
.taskbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-6px 0 14px;flex-wrap:wrap}
.taskbar-nav{display:flex;align-items:center;gap:8px}
.backbtn{background:#fff;font-weight:600}
.closex{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:var(--ink2);font-size:22px;line-height:1;text-decoration:none}
.closex:hover{background:#fee2e2;color:#b91c1c;border-color:#fecaca;text-decoration:none}
tr.justopened td{background:#eef2ff !important;transition:background 2s}
@media (max-width:640px){.taskbar{position:sticky;top:0;z-index:15;background:var(--bg);padding:8px 0;margin-top:0}.taskbar-nav .small{display:none}}
.tsblk{position:absolute;left:0;width:6px;border-radius:0 3px 3px 0;background:repeating-linear-gradient(45deg,#0d9488 0 3px,#5eead4 3px 6px);z-index:1}
.blk{left:9px}
.cal-head .tsh{font-style:normal;color:#0d9488;font-weight:600;margin-left:4px}
.hc.fromts a{box-shadow:inset 0 -3px 0 #0d9488}

/* ===== PDF / print ===== */
.printhead{display:none}
.pagehead.with-pdf{position:relative;padding-right:150px}
.pdfbtn{position:absolute;right:0;top:0}
@media (max-width:640px){.pagehead.with-pdf{padding-right:0}.pdfbtn{position:static;margin-bottom:8px}}
@media print{
  @page{size:A4 landscape;margin:12mm 10mm}
  html,body{background:#fff !important;font-size:11px}
  .nav,.navtoggle,.timerbar,.noprint,.btnrow,.toolbar,.taskbar,.pdfbtn,details.manage,.closex,form.card.form,.flash,.inline-stop,.btn{display:none !important}
  .has-nav .main,.main{margin:0 !important;padding:0 !important;max-width:none !important}
  .printhead{display:flex !important;align-items:center;gap:12px;border-bottom:2px solid #4f46e5;padding-bottom:8px;margin-bottom:12px}
  .printhead strong{display:block;font-size:13px;color:#0f172a}.printhead span{display:block;font-size:16px;font-weight:700;color:#0f172a}
  .printhead .ph-meta{margin-left:auto;text-align:right;font-size:9.5px;color:#475569}
  .pagehead h1{font-size:15px}.pagehead{margin-bottom:8px}
  .card,.stat,.home{box-shadow:none !important;border:1px solid #cbd5e1 !important;break-inside:avoid;page-break-inside:avoid}
  .card.flush{overflow:visible !important;break-inside:auto !important;page-break-inside:auto !important}
  .card:has(table){break-inside:auto !important;page-break-inside:auto !important}
  thead{display:table-header-group}
  tfoot{display:table-row-group}
  .cols,.cols2{grid-template-columns:minmax(0,1fr) 30% !important}
  .stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr)) !important;gap:6px !important;margin-bottom:8px !important}
  .stat{padding:6px 10px !important}.stat .n{font-size:18px !important}
  .cal-card{break-inside:auto !important;page-break-inside:auto !important;padding:4px !important}
  .cols{gap:8px !important}
  .tbl th,.tbl td{padding:4px 6px !important}
  .tbl tr{break-inside:avoid}
  canvas{max-width:100% !important}
  a{color:inherit !important;text-decoration:none !important}
  *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}
  .cal{--hr:20px !important}.cal-hours{padding-top:40px !important}.cal-head{height:40px !important}
}
/* pay runs */
.runst{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px}
.runst-draft{background:#e0e7ff;color:#3730a3}.runst-approved{background:var(--a-bg);color:var(--a)}.runst-paid{background:var(--g-bg);color:var(--g)}
.btn.approve{background:#15803d;border-color:#15803d;color:#fff}
.tbl.payrun td{vertical-align:top}.tbl.payrun tr.excluded td{opacity:.45}
.personpick{margin:2px 0 0;padding:4px 6px;font-size:12.5px;max-width:200px}
.adjnote{margin:4px 0 0;padding:4px 6px;font-size:12px;width:120px}
.flag{display:block;font-size:11px;margin-bottom:3px;padding:1px 7px;border-radius:6px;width:max-content;max-width:150px;white-space:normal}
.flag-r{background:var(--r-bg);color:var(--r)}.flag-a{background:var(--a-bg);color:var(--a)}.flag-n{background:#f1f5f9;color:#64748b}
details.days summary,details.rateedit summary{cursor:pointer;color:var(--accent);font-size:12px;margin-top:4px}
.daygrid{display:grid;grid-template-columns:repeat(7,minmax(46px,1fr));gap:3px;margin-top:6px;max-width:380px}
.daygrid span{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:2px 4px;font-size:10.5px;color:#64748b;line-height:1.3}
.daygrid span b{display:block;color:#0f172a;font-size:12px}
.daygrid span.we{background:#fef3c7;border-color:#fcd34d}
details.rateedit select,details.rateedit input{margin:3px 0;padding:3px 5px;font-size:12px}
.tbl.proposal tfoot td{border-top:2px solid #0f172a}
.signoff{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.signoff div{border-top:1px solid #94a3b8;padding-top:6px}.signoff span{display:block;font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.signoff b{display:block;min-height:22px;margin-top:20px}.signoff small{color:#64748b}
@media print{.tbl.payrun input,.tbl.payrun select{border:0 !important;background:none !important;padding:0 !important;appearance:none}details.rateedit{display:none}.signoff{break-inside:avoid}}
.tbl.payrun{font-size:12.5px}.tbl.payrun td,.tbl.payrun th{padding:8px 7px}
.tbl.payrun .mini{width:58px !important}
.personpick{max-width:170px}
.daygrid{grid-template-columns:repeat(7,42px);max-width:none}
.daygrid span{padding:1px 3px;font-size:10px}.daygrid span b{font-size:11px}
.adjnote{width:96px}
.tbl.payrun td.ratecell{min-width:118px}

.buildtime{margin:24px 0 0;font-size:11px;color:#94a3b8;text-align:right}

/* v8 – evidence links */
.evbox{border:1px dashed var(--line,#cbd5e1);border-radius:10px;padding:10px 12px;margin:4px 0 10px;background:#f8fafc}
.evbox[hidden]{display:none}
.evbox legend{font-weight:600;font-size:13px;padding:0 4px}
.linkrow{display:grid;grid-template-columns:2fr 1.3fr auto;gap:8px;margin:6px 0}
.evbox .linkrow{grid-template-columns:2fr 1.3fr}
.linklist{list-style:none;padding:0;margin:0 0 10px}
.linklist li{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:7px 0;border-bottom:1px solid #eef2f7}
.linklist li a{font-weight:600;word-break:break-word}
.linklist form.inline{display:inline;margin-left:auto}
.evsum{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0}
.evlink{display:inline-block;padding:3px 10px;border-radius:999px;background:#eef2ff;font-size:13px;text-decoration:none}
@media (max-width:640px){.linkrow,.evbox .linkrow{grid-template-columns:1fr}}
@media print{.linklist li a::after{content:" (" attr(href) ")";font-weight:400;font-size:11px;color:#475569}}
/* v9 – labelled schedule */
.seg{position:absolute;left:9px;right:3px;z-index:2;display:flex;flex-direction:column;justify-content:flex-start;padding:1px 4px;overflow:hidden;border-radius:4px;border:1px solid rgba(15,23,42,.18);text-decoration:none;color:#0f172a;min-height:14px}
.seg span{font-size:10.5px;font-weight:600;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(255,255,255,.86);border-radius:3px;padding:0 3px;align-self:flex-start;max-width:100%}
.seg small{font-size:9.5px;color:#334155;background:rgba(255,255,255,.7);border-radius:3px;padding:0 3px;margin-top:1px;align-self:flex-start}
.seg.hastask{border-color:#4f46e5}
.seg.hastask span{color:#3730a3}
.seg.likely{border-style:dashed}
a.seg:hover{outline:2px solid #4f46e5}
.taskrow{display:flex;flex-direction:column;padding:6px 0;border-bottom:1px solid #eef2f7}
.taskrow a{text-decoration:none}
.timeline td{vertical-align:top}
.timeline .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:baseline}
.timeline .tsrow td{background:#f0fdfa}
.nowrap{white-space:nowrap}
@media print{.seg span,.seg small{background:none}}
.cal-card.wide{padding:14px}
.cal-card.wide .cal{--hr:40px}
.schedgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;align-items:start}
.schedgrid>.card{margin:0}
/* v9 – cascade view */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 14px;font-size:14px}
.crumbs a{padding:4px 10px;border-radius:999px;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--ink2)}
.crumbs a.on{background:#4f46e5;color:#fff;border-color:#4f46e5}
.crumbs a small{opacity:.7;font-size:11px}
.crumbs>span{color:#94a3b8}
.levelstrip{display:flex;align-items:stretch;gap:6px;margin:0 0 16px;flex-wrap:wrap}
.lvl{flex:1;min-width:92px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 12px;border-left:4px solid #cbd5e1}
.lvl b{display:block;font-size:22px;line-height:1.1}.lvl span{font-size:12px;color:var(--ink2)}
.lvl.empty{opacity:.45}
.lvl-arrow{align-self:center;color:#94a3b8;font-style:normal}
.lvl-director,.lvlb-director{border-left-color:#7c3aed !important}
.lvl-management,.lvlb-management{border-left-color:#4f46e5 !important}
.lvl-senior,.lvlb-senior{border-left-color:#0d9488 !important}
.lvl-lead,.lvlb-lead{border-left-color:#ea580c !important}
.lvl-admin,.lvlb-admin{border-left-color:#64748b !important}
.lvlc-director{background:#f5f3ff}.lvlc-management{background:#eef2ff}.lvlc-senior{background:#f0fdfa}.lvlc-lead{background:#fff7ed}.lvlc-admin{background:#f1f5f9}
.orgfocus{border-left:5px solid #cbd5e1}
.of-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start}
.of-head h2{margin:0 0 2px}
.of-nums,.oc-nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px;margin-top:12px}
.of-nums>div,.oc-nums>div{background:#f8fafc;border-radius:10px;padding:8px 10px;border-top:3px solid transparent}
.of-nums b,.oc-nums b{display:block;font-size:20px;line-height:1.15}
.of-nums span,.oc-nums span{font-size:11.5px;color:var(--ink2)}
.of-nums .st-r,.oc-nums .st-r{border-top-color:#ef4444}.of-nums .st-a,.oc-nums .st-a{border-top-color:#f59e0b}.of-nums .st-g,.oc-nums .st-g{border-top-color:#10b981}
.oc-nums .danger b{color:#dc2626}.oc-nums .warn b{color:#d97706}
.sectitle{margin:18px 0 10px;font-size:16px}
.orggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-bottom:16px}
.orgcard{border-left:5px solid #cbd5e1;margin:0;display:flex;flex-direction:column;gap:8px}
.oc-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.oc-name{font-weight:700;font-size:15.5px;text-decoration:none}
.oc-team{display:flex;flex-wrap:wrap;gap:4px}.oc-team .chip{font-size:11.5px;padding:2px 8px}
.oc-nums{margin-top:0;grid-template-columns:repeat(4,1fr)}
.oc-foot{margin-top:auto;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:4px}
.btn.small{padding:5px 10px;font-size:12.5px}
.ragbar{display:flex;height:16px;border-radius:999px;overflow:hidden;background:#f1f5f9;margin:6px 0 2px;min-width:120px}
.ragbar i{font-style:normal;font-size:10px;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;min-width:14px}
.rb-g{background:#10b981}.rb-a{background:#f59e0b}.rb-r{background:#ef4444}.rb-n{background:#94a3b8}.rb-x{background:#e2e8f0;color:#64748b !important}
.cascade td.st-r{color:#dc2626;font-weight:600}.cascade td.st-a{color:#b45309}.cascade td.st-g{color:#047857}
.cascade .lvlrow-director td:first-child,.cascade .lvlrow-management td:first-child{font-weight:700}
@media (max-width:640px){.oc-nums{grid-template-columns:repeat(2,1fr)}.lvl-arrow{display:none}}
.oc-links{font-size:12.5px;white-space:nowrap}
.oc-nums b{font-size:18px}.oc-nums>div{padding:7px 8px;min-width:0}.oc-nums span{white-space:nowrap}
.phasepick{display:block;margin:0 0 8px}.phasepick select{margin-top:3px;width:100%}
/* v9 – 10-80-10 */
.notice{background:#fffbeb;border:1px solid #fde68a;color:#92400e;border-radius:10px;padding:10px 14px;font-size:13.5px}
.tri{display:grid;grid-template-columns:1fr 2fr 1fr;gap:16px;align-items:start;margin-bottom:16px}
.tri>.card{margin:0}
.trig{border-top:4px solid #cbd5e1}.trig-g{border-top-color:#10b981}.trig-a{border-top-color:#6366f1}.trig-r{border-top-color:#ef4444}
.trig-head{display:flex;justify-content:space-between;align-items:baseline}.trig-head h2{margin:0}.trig-head .big{font-size:28px;font-weight:700}
.trig-action{margin:6px 0 4px}.trig-tips{margin:0 0 10px;padding-left:18px;color:var(--ink2)}
.trig-a table tbody{columns:2;display:block}.trig-a table tr{display:table;width:100%;break-inside:avoid}
.splitrow{display:flex;align-items:center;gap:10px;margin:8px 0}.splitlbl{width:56px;font-size:12px;color:var(--ink2);font-weight:600}
.splitbar{flex:1;display:flex;height:28px;border-radius:8px;overflow:hidden;background:#f1f5f9}
.splitbar i{font-style:normal;font-size:11.5px;font-weight:600;color:#fff;display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;min-width:4px}
.splitbar.sbmini{height:10px;border-radius:5px;margin:4px 0 2px;width:100%}
.sb-brief{background:#0ea5e9}.sb-do{background:#6366f1}.sb-hands{background:#f59e0b}.sb-review{background:#10b981}
.mgrrow{padding:8px 0;border-bottom:1px solid #eef2f7}
.legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
@media (max-width:1000px){.tri{grid-template-columns:1fr}.trig-a table tbody{columns:1}}
/* v9 – people & tasks map */
.mapwrap{overflow-x:auto;padding:8px 0}
.relmap{display:block;margin:0 auto;font-family:inherit}
.relmap .colh{font-size:11px;font-weight:700;fill:#64748b;letter-spacing:.06em;text-transform:uppercase}
.relmap path.lk{fill:none;stroke-width:1.3;opacity:.28;transition:opacity .12s}
.relmap path.lk.acc{stroke-dasharray:4 3}
.relmap.hl path.lk{opacity:.05}.relmap.hl path.lk.on{opacity:.95;stroke-width:2}
.relmap text{font-size:11.5px;fill:#0f172a}
.relmap .pn text{font-weight:600;font-size:12px}
.relmap .cnt{fill:#64748b;font-weight:400;font-size:10.5px}
.relmap .code{font-weight:700;fill:#3730a3}
.relmap .tn.spof rect{stroke:#dc2626;stroke-width:2.5}
.relmap .tn.spof text{fill:#991b1b}
.relmap .tn.orphan text{fill:#94a3b8;font-style:italic}
.relmap.hl .pn,.relmap.hl .tn{opacity:.35}.relmap.hl .pn.on,.relmap.hl .tn.on{opacity:1}
.relmap .pn.focus circle{stroke:#0f172a;stroke-width:3}
.relmap a:hover text{text-decoration:underline}
.spofkey{background:#fff !important;outline:2.5px solid #dc2626;outline-offset:-2px}
.spofrow{padding:8px 0;border-bottom:1px solid #eef2f7}.spofrow .chips{margin-top:5px}
.chip.gate-r{background:var(--r-bg);color:var(--r)}.chip.gate-a{background:var(--a-bg);color:var(--a)}.chip.gate-g{background:var(--g-bg);color:var(--g)}
@media print{.relmap path.lk{opacity:.45}}
/* v9 – gaps trends */
.chartgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.chartgrid>.card{margin:0}
.chartbox{height:300px;position:relative}
@media (max-width:1000px){.chartgrid{grid-template-columns:1fr}}
@media print{.chartgrid{grid-template-columns:1fr 1fr}.chartbox{height:200px}}
/* v9.1 – people picker on the map */
.pickcard{padding:12px 16px}
.pickrow{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}
.peoplepick{flex:1 1 420px;border:1px solid var(--line);border-radius:10px;background:#fff}
.peoplepick summary{cursor:pointer;padding:9px 12px;list-style:none}
.peoplepick summary::-webkit-details-marker{display:none}
.peoplepick summary::before{content:"▸ ";color:#64748b}.peoplepick[open] summary::before{content:"▾ "}
.pp-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:0 12px 8px}
.pp-tools input{flex:1;min-width:160px}
.pp-list{max-height:280px;overflow:auto;padding:0 12px 10px;columns:3 200px;column-gap:16px}
.pp-grp{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin:8px 0 3px;break-after:avoid}
.pp-item{display:block;padding:3px 0;font-size:13.5px;cursor:pointer;break-inside:avoid}
.pp-item input{margin-right:5px}
.pickopts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.selchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}
.selchip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:#fff;border:1.5px solid var(--c);color:var(--ink);font-size:13px;text-decoration:none}
.selchip i{width:9px;height:9px;border-radius:50%;background:var(--c)}
.selchip span{color:#94a3b8;font-weight:700}.selchip:hover span{color:#dc2626}
.pdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:baseline}
.ovwrap{overflow-x:auto}
.overlap td,.overlap th{text-align:center}.overlap tbody th{text-align:left;white-space:nowrap;font-weight:600}
.overlap td.diag{background:#f1f5f9;font-weight:700}
.overlap td.has{background:rgba(79,70,229,var(--o));color:#fff;font-weight:700}
.chip.solo{outline:2px solid #dc2626;outline-offset:-2px}
.relmap text.dim{fill:#94a3b8;font-weight:500}
.relmap .shr{fill:#4f46e5;font-weight:700}
.relmap.bysel path.lk{opacity:.55;stroke-width:1.6}
.relmap.bysel path.lk.co{opacity:.18;stroke-width:1}
.relmap.bysel.hl path.lk{opacity:.05}.relmap.bysel.hl path.lk.on{opacity:.95}
.relmap .tn.shared text{font-weight:600}
@media print{.pickcard .peoplepick{display:none}}
.bdname{min-width:190px}.breakdown th{white-space:nowrap}.overlap tbody th{text-transform:none;letter-spacing:0;font-size:13px;color:var(--ink)}
/* v10 – projects */
.hbadge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.h-g.hbadge{background:var(--g-bg);color:var(--g)}.h-a.hbadge{background:var(--a-bg);color:var(--a)}.h-r.hbadge{background:var(--r-bg);color:var(--r)}.h-n.hbadge{background:#f1f5f9;color:#475569}
.pstat{display:inline-block;padding:1px 8px;border-radius:6px;font-size:11.5px;font-weight:600;background:#f1f5f9;color:#475569}
.ps-active{background:#eef2ff;color:#4338ca}.ps-planning{background:#f0f9ff;color:#0369a1}.ps-onhold{background:#fff7ed;color:#c2410c}.ps-done{background:#ecfdf5;color:#047857}.ps-cancelled{background:#f1f5f9;color:#64748b;text-decoration:line-through}
.progress{height:8px;border-radius:999px;background:#eef2f7;overflow:hidden;margin:8px 0 6px}
.progress i{display:block;height:100%;background:linear-gradient(90deg,#6366f1,#4f46e5);border-radius:999px}
.stat .progress{margin:8px 0 0}
.projgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.projcard{margin:0;display:flex;flex-direction:column;gap:4px;text-decoration:none;color:var(--ink);border-top:4px solid #cbd5e1;transition:box-shadow .15s,transform .15s}
.projcard:hover{text-decoration:none;box-shadow:0 6px 18px rgba(15,23,42,.08);transform:translateY(-1px)}
.ph-g{border-top-color:#10b981}.ph-a{border-top-color:#f59e0b}.ph-r{border-top-color:#ef4444}.ph-n{border-top-color:#cbd5e1;opacity:.85}
.pc-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.pc-top h2{margin:0;font-size:16px}
.pc-nums{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--ink2)}
.pc-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;margin-top:4px}
.pc-why{color:#92400e;background:#fffbeb;border-radius:8px;padding:5px 8px;margin-top:4px}
.ph-r .pc-why{color:#991b1b;background:#fef2f2}
.projhead{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.ph-badges{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.hcard{border-left:4px solid #f59e0b}.hcard.h-r{border-left-color:#ef4444}.hcard ul{margin:0;padding-left:18px}
.mslist{list-style:none;margin:0;padding:0}
.mslist li{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid #eef2f7;flex-wrap:wrap}
.mslist .ms-body{flex:1;min-width:200px}
.mscheck{width:22px;height:22px;border-radius:6px;border:2px solid #cbd5e1;background:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:#fff;cursor:pointer;padding:0;line-height:1}
.mslist li.done .mscheck{background:#10b981;border-color:#10b981}
.mslist li.done strong{text-decoration:line-through;color:var(--ink2)}
.mslist li.late .mscheck{border-color:#ef4444}
.msedit summary{cursor:pointer;color:var(--accent)}.msedit form{margin-top:6px}
.mini-select{padding:3px 6px;font-size:12.5px;max-width:170px}
tr.muted-row td{opacity:.6}
.projpill{background:#eef2ff;color:#3730a3;text-decoration:none;font-weight:600}
.dproj{display:block;padding:8px 0;border-bottom:1px solid #eef2f7;text-decoration:none;color:var(--ink)}
.dproj .dp-name{font-weight:600;margin-right:6px}.dproj .progress{margin:6px 0 2px;height:6px}
/* board */
.board{display:grid;grid-template-columns:repeat(5,minmax(200px,1fr));gap:12px;overflow-x:auto;padding-bottom:6px}
.bcol{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:8px;min-height:120px;border-top:3px solid #94a3b8}
.bc-inprogress{border-top-color:#6366f1}.bc-blocked{border-top-color:#ef4444}.bc-awaitingsignoff{border-top-color:#f59e0b}.bc-done{border-top-color:#10b981}
.bhead{font-weight:700;font-size:13px;padding:2px 4px 8px;display:flex;justify-content:space-between}.bhead span{color:#64748b;font-weight:600}
.bcard{display:block;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-bottom:8px;text-decoration:none;color:var(--ink);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.bcard:hover{text-decoration:none;border-color:#a5b4fc}
.bc-top{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:12.5px}.bc-top strong{color:#3730a3}
.bc-title{font-size:13px;margin:3px 0;line-height:1.35}
.bc-foot{display:flex;justify-content:space-between;gap:6px;margin-top:4px;color:var(--ink2)}
.bempty{color:#cbd5e1;text-align:center;padding:14px}
/* gantt */
.gantt{overflow-x:auto}
.g-head,.g-row{display:grid;grid-template-columns:240px minmax(520px,1fr);gap:10px;align-items:center}
.g-head{height:26px;border-bottom:1px solid var(--line);margin-bottom:4px}
.g-row{min-height:34px;border-bottom:1px solid #f1f5f9}
.g-row.g-task{min-height:24px}.g-row.g-task .g-label{font-size:12.5px;padding-left:14px}
.g-row.g-msrow{background:#fafbff}.g-row.g-msrow .g-label{font-weight:600;font-size:13px}
.g-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13.5px}
.g-track{position:relative;height:100%;min-height:22px}
.g-month{position:absolute;top:4px;font-size:11px;color:#64748b;white-space:nowrap;padding-left:3px;border-left:1px solid #e2e8f0}
.g-grid{position:absolute;top:0;bottom:0;width:1px;background:#f1f5f9}
.g-today{position:absolute;top:-2px;bottom:-2px;width:2px;background:#ef4444;opacity:.55;z-index:2}
.g-bar{position:absolute;top:50%;transform:translateY(-50%);height:16px;border-radius:6px;background:#c7d2fe;overflow:hidden;z-index:1;display:block}
.g-bar i{display:block;height:100%;background:#4f46e5}
.gb-g{background:#a7f3d0}.gb-g i{background:#059669}.gb-a{background:#fde68a}.gb-a i{background:#d97706}.gb-r{background:#fecaca}.gb-r i{background:#dc2626}.gb-n{background:#e2e8f0}.gb-n i{background:#64748b}
.g-ms{position:absolute;top:50%;width:11px;height:11px;background:#0f172a;transform:translate(-50%,-50%) rotate(45deg);z-index:3;border:2px solid #fff}
.g-ms.big{width:14px;height:14px}.g-ms.done{background:#10b981}.g-ms.late{background:#ef4444}
.g-tbar{position:absolute;top:50%;transform:translateY(-50%);height:10px;border-radius:5px;background:#94a3b8;z-index:1}
.ts-inprogress{background:#6366f1}.ts-awaitingsignoff{background:#f59e0b}.ts-blocked,.g-tbar.late{background:#ef4444}.ts-done,.ts-closed{background:#10b981}
.g-nodate{position:absolute;top:50%;transform:translateY(-50%);left:4px}
.g-key-ms{background:#0f172a;transform:rotate(45deg);width:9px !important;height:9px !important}
.g-key-today{background:#ef4444;width:2px !important;height:12px !important;border-radius:0 !important}
.feed.updates li{padding:12px 0;border-bottom:1px solid #eef2f7}
@media (max-width:900px){.board{grid-template-columns:repeat(5,220px)}.g-head,.g-row{grid-template-columns:150px minmax(420px,1fr)}}
@media print{.board{grid-template-columns:repeat(5,1fr)}.bcard{break-inside:avoid}.projcard{break-inside:avoid}}
/* v10.1 – clickable schedule blocks + details panel */
button.seg{background:transparent;font:inherit;cursor:pointer;text-align:left;margin:0;appearance:none}
button.seg:hover{outline:2px solid #4f46e5;outline-offset:-1px;background:rgba(79,70,229,.06)}
button.seg:focus-visible{outline:2px solid #4f46e5}
.seg.sel{outline:2.5px solid #0f172a !important;background:rgba(15,23,42,.06)}
.seg.n1{padding:0 3px;border-style:dotted;min-height:9px}
.seg.n1 span{font-size:9px;line-height:1.05;padding:0 2px;font-weight:700}
.cal-card.wide .cal{--hr:48px}
.tsblk{cursor:pointer}.tsblk:hover{width:9px}
tr.clickrow{cursor:pointer}tr.clickrow:hover td{background:#f8fafc}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,100vw);background:#fff;z-index:60;box-shadow:-12px 0 40px rgba(15,23,42,.18);display:flex;flex-direction:column;border-left:1px solid var(--line)}
.drawer[hidden],.drawer-scrim[hidden]{display:none}
.drawer-scrim{position:fixed;inset:0;background:rgba(15,23,42,.25);z-index:59}
.dr-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:16px 18px 10px;border-bottom:1px solid var(--line)}
.dr-head h2{margin:4px 0 0;font-size:17px;line-height:1.3}
.dr-when{font-size:13px;color:var(--ink2)}
.dr-body{padding:12px 18px 24px;overflow:auto;flex:1}
.dr-body h3{font-size:13px;margin:16px 0 6px;color:var(--ink)}
.dr-task{background:#f5f7ff;border:1px solid #e0e7ff;border-radius:10px;padding:10px 12px}
.dr-task .small{margin-top:5px}.dr-code{font-weight:700}
.dr-list{list-style:none;margin:0;padding:0}.dr-list li{padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:13.5px}
.dr-areas{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:13px}.dr-areas i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}
.dr-ev{list-style:none;margin:0;padding:0}
.dr-ev li{display:grid;grid-template-columns:42px 8px 1fr;gap:8px;align-items:baseline;padding:5px 0;border-bottom:1px solid #f1f5f9;font-size:13px}
.dr-ev .t{color:var(--ink2);font-variant-numeric:tabular-nums}.dr-ev .d{width:8px;height:8px;border-radius:50%;align-self:center}.dr-ev .x{word-break:break-word}
@media print{.drawer,.drawer-scrim{display:none !important}}
/* v11 – focus timer (work / break rounds) */
.focuschip{display:inline-flex;align-items:baseline;gap:6px;background:rgba(255,255,255,.1);border-radius:999px;padding:3px 10px}
.focuschip b{font-size:15px;color:#fff;font-variant-numeric:tabular-nums}.focuschip .fc-lbl{font-size:12px;color:#cbd5e1}
.timerbar .elapsed{opacity:.75;font-size:13px}
.timerbar.focusbar .elapsed{margin-left:auto}
.timerbar .ghostbtn{background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}
.timerbar .ghostbtn:hover{background:rgba(255,255,255,.12)}
.timerbar.due{background:#b45309;animation:duepulse 1.6s ease-in-out infinite}
.timerbar.due .focuschip{background:rgba(255,255,255,.2)}
@keyframes duepulse{0%,100%{box-shadow:0 0 0 0 rgba(245,158,11,.5)}50%{box-shadow:0 0 0 6px rgba(245,158,11,0)}}
.timerbar.breakbar{background:#065f46}
.timerbar.breakbar .brk-ico{font-size:18px}
.timerbar.breakbar .brk-left{font-size:18px;color:#fff;margin-left:auto;font-variant-numeric:tabular-nums}
.timerbar.breakbar .brk-sub{color:#a7f3d0;font-size:13px}
.timerbar.breakbar.due{background:#0f766e;animation:duepulse 1.6s ease-in-out infinite}
.timerbar.breakbar .btn:not(.ghostbtn){background:#fff;color:#065f46;border-color:#fff;font-weight:600}
.focusrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:-2px 0 10px}
.focustoggle{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 11px 4px 5px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;color:var(--ink2)}
.focustoggle i{width:28px;height:16px;border-radius:999px;background:#cbd5e1;position:relative;transition:background .15s}
.focustoggle i::after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;transition:left .15s}
.focustoggle.on{color:#065f46;border-color:#6ee7b7;background:#ecfdf5}.focustoggle.on i{background:#10b981}.focustoggle.on i::after{left:14px}
.chip-focus{display:inline-block;padding:0 6px;border-radius:5px;background:#ecfdf5;color:#047857;font-size:11px;font-weight:600}
.presetrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;align-self:end;padding-bottom:10px}
/* v11.1 – cascade: choose top, levels and people */
.orgctl{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-start;padding:12px 16px}
.oc-topsel{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--ink2);font-weight:600;min-width:240px}
.oc-topsel select{font-size:14px}
.oc-lv{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-top:18px}
.lvchk{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);font-size:13px;cursor:pointer}
.lvchk:has(input:checked){border-color:#a5b4fc;box-shadow:inset 0 0 0 1px #a5b4fc}
.oc-pick{flex:1 1 320px}
.oc-btns{display:flex;gap:8px;padding-top:18px}
a.lvl{text-decoration:none;color:var(--ink);cursor:pointer;transition:box-shadow .12s}
a.lvl:hover{box-shadow:0 2px 10px rgba(15,23,42,.08)}
a.lvl.on{box-shadow:inset 0 0 0 2px #4f46e5}
.oc-path{font-size:11.5px}
/* v11.2 – currencies */
.curswitch{display:inline-flex;margin-left:auto}
.curswitch label{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink2)}
.curswitch select{padding:5px 8px;font-size:13px}
.btnrow .curswitch{order:99}
.curbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:0 0 14px}
.curbar label{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13.5px}
.fxbox{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:10px 0}
.fxbox legend{font-weight:600;font-size:13px;padding:0 4px}
.fxbase{display:flex;align-items:center;gap:8px;font-size:13px;margin-bottom:6px}
.fxrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:5px 0;font-size:13.5px}
.fxrow[hidden]{display:none}
.fxrow span{min-width:58px}.fxrow input{width:120px}.fxrow b{min-width:34px}
.alt{font-weight:400}
.fxauto{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:flex-end;background:#f8fafc;border-radius:8px;padding:8px 10px;margin:6px 0 10px}
.fxauto[hidden]{display:none}.fxauto label{margin:0}
.fxstatus{flex-basis:100%}
.fxin[readonly]{background:#f1f5f9;color:var(--ink2)}
.fxnow{margin:-6px 0 14px}
/* v12 – leave */
.lvst{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11.5px;font-weight:600}
.lv-g{background:var(--g-bg);color:var(--g)}.lv-a{background:var(--a-bg);color:var(--a)}.lv-r{background:var(--r-bg);color:var(--r)}.lv-n{background:#f1f5f9;color:#64748b}
.lv-em{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca}
.lvcheck{border-radius:8px;padding:8px 12px;font-size:13.5px;margin:2px 0 10px}
.lvcheck[hidden]{display:none}
.lvcheck.ok{background:#ecfdf5;color:#065f46}.lvcheck.em{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.lvcheck.bad{background:#f1f5f9;color:#475569}
ul.tight{margin:0;padding-left:18px}ul.tight li{margin:3px 0}
.lvcard{border-left:4px solid #f59e0b}.lvcard.is-em{border-left-color:#ef4444}
.lv-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.lv-head h2{margin:0 0 3px}.lv-badges{text-align:right}
.lv-body{display:grid;grid-template-columns:1fr 1.4fr;gap:14px;margin:12px 0}
.lv-body p{margin:3px 0 0;white-space:pre-line}
.lv-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.lv-facts>div{background:#f8fafc;border-radius:8px;padding:8px 10px;font-size:13.5px}
.lbl{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b;margin-bottom:3px}
.lv-decide{display:flex;gap:8px;flex-wrap:wrap;align-items:center;border-top:1px solid var(--line);padding-top:10px;margin:0}
.lv-decide input{flex:1;min-width:220px}
.lvcal td.lvc{text-align:center;font-weight:700;font-size:11px;color:#fff}
.lvcal td.lv-approved,.lvkey.lv-approved{background:#10b981}
.lvcal td.lv-pending,.lvkey.lv-pending{background:repeating-linear-gradient(45deg,#fbbf24 0 4px,#fde68a 4px 8px);color:#92400e}
.lvcal td.half{background-image:linear-gradient(135deg,#10b981 50%,transparent 50%);color:#065f46}
.lvcal th.today{background:#eef2ff;color:#4338ca}
.lvkey{display:inline-block;width:14px;height:12px;border-radius:3px;margin-right:5px;vertical-align:middle}
.monthlbl{font-size:16px;padding:0 6px}
.heat td.onleave{box-shadow:inset 0 0 0 2px #10b981}.heat td.onleave.lv-pending{box-shadow:inset 0 0 0 2px #f59e0b}
.lvmark{position:absolute;top:1px;left:2px;font-style:normal;font-size:9px;font-weight:800;color:#047857}
.heat td.onleave.lv-pending .lvmark{color:#b45309}
.heat td{position:relative}
.cal-leave{position:absolute;inset:0;z-index:0;display:flex;align-items:flex-start;justify-content:center;padding-top:6px;font-size:12px;font-weight:700;color:#047857;background:repeating-linear-gradient(135deg,rgba(16,185,129,.10) 0 8px,rgba(16,185,129,.18) 8px 16px)}
.cal-leave.lv-pending{color:#b45309;background:repeating-linear-gradient(135deg,rgba(245,158,11,.10) 0 8px,rgba(245,158,11,.18) 8px 16px)}
@media (max-width:900px){.lv-body,.lv-facts{grid-template-columns:1fr}}
/* v13 – supervision */
.svpoints .card{border-top:4px solid #cbd5e1}
.sv-good{border-top-color:#10b981 !important}.sv-improve{border-top-color:#f59e0b !important}
.svpoints ul{margin:0;padding-left:18px}.svpoints li{margin:5px 0}
.sv-note{margin-top:10px;background:#f8fafc;border-radius:8px;padding:8px 10px;font-size:13px}
.svprev{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid #f1f5f9;flex-wrap:wrap}
.svprev select{max-width:230px}
.actrow{display:grid;grid-template-columns:1fr 200px 150px;gap:8px;margin:6px 0}
p.pre{white-space:pre-line;margin:0}
.halves{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.halves>.card{margin:0}
@media (max-width:800px){.actrow,.halves{grid-template-columns:1fr}}
@media print{.chartgrid{grid-template-columns:1fr 1fr}.svpoints{break-inside:avoid}}
/* v14 – live status */
.pdot2{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none;background:#94a3b8;vertical-align:baseline;margin-right:6px}
.ps-g.pdot2{background:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.18)}.ps-a.pdot2{background:#f59e0b}.ps-p.pdot2{background:#8b5cf6}.ps-r.pdot2{background:#ef4444}
.ps-l.pdot2{background:#0ea5e9}.ps-n.pdot2{background:#94a3b8}.ps-x.pdot2{background:transparent;border:2px solid #94a3b8;width:9px;height:9px;box-sizing:border-box}
.ppill{display:inline-flex;align-items:center;gap:0;padding:2px 9px 2px 7px;border-radius:999px;font-size:12.5px;font-weight:600;background:#f1f5f9;color:#334155;white-space:nowrap}
.ppill small{font-weight:400;opacity:.8;margin-left:4px}
.ps-g.ppill{background:#ecfdf5;color:#065f46}.ps-a.ppill{background:#fffbeb;color:#92400e}.ps-p.ppill{background:#f5f3ff;color:#5b21b6}.ps-r.ppill{background:#fef2f2;color:#991b1b}.ps-l.ppill{background:#f0f9ff;color:#075985}
.mystatus{margin:0 10px 6px;border-radius:10px;background:rgba(255,255,255,.06)}
.mystatus summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:7px 8px}
.mystatus summary::-webkit-details-marker{display:none}
.mystatus summary .ppill{max-width:190px;overflow:hidden;text-overflow:ellipsis}
.mystatus .chev{color:#94a3b8;font-size:11px}
.statusmenu{padding:4px 8px 10px;display:flex;flex-direction:column;gap:6px}
.statusmenu select,.statusmenu input[name=note]{font-size:12.5px;padding:5px 7px}
.sm-opts{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.sm-opt{display:flex;align-items:center;gap:2px;font-size:12px;color:#e2e8f0;padding:4px 5px;border-radius:6px;cursor:pointer}
.sm-opt:hover,.sm-opt:has(input:checked){background:rgba(255,255,255,.1)}
.sm-opt input{display:none}
.sm-help{font-size:11px;color:#94a3b8;margin:0}.sm-help a{color:#c7d2fe}
.tpsum{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.presgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-bottom:12px}
.presgroup{margin:0;border-top:4px solid #cbd5e1}
.pg-g{border-top-color:#10b981}.pg-a{border-top-color:#f59e0b}.pg-p{border-top-color:#8b5cf6}.pg-r{border-top-color:#ef4444}.pg-l{border-top-color:#0ea5e9}
.presrow{display:flex;gap:4px;align-items:baseline;padding:7px 0;border-bottom:1px solid #f1f5f9}
@media print{.mystatus{display:none}}
/* v15 – statuses on the Schedule */
.pstrip{position:absolute;right:0;width:5px;z-index:3;border:0;padding:0;margin:0;border-radius:3px 0 0 3px;cursor:pointer;appearance:none}
.pstrip:hover,.pstrip:focus-visible{width:9px;outline:none}
.pblk{position:absolute;left:9px;right:6px;z-index:1;border:1px dashed #d97706;border-radius:4px;background:repeating-linear-gradient(135deg,rgba(245,158,11,.10) 0 6px,rgba(245,158,11,.24) 6px 12px);font:inherit;text-align:left;padding:1px 4px;margin:0;cursor:pointer;overflow:hidden;color:#92400e;min-height:8px;appearance:none;display:flex;align-items:flex-start}
.pblk span{font-size:10.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(255,255,255,.85);border-radius:3px;padding:0 3px;max-width:100%}
.pblk.ps-n{border-color:#94a3b8;color:#475569;background:repeating-linear-gradient(135deg,rgba(148,163,184,.10) 0 6px,rgba(148,163,184,.24) 6px 12px)}
.pblk:hover{outline:2px solid #d97706;outline-offset:-1px}
.ps-p{background:#8b5cf6}.ps-a{background:#f59e0b}.ps-n{background:#94a3b8}.ps-r{background:#dc2626}.ps-l{background:#10b981}.ps-g{background:#22c55e}.ps-x{background:#cbd5e1}
.pblk.ps-a{background:repeating-linear-gradient(135deg,rgba(245,158,11,.10) 0 6px,rgba(245,158,11,.24) 6px 12px)}
i.psq{display:inline-block;width:10px;height:10px;border-radius:3px;flex:none}
h3.subh{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#64748b);margin:12px 0 4px}
@media print{.pstrip,.pblk{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
/* v15.1 – Admin gaps person profile */
.gapprof .gp-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.gapprof .gp-head h2{margin:0 0 2px}
.gapprof .gp-stats{margin:12px 0 8px}
/* v16 – Data team access */
.dtgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:2px 16px;margin:10px 0 14px}
.dtgrid label.check{margin:0;padding:4px 0}
.dtbadge{display:inline-block;font-size:11px;font-weight:600;color:#0369a1;background:#e0f2fe;border-radius:999px;padding:1px 7px;margin-left:4px}
.dtgrid label.check .small{margin-left:6px}
/* v17 – attendance, work hours, celebrations */
.attpill{display:inline-block;font-size:11.5px;font-weight:600;border-radius:999px;padding:1px 8px;white-space:nowrap}
.attpill.att-late{background:#fef3c7;color:#92400e}
.attpill.att-l0{background:#f1f5f9;color:#475569}
.attpill.att-l2{background:#fed7aa;color:#9a3412}
.attpill.att-l3,.attpill.att-l4{background:#fecaca;color:#991b1b}
.attpill.att-absent{background:#fee2e2;color:#b91c1c}
.attpill.att-ex{background:#e0f2fe;color:#075985;text-decoration:none}
.attbl tr.att-late td{background:#fffbeb}.attbl tr.att-absent td{background:#fef2f2}
.attform{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0}
.attform input{margin:0;width:auto}
.attform .attm{width:70px}.attform .attreason{width:150px}.attform .attnote{width:160px}
.attform .attexc{margin:0;font-size:12.5px}
.attlvl{font-style:normal;font-size:11px;font-weight:600;color:#64748b;margin-left:4px}
.attlvl.al1{color:#b45309}.attlvl.al2{color:#c2410c}.attlvl.al3,.attlvl.al4{color:#b91c1c}
.att-late-btn{background:#fffbeb;border-color:#f59e0b;color:#92400e}
.att-abs-btn{background:#fef2f2;border-color:#ef4444;color:#b91c1c}
.cal-att{position:absolute;left:9px;right:6px;top:2px;z-index:4;font-size:11px;font-weight:700;border-radius:4px;padding:1px 5px;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-att.att-late{background:#fef3c7;color:#92400e;border:1px solid #f59e0b}
.cal-att.att-absent{background:#fee2e2;color:#b91c1c;border:1px solid #ef4444}
.cal-att.att-ex{background:#e0f2fe;color:#075985;border-color:#7dd3fc}
.cal-day.has-att .cal-att.att-absent ~ .cal-off{opacity:.6}
.cal-late{position:absolute;left:0;right:0;z-index:0;background:repeating-linear-gradient(135deg,rgba(245,158,11,.14) 0 5px,rgba(245,158,11,.28) 5px 10px);border-top:2px solid #f59e0b}
i.attmark{position:absolute;bottom:1px;left:2px;font-style:normal;font-size:8.5px;font-weight:800;line-height:1;padding:1px 2px;border-radius:2px}
i.attmark.att-late{background:#f59e0b;color:#fff}i.attmark.att-absent{background:#ef4444;color:#fff}i.attmark.att-ex{background:#38bdf8}
.daychk{display:inline-flex;align-items:center;gap:2px;margin:0 6px 0 0 !important;font-weight:500}
.whbulk{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 10px;padding:8px 10px;background:var(--bg2,#f8fafc);border-radius:8px}
.whbulk input[type=time]{width:auto;margin:0}
.whtbl input[type=time]{width:110px;margin:0}.whtbl input[type=date]{width:150px;margin:0}.whtbl .wBd{width:64px;margin:0}.whtbl select{width:auto;margin:0}
.whtbl tr.usesdef .wS,.whtbl tr.usesdef .wE,.whtbl tr.usesdef .daychk{opacity:.45}
fieldset.whfs{border:1px solid var(--line2,#e5e7eb);border-radius:8px;padding:8px 12px;margin:10px 0}
fieldset.whfs.usesdef .grid2,fieldset.whfs.usesdef .btnrow{opacity:.45}
.bdrow{display:flex;gap:6px}.bdrow select{width:auto}
.celcard .celrow{display:flex;gap:10px;align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--line2,#eef2f7)}
.celcard .celrow:last-child{border-bottom:0}
.celcard .celrow.today{background:linear-gradient(90deg,#fef9c3,transparent);border-radius:6px;padding-left:4px}
.celico{font-size:20px;line-height:1}
.attform input,.attform .btn{padding:4px 8px;font-size:12.5px;min-height:0;height:30px}
.attform .attm{width:62px}.attform .attreason{width:140px}.attform .attnote{width:140px}
.attbl td{vertical-align:top}
/* v18 – recurring tasks */
.src.src-recur{background:#ede9fe;color:#5b21b6}
.pill.recurpill{background:#ede9fe;color:#5b21b6;border-color:#ddd6fe}
fieldset.recurfs .rEvery{display:flex;align-items:center;gap:6px}fieldset.recurfs .rEvery input{width:80px}
fieldset.recurfs .rEvery em{font-style:normal;color:var(--ink2,#475569);font-size:13px;white-space:nowrap}
.lockbadge{display:inline-block;font-size:11px;font-weight:700;color:#991b1b;background:#fee2e2;border-radius:999px;padding:1px 7px;margin-left:4px}
.seccard{border-left:4px solid #dc2626}
/* v18.1 – 10-80-10 per person */
.grp{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:1px 8px}
.grp-top{background:#d1fae5;color:#047857}.grp-middle{background:#e0e7ff;color:#3730a3}.grp-bottom{background:#fee2e2;color:#b91c1c}
.grpdot{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:3px;vertical-align:middle}
.grpdot.grp-top{background:#10b981}.grpdot.grp-middle{background:#6366f1}.grpdot.grp-bottom{background:#ef4444}
/* v18.1 – connected calendars */
details.tcalcard>summary{list-style:none;cursor:pointer}details.tcalcard>summary::-webkit-details-marker{display:none}
details.tcalcard>summary h2{display:inline}details.tcalcard>summary::before{content:"▸ ";color:#64748b}details.tcalcard[open]>summary::before{content:"▾ "}
.tcal-wrap{margin-top:10px;overflow-x:auto}
.tcal-nav{display:flex;gap:10px;align-items:center;margin-bottom:8px}
table.tcal{width:100%;border-collapse:collapse;min-width:900px;table-layout:fixed}
.tcal th,.tcal td{border-bottom:1px solid var(--line2,#eef2f7);padding:4px 4px;vertical-align:middle}
.tcal thead th{font-size:11.5px;font-weight:600;color:#475569;text-align:center}
.tcal thead th.wkend{color:#94a3b8}
.tcal .tc-who{width:170px;text-align:left}.tcal th.num,.tcal td.num{width:58px;text-align:right}
.tc-scale{display:flex;justify-content:space-between;font-size:9px;color:#94a3b8;font-weight:400;padding:0 2px}
.tcal tr.tc-grp th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#64748b;background:#f8fafc;padding:5px 6px}
.tcal tr.tc-me td{background:#eef2ff}
.tc-day{position:relative;height:22px;background:#f8fafc;border-radius:4px;overflow:visible}
.tc-cell.wkend .tc-day{background:repeating-linear-gradient(135deg,#f1f5f9 0 4px,#f8fafc 4px 8px)}
.tc-day.tc-leave{background:repeating-linear-gradient(135deg,rgba(16,185,129,.18) 0 5px,rgba(16,185,129,.30) 5px 10px)}
.tc-day.tc-leave.lv-pending{background:repeating-linear-gradient(135deg,rgba(245,158,11,.15) 0 5px,rgba(245,158,11,.28) 5px 10px)}
.tc-day i,.tcal-legend i{position:absolute;top:3px;bottom:3px;border-radius:2px}
.tc-hrs{top:0 !important;bottom:0 !important;background:rgba(99,102,241,.07);border-left:1px dashed #a5b4fc;border-right:1px dashed #a5b4fc;border-radius:0 !important}
.tc-seg.tc-a{background:#818cf8}.tc-seg.tc-t{background:#1e1b4b}.tc-seg.tc-m{background:#8b5cf6}
.tc-pause{background:repeating-linear-gradient(135deg,#f59e0b 0 3px,#fde68a 3px 6px);top:7px !important;bottom:7px !important}
.tc-iv{position:absolute;top:-3px;transform:translateX(-50%);font-size:10px;line-height:1;z-index:2;cursor:default;text-shadow:0 0 2px #fff}
.tc-iv.tc-in{color:#dc2626}.tc-iv.tc-out{color:#2563eb;top:auto;bottom:-4px}
.tc-iv.tc-short{font-size:12px}
.tc-att{position:absolute;right:1px;top:1px;font-style:normal;font-size:8.5px;font-weight:800;line-height:1;padding:1px 2px;border-radius:2px;color:#fff;z-index:2}
.tc-att.att-late{background:#f59e0b}.tc-att.att-absent{background:#ef4444}
.tcal-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;align-items:center}
.tcal-legend span{display:inline-flex;align-items:center;gap:5px}
.tcal-legend i{position:static;display:inline-block;width:16px;height:9px}
.tcal-legend .tc-hrs{height:12px;width:16px}
.tcal-legend .tc-pause{display:inline-block}
.tcal-legend b.tc-iv,.tcal-legend em.tc-att{position:static;transform:none}
.tcal-legend .tc-leavekey{background:repeating-linear-gradient(135deg,rgba(16,185,129,.18) 0 4px,rgba(16,185,129,.35) 4px 8px)}
.tcal-legend i.tc-a{background:#818cf8}.tcal-legend i.tc-t{background:#1e1b4b}.tcal-legend i.tc-m{background:#8b5cf6}
/* v19 – KPI Pathway & Decision Matrix */
.pwc{font-weight:600}
.pw-g.pwc{background:#dcfce7;color:#166534}.pw-a.pwc{background:#fef3c7;color:#92400e}.pw-r.pwc{background:#fee2e2;color:#991b1b}.pw-n.pwc{color:#94a3b8}
.pwcat{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:1px 9px;white-space:nowrap}
.pwcat.pw-g{background:#dcfce7;color:#166534}.pwcat.pw-a{background:#fef3c7;color:#92400e}.pwcat.pw-r{background:#fee2e2;color:#991b1b}.pwcat.pw-n{background:#f1f5f9;color:#64748b}
.tablewrap{overflow-x:auto}
.pwrank th,.pwrag th{white-space:nowrap}
.pwyear th.sel,.pwyear th.sel a{background:#eef2ff;color:#3730a3}
.pwyear tr.pwavg td,.pwcmp tr.pwavg td{border-top:2px solid var(--line,#e2e8f0)}
.pwhead{display:flex;flex-wrap:wrap;gap:16px 32px;align-items:flex-start;justify-content:space-between}
.pwhead h2{margin:0 0 2px}
.pwfacts{display:flex;gap:24px;flex-wrap:wrap}
.pwfacts>div{display:flex;flex-direction:column;gap:2px;min-width:110px}
.pwfacts b{font-size:22px;line-height:1.1}
.lbl{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#64748b;font-weight:600}
.pwroles{flex-basis:100%;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pwrole{background:#f1f5f9;border-radius:8px;padding:3px 10px;font-size:13px}.pwrole small{color:#64748b}
tr.pwgrp th{text-align:left;background:#f8fafc;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#475569}
.ragdot{display:inline-block;width:12px;height:12px;border-radius:50%;vertical-align:middle;background:#cbd5e1}
.ragdot.rag-g{background:#16a34a}.ragdot.rag-a{background:#f59e0b}.ragdot.rag-r{background:#dc2626}.ragdot.rag-n{background:#e2e8f0}
.pwchecks{list-style:none;padding:0;margin:8px 0}
.pwchecks li{display:flex;gap:8px;padding:5px 0;border-bottom:1px solid var(--line2,#eef2f7)}
.pwchecks li span{font-weight:700;width:16px}.pwchecks li.ok span{color:#16a34a}.pwchecks li.no span{color:#94a3b8}
.pwchecks small{display:block}
.pwdef{border:1px solid var(--line2,#e5e7eb);border-radius:8px;padding:8px 12px;margin:8px 0}
.pwdef-top{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:6px}
.pwdef-top label{display:flex;align-items:center;gap:6px;margin:0}
.pwdef-top input[type=number]{width:80px;margin:0}.pwdef-top .pwname{width:260px;margin:0;font-weight:600}
.pwacts{list-style:none;padding:0;margin:4px 0}.pwacts li{padding:4px 0;border-bottom:1px solid var(--line2,#eef2f7)}
.dtree details{margin:2px 0 2px 14px}.dtree>details{margin-left:0}
.dtree summary{cursor:pointer;display:flex;align-items:center;gap:8px;padding:3px 0;list-style:none}
.dtree summary::-webkit-details-marker{display:none}
.dt-bar{display:inline-block;height:10px;width:calc(var(--w) * 1.2);max-width:120px;min-width:3px;background:#6366f1;border-radius:3px}
.dt-bar.q-q1{background:#ef4444}.dt-bar.q-q2{background:#6366f1}.dt-bar.q-q3{background:#f59e0b}.dt-bar.q-q4{background:#94a3b8}
.dt-bar.gate-red{background:#ef4444}.dt-bar.gate-amber{background:#f59e0b}.dt-bar.gate-green{background:#10b981}
.dt-tasks{margin:2px 0 6px 28px;padding:0;list-style:none;font-size:13px}.dt-tasks li{padding:2px 0}
.trustgrp summary{cursor:pointer;padding:4px 0}
tr.rq-breach td{background:#fef2f2}
/* v20 Error register */
.errsev{display:inline-block;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}
.errsev.sev-n{background:var(--n-bg);color:var(--ink2)}.errsev.sev-a{background:var(--a-bg);color:var(--a)}.errsev.sev-r{background:var(--r-bg);color:var(--r)}
.errtbl tr.err-open td:first-child{box-shadow:inset 3px 0 0 #f59e0b}
.errtbl tr.err-crit td:first-child,.legrow.err-crit{box-shadow:inset 3px 0 0 #dc2626}
.legrow.err-open{box-shadow:inset 3px 0 0 #f59e0b;padding-left:8px}
.errtbl td{vertical-align:top}
.errupd{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0}
.errupd select,.errupd input{padding:3px 6px;font-size:12px;min-width:0;width:auto}
.errupd input[type=text],.errupd input:not([type]){width:140px}
.errform select[multiple]{min-height:150px}
.errcard{border-left:4px solid #f59e0b}.errcard .err-crit{padding:3px 0 3px 8px;box-shadow:inset 3px 0 0 #dc2626;margin-bottom:4px}
@media (max-width:700px){.errupd input:not([type]){width:100%}}
/* v21 Gap projection */
.scenbar{padding:12px 16px}.scenbar p{margin:6px 0 0}
.scen-row{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin-bottom:8px}
.scen-l{font-weight:600;font-size:13px}
.scen-seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--card)}
.scen-seg label{margin:0;cursor:pointer}.scen-seg input{position:absolute;opacity:0;pointer-events:none}
.scen-seg span{display:block;padding:6px 12px;font-size:13px;border-right:1px solid var(--line);color:var(--ink2)}
.scen-seg label:last-child span{border-right:0}
.scen-seg input:checked+span{background:var(--accent);color:var(--accent-ink);font-weight:600}
.scen-seg input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}
.scen-in{display:flex;align-items:center;gap:6px;font-size:13px;margin:0}.scen-in input{width:90px}.scen-in select{width:auto}
.projhead{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:20px;align-items:center}
.projhead h2{margin:0 0 2px;font-size:18px}.ph-who .small{margin-top:4px}
.gapline{position:relative;height:16px;margin:8px 0 10px}
.gl-track{position:absolute;inset:5px 0;border-radius:4px;background:linear-gradient(90deg,#fecaca 0,#fde68a 70%,#bbf7d0 90%,#86efac 100%);opacity:.55}
.gl-fill{position:absolute;left:0;top:5px;height:6px;border-radius:4px;background:var(--accent);opacity:.75}
.gl-now,.gl-tg{position:absolute;top:0;width:16px;height:16px;margin-left:-8px;border-radius:50%;border:2.5px solid #64748b;background:var(--card)}
.gl-tg{border-color:var(--accent);background:var(--accent)}
.gl-nums{display:flex;gap:24px}.gl-nums div{font-size:12px;color:var(--muted)}.gl-nums b{display:block;font-size:24px;line-height:1.1}
.b-g{color:var(--g)}.b-a{color:var(--a)}.b-r{color:var(--r)}.b-n{color:var(--muted)}
.metbar{display:inline-block;width:56px;height:7px;border-radius:4px;vertical-align:middle;background:linear-gradient(90deg,currentColor var(--p),var(--line) var(--p))}
.projtbl td{vertical-align:top}.projtbl .small.muted{max-width:380px}.gapcell{color:var(--r);font-weight:600}
.pathlist{margin:0;padding-left:20px}.pathlist>li{margin-bottom:14px}.pathlist p{margin:4px 0}.pathlist ul{margin:4px 0 0;padding-left:18px}
.pl-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.pl-dim{font-weight:600}
.rp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}
.rp-item{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line2);font-size:13px}.rp-item b{white-space:nowrap}
.howlist{padding-left:18px}.howlist li{margin-bottom:6px}
.tpdot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--c);margin-right:6px;vertical-align:middle}
.tp-plan td{background:repeating-linear-gradient(135deg,transparent 0 8px,rgba(99,102,241,.05) 8px 16px)}
.tpform select[multiple]{min-height:140px}
.leadcard>summary{list-style:none;cursor:pointer}.leadcard>summary::-webkit-details-marker{display:none}
.lc-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}
.lc-head>div:first-child::before{content:'▸';display:inline-block;margin-right:6px;color:var(--muted);transition:transform .15s}
.leadcard[open] .lc-head>div:first-child::before{transform:rotate(90deg)}
.lc-nums{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--ink2)}.lc-nums b{font-size:15px}
.phasebar{display:flex;height:8px;border-radius:4px;overflow:hidden;margin:10px 0 4px;background:var(--line2)}
.phasebar i{display:block}.ph-b{background:#0891b2}.ph-s{background:#4f46e5}.ph-r{background:#b45309}
.leadppl{margin-top:10px}.lp-indirect td:first-child{padding-left:26px}
@media (max-width:820px){.projhead{grid-template-columns:1fr}.rp-grid{grid-template-columns:1fr}.scen-seg span{padding:6px 9px}}
/* v21 People under – expandable schedule */
.ptreecard h2 small{font-weight:400}
.pt-headrow,.pt-row{display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(130px,1fr) 70px 90px 100px 90px;gap:10px;align-items:center}
.pt-headrow{padding:0 10px 6px;border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.04em;font-size:10.5px}
.ptree{border-bottom:1px solid var(--line2)}
.ptree>summary{list-style:none;cursor:pointer;padding:8px 10px 8px calc(10px + var(--d,0) * 18px);border-radius:8px}
.ptree>summary::-webkit-details-marker{display:none}
.ptree>summary:hover{background:var(--line2)}
.ptree[open]>summary{background:var(--accent-soft)}
.pt-who{display:flex;gap:8px;align-items:center;min-width:0}.pt-who>span:last-child{display:flex;flex-direction:column;min-width:0}
.pt-who strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-caret::before{content:'▸';display:inline-block;color:var(--muted);transition:transform .15s}
.ptree[open]>summary .pt-caret::before{transform:rotate(90deg)}
.pt-week{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;height:28px;align-items:end}
.pt-week i{display:flex;align-items:flex-end;height:100%;background:var(--line2);border-radius:3px;overflow:hidden}
.pt-week i.off{opacity:.45}.pt-week i.lv{background:repeating-linear-gradient(135deg,#bbf7d0 0 4px,#dcfce7 4px 8px)}
.pt-week i.att-late{box-shadow:inset 0 -2px 0 #f59e0b}.pt-week i.att-absent{box-shadow:inset 0 0 0 2px #ef4444}
.pt-week b{display:block;width:100%;background:var(--accent);opacity:.8}
.pt-num{display:flex;flex-direction:column;line-height:1.2}.pt-num b{font-size:14px}.pt-num small{font-size:11px}
.pt-body{padding:8px 10px 14px calc(10px + var(--d,0) * 18px)}
.pt-body .tcal-nav,.pt-body .tcal-legend,.pt-body .tc-grp{display:none}
.pt-body .tcal-wrap{margin-top:0}
.pt-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px;margin-top:10px}
.pt-grid h3{margin-bottom:6px}
.pt-tasks td{vertical-align:top}
.p10{display:inline-block;font-size:10.5px;padding:1px 6px;border-radius:999px;border:1px dashed var(--line);color:var(--muted);margin-right:3px}
.p10.on{border-style:solid;border-color:transparent;background:var(--g-bg);color:var(--g);font-weight:600}
.pt-sub{margin-top:12px;border-left:2px solid var(--line);padding-left:8px}
.tp-planrow{opacity:.75;font-style:italic}
.tc-tp{position:absolute;top:2px;bottom:2px;border:2px solid #7c3aed;border-radius:3px;background:rgba(124,58,237,.12);z-index:3}
.tc-tp.tc-tpgave{border-color:#0d9488;background:rgba(13,148,136,.15)}
.tc-tp.tc-tpplan{border-style:dashed}
.tcal-legend .tc-tp{position:static;display:inline-block;width:14px;height:10px;vertical-align:middle;margin-right:4px}
@media (max-width:820px){
  .pt-headrow{display:none}
  .pt-row{grid-template-columns:1fr 1fr;row-gap:6px}
  .pt-week{grid-column:1/-1;order:5}
  .pt-grid{grid-template-columns:1fr}
}
.tpblk{position:absolute;left:38%;right:2px;z-index:4;border:2px solid #7c3aed;background:rgba(237,233,254,.92);border-radius:5px;padding:0 4px;overflow:hidden;min-height:13px;color:#5b21b6;text-decoration:none}
.tpblk.gave{border-color:#0d9488;background:rgba(204,251,241,.92);color:#115e59}
.tpblk.plan{border-style:dashed;opacity:.85}
.tpblk span{font-size:10px;font-weight:600;white-space:nowrap;display:block;overflow:hidden;text-overflow:ellipsis}
.tpblk:hover{text-decoration:none;z-index:6}
.oc-lead{margin:6px 0 2px;color:var(--ink2)}
.tpcard{border-left:4px solid #7c3aed}.tpcard .small{margin-bottom:4px}
/* Theme toggle */
.themebtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:7px;margin-left:auto;margin-right:4px;color:#cbd5e1}
.themebtn:hover{background:rgba(255,255,255,.08)}
.th-ico{width:15px;height:15px;border-radius:50%;border:2px solid currentColor;background:linear-gradient(90deg,currentColor 50%,transparent 50%)}
.themebtn[data-pref=dark] .th-ico{background:currentColor;box-shadow:inset -4px -2px 0 0 #0f172a;border-color:currentColor}
.themebtn[data-pref=light] .th-ico{background:transparent;box-shadow:0 0 0 2px #0f172a inset}
/* v21 Mobile web: nothing wider than the screen; wide tables scroll inside their card */
.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.cols>*,.cols2>*,.chartgrid>*,.grid2>*,.grid3>*,.schedgrid>*{min-width:0}
.navscrim{display:none}
@media (max-width:820px){
  html,body{overflow-x:hidden}
  .tabs{overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tabs a{flex:none}
  input:not([type=checkbox]):not([type=radio]),select,textarea{max-width:100%}
  .inline-form input{min-width:0}
  .toolbar select,.toolbar input{max-width:100%}
  .btnrow{flex-wrap:wrap}
  .card{padding:14px}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pagehead h1{font-size:19px}
  .nav.open+.navtoggle{left:244px}
  .nav.open~.navscrim{display:block;position:fixed;inset:0;background:rgba(2,6,23,.45);z-index:19}
  .chartbox{min-height:200px}
  .tcal-wrap{margin-left:-6px;margin-right:-6px}
  .gl-nums b{font-size:20px}
}
@media (max-width:420px){.stats{grid-template-columns:1fr 1fr}.stat .n{font-size:21px}.btn{padding-left:10px;padding-right:10px}}
/* v21.1 Larger charts: ⤢ opens any chart full screen */
.popbtn{position:absolute;top:-4px;right:-4px;z-index:5;width:28px;height:28px;border-radius:7px;border:1px solid var(--line);background:var(--card);color:var(--ink2);font-size:15px;line-height:1;cursor:pointer;opacity:.75;box-shadow:var(--shadow)}
.popbtn:hover,.popbtn:focus-visible{opacity:1;color:var(--accent);border-color:var(--accent)}
.chartpop{position:fixed;inset:0;z-index:100;background:rgba(2,6,23,.6);display:flex;align-items:center;justify-content:center;padding:24px}
.cp-inner{background:var(--card);border-radius:14px;width:min(1400px,100%);height:min(900px,100%);display:flex;flex-direction:column;padding:16px 20px;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.cp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:15px}
.cp-body{flex:1;min-height:0;position:relative}
.cp-body>.popped{position:relative !important;width:100% !important;height:100% !important;min-height:0}
.cp-body .popbtn{display:none}
body.noscroll{overflow:hidden}
.teamagg th{white-space:normal}
@media (max-width:820px){.chartpop{padding:8px}.cp-inner{padding:10px}}
@media print{.popbtn{display:none}}
.teamagg td .small{white-space:nowrap}
.chartbox.tall{height:460px}@media (max-width:820px){.chartbox.tall{height:360px}}
/* v22 Missed time */
.tcst{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11.5px;font-weight:600}
.tcst-a{background:var(--a-bg);color:var(--a)}.tcst-g{background:var(--g-bg);color:var(--g)}.tcst-r{background:var(--r-bg);color:var(--r)}.tcst-n{background:var(--accent-soft);color:var(--accent)}
.tctbl td{vertical-align:top}.tctbl tr.tc-rejected td{opacity:.7}
.tcdecide{display:flex;flex-direction:column;gap:4px;min-width:190px}.tcdecide input{padding:4px 6px;font-size:12px}.tcdecide label{margin:0}
.tcinfo{border-left:4px solid var(--accent)}.tcinfo p{margin:0}
.tcrun{border-left:4px solid #f59e0b}
.me .linkbtn{white-space:nowrap}.me>a{min-width:0}
/* v22.2 Cascade & 10-80-10 */
.ttbar{display:flex;height:7px;border-radius:4px;overflow:hidden;background:var(--line2);margin:6px 0 3px}.ttbar i{display:block}
.of-ttt{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;gap:18px;align-items:start;margin-top:14px;padding-top:12px;border-top:1px solid var(--line2)}
.tttmix{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 3px}
.oc-grp{margin:4px 0 0}.oc-ttt{margin-top:4px}
@media (max-width:820px){.of-ttt{grid-template-columns:1fr}}
.phasebar .ph-b,.ttbar .ph-b{background:#0ea5e9}.phasebar .ph-s,.ttbar .ph-s{background:#6366f1}.phasebar .ph-r,.ttbar .ph-r{background:#10b981}
.supportcard{border-left:4px solid var(--accent)}.supportcard p{margin:0}
.supportlinks{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
/* v22.4 touchpoint follow-ups */
.touchno{display:inline-block;font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);margin-right:4px;text-decoration:none;white-space:nowrap}
.tpdue{border-left:4px solid #f59e0b}.tpdue .legrow{gap:10px}
.tpfollow{background:var(--accent-soft);border-radius:8px;padding:10px 12px;margin-bottom:12px}
.tpplan{border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin:4px 0 12px}.tpplan legend{font-weight:600;font-size:13px;padding:0 4px}
.tpplan input[type=number]{width:64px;display:inline-block;padding:3px 6px;margin:0 4px}
.tprec>summary{list-style:none;cursor:pointer;margin:4px 0}.tprec>summary::-webkit-details-marker{display:none}
.tprecform{min-width:260px;margin-top:6px}.tprecform label{font-size:12px}
/* v22.6 Fill the screen: pages use the full width of any monitor (720p laptops to 1080p, 1440p and wider) */
.has-nav .main{width:auto}
@media (min-width:1600px){
  .cols{grid-template-columns:minmax(0,1fr) 380px;gap:20px}
  .chartbox{height:340px}.chartbox.tall{height:520px}
}
@media (min-width:2200px){
  .chartgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cols{grid-template-columns:minmax(0,1fr) 440px}
}
@media (max-height:760px) and (min-width:821px){
  .pagehead{margin-bottom:12px}.main{padding-top:16px}
  .nav nav a{padding:6px 10px}
}
/* All pages fill the screen: forms and narrow pages use the width too, with fields spread across columns on big screens */
.main.narrow,.narrow{max-width:none}
.narrow-form{max-width:none}
@media (min-width:1300px){
  .narrow-form .grid2{grid-template-columns:repeat(4,minmax(0,1fr))}
  .narrow-form .grid3{grid-template-columns:repeat(6,minmax(0,1fr))}
  .narrow-form textarea{min-height:90px}
}
/* v23 Menu: search, collapsible sections, pins */
.navsearch{display:flex;align-items:center;gap:8px;margin:10px 10px 2px;padding:7px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:#94a3b8;font:inherit;font-size:13px;cursor:pointer;width:calc(100% - 20px)}
.navsearch:hover{background:rgba(255,255,255,.1);color:#e2e8f0}
.navsearch svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;flex:none}
.navsearch span{flex:1;text-align:left}.navsearch kbd{font:11px ui-monospace,monospace;border:1px solid rgba(255,255,255,.18);border-radius:4px;padding:1px 5px;color:#94a3b8}
button.navsec{display:flex;width:100%;align-items:center;justify-content:space-between;background:none;border:0;cursor:pointer;font-family:inherit}
button.navsec:hover{color:#cbd5e1}
.navsec .chev{transition:transform .15s;font-size:10px}
.navgrp.closed .navitems{display:none}.navgrp.closed .chev{transform:rotate(-90deg)}
.nav nav a .nl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav nav a .pin{opacity:0;font-size:13px;color:#94a3b8;padding:0 2px;line-height:1;cursor:pointer}
.nav nav a:hover .pin,.nav nav a.pinned .pin,.navpins a .pin{opacity:1}.nav nav a.pinned .pin,.navpins .pin{color:#fbbf24}
.navpins{border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:6px;margin-bottom:4px}
/* Quick search */
.qs{position:fixed;inset:0;z-index:120;background:rgba(2,6,23,.55);display:flex;justify-content:center;align-items:flex-start;padding:10vh 16px 16px}
.qs[hidden]{display:none}
.qs-panel{width:min(640px,100%);background:var(--card);border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.35);overflow:hidden;border:1px solid var(--line)}
.qs-in{width:100%;border:0;border-bottom:1px solid var(--line);padding:16px 18px;font-size:16px;outline:none;background:var(--card);color:var(--ink);border-radius:0;margin:0}
.qs-list{max-height:55vh;overflow:auto;padding:6px}
.qs-sec{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:10px 10px 4px;font-weight:600}
.qs-item{display:flex;align-items:center;gap:8px;border-radius:8px;padding:2px 4px}
.qs-item.on,.qs-item:hover{background:var(--accent-soft)}
.qs-main{flex:1;display:flex;justify-content:space-between;gap:12px;padding:7px 8px;color:var(--ink);text-decoration:none;min-width:0}
.qs-main:hover{text-decoration:none}.qs-main span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qs-main small{color:var(--muted);white-space:nowrap}
.qs-more{display:flex;gap:6px;padding-right:6px}.qs-more a{font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);text-decoration:none}
.qs-none{padding:16px}.qs-foot{padding:8px 14px;border-top:1px solid var(--line)}

/* v23: page help "?" */
.pagehead h1{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pagehelp{position:relative;display:inline-block;font-size:13px;font-weight:400}
.pagehelp>summary{list-style:none;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;cursor:pointer;user-select:none}
.pagehelp>summary::-webkit-details-marker{display:none}
.pagehelp>summary:hover,.pagehelp[open]>summary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.ph-body{position:absolute;z-index:60;top:30px;left:0;width:min(420px,calc(100vw - 32px));background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 40px -8px rgba(15,23,42,.3);padding:12px 14px;color:var(--ink2);line-height:1.5}
.ph-body p{margin:0 0 8px} .ph-body p:last-child{margin:0}
kbd{font:11px ui-monospace,monospace;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 4px;background:var(--line2)}

/* v23: saved views */
.viewsbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:-6px 0 14px}
.vb-l{font-size:12px;color:var(--muted);margin-right:2px}
.vchip{display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--card);border-radius:999px;font-size:12.5px;overflow:hidden}
.vchip a{padding:3px 4px 3px 11px;color:var(--ink2)} .vchip a:hover{text-decoration:none;color:var(--accent)}
.vchip.on{border-color:var(--accent);background:var(--accent-soft)} .vchip.on a{color:var(--accent);font-weight:600}
.vchip form{display:inline;margin:0}
.vx{border:0;background:none;color:var(--muted);cursor:pointer;padding:3px 9px 3px 5px;font-size:13px;line-height:1} .vx:hover{color:var(--r)}
.vsave{display:inline-flex;gap:4px;align-items:center;margin:0}
.vsave input{width:150px;padding:4px 8px;font-size:12.5px;margin:0}
.vsave button{padding:4px 10px;font-size:12px}

/* v23: My day */
.mdstats a.stat{color:inherit} .mdstats a.stat:hover{text-decoration:none;border-color:var(--accent)}
.mdcard .md-h{margin:14px 0 4px;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.mdcard .md-h:first-of-type{margin-top:4px} .mdcard .md-h.danger{color:var(--r)}
.mdrow{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line2)}
.mdrow:last-of-type{border-bottom:0}
.md-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.md-t .mono{color:var(--muted);margin-right:4px}
.md-meta{display:flex;gap:6px;align-items:center;flex:none;white-space:nowrap}
.mdrow form{margin:0;flex:none}
.md-err{padding:6px 0;border-bottom:1px solid var(--line2)} .md-err:last-of-type{border:0}

/* v23: Waiting for me */
.ibjump{display:flex;flex-wrap:wrap;gap:6px;margin:-4px 0 14px}
.ibj{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:4px 12px;font-size:12.5px;color:var(--ink2)}
.ibj b{margin-left:4px;color:var(--accent)} .ibj:hover{text-decoration:none;border-color:var(--accent)}
.ibclear p{margin:0;color:var(--g);font-weight:500}
.ibsec{scroll-margin-top:16px}
.ibrow{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line2)}
.ibrow:first-of-type{border-top:0}
.ib-what{flex:1;min-width:0}
.ibact{display:flex;gap:6px;align-items:center;flex:none;flex-wrap:wrap;justify-content:flex-end;margin:0}
.ibact input,.ibact select{margin:0;padding:5px 8px;font-size:12.5px;width:210px}
.ibact input.ib-min{width:90px}
.btn.approve{background:var(--g);border-color:var(--g);color:#fff}
@media (max-width:820px){.ibrow{flex-direction:column;align-items:stretch}.ibact{justify-content:flex-start}.ibact input,.ibact select{flex:1;width:auto;min-width:140px}.mdrow{flex-wrap:wrap}.md-t{white-space:normal;flex-basis:100%}}

/* v23: task list – bulk and in-place edits */
.ckcol{width:34px;text-align:center} .ckcol input{margin:0;width:16px;height:16px;cursor:pointer}
tr.ticked td{background:var(--accent-soft)}
.bulkbar{position:sticky;top:8px;z-index:30;display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--navy);color:#e2e8f0;border-radius:10px;padding:10px 12px;margin-bottom:10px;box-shadow:0 10px 30px -10px rgba(15,23,42,.5)}
.bulkbar[hidden]{display:none}
.bulkbar select,.bulkbar input{margin:0;padding:5px 8px;font-size:12.5px;width:auto}
.bulkbar input[name=note]{width:200px}
.bulkbar .muted{color:#94a3b8}
.bulkbar [hidden]{display:none}
.qcell{position:relative;white-space:nowrap}
.qcell select.qedit{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;margin:0}
.qcell .qbadge{pointer-events:none}
.qcell:hover .qbadge .st,.qcell:focus-within .qbadge .st{box-shadow:0 0 0 2px var(--accent-soft),0 0 0 3px var(--accent)}
.qdate{border:1px solid transparent;background:transparent;padding:2px 4px;font-size:12px;margin:0;width:128px;color:inherit;border-radius:6px}
.qdate:hover,.qdate:focus{border-color:var(--line);background:var(--card)}
.qedit:disabled{opacity:.5}
.qtoast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);background:var(--navy);color:#fff;padding:9px 16px;border-radius:9px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;z-index:130}
.qtoast.on{opacity:1;transform:translate(-50%,0)}
.legrow>span+span,.legrow>span.pill{flex:none}
@media (max-width:820px){.bulkbar .muted{display:none}.bulkbar input[name=note]{width:100%}}

/* v24: integrations */
.pill.ok-pill{background:var(--g-bg);color:var(--g)}
.integ-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(460px,100%),1fr));gap:16px;margin-bottom:16px}
.integ-grid .card{margin:0}
.integ h2{display:flex;gap:10px;align-items:center;justify-content:space-between}
.integ-dl{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;margin:0 0 14px;font-size:13px}
.integ-dl dt{color:var(--muted)} .integ-dl dd{margin:0;overflow-wrap:anywhere}
.integ .btnrow form{margin:0}
.integ-more{margin-top:12px;border-top:1px solid var(--line2);padding-top:10px}
.integ-more summary{cursor:pointer;color:var(--accent);font-size:13px}
.integ-steps{margin:0 0 12px;padding-left:18px;color:var(--ink2)} .integ-steps li{margin-bottom:4px}
.integ-intro p{margin:0 0 6px}
tr.needmatch td{background:var(--a-bg)}
pre.cmd{background:var(--line2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:12.5px;user-select:all}
.syncpick{border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin:0 0 8px}
.syncpick legend{font-size:12px;color:var(--muted);padding:0 4px}
.syncfill .btnrow form{margin:0}
.integ-link p{margin:0 0 10px} .integ-link .pill{margin-left:6px}

/* v25: reminders bell, scheduled jobs, retention */
.navbell{display:flex;align-items:center;gap:10px;margin:6px 10px 0;padding:7px 10px;border-radius:8px;color:#cbd5e1;font-size:13px;font-weight:500}
.navbell:hover{background:rgba(255,255,255,.06);text-decoration:none}
.navbell.on{background:rgba(99,102,241,.2);color:#fff}
.navbell svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.navbell span{flex:1}
.navbell b{background:#ef4444;color:#fff;border-radius:999px;font-size:11px;padding:1px 7px;line-height:1.5}
.navbell.has svg{color:#fbbf24}
.navtoggle{position:relative}
.navdot{position:absolute;top:6px;right:6px;width:9px;height:9px;border-radius:50%;background:#ef4444;box-shadow:0 0 0 2px var(--card)}
.notiflist{overflow:hidden}
.notif{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-top:1px solid var(--line2);color:var(--ink)}
.notif:first-child{border-top:0}
.notif:hover{background:var(--line2);text-decoration:none}
.notif.unread{background:var(--accent-soft)} .notif.unread strong{color:var(--accent)}
.notif .ni{font-size:18px;line-height:1.2;flex:none}
.notif .nt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.notif .nd{flex:none;white-space:nowrap}
.jobs-tbl td{vertical-align:top} .jobs-tbl form{margin:0}
.nowrap{white-space:nowrap}
.ret-n{width:80px;margin:0;padding:5px 8px}
.ret-tbl td{vertical-align:middle}
.ret-off{border-left:4px solid var(--a)} .ret-on{border-left:4px solid var(--g)}
.ret-off p,.ret-on p{margin:0 0 10px}
@media (max-width:820px){.notif{flex-wrap:wrap}.notif .nd{flex-basis:100%;padding-left:30px}}

/* v26: feedback, usage, data quality, install */
.fbbtn{position:fixed;right:16px;bottom:16px;z-index:90;display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:999px;padding:7px 14px;font:inherit;font-size:13px;font-weight:600;box-shadow:0 6px 20px -8px rgba(15,23,42,.35);cursor:pointer}
.fbbtn:hover{border-color:var(--accent);color:var(--accent)}
.fbdlg{border:1px solid var(--line);border-radius:14px;padding:0;width:min(480px,calc(100vw - 32px));background:var(--card);color:var(--ink);box-shadow:0 24px 70px rgba(0,0,0,.35)}
.fbdlg::backdrop{background:rgba(2,6,23,.5)}
.fbdlg form{padding:20px} .fbdlg h2{margin-top:0}
.fbkinds{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.fbkinds label{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:13px;cursor:pointer;margin:0;font-weight:500}
.fbkinds input{margin:0;width:auto}
.fbkinds label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.fbitem{padding:14px 18px} .fbhead{display:flex;gap:10px;align-items:center;flex-wrap:wrap} .fbhead .pill{margin-left:auto}
.fbkind{font-weight:600} .fbmsg{margin:8px 0;white-space:normal}
.fbresp{background:var(--accent-soft);border-radius:8px;padding:8px 12px;font-size:13px}
.fbform{margin-top:6px} .fbform input{flex:1}
.fb-new{border-left:4px solid var(--a)} .fb-done,.fb-wont{opacity:.75}
.pill.fbst-new{background:var(--a-bg);color:var(--a)} .pill.fbst-done{background:var(--g-bg);color:var(--g)}
.ubar{display:inline-block;width:120px;height:8px;background:var(--line2);border-radius:4px;vertical-align:middle;overflow:hidden} .ubar i{display:block;height:100%;background:var(--accent);border-radius:4px}
.udays{display:flex;align-items:flex-end;gap:2px;height:90px;border-bottom:1px solid var(--line);padding-bottom:2px}
.udays span{flex:1;background:var(--accent);border-radius:2px 2px 0 0;min-width:2px} .udays span.we{opacity:.45}
.dqgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:16px}
.dqgrid .card{margin:0}
.dqc{display:flex;flex-direction:column;gap:3px;color:var(--ink);border-left:4px solid var(--a)} .dqc:hover{text-decoration:none;border-color:var(--accent)}
.dqc.ok{border-left-color:var(--g)} .dqc.on{outline:2px solid var(--accent)}
.dqn{font-size:24px;font-weight:700;line-height:1.1} .dqn small{font-size:13px;color:var(--muted);font-weight:500}
.dqchip{display:inline-block;font-size:12px;background:var(--a-bg);color:var(--a);border-radius:999px;padding:2px 10px;margin:2px 0}
.dqchip:hover{text-decoration:none;filter:brightness(.95)}
.install-how li{margin-bottom:4px}
@media print{.fbbtn,.fbdlg{display:none}}
@media (max-width:820px){.fbbtn{padding:7px 11px;bottom:12px;right:12px}.fbbtn span+*{display:none}}

/* v27: planner */
.ptools{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;padding:12px 16px}
.ptools .btnrow{margin:0;align-items:center} .prange{font-size:15px;margin-left:6px}
.ptfilters{margin:0} .ptfilters select{width:auto}
.segs{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.segs a{padding:6px 12px;font-size:13px;color:var(--ink2)} .segs a.on{background:var(--accent);color:var(--accent-ink)} .segs a:hover{text-decoration:none}
.plegend{flex-basis:100%;margin:0;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.pcard-k{display:inline-block;width:10px;height:10px;border-radius:2px;border-left:3px solid}
.pcard-k.g-r{border-color:var(--r)} .pcard-k.g-a{border-color:var(--a)} .pcard-k.g-g{border-color:var(--g)}
.lvk,.offk{display:inline-block;width:14px;height:10px;border-radius:2px;background:repeating-linear-gradient(45deg,var(--a-bg),var(--a-bg) 3px,transparent 3px,transparent 6px);border:1px solid var(--a)}
.offk{background:var(--line2);border-color:var(--line)}
.heavyk{background:var(--r-bg);color:var(--r);border-radius:4px;padding:0 4px;font-size:11px}
.pwrap{overflow:auto;max-height:calc(100vh - 220px)}
.planner{border-collapse:separate;border-spacing:0;width:100%;min-width:1100px;table-layout:fixed}
.planner th,.planner td{border-right:1px solid var(--line2);border-bottom:1px solid var(--line2);vertical-align:top;padding:5px;text-align:left}
.planner thead th{position:sticky;top:0;z-index:3;background:var(--card);font-size:12px;font-weight:600;color:var(--ink2);padding:8px 6px;border-bottom:1px solid var(--line)}
.planner thead th span{color:var(--muted);font-weight:500}
.planner thead th.today{color:var(--accent)} .planner thead th.today span{background:var(--accent);color:#fff;border-radius:999px;padding:0 6px}
.planner th.pp{position:sticky;left:0;z-index:2;background:var(--card);width:170px;font-weight:600;font-size:13px}
.planner thead th.pp{z-index:4}
.planner th.pp small{display:block;font-weight:400;color:var(--muted);font-size:11.5px}
.planner th.pp .pptot{margin-top:2px}
.planner .plate{width:150px;background:color-mix(in srgb,var(--r-bg) 45%,transparent)} .planner .pnod{width:150px;background:var(--line2)}
.planner th.we,.planner td.we{width:110px}
.pday{min-height:70px;transition:background .1s}
.planner td.pday{height:84px}
.pday.today{background:color-mix(in srgb,var(--accent-soft) 60%,transparent)}
.pday.off{background:repeating-linear-gradient(135deg,var(--line2),var(--line2) 4px,transparent 4px,transparent 9px)}
.pday.lv{background:repeating-linear-gradient(45deg,var(--a-bg),var(--a-bg) 4px,transparent 4px,transparent 9px)}
.pday.lvp{opacity:.95}
.pday.heavy .pn{background:var(--r-bg);color:var(--r)}
.pday.dropok{outline:2px dashed var(--accent);outline-offset:-3px;background:var(--accent-soft)}
body.pdragging .pday{cursor:copy}
.pdh{display:flex;gap:4px;align-items:center;font-size:11px;margin-bottom:3px;min-height:16px}
.pdh .pn{margin-left:auto;background:var(--line2);color:var(--ink2);border-radius:999px;padding:0 6px;font-size:11px}
.lvtag{background:var(--a-bg);color:var(--a);border-radius:4px;padding:0 5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pcard{position:relative;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--n);border-radius:6px;padding:4px 6px;margin-bottom:4px;font-size:12px;line-height:1.3;cursor:grab;box-shadow:0 1px 2px rgba(15,23,42,.06);overflow:hidden}
.pcard:hover,.pcard:focus{border-color:var(--accent);outline:none;box-shadow:0 2px 8px -2px rgba(79,70,229,.35)}
.pcard.g-r{border-left-color:var(--r)} .pcard.g-a{border-left-color:var(--a)} .pcard.g-g{border-left-color:var(--g)}
.pcard.locked{cursor:pointer;opacity:.8} .pcard.over{background:color-mix(in srgb,var(--r-bg) 55%,var(--card))}
.pcard.blocked{border-style:dashed} .pcard.dragging{opacity:.4} .pcard.saving{opacity:.6}
.pc-code{font-family:ui-monospace,monospace;color:var(--muted);font-size:11px}
.pc-t{display:block;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pc-tags{position:absolute;top:3px;right:4px;font-size:10px;display:flex;gap:2px} .pc-tags i{font-style:normal}
.pmore summary{font-size:11.5px;color:var(--accent);cursor:pointer;padding:2px 0}
.pmonth{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line2)}
.pmh{font-size:12px;font-weight:600;color:var(--muted);padding:6px;border-bottom:1px solid var(--line)}
.pmd{min-height:110px;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2);padding:5px}
.pmd.out{opacity:.45} .pdn{font-weight:600;font-size:12px}
.pside{max-height:60vh;overflow:auto}
.pdlg{border:1px solid var(--line);border-radius:14px;padding:0;width:min(420px,calc(100vw - 32px));background:var(--card);color:var(--ink)}
.pdlg::backdrop{background:rgba(2,6,23,.45)} .pdlg form{padding:18px} .pdlg h2{margin-top:0}
.ptoast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);background:var(--navy);color:#fff;padding:9px 12px 9px 16px;border-radius:10px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;z-index:130;display:flex;gap:12px;align-items:center;max-width:min(640px,calc(100vw - 32px))}
.ptoast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.ptoast.err{background:var(--r)} .ptoast.warn{background:#92400e}
.ptoast button{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:6px;padding:3px 10px;font:inherit;font-weight:600;cursor:pointer}
@media (max-width:820px){.pmonth{grid-template-columns:repeat(7,minmax(90px,1fr));overflow:auto}.colmain .pmonth{min-width:640px}.ptools{flex-direction:column;align-items:flex-start}}

/* v28: planner day view (Google Calendar style) */
.pjump{width:auto;margin:0 0 0 8px;padding:5px 8px}
.dwrap{overflow:auto;max-height:calc(100vh - 230px)}
.dgrid{display:grid;grid-template-columns:58px repeat(var(--cols),minmax(170px,1fr));min-width:calc(58px + var(--cols) * 170px)}
.dhead{position:sticky;top:0;z-index:5;background:var(--card);border-bottom:1px solid var(--line);border-left:1px solid var(--line2);padding:8px 8px 6px;font-weight:600;font-size:13px;display:flex;flex-direction:column;gap:2px}
.dhead small{font-weight:400;color:var(--muted);font-size:11.5px}
.dhead.dgut,.dall.dgut{border-left:0}
.dplan{align-self:flex-start;margin-top:3px;border:1px dashed var(--accent);background:transparent;color:var(--accent);border-radius:6px;padding:1px 8px;font:inherit;font-size:12px;cursor:pointer}
.dplan:hover{background:var(--accent-soft)}
.dall{border-left:1px solid var(--line2);border-bottom:2px solid var(--line);padding:5px;min-height:46px;background:var(--card)}
.dall.dgut{font-size:11px;color:var(--muted);text-align:right;padding-top:8px}
.dall .pcard{margin-bottom:3px}
.dchip{display:inline-block;margin:2px 4px 0 0;font-size:11.5px}
.dchip summary{cursor:pointer;color:var(--ink2);background:var(--line2);border-radius:999px;padding:1px 8px;list-style:none}
.dchip.late summary{background:var(--r-bg);color:var(--r)}
.dchip[open]{display:block} .dchip[open] summary{margin-bottom:4px}
.dhours{position:relative;height:var(--h)}
.dhours span{position:absolute;right:6px;transform:translateY(-50%);font-size:10.5px;color:var(--muted);white-space:nowrap}
.dhours span:first-child{transform:none}
.dcol{position:relative;height:var(--h);border-left:1px solid var(--line2);background:repeating-linear-gradient(to bottom,transparent 0,transparent 29px,color-mix(in srgb,var(--line2) 70%,transparent) 29px,color-mix(in srgb,var(--line2) 70%,transparent) 30px,transparent 30px,transparent 59px,var(--line) 59px,var(--line) 60px)}
.dcol.lv{background-color:color-mix(in srgb,var(--a-bg) 55%,transparent)}
.dcol.offday{background-color:var(--line2)}
.doff{position:absolute;left:0;right:0;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--line2) 80%,transparent),color-mix(in srgb,var(--line2) 80%,transparent) 4px,transparent 4px,transparent 9px);pointer-events:none}
.dblock{position:absolute;left:3px;right:6px;z-index:2;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-left:4px solid var(--n);border-radius:6px;padding:2px 6px;font-size:11.5px;line-height:1.3;overflow:hidden;cursor:grab;box-shadow:0 1px 3px rgba(15,23,42,.1)}
.dblock.g-r{border-left-color:var(--r)} .dblock.g-a{border-left-color:var(--a)} .dblock.g-g{border-left-color:var(--g)}
.dblock:hover,.dblock:focus{box-shadow:0 3px 10px -2px rgba(79,70,229,.45);outline:none;z-index:3}
.dblock b{font-weight:600;color:var(--ink2);margin-right:2px} .dblock .db-t{color:var(--ink)}
.dblock.done{opacity:.55;text-decoration:line-through} .dblock.locked{cursor:pointer;background:var(--line2)} .dblock.dragging{opacity:.35}
.dres{position:absolute;left:0;right:0;bottom:0;height:7px;cursor:ns-resize}
.dres:hover{background:color-mix(in srgb,var(--accent) 25%,transparent)}
.dtp{position:absolute;left:3px;right:6px;z-index:1;background:color-mix(in srgb,var(--g-bg) 80%,var(--card));border:1px dashed var(--g);border-radius:6px;padding:2px 6px;font-size:11px;color:var(--g);overflow:hidden;pointer-events:auto}
.dnow{position:absolute;left:-1px;right:0;height:2px;background:#ea4335;z-index:4;pointer-events:none}
.dnow::before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:#ea4335}
.dghost{position:absolute;left:3px;right:6px;z-index:6;border:2px dashed var(--accent);border-radius:6px;background:color-mix(in srgb,var(--accent-soft) 70%,transparent);font-size:11px;font-style:normal;color:var(--accent);padding:2px 6px;pointer-events:none;font-weight:600}
.tasktop{align-items:center;flex-wrap:wrap} .tasktop .segs{margin:0 4px}
.calink{display:block;margin:12px 0 6px} .copyrow{display:flex;gap:6px;margin-top:4px} .copyrow input{flex:1;margin:0;font-size:12px;font-family:ui-monospace,monospace}
.dall{position:sticky;top:var(--hh,62px);z-index:4;max-height:40vh;overflow:auto}
.pdlg [hidden]{display:none!important}
.dkapproved{background:var(--line2);border-radius:8px;padding:8px 12px;font-size:13px} .dk.dkn{min-width:22px;text-align:center}

/* v30: big Dunning-Kruger map */
.dkmapcard h2{margin-bottom:6px}
.dkwhere{margin:0 0 10px;font-size:14px}
.dkmap{width:100%;height:auto;display:block;max-height:72vh}
.dkmap .zone{stroke:none;opacity:.5} .dkmap .z-r{fill:var(--r-bg)} .dkmap .z-a{fill:var(--a-bg)} .dkmap .z-b{fill:var(--accent-soft)} .dkmap .z-g{fill:var(--g-bg)} .dkmap .z-p{fill:#f3e8ff}
.dkmap .zlbl{font-size:13px;font-weight:700;opacity:.85;stroke:none}
.dkmap text.z-r{fill:var(--r)} .dkmap text.z-a{fill:var(--a)} .dkmap text.z-b{fill:var(--accent)} .dkmap text.z-g{fill:var(--g)} .dkmap text.z-p{fill:#7b4fa0}
.dkmap .grid{stroke:var(--line);stroke-width:1;stroke-dasharray:2 4}
.dkmap .tick{font-size:12px;font-weight:700;fill:var(--ink2)} .dkmap .tickw{font-size:10.5px;fill:var(--muted)}
.dkmap .axt{font-size:12px;font-weight:600;fill:var(--ink2)}
.dkmap .curve{fill:none;stroke:var(--ink2);stroke-width:3;opacity:.35;stroke-linecap:round}
.dkmap .bub circle{fill-opacity:.55;stroke-width:1.5} .dkmap .bub text{font-size:11px;font-weight:700;fill:var(--ink);pointer-events:none}
.dkmap .b-r circle{fill:#dc2626;stroke:#b91c1c} .dkmap .b-a circle{fill:#d97706;stroke:#b45309} .dkmap .b-b circle{fill:#6366f1;stroke:#4f46e5} .dkmap .b-g circle{fill:#16a34a;stroke:#15803d} .dkmap .b-p circle{fill:#9333ea;stroke:#7b4fa0} .dkmap .b-n circle{fill:#94a3b8;stroke:#64748b}
.dkmap .bub.vonly circle{fill-opacity:.18;stroke-dasharray:3 2}
.dkmap .mark circle{stroke:var(--card);stroke-width:2.5;filter:drop-shadow(0 1px 2px rgba(15,23,42,.4))}
.dkmap .m-r circle{fill:#b91c1c} .dkmap .m-a circle{fill:#b45309} .dkmap .m-b circle{fill:#4338ca} .dkmap .m-g circle{fill:#15803d} .dkmap .m-p circle{fill:#7b4fa0} .dkmap .m-n circle{fill:#475569}
.dkmap .mlbl{font-size:11.5px;font-weight:600;fill:var(--ink);paint-order:stroke;stroke:var(--card);stroke-width:3.5px;stroke-linejoin:round}
.dkmap .solo .mlbl{font-size:14px;font-weight:700}
.dkmap .mnote{font-size:11.5px;fill:var(--ink2);paint-order:stroke;stroke:var(--card);stroke-width:3.5px}
.dklegend{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;margin:6px 0 0}
.lg-bub,.lg-vonly,.lg-mark{display:inline-block;width:12px;height:12px;border-radius:50%;background:#6366f1;opacity:.6;vertical-align:middle}
.lg-vonly{background:transparent;border:1.5px dashed #4f46e5;opacity:1} .lg-mark{background:#4338ca;opacity:1;box-shadow:0 0 0 2px var(--card),0 0 0 3px #4338ca}

/* v30.1: sidebar scrolls without a visible scrollbar */
.nav nav,.nav{scrollbar-width:none;-ms-overflow-style:none}
.nav nav::-webkit-scrollbar,.nav::-webkit-scrollbar{width:0;height:0;display:none}
/* v30.2: competence in the task list */
.tcomp{min-width:210px}
.tcp{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin-bottom:3px}
.tcn{white-space:nowrap}
.dk.tcs{font-size:10.5px;padding:1px 7px;white-space:nowrap}
.tcform{margin:0;flex-basis:100%} .tcform select{margin:2px 0 0;padding:3px 6px;font-size:11.5px;width:auto;max-width:100%}
.tcv{font-size:11.5px}
th .hint{display:inline-block;width:14px;height:14px;border-radius:50%;border:1px solid var(--line);font-size:10px;line-height:12px;text-align:center;color:var(--muted);cursor:help}

/* v31 · Slack check-ins */
.slk{display:inline-block;font-size:.7rem;line-height:1.4;padding:0 .35rem;border-radius:4px;background:rgba(97,31,105,.1);color:#611f69;font-weight:600;vertical-align:1px}
.sub-h{font-size:.8rem;font-weight:600;margin:.75rem 0 .25rem;color:var(--muted,#64748b);text-transform:uppercase;letter-spacing:.03em}
.integ-slack{margin-top:1rem}
.integ-slack .integ-steps code{font-size:.78rem}
.slrow b{white-space:nowrap}.slrow sup{font-size:.65em;color:var(--muted,#64748b)}
.vias{display:inline-flex;gap:.25rem;margin-left:.35rem;vertical-align:1px}
.via{display:inline-block;font-size:.66rem;line-height:1.45;padding:0 .35rem;border-radius:4px;font-weight:600;white-space:nowrap}
.via-s{background:rgba(97,31,105,.1);color:#611f69}
.via-a{background:#dcfce7;color:#166534}
.via-no{background:#fef3c7;color:#92400e}
.stat-via .vsub{font-size:.78rem;color:var(--muted,#64748b);margin-top:.15rem;font-weight:400}
.uploadhint{padding:.75rem 1rem;margin:1rem 0}
.upbusy{margin-top:.5rem;color:var(--accent,#4f46e5);font-weight:500}

/* v31.5 · Pathway graphs */
.pwgraphs{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem;margin:1rem 0}
.pwgraphs .card{margin:0}
.pwgraphs h2{font-size:.95rem}
.pwg{position:relative;height:220px}
.pwg.sm{height:170px}
.pwg-todo{border-style:dashed}

/* v31.6 · Training stages */
.stg{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap}
.stg b{font-weight:700}
.stg-g{background:var(--g-bg);color:var(--g)} .stg-b{background:#dbeafe;color:#1d4ed8} .stg-a{background:var(--a-bg);color:var(--a)} .stg-n{background:var(--n-bg);color:var(--n)}
.stgsteps{display:inline-flex;gap:3px;vertical-align:middle;margin-right:4px}
.stgsteps i{width:14px;height:7px;border-radius:2px;background:var(--line)}
.stgsteps i.on{background:#2a78d6} .stgsteps i.ask{background:transparent;box-shadow:inset 0 0 0 1.5px #2a78d6}
.stgrow{display:grid;grid-template-columns:minmax(180px,1fr) minmax(220px,2fr) minmax(200px,1.3fr);gap:8px 16px;padding:12px 0;border-top:1px solid var(--line2);align-items:start}
.stgrow:first-of-type{border-top:0}
.stg-who strong{display:block;margin-bottom:3px}
.stg-ask{background:#eff6ff;border-radius:8px;padding:6px 9px;margin-bottom:6px}
.stg-last{border-left:3px solid var(--g);padding:2px 0 2px 8px} .stg-last.notyet{border-left-color:var(--a)}
.stg-guide{white-space:pre-wrap;color:var(--ink2);margin-top:2px}
.stg-act .form label{display:block;margin:6px 0}
.stg-act textarea,.stg-act input:not([type=number]):not([type=date]){width:100%}
.stg-form summary{list-style:none;cursor:pointer;display:inline-block}
.stg-form summary::-webkit-details-marker{display:none}
.stg-form[open] summary{margin-bottom:6px}
.stg-dec .inline-form{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0}
.stg-hist{grid-column:1/-1}
.stg-hist ul{margin:4px 0 0;padding-left:18px}
.stgladder ol{margin:0 0 8px;padding-left:0;list-style:none;display:grid;gap:6px}
.stgladder li{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.stgrecent{list-style:none;margin:0;padding:0}
.stgrecent li{padding:7px 0;border-top:1px solid var(--line2)} .stgrecent li:first-child{border-top:0}
.stgrecent li.approved>b::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--g);margin-right:6px;vertical-align:1px}
.stgrecent li.notyet>b::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--a);margin-right:6px;vertical-align:1px}
td.warn{color:var(--a);font-weight:600}
@media (max-width:820px){.stgrow{grid-template-columns:1fr}}

/* v31.6 · Joined-up view and support panel */
.ju-tiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:10px}
.ju-tile{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--ink);background:var(--card);position:relative}
.ju-tile:hover{text-decoration:none;border-color:var(--accent)}
.ju-tile:not(:last-child)::after{content:'→';position:absolute;right:-11px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:12px;background:var(--card);line-height:1}
.ju-tile .lbl{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
.ju-tile b{font-size:18px;font-weight:700}
.ju-tile small{color:var(--muted);line-height:1.35}
.jg-g{color:var(--g)} .jg-b{color:#1d4ed8} .jg-r{color:var(--r)} .jg-n{color:var(--n)}
.ju-fb{background:var(--line2);border-radius:8px;padding:7px 10px;margin:0 0 8px}
.ju-links{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.ju-links li{display:flex;gap:8px;align-items:flex-start;font-size:13px}
.ju-links li span{flex:none;width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;margin-top:1px}
.ju-links .jl-ok span{background:var(--g-bg);color:var(--g)} .ju-links .jl-warn span{background:var(--a-bg);color:var(--a)} .ju-links .jl-info span{background:#dbeafe;color:#1d4ed8}
.ju-links a{color:var(--ink2)} .ju-links a:hover{color:var(--accent)}
.ss-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.ss-cols h3{margin:6px 0 4px}
.ss-cols ul{margin:0 0 10px;padding-left:18px}
.ss-cols li{margin:3px 0;font-size:13px} .ss-cols li.sub{list-style:none;margin-left:-4px;font-size:12px}
.ss-cols li a{color:var(--ink2)} .ss-cols li a:hover{color:var(--accent)}
.ss-stop{border-left:3px solid var(--a);padding-left:12px}
.ss-help{border-left:3px solid var(--g);padding-left:12px}
.ss-bal{margin:8px 0;color:var(--muted)} .ss-bal.warn{color:var(--a);font-weight:600}
@media (max-width:1100px){.ju-tiles{grid-template-columns:repeat(3,minmax(0,1fr))} .ju-tile::after{display:none}}
@media (max-width:720px){.ju-tiles{grid-template-columns:1fr 1fr} .ss-cols{grid-template-columns:1fr}}
@media print{.ju-tile::after{display:none}}

/* v31.7 · Checklist (to-do app layout) */
.tick{display:grid;grid-template-columns:230px minmax(0,1fr) 340px;gap:0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-height:70vh;overflow:hidden}
.tk-rail{background:#f8fafc;border-right:1px solid var(--line);padding:12px 8px;overflow:auto;max-height:80vh}
.tk-grp{margin-bottom:12px}
.tk-gh{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:4px 10px}
.tk-li{display:flex;align-items:center;gap:9px;width:100%;border:0;background:none;padding:7px 10px;border-radius:8px;font:inherit;font-size:13.5px;color:var(--ink2);cursor:pointer;text-align:left}
.tk-li:hover{background:#eef2ff}
.tk-li.on{background:var(--accent-soft);color:var(--accent);font-weight:600}
.tk-li b{margin-left:auto;font-weight:500;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.tk-ic{width:16px;text-align:center;color:var(--muted);font-size:12px}
.tk-ln{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-dot{width:9px;height:9px;border-radius:50%;margin:0 3px;flex:none}
.d-r{background:#ef4444}.d-a{background:#f59e0b}.d-b{background:#3b82f6}.d-g{background:#22c55e}.d-p{background:#8b5cf6}.d-n{background:#94a3b8}
.tk-main{padding:16px 18px;overflow:auto;max-height:80vh;min-width:0}
.tk-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.tk-head h2{font-size:20px;margin:0}
.tk-count{color:var(--muted);font-size:13px}
.tk-add{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:4px 6px 4px 12px;margin-bottom:14px;background:var(--card)}
.tk-add:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.tk-add span{color:var(--accent);font-size:18px}
.tk-add input{flex:1;border:0;outline:0;padding:8px 0;font:inherit;background:transparent;color:var(--ink);min-width:0}
.tk-add select{border:0;background:var(--line2);border-radius:6px;padding:5px 6px;font-size:12px;color:var(--ink2);width:auto}
.tk-sec{margin-bottom:8px}
.tk-sec>summary{list-style:none;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--ink2);padding:6px 2px;border-bottom:1px solid var(--line2)}
.tk-sec>summary::-webkit-details-marker{display:none}
.tk-sec>summary::before{content:'▾';display:inline-block;width:14px;color:var(--muted)}
.tk-sec:not([open])>summary::before{content:'▸'}
.tk-sec>summary span{color:var(--muted);font-weight:400;margin-left:4px}
.tk-row{display:flex;align-items:flex-start;gap:10px;padding:9px 8px;border-radius:8px;cursor:pointer;border-bottom:1px solid var(--line2)}
.tk-row:hover{background:#f8fafc}
.tk-row.sel{background:var(--accent-soft)}
.tk-chk{flex:none;width:18px;height:18px;border-radius:50%;border:2px solid #94a3b8;background:transparent;margin-top:2px;padding:0;cursor:pointer;font-size:11px;line-height:14px;color:#fff;display:flex;align-items:center;justify-content:center}
.tk-chk.g-green{border-color:#22c55e}.tk-chk.g-amber{border-color:#f59e0b}.tk-chk.g-red{border-color:#ef4444}
.tk-chk:hover:not(:disabled){background:var(--line2)}
.tk-chk:disabled{cursor:default;opacity:.55}
.tk-row.done .tk-chk{background:#94a3b8;border-color:#94a3b8}
.tk-row.done .tk-t{text-decoration:line-through;color:var(--muted)}
.tk-body{flex:1;min-width:0}
.tk-t{font-size:14px;line-height:1.35;color:var(--ink);overflow-wrap:anywhere}
.tk-meta{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;margin-top:3px;font-size:11.5px;color:var(--muted)}
.tk-tag{font-size:10.5px;font-weight:600;padding:1px 6px;border-radius:5px;background:var(--line2);color:var(--ink2)}
.tk-tag.q1{background:#fee2e2;color:#b91c1c}.tk-tag.q2{background:#dcfce7;color:#15803d}.tk-tag.q3{background:#fef3c7;color:#b45309}.tk-tag.q4{background:#e2e8f0;color:#475569}
.tk-tag.ip{background:#e0e7ff;color:#4338ca}.tk-tag.bl{background:#fee2e2;color:#b91c1c}.tk-tag.so{background:#fef3c7;color:#b45309}.tk-tag.ask{background:#dbeafe;color:#1d4ed8}
.dk.tk-dk{font-size:10.5px;padding:1px 7px}
.tk-stg{letter-spacing:-1px;color:#2a78d6;font-size:10px}
.tk-due{flex:none;font-size:12px;color:var(--muted);white-space:nowrap;margin-top:2px}
.tk-due.late{color:var(--r);font-weight:600}.tk-due.today{color:var(--accent);font-weight:600}
.tk-none{color:var(--muted);padding:30px 10px;text-align:center}
.tk-pane{border-left:1px solid var(--line);padding:16px;overflow:auto;max-height:80vh;display:flex;flex-direction:column;gap:10px}
.tk-empty{color:var(--muted);font-size:13px;margin:auto;text-align:center}
.tk-ph{display:flex;align-items:center;gap:8px;color:var(--muted)}
.tk-x{margin-left:auto;font-size:14px}
.tk-ph .gate{font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px}
.gate.g-green{background:var(--g-bg);color:var(--g)}.gate.g-amber{background:var(--a-bg);color:var(--a)}.gate.g-red{background:var(--r-bg);color:var(--r)}
.tk-pt{font-size:17px;margin:0;line-height:1.3}
.tk-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tk-fields label{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:3px}
.tk-desc{font-size:13px;color:var(--ink2);white-space:pre-wrap;margin:0;background:var(--line2);padding:8px 10px;border-radius:8px}
.tk-dkbox{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:grid;gap:6px}
.tk-dkh{font-weight:600;font-size:13px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tk-nums{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--muted)}
.tk-nums b{color:var(--ink)}
.tk-conf{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.tk-conf button{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--card);font:inherit;font-weight:600;cursor:pointer;color:var(--ink2)}
.tk-conf button.on{background:var(--accent);border-color:var(--accent);color:#fff}
.tk-toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:10px 16px;border-radius:10px;font-size:13.5px;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.25)}
@media (max-width:1150px){.tick{grid-template-columns:200px minmax(0,1fr)}.tk-pane{grid-column:1/-1;border-left:0;border-top:1px solid var(--line);max-height:none}.tk-pane:not(.open){display:none}}
@media (max-width:720px){.tick{grid-template-columns:1fr}.tk-rail{border-right:0;border-bottom:1px solid var(--line);max-height:none}.tk-lists{display:flex;gap:6px;overflow-x:auto}.tk-grp{display:flex;gap:4px;margin:0}.tk-gh{display:none}.tk-li{white-space:nowrap;width:auto;border:1px solid var(--line)}.tk-main,.tk-pane{max-height:none}}

/* v31.7 · Project board drag & drop */
.bcard[draggable="true"]{cursor:grab}
.bcard.dragging{opacity:.45}
.bcol.drop{outline:2px dashed var(--accent);outline-offset:-4px;background:var(--accent-soft)}
.bcard .bmove{margin-top:6px;font-size:11.5px;padding:2px 4px;width:100%;border-radius:6px}
@media (hover:hover) and (pointer:fine){.bcard .bmove{display:none}}
.bcard.saving{opacity:.6;pointer-events:none}

/* v31.8 · Per admin picker inside toolbars */
.toolbar .peoplepick{flex:1 1 100%;order:10}
.toolbar .selchips{flex:1 1 100%;order:11}
.peoplepick .pp-tools .btn{margin-left:auto}
.pp-item[hidden]{display:none}

/* v31.9 · when a task was completed */
.donewhen{margin-top:3px;font-size:11.5px;line-height:1.35}
.donetag{color:var(--g);font-weight:600;white-space:nowrap}
.donetag.nd{color:var(--muted);font-weight:500}
.dt-late{color:var(--r);font-size:11px;font-weight:600;white-space:nowrap}
.dt-ok{color:var(--muted);font-size:11px;white-space:nowrap}
tr.donegrp td{background:var(--g-bg);color:var(--g);font-weight:600;font-size:12.5px;padding:7px 12px;cursor:default}
tr.donegrp td .muted{font-weight:400;margin-left:6px}
.bc-done{margin-top:4px}
.tk-due.tk-done{color:var(--g);font-weight:600;display:flex;flex-direction:column;align-items:flex-end;gap:1px}
.tk-due.tk-done em{font-style:normal;font-size:10.5px;font-weight:500}.tk-due.tk-done em.late{color:var(--r)}.tk-due.tk-done em.ok{color:var(--muted)}
.tk-donebox{background:var(--g-bg);color:var(--g);border-radius:8px;padding:7px 10px;font-size:13px}

/* v32 · Communication */
.cmprof td.c,.cmprof th.c{text-align:center;width:64px}
.cmprof tr.on td:first-child{box-shadow:inset 3px 0 0 var(--g)}
.cmprof tr.sugg td{background:#fffbeb}
.cm-aud{display:flex;flex-wrap:wrap;gap:2px 12px}
.cm-aud label{white-space:nowrap;cursor:pointer}
.cmlines input[name$="[label]"]{width:100%;min-width:160px}
.cmlines tr.k-new td:first-child{box-shadow:inset 3px 0 0 var(--a)}
.cmlines tr.k-system td{color:var(--muted)}
.cm-sharedlist{max-height:220px;overflow:auto;columns:2 170px;padding:6px 0}
.cm-sharedlist label{display:block;break-inside:avoid}
.commcard .cm-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin:6px 0 8px}
.commcard .cm-stats div{background:var(--line2);border-radius:8px;padding:8px 10px}
.commcard .cm-stats b{display:block;font-size:18px}
.commcard .cm-stats span{font-size:12px;color:var(--muted)}
.commcard .cm-stats .warn b{color:var(--a)}
