[hidden]{display:none !important}
:root{
  --ground:#11151b; --panel:#181e27; --panel-2:#1f2733; --line:#2b3542; --ink:#e6eaf1; --ink-dim:#a9b2c1; --muted:#7a8496;
  --accent:#5b8fd6; --good:#45bf9f; --warn:#d6a547; --bad:#e06d86; --violet:#a98bd8;
  --sans:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif; --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--ground);color:var(--ink);font:14px/1.5 var(--sans)}
.classif{background:#1f6b3a;color:#e9fbef;text-align:center;font:600 11.5px/1.9 var(--mono);letter-spacing:.04em}
.mast{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:12px}
.logo{font:700 13px var(--mono);background:var(--accent);color:#0c1420;border-radius:6px;padding:6px 8px}
.name{font-weight:600}.sub{font-size:12px;color:var(--muted)}
.who{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-dim)}
select,input,textarea{background:var(--panel-2);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font:inherit;font-size:13px}
textarea{width:100%;min-height:70px;resize:vertical}
input[type=text],input:not([type]),input[type=number],input[type=date]{width:100%}
input[type=checkbox]{width:auto}
.tabs{display:flex;gap:2px;padding:0 16px;border-bottom:1px solid var(--line);overflow-x:auto}
.tab{background:none;border:0;color:var(--ink-dim);padding:10px 12px;font:inherit;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}
.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}
.badge{background:var(--bad);color:#fff;border-radius:9px;padding:0 6px;font-size:11px;margin-left:4px}
.badge:empty{display:none}
main{padding:16px 20px;max-width:1400px;margin:0 auto}
.foot{color:var(--muted);font-size:11.5px;text-align:center;padding:16px;border-top:1px solid var(--line)}
h2{font-size:18px;margin:0 0 4px}h3{font-size:14px;margin:0 0 8px}
.lede{color:var(--ink-dim);font-size:13px;margin:0 0 14px;max-width:900px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:14px}
.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(auto-fit,minmax(420px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.kpi .l{font-size:11.5px;color:var(--muted)}.kpi .v{font-size:22px;font-weight:600}
.hint{color:var(--muted);font-size:12px}.mono{font-family:var(--mono)}
.btn{background:var(--panel-2);color:var(--ink-dim);border:1px solid var(--line);border-radius:6px;padding:6px 11px;font:inherit;font-size:12.5px;cursor:pointer;text-decoration:none;display:inline-block}
.btn:hover{color:var(--ink);border-color:#3b485a}.btn.primary{background:var(--ink);color:var(--ground);border-color:var(--ink);font-weight:600}
.btn:disabled{opacity:.45;cursor:not-allowed}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{text-align:left;color:var(--muted);font-weight:500;font-size:11.5px;padding:5px 6px;border-bottom:1px solid var(--line)}
td{padding:6px;border-bottom:1px solid rgba(43,53,66,.6);vertical-align:top}
.num{text-align:right}
.scroll{overflow-x:auto}
.pill{display:inline-block;font-size:11px;border-radius:10px;padding:1px 8px;border:1px solid var(--line);white-space:nowrap}
.s-on-track,.s-complete,.s-approved{color:var(--good);border-color:rgba(69,191,159,.5)}
.s-at-risk,.s-awaiting_approval,.s-in_review,.s-medium{color:var(--warn);border-color:rgba(214,165,71,.5)}
.s-off-track,.s-high,.s-cancelled,.s-rejected{color:var(--bad);border-color:rgba(224,109,134,.5)}
.s-executing,.s-active{color:var(--accent);border-color:rgba(91,143,214,.5)}
.s-draft,.s-low{color:var(--ink-dim)}
.alert{display:flex;gap:10px;padding:6px 0;border-top:1px solid rgba(43,53,66,.6);font-size:13px}
.alert:first-child{border-top:0}.alert .a{flex:0 0 86px;font:600 10.5px var(--mono);text-transform:uppercase;padding-top:2px}
.alert.high .a{color:var(--bad)}.alert.medium .a{color:var(--warn)}.alert.low .a{color:var(--muted)}
.bar{height:7px;background:var(--line);border-radius:4px;position:relative;margin:4px 0}
.bar > div{height:7px;border-radius:4px;background:var(--good)}
.bar .proj{position:absolute;top:-3px;width:2px;height:13px;background:var(--ink-dim)}
.map{width:100%;height:auto;background:#141a22;border-radius:8px}
.wf-list .item{display:flex;justify-content:space-between;gap:8px;padding:8px;border-radius:8px;cursor:pointer;border:1px solid transparent}
.wf-list .item:hover{background:var(--panel-2)}.wf-list .item.sel{border-color:var(--accent);background:rgba(91,143,214,.08)}
.rail{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0 12px}
.rail .st{font-size:11.5px;padding:4px 8px;border-radius:6px;border:1px solid var(--line);color:var(--muted)}
.rail .st.done{color:var(--good);border-color:rgba(69,191,159,.4)}.rail .st.cur{color:var(--ink);border-color:var(--accent);background:rgba(91,143,214,.12)}
.rail .st.anchor::before{content:"\1F512 "}
label.fld{display:block;font-size:12px;color:var(--ink-dim);margin:10px 0 4px}
.cb{display:flex;gap:8px;align-items:center;margin:6px 0;font-size:13px}
.aipanel{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-top:12px;background:var(--panel-2)}
.lvl{font:600 10.5px var(--mono);padding:2px 7px;border-radius:5px;border:1px solid var(--line)}
.lvl.l1{color:var(--ink-dim)}.lvl.l2{color:var(--good);border-color:rgba(69,191,159,.5)}.lvl.l3{color:var(--violet);border-color:rgba(169,139,216,.5)}.lvl.anchor{color:var(--warn);border-color:var(--warn)}
.prop{border-top:1px solid var(--line);padding:6px 0;font-size:12.5px}.prop pre{white-space:pre-wrap;margin:4px 0;font:12px var(--mono);color:var(--ink-dim)}
.hist{font-size:12px;color:var(--ink-dim)}.hist div{padding:3px 0;border-top:1px solid rgba(43,53,66,.6)}
.heat td.sc{text-align:center;font-family:var(--mono);color:#0d1218;font-weight:600}
.err{color:var(--bad);font-size:12.5px;margin-top:8px}.ok{color:var(--good);font-size:12.5px;margin-top:8px}
.spark{display:block}
.links{display:flex;gap:12px;margin-top:3px;font-size:12px}
.links a,.focus-bar a{color:var(--accent);text-decoration:none}.links a:hover,.focus-bar a:hover{text-decoration:underline}
.focus-bar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:rgba(255,214,90,.08);border:1px solid rgba(255,214,90,.45);border-radius:8px;padding:8px 12px;margin-bottom:14px;font-size:13px}
tr.focus td{background:rgba(255,214,90,.1)}
.focus-ring{animation:fr 1.6s ease-out infinite}
@keyframes fr{0%{stroke-opacity:1}100%{stroke-opacity:.15}}
.s-not-reported,.s-milestone-overdue{color:var(--bad);border-color:rgba(224,109,134,.5)}
main:has(#mode-graph:not([hidden])){max-width:none}
.g-layout{display:grid;grid-template-columns:215px minmax(0,1fr) 300px;gap:12px;align-items:start}
.g-side{max-height:780px;overflow-y:auto;margin-bottom:0}
#g-canvas{height:780px;background:#141a22;border:1px solid var(--line);border-radius:10px}
.g-stage{position:relative;overflow:hidden;min-width:0}
#g-heads{position:absolute;inset:0;pointer-events:none}
.g-head{position:absolute;left:0;top:0;pointer-events:auto;width:max-content;background:rgba(20,26,34,.82);border:1px solid var(--line);border-radius:6px;color:#a9b2c1;font-family:inherit;font-weight:600;line-height:1.2;padding:2px 8px;cursor:pointer}
.g-head:hover{color:var(--ink);border-color:#a9c4ea}
.g-head.on{color:#ffd65a;border-color:#ffd65a}
.g-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:10px;min-height:32px;font-size:13px}
.g-bar a,.g-side a{color:var(--accent);text-decoration:none}.g-bar a:hover,.g-side a:hover{text-decoration:underline}
.g-type{display:flex;align-items:center;gap:7px;padding:2px 0;font-size:12.5px;cursor:pointer}
.g-type .n{margin-left:auto;color:var(--muted);font:11px var(--mono)}
.g-sw{width:14px;text-align:center;flex:none;font-size:13px;line-height:1}
.g-key{display:flex;align-items:center;gap:6px;margin-top:3px}.g-key span{width:10px;height:10px;border-radius:50%;flex:none}
.g-hit{display:block;width:100%;text-align:left;background:none;border:0;border-top:1px solid rgba(43,53,66,.6);color:var(--ink);font:inherit;font-size:12.5px;padding:6px 2px;cursor:pointer}
.g-hit:hover{background:var(--panel-2)}
.g-fields{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:8px 0;font-size:12.5px}
.g-fields dt{color:var(--muted)}.g-fields dd{margin:0}
.g-right{display:flex;flex-direction:column;height:780px;max-height:none;overflow:hidden;padding-top:8px}
.g-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 -2px 10px;flex:none}
.g-tab{background:none;border:0;border-bottom:2px solid transparent;color:var(--ink-dim);font:inherit;font-size:13px;padding:6px 8px;cursor:pointer}
.g-tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent)}
.g-pane{flex:1;min-height:0;overflow-y:auto}
#g-ask:not([hidden]){display:flex;flex-direction:column;overflow:hidden}
#g-log{flex:1;min-height:0;overflow-y:auto;padding-right:2px}
#g-ask-form{display:flex;gap:6px;align-items:flex-end;margin-top:8px;flex:none}
#g-ask-q{flex:1;resize:none;font:inherit;font-size:13px;background:var(--panel-2);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:7px 9px}
.g-q{margin:12px 0 4px 24px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px 10px 2px 10px;padding:7px 10px;font-size:13px}
.g-a{font-size:13px;line-height:1.5}.g-a p{margin:6px 0}.g-a ul,.g-a ol{margin:4px 0 6px;padding-left:18px}.g-a li{margin:2px 0}
.g-ref{color:var(--accent);text-decoration:none}.g-ref:hover{text-decoration:underline}
.g-a-foot{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}.g-a-foot a{color:var(--accent);text-decoration:none;font-size:12.5px}
.g-chip{background:none;border:1px solid var(--line);border-radius:12px;color:var(--ink-dim);font:inherit;font-size:12px;padding:3px 9px;margin:0 4px 5px 0;cursor:pointer;text-align:left}
.g-chip:hover{color:var(--ink);border-color:var(--accent)}
.vis-tooltip{position:absolute;background:var(--panel-2);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:4px 8px;font:12px var(--sans);max-width:320px;z-index:5}
@media(max-width:1180px){.g-layout{grid-template-columns:1fr}.g-side{max-height:none}#g-canvas{height:520px}.g-right{height:620px}}
/* documents */
.doc-layout{grid-template-columns:minmax(280px,380px) 1fr}
@media (max-width:900px){.doc-layout{grid-template-columns:1fr}}
.doc-body{margin-top:10px;max-height:640px;overflow:auto;border-top:1px solid var(--line)}
.doc-p{position:relative;padding:8px 34px 8px 10px;border-left:3px solid transparent}
.doc-p.at{border-left-color:#e8c48a;background:rgba(232,196,138,.08)}
.doc-h{font-weight:600;font-size:12.5px;color:#e8c48a;margin-bottom:3px}
.doc-text{white-space:pre-wrap;font-size:13px;line-height:1.55;overflow-wrap:anywhere}
.doc-n{position:absolute;right:6px;top:8px;font:11px var(--mono);color:var(--muted)}
.doc-quote{font-size:12.5px;color:var(--ink-dim);margin-top:3px}
mark{background:rgba(232,196,138,.3);color:var(--ink);border-radius:2px;padding:0 1px}
blockquote.q{margin:8px 0;padding:6px 10px;border-left:3px solid #e8c48a;background:rgba(232,196,138,.06);font-size:12.5px;border-radius:0 6px 6px 0}
blockquote.q div{margin-top:4px}
a.cite{color:#e8c48a;text-decoration:none;font-size:12px}a.cite:hover{text-decoration:underline}
.src{margin-top:4px;font-size:12px;color:var(--muted)}
.g-hit.sel{background:var(--panel-2);box-shadow:inset 3px 0 #e8c48a}
dialog#doc-pop{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:10px;max-width:min(640px,calc(100vw - 32px));width:100%;padding:16px}
dialog#doc-pop::backdrop{background:rgba(0,0,0,.55)}
dialog#doc-pop .doc-text{margin-top:8px;max-height:50vh;overflow:auto}
#mode-documents select,#mode-documents input{max-width:100%}
#mode-documents select{width:100%}
.doc-layout>div{min-width:0}
#doc-view .hint a,#doc-view a.g-chip{color:var(--accent);text-decoration:none}
#doc-view .hint a:hover{text-decoration:underline}
