/* ═══════════════════════════════════════════════════════════════════════
   TBH OPERATING DASHBOARD — Design System v3 ("The House")
   Light-first, brand-true. Safira March = headings only.
   Red Hat Display = all data, numerals, labels, body.
   ═══════════════════════════════════════════════════════════════════════ */

@font-face{font-family:'Safira March';src:url('fonts/Safira_March.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Sego';src:url('fonts/SEGO.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Red Hat Display';src:url('fonts/RedHatDisplayLight.ttf') format('truetype');font-weight:300;font-style:normal;font-display:swap;}
@font-face{font-family:'Red Hat Display';src:url('fonts/RedHatDisplayRegular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Red Hat Display';src:url('fonts/RedHatDisplayMedium.ttf') format('truetype');font-weight:500;font-style:normal;font-display:swap;}
@font-face{font-family:'Red Hat Display';src:url('fonts/RedHatDisplaySemiBold.ttf') format('truetype');font-weight:600;font-style:normal;font-display:swap;}
@font-face{font-family:'Red Hat Display';src:url('fonts/RedHatDisplayLightItalic.ttf') format('truetype');font-weight:300;font-style:italic;font-display:swap;}
@font-face{font-family:'Red Hat Display';src:url('fonts/RedHatDisplayItalic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap;}

:root{
  /* brand constants */
  --espresso:#3B2A24; --espresso-2:#4d3830; --espresso-3:#2A1E19;
  --ivory:#F6F1EC; --ivory-2:#ECE5DC; --ivory-3:#E2D9CE;
  --olive:#6B7357; --olive-2:#8A9470; --olive-deep:#54593f;
  --mauve:#8B6E6B; --mauve-2:#A98C88;
  --gold:#A6853F;
  --fd:'Safira March','Cormorant Garamond',serif;
  --fb:'Red Hat Display','Helvetica Neue',Arial,sans-serif;
  --flogo:'Sego','Safira March',serif;
  --ease:cubic-bezier(0.22,0.61,0.36,1);
  --ease-io:cubic-bezier(0.65,0,0.35,1);
  --t:.5s; --ts:.8s;

  /* LIGHT theme (default) */
  --bg:#EFE9E2;
  --canvas:#F6F1EC;
  --surface:#FFFFFF;
  --surface-2:#FBF8F4;
  --sidebar:#34251F;
  --sidebar-ink:#F6F1EC;
  --ink:#34251F;
  --ink-2:#6E5D54;
  --ink-3:#9C8B81;
  --line:rgba(52,37,31,.10);
  --line-2:rgba(52,37,31,.06);
  --accent:#6B7357;
  --accent-soft:rgba(107,115,87,.12);
  --mauve-soft:rgba(139,110,107,.13);
  --pos:#6B7357; --neg:#B5614C;
  --chip:rgba(52,37,31,.05);
  --shadow:0 1px 2px rgba(52,37,31,.04), 0 8px 28px -12px rgba(52,37,31,.16);
  --shadow-lift:0 2px 6px rgba(52,37,31,.06), 0 18px 50px -18px rgba(52,37,31,.28);
  --grid-line:rgba(52,37,31,.07);
  --radius:4px; --radius-lg:8px;
}

.dark{
  --bg:#221917;
  --canvas:#2A1F1A;
  --surface:#352824;
  --surface-2:#3E2F29;
  --sidebar:#1C1411;
  --sidebar-ink:#F6F1EC;
  --ink:#F7F0EA;
  --ink-2:rgba(247,240,234,.74);
  --ink-3:rgba(247,240,234,.54);
  --line:rgba(247,240,234,.13);
  --line-2:rgba(247,240,234,.08);
  --accent:#9CA67E;
  --accent-soft:rgba(156,166,126,.2);
  --mauve-soft:rgba(194,166,162,.16);
  --pos:#9CA67E; --neg:#CC7B63;
  --chip:rgba(246,241,236,.06);
  --shadow:0 1px 2px rgba(0,0,0,.2), 0 12px 40px -16px rgba(0,0,0,.5);
  --shadow-lift:0 2px 8px rgba(0,0,0,.3), 0 24px 60px -20px rgba(0,0,0,.6);
  --grid-line:rgba(246,241,236,.08);
}

*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;}
body{
  font-family:var(--fb);font-size:14px;line-height:1.5;color:var(--ink);
  background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-feature-settings:"tnum","ss01";
  transition:background var(--t) var(--ease),color var(--t) var(--ease);
}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";}
/* Global button reset — prevents UA default grey/silver on any unstyled button */
button{font-family:inherit;background:transparent;border:0;color:inherit;cursor:pointer;}
::selection{background:var(--accent-soft);}

/* ── App shell ─────────────────────────────────────────────── */
.app{display:flex;height:100vh;height:100dvh;overflow:hidden;}

/* Sidebar */
.sb{width:248px;flex-shrink:0;background:var(--sidebar);color:var(--sidebar-ink);
  display:flex;flex-direction:column;padding:26px 0 20px;position:relative;
  transition:background var(--t) var(--ease);z-index:5;}
.sb-brand{padding:0 26px 4px;display:flex;align-items:baseline;gap:10px;}
.sb-mono{font-family:var(--flogo);font-size:28px;letter-spacing:.12em;line-height:1;}
.sb-brandsub{font-size:8px;letter-spacing:.26em;text-transform:uppercase;color:rgba(246,241,236,.42);padding:10px 26px 26px;}
.sb-nav{display:flex;flex-direction:column;gap:1px;padding:0 14px;flex:1;overflow-y:auto;}
.sb-sec{font-size:8px;letter-spacing:.24em;text-transform:uppercase;color:rgba(246,241,236,.32);padding:20px 12px 9px;}
.sb-i{display:flex;align-items:center;gap:13px;padding:9px 12px;color:rgba(246,241,236,.6);
  font-size:13px;letter-spacing:.01em;border-radius:3px;cursor:pointer;
  transition:color var(--t) var(--ease),background var(--t) var(--ease);position:relative;}
.sb-i svg{width:16px;height:16px;flex-shrink:0;stroke:currentColor;stroke-width:1.5;fill:none;}
.sb-i .ct{margin-left:auto;font-size:10.5px;color:rgba(246,241,236,.38);font-variant-numeric:tabular-nums;}
.sb-i:hover{color:var(--sidebar-ink);background:rgba(246,241,236,.05);}
.sb-i.on{color:var(--sidebar-ink);background:rgba(246,241,236,.07);}
.sb-i.on::before{content:'';position:absolute;left:-14px;top:8px;bottom:8px;width:2px;background:var(--olive-2);border-radius:0 2px 2px 0;}
.sb-i.on .ct{color:var(--olive-2);}
.sb-foot{margin:14px 26px 0;padding-top:16px;border-top:1px solid rgba(246,241,236,.1);
  display:flex;align-items:center;gap:11px;}
.sb-ava{width:32px;height:32px;border-radius:50%;background:var(--olive);color:var(--ivory);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:500;flex-shrink:0;}
.sb-foot .nm{font-size:12px;color:rgba(246,241,236,.85);}
.sb-foot .rl{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:rgba(246,241,236,.4);margin-top:2px;}

/* Main */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--canvas);
  transition:background var(--t) var(--ease);}
.topbar{height:72px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;
  padding:0 36px;border-bottom:1px solid var(--line);}
.tb-l{display:flex;align-items:baseline;gap:16px;}
.tb-eye{font-size:9px;letter-spacing:.24em;text-transform:uppercase;color:var(--mauve);}
.tb-title{font-family:var(--fd);font-size:30px;font-weight:400;letter-spacing:-.005em;line-height:1;}
.tb-r{display:flex;align-items:center;gap:18px;}
.tb-date{font-size:12px;color:var(--ink-2);letter-spacing:.02em;}
.tb-search{display:flex;align-items:center;gap:9px;padding:8px 14px;border:1px solid var(--line);
  border-radius:40px;color:var(--ink-3);font-size:12px;min-width:200px;background:var(--surface-2);cursor:text;}
.tb-search svg{width:14px;height:14px;stroke:currentColor;stroke-width:1.6;fill:none;}
.icon-btn{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--surface-2);
  display:flex;align-items:center;justify-content:center;color:var(--ink-2);cursor:pointer;
  transition:all var(--t) var(--ease);}
.icon-btn:hover{color:var(--ink);border-color:var(--ink-3);}
.icon-btn svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.6;fill:none;}

