/* MERIDIAN base — reset + shared primitives. Requires tokens.css. */
*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid}
*{margin:0;padding:0}
body{margin:0;line-height:inherit}
h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;margin:0}
p,figure,blockquote,dl,dd{margin:0}
ul,ol{list-style:none;margin:0;padding:0}
a{color:inherit;text-decoration:inherit}
b,strong{font-weight:bolder}
button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}
button,select{text-transform:none}
button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none;cursor:pointer}
table{border-collapse:collapse}
img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}
img,video{max-width:100%;height:auto}
/* ── base ── */
body{background:var(--bg);color:var(--tx);font-family:var(--ui);font-size:13px;-webkit-font-smoothing:antialiased;min-height:100vh;
  transition:background .3s,color .3s}
/* premium depth: a whisper of accent light bleeding from the top, and a faint floor vignette —
   fixed, behind everything, non-interactive. Kept low-alpha so numbers stay crisp. */
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(115% 72% at 50% -22%,var(--acc-soft),transparent 52%),
             radial-gradient(90% 55% at 88% 6%,rgba(53,217,138,.035),transparent 55%);opacity:.6}
html.light body::before,html[data-theme=paper] body::before{opacity:.5}
html.light body,html[data-theme=paper] body{background-image:radial-gradient(rgba(20,24,32,.028) 1px,transparent 1px);background-size:28px 28px}
*{font-family:'Space Grotesk',sans-serif}
.mono{font-family:var(--mono)}
.tnum{font-variant-numeric:tabular-nums}
.up,.pos{color:var(--up)}.dn,.neg{color:var(--dn)}.acc{color:var(--acc)}.neu{color:var(--mut)}
.disp{font-family:var(--disp);letter-spacing:-.02em}
/* eyebrow / section labels — mono, tracked, uppercase, muted (no left bar, no glow) */
.lbl,.section-hdr,.m-section-hdr,.m-label{font-family:var(--mono);font-weight:500;text-transform:uppercase;color:var(--mut);letter-spacing:.14em}
.section-hdr{font-size:10px;display:inline-flex;align-items:center;gap:9px}
.section-hdr::before{content:"";width:3px;height:11px;border-radius:2px;background:var(--acc);box-shadow:0 0 8px var(--acc-glow);flex-shrink:0}
.m-section-hdr{font-size:10px}
.m-label{font-size:9px;letter-spacing:.1em;color:var(--faint)}
.eyb{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}

/* card — matte surface, hairline border, subtle machined elevation (inset top highlight + soft
   drop). Applies in both themes now; the inset highlight reads as a bevel on the dark surface. */
.card,.card-sm,.m-card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--elev)}
.card-sm{border-radius:9px}
.pad{padding:16px 18px}
.hd{padding:14px 18px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}
.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.p-4{padding:16px}
.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}
.items-center{align-items:center}.w-full{width:100%}.font-medium{font-weight:500}.rounded{border-radius:6px}
.gap-2{gap:8px}.gap-4{gap:16px}.text-xs{font-size:11px}.text-sm{font-size:13px}.text-center{text-align:center}
.py-4{padding-top:16px;padding-bottom:16px}.py-6{padding-top:24px;padding-bottom:24px}
.px-1\.5{padding-left:6px;padding-right:6px}.px-2{padding-left:8px;padding-right:8px}.py-0\.5{padding-top:2px;padding-bottom:2px}
.hide-mobile{}
.overflow-x-auto{overflow-x:auto}
.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:p-6{padding:24px}}

/* badges — flat tint, hairline */
.badge-green{background:var(--up-soft);color:var(--up);border:1px solid var(--up-line)}
.badge-red{background:var(--dn-soft);color:var(--dn);border:1px solid var(--down-line)}
.badge-yellow{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-line)}
.badge-gray{background:var(--panel2);color:var(--mut);border:1px solid var(--line)}
.badge-blue{background:var(--acc-soft);color:var(--acc);border:1px solid var(--acc-line)}
.pill{font-family:var(--mono);font-size:10px;padding:3px 8px;border-radius:6px;border:1px solid var(--line);letter-spacing:.02em;display:inline-block;color:var(--mut)}
.pill.long{color:var(--up);border-color:var(--up-line);background:var(--up-soft)}
.pill.short{color:var(--dn);border-color:var(--down-line);background:var(--dn-soft)}

/* status dot — flat pulse, no big halo */
.pulse,.dot{width:7px;height:7px;border-radius:50%;background:var(--up);display:inline-block;flex-shrink:0;animation:pulse 2.2s infinite}
.dot{background:var(--acc)}
.stale-dot{width:7px;height:7px;background:var(--warn);border-radius:50%;display:inline-block;flex-shrink:0}
@keyframes pulse{0%{opacity:1}50%{opacity:.45}100%{opacity:1}}
@media(prefers-reduced-motion:reduce){.pulse,.dot{animation:none}*,::before,::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}

/* skeleton (flat) */
.skel{color:transparent!important;user-select:none;background:var(--panel2);border-radius:4px;animation:shimmer 1.6s infinite;background-image:linear-gradient(90deg,var(--panel2) 25%,var(--line2) 50%,var(--panel2) 75%);background-size:200% 100%}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:3px}
