/*
 * ═══════════════════════════════════════════════════════════
 * DW DESIGN SYSTEM — dw-design.css v1.0.0
 * Dillon's Welding Hub-and-Spoke Platform
 * Shared CSS for all spoke applications
 * ═══════════════════════════════════════════════════════════
 *
 * USAGE: Each spoke includes:
 *   <link rel="stylesheet" href="https://dw-design.pages.dev/dw-design.css">
 *   <style>
 *     :root { --acc:#22C55E; --acc-d:rgba(34,197,94,.12); --acc-hover:#16A34A; --focus:#22C55E; }
 *     body.light { --acc:#16A34A; --acc-d:rgba(22,163,74,.15); --acc-hover:#15803D; --focus:#16A34A; }
 *     [spoke-specific styles only]
 *   </style>
 *
 * ACCENT COLORS:
 *   Operations:  --acc:#F59E0B  --acc-hover:#D97706  (amber)
 *   Estimating:  --acc:#22C55E  --acc-hover:#16A34A  (green)
 *   Analytics:   --acc:#3B82F6  --acc-hover:#2563EB  (blue)
 *   Sales:       --acc:#A855F7  --acc-hover:#9333EA  (purple)
 *   Production:  --acc:#06B6D4  --acc-hover:#0891B2  (teal)
 *
 * TYPOGRAPHY SOURCE OF TRUTH: Estimating v1.0.6
 *   - 12px labels, 13px headers, 11px minimum floor
 *   - Dark:  t2:#9FA3B8  t3:#6B7089
 *   - Light: t2:#3A3F58  t3:#5C6180
 */

/* ── Fonts ── */
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap');

/* ══════════════════════════════════════════════
   ROOT VARIABLES
   Note: --acc, --acc-d, --acc-hover, --focus
   are NOT set here — each spoke provides them
   ══════════════════════════════════════════════ */
:root {
  /* Backgrounds (dark) */
  --bg0:#0B0D11;--bg1:#111318;--bg2:#16181F;--bg3:#1C1F28;--bg4:#22252F;
  /* Borders */
  --brd:#1E2130;--brd2:#2A2D3A;
  /* Typography — Estimating v1.0.6 contrast values */
  --t1:#E8E9ED;--t2:#9FA3B8;--t3:#6B7089;
  /* Semantic palette */
  --grn:#22C55E;--grn-d:rgba(34,197,94,.1);
  --red:#EF4444;--red-d:rgba(239,68,68,.1);
  --blu:#3B82F6;--blu-d:rgba(59,130,246,.1);
  --org:#F97316;--org-d:rgba(249,115,22,.1);
  --pur:#A855F7;--pur-d:rgba(168,85,247,.1);
  --amb:#F59E0B;--amb-d:rgba(245,158,11,.12);
  /* Tokens */
  --r:6px;
  --mono:'JetBrains Mono',monospace;
  --sans:'Inter',-apple-system,system-ui,sans-serif;
}

/* ── Reset ── */
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;overflow:hidden}
body{font-family:var(--sans);background:var(--bg0);color:var(--t1);display:flex;font-size:14px;-webkit-font-smoothing:antialiased}

/* ══════════════════════════════════════════════
   SIDEBAR
   ══════════════════════════════════════════════ */
.sb{width:220px;min-width:220px;background:var(--bg1);display:flex;flex-direction:column}
.sb-brand{padding:18px 16px 14px}
.sb-brand h1{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--acc);letter-spacing:1.5px;text-transform:uppercase}
.sb-brand span{font-size:10px;color:var(--t3);display:block;margin-top:2px;letter-spacing:.3px}
.sb-nav{flex:1;padding:8px 6px;overflow-y:auto}
.sb-sec{font-size:9px;text-transform:uppercase;letter-spacing:2px;color:var(--t3);padding:16px 10px 4px;font-weight:600}
.nb{display:flex;align-items:center;gap:8px;padding:8px 10px;border:none;border-radius:4px;background:0;color:var(--t2);font-family:var(--sans);font-size:13px;font-weight:500;cursor:pointer;width:100%;text-align:left;transition:all .15s ease}
.nb:hover{background:rgba(255,255,255,.04);color:var(--t1)}
.nb.on{background:var(--acc-d);color:var(--acc);font-weight:600}
.nb .ic{font-size:14px;width:18px;text-align:center;opacity:.7}
.nb.on .ic{opacity:1}
.sb-ft{padding:10px 16px;font-size:9px;color:var(--t3);font-family:var(--mono);letter-spacing:.5px}

