/* Chantier, AI CEO Operating System.
   Editorial flat system: warm off-white canvas, hairline borders, sharp radii,
   no shadows, large numerals, one accent. */

:root{
  --bg:#F2F2F0;
  --surface:#FFFFFF;
  --surface-2:#F8F8F6;
  --surface-3:#EFEFEB;
  --line:#E7E7E2;
  --line-strong:#D5D5CE;
  --ink:#191917;
  --text-2:#43433D;
  --text-3:#6E6E66;
  --faint:#9C9C93;
  --on-brand:#FFFFFF;

  --brand:#4B7BF5;
  --brand-600:#3B6CE6;
  --brand-700:#2F5ED0;
  --brand-50:#EFF4FF;
  --brand-100:#D9E4FD;

  --pos:#12B76A; --pos-soft:#EDF9F1; --pos-fg:#137A50; --pos-bd:#BEE8CE;
  --warn:#F79009; --warn-soft:#FCF6E7; --warn-fg:#A16A07; --warn-bd:#EEDCA8;
  --neg:#E5484D; --neg-soft:#FCF0EF; --neg-fg:#B3261E; --neg-bd:#F2CCCA;

  --chart-1:#4B7BF5;
  --chart-2:#E5484D;
  --chart-dim:#CFCFC8;
  --chart-grid:#EFEFEB;
  --chart-axis:#D5D5CE;
  --track:#EBEBE6;

  --r-xs:4px; --r-sm:6px; --r-md:8px; --r-lg:10px;
  --pop:0 8px 24px -12px rgba(20,20,16,.28);
  --ring:0 0 0 3px rgba(75,123,245,.12);
  --sidebar-w:230px;
}

html.dark{
  --bg:#0D0D0C;
  --surface:#171716;
  --surface-2:#1D1D1B;
  --surface-3:#242421;
  --line:#2A2A27;
  --line-strong:#3B3B36;
  --ink:#F2F2EF;
  --text-2:#C9C9C2;
  --text-3:#94948C;
  --faint:#6B6B63;
  --on-brand:#12120F;

  --brand:#84ADFF;
  --brand-600:#9DBDFF;
  --brand-700:#B4CCFF;
  --brand-50:#1C2337;
  --brand-100:#263250;

  --pos:#34D399; --pos-soft:#122A1E; --pos-fg:#5FE0AF; --pos-bd:#1F4634;
  --warn:#FBBF24; --warn-soft:#292209; --warn-fg:#F4CC59; --warn-bd:#4D4011;
  --neg:#F87171; --neg-soft:#2B1514; --neg-fg:#F89B9B; --neg-bd:#532423;

  --chart-1:#5B8CFF;
  --chart-2:#E66767;
  --chart-dim:#3E3E39;
  --chart-grid:#1E1E1C;
  --chart-axis:#3B3B36;
  --track:#262623;

  --pop:0 8px 24px -12px rgba(0,0,0,.7);
  --ring:0 0 0 3px rgba(132,173,255,.16);
  color-scheme:dark;
}

*{box-sizing:border-box}
svg.lucide{stroke-width:1.75}
i[data-lucide]{display:inline-block;font-style:normal}
html,body{margin:0;padding:0}
body{
  font-family:'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  font-size:14px;line-height:1.55;
  color:var(--ink);background:var(--bg);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-feature-settings:'cv02','cv03','cv04','cv11';
}
h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.01em}
a{color:var(--brand-600);text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
::selection{background:var(--brand-100)}

::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:6px}
::-webkit-scrollbar-track{background:transparent}

/* ---------- shell ---------- */
.app{min-height:100vh}
.side{
  position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);z-index:40;
  background:var(--surface);border-right:1px solid var(--line);
  display:flex;flex-direction:column;
}
.main{margin-left:var(--sidebar-w);padding:16px}
.content{
  max-width:1200px;margin:0 auto;padding:28px 40px 60px;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;
  min-height:calc(100vh - 32px);
}

.side-brand{display:flex;align-items:center;gap:10px;padding:16px 16px 12px}
.brand-mark{
  width:30px;height:30px;border-radius:var(--r-md);background:var(--ink);color:var(--surface);
  display:flex;align-items:center;justify-content:center;flex:none;
}
.brand-mark svg{width:17px;height:17px}
.brand-name{font-weight:700;font-size:13.5px;line-height:1.2}
.brand-sub{font-size:9.5px;color:var(--text-3)}

.burger{
  display:none;margin-left:auto;width:34px;height:34px;flex:none;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);
  align-items:center;justify-content:center;color:var(--text-2);
}
.burger svg{width:16px;height:16px}

.side-search{padding:0 12px 4px}
.side-search-btn{
  display:flex;align-items:center;gap:8px;width:100%;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);
  padding:6px 10px;font-size:12px;color:var(--faint);
}
.side-search-btn:hover{border-color:var(--line-strong);background:var(--surface-2)}
.side-search-btn svg{width:13px;height:13px;flex:none}
.side-search-btn kbd{
  margin-left:auto;font-family:inherit;font-size:9.5px;border:1px solid var(--line);
  border-radius:4px;padding:0 5px;background:var(--surface-2);color:var(--text-3);
}

