/* ============================================================
   CRUCIBLE — single-file foundry command center
   100% offline. No external CSS/JS/fonts/CDN. Nothing can 404.
   ============================================================ */
*,*::before,*::after{box-sizing:border-box}
:root{
  /* Surfaces — light, airy, sky-tinted */
  --bg:#eef3f9; --s1:#ffffff; --s2:#ffffff; --s3:#e9f0f7;
  --line:#d4e0ec; --line-soft:#e6eef6;
  /* Text — deep slate-blue for strong AA contrast on light */
  --ink:#15324b; --dim:#42566b; --faint:#7e90a4;
  /* Brand — SKY BLUE primary, SOFT RED accent */
  --sky:#0f7bbf; --sky-deep:#0c6aa6; --sky-soft:#e3f1fb; --sky-ink:#0b5e96;
  --red:#dd5a55; --red-deep:#c2453f; --red-soft:#fbe6e5; --red-ink:#b23a36;
  --on-primary:#ffffff;
  /* Aliases so existing accent classes pick up the new palette */
  --cat:#0f7bbf; --cat-deep:#0c6aa6;
  --molten:#c2453f; --molten-bg:#fbe6e5;
  /* Status — pastel tint backgrounds + dark ink => guaranteed AA */
  --good:#0f8a57; --good-bg:#e1f3ea;
  --warn:#b06f12; --warn-bg:#fbeed5;
  --bad:#c2453f;  --bad-bg:#fbe6e5;
  --info:#0c6aa6; --info-bg:#e3f1fb;
  --r-sm:8px; --r:12px; --r-lg:18px;
  --sp:18px;
  --mono:ui-monospace,"SF Mono","Cascadia Mono","JetBrains Mono","Roboto Mono",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --shadow:0 10px 30px rgba(20,50,80,.10),0 2px 8px rgba(20,50,80,.06);
  --ring:0 0 0 2px #ffffff,0 0 0 4px var(--sky);
}
html,body{margin:0;padding:0}
body{
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(255,205,17,.05), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(255,106,43,.05), transparent 55%),
    var(--bg);
  color:var(--ink); font-family:var(--sans); font-size:15px; line-height:1.5;
  -webkit-font-smoothing:antialiased; min-height:100vh;
}
/* subtle grit texture, generated (no image request) */
body::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:0; opacity:.025;
  background-image:radial-gradient(rgba(255,255,255,.6) .5px, transparent .5px);
  background-size:3px 3px;
}
a{color:var(--cat); text-decoration:none}
a:hover{text-decoration:underline}
button{font-family:inherit}
.mono{font-family:var(--mono); font-variant-numeric:tabular-nums}
.skip-link{position:absolute; left:-999px; top:0; z-index:200; background:var(--cat); color:#fff; padding:8px 14px; border-radius:var(--r-sm); font-weight:700}
.skip-link:focus{left:10px; top:10px}
:focus-visible{outline:none; box-shadow:var(--ring); border-radius:var(--r-sm)}

/* ---------- layout ---------- */
.topbar{position:sticky; top:0; z-index:60; display:flex; align-items:center; gap:12px;
  padding:10px 16px; background:rgba(20,23,26,.92); backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line)}
.icon-btn{display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px;
  border:1px solid var(--line); background:var(--s2); color:var(--ink); border-radius:var(--r-sm); cursor:pointer}
.icon-btn:hover{background:var(--s3)}
.nav-toggle{display:none}
.bars,.bars::before,.bars::after{display:block; width:18px; height:2px; background:var(--ink); position:relative; border-radius:2px}
.bars::before,.bars::after{content:""; position:absolute; left:0}
.bars::before{top:-6px} .bars::after{top:6px}
.brand{display:flex; align-items:center; gap:10px; color:var(--ink)}
.brand:hover{text-decoration:none}
.brand-text strong{display:block; font-size:16px; letter-spacing:.5px; line-height:1}
.brand-text small{display:block; font-size:10.5px; color:var(--faint); letter-spacing:.3px; margin-top:2px}
.topbar-spacer{flex:1}
.tb-search{display:flex; align-items:center; gap:8px; background:var(--s2); border:1px solid var(--line);
  border-radius:999px; padding:7px 12px; color:var(--dim); cursor:text; min-width:180px}