/* Scroll body */
.scroll{flex:1;overflow-y:auto;padding:26px 36px 40px;}
.scroll::-webkit-scrollbar{width:10px;}
.scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:10px;border:3px solid var(--canvas);}

/* ── Cards ─────────────────────────────────────────────────── */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  box-shadow:var(--shadow);transition:background var(--t) var(--ease),border-color var(--t) var(--ease),box-shadow var(--t) var(--ease),transform var(--t) var(--ease);}
.card-pad{padding:22px 24px;}
.ch{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px;}
.ch-t{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);font-weight:500;}
.ch-tag{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);
  display:flex;align-items:center;gap:6px;}
.ch-a{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);cursor:pointer;transition:color var(--t);}
.ch-a:hover{color:var(--accent);}

/* segmented control */
.seg{display:inline-flex;background:var(--chip);border-radius:30px;padding:3px;gap:2px;}
.seg button{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);
  padding:5px 12px;border-radius:30px;transition:all var(--t) var(--ease);}
.seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(52,37,31,.12);}
.dark .seg button.on{background:var(--espresso-3);}

/* ── KPI tiles ─────────────────────────────────────────────── */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px;}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:18px 20px 16px;position:relative;overflow:hidden;box-shadow:var(--shadow);
  transition:transform var(--t) var(--ease),box-shadow var(--t) var(--ease),border-color var(--t);}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);}
