:root{--blue:#17365d;--blue-dark:#0f2747;--gold:#b8892e;--bg:#f4f6f8;--card:#fff;--line:#d8e0eb;--text:#172033;--muted:#334155;--danger:#991b1b;--success:#065f46;--warning:#92400e;--focus:#f59e0b}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text);line-height:1.45}.skip-link{position:absolute;left:-999px;top:8px;background:#fff;color:var(--blue);border:3px solid var(--blue);padding:10px 12px;border-radius:8px;z-index:10000;font-weight:700}.skip-link:focus{left:8px}.layout{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,var(--blue),var(--blue-dark));color:white;padding:18px 16px;position:sticky;top:0;height:100vh;overflow:auto}.brand{display:flex;align-items:center;gap:12px;padding-bottom:16px;margin-bottom:14px;border-bottom:1px solid rgba(255,255,255,.18)}.brand-seal{width:56px;height:56px;border-radius:50%;background:white;padding:5px;flex:0 0 auto}.brand-seal img{width:100%;height:100%;object-fit:contain;border-radius:50%}.brand-title{font-weight:800;font-size:17px;line-height:1.15}.brand-subtitle{color:#e2e8f0;font-size:12px;margin-top:3px}.menu-label{color:#e2e8f0;font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:16px 8px 8px;font-weight:700}.nav-btn{width:100%;min-height:44px;border:0;border-radius:10px;background:transparent;color:white;cursor:pointer;text-align:left;padding:11px 12px;margin:3px 0;font-size:14px;display:flex;align-items:center;gap:10px}.nav-btn:hover,.nav-btn:focus{background:rgba(255,255,255,.12)}.nav-btn.active{background:rgba(184,137,46,.28);box-shadow:inset 4px 0 0 var(--gold)}.nav-icon{width:24px;height:24px;border-radius:8px;background:rgba(255,255,255,.12);display:grid;place-items:center;flex:0 0 auto}.polariq{margin-top:24px;padding-top:14px;border-top:1px solid rgba(255,255,255,.18);color:#e2e8f0;font-size:12px}.polariq a{color:#fff7cc;font-weight:800;text-decoration:none}.shell{min-width:0}.topbar{min-height:72px;background:white;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 22px;position:sticky;top:0;z-index:20}.mobile-menu{display:none;min-height:42px;border:1px solid var(--line);background:white;color:var(--blue);border-radius:10px;padding:8px 11px;font-weight:700}.topbar h1{margin:0;color:var(--blue);font-size:21px;line-height:1.15}.topbar-subtitle{font-size:12px;color:var(--muted);margin-top:2px}.top-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.mode-badge{border-radius:999px;padding:7px 11px;background:#eef2f7;color:var(--blue);font-size:12px;font-weight:800;border:1px solid var(--line)}.mode-badge.public{background:#f8fafc;color:#334155}.mode-badge.exec{background:#fffbeb;color:#854d0e;border-color:#facc15}.mode-badge.admin,.mode-badge.good{background:#ecfdf5;color:#065f46;border-color:#86efac}.mode-badge.warn{background:#fff7ed;color:#92400e;border-color:#fdba74}.btn{min-height:40px;border:1px solid var(--line);border-radius:10px;padding:9px 12px;cursor:pointer;font-weight:700;color:var(--blue);background:#eef2f7}.btn.primary{background:var(--blue);color:white;border-color:var(--blue)}.btn.danger{background:var(--danger);color:white;border-color:var(--danger)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:3px}main{padding:22px}.page{display:none}.page.active{display:block}.hero{background:radial-gradient(circle at top right,rgba(184,137,46,.22),transparent 32%),linear-gradient(135deg,#ffffff,#f8fafc);border:1px solid var(--line);border-radius:18px;padding:22px;margin-bottom:16px;box-shadow:0 8px 22px rgba(15,23,42,.06)}.kicker{color:var(--gold);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.hero h2{color:var(--blue);font-size:30px;margin:5px 0 6px}.hero p{max-width:960px;color:var(--muted);margin:0}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}.col3{grid-column:span 3}.col4{grid-column:span 4}.col6{grid-column:span 6}.col8{grid-column:span 8}.col12{grid-column:span 12}.stack{display:flex;flex-direction:column;gap:14px}.card{background:white;border:1px solid var(--line);border-radius:14px;padding:15px;box-shadow:0 4px 14px rgba(15,23,42,.05)}.card-header{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:14px 15px;margin:-15px -15px 14px}.card-header h3{color:var(--blue);margin:0;font-size:16px}.kpi{border-left:6px solid var(--gold)}.kpi strong{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.kpi .value{color:var(--blue);font-size:25px;font-weight:800;margin-top:5px}.kpi.bad .value{color:var(--danger)}.tile-btn{width:100%;text-align:left;cursor:pointer}.status{margin:10px 0;padding:11px 13px;border-radius:10px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8}.status.warn{background:#fff7ed;border-color:#fed7aa;color:#9a3412}.status.bad{background:#fef2f2;border-color:#fecaca;color:#991b1b}.status.good{background:#ecfdf5;border-color:#86efac;color:#065f46}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:white}table{width:100%;border-collapse:collapse;background:white;font-size:13px}th,td{padding:10px;border-bottom:1px solid #e5e7eb;text-align:left;vertical-align:middle}th{background:#f1f5f9;color:var(--muted);font-weight:800;white-space:nowrap}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.chart{display:flex;flex-direction:column;gap:9px}.bar-row{display:grid;grid-template-columns:190px 1fr 125px;gap:8px;align-items:center;font-size:13px}.bar-track{height:18px;background:#eef2f7;border-radius:999px;overflow:hidden;position:relative}.bar-budget,.bar-ytd,.bar-rec{height:100%}.bar-budget{background:var(--blue)}.bar-ytd{background:#475569}.bar-rec{background:var(--gold)}.legend{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:12px;margin-bottom:10px}.swatch{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:middle}.field{margin:10px 0}.field label{display:block;font-size:12px;font-weight:800;text-transform:uppercase;color:var(--muted);margin-bottom:5px}.field input,.field select,.field textarea{width:100%;min-height:40px;border:1px solid var(--line);border-radius:10px;padding:10px}.modal{position:fixed;inset:0;background:rgba(15,23,42,.56);display:none;place-items:center;padding:20px;z-index:1000}.login-card{width:100%;max-width:430px;background:white;border-radius:16px;box-shadow:0 20px 70px rgba(0,0,0,.3);overflow:hidden}.login-head{background:linear-gradient(135deg,var(--blue),var(--blue-dark));color:white;padding:18px}.login-head h2{margin:0}.login-body{padding:18px}.sr-only{position:absolute;left:-999px;width:1px;height:1px;overflow:hidden}.pill{display:inline-block;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700;background:#eef2f7;color:var(--blue);border:1px solid var(--line)}@media(max-width:1050px){.col3,.col4,.col6,.col8,.col12{grid-column:span 12}}@media(max-width:850px){.layout{display:block}.sidebar{position:fixed;left:-290px;width:280px;z-index:60;transition:left .18s ease}.sidebar.open{left:0}.mobile-menu{display:inline-block}main{padding:14px}.bar-row{grid-template-columns:1fr}.hero h2{font-size:24px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* ── v2.0 additions ─────────────────────────────────── */
.kpi-sub{font-size:12px;color:var(--muted);margin-top:2px}
.kpi-chip{display:inline-block;margin-top:6px;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:700}
.chip-bad{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
.chip-good{background:#ecfdf5;color:#065f46;border:1px solid #86efac}
.section-head-bar{display:flex;justify-content:space-between;align-items:center;padding:6px 0 10px}
.section-head-bar h3{margin:0;color:var(--blue);font-size:16px}
.legend-inline{display:flex;gap:12px;font-size:12px;color:var(--muted)}
.sw{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:middle}
.sw-blue{background:#17365d}.sw-mid{background:#4e86c8}.sw-gold{background:#b8892e}

/* Department tiles */
.dept-tile{width:100%;text-align:left;cursor:pointer;transition:box-shadow .15s,transform .12s;background:white;border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:0 2px 8px rgba(15,23,42,.05)}
.dept-tile:hover{box-shadow:0 8px 24px rgba(15,23,42,.12);transform:translateY(-2px);border-color:var(--gold)}
.tile-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:10px}
.tile-dept-info{flex:1;min-width:0}
.tile-code{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.tile-name{font-weight:800;font-size:14px;color:var(--blue);line-height:1.2;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile-chg-badge{border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700;white-space:nowrap;flex-shrink:0}
.tile-badge-warn{background:#fff7ed;color:#92400e;border:1px solid #fed7aa}
.tile-badge-good{background:#ecfdf5;color:#065f46;border:1px solid #86efac}
.tile-badge-neutral{background:#f1f5f9;color:#475569;border:1px solid var(--line)}
.tile-col-heads{display:grid;grid-template-columns:90px 1fr 1fr 1fr;gap:4px;font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;padding:0 2px}
.tile-row{display:grid;grid-template-columns:90px 1fr 1fr 1fr;gap:4px;font-size:12px;padding:3px 2px;border-radius:6px}
.tile-row:hover{background:#f8fafc}
.tile-cat{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:4px}
.tile-num{text-align:right;font-variant-numeric:tabular-nums;font-size:12px}
.tile-total-row{border-top:1px solid var(--line);margin-top:4px;padding-top:6px;font-weight:700}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}
.sal-dot{background:#4e86c8}.exp-dot{background:#b8892e}
.tile-ytd-wrap{margin-top:10px;padding-top:8px;border-top:1px solid #f1f5f9}
.tile-ytd-label{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:4px}
.ytd-track{height:6px;background:#e2e8f0;border-radius:999px;overflow:hidden}
.ytd-fill{height:100%;background:var(--blue);border-radius:999px;transition:width .4s ease}
.ytd-over{background:#dc2626}
.text-bad{color:#991b1b}.text-good{color:#065f46}
.text-warn{color:#92400e}

/* Dept modal */
#deptModal{position:fixed;inset:0;background:rgba(15,23,42,.6);display:none;place-items:center;padding:16px;z-index:200;overflow:auto}
#deptModal > .modal-inner{background:white;border-radius:18px;width:100%;max-width:1200px;max-height:92vh;overflow:auto;padding:24px;box-shadow:0 24px 80px rgba(0,0,0,.3)}
.dept-modal-topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.dept-modal-title{margin:0;font-size:22px}

/* GL tables */
.gl-table th,.gl-table td{font-size:12px;padding:7px 8px}
.act-col{background:#fafbfc;color:var(--muted)!important}
.class-band{background:#f8fafc}
.class-band td{font-size:12px;color:var(--blue);padding:8px 10px}
.sub-row td{background:#f1f5f9}
.sub-cell{background:#f1f5f9!important}
.tot-row td{background:#17365d!important;color:white!important;font-weight:700}
.tot-cell{background:#17365d!important;color:white!important}
.bld{font-weight:800}
.mono{font-family:monospace;font-size:12px}
.muted{color:var(--muted)}
.link-btn{background:none;border:none;padding:0;color:var(--blue);font-weight:600;cursor:pointer;font-size:13px;text-decoration:underline;text-underline-offset:2px;display:block;text-align:left;width:100%}
.link-btn:hover{color:var(--gold)}

/* Inline bars (YTD table) */
.inline-bar-track{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden;min-width:100px}
.inline-bar-fill{height:100%;background:var(--blue);border-radius:999px}
.bar-over{background:#dc2626}

/* Search input */
.search-input{border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:13px;min-width:220px;outline:none}
.search-input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,137,46,.15)}

/* Toggle switch */
.toggle{position:relative;display:inline-block;width:44px;height:24px}
.toggle input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;cursor:pointer;inset:0;background:#cbd5e1;border-radius:999px;transition:.2s}
.toggle-slider:before{content:'';position:absolute;height:18px;width:18px;left:3px;bottom:3px;background:white;border-radius:50%;transition:.2s;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.toggle input:checked + .toggle-slider{background:#17365d}
.toggle input:checked + .toggle-slider:before{transform:translateX(20px)}

/* Admin tabs */
.admin-tabs{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap}
.admin-tab{border:1px solid var(--line);border-radius:10px;padding:10px 16px;cursor:pointer;font-weight:700;font-size:13px;color:var(--muted);background:white;transition:.15s}
.admin-tab:hover{border-color:var(--gold);color:var(--blue)}
.admin-tab.active{background:var(--blue);color:white;border-color:var(--blue)}
.admin-panel{animation:fadeIn .15s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

/* Pills */
.good-pill{background:#ecfdf5;color:#065f46;border:1px solid #86efac}
.bad-pill{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
.warn-pill{background:#fff7ed;color:#92400e;border:1px solid #fed7aa}
.exec-pill{background:#fffbeb;color:#854d0e;border:1px solid #fcd34d}
.admin-pill{background:#ede9fe;color:#6d28d9;border:1px solid #c4b5fd}

/* ── Compliance panels ─────────────────────────────────── */
.compliance-panel{border-radius:14px;padding:16px;margin-bottom:16px;border:2px solid}
.nss-panel{border-color:#4e86c8;background:linear-gradient(135deg,#eff6ff,#f8fafc)}
.lib-panel{border-color:#b8892e;background:linear-gradient(135deg,#fffbeb,#fefce8)}
.comp-header{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}
.comp-icon{font-size:28px;flex-shrink:0;line-height:1}
.comp-title{font-weight:800;font-size:15px;color:var(--blue)}
.comp-subtitle{font-size:12px;color:var(--muted);margin-top:3px}
.comp-scenarios{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.comp-scenario{border-radius:10px;padding:10px 14px;min-width:160px;flex:1;border:2px solid}
.comp-pass{background:#ecfdf5;border-color:#86efac;color:#065f46}
.comp-warn{background:#fff7ed;border-color:#fed7aa;color:#92400e}
.comp-fail{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.comp-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.comp-val{font-size:22px;font-weight:800;margin:4px 0 2px}
.comp-gap{font-size:12px;opacity:.85}
.comp-detail{background:rgba(255,255,255,.6);border-radius:8px;padding:10px;font-size:13px}
.comp-detail-row{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px solid rgba(0,0,0,.06)}
.comp-detail-row:last-child{border:0}
.comp-detail-row.bld{font-weight:800}

/* OML compliance table */
.oml-issues{margin:0;padding-left:16px;font-size:12px;color:#991b1b}
.oml-issues li{margin:2px 0}
.highlight-row td{font-weight:700;background:#fffbeb}

/* Better table caption / screen reader support */
caption.sr-only{position:absolute;left:-999px;width:1px;height:1px;overflow:hidden}
table[aria-label] th[scope="col"]{background:#f1f5f9}

/* ── Tile metrics (5-metric layout) ───────────────────── */
.tile-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:10px 0 8px}
.tile-metric{background:#f8fafc;border-radius:7px;padding:5px 7px;text-align:left;min-width:0;overflow:hidden}
.tile-metric-last{grid-column:span 1;background:#fffbeb;border:1px solid #fde68a}
.tile-metric-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);line-height:1.1;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:100%}
.tile-metric-val{font-size:12px;font-weight:800;color:var(--blue);font-variant-numeric:tabular-nums;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:100%}
.tile-metric-sub{font-size:9px;color:var(--muted);margin-top:1px;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:100%}
.tile-comp-badge{display:inline-block;padding:1px 5px;border-radius:4px;font-size:9px;font-weight:800;letter-spacing:.06em;vertical-align:middle;margin-left:4px}
.nss-badge{background:#dbeafe;color:#1e40af}
.lib-badge{background:#fef3c7;color:#92400e}

/* ── Scenario modeler ──────────────────────────────────── */
.scen-radio{display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:2px solid var(--line);cursor:pointer;font-size:13px;font-weight:600;transition:.15s;user-select:none}
.scen-radio.active{border-color:var(--blue);background:#eff6ff;color:var(--blue)}
.scen-radio input{accent-color:var(--blue)}
.scen-override-row{background:#fffbeb}

/* ── Rec edit draft/publish indicators ─────────────────── */
.rec-note{font-size:11px;padding:3px 7px;border-radius:5px;margin-top:4px}
.rec-note.draft{background:#fff7ed;color:#92400e;border:1px solid #fed7aa}
.rec-note.published{background:#ecfdf5;color:#065f46;border:1px solid #86efac}

/* ── Org Chart ─────────────────────────────────────────── */
.org-tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.org-tab{border:1px solid var(--line);border-radius:10px;padding:9px 16px;cursor:pointer;font-weight:700;font-size:13px;color:var(--muted);background:white;transition:.15s}
.org-tab:hover{border-color:var(--gold);color:var(--blue)}
.org-tab.active{background:var(--blue);color:white;border-color:var(--blue)}
.org-panel{animation:fadeIn .15s ease}
.org-tree-ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.org-tree-li{position:relative}
.org-tree-li .org-tree-ul{margin-top:6px;padding-left:28px;border-left:2px solid #e2e8f0}
.org-node{background:white;border:1px solid var(--line);border-radius:10px;padding:10px 14px;display:inline-block;min-width:180px;max-width:320px;transition:.15s}
.org-node:hover{border-color:var(--gold);box-shadow:0 2px 8px rgba(0,0,0,.08)}
.org-vacant{border-style:dashed;opacity:.7}
.org-node-title{font-weight:800;font-size:13px;color:var(--blue);margin-bottom:3px}
.org-node-person{font-size:12px;color:#334155}
.vacant-label{color:var(--muted);font-style:italic}
.org-dept-link{font-size:10px;margin-top:4px;display:block}

/* ── Upload result box ─────────────────────────────────── */
.upload-result { margin-top: 10px; }
.upload-result .status { white-space: pre-wrap; font-family: monospace; font-size: 12px;
  max-height: 280px; overflow: auto; line-height: 1.5; }

/* col2 = 2-column span for 6-card department detail row */
.col2{grid-column:span 2}
@media(max-width:1050px){.col2{grid-column:span 4}}
@media(max-width:850px){.col2{grid-column:span 12}}

/* ── Revenue filter bar ────────────────────────────────── */
.rev-filter-bar{display:flex;gap:6px;flex-wrap:wrap;padding:12px 0 4px}
.rev-filter-btn{border:1px solid var(--line);border-radius:999px;padding:5px 14px;cursor:pointer;font-size:12px;font-weight:700;color:var(--muted);background:white;transition:.12s}
.rev-filter-btn:hover{border-color:var(--blue);color:var(--blue)}
.rev-filter-btn.active{background:var(--blue);color:white;border-color:var(--blue)}

/* ── Capital FinCom decision row colors ─────────────────── */
tr.cap-funded{background:#f0fdf4}
tr.cap-notfunded{background:#fef2f2;opacity:.75}
tr.cap-partial{background:#fff7ed}
