/* ==========================================================================
   Liberty Marketplace Profitability — app shell & view styling.
   Markup contract: wwwroot/js/dashboard.js (and charts.js) target the ids
   and classes below directly, so selectors are kept stable across restyles.
   ========================================================================== */
:root{
  --bg:#f4f6fa; --panel:#ffffff; --panel-2:#f1f5f9; --panel-3:#e9eef5; --border:#dfe6ee;
  --text:#0f172a; --muted:#64748b; --muted-2:#94a3b8;
  --accent:#0e9f6e; --accent-2:#059669; --accent-dim:#bbead9; --accent-soft:#eafaf3;
  --amber:#c77700; --danger:#dc2626; --danger-soft:#fef2f2; --blue:#2563eb;
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --shadow:0 8px 24px -6px rgba(15,23,42,.10),0 2px 6px rgba(15,23,42,.05);
  --shadow-lg:0 20px 44px -12px rgba(15,23,42,.18);
  --radius:12px; --radius-sm:8px; --radius-lg:16px;
  --mono:'JetBrains Mono','SFMono-Regular',Consolas,monospace;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --sidebar-w:250px;
  --sb-bg-0:#0b1220; --sb-bg-1:#132038; --sb-border:rgba(255,255,255,.08);
  --sb-text:#cbd5e1; --sb-text-dim:#7c8aa5; --sb-active-bg:rgba(16,185,129,.16);
  --series-1:#2563eb; --series-2:#0e9f6e; --series-3:#c77700; --series-4:#7c3aed;
  --series-5:#dc2626; --series-6:#0891b2; --series-7:#c026d3; --series-8:#64748b;
  --div-neg:#dc2626; --div-pos:#0e9f6e; --good:#0e9f6e; --critical:#dc2626;
  --surface-1:var(--panel); --text-1:var(--text); --text-2:var(--muted);
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#0b1220; --panel:#111a2e; --panel-2:#0f1729; --panel-3:#18233b; --border:#233151;
  --text:#e7ecf5; --muted:#93a1bd; --muted-2:#6f7fa1;
  --accent:#22c58d; --accent-2:#34d399; --accent-dim:#1c4a3c; --accent-soft:#0f2a22;
  --amber:#f0a93d; --danger:#f87171; --danger-soft:#2a1416; --blue:#60a5fa;
  --shadow-sm:0 1px 2px rgba(0,0,0,.3);
  --shadow:0 8px 24px -6px rgba(0,0,0,.45),0 2px 6px rgba(0,0,0,.3);
  --shadow-lg:0 24px 48px -12px rgba(0,0,0,.6);
  --series-1:#60a5fa; --series-2:#22c58d; --series-3:#f0a93d; --series-4:#a78bfa;
  --series-5:#f87171; --series-6:#22d3ee; --series-7:#e879f9; --series-8:#93a1bd;
  --div-neg:#f87171; --div-pos:#22c58d; --good:#22c58d; --critical:#f87171;
  color-scheme:dark;
}
@media (prefers-reduced-motion: reduce){ *{transition:none!important;animation:none!important;} }

*{box-sizing:border-box;}
html,body{margin:0;}
body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;
  transition:background .2s ease,color .2s ease;-webkit-font-smoothing:antialiased;}
::-webkit-scrollbar{width:9px;height:9px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--muted-2);border-radius:99px;border:2px solid transparent;background-clip:content-box;}
button{font-family:var(--sans);}
input,select{font-family:var(--sans);}
a{color:var(--accent-2);}

#db-banner{display:none;background:var(--danger-soft);color:var(--danger);border-bottom:1px solid var(--border);padding:10px 20px;font-size:12.5px;}
#db-banner.show{display:block;}