.side-nav{flex:1;overflow-y:auto;padding:6px 12px 14px}
.nav-label{
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--faint);padding:16px 10px 5px;
}
.nav-item{
  display:flex;align-items:center;gap:9px;width:100%;text-align:left;
  padding:7px 10px;border:0;background:transparent;border-radius:var(--r-sm);
  color:var(--text-2);font-size:12px;margin-bottom:1px;
}
.nav-item svg{width:16px;height:16px;flex:none;color:var(--faint)}
.nav-item:hover{background:var(--surface-2);color:var(--ink)}
.nav-item:hover svg{color:var(--text-3)}
.nav-item.on{background:var(--brand-50);color:var(--brand-700);font-weight:700}
.nav-item.on svg{color:var(--brand-600)}
.nav-count{
  margin-left:auto;font-size:9.5px;font-weight:700;padding:1px 6px;border-radius:var(--r-xs);
  background:var(--neg-soft);color:var(--neg-fg);border:1px solid var(--neg-bd);
}

.side-foot{border-top:1px solid var(--line);padding:12px;display:flex;align-items:center;gap:9px}
.theme-toggle{
  width:30px;height:30px;border-radius:var(--r-sm);border:1px solid var(--line);
  background:var(--surface);display:flex;align-items:center;justify-content:center;flex:none;
}
.theme-toggle svg{width:14px;height:14px;color:var(--text-3)}
.theme-toggle:hover{border-color:var(--line-strong);background:var(--surface-2)}
.foot-avatar{
  width:28px;height:28px;border-radius:999px;background:var(--ink);color:var(--surface);
  font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;
}
.foot-name{font-size:11.5px;font-weight:700;line-height:1.25}
.foot-role{font-size:10px;color:var(--text-3)}

/* ---------- page chrome ---------- */
.page-head{margin-bottom:20px}
.eyebrow{
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  color:var(--faint);margin-bottom:4px;
}
.page-title{font-size:22px}
.page-sub{color:var(--text-3);font-size:12.5px;margin-top:4px;max-width:72ch}
.head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}

.back-link{
  display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-3);
  margin-bottom:8px;border:0;background:none;padding:0;
}
.back-link:hover{color:var(--ink)}
.back-link svg{width:13px;height:13px}

.grid{display:grid;gap:18px}
.g2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g23{grid-template-columns:minmax(0,1.85fr) minmax(0,1fr)}
.g32{grid-template-columns:minmax(0,1fr) minmax(0,1.85fr)}
.g2,.g23,.g32{column-gap:40px}
.section{margin-top:26px}
.section-title{font-size:14.5px;font-weight:700;margin-bottom:8px;display:flex;align-items:baseline;gap:9px}
.section-note{font-size:11px;color:var(--text-3);font-weight:400}

/* ---------- flat panels ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);min-width:0}
/* open sections: no box, a hairline under the title */
.card.open{background:transparent;border:0;border-radius:0}
.card.open .card-head{padding:0 0 9px;border-bottom:1px solid var(--line)}
.card.open .card-pad{padding:13px 0 0}
.card.open .card-foot{padding:10px 0 0}
.card.open > .tbl-wrap{padding:0}
.rail{position:relative;display:flex;flex-direction:column;gap:28px;min-width:0}
.rail::before{content:"";position:absolute;left:-20px;top:4px;bottom:0;width:1px;background:var(--line)}
.card-head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:15px 20px 0;border-bottom:0;min-height:0;
}
.card-head h3{font-size:14px}
.card-pad{padding:12px 20px 16px}
.card-foot{padding:0 20px 15px;font-size:11px;color:var(--faint)}
.card > .tbl-wrap{padding:4px 20px 12px}