.tb-search:hover{border-color:var(--line)}
.tb-search input{border:none; background:none; color:var(--ink); outline:none; width:100%; font-size:13px}
.kbd{font-family:var(--mono); font-size:10px; border:1px solid var(--line); border-radius:4px; padding:1px 5px; color:var(--faint); background:var(--bg)}
.proj-picker{display:flex; flex-direction:column; gap:2px}
.proj-picker span{font-size:9px; text-transform:uppercase; letter-spacing:.6px; color:var(--faint)}
.proj-picker select{background:var(--s2); color:var(--ink); border:1px solid var(--line); border-radius:var(--r-sm); padding:5px 8px; font-size:12.5px; max-width:240px}

.shell{display:flex; min-height:calc(100vh - 59px); position:relative; z-index:1}
.sidenav{width:236px; flex-shrink:0; border-right:1px solid var(--line); padding:14px 10px 30px;
  position:sticky; top:59px; height:calc(100vh - 59px); overflow-y:auto; background:rgba(22,25,28,.6)}
.nav-group{font-size:10px; text-transform:uppercase; letter-spacing:.7px; color:var(--faint); margin:16px 10px 6px}
.nav-group:first-child{margin-top:0}
.nav-item{display:flex; align-items:center; gap:10px; width:100%; text-align:left; padding:8px 11px; margin:1px 0;
  background:none; border:none; color:var(--dim); border-radius:var(--r-sm); cursor:pointer; font-size:13.5px}
.nav-item:hover{background:var(--s2); color:var(--ink)}
.nav-item.active{background:linear-gradient(90deg, rgba(255,205,17,.16), rgba(255,205,17,.04)); color:var(--ink); font-weight:600; box-shadow:inset 2px 0 0 var(--cat)}
.nav-ic{width:8px; height:8px; border-radius:2px; background:var(--faint); flex-shrink:0}
.nav-item.active .nav-ic{background:var(--cat)}
.sidenav-foot{margin-top:22px; padding:12px 11px; border:1px dashed var(--line-soft); border-radius:var(--r); color:var(--faint); font-size:11px}
.scrim{position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:55; backdrop-filter:blur(2px)}

.view{flex:1; min-width:0; padding:22px clamp(16px,3vw,34px) 60px; outline:none}
@media(max-width:980px){
  .nav-toggle{display:inline-flex}
  .sidenav{position:fixed; left:0; top:59px; z-index:58; transform:translateX(-100%); transition:transform .22s ease; box-shadow:var(--shadow)}
  body.nav-open .sidenav{transform:translateX(0)}
  .tb-search{display:none}
}
@media(min-width:981px){ .scrim{display:none} }
@media(prefers-reduced-motion:reduce){ *{transition:none!important; animation:none!important} }

/* ---------- page head ---------- */
.page-head{display:flex; justify-content:space-between; align-items:flex-end; gap:16px; flex-wrap:wrap; margin-bottom:var(--sp)}
.eyebrow{font-size:11px; text-transform:uppercase; letter-spacing:1.4px; color:var(--cat-deep); font-weight:700; margin:0 0 4px}
.page-head h1{font-size:clamp(22px,3.4vw,30px); margin:0; letter-spacing:-.3px}
.page-head .sub{color:var(--dim); margin:6px 0 0; max-width:70ch; font-size:13.5px}
.head-actions{display:flex; gap:8px; flex-wrap:wrap}

/* ---------- grid / cards ---------- */
.grid{display:grid; gap:var(--sp)}
.cols-2{grid-template-columns:repeat(2,1fr)}
.cols-3{grid-template-columns:repeat(3,1fr)}
.cols-4{grid-template-columns:repeat(4,1fr)}
.span-2{grid-column:span 2}
.span-3{grid-column:span 3}
@media(max-width:1100px){ .cols-4{grid-template-columns:repeat(2,1fr)} .cols-3{grid-template-columns:1fr 1fr} }
@media(max-width:720px){ .cols-2,.cols-3,.cols-4{grid-template-columns:1fr} .span-2,.span-3{grid-column:auto} }
.card{background:var(--s1); border:1px solid var(--line); border-radius:var(--r); padding:16px; box-shadow:var(--shadow); min-width:0}
.card-head{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:4px}
.card-head h3{margin:0; font-size:14.5px}
.card-rule{height:1px; background:var(--line-soft); margin:10px 0 12px}
.hint{font-size:11px; color:var(--faint)}
.hintline{font-size:12px; color:var(--faint); margin:0}
.section-label{font-size:11px; text-transform:uppercase; letter-spacing:.6px; color:var(--faint); margin:0 0 6px}

