/* Theme file: Tabler variables set to the plan's design tokens (technical plan §10).
   Same palette and tier colours as ui-mockup-dashboard.html and the Scalping Analyzer prototype. */

@font-face{font-family:"IBM Plex Sans";font-weight:400;font-display:swap;src:url(../vendor/fonts/ibm-plex-sans-400.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-weight:500;font-display:swap;src:url(../vendor/fonts/ibm-plex-sans-500.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-weight:600;font-display:swap;src:url(../vendor/fonts/ibm-plex-sans-600.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-weight:700;font-display:swap;src:url(../vendor/fonts/ibm-plex-sans-700.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:400;font-display:swap;src:url(../vendor/fonts/ibm-plex-mono-400.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:500;font-display:swap;src:url(../vendor/fonts/ibm-plex-mono-500.woff2) format("woff2")}

:root,[data-bs-theme="light"]{
  --tblr-font-sans-serif:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --tblr-font-monospace:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  --tblr-primary:#4f46e5;--tblr-primary-rgb:79,70,229;
  --tblr-body-bg:#f7f8fa;--tblr-bg-surface:#ffffff;--tblr-border-color:#e4e7ec;
  --tblr-body-color:#101828;--tblr-secondary:#667085;
  --tblr-border-radius:8px;
  --pos:#067647;--neg:#c01048;
  --t-critical:#d32f2f;--t-vhigh:#f57c00;--t-high:#ffa000;--t-medium:#fdd835;--t-low:#4caf50;
  --skel:#eef0f3;
}
[data-bs-theme="dark"]{
  --tblr-primary:#8b87ff;--tblr-primary-rgb:139,135,255;
  --tblr-body-bg:#0b0f17;--tblr-bg-surface:#111723;--tblr-bg-surface-secondary:#172031;--tblr-border-color:#232c3d;
  --tblr-body-color:#f2f4f7;--tblr-secondary:#98a2b3;--tblr-bg-forms:#0b0f17;
  --pos:#47cd89;--neg:#fb7194;--skel:#1b2433;
}
body{background:var(--tblr-body-bg)}

/* Numbers: equal-width digits, right-aligned, signed colours */
.num,.table td.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.mono{font-family:var(--tblr-font-monospace);font-size:.86em}
.pos{color:var(--pos)!important}.neg{color:var(--neg)!important}

/* Sidebar */
.navbar-brand-mark{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,#4f46e5,#0d9488);display:inline-grid;place-items:center;color:#fff;margin-right:10px}
.navbar-brand-mark svg{width:16px;height:16px}
.navbar-vertical .nav-link{display:flex;align-items:center;width:100%;padding-right:14px}
.navbar-vertical .nav-link-title{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-section{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tblr-secondary);padding:14px 12px 4px;list-style:none}
.icon{width:20px;height:20px;stroke-width:2}

/* Risk tiers: fixed colours, always with a label (colour-blind safe) */
.tier{display:inline-flex;align-items:center;gap:6px;font:600 11px/1 var(--tblr-font-sans-serif);letter-spacing:.03em;padding:5px 8px;border-radius:5px;white-space:nowrap}
.tier::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.tier.critical{color:var(--t-critical);background:color-mix(in srgb,var(--t-critical) 14%,transparent)}
.tier.vhigh{color:var(--t-vhigh);background:color-mix(in srgb,var(--t-vhigh) 14%,transparent)}
.tier.high{color:#b77700;background:color-mix(in srgb,var(--t-high) 18%,transparent)}
.tier.medium{color:#8a7500;background:color-mix(in srgb,var(--t-medium) 28%,transparent)}
.tier.low{color:#2e7d32;background:color-mix(in srgb,var(--t-low) 16%,transparent)}
[data-bs-theme="dark"] .tier.high{color:var(--t-high)}
[data-bs-theme="dark"] .tier.medium{color:var(--t-medium)}
[data-bs-theme="dark"] .tier.low{color:#7bd17f}

/* Server badge + login: "Live-2 · 500123" */
.srv{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.srv b{font:600 11px/1 var(--tblr-font-sans-serif);padding:4px 6px;border-radius:4px;background:var(--tblr-bg-surface-secondary,#f2f4f7);border:1px solid var(--tblr-border-color);color:var(--tblr-body-color)}
.srv span{font-family:var(--tblr-font-monospace);font-size:.86em}

/* Status, live and loading states */
.status-dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:6px}
.dot-ok{background:#16a34a;box-shadow:0 0 0 3px color-mix(in srgb,#16a34a 22%,transparent)}
.dot-warn{background:#f59e0b;box-shadow:0 0 0 3px color-mix(in srgb,#f59e0b 22%,transparent)}
.dot-err{background:#dc2626;box-shadow:0 0 0 3px color-mix(in srgb,#dc2626 22%,transparent)}
.updated{font-size:12px;color:var(--tblr-secondary)}
.live::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#16a34a;margin-right:6px;animation:pulse 2s infinite}
@keyframes pulse{50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.live::before{animation:none}}
.skeleton{height:12px;border-radius:4px;background:var(--skel)}

/* KPIs */
.kpi .subheader{font-size:12px}
.kpi .h1{font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.table thead th{font-size:11px;letter-spacing:.04em}
.table td{vertical-align:middle}

/* Auth pages */
.auth-brand{display:flex;align-items:center;justify-content:center;gap:4px;font-size:17px;font-weight:600;margin-bottom:1.5rem;color:var(--tblr-body-color);text-decoration:none}
:focus-visible{outline:2px solid var(--tblr-primary);outline-offset:2px}