/* KPI strip: editorial, hairline-divided figures */
.kpi-row{display:grid;gap:0;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));row-gap:18px}
.kpi{background:transparent;border:0;border-left:1px solid var(--line);padding:3px 24px 4px;border-radius:0}
.kpi:first-child{border-left:0;padding-left:0}
.kpi-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);display:block}
.kpi-value{font-size:27px;font-weight:700;line-height:1.1;margin-top:7px;letter-spacing:-.02em}
.kpi-value small{font-size:13px;font-weight:700;color:var(--faint);margin-left:1px}
.kpi-sub{font-size:11px;color:var(--text-3);margin-top:4px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.delta-up{color:var(--pos-fg);font-weight:700}
.delta-down{color:var(--neg-fg);font-weight:700}
.kpi-strip{padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* big figure with gray unit */
.big-num{font-size:50px;font-weight:700;letter-spacing:-.03em;line-height:1.02}
.big-num .dec{color:var(--faint);font-weight:700}

/* dark ink accent card: the one dark moment per page */
.dark-card{
  background:var(--ink);color:var(--bg);border-radius:var(--r-lg);padding:18px 20px;
  display:flex;flex-direction:column;position:relative;
}
.dark-card .eyebrow{color:color-mix(in srgb, var(--bg) 55%, transparent);margin-bottom:2px}
.dark-card .corner{position:absolute;top:15px;right:16px;opacity:.55}
.dark-card .corner svg{width:15px;height:15px}
.dark-num{font-size:30px;font-weight:700;letter-spacing:-.02em;margin-top:4px}
.dark-sub{font-size:11.5px;opacity:.68;margin-top:6px;line-height:1.5}
.dark-card .btn{
  align-self:flex-start;margin-top:12px;background:var(--bg);border-color:var(--bg);
  color:var(--ink);font-weight:700;
}

/* tags */
.pill-dark{
  display:inline-flex;align-items:center;gap:5px;background:var(--ink);color:var(--bg);
  border-radius:var(--r-xs);font-size:10.5px;font-weight:700;padding:3px 9px;white-space:nowrap;
}
.pill-line{
  display:inline-flex;align-items:center;gap:5px;background:var(--surface);color:var(--text-2);
  border:1px solid var(--line-strong);border-radius:var(--r-xs);font-size:10.5px;font-weight:700;
  padding:2px 8px;white-space:nowrap;
}

/* plain divided list (no tonal nesting) */
.well{
  background:transparent;border-radius:0;padding:0;
  display:flex;flex-direction:column;gap:0;
}
.well > .row-item, .well > .decision{
  background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;
  padding:12px 0;
}
.well > .row-item:last-child, .well > .decision:last-child{border-bottom:0}
.share-row{
  display:flex;align-items:center;gap:10px;background:transparent;border-radius:0;
  border-bottom:1px solid var(--line);padding:10px 0;font-size:12.5px;
}
.share-row:last-child{border-bottom:0}
.share-row b{margin-left:auto;font-variant-numeric:tabular-nums}
.share-row .pct{color:var(--text-3);font-size:11.5px;min-width:44px;text-align:right;font-variant-numeric:tabular-nums}

.site-badge{
  width:28px;height:28px;border-radius:var(--r-sm);background:var(--surface-3);color:var(--text-2);
  font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;
  border:1px solid var(--line);
}
.row-when{
  width:58px;flex:none;font-size:9.5px;color:var(--faint);font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;line-height:1.4;
}

/* greeting */
.greet{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.grow{flex:1;min-width:0}
.greet .grow{flex:1;min-width:220px}
.greet-title{font-size:25px;font-weight:700;letter-spacing:-.02em}
.greet-sub{color:var(--text-3);font-size:12.5px;margin-top:3px}
.avatar-lg{
  width:38px;height:38px;border-radius:999px;background:var(--ink);color:var(--surface);
  font-weight:700;font-size:12.5px;display:flex;align-items:center;justify-content:center;flex:none;
}

/* live feeds strip: open, hairline-framed row */
.feeds{
  display:flex;align-items:center;gap:12px;background:transparent;border:0;border-radius:0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 2px;
}
.feeds-icons{display:flex;margin-left:auto;padding-left:8px}
.feed-ic{
  width:30px;height:30px;border-radius:999px;background:var(--surface);
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);color:var(--text-2);
}
.feeds-icons .feed-ic{margin-left:-7px}
.feed-ic svg{width:13px;height:13px}

/* meters */
.meter{height:6px;border-radius:999px;background:var(--track);overflow:hidden;min-width:56px}
.meter>i{display:block;height:100%;border-radius:999px;background:var(--brand)}
.meter.pos>i{background:var(--pos)}
.meter.warn>i{background:var(--warn)}
.meter.neg>i{background:var(--neg)}
.meter-row{display:flex;align-items:center;gap:9px;max-width:260px}
.meter-row .meter{flex:1}
.meter-val{font-size:11.5px;font-weight:700;min-width:36px;text-align:right;font-variant-numeric:tabular-nums}

/* health */
.health-wrap{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.health-parts{flex:1;min-width:200px;display:flex;flex-direction:column;gap:9px}
.health-row{display:flex;align-items:center;gap:10px;font-size:12.5px}
.health-row span:first-child{width:118px;flex:none;color:var(--text-2)}

/* badges */
.badge{
  display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;
  padding:2.5px 8px;border-radius:var(--r-xs);border:1px solid var(--line-strong);
  background:var(--surface-2);color:var(--text-2);white-space:nowrap;
  text-transform:uppercase;letter-spacing:.04em;
}
.badge .dot{width:5px;height:5px;border-radius:999px;background:var(--text-3);flex:none}
.badge.good{background:var(--pos-soft);border-color:var(--pos-bd);color:var(--pos-fg)}
.badge.good .dot{background:var(--pos)}
.badge.warn{background:var(--warn-soft);border-color:var(--warn-bd);color:var(--warn-fg)}
.badge.warn .dot{background:var(--warn)}
.badge.bad{background:var(--neg-soft);border-color:var(--neg-bd);color:var(--neg-fg)}
.badge.bad .dot{background:var(--neg)}
.badge.brand{background:var(--brand-50);border-color:var(--brand-100);color:var(--brand-700)}
.badge.brand .dot{background:var(--brand)}

.chip{
  display:inline-flex;align-items:center;gap:5px;font-size:11px;
  padding:2.5px 8px;border-radius:var(--r-xs);border:1px solid var(--line);
  background:var(--surface-2);color:var(--text-2);
}
.chip b{font-weight:700;font-variant-numeric:tabular-nums}
.chip svg{width:12px;height:12px;color:var(--text-3)}

/* buttons: flat, sharp; primary is ink */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:31px;padding:4px 13px;border-radius:var(--r-sm);
  border:1px solid var(--line-strong);background:var(--surface);
  font-size:12px;color:var(--text-2);white-space:nowrap;
}
.btn:hover{background:var(--surface-2)}
.btn svg{width:13px;height:13px}
.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--bg);font-weight:700}
.btn-primary:hover{background:var(--text-2);border-color:var(--text-2)}
.btn-sm{min-height:26px;padding:2px 9px;font-size:11px;border-radius:var(--r-xs)}
.btn.approved{background:var(--pos-soft);border-color:var(--pos-bd);color:var(--pos-fg);font-weight:700;pointer-events:none}