/* ---------- KPI tiles ---------- */
.kpi{background:var(--s1); border:1px solid var(--line); border-radius:var(--r); padding:14px 16px; box-shadow:var(--shadow); position:relative; overflow:hidden}
.kpi-label{font-size:11px; text-transform:uppercase; letter-spacing:.5px; color:var(--faint)}
.kpi-value{font-family:var(--mono); font-size:30px; font-weight:700; margin-top:4px; line-height:1.1}
.kpi-value small{font-size:15px; color:var(--faint); font-weight:400}
.kpi-foot{font-size:11.5px; color:var(--dim); margin-top:3px}
.kpi.accent-good{box-shadow:inset 0 -3px 0 var(--good),var(--shadow)}
.kpi.accent-warn{box-shadow:inset 0 -3px 0 var(--warn),var(--shadow)}
.kpi.accent-bad{box-shadow:inset 0 -3px 0 var(--bad),var(--shadow)}
.kpi.accent-molten{box-shadow:inset 0 -3px 0 var(--molten),var(--shadow)}
.kpi.accent-cat{box-shadow:inset 0 -3px 0 var(--cat),var(--shadow)}

/* ---------- badges / pills ---------- */
.badge{display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:600; padding:2px 9px; border-radius:999px; white-space:nowrap; line-height:1.7}
.b-good{background:var(--good-bg); color:var(--good)} .b-warn{background:var(--warn-bg); color:var(--warn)}
.b-bad{background:var(--bad-bg); color:var(--bad)} .b-info{background:var(--info-bg); color:var(--info)}
.b-muted{background:var(--s3); color:var(--dim)} .b-cat{background:rgba(255,205,17,.16); color:var(--cat)}
.b-molten{background:var(--molten-bg); color:var(--molten)}
.rag{display:inline-block; width:11px; height:11px; border-radius:50%}
.rag.g{background:var(--good)} .rag.y{background:var(--warn)} .rag.r{background:var(--bad)}
.phase-pill{display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--dim)}
.phase-dot{width:8px; height:8px; border-radius:50%; background:var(--cat)}
.chip{display:inline-flex; align-items:center; gap:6px; background:var(--s2); border:1px solid var(--line); border-radius:999px; padding:3px 10px; font-size:12px; margin:0 6px 6px 0}
.chip button{background:none; border:none; color:var(--faint); cursor:pointer; font-size:12px; padding:0; line-height:1}
.chip button:hover{color:var(--bad)}
.chip-set{display:flex; flex-wrap:wrap}
.tag-src{font-size:10.5px; color:var(--faint); font-style:italic}

/* ---------- buttons ---------- */
.btn{display:inline-flex; align-items:center; gap:7px; padding:8px 14px; border-radius:var(--r-sm); border:1px solid var(--line);
  background:var(--s2); color:var(--ink); font-size:13px; font-weight:500; cursor:pointer; transition:background .15s,border-color .15s; white-space:nowrap}
