/* ── Kneuralabs brand tokens ── */
:root{
  --ink:#1A1D23;--paper:#F7F8FA;--steel:#0D2E5A;
  --accent:#1C5CAA;--accent-h:#0D2E5A;
  --red:#C8281E;--red-h:#8B1A12;--sky:#4A8BC8;--silver:#D0D2D6;
  --gold:#C8281E;--mist:#6B7280;--card:#FFFFFF;--border:#E0E4EA;
  --green:#2d9e5a;--blue:#1C5CAA;--purple:#7c3aed;
  --r:6px;--shadow:0 2px 20px rgba(0,0,0,.06);--shadow-lg:0 8px 40px rgba(0,0,0,.12);
  --ease:cubic-bezier(.16,1,.3,1);
  --mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bot:env(safe-area-inset-bottom,0px);
}
[data-theme="dark"]{
  --ink:#E8EAF0;--paper:#071528;--card:#0D2E5A;--border:#1C3E70;--mist:#8B9AB1;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Inter',sans-serif;background:var(--paper);color:var(--ink);min-height:100vh;overflow-x:hidden;font-feature-settings:'tnum','cv11'}
/* MONO NUMERALS — financials, metrics, dates, codes */
.stat-val,.cal-day,.gantt-month,.gantt-bar-label,.cr-id,.num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.util-label,.prog-wrap+small,.dec-meta,.cal-sub{font-variant-numeric:tabular-nums}
td{font-variant-numeric:tabular-nums}

/* LOADER */
#loader{position:fixed;inset:0;background:var(--steel);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999;transition:opacity .5s var(--ease)}
#loader.out{opacity:0;pointer-events:none}
.ld-logo{font-family:'Inter',sans-serif;font-weight:800;font-size:clamp(2rem,6vw,4rem);color:#fff;letter-spacing:-.03em}
.ld-logo span{color:var(--accent)}
.ld-bar{width:200px;height:2px;background:rgba(255,255,255,.1);margin-top:24px;border-radius:2px;overflow:hidden}
.ld-fill{width:0;height:100%;background:var(--accent);animation:ldFill 1.4s var(--ease) forwards}
.ld-sub{color:#8b9ab1;font-size:.65rem;margin-top:12px;letter-spacing:.12em;text-transform:uppercase}
@keyframes ldFill{to{width:100%}}

/* LAYOUT */
#app{display:grid;grid-template-columns:260px 1fr;min-height:100vh;opacity:0;transform:translateY(8px);transition:opacity .5s .3s var(--ease),transform .5s .3s var(--ease)}
#app.show{opacity:1;transform:none}

/* SIDEBAR */
aside{background:var(--steel);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:none}
aside::-webkit-scrollbar{display:none}
.logo{padding:calc(28px + var(--safe-top)) 24px 20px;border-bottom:1px solid rgba(255,255,255,.08)}
.logo h1{font-family:'Inter',sans-serif;font-weight:800;font-size:1.4rem;letter-spacing:-.02em;line-height:1}
.logo h1 span{color:var(--accent)}
.logo p{font-size:.65rem;color:var(--mist);margin-top:4px;letter-spacing:.08em;text-transform:uppercase}
nav{padding:20px 12px;flex:1}
.nav-section{font-size:.6rem;color:var(--mist);letter-spacing:.12em;text-transform:uppercase;padding:0 12px;margin:16px 0 6px}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;cursor:pointer;font-size:.78rem;color:rgba(255,255,255,.7);transition:all .2s;border:none;background:none;width:100%;text-align:left}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:var(--accent);color:#fff;font-weight:600}
.nav-item svg{width:15px;height:15px;flex-shrink:0}
.nav-badge{margin-left:auto;background:rgba(255,255,255,.15);font-size:.6rem;padding:2px 7px;border-radius:20px;min-width:22px;text-align:center}
.nav-item.active .nav-badge{background:rgba(255,255,255,.25)}
.sidebar-footer{padding:16px 24px calc(16px + var(--safe-bot));border-top:1px solid rgba(255,255,255,.08);font-size:.65rem;color:var(--mist);line-height:1.6}

/* MAIN */
main{display:flex;flex-direction:column;min-height:100vh;background:var(--paper)}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 32px;background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;gap:12px}
.topbar-left{display:flex;align-items:center;gap:14px;min-width:0}
.page-title{font-family:'Inter',sans-serif;font-weight:700;font-size:1.1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:6px;font-family:'Inter',sans-serif;font-size:.75rem;cursor:pointer;border:none;transition:all .2s;font-weight:500;white-space:nowrap}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-h);transform:translateY(-1px);box-shadow:0 4px 12px rgba(28,92,170,.3)}
.btn-outline{background:transparent;color:var(--ink);border:1.5px solid var(--border)}
.btn-outline:hover{border-color:var(--ink);background:var(--ink);color:#fff}
.btn-sm{padding:5px 10px;font-size:.68rem}
.content{padding:28px 32px 40px;flex:1}

/* PANELS */
.panel{display:none}
.panel.active{display:block;animation:fadeUp .35s var(--ease)}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* STAGGERED CARD ANIMATION */
.stagger>*{opacity:0;transform:translateY(12px);animation:fadeUp .4s var(--ease) forwards}
.stagger>*:nth-child(1){animation-delay:.04s}
.stagger>*:nth-child(2){animation-delay:.1s}
.stagger>*:nth-child(3){animation-delay:.16s}
.stagger>*:nth-child(4){animation-delay:.22s}
.stagger>*:nth-child(5){animation-delay:.28s}
.stagger>*:nth-child(6){animation-delay:.34s}

/* STATS ROW */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}
.stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:20px;position:relative;overflow:hidden;transition:transform .2s,box-shadow .2s;cursor:default;opacity:1;transform:none}
.stat-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent)}
.stat-card.gold::before{background:var(--gold)}
.stat-card.green::before{background:var(--green)}
.stat-card.blue::before{background:var(--blue)}
.stat-card.purple::before{background:var(--purple)}
.stat-label{font-size:.62rem;color:var(--mist);text-transform:uppercase;letter-spacing:.1em}
.stat-val{font-family:var(--mono);font-weight:700;font-size:2rem;margin:6px 0 2px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.stat-sub{font-size:.65rem;color:var(--mist)}
.stat-icon{position:absolute;right:16px;top:16px;opacity:.08;width:40px;height:40px}

/* SECTION HEADERS */
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:8px}
.section-title{font-family:'Inter',sans-serif;font-weight:700;font-size:.95rem}
.section-sub{font-size:.68rem;color:var(--mist)}