.kpi-l{font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);}
.kpi-v{font-size:42px;font-weight:300;letter-spacing:-.02em;line-height:1;margin-top:12px;color:var(--ink);}
.kpi-v .u{font-size:21px;color:var(--ink-3);font-weight:300;}
.kpi-d{font-size:11px;margin-top:9px;display:flex;align-items:center;gap:5px;color:var(--pos);}
.kpi-d.neg{color:var(--neg);}
.kpi-d .arr{font-size:9px;}
.kpi-spark{position:absolute;right:18px;bottom:16px;width:60px;height:28px;}
.kpi.accent .kpi-v{color:var(--accent);}

/* ── Layout columns ───────────────────────────────────────── */
.cols{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;align-items:start;}
.stack{display:flex;flex-direction:column;gap:16px;}

/* ── Hero chart ───────────────────────────────────────────── */
.hero-fig{display:flex;align-items:baseline;gap:18px;margin:14px 0 4px;}
.hero-num{font-size:58px;font-weight:300;letter-spacing:-.03em;line-height:.95;color:var(--ink);}
.hero-num .u{font-size:28px;color:var(--ink-3);}
.hero-meta{display:flex;flex-direction:column;gap:3px;padding-bottom:5px;}
.hero-meta .a{font-size:12px;color:var(--pos);font-weight:500;}
.hero-meta .b{font-size:11px;color:var(--ink-2);}
.chart-wrap{position:relative;margin-top:6px;}
.chart-legend{display:flex;gap:22px;margin-top:12px;align-items:center;}
.cl{font-size:11px;color:var(--ink-2);display:flex;align-items:center;gap:7px;}
.cl i{width:16px;height:2.5px;border-radius:2px;display:inline-block;}
.cl i.dash{background:transparent;border-top:2.5px dashed var(--accent);height:0;}

/* ── Funnel ───────────────────────────────────────────────── */
.funnel{display:flex;flex-direction:column;gap:7px;margin-top:14px;}
.frow{display:grid;grid-template-columns:1fr auto;align-items:center;gap:14px;}
.fbar-wrap{position:relative;height:42px;display:flex;align-items:center;}
.fbar{height:100%;background:linear-gradient(90deg,var(--espresso),var(--espresso-2));
  border-radius:3px;display:flex;align-items:center;padding:0 15px;color:var(--ivory);position:relative;
  transition:width var(--ts) var(--ease);min-width:64px;}
.dark .fbar{background:linear-gradient(90deg,#5a443b,#6b5147);}
.fbar.win{background:linear-gradient(90deg,var(--olive-deep),var(--olive));}
.fbar .fn{font-size:17px;font-weight:400;font-variant-numeric:tabular-nums;}
.fbar .fl{font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;margin-left:11px;opacity:.72;}
.fmeta{text-align:right;min-width:96px;}
.fmeta .fv{font-size:14px;font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums;}
.fmeta .fc{font-size:10px;color:var(--ink-3);letter-spacing:.04em;margin-top:1px;}
.fmeta .fc b{color:var(--accent);font-weight:600;}

/* ── Donut ────────────────────────────────────────────────── */
.donut-row{display:flex;align-items:center;gap:22px;margin-top:14px;}
.donut{position:relative;width:120px;height:120px;flex-shrink:0;}
.donut-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.donut-c .v{font-size:32px;font-weight:300;letter-spacing:-.02em;line-height:1;}
.donut-c .l{font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);margin-top:3px;}
.legend{display:flex;flex-direction:column;gap:11px;flex:1;}
.lg{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--ink-2);}
.lg i{width:9px;height:9px;border-radius:2px;flex-shrink:0;}
.lg b{margin-left:auto;color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums;}

/* ── Morning brief ────────────────────────────────────────── */
.brief{background:linear-gradient(160deg,var(--espresso),var(--espresso-3));color:var(--ivory);
  border:none;position:relative;overflow:hidden;}
.brief .ch-t{color:rgba(246,241,236,.55);}
.brief-q{font-family:var(--fd);font-size:21px;line-height:1.45;font-weight:400;margin-top:14px;color:var(--ivory);}
.brief-q em{font-style:italic;color:var(--mauve-2);}
.brief-foot{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap;}
.brief-chip{font-size:10px;letter-spacing:.08em;padding:6px 11px;border-radius:30px;
  background:rgba(246,241,236,.08);color:rgba(246,241,236,.8);display:flex;align-items:center;gap:6px;}