/* ------------------------------------------------------------- app shell */
.app{display:flex;min-height:100vh;}
.sidebar{
  width:var(--sidebar-w);flex-shrink:0;padding:20px 0 16px;position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;justify-content:space-between;
  background:linear-gradient(175deg,var(--sb-bg-1) 0%,var(--sb-bg-0) 65%);
  border-right:1px solid var(--sb-border);box-shadow:6px 0 24px rgba(0,0,0,.18);
}
.brand{padding:0 20px 18px;border-bottom:1px solid var(--sb-border);margin-bottom:12px;}
.brand-row{display:flex;align-items:center;gap:11px;}
.brand-mark{
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
  width:36px;height:36px;border-radius:10px;font-weight:800;font-size:16px;color:#04231a;
  background:linear-gradient(135deg,#34e0a1,#0e9f6e);box-shadow:0 4px 14px rgba(16,185,129,.35);
}
.brand-title{font-weight:800;font-size:16.5px;letter-spacing:.6px;color:#f1f5f9;}
.brand-sub{color:var(--sb-text-dim);font-size:10.5px;margin-top:3px;line-height:1.55;}

nav#dnav{padding:6px 12px;display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto;}
.nav-item{
  display:flex;align-items:center;gap:11px;padding:9px 12px;color:var(--sb-text);cursor:pointer;
  font-size:13px;font-weight:600;border-radius:9px;transition:background .15s,color .15s,transform .1s;
  white-space:nowrap;
}
.nav-item .nav-icon{flex-shrink:0;opacity:.75;transition:opacity .15s;}
.nav-item:hover{color:#fff;background:rgba(255,255,255,.06);}
.nav-item:hover .nav-icon{opacity:1;}
.nav-item:active{transform:scale(.98);}
.nav-item.active{color:#5eead4;background:var(--sb-active-bg);box-shadow:inset 0 0 0 1px rgba(16,185,129,.25);}
.nav-item.active .nav-icon{opacity:1;color:#34d399;}

.sidebar-foot{padding:12px 14px 0;display:flex;flex-direction:column;gap:10px;}
.engine-badge{
  padding:10px 12px;border:1px solid var(--sb-border);border-radius:var(--radius-sm);
  font-size:10.5px;color:var(--sb-text-dim);line-height:1.7;background:rgba(255,255,255,.03);
  display:flex;flex-direction:column;gap:1px;
}
.engine-badge b{color:#e2e8f0;font-weight:700;letter-spacing:.3px;}
.dot-live{width:7px;height:7px;border-radius:50%;background:#34d399;display:inline-block;
  margin-bottom:5px;box-shadow:0 0 0 3px rgba(52,211,153,.18);animation:pulse 2.4s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.45;}}

.account-badge{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:9px 12px;border:1px solid var(--sb-border);border-radius:var(--radius-sm);background:rgba(255,255,255,.03);}
.account-name{font-size:12px;font-weight:700;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px;}
.account-role{font-size:10px;color:var(--sb-text-dim);text-transform:uppercase;letter-spacing:.4px;margin-top:1px;}
.btn-logout{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;
  border:1px solid var(--sb-border);border-radius:7px;background:rgba(255,255,255,.04);color:var(--sb-text-dim);
  cursor:pointer;transition:.15s;}
.btn-logout:hover{color:#fff;border-color:var(--danger);background:rgba(220,38,38,.15);}

.theme-toggle{
  display:flex;align-items:center;gap:8px;justify-content:center;background:rgba(255,255,255,.05);
  border:1px solid var(--sb-border);color:var(--sb-text);border-radius:var(--radius-sm);
  padding:8px 10px;font-size:12px;font-weight:600;cursor:pointer;transition:.15s;
}
.theme-toggle:hover{background:rgba(255,255,255,.1);color:#fff;}
.theme-toggle .i-moon{display:none;} .theme-toggle .i-sun{display:block;}
:root[data-theme="dark"] .theme-toggle .i-moon{display:block;}
:root[data-theme="dark"] .theme-toggle .i-sun{display:none;}

/* --------------------------------------------------------------- content */
.main{flex:1;min-width:0;padding:24px 28px 56px;max-width:1640px;}
.view{display:none;}
.view.active{display:block;animation:fade-in .25s ease;}
@keyframes fade-in{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
h1{font-size:23px;margin:0 0 4px;color:var(--text);letter-spacing:-.2px;font-weight:800;}
h2{font-size:14.5px;margin:0 0 12px;font-weight:700;color:var(--text);}
.subtitle{color:var(--muted);font-size:12.5px;margin-bottom:16px;line-height:1.55;max-width:78ch;}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;flex-wrap:wrap;gap:12px;}

.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.filters select,.filters input[type=text],.filters input[type=search]{
  height:36px;background:var(--panel);border:1px solid var(--border);color:var(--text);
  border-radius:var(--radius-sm);padding:0 30px 0 11px;font-size:12.5px;outline:none;max-width:170px;
  box-shadow:var(--shadow-sm);appearance:none;line-height:34px;vertical-align:middle;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%2394a3b8'/></svg>");
  background-repeat:no-repeat;background-position:right 11px center;transition:border-color .15s,box-shadow .15s;
}
.filters input[type=search]{background-image:none;padding:0 11px;}
.filters input[type=date]{
  height:36px;background:var(--panel);border:1px solid var(--border);color:var(--text);
  border-radius:var(--radius-sm);padding:0 10px;font-size:12.5px;outline:none;
  box-shadow:var(--shadow-sm);vertical-align:middle;transition:border-color .15s,box-shadow .15s;
}
.filters input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6;}
:root[data-theme="dark"] .filters input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1);}
.filters select:focus,.filters input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.filters .field-label{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);font-weight:600;}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;box-sizing:border-box;
  background:var(--panel);border:1px solid var(--border);
  color:var(--text);border-radius:var(--radius-sm);padding:0 14px;font-size:12.5px;cursor:pointer;
  font-weight:600;transition:.15s;box-shadow:var(--shadow-sm);vertical-align:middle;
}
.btn:hover{border-color:var(--accent);color:var(--accent-2);transform:translateY(-1px);box-shadow:var(--shadow);}
.btn:active{transform:translateY(0);}
.btn.primary{background:linear-gradient(135deg,var(--accent-2),var(--accent));border-color:transparent;color:#fff;font-weight:700;}
.btn.primary:hover{filter:brightness(1.07);color:#fff;}
.btn.danger:hover{border-color:var(--danger);color:var(--danger);}
.btn:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.btn[disabled]{opacity:.55;cursor:not-allowed;transform:none!important;box-shadow:var(--shadow-sm)!important;}
.btn[disabled]:hover{border-color:var(--border);color:var(--text);}

/* ------------------------------------------------------------------ kpis */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(172px,1fr));gap:12px;margin-bottom:16px;}
.kpi{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .15s,box-shadow .15s;
}
.kpi::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(var(--accent-2),var(--accent));opacity:.7;}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);}
.kpi-label{color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.55px;margin-bottom:8px;font-weight:700;}
.kpi-value{font-family:var(--mono);font-size:20px;font-weight:700;white-space:nowrap;color:var(--text);}
.kpi-sub{font-size:11.5px;margin-top:4px;color:var(--muted);}
.pos{color:var(--accent-2);} .neg{color:var(--danger);}