/* TABLE */
.table-wrap{background:var(--card);border:1px solid var(--border);border-radius:var(--r);overflow:auto;box-shadow:var(--shadow)}
table{width:100%;border-collapse:collapse;min-width:500px}
th{background:#f8f7f4;padding:10px 14px;text-align:left;font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mist);border-bottom:1px solid var(--border);white-space:nowrap}
td{padding:12px 14px;border-bottom:1px solid var(--border);font-size:.76rem;vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:#faf9f6;transition:background .15s}

/* BADGES */
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:.62rem;font-weight:600}
.badge::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}
.badge-on{background:#dcfce7;color:#166534}
.badge-risk{background:#fef9c3;color:#854d0e}
.badge-off{background:#fee2e2;color:#991b1b}
.badge-plan{background:#e0e7ff;color:#3730a3}
.badge-done{background:#f0fdf4;color:#166534}
.badge-info{background:#e0f2fe;color:#075985}
.badge-none{background:#f1f5f9;color:#475569}

/* PROGRESS BAR */
.prog-wrap{width:100px;background:#eee;border-radius:20px;height:5px;overflow:hidden;display:inline-block;vertical-align:middle}
.prog-fill{height:100%;border-radius:20px;background:var(--accent);transition:width .8s var(--ease)}

/* GANTT */
.gantt-wrap{background:var(--card);border:1px solid var(--border);border-radius:var(--r);overflow:auto;box-shadow:var(--shadow)}
.gantt-head{display:flex;border-bottom:1px solid var(--border);background:#f8f7f4;min-width:900px}
.gantt-label-col{width:200px;flex-shrink:0;padding:10px 16px;font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mist);border-right:1px solid var(--border)}
.gantt-months{display:flex;flex:1}
.gantt-month{flex:1;padding:10px 8px;text-align:center;font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mist);border-right:1px solid var(--border)}
.gantt-month:last-child{border-right:none}
.gantt-row{display:flex;border-bottom:1px solid var(--border);align-items:center;min-height:44px;min-width:900px}
.gantt-row:last-child{border-bottom:none}
.gantt-row-label{width:200px;flex-shrink:0;padding:8px 16px;font-size:.73rem;border-right:1px solid var(--border);font-weight:500;line-height:1.3}
.gantt-row-label small{display:block;font-size:.6rem;color:var(--mist);font-weight:400;margin-top:2px}
.gantt-timeline{flex:1;position:relative;height:44px}
.gantt-bar{position:absolute;height:22px;top:50%;transform:translateY(-50%);border-radius:4px;background:var(--accent);opacity:.85;transition:opacity .2s,box-shadow .2s;cursor:grab;touch-action:none;will-change:transform,opacity}
.gantt-bar:hover{opacity:1;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.gantt-bar.dragging{cursor:grabbing;opacity:1;transition:none;z-index:6;transform:translateY(-50%)!important;box-shadow:0 4px 14px rgba(0,0,0,.28)}
.gantt-handle{position:absolute;top:0;width:9px;height:100%;cursor:ew-resize;z-index:3}
.gantt-handle.l{left:0;border-radius:4px 0 0 4px}.gantt-handle.r{right:0;border-radius:0 4px 4px 0}
.gantt-bar:hover .gantt-handle{background:rgba(255,255,255,.4)}
.gantt-bar-label{position:absolute;inset:0;display:flex;align-items:center;padding:0 8px;font-size:.58rem;color:#fff;white-space:nowrap;overflow:hidden}
.gantt-bar.gold{background:var(--gold)}.gantt-bar.green{background:var(--green)}.gantt-bar.blue{background:var(--blue)}.gantt-bar.purple{background:var(--purple)}
.today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);opacity:.4;z-index:5;pointer-events:none}

/* RISK GRID */
.risk-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.risk-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:20px;box-shadow:var(--shadow)}
.risk-title{font-family:'Inter',sans-serif;font-weight:700;font-size:.88rem;margin-bottom:14px}
.risk-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:3px}
.risk-high{background:#ef4444}.risk-med{background:#f59e0b}.risk-low{background:#22c55e}

/* MILESTONES */
.ml-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;border:2px solid var(--card)}
.ml-dot.done{background:#22c55e}.ml-dot.current{background:var(--accent)}.ml-dot.future{background:var(--border)}

/* RESOURCE */
.resource-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.resource-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);transition:transform .2s}
.resource-card:hover{transform:translateY(-2px)}
.avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Inter',sans-serif;font-weight:700;font-size:.9rem;color:#fff;flex-shrink:0}
.rc-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.rc-name{font-weight:600;font-size:.82rem}
.rc-role{font-size:.63rem;color:var(--mist)}
.util-bar-wrap{margin-top:10px}
.util-label{display:flex;justify-content:space-between;font-size:.63rem;color:var(--mist);margin-bottom:4px}
.util-bar{height:6px;background:#eee;border-radius:20px;overflow:hidden}
.util-fill{height:100%;border-radius:20px;transition:width 1s var(--ease)}

/* BUDGET */
.budget-row{display:grid;grid-template-columns:180px 1fr 80px minmax(100px,auto);gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}
.budget-row:last-child{border-bottom:none}
.budget-name{font-size:.76rem;font-weight:500;line-height:1.3}
.donut-wrap{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
svg.donut{transform:rotate(-90deg);flex-shrink:0}
.donut-legend{display:flex;flex-direction:column;gap:8px;min-width:120px}
.legend-item{display:flex;align-items:center;gap:8px;font-size:.72rem}
.legend-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}

/* MODAL */
.modal-bg{position:fixed;inset:0;background:rgba(10,12,16,.55);backdrop-filter:blur(4px);z-index:500;display:none;align-items:center;justify-content:center;padding:16px}
.modal-bg.open{display:flex;animation:fadeIn .2s}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{background:var(--card);border-radius:12px;padding:28px;width:min(580px,100%);box-shadow:var(--shadow-lg);animation:slideUp .3s var(--ease);max-height:90vh;overflow-y:auto}
@keyframes slideUp{from{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}
.modal h2{font-family:'Inter',sans-serif;font-weight:700;font-size:1.05rem;margin-bottom:20px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid.full{grid-template-columns:1fr}
label{display:block;font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mist);margin-bottom:5px}
input,select,textarea{width:100%;padding:9px 12px;border:1.5px solid var(--border);border-radius:6px;font-family:'Inter',sans-serif;font-size:.76rem;background:var(--paper);color:var(--ink);transition:border-color .2s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}
textarea{resize:vertical;min-height:72px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}

/* SEARCH */
.search-box{position:relative}
.search-box input{padding-left:32px}
.search-box svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--mist);width:14px;height:14px}
.quick-add{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:12px 16px;margin-bottom:16px;flex-wrap:wrap}
.quick-add span{font-size:.72rem;color:var(--mist);white-space:nowrap}

/* TOAST */
#toast{position:fixed;bottom:calc(24px + var(--safe-bot));right:24px;background:var(--steel);color:#fff;padding:12px 18px;border-radius:8px;font-size:.75rem;z-index:9998;transform:translateY(60px);opacity:0;transition:all .3s var(--ease);max-width:280px}
#toast.show{transform:none;opacity:1}

/* MOBILE TOGGLE */
.menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:6px;flex-shrink:0}

/* GOVERNANCE SPECIFIC */
.gov-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.health-ring-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.health-ring{flex-shrink:0}
.health-ring svg{transform:rotate(-90deg)}
.gate-dot{width:10px;height:10px;border-radius:50%;display:inline-block;vertical-align:middle;margin-right:4px}
.gate-pass{background:#22c55e}.gate-review{background:#f59e0b}.gate-pending{background:#94a3b8}.gate-block{background:#ef4444}
.policy-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);gap:8px;flex-wrap:wrap}
.policy-row:last-child{border-bottom:none}
.policy-name{font-size:.75rem;font-weight:500;flex:1;min-width:120px}
.policy-checks{display:flex;gap:4px;flex-wrap:wrap}
.chk{width:22px;height:22px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;flex-shrink:0;cursor:help}
.chk-ok{background:#dcfce7;color:#166534}.chk-warn{background:#fef9c3;color:#854d0e}.chk-fail{background:#fee2e2;color:#991b1b}.chk-na{background:#f1f5f9;color:#94a3b8}
.decision-item{padding:10px 0;border-bottom:1px solid var(--border);display:flex;gap:12px;align-items:flex-start}
.decision-item:last-child{border-bottom:none}
.dec-type{font-size:.58rem;font-weight:700;padding:2px 7px;border-radius:3px;text-transform:uppercase;letter-spacing:.06em;flex-shrink:0;margin-top:2px}
.dec-approved{background:#dcfce7;color:#166534}.dec-deferred{background:#fef9c3;color:#854d0e}.dec-rejected{background:#fee2e2;color:#991b1b}.dec-pending{background:#e0e7ff;color:#3730a3}
.dec-body{flex:1;min-width:0}
.dec-title{font-size:.76rem;font-weight:500;line-height:1.3}
.dec-meta{font-size:.63rem;color:var(--mist);margin-top:2px}
.cr-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}
.cr-row:last-child{border-bottom:none}
.cr-id{font-size:.62rem;color:var(--mist);font-weight:700;white-space:nowrap;min-width:48px}
.cr-title{font-size:.75rem;flex:1;min-width:100px;font-weight:500}
.cr-impact{font-size:.62rem;padding:2px 7px;border-radius:3px;font-weight:600}
.cr-h{background:#fee2e2;color:#991b1b}.cr-m{background:#fef9c3;color:#854d0e}.cr-l{background:#dcfce7;color:#166534}
.gov-cal-item{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.gov-cal-item:last-child{border-bottom:none}
.cal-date-box{background:var(--paper);border:1px solid var(--border);border-radius:6px;width:44px;text-align:center;padding:6px 4px;flex-shrink:0}
.cal-day{font-family:var(--mono);font-weight:700;font-size:1.1rem;line-height:1;font-variant-numeric:tabular-nums}
.cal-mon{font-size:.55rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mist)}
.cal-body{flex:1;min-width:0}
.cal-title{font-size:.76rem;font-weight:500}
.cal-sub{font-size:.63rem;color:var(--mist);margin-top:2px}

/* SETTINGS MODAL */
.color-row{display:flex;align-items:center;gap:10px}
.color-row input[type=color]{width:40px;height:32px;padding:2px;border-radius:4px;cursor:pointer}

/* SIDEBAR OVERLAY */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:199}
.sidebar-overlay.show{display:block;animation:fadeIn .2s}

/* RESPONSIVE */
@media(max-width:1100px){
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .budget-row{grid-template-columns:140px 1fr 60px auto}
}
@media(max-width:900px){
  #app{grid-template-columns:1fr}
  aside{position:fixed;left:-280px;top:0;height:100%;width:260px;z-index:200;transition:left .3s var(--ease)}
  aside.open{left:0;box-shadow:var(--shadow-lg)}
  .menu-toggle{display:block}
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .resource-grid{grid-template-columns:repeat(2,1fr)}
  .risk-grid,.gov-grid{grid-template-columns:1fr}
  .content{padding:20px 16px}
  .topbar{padding:14px 16px}
  .form-grid{grid-template-columns:1fr}
  .budget-row{grid-template-columns:1fr 1fr;row-gap:4px;}
}
@media(max-width:500px){
  .stats-grid{grid-template-columns:1fr 1fr}
  .resource-grid{grid-template-columns:1fr}
  .stat-val{font-size:1.6rem}
  .content{padding:16px 12px}
  .topbar{padding:12px}
  table{min-width:400px}
}
/* Landscape mobile safe zones */
@media(max-height:500px) and (orientation:landscape){
  .content{padding:12px 16px}
  .stats-grid{grid-template-columns:repeat(4,1fr)}
}
/* Tablet portrait */
@media(min-width:768px) and (max-width:1023px){
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .resource-grid{grid-template-columns:repeat(2,1fr)}
}
/* Touch targets */
@media(pointer:coarse){
  .btn{min-height:44px;padding:10px 18px}
  .btn-sm{min-height:36px}
  .nav-item{min-height:44px}
}
/* Dark mode overrides */
[data-theme="dark"] th{background:#0a1e3d}
[data-theme="dark"] tr:hover td{background:#0f2747}
[data-theme="dark"] .topbar{background:var(--card);border-bottom-color:var(--border)}
[data-theme="dark"] input,[data-theme="dark"] select,[data-theme="dark"] textarea{background:#071528;color:var(--ink);border-color:var(--border)}
[data-theme="dark"] .modal{background:var(--card)}
[data-theme="dark"] .quick-add{background:var(--card);border-color:var(--border)}
[data-theme="dark"] .stat-card{background:var(--card);border-color:var(--border)}
[data-theme="dark"] .risk-card{background:var(--card);border-color:var(--border)}
[data-theme="dark"] .resource-card{background:var(--card);border-color:var(--border)}
[data-theme="dark"] .table-wrap{background:var(--card);border-color:var(--border)}
[data-theme="dark"] td{border-bottom-color:var(--border)}
[data-theme="dark"] .gantt-wrap,[data-theme="dark"] .gantt-head,[data-theme="dark"] .gantt-row{background:var(--card);border-color:var(--border)}
[data-theme="dark"] .gantt-month,[data-theme="dark"] .gantt-label-col,[data-theme="dark"] .gantt-row-label{border-color:var(--border)}
[data-theme="dark"] .prog-wrap{background:var(--border)}
[data-theme="dark"] .cal-date-box{background:#0a1e3d;border-color:var(--border)}
[data-theme="dark"] .btn-outline{border-color:var(--border);color:var(--ink)}
[data-theme="dark"] .btn-outline:hover{background:var(--border);color:var(--ink)}
/* Floating theme toggle */
#theme-toggle{position:fixed;bottom:76px;right:20px;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--card);color:var(--mist);cursor:pointer;z-index:9000;display:flex;align-items:center;justify-content:center;font-size:1rem;box-shadow:0 2px 8px rgba(0,0,0,.1);transition:box-shadow .2s,transform .15s;padding:0}
#theme-toggle:hover{box-shadow:0 4px 16px rgba(0,0,0,.18);transform:translateY(-1px)}
@media(max-width:900px){#theme-toggle{bottom:70px;right:14px}}
/* ── MONOCHROME ICON SYSTEM ── */
/* Nav icons — muted when idle, sharp when active/hovered */
.nav-item svg{stroke:rgba(255,255,255,.45);transition:stroke .15s}
.nav-item:hover svg{stroke:rgba(255,255,255,.8)}
.nav-item.active svg{stroke:#fff}
/* Button icons — inherit text but at reduced opacity */
.btn svg{opacity:.75;transition:opacity .15s}
.btn:hover svg,.btn:focus svg{opacity:1}
.btn-primary svg{opacity:.9}
/* Topbar hamburger + topbar action icons */
.menu-toggle svg{stroke:var(--mist)}
.menu-toggle:hover svg{stroke:var(--ink)}
/* ── AUTOSAVE UI ── */
.as-bar{display:flex;align-items:center;gap:8px;padding:8px 0 4px;flex-wrap:wrap}
#autosave-toggle{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:20px;font-size:.68rem;font-weight:600;cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--mist);transition:all .2s;white-space:nowrap}
#autosave-toggle.on{background:#dcfce7;color:#166534;border-color:#bbf7d0}
[data-theme="dark"] #autosave-toggle.on{background:#14532d;color:#86efac;border-color:#166534}
.as-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}
#autosave-toggle.on .as-dot{animation:asPulse 1.8s ease-in-out infinite}
@keyframes asPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}
#as-next{font-size:.62rem;color:var(--mist);min-width:90px}
[data-theme="dark"] #autosave-toggle{background:var(--card);border-color:var(--border)}

/* ══ WORLD-CLASS ANIMATION LAYER ══ */
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes floatGlow{0%,100%{box-shadow:0 2px 20px rgba(0,0,0,.06)}50%{box-shadow:0 6px 28px rgba(28,92,170,.12)}}
@keyframes popIn{0%{opacity:0;transform:scale(.92) translateY(8px)}60%{opacity:1;transform:scale(1.01)}100%{transform:scale(1) translateY(0)}}
@keyframes slideBar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes ringGlow{0%,100%{filter:none}50%{filter:drop-shadow(0 0 6px var(--accent))}}
/* progress bars sweep + subtle live shimmer */
.prog-fill,.util-fill{position:relative;background-image:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);background-size:200% 100%;background-repeat:no-repeat;animation:shimmer 2.6s var(--ease) infinite}
/* nav micro-interaction */
.nav-item{position:relative}
.nav-item::after{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%) scaleY(0);width:3px;height:60%;background:#fff;border-radius:2px;transition:transform .25s var(--ease)}
.nav-item.active::after{transform:translateY(-50%) scaleY(1)}
.nav-item:hover{transform:translateX(3px)}
/* buttons: lift + sheen */
.btn{position:relative;overflow:hidden}
.btn::before{content:'';position:absolute;top:0;left:-120%;width:60%;height:100%;background:linear-gradient(120deg,transparent,rgba(255,255,255,.35),transparent);transition:left .55s var(--ease)}
.btn:hover::before{left:140%}
.btn:active{transform:scale(.96)}
/* stat cards: staggered pop + hover float */
.stat-card{animation:popIn .5s var(--ease) both}
.stat-card:hover{animation:floatGlow 2.4s ease-in-out infinite}
.stat-val{transform-origin:50% 0;backface-visibility:hidden}
@keyframes flipIn{0%{transform:perspective(420px) rotateX(-90deg);opacity:0}55%{transform:perspective(420px) rotateX(12deg);opacity:1}100%{transform:perspective(420px) rotateX(0);opacity:1}}
.stat-val.flip{animation:flipIn .55s var(--ease) both}
/* table rows reveal */
tbody tr{animation:fadeUp .45s var(--ease) both}
tbody tr:nth-child(1){animation-delay:.02s}tbody tr:nth-child(2){animation-delay:.06s}tbody tr:nth-child(3){animation-delay:.1s}tbody tr:nth-child(4){animation-delay:.14s}tbody tr:nth-child(5){animation-delay:.18s}tbody tr:nth-child(n+6){animation-delay:.22s}
/* gantt bars grow from left */
.gantt-bar{transform-origin:left center}
.gantt-bar:hover{transform:translateY(-50%) scale(1.015)}
.health-ring svg:hover{animation:ringGlow 2s ease-in-out infinite}
/* clickable project rows */
tr.proj-row{cursor:pointer}
tr.proj-row:hover td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
/* ══ PROJECT DETAIL ══ */
.modal.wide{width:min(960px,100%)}
.pd-head{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.pd-meta{display:flex;gap:18px;flex-wrap:wrap;font-size:.68rem;color:var(--mist);margin:8px 0 16px}
.pd-meta b{color:var(--ink);font-family:var(--mono)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px;flex-wrap:wrap}
.tab{padding:9px 14px;font-size:.72rem;font-weight:600;color:var(--mist);cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;transition:all .2s}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.tab-pane{display:none;animation:fadeUp .3s var(--ease)}
.tab-pane.active{display:block}
.st-row{display:grid;grid-template-columns:160px 1fr auto;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border)}
.st-name{font-size:.74rem;font-weight:500}
.st-name small{display:block;color:var(--mist);font-size:.6rem}
.st-track{position:relative;height:20px;background:var(--paper);border-radius:5px;overflow:hidden}
.st-bar{position:absolute;height:100%;border-radius:5px;background:var(--accent);opacity:.9;display:flex;align-items:center;padding:0 7px;font-size:.55rem;color:#fff;white-space:nowrap;transform-origin:left;animation:slideBar .6s var(--ease) both}
.mini-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;align-items:end;background:var(--paper);border:1px solid var(--border);border-radius:8px;padding:12px;margin-top:14px}
.mini-form .btn{height:38px}
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--paper);border:1px solid var(--border);border-radius:8px;padding:12px 14px}
.kpi .l{font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mist)}
.kpi .v{font-family:var(--mono);font-weight:700;font-size:1.25rem;margin-top:4px}
/* ══ CONTINUOUS IMPROVEMENT (CIP) ══ */
.cip-board{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.cip-col{background:var(--paper);border:1px solid var(--border);border-radius:8px;padding:10px;min-height:120px}
.cip-col h4{font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mist);margin-bottom:10px;display:flex;justify-content:space-between}
.cip-col h4 span{font-family:var(--mono)}
.cip-card{background:var(--card);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:6px;padding:10px;margin-bottom:8px;cursor:grab;transition:transform .15s,box-shadow .15s;animation:popIn .4s var(--ease) both}
.cip-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.cip-card.dragging{opacity:.5}
.cip-col.drop{outline:2px dashed var(--accent);outline-offset:-4px}
.cip-t{font-size:.72rem;font-weight:600;line-height:1.3}
.cip-m{font-size:.58rem;color:var(--mist);margin-top:5px;display:flex;gap:6px;flex-wrap:wrap}
.pill{font-size:.55rem;font-weight:700;padding:1px 6px;border-radius:10px}
.pill-hi{background:#fee2e2;color:#991b1b}.pill-md{background:#fef9c3;color:#854d0e}.pill-lo{background:#dcfce7;color:#166534}
@media(max-width:900px){.cip-board{grid-template-columns:1fr 1fr;}.st-row{grid-template-columns:1fr;gap:6px}}
@media(max-width:500px){.cip-board{grid-template-columns:1fr}}
/* Respect reduced motion */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}

/* ════ SCANDINAVIAN MINIMAL — normal weight, airy, quiet surfaces (colors unchanged) ════ */
*,*::before,*::after{font-weight:400!important}
.brand-line{display:flex;align-items:flex-end;gap:4px}
.status-dot{width:6px;height:6px;margin-bottom:3px;border-radius:50%;border:none;padding:0;flex-shrink:0;cursor:pointer;background:var(--green);box-shadow:0 0 0 2px rgba(45,158,90,.22);transition:background .3s,box-shadow .3s,transform .15s}
.status-dot:hover{transform:scale(1.25)}
.status-dot.warn{background:#d99a0b;box-shadow:0 0 0 2px rgba(217,154,11,.22)}
/* quiet surfaces */
.stat-card,.kpi,.cip-col,.cip-card,.table-wrap,.mini-form,.btn{box-shadow:none!important}
.stat-card::before{height:2px}
.cip-card{border-left-width:2px}
.stat-card:hover,.cip-card:hover{transform:none!important;box-shadow:0 4px 24px rgba(0,0,0,.05)!important}
.btn-primary:hover,.btn-outline:hover{transform:none!important;box-shadow:none!important}
.btn-outline:hover{background:transparent;color:var(--ink);border-color:var(--ink)}
tr:hover td{background:transparent}
input,select,textarea{border-width:1px}
.btn{border-radius:4px}
.nav-item.active{background:rgba(255,255,255,.10);box-shadow:inset 2px 0 0 var(--accent)!important;border-radius:0}
/* generous whitespace */
.content{padding:40px 44px 56px}
.topbar{padding:22px 44px}
.stats-grid{gap:20px;margin-bottom:36px}
.stat-card{padding:24px}
.section-header{margin-bottom:22px}
th,td{padding:14px 16px}
@media(max-width:768px){.content{padding:24px 18px 40px}.topbar{padding:16px 18px}}

/* ════ SYSTEM MENU POPOVER (anchored to status dot) ════ */
.sys-menu{position:fixed;top:72px;left:20px;z-index:9500;width:222px;background:var(--card);color:var(--ink);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 40px rgba(0,0,0,.18);padding:10px;opacity:0;transform:translateY(-6px) scale(.98);transform-origin:top left;pointer-events:none;transition:opacity .16s var(--ease),transform .16s var(--ease)}
.sys-menu.open{opacity:1;transform:none;pointer-events:auto}
.sys-menu-status{display:flex;align-items:center;gap:8px;font-size:.74rem;padding:4px 6px 8px}
.sys-status-dot{width:9px;height:9px;border-radius:50%;background:var(--green);flex-shrink:0}
.sys-menu.warn .sys-status-dot{background:#d99a0b}
.sys-menu-gh{font-size:.66rem;color:var(--mist);padding:0 6px 8px;border-bottom:1px solid var(--border);margin-bottom:6px}
.sys-menu-btn{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;cursor:pointer;color:var(--ink);font-family:inherit;font-size:.74rem;padding:9px 6px;border-radius:6px;transition:background .15s}
.sys-menu-btn:hover{background:var(--paper)}
.sys-menu-btn svg{width:15px;height:15px;flex-shrink:0;stroke:var(--mist)}

/* ════ TOP NAVIGATION BAR (icon-only) ════ */
.topbar{flex-wrap:wrap;gap:10px}
.topnav{display:flex;align-items:center;gap:2px;flex-wrap:wrap}
.topnav .nav-item{width:auto;padding:9px;border-radius:6px;color:var(--mist);position:relative;background:none}
.topnav .nav-item svg{width:18px;height:18px;stroke:var(--mist);opacity:1}
.topnav .nav-item:hover{background:var(--paper)}
.topnav .nav-item:hover svg{stroke:var(--ink)}
.topnav .nav-item.active{background:rgba(28,92,170,.1);box-shadow:none!important;border-radius:6px}
.topnav .nav-item.active svg{stroke:var(--accent)}
.topnav .nav-badge{position:absolute;top:1px;right:1px;margin:0;min-width:15px;height:15px;padding:0 3px;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font-size:.5rem;line-height:1;border-radius:8px}
.topnav .nav-badge:empty{display:none}
.page-title{display:none}
/* icon-only chrome buttons — no label */
.btn.icon-only{gap:0;padding:9px}
.btn.icon-only .lbl{display:none}

/* ════ SIDEBAR: brand dot after wordmark + project lifecycle stepper ════ */
.logo{display:block}
.lifecycle{padding:18px 22px;flex:1;overflow-y:auto;scrollbar-width:none}
.lifecycle::-webkit-scrollbar{display:none}
.lifecycle .nav-section{padding:0;margin:0 0 16px}
.lc-step{display:flex;gap:12px;position:relative;padding-bottom:20px}
.lc-step:last-of-type{padding-bottom:8px}
.lc-step:not(:last-of-type)::before{content:'';position:absolute;left:11px;top:24px;bottom:-2px;width:1.5px;background:rgba(255,255,255,.16)}
.lc-step.done:not(:last-of-type)::before{background:var(--green)}
.lc-marker{width:23px;height:23px;border-radius:50%;border:1.5px solid rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font-size:.62rem;color:rgba(255,255,255,.6);flex-shrink:0;background:var(--steel);z-index:1}
.lc-step.done .lc-marker{background:var(--green);border-color:var(--green);color:#fff}
.lc-step.current .lc-marker{border-color:var(--accent);color:#fff;box-shadow:0 0 0 3px rgba(28,92,170,.3)}
.lc-name{font-size:.76rem;color:rgba(255,255,255,.88);line-height:1.2}
.lc-step.upcoming .lc-name{color:rgba(255,255,255,.4)}
.lc-sub{font-size:.6rem;color:var(--mist);margin-top:2px}
.lc-foot{font-size:.6rem;color:var(--mist);margin-top:4px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08)}