/* tables */
.tbl-wrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
.tbl th{
  text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  color:var(--text-3);padding:9px 14px 9px 0;border-bottom:1px solid var(--line-strong);white-space:nowrap;
}
.tbl td{padding:11px 14px 11px 0;border-bottom:1px solid var(--line);vertical-align:middle;line-height:1.45}
.tbl th:last-child,.tbl td:last-child{padding-right:0}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover{background:var(--surface-2)}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl .main-cell{font-weight:700}
.tbl .sub-cell{font-size:11px;color:var(--text-3);font-weight:400}
tr.rowlink{cursor:pointer}

/* callouts */
.callout{
  border:1px solid var(--line);border-radius:var(--r-md);padding:16px 20px;
  background:var(--surface-2);font-size:12.5px;line-height:1.6;
}
.stack .callout + .callout{margin-top:10px}
.callout.ai{background:var(--brand-50);border-color:var(--brand-100)}
.callout.warn{background:var(--warn-soft);border-color:var(--warn-bd)}
.callout.neg{background:var(--neg-soft);border-color:var(--neg-bd)}
.callout.pos{background:var(--pos-soft);border-color:var(--pos-bd)}
.callout-tag{
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  color:var(--brand-600);display:flex;align-items:center;gap:6px;margin-bottom:7px;
}
.callout.warn .callout-tag{color:var(--warn-fg)}
.callout.neg .callout-tag{color:var(--neg-fg)}
.callout.pos .callout-tag{color:var(--pos-fg)}
.callout-tag svg{width:11px;height:11px}

/* sub tabs: flat underline */
.subtabs{display:flex;gap:22px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:16px 0 22px;padding:0;background:none;box-shadow:none;border-radius:0}
.subtab{
  border:0;background:none;padding:7px 2px 10px;font-size:12.5px;color:var(--text-3);
  border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:0;
}
.subtab:hover{color:var(--ink);background:none}
.subtab.on{color:var(--ink);border-bottom-color:var(--ink);font-weight:700;background:none}

/* lists */
.stack{display:flex;flex-direction:column;gap:0}
.row-item{
  display:flex;align-items:center;gap:13px;padding:12px 0;
  border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;
}
.stack .row-item:last-child{border-bottom:0}
.row-item .grow{flex:1;min-width:0}
.row-title{font-weight:700;font-size:12.5px}
.row-sub{font-size:11.5px;color:var(--text-3);margin-top:1px}

/* decision agenda */
.decision{
  border:0;border-bottom:1px solid var(--line);border-radius:0;padding:14px 0;
  background:transparent;display:flex;gap:13px;align-items:flex-start;
}
.stack .decision:last-child{border-bottom:0}
.decision-n{
  width:23px;height:23px;border-radius:999px;flex:none;background:transparent;
  color:var(--text-3);font-size:11px;font-weight:700;border:1px solid var(--line-strong);
  display:flex;align-items:center;justify-content:center;
}
.decision .grow{flex:1;min-width:0}
.decision-impact{font-size:11.5px;margin-top:1px;color:var(--text-3)}
.decision-impact b{color:var(--pos-fg)}
.decision .row-sub{margin-top:3px}
.decision-actions{display:flex;gap:6px;flex:none;margin-top:1px}

/* chat inbox */
.inbox{
  display:grid;grid-template-columns:280px minmax(0,1fr);grid-template-rows:minmax(0,1fr);
  border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  background:var(--surface);height:calc(100vh - 206px);min-height:560px;
}
.inbox.solo{grid-template-columns:minmax(0,1fr)}