/* ══════════════════════════════════════════════
   MAIN LAYOUT
   ══════════════════════════════════════════════ */
.mn{flex:1;display:flex;flex-direction:column;overflow:hidden}

/* ── Stats bar (persistent KPIs) ── */
.stats-bar{height:40px;min-height:40px;background:var(--bg1);display:flex;align-items:center;padding:0 18px;gap:4px;font-size:12px;border-bottom:1px solid var(--brd)}
.stat{display:flex;align-items:center;gap:5px;padding:0 10px;color:var(--t2)}
.stat-label{font-size:12px;color:var(--t3);font-weight:500}
.stat-val{font-family:var(--mono);font-weight:600;font-size:12px}
.stat-val.v-grn{color:var(--grn)}.stat-val.v-amb{color:var(--acc)}.stat-val.v-red{color:var(--red)}.stat-val.v-blu{color:var(--blu)}.stat-val.v-pur{color:var(--pur)}.stat-val.v-acc{color:var(--acc)}
.stat-sep{width:1px;height:18px;background:var(--brd);margin:0 4px}

/* ── Page header ── */
.tb{height:48px;min-height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 24px}
.tb h2{font-size:15px;font-weight:600;letter-spacing:.3px}
.tb-r{font-size:12px;color:var(--t3);font-family:var(--mono)}
.ct{flex:1;overflow-y:auto;padding:20px 24px}

/* ══════════════════════════════════════════════
   GRID SYSTEM
   ══════════════════════════════════════════════ */
.g2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.g5{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.g6{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}

/* ══════════════════════════════════════════════
   CARDS
   ══════════════════════════════════════════════ */
.cd{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--r);padding:16px}
.cd-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.cd-h h3{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--t2)}
.mb{margin-bottom:14px}

/* ══════════════════════════════════════════════
   KPI
   ══════════════════════════════════════════════ */
.kpi{padding:12px 16px}
.kpi-l{font-size:12px;color:var(--t3);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px;font-weight:600}
.kpi-v{font-family:var(--mono);font-size:26px;font-weight:700;line-height:1}
.kpi-s{font-size:11px;color:var(--t3);margin-top:3px;font-family:var(--mono)}
.k-grn .kpi-v{color:var(--grn)}.k-amb .kpi-v{color:var(--acc)}.k-red .kpi-v{color:var(--red)}.k-blu .kpi-v{color:var(--blu)}.k-pur .kpi-v{color:var(--pur)}.k-acc .kpi-v{color:var(--acc)}

/* ══════════════════════════════════════════════
   FORMS
   ══════════════════════════════════════════════ */
.fg{margin-bottom:12px}
.fl{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--t3);margin-bottom:4px}
.fi,.fs{width:100%;padding:8px 11px;background:var(--bg3);border:1px solid var(--brd);border-radius:4px;color:var(--t1);font-family:var(--sans);font-size:13px;transition:border-color .15s}
.fi:focus,.fs:focus{outline:0;border-color:var(--focus)}
.fi::placeholder{color:var(--t3)}
.fi-sm{padding:5px 8px;font-size:12px}
.fi-num{font-family:var(--mono);text-align:right;width:100px}
select.fs{cursor:pointer}
select.fs option{background:var(--bg2);color:var(--t1)}
textarea.fi{resize:vertical;min-height:60px;font-family:var(--sans)}

/* ══════════════════════════════════════════════
   BUTTONS
   ══════════════════════════════════════════════ */