/* ----------------------------------------------------------------- panel */
.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px;box-shadow:var(--shadow);}
.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;flex-wrap:wrap;gap:8px;}
.grid-2col{display:grid;grid-template-columns:1.1fr .9fr;gap:16px;align-items:stretch;margin-bottom:16px;}
.grid-2col > .panel{display:flex;flex-direction:column;margin-bottom:0;}
@media(max-width:1100px){.grid-2col{grid-template-columns:1fr;}}

.exec-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:16px;margin-bottom:16px;align-items:stretch;}
.exec-card{background:linear-gradient(150deg,var(--panel) 0%,var(--panel-2) 100%);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);}
.exec-title{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.65px;font-weight:800;margin-bottom:8px;}
.exec-headline{font-size:21px;line-height:1.28;font-weight:800;color:var(--text);margin-bottom:8px;letter-spacing:-.2px;}
.exec-note{color:var(--muted);font-size:12.5px;line-height:1.6;}
.driver-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;}
.driver-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;background:var(--panel);transition:border-color .15s,transform .15s;}
.driver-card:hover{border-color:var(--accent-dim);transform:translateY(-1px);}
.driver-card .t{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.45px;font-weight:800;}
.driver-card .n{font-family:var(--mono);font-size:16px;font-weight:800;margin-top:4px;color:var(--text);}
.driver-card .s{font-size:11.5px;color:var(--muted);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.insight-list{display:grid;gap:8px;}
.insight{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;background:var(--panel);}
.insight .label{font-size:12px;color:var(--muted);font-weight:700;}
.insight .value{font-family:var(--mono);font-weight:800;text-align:right;white-space:nowrap;}
.section-kicker{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.55px;font-weight:800;margin-bottom:8px;}
@media(max-width:1100px){.exec-grid{grid-template-columns:1fr;}.driver-grid{grid-template-columns:1fr;}}

.pill-tabs{display:flex;gap:6px;flex-wrap:wrap;}
.pill{padding:6.5px 13px;border:1px solid var(--border);border-radius:99px;font-size:12px;color:var(--muted);cursor:pointer;transition:.15s;background:var(--panel);font-weight:600;}
.pill:hover{color:var(--text);border-color:var(--accent-dim);}
.pill.active{background:var(--accent-soft);color:var(--accent-2);border-color:var(--accent-dim);}

/* ----------------------------------------------------------------- table */
.tbl-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm);}
table{border-collapse:collapse;width:100%;font-size:12.5px;}
th,td{padding:9px 11px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;}
th{background:var(--panel-2);color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;position:sticky;top:0;cursor:default;font-weight:800;z-index:1;}
th.sortable{cursor:pointer;} th.sortable:hover{color:var(--text);}
tbody tr{transition:background .1s;}
tbody tr:hover{background:var(--panel-2);}
tbody tr:last-child td{border-bottom:none;}
td.num,th.num{text-align:right;font-family:var(--mono);}
tr.total-row td{background:var(--panel-3);font-weight:700;border-top:2px solid var(--border);}
td input{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:5px 6px;width:74px;font-family:var(--mono);font-size:12px;text-align:right;}
td input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft);}
td input.wide{width:110px;text-align:left;font-family:var(--sans);}
td .btn,th .btn{height:28px;padding:0 10px;}