.threads{border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0;background:var(--surface)}
.threads-head{
  padding:13px 16px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:8px;
}
.threads-head h3{font-size:13px}
.threads-list{flex:1;overflow-y:auto}
.thread{
  display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;
  padding:12px 14px;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer;
}
.thread:hover{background:var(--surface-2)}
.thread.on{background:var(--brand-50)}
.thread-av{
  width:30px;height:30px;border-radius:999px;background:var(--brand-50);color:var(--brand-700);
  display:flex;align-items:center;justify-content:center;flex:none;margin-top:1px;
  border:1px solid var(--brand-100);
}
.thread.on .thread-av{background:var(--surface)}
.thread-av svg{width:14px;height:14px}
.thread-body{flex:1;min-width:0;display:block}
.thread-title{display:block;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thread-prev{display:block;font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.thread-meta{flex:none;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.thread-time{font-size:9.5px;color:var(--faint);font-variant-numeric:tabular-nums}
.thread-unread{
  min-width:16px;height:16px;border-radius:999px;background:var(--brand);color:var(--on-brand);
  font-size:9.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;
}

.convo{display:flex;flex-direction:column;min-width:0;min-height:0}
.convo-head{
  display:flex;align-items:center;gap:10px;padding:11px 16px;
  border-bottom:1px solid var(--line);background:var(--surface);
}
.convo-title{font-size:12.5px;font-weight:700;line-height:1.3}
.convo-sub{font-size:10.5px;color:var(--text-3)}
.convo-head .badge{margin-left:auto}
.canvas{
  background-color:#F6F7FA;
  background-image:radial-gradient(rgba(75,123,245,.07) 1px, transparent 1px);
  background-size:16px 16px;
}
html.dark .canvas{
  background-color:#131518;
  background-image:radial-gradient(rgba(132,173,255,.06) 1px, transparent 1px);
}
.convo-scroll{flex:1;overflow-y:auto;padding:20px 22px;display:flex;flex-direction:column;gap:12px}
.day-chip{
  align-self:center;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--text-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xs);
  padding:2px 10px;margin-bottom:2px;
}
.typing{
  align-self:flex-start;display:inline-flex;gap:5px;padding:13px 15px;
  background:var(--surface);border:1px solid var(--line);border-radius:10px 10px 10px 3px;
}
.typing i{width:6px;height:6px;border-radius:999px;background:var(--faint);animation:cp-blink 1.1s infinite}
.typing i:nth-child(2){animation-delay:.18s}
.typing i:nth-child(3){animation-delay:.36s}
@keyframes cp-blink{0%,80%,100%{opacity:.25}40%{opacity:1}}

.msg{max-width:72%;font-size:12.5px;line-height:1.55;animation:cp-pop .18s ease-out}
@keyframes cp-pop{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.msg.user{align-self:flex-end;background:var(--brand);color:var(--on-brand);padding:8px 14px;border-radius:10px 10px 3px 10px}
.msg.ai{
  align-self:flex-start;background:var(--surface);border:1px solid var(--line);padding:11px 15px;
  border-radius:10px 10px 10px 3px;
}
.msg.ai .msg-tag{
  font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--brand-600);margin-bottom:4px;display:flex;gap:5px;align-items:center;
}
.msg.ai .msg-tag svg{width:11px;height:11px}
.msg.ai ul{margin:6px 0 2px;padding-left:17px}
.msg.ai li{margin:2px 0}
.msg.ai p{margin:5px 0}
.msg.ai p:first-of-type{margin-top:0}
.msg.ai p:last-child{margin-bottom:0}
.chat-suggest{display:flex;gap:6px;flex-wrap:wrap;padding:10px 16px 0;border-top:1px solid var(--line);background:var(--surface)}
.chat-suggest button{
  border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);
  font-size:11px;padding:4px 11px;color:var(--text-2);
}
.chat-suggest button:hover{border-color:var(--brand-100);color:var(--brand-700);background:var(--brand-50)}
.chat-input{display:flex;gap:8px;padding:10px 14px 12px;background:var(--surface)}
.chat-input input{
  flex:1;border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 13px;
  font:inherit;font-size:12.5px;background:var(--surface);color:var(--ink);outline:none;
}
.chat-input input::placeholder{color:var(--faint)}
.chat-input input:focus{border-color:var(--brand);box-shadow:var(--ring)}
.chat-send{
  width:34px;height:34px;flex:none;border-radius:var(--r-sm);border:0;
  background:var(--ink);color:var(--bg);
  display:flex;align-items:center;justify-content:center;
}
.chat-send:hover{background:var(--text-2)}
.chat-send svg{width:15px;height:15px}

/* timeline */
.timeline{position:relative;padding-left:20px}
.timeline::before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:1px;background:var(--line)}
.tl-item{position:relative;padding:0 0 14px}
.tl-item:last-child{padding-bottom:0}
.tl-dot{
  position:absolute;left:-17.5px;top:4px;width:8px;height:8px;border-radius:999px;
  background:var(--faint);border:2px solid var(--surface);
}
.tl-dot.good{background:var(--pos)} .tl-dot.warn{background:var(--warn)}
.tl-dot.bad{background:var(--neg)} .tl-dot.brand{background:var(--brand)}
.tl-when{font-size:10px;color:var(--faint);font-variant-numeric:tabular-nums}
.tl-title{font-weight:700;font-size:12px}
.tl-sub{font-size:11px;color:var(--text-3)}