.bt{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border:1px solid var(--brd);border-radius:4px;background:var(--bg3);color:var(--t1);font-family:var(--sans);font-size:12px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}
.bt:hover{background:var(--bg4);border-color:var(--brd2)}
.bt-p{background:var(--acc);border-color:var(--acc);color:#000;font-weight:600}
.bt-p:hover{background:var(--acc-hover);border-color:var(--acc-hover)}
.bt-d{background:var(--red-d);border-color:rgba(239,68,68,.3);color:var(--red)}
.bt-d:hover{background:var(--red);color:#fff}
.bt-s{padding:4px 8px;font-size:12px}
.bg{display:flex;gap:5px;flex-wrap:wrap}

/* ══════════════════════════════════════════════
   TABLES
   ══════════════════════════════════════════════ */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12px}
th{text-align:left;padding:7px 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--t3);border-bottom:1px solid var(--brd);white-space:nowrap;position:sticky;top:0;background:var(--bg2)}
td{padding:7px 10px;border-bottom:1px solid var(--brd);white-space:nowrap}
tr:hover td{background:rgba(255,255,255,.02)}
.m{font-family:var(--mono);font-size:12px}
.r{text-align:right}
.tot-row{font-weight:700;border-top:2px solid var(--acc)}
.tot-row td{background:var(--bg1) !important}

/* Sortable table headers (Analytics pattern) */
th.sortable{cursor:pointer;user-select:none}
th.sortable:hover{color:var(--t1)}
th.sorted{color:var(--acc)}

/* ══════════════════════════════════════════════
   BADGES & PILLS
   ══════════════════════════════════════════════ */
.bd{display:inline-flex;align-items:center;padding:2px 7px;border-radius:3px;font-size:11px;font-weight:600;font-family:var(--mono);letter-spacing:.3px}
.bd-g{background:var(--grn-d);color:var(--grn)}
.bd-a{background:var(--acc-d);color:var(--acc)}
.bd-r{background:var(--red-d);color:var(--red)}
.bd-b{background:var(--blu-d);color:var(--blu)}
.bd-p{background:var(--pur-d);color:var(--pur)}
.bd-acc{background:var(--acc-d);color:var(--acc)}
.pill{display:inline-flex;align-items:center;padding:2px 9px;border-radius:10px;font-size:11px;font-weight:600;font-family:var(--mono);letter-spacing:.3px}

/* ══════════════════════════════════════════════
   PROGRESS BAR
   ══════════════════════════════════════════════ */
.pb{height:5px;background:var(--bg4);border-radius:2px;overflow:hidden}
.pf{height:100%;border-radius:2px;transition:width .3s}
.pf-g{background:var(--grn)}.pf-a{background:var(--acc)}.pf-r{background:var(--red)}.pf-b{background:var(--blu)}.pf-acc{background:var(--acc)}

/* ══════════════════════════════════════════════
   SECTION HEADER
   ══════════════════════════════════════════════ */
.sh{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.st{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--t2)}

/* ══════════════════════════════════════════════
   TOOLTIPS — Estimating v1.0.6 accent style
   ══════════════════════════════════════════════ */
.tip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--acc-d);color:var(--acc);font-size:9px;font-weight:700;cursor:help;margin-left:4px;vertical-align:middle;flex-shrink:0;font-style:normal;font-family:var(--sans);line-height:1;transition:all .15s;border:1px solid var(--acc);opacity:.7}
.tip:hover{background:var(--acc-d);color:var(--acc)}
.tip .tip-t{display:none!important}

/* ══════════════════════════════════════════════
   MODAL
   ══════════════════════════════════════════════ */
.mo{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:100}
.mo.show{display:flex}
.mo-c{background:var(--bg2);border:1px solid var(--brd);border-radius:10px;padding:22px;width:520px;max-width:92vw;max-height:85vh;overflow-y:auto}
.mo-c h3{font-size:15px;margin-bottom:14px}

/* ══════════════════════════════════════════════
   TOAST
   ══════════════════════════════════════════════ */
.toast{position:fixed;bottom:16px;right:16px;background:var(--grn);color:#000;padding:9px 18px;border-radius:5px;font-size:12px;font-weight:600;transform:translateY(80px);opacity:0;transition:.25s ease;z-index:999}
.toast.show{transform:translateY(0);opacity:1}

/* ══════════════════════════════════════════════
   EXPORT BOX
   ══════════════════════════════════════════════ */
.ebox{background:var(--bg3);border:1px solid var(--brd);border-radius:4px;padding:12px;font-family:var(--mono);font-size:12px;color:var(--t2);max-height:200px;overflow:auto;white-space:pre;line-height:1.5}

/* ══════════════════════════════════════════════
   SCROLLBAR
   ══════════════════════════════════════════════ */
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:0}
::-webkit-scrollbar-thumb{background:var(--brd2);border-radius:2px}