/* -------------------------------------------------------------- waterfall */
.wf{display:flex;flex-direction:column;gap:6px;}
.wf-row{display:grid;grid-template-columns:150px 1fr 96px;gap:8px;align-items:center;font-size:12px;}
.wf-label{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wf-track{position:relative;height:16px;background:var(--panel-2);border-radius:5px;overflow:hidden;}
.wf-bar{position:absolute;top:0;bottom:0;border-radius:4px;transition:width .3s ease;}
.wf-val{font-family:var(--mono);text-align:right;font-size:11.5px;white-space:nowrap;}
.wf-row.anchor .wf-label{color:var(--text);font-weight:700;}
.wf-row.anchor .wf-val{font-weight:700;}
@media(max-width:640px){.wf-row{grid-template-columns:104px 1fr 84px;}}

/* ----------------------------------------------------------------- misc */
.dropzone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:40px 20px;text-align:center;color:var(--muted);cursor:pointer;transition:.2s;background:var(--panel-2);}
.dropzone.drag,.dropzone:hover{border-color:var(--accent);color:var(--text);background:var(--accent-soft);}
.month-chip{display:inline-flex;align-items:center;gap:8px;background:var(--panel-2);border:1px solid var(--border);border-radius:99px;padding:6px 12px;font-size:12px;margin:0 8px 8px 0;transition:border-color .15s;}
.month-chip:hover{border-color:var(--accent-dim);}
.month-chip .x{cursor:pointer;color:var(--muted);border-radius:50%;padding:1px 5px;} .month-chip .x:hover{color:#fff;background:var(--danger);}
.info-note{font-size:12px;color:var(--muted);line-height:1.65;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;}
.badge-count{background:var(--panel-2);border:1px solid var(--border);border-radius:99px;font-size:11px;color:var(--muted);padding:3px 10px;font-family:var(--mono);}
#toast{display:none;position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--text);border:1px solid var(--border);color:var(--bg);padding:11px 20px;border-radius:99px;font-size:13px;z-index:99;box-shadow:var(--shadow-lg);font-weight:600;}
.empty{color:var(--muted);font-size:13px;padding:28px;text-align:center;}
.audit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px;}
.audit-cell{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;transition:border-color .15s;}
.audit-cell:hover{border-color:var(--accent-dim);}
.audit-cell .k{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;}
.audit-cell .v{font-family:var(--mono);font-size:13.5px;margin-top:3px;}
.audit-cell .f{font-size:10.5px;color:var(--muted);margin-top:4px;line-height:1.5;}
.split-chips{display:flex;gap:8px;flex-wrap:wrap;}
.split-chip{flex:1;min-width:150px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;}
.split-chip .t{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;}
.split-chip .n{font-family:var(--mono);font-size:16px;font-weight:700;margin-top:4px;}
.split-chip .s{font-size:11.5px;color:var(--muted);margin-top:3px;}

/* -------------------------------------------------------------- loading */
.loading{color:var(--muted);font-size:13px;padding:30px;text-align:center;}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--border);
  border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px;margin-right:8px;}
@keyframes sp{to{transform:rotate(360deg);}}
.db-banner{display:none;background:var(--danger-soft);border:1px solid var(--danger);color:var(--danger);
  border-radius:var(--radius-sm);padding:10px 12px;font-size:12.5px;margin-bottom:14px;line-height:1.6;}
.db-banner.show{display:block;}
.src-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);
  border:1px solid var(--border);border-radius:99px;padding:3px 10px;background:var(--panel);}
.src-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--accent);}