/* maps */
.map-box{
  height:380px;border:1px solid var(--line);border-radius:var(--r-lg);
  overflow:hidden;position:relative;z-index:0;background:var(--surface-2);
}
.map-box.sm{height:230px}
.map-box .leaflet-container{height:100%;width:100%;background:var(--surface-2);font:inherit}
.map-box .leaflet-control-attribution{
  background:var(--surface);color:var(--text-3);font-size:9px;
  border-radius:var(--r-xs) 0 0 0;
}
.map-box .leaflet-control-attribution a{color:var(--text-3)}
.map-box .leaflet-bar{border:1px solid var(--line);box-shadow:none;border-radius:var(--r-sm);overflow:hidden}
.map-box .leaflet-bar a{
  background:var(--surface);color:var(--text-2);border-bottom:1px solid var(--line);
  width:26px;height:26px;line-height:26px;font-size:14px;
}
.map-box .leaflet-bar a:last-child{border-bottom:0}
.map-box .leaflet-bar a:hover{background:var(--surface-2);color:var(--ink)}
.map-tip{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);
  box-shadow:var(--pop, 0 8px 24px rgba(0,0,0,.10));color:var(--ink);
  font:inherit;font-size:12px;padding:8px 11px;
}
.map-tip .t{font-weight:700;font-size:12.5px}
.map-tip .s{color:var(--text-3);font-size:11px;margin-top:1px}
.leaflet-tooltip.map-tip::before{display:none}
.map-key{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:11px;color:var(--text-3);padding:10px 2px 0}
.map-key .k{display:flex;align-items:center;gap:6px}
.map-key .swatch{width:9px;height:9px;border-radius:999px;flex:none}
.map-key .muted{color:var(--faint)}
.card .map-box.flush{border:0;border-radius:0 0 var(--r-lg) var(--r-lg)}

/* quiet state text: replaces green badges for healthy states */
.quiet{font-size:12px;color:var(--text-3);white-space:nowrap}
.data-src{font-size:11px;color:var(--faint);margin-top:9px;display:flex;align-items:center;gap:5px}
.data-src svg{width:11px;height:11px;flex:none}

/* sticky project header */
.site-sticky{
  position:sticky;top:0;z-index:600;background:var(--surface);
  margin:0 -40px 20px;padding:12px 40px 0;border-bottom:1px solid var(--line);
}
.site-sticky .subtabs{margin:12px 0 0;border-bottom:0}

/* persistent AI drawer */
.ai-fab{
  position:fixed;right:22px;bottom:22px;z-index:900;width:50px;height:50px;
  border-radius:999px;background:var(--ink);color:var(--bg);border:0;
  display:flex;align-items:center;justify-content:center;box-shadow:var(--pop);
}
.ai-fab svg{width:20px;height:20px}
.ai-fab:hover{background:var(--text-2)}
.ai-drawer{
  position:fixed;top:0;right:0;bottom:0;width:410px;max-width:100vw;z-index:950;
  background:var(--surface);border-left:1px solid var(--line);
  transform:translateX(103%);transition:transform .22s ease;
  display:flex;flex-direction:column;
}
.ai-drawer.open{transform:none}
.drawer-head{
  display:flex;align-items:center;gap:10px;padding:12px 16px;
  border-bottom:1px solid var(--line);flex:none;
}
.drawer-head h3{font-size:13.5px;flex:1}
.drawer-body{flex:1;min-height:0;display:flex}
.drawer-body .inbox{flex:1;height:auto;min-height:0;border:0;border-radius:0}
.drawer-close{
  border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);
  width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:var(--text-3);
}
.drawer-close:hover{background:var(--surface-2);color:var(--ink)}
.drawer-close svg{width:13px;height:13px}

/* command palette */
.cmdk{position:fixed;inset:0;z-index:1000;background:rgba(20,20,16,.35);display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}
.cmdk[hidden]{display:none}
.cmdk-box{width:580px;max-width:92vw;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--pop);overflow:hidden}
.cmdk-input{width:100%;box-sizing:border-box;border:0;outline:0;font:inherit;font-size:15px;padding:15px 18px;border-bottom:1px solid var(--line);background:var(--surface);color:var(--ink)}
.cmdk-input::placeholder{color:var(--faint)}
.cmdk-list{max-height:340px;overflow:auto;padding:6px}
.cmdk-item{display:flex;gap:10px;align-items:center;padding:9px 12px;border-radius:var(--r-sm);cursor:pointer;font-size:13.5px}
.cmdk-item.sel,.cmdk-item:hover{background:var(--surface-2)}
.cmdk-item svg{width:14px;height:14px;color:var(--text-3);flex:none}
.cmdk-item .k-sub{color:var(--faint);font-size:11.5px;margin-left:auto;white-space:nowrap}
.cmdk-empty{padding:18px;color:var(--faint);font-size:13px;text-align:center}

/* decision queue rows */
.dq-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:7px;font-size:11.5px;color:var(--text-3)}
.dq-meta b{color:var(--text-2)}
.dq-evidence{margin:8px 0 0;padding-left:16px;font-size:12px;color:var(--text-3)}
.dq-evidence li{margin:1px 0}
.dq-confirm{
  margin-top:9px;font-size:12.5px;font-weight:700;color:var(--pos-fg);
  display:flex;align-items:center;gap:6px;
}
.dq-confirm svg{width:13px;height:13px}