.btn:hover{background:var(--s3); border-color:#b9cce0}
.btn-primary{background:var(--cat); color:#fff; border-color:var(--cat); font-weight:700}
.btn-primary:hover{background:var(--sky-deep); border-color:var(--sky-deep)}
.btn-danger{color:var(--bad); border-color:rgba(255,93,93,.3)}
.btn-danger:hover{background:var(--bad-bg)}
.btn-ghost{background:none}
.btn-sm{padding:5px 10px; font-size:12px}
.btn-row{display:flex; gap:8px; flex-wrap:wrap; align-items:center}
.row-actions{display:flex; gap:6px}

/* ---------- forms ---------- */
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px 14px}
@media(max-width:680px){ .form-grid{grid-template-columns:1fr} }
.field{display:flex; flex-direction:column; gap:5px; font-size:12px; color:var(--dim); min-width:0}
.field.full{grid-column:1/-1}
.field .req{color:var(--molten)}
input,select,textarea{width:100%; background:var(--bg); border:1px solid var(--line); border-radius:var(--r-sm);
  color:var(--ink); padding:8px 10px; font-size:13.5px; font-family:inherit}
input:focus,select:focus,textarea:focus{border-color:var(--cat); outline:none}
textarea{resize:vertical; min-height:70px; line-height:1.45}
input::placeholder,textarea::placeholder{color:var(--faint)}
label.field>span:first-child{font-weight:500}

/* ---------- tables ---------- */
.table-wrap{overflow-x:auto; border:1px solid var(--line); border-radius:var(--r); background:var(--s1)}
table{width:100%; border-collapse:collapse; font-size:13px; min-width:560px}
thead th{text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--faint);
  padding:10px 10px; border-bottom:1px solid var(--line); white-space:nowrap; position:sticky; top:0; background:var(--s2)}
tbody td{padding:7px 10px; border-bottom:1px solid var(--line-soft); vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:rgba(255,255,255,.02)}
td.num,th.num{text-align:right; font-family:var(--mono)}
.t-input{background:transparent; border:1px solid transparent; border-radius:5px; padding:5px 6px; font-size:12.5px}
.t-input:hover{border-color:var(--line-soft)}
.t-input:focus{background:var(--bg); border-color:var(--cat)}
select.t-input{min-width:90px}

/* ---------- mini list ---------- */
.mini-list{display:flex; flex-direction:column}
.mini-item{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 2px; border-bottom:1px solid var(--line-soft)}
.mini-item:last-child{border-bottom:none}
.mi-main{min-width:0}
.mi-title{font-size:13px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.mi-sub{font-size:11.5px; color:var(--faint); margin-top:1px}

/* ---------- progress / meter ---------- */
.bar{height:7px; background:var(--s3); border-radius:999px; overflow:hidden}
.bar>span{display:block; height:100%; background:var(--cat); border-radius:999px}
.meter{height:26px; background:var(--s3); border-radius:8px; overflow:hidden; position:relative; border:1px solid var(--line)}
.meter>span{display:block; height:100%; transition:width .3s}
.meter-label{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-family:var(--mono); font-size:12px; font-weight:700; color:#ffffff}

/* ---------- statline ---------- */
.statline{display:flex; flex-wrap:wrap; gap:18px}
.stat{min-width:90px}
.stat-label{font-size:10.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--faint)}
.stat-value{font-family:var(--mono); font-size:20px; font-weight:700; margin-top:2px}
.stat-value.good{color:var(--good)} .stat-value.warn{color:var(--warn)} .stat-value.bad{color:var(--bad)}

/* ---------- notes / callouts ---------- */
.note{background:var(--s2); border:1px solid var(--line-soft); border-left:3px solid var(--info); border-radius:var(--r-sm); padding:10px 12px; font-size:12.5px; color:var(--dim)}
.note.molten{border-left-color:var(--molten)}
.note.good{border-left-color:var(--good)}
.note.warn{border-left-color:var(--warn)}

/* ---------- empty states ---------- */
.empty{text-align:center; padding:46px 20px; border:1px dashed var(--line); border-radius:var(--r-lg); background:var(--s1)}
.em-mark{font-size:40px; margin-bottom:8px; filter:grayscale(.2)}
.empty h3{margin:0 0 6px} .empty p{color:var(--dim); margin:0 auto 14px; max-width:52ch; font-size:13px}

/* ---------- modal (bulletproof, always escapable) ---------- */
.modal-host{position:fixed; inset:0; z-index:100; display:flex; align-items:flex-start; justify-content:center; padding:28px 16px; overflow-y:auto}
.modal-host[hidden]{display:none}
.modal-scrim{position:fixed; inset:0; background:rgba(8,9,11,.72); backdrop-filter:blur(3px)}
.modal{position:relative; z-index:1; width:min(880px,100%); background:var(--s1); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:0 24px 60px rgba(0,0,0,.6); margin:auto 0}
.modal-head{display:flex; justify-content:space-between; align-items:center; gap:12px; padding:16px 18px; border-bottom:1px solid var(--line); position:sticky; top:0; background:var(--s1); border-radius:var(--r-lg) var(--r-lg) 0 0}
.modal-head h2{margin:0; font-size:17px}
.modal-body{padding:18px; max-height:none}
.modal-foot{display:flex; justify-content:flex-end; gap:10px; padding:14px 18px; border-top:1px solid var(--line); flex-wrap:wrap; position:sticky; bottom:0; background:var(--s1); border-radius:0 0 var(--r-lg) var(--r-lg)}

/* ---------- toast ---------- */
.toast{position:fixed; left:50%; bottom:26px; transform:translateX(-50%); z-index:140; background:var(--s3);
  color:var(--ink); padding:11px 18px; border-radius:999px; border:1px solid var(--line); box-shadow:var(--shadow); font-size:13px; max-width:90vw}
.toast[hidden]{display:none}
.toast.good{border-color:var(--good); color:var(--good)}
.toast.bad{border-color:var(--bad); color:var(--bad)}

/* ---------- search overlay ---------- */
.search-host{position:fixed; inset:0; z-index:110; display:flex; align-items:flex-start; justify-content:center; padding:80px 16px}
.search-host[hidden]{display:none}
.search-box{position:relative; z-index:1; width:min(680px,100%); background:var(--s1); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:0 24px 60px rgba(0,0,0,.6); overflow:hidden}
.search-box input{border:none; border-bottom:1px solid var(--line); border-radius:0; padding:16px 18px; font-size:16px; background:var(--s1)}
.search-results{max-height:50vh; overflow-y:auto; padding:6px}
.sr-item{display:flex; justify-content:space-between; gap:10px; padding:9px 12px; border-radius:var(--r-sm); cursor:pointer}
.sr-item:hover,.sr-item.sel{background:var(--s2)}
.sr-type{font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--faint)}