/* ══════════════════════════════════════════════
   LIGHT MODE
   Note: --acc, --acc-d, --acc-hover, --focus
   must be overridden per-spoke in their own
   body.light block
   ══════════════════════════════════════════════ */
body.light{
  --bg0:#F4F5F8;--bg1:#FFFFFF;--bg2:#ECEEF4;--bg3:#E2E4EE;--bg4:#D8DAEA;
  --brd:#CDD0DE;--brd2:#B8BCCC;
  /* Typography — Estimating v1.0.6 light contrast */
  --t1:#141625;--t2:#3A3F58;--t3:#5C6180;
  /* Semantic palette (light variants) */
  --grn:#16A34A;--grn-d:rgba(22,163,74,.12);
  --red:#DC2626;--red-d:rgba(220,38,38,.12);
  --blu:#2563EB;--blu-d:rgba(37,99,235,.12);
  --org:#EA580C;--org-d:rgba(234,88,12,.12);
  --pur:#7C3AED;--pur-d:rgba(124,58,237,.12);
  --amb:#D97706;--amb-d:rgba(217,119,6,.15);
}
body.light .nb:hover{background:rgba(0,0,0,.05)}
body.light tr:hover td{background:rgba(0,0,0,.025)}
body.light .tot-row td{background:var(--bg1)!important}
body.light .mo{background:rgba(0,0,0,.45)}

/* ══════════════════════════════════════════════
   THEME TOGGLE
   ══════════════════════════════════════════════ */
.theme-toggle{display:flex;align-items:center;justify-content:space-between;padding:8px 16px 12px;border-top:1px solid var(--brd);margin-top:4px;gap:8px}
.theme-toggle-label{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:var(--t3);white-space:nowrap}
.theme-sw{position:relative;width:36px;height:20px;cursor:pointer;flex-shrink:0}
.theme-sw input{opacity:0;width:0;height:0;position:absolute}
.theme-sw-track{position:absolute;inset:0;background:var(--bg3);border:1px solid var(--brd2);border-radius:10px;transition:.2s}
.theme-sw input:checked+.theme-sw-track{background:var(--acc);border-color:var(--acc)}
.theme-sw-thumb{position:absolute;width:14px;height:14px;background:#fff;border-radius:50%;top:2px;left:2px;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.3);pointer-events:none}
.theme-sw input:checked~.theme-sw-thumb{left:18px}
.theme-icons{font-size:12px;color:var(--t3);display:flex;align-items:center}

/* ══════════════════════════════════════════════
   MOBILE RESPONSIVE
   Shared breakpoints and layout patterns
   ══════════════════════════════════════════════ */

/* Bottom nav (mobile) — opt-in per spoke */
.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;height:60px;background:var(--bg1);border-top:1px solid var(--brd);z-index:80;padding:0 8px}
.bottom-nav-inner{display:flex;align-items:center;justify-content:space-around;height:100%;max-width:480px;margin:0 auto}
.bn-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;border:none;background:0;color:var(--t3);font-size:9px;font-weight:600;letter-spacing:.3px;cursor:pointer;border-radius:6px;transition:all .15s;min-width:54px}
.bn-btn .bn-ic{font-size:18px}
.bn-btn.on{color:var(--acc)}
.bn-btn:active{background:var(--acc-d)}

@media(max-width:768px){
  .sb{display:none}
  .bottom-nav{display:block}
  .mn{width:100%}
  .stats-bar{display:none}
  .tb{padding:0 16px;height:44px;min-height:44px}
  .tb h2{font-size:14px}
  .ct{padding:14px 16px 80px}
  .g2,.g3,.g4,.g5,.g6{grid-template-columns:1fr}
  .mo-c{width:100%;max-width:100%;border-radius:0;max-height:100vh;padding:16px}
  table{font-size:11px}
  td,th{padding:6px 8px}
  .kpi-v{font-size:22px}
}
@media(min-width:769px){
  .bottom-nav{display:none!important}
}

/* ── Print base ── */
@media print {
  body{background:#fff;color:#000;display:block;font-size:12px}
  .sb,.stats-bar,.tb,.toast,.mo,.bottom-nav,.no-print{display:none!important}
  .mn{overflow:visible}
  .ct{padding:0;overflow:visible}
  .cd{border:1px solid #ccc;background:#fff;break-inside:avoid}
  .kpi-v{color:#000}
}