/* morning site walk strip */
.walk{display:flex;gap:10px;overflow-x:auto;padding:2px 0 6px}
.walk-tile{
  flex:none;width:215px;border:1px solid var(--line);border-radius:var(--r-md);
  padding:9px 12px;cursor:pointer;background:var(--surface);
}
.walk-tile:hover{background:var(--surface-2)}
.walk-head{display:flex;align-items:center;gap:7px;font-weight:700;font-size:12px}
.walk-head .dot{width:7px;height:7px;border-radius:999px;flex:none}
.walk-time{margin-left:auto;font-weight:400;font-size:10px;color:var(--faint);font-variant-numeric:tabular-nums}
.walk-note{font-size:11px;color:var(--text-3);margin-top:4px;line-height:1.45;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* evidence confidence chips */
.ev{
  flex:none;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:var(--r-xs);padding:2px 7px;
  color:var(--text-3);background:var(--surface-2);white-space:nowrap;
}

/* supervisor requests */
.req-row{display:flex;gap:11px;border-bottom:1px solid var(--line);padding:10px 0;align-items:flex-start}
.req-row:last-child{border-bottom:0}
.req-q{font-size:13px;font-weight:700}
.req-meta{font-size:11px;color:var(--faint);margin-top:2px}
.req-a{font-size:12.5px;color:var(--text-2);margin-top:5px;padding-left:10px;border-left:2px solid var(--line)}

/* 32-week gantt */
.gantt-scale{display:grid;grid-template-columns:225px 40px 1fr;gap:10px;padding:0 0 6px}
.gantt-scale-in{position:relative;height:13px;font-size:9.5px;color:var(--faint)}
.gantt-scale-in span{position:absolute;transform:translateX(-50%)}
.gantt-scale-in span:last-child{transform:translateX(-88%)}
.gantt-row{display:grid;grid-template-columns:225px 40px 1fr;gap:10px;align-items:center;padding:4.5px 0}
.gantt-name{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-2)}
.gantt-name b{color:var(--faint);font-size:9.5px;margin-right:5px}
.gantt-wt{font-size:10px;color:var(--faint);text-align:right;font-variant-numeric:tabular-nums}
.gantt-track{position:relative;height:15px;background:var(--surface-2);border-radius:3px}
.gantt-bar{position:absolute;top:2.5px;bottom:2.5px;background:var(--brand-100);border-radius:2px;overflow:hidden}
.gantt-bar i{display:block;height:100%;background:var(--brand)}
.gantt-now{position:absolute;top:-1px;bottom:-1px;width:1.5px;background:var(--ink);opacity:.55}
.gantt-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--text-3);padding-top:9px}
.gantt-legend .k{display:flex;align-items:center;gap:6px}
.gantt-legend .sw{width:14px;height:8px;border-radius:2px;flex:none}

/* bill of quantities */
.boq-sec{border-bottom:1px solid var(--line)}
.boq-sec:last-child{border-bottom:0}
.boq-sec-head{display:flex;align-items:center;gap:10px;padding:7px 0;cursor:pointer}
.boq-sec-head:hover{background:var(--surface-2)}
.boq-id{
  width:26px;height:19px;flex:none;border-radius:var(--r-xs);background:var(--surface-3);
  color:var(--text-2);font-size:10px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
}
.boq-name{font-weight:700;font-size:12.5px;flex:1;min-width:0}
.boq-chev{width:14px;height:14px;flex:none;color:var(--faint);transition:transform .15s}
.boq-sec:not(.open) .boq-chev{transform:rotate(-90deg)}
.boq-sec:not(.open) .boq-body{display:none}
.boq-body{padding:0 0 14px}
.boq-body .tbl td{padding:6px 14px 6px 0;font-size:12px}
.boq-body .tbl th{padding:6px 14px 6px 0}

/* form fields */
.form-row{display:flex;flex-direction:column;gap:6px}
.form-label{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3)}
.form-row select,.form-row input{
  border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 11px;width:100%;
  font:inherit;font-size:12.5px;background:var(--surface);color:var(--ink);outline:none;
}
.form-row select:focus,.form-row input:focus{border-color:var(--brand);box-shadow:var(--ring)}

/* search input */
.search{
  display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:var(--r-sm);
  padding:6px 12px;background:var(--surface);min-width:190px;
}
.search svg{width:13px;height:13px;color:var(--faint);flex:none}
.search input{border:0;outline:0;background:none;font:inherit;font-size:12px;color:var(--ink);width:100%}
.search input::placeholder{color:var(--faint)}
.search:focus-within{border-color:var(--brand);box-shadow:var(--ring)}

/* programme */
.week-row{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid var(--line)}
.week-row:last-child{border-bottom:0}
.week-tag{font-size:10px;font-weight:700;color:var(--faint);min-width:58px;text-transform:uppercase;letter-spacing:.04em}
.week-task{font-weight:700;font-size:12.5px;min-width:120px}