.brief-chip .d{width:5px;height:5px;border-radius:50%;background:var(--olive-2);}
.brief-spark{position:absolute;right:-10px;top:-10px;width:130px;height:130px;opacity:.5;pointer-events:none;}

/* ── Watchlist ────────────────────────────────────────────── */
.wrow{display:flex;align-items:center;gap:13px;padding:13px 0;border-bottom:1px solid var(--line-2);
  cursor:pointer;transition:padding-left var(--t) var(--ease);}
.wrow:hover{padding-left:4px;}
.wrow:last-child{border-bottom:none;padding-bottom:2px;}
.wstat{width:8px;height:8px;border-radius:50%;flex-shrink:0;position:relative;}
.wstat.hot{background:var(--neg);}
.wstat.go{background:var(--olive-2);}
.wstat.warn{background:var(--gold);}
.wname{font-size:13px;color:var(--ink);font-weight:500;}
.wsub{font-size:11px;color:var(--ink-3);margin-top:2px;}
.wval{margin-left:auto;text-align:right;}
.wval .p{font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums;}
.wval .s{font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--mauve);margin-top:2px;}

/* ── Reveal animation — end-state is the BASE; we only animate from hidden
      once painting is confirmed (frozen tabs / print show content, not blanks) */
.reveal{opacity:1;}
@media (prefers-reduced-motion:no-preference){
  .reveal.armed{opacity:0;transform:translateY(16px);}
  .reveal.armed.in{opacity:1;transform:none;transition:opacity var(--ts) var(--ease),transform var(--ts) var(--ease);}
}

/* theme toggle */
.theme-tog{display:flex;align-items:center;gap:0;background:var(--chip);border-radius:30px;padding:3px;}
.theme-tog button{width:30px;height:26px;border-radius:30px;display:flex;align-items:center;justify-content:center;color:var(--ink-3);transition:all var(--t) var(--ease);}
.theme-tog button svg{width:14px;height:14px;stroke:currentColor;stroke-width:1.6;fill:none;}
.theme-tog button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(52,37,31,.14);}
.dark .theme-tog button.on{background:var(--espresso-3);color:var(--ivory);}

/* ══════════ RESPONSIVE — tablet & mobile / on-site ══════════ */
@media (max-width:1080px){
  /* sidebar → icon rail */
  .sb{width:68px;padding:18px 0;align-items:center;}
  .sb-brand,.sb-brandsub,.sb-sec,.sb-foot{display:none!important;}
  .sb-nav{padding:0 8px;width:100%;}
  .sb-i{justify-content:center;padding:11px 0;position:relative;}
  .sb-i span:not(.ct){display:none;}
  .sb-i .ct{position:absolute;top:4px;right:8px;font-size:9px;}
  .topbar{padding-left:18px;padding-right:18px;}
  .tb-date{display:none;}
}
@media (max-width:760px){
  /* sidebar → fixed bottom bar */
  .app{flex-direction:column;}
  .sb{width:100%;height:auto;flex-direction:row;order:2;padding:0;border-top:1px solid var(--line);
    position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--sidebar);overflow-x:auto;}
  .sb-nav{display:flex;flex-direction:row;gap:2px;padding:6px 8px;}
  .sb-i{flex-direction:column;gap:3px;min-width:60px;padding:8px 6px;}
  .sb-i svg{width:20px;height:20px;}
  .sb-i .ct{position:static;}
  .main{order:1;padding-bottom:74px;}
  .topbar{flex-wrap:wrap;gap:10px;padding:14px 16px;}
  .tb-l{order:1;flex:1;} .tb-r{order:2;flex-wrap:wrap;gap:10px;}
  .qadd-btn span,.qadd-btn{font-size:11px;}
  .tb-title{font-size:26px;}
  .scroll{padding:18px 16px;}
  .kpis{grid-template-columns:repeat(2,1fr)!important;}
  .vcols,.vcols-even,.vcols .stack,.set-grid{grid-template-columns:1fr!important;}
  .kanban{grid-template-columns:1fr!important;}
  /* drawers & modals → full screen */
  .drawer{width:100%!important;max-width:100%!important;}
  .form-modal .form-doc,.report-modal .report-doc{width:100%!important;max-width:100%!important;height:100%!important;border-radius:0!important;}
  .form-modal{inset:0!important;}
  .form-actions{position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:14px 18px;}
  .f-grid-2{grid-template-columns:1fr!important;}
  /* bigger tap targets for on-site capture */
  .f-sig-btn{width:40px;height:40px;}
  .f-photos{grid-template-columns:repeat(2,1fr);}
  .btn,.act-cta,.dtab{min-height:42px;}
  .act{flex-wrap:wrap;}
  .act-tools{width:100%;justify-content:flex-end;margin-top:8px;}
}