/* ---------- checklist (charter QA, tollgate) ---------- */
.check-row{display:flex; gap:10px; align-items:flex-start; padding:8px 0; border-bottom:1px solid var(--line-soft); font-size:13px}
.check-row:last-child{border-bottom:none}
.check-ic{width:20px; height:20px; border-radius:50%; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; margin-top:1px}
.check-ic.ok{background:var(--good-bg); color:var(--good)} .check-ic.no{background:var(--bad-bg); color:var(--bad)} .check-ic.warn{background:var(--warn-bg); color:var(--warn)}

/* ---------- supplier cards ---------- */
.sup-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:10px}
.sup-card{background:var(--s2); border:1px solid var(--line); border-radius:var(--r-sm); padding:11px 12px}
.sup-card h4{margin:0 0 3px; font-size:13px}
.sup-card p{margin:0; font-size:11.5px; color:var(--faint)}

/* ---------- wizard tabs ---------- */
.tabs{display:flex; gap:4px; flex-wrap:wrap; border-bottom:1px solid var(--line); margin-bottom:16px}
.tab{padding:8px 14px; background:none; border:none; color:var(--dim); cursor:pointer; font-size:13px; border-bottom:2px solid transparent; margin-bottom:-1px}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--ink); border-bottom-color:var(--cat); font-weight:600}

/* ---------- generated artifact output ---------- */
.artifact{background:var(--bg); border:1px solid var(--line); border-radius:var(--r); padding:18px 20px; font-size:13px; line-height:1.6}
.artifact h2{font-size:18px; margin:0 0 4px; color:var(--cat)}
.artifact h3{font-size:14px; margin:16px 0 6px; color:var(--ink); border-bottom:1px solid var(--line-soft); padding-bottom:4px}
.artifact h4{font-size:12.5px; margin:12px 0 4px; color:var(--dim); text-transform:uppercase; letter-spacing:.4px}
.artifact p{margin:4px 0}
.artifact ul,.artifact ol{margin:4px 0 4px 20px; padding:0}
.artifact li{margin:3px 0}
.artifact table{min-width:0; font-size:12px; margin:8px 0}
.artifact .meta-line{font-size:11.5px; color:var(--faint)}
.artifact code{font-family:var(--mono); background:var(--s2); padding:1px 5px; border-radius:4px; font-size:12px}
.kv{display:grid; grid-template-columns:max-content 1fr; gap:3px 14px; font-size:12.5px}
.kv dt{color:var(--faint)} .kv dd{margin:0}