/* --------------------------------------------------------------- mobile nav */
.mobile-nav{display:none;}
@media(max-width:920px){
  .app{flex-direction:column;}
  .sidebar{display:none;}
  .mobile-nav{
    display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:50;
    background:linear-gradient(175deg,var(--sb-bg-1),var(--sb-bg-0));border-bottom:1px solid var(--sb-border);
    padding:10px 10px 0;
  }
  .mobile-nav .mn-brand{padding:2px 6px 8px;font-weight:800;font-size:13.5px;color:#f1f5f9;display:flex;align-items:center;gap:8px;white-space:nowrap;}
  .mobile-nav .mn-brand .brand-mark{width:24px;height:24px;font-size:12px;border-radius:7px;}
  .mobile-nav .theme-toggle{margin-bottom:8px;padding:7px 9px;flex-shrink:0;}
  .mobile-nav .theme-toggle-label{display:none;}
  .mobile-nav form{margin-bottom:8px;flex-shrink:0;}
  .mobile-nav .btn-logout{width:32px;height:32px;}
  .mobile-nav .mn-tabs{display:flex;overflow-x:auto;gap:2px;padding:0 0 9px;flex:1;}
  .mobile-nav .nav-item{border-radius:8px 8px 0 0;padding:8px 12px;flex-shrink:0;color:var(--sb-text-dim);}
  .mobile-nav .nav-item .nav-icon{width:14px;height:14px;}
  .mobile-nav .nav-item.active{background:rgba(255,255,255,.08);color:#5eead4;box-shadow:inset 0 -2px 0 var(--accent);}
  .main{padding:18px 14px 60px;}
  .kpi-value{font-size:17px;}
  .filters select{max-width:130px;}
}
@media(max-width:600px){
  .main{padding:14px 12px 56px;}
  h1{font-size:20px;}
  .kpi-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:9px;}
  .panel{padding:13px;border-radius:var(--radius-sm);}
  .topbar{gap:10px;}
  .filters{width:100%;}
  .filters select,.filters input[type=text],.filters input[type=search]{flex:1 1 128px;min-width:108px;max-width:none;}
  .filters .btn{flex:1 1 auto;justify-content:center;}
  #toast{bottom:14px;font-size:12.5px;padding:9px 16px;max-width:calc(100vw - 28px);text-align:center;}
}

/* ------------------------------------------------------------- charts.js */
.chart{width:100%;}
.chart svg{display:block;max-width:100%;overflow:visible;}
.chart .grid-line{stroke:var(--border);stroke-width:1;}
.chart .axis-line{stroke:var(--muted-2);stroke-width:1;}
.chart .tick{fill:var(--muted);font-size:10.5px;font-family:var(--sans);}
.chart .cat-label{fill:var(--muted);font-size:11.5px;font-family:var(--sans);}
.chart .cat-label.strong{fill:var(--text);font-weight:700;}
.chart .mark-label{fill:var(--text);font-size:11px;font-family:var(--mono);}
.chart .mark-label.strong{font-weight:700;}
.chart .ref-line{stroke:var(--muted-2);stroke-width:1;stroke-dasharray:3,3;}
.chart .ref-label{fill:var(--muted);font-size:10px;font-weight:700;font-family:var(--sans);}
.chart .crosshair{stroke:var(--muted-2);stroke-width:1;stroke-dasharray:2,3;}
.chart .hit{fill:transparent;cursor:pointer;}

.tip{position:fixed;z-index:300;background:var(--text);color:var(--bg);border-radius:8px;
  padding:8px 11px;font-size:12px;line-height:1.6;pointer-events:none;opacity:0;
  transform:translateY(3px);transition:opacity .12s,transform .12s;box-shadow:var(--shadow-lg);max-width:250px;}
.tip.show{opacity:1;transform:none;}
.tip-title{font-weight:700;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px;}
.tip-row{display:flex;align-items:center;gap:8px;justify-content:space-between;white-space:nowrap;}
.tip-key{width:8px;height:8px;border-radius:2px;flex-shrink:0;}
.tip-name{opacity:.8;margin-right:10px;}
.tip-val{font-family:var(--mono);font-weight:700;}

.legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);}
.legend-item{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);}
.legend-key{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0;}
.legend-key.line{height:2px;border-radius:2px;}
.swatch{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;vertical-align:middle;}
.chart-table{margin-top:10px;}

/* --------------------------------------------------------------- insights */
.highlight-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:16px;}
.highlight-card{background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--muted-2);
  border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s;}
.highlight-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);}
.highlight-card.warn{border-left-color:var(--amber);}
.highlight-card.bad{border-left-color:var(--danger);}
.highlight-card.info{border-left-color:var(--blue);}
.highlight-card.good{border-left-color:var(--accent-2);}
.hc-title{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;font-weight:800;color:var(--muted);margin-bottom:6px;}
.hc-headline{font-size:15px;font-weight:700;color:var(--text);line-height:1.35;margin-bottom:4px;}
.hc-note{font-size:11.5px;color:var(--muted);line-height:1.5;}
@media(max-width:600px){.highlight-grid{grid-template-columns:1fr;}}