/* report doc */
.doc{font-size:12.5px;line-height:1.55;max-width:640px}
.doc h4{
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--text-3);margin:18px 0 5px;
}
.doc h4:first-child{margin-top:0}
.doc table{width:100%;border-collapse:collapse;font-size:12.5px}
.doc td{padding:6px 0;border-bottom:1px solid var(--line)}
.doc td:last-child{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.doc tr:last-child td{border-bottom:0}

/* verification chain */
.chain{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.chain .chip{background:var(--surface)}
.chain svg{width:12px;height:12px;color:var(--faint);flex:none}

.blt{width:12px;height:12px;flex:none;color:var(--brand-600);margin-top:3px}
.blt svg{width:100%;height:100%}

/* charts */
.viz{width:100%;display:block}
.viz text{font-family:'Lato',sans-serif}
.viz-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--text-2);padding:2px 2px 8px}
.viz-legend .key{display:inline-flex;align-items:center;gap:6px}
.viz-legend .swatch{width:13px;height:3px;border-radius:2px}
.viz-tip{
  position:fixed;z-index:100;pointer-events:none;background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--r-sm);box-shadow:var(--pop);
  padding:7px 10px;font-size:11px;min-width:112px;
}
.viz-tip .tip-t{font-weight:700;margin-bottom:2px}
.viz-tip .tip-row{display:flex;justify-content:space-between;gap:12px;color:var(--text-2)}
.viz-tip .tip-row b{font-variant-numeric:tabular-nums}

.chart-wrap{position:relative}
.float-tip{
  position:absolute;transform:translate(-50%,-115%);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--pop);
  padding:7px 14px;text-align:center;font-size:10.5px;color:var(--text-3);
  pointer-events:none;white-space:nowrap;
}
.float-tip b{display:block;font-size:13px;color:var(--ink)}

.updot{
  width:26px;height:26px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;
  flex:none;border:0;background:var(--surface-3);color:var(--text-3);
}
.updot svg{width:13px;height:13px}
.updot.up{background:var(--pos-soft);color:var(--pos-fg)}
.updot.down{background:var(--warn-soft);color:var(--warn-fg)}
.updot.go{cursor:pointer}
.updot.go:hover{background:var(--brand-50);color:var(--brand-700)}

/* sites register */
.register{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:2px 20px}
.reg-row{
  display:grid;grid-template-columns:225px 150px 165px minmax(0,1fr) 150px;
  gap:20px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);cursor:pointer;
}
.reg-row:last-child{border-bottom:0}
.reg-row:hover{background:var(--surface-2)}
.site-name{font-weight:700;font-size:13px}
.site-loc{font-size:11px;color:var(--text-3)}
.site-stats{display:flex;gap:5px;flex-wrap:wrap}
.reg-end{font-size:11px;color:var(--text-3);text-align:right}

/* workers */
.trend{font-size:10.5px;font-weight:700}
.trend.up{color:var(--pos-fg)} .trend.down{color:var(--neg-fg)} .trend.flat{color:var(--text-3)}

.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}
.muted{color:var(--text-3)}.small{font-size:11.5px}
.tag-count{font-size:11px;font-weight:400;color:var(--faint)}

@media (max-width:1120px){
  .g3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .g23,.g32,.g2{grid-template-columns:minmax(0,1fr)}
  .rail::before{display:none}
  .reg-row{grid-template-columns:1fr;gap:8px}
  .reg-end{text-align:left}
}
@media (max-width:860px){
  .side{
    position:sticky;top:0;inset:auto;width:auto;border-right:0;
    border-bottom:1px solid var(--line);
  }
  .side-brand{padding:10px 14px}
  .burger{display:flex}
  .side-search,.side-nav,.side-foot{display:none}
  .side.open .side-search{display:block}
  .side.open .side-nav{display:block;max-height:62vh;overflow-y:auto}
  .side.open .side-foot{display:flex}
  .main{margin-left:0;padding:8px}
  .content{padding:16px 14px 44px;border-radius:10px;min-height:0}
  .page-title{font-size:19px}
  .greet-title{font-size:21px}
  .big-num{font-size:38px}

  .g3{grid-template-columns:minmax(0,1fr)}
  .kpi-strip{padding:14px 0}
  .kpi-row{grid-template-columns:repeat(2,1fr);gap:14px 18px}
  .kpi{border-left:0;padding:0}

  .inbox{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);height:calc(100vh - 200px);min-height:460px}
  .threads{border-right:0;border-bottom:1px solid var(--line)}
  .threads-head{display:none}
  .threads-list{display:flex;overflow-x:auto;flex:none}
  .thread{width:215px;min-width:215px;flex:none;border-bottom:0;border-right:1px solid var(--line)}
  .msg{max-width:88%}
  .convo-scroll{padding:14px}
  .health-wrap{gap:16px}
  .decision{flex-wrap:wrap}
  .decision-actions{width:100%;justify-content:flex-end}

  /* collapsible sections: compact executive view */
  .card.m-closed > :not(.card-head){display:none}
  .card.m-closed .card-head{border-bottom:0}
  .m-toggle .card-head{cursor:pointer;position:relative;padding-right:40px}
  .m-toggle .card-head::after{
    content:"";position:absolute;right:14px;top:50%;width:8px;height:8px;
    border-right:1.5px solid var(--text-3);border-bottom:1.5px solid var(--text-3);
    transform:translateY(-70%) rotate(45deg);transition:transform .15s;
  }
  .m-toggle.m-closed .card-head::after{transform:translateY(-30%) rotate(-135deg)}

  .site-sticky{margin:0 -14px 16px;padding:10px 14px 0}
  .ai-drawer{width:100vw}
  .ai-fab{right:14px;bottom:14px}
}