/* line status strip */
.line-strip{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px}
.line-tile{background:var(--s2); border:1px solid var(--line); border-radius:var(--r-sm); padding:11px 12px; cursor:pointer}
.line-tile:hover{border-color:#b9cce0}
.line-tile .lt-name{font-weight:700; font-size:13.5px; display:flex; align-items:center; gap:7px}
.line-tile .lt-sub{font-size:11px; color:var(--faint); margin-top:4px}

/* print */
@media print{
  .topbar,.sidenav,.scrim,.head-actions,.modal-foot,.tb-search{display:none!important}
  body{background:#fff; color:#000}
  .view{padding:0}
  .card,.artifact,.table-wrap{box-shadow:none; border-color:#bbb}
  .artifact h2{color:#000}
}

/* ============================================================
   v2 ADDITIONS — board, calendar, charts, assets, work orders
   ============================================================ */
/* Kanban board */
.kanban{display:grid; grid-auto-flow:column; grid-auto-columns:minmax(230px,1fr); gap:12px; overflow-x:auto; padding-bottom:8px}
@media(max-width:900px){ .kanban{grid-auto-flow:row; grid-auto-columns:auto} }
.kan-col{background:var(--s1); border:1px solid var(--line); border-radius:var(--r); padding:10px; min-width:0}
.kan-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--dim)}
.kan-head .count{background:var(--s3); border-radius:999px; padding:1px 8px; font-size:11px; color:var(--faint)}
.kan-card{background:var(--s2); border:1px solid var(--line); border-radius:var(--r-sm); padding:9px 10px; margin-bottom:8px}
.kan-card .kc-title{font-size:12.5px; font-weight:500; margin-bottom:5px}
.kan-card .kc-meta{font-size:10.5px; color:var(--faint); display:flex; justify-content:space-between; gap:6px; align-items:center}
.kan-move{display:flex; gap:4px; margin-top:7px}
.kan-move button{flex:1; padding:3px; font-size:11px; border:1px solid var(--line); background:var(--bg); color:var(--dim); border-radius:5px; cursor:pointer}
.kan-move button:hover{background:var(--s3); color:var(--ink)}
.kan-move button:disabled{opacity:.3; cursor:default}

/* Calendar */
.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:5px}
.cal-dow{font-size:10.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--faint); text-align:center; padding:4px 0}
.cal-cell{min-height:92px; background:var(--s1); border:1px solid var(--line-soft); border-radius:var(--r-sm); padding:5px 6px; overflow:hidden}
.cal-cell.muted{opacity:.4}
.cal-cell.today{border-color:var(--cat); box-shadow:inset 0 0 0 1px var(--cat)}
.cal-date{font-size:11px; font-family:var(--mono); color:var(--faint); margin-bottom:3px}
.cal-ev{font-size:10px; padding:2px 5px; border-radius:4px; margin-bottom:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:pointer}
.cal-ev.t{background:var(--info-bg); color:var(--info)}
.cal-ev.w{background:var(--warn-bg); color:var(--warn)}
.cal-ev.c{background:var(--molten-bg); color:var(--molten)}
.cal-ev.over{background:var(--bad-bg); color:var(--bad)}
.cal-more{font-size:9.5px; color:var(--faint)}
.cal-nav{display:flex; align-items:center; gap:10px}

/* charts (inline SVG) */
.chart-wrap{width:100%}
.spark{display:block; width:100%; height:46px}
.donut-legend{display:flex; flex-direction:column; gap:5px; font-size:12px}
.donut-legend i{display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:6px}
.hbar-row{display:grid; grid-template-columns:120px 1fr 44px; gap:8px; align-items:center; margin-bottom:7px; font-size:12px}
.hbar-track{height:14px; background:var(--s3); border-radius:999px; overflow:hidden}
.hbar-fill{height:100%; border-radius:999px}

/* asset / WO cards */
.reg-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px}
.wo-pill{font-size:11px; font-weight:600; padding:2px 9px; border-radius:999px}
.wo-Requested{background:var(--info-bg);color:var(--info)} .wo-Assigned{background:var(--warn-bg);color:var(--warn)}
.wo-InProgress{background:rgba(255,205,17,.16);color:var(--cat)} .wo-OnHold{background:var(--molten-bg);color:var(--molten)}
.wo-Done{background:var(--good-bg);color:var(--good)}
.pm-due{font-size:11px}

/* attachments */
.att-list{display:flex; flex-wrap:wrap; gap:6px}
.att{display:inline-flex; align-items:center; gap:6px; background:var(--s2); border:1px solid var(--line); border-radius:var(--r-sm); padding:4px 9px; font-size:12px}
.att a{color:var(--info)}

/* command palette groups */
.sr-group{font-size:10px; text-transform:uppercase; letter-spacing:.6px; color:var(--faint); padding:8px 12px 4px}
.sr-cmd .sr-type{color:var(--cat)}

/* progress ring small */
.ring-num{font-family:var(--mono); font-weight:700}

/* ============================================================
   v3 — light-theme polish + stakeholder modules + new UI
   ============================================================ */
body{ -webkit-font-smoothing:antialiased; }
.topbar{ box-shadow:0 1px 0 var(--line), 0 3px 12px rgba(20,50,80,.05); }
.sidenav{ background:var(--s1); border-right:1px solid var(--line); }
.card,.kpi{ box-shadow:var(--shadow); }
.meter-label{ color:var(--ink); text-shadow:0 1px 2px rgba(255,255,255,.7); }
.t-input,input,select,textarea{ background:#fff; }
.t-input:focus,input:focus,select:focus,textarea:focus{ border-color:var(--sky); box-shadow:0 0 0 3px var(--sky-soft); }
tbody tr:nth-child(even){ background:#f7fafd; }
thead th{ background:#f1f6fb; }
.brand-text small{ color:var(--faint); }

/* clearer active nav + collapsible groups + icons */
.nav-item.active{ background:var(--sky-soft); color:var(--sky-ink); font-weight:600; }
.nav-group-head{ display:flex; align-items:center; justify-content:space-between; cursor:pointer; user-select:none; }
.nav-caret{ transition:transform .15s ease; color:var(--faint); font-size:11px; }
.nav-group.collapsed .nav-caret{ transform:rotate(-90deg); }
.nav-group.collapsed .nav-items{ display:none; }
.nav-ic{ display:inline-block; width:18px; text-align:center; margin-right:9px; opacity:.9; }

/* MOC / approvals */
.moc-status,.appr-state,.sev-pill{ display:inline-block; }
.moc-status{ font-size:11px; font-weight:600; padding:2px 9px; border-radius:999px; }
.ms-Draft{background:var(--s3);color:var(--dim)} .ms-Review{background:var(--warn-bg);color:var(--warn)}
.ms-Approved{background:var(--info-bg);color:var(--info)} .ms-Implemented{background:rgba(15,123,191,.14);color:var(--sky-ink)}
.ms-Verified{background:var(--good-bg);color:var(--good)} .ms-Closed{background:var(--good-bg);color:var(--good)} .ms-Rejected{background:var(--bad-bg);color:var(--bad)}
.appr-row{ display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--line-soft); }
.appr-row .who{ flex:1; font-size:13px; }
.appr-state{ font-size:11px; font-weight:600; padding:2px 9px; border-radius:999px; }
.as-Pending{background:var(--warn-bg);color:var(--warn)} .as-Approved{background:var(--good-bg);color:var(--good)} .as-Rejected{background:var(--bad-bg);color:var(--bad)}
.impact-chip{ display:inline-block; font-size:11px; padding:2px 9px; border-radius:7px; background:var(--sky-soft); color:var(--sky-ink); margin:2px 3px 0 0; }

/* RACI matrix */
.raci-cell{ font-weight:700; text-align:center; border-radius:6px; padding:3px 0; font-size:12px; }
.raci-R{background:#e3f1fb;color:#0b5e96}.raci-A{background:#fbe6e5;color:#b23a36}.raci-C{background:#fbeed5;color:#a05f0f}.raci-I{background:#e1f3ea;color:#0f7a4f}.raci-none{color:var(--faint)}

/* EHS severity */
.sev-pill{ font-size:11px; font-weight:600; padding:2px 9px; border-radius:999px; }
.sev-Low{background:var(--good-bg);color:var(--good)}.sev-Medium{background:var(--warn-bg);color:var(--warn)}.sev-High{background:var(--bad-bg);color:var(--bad)}.sev-Critical{background:#b23a36;color:#fff}

/* activity feed */
.feed{ position:relative; padding-left:20px; }
.feed::before{ content:""; position:absolute; left:6px; top:4px; bottom:4px; width:2px; background:var(--line); }
.feed-item{ position:relative; padding:9px 0; font-size:13px; }
.feed-item::before{ content:""; position:absolute; left:-17px; top:13px; width:9px; height:9px; border-radius:50%; background:var(--sky); box-shadow:0 0 0 3px #fff; }
.feed-time{ font-size:11px; color:var(--faint); font-family:var(--mono); }
.contact-org{ font-size:10.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--sky-ink); font-weight:700; }

/* nav group container overrides (collapsible structure) */
.nav-group{ text-transform:none; padding:0; margin-top:12px; color:inherit; font-size:inherit; letter-spacing:normal; }
.nav-group:first-child{ margin-top:2px; }
.nav-group-head{ text-transform:uppercase; letter-spacing:.6px; font-size:10.5px; font-weight:700; color:var(--faint); padding:6px 12px; border-radius:7px; }
.nav-group-head:hover{ background:var(--s3); color:var(--dim); }
.nav-items{ display:flex; flex-direction:column; gap:1px; }

/* ============================================================
   v4 — bottom quick-bar + phone-first ergonomics (answer 4)
   ============================================================ */
.bottombar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;grid-template-columns:repeat(5,1fr);gap:2px;background:var(--s1);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(20,50,80,.10)}
.bb-item{display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:none;border-radius:10px;padding:6px 2px;font-size:10.5px;font-weight:600;color:var(--dim);cursor:pointer;min-height:50px}
.bb-item .bi{font-size:19px;line-height:1.15}
.bb-item.active{color:var(--sky-ink);background:var(--sky-soft)}
@media(max-width:860px){
  .bottombar{display:grid}
  .view{padding-bottom:92px}
  .btn{min-height:42px}
  .btn-sm{min-height:36px}
  .icon-btn{min-width:42px;min-height:42px}
  input,select,textarea{font-size:16px}
  input:not([type=checkbox]),select{min-height:42px}
  .t-input{min-height:40px}
  input[type=checkbox]{width:22px;height:22px}
  .tb-search .kbd{display:none}
  .kan-move button{min-height:38px}
}
@media(max-width:700px){ .proj-picker>span{display:none} }

/* ============================================================
   v5 — topbar: brand contrast + 5%-smaller controls
   ============================================================ */
/* CRUCIBLE wordmark: light sky-blue on the dark banner (≈10.5:1 on #14171A) */
.brand-text strong{ color:#8FCDF3; }
/* subtitle legibility on the dark banner (engineering judgment) */
.brand-text small{ color:#B6C9D8; }

/* topbar controls scaled to 95% of prior metrics to free banner room */
.topbar .icon-btn{ width:36px; height:36px; }
.topbar .tb-search{ padding:6.5px 11px; min-width:171px; gap:7px; }
.topbar .tb-search .kbd{ font-size:95%; }
.topbar .btn-sm{ padding:4.5px 9.5px; font-size:11.4px; }
.topbar .proj-picker span{ font-size:8.5px; }
.topbar .proj-picker select{ padding:4.5px 7.5px; font-size:11.9px; max-width:228px; }
@media(max-width:860px){
  .topbar .btn{ min-height:40px; }
  .topbar .icon-btn{ min-width:36px; min-height:36px; }
}
