/* ============================================================================
   mic-cockpit — NBM design system (ported from nbm-website global.css).
   OKLCH tokens · Fraunces/Manrope/JetBrains lock · .atmosphere · .reveal.
   AA discipline: magenta-bright (#fd617f) for labels/accents; periwinkle/pearl
   for numerals on indigo-card fills (raw magenta fails AA on indigo).
   ============================================================================ */

:root {
  color-scheme: dark;

  /* Palette — OKLCH */
  --navy-deep:       oklch(22% 0.08 260);
  --navy-darker:     oklch(15% 0.06 260);
  --indigo-card:     oklch(32% 0.09 265);
  --indigo-deep:     oklch(28% 0.10 265);
  --periwinkle:      oklch(72% 0.07 265);
  --periwinkle-soft: oklch(72% 0.07 265 / 0.6);
  --magenta-hot:     oklch(55% 0.22 12);
  --magenta-soft:    oklch(55% 0.18 12 / 0.7);
  --magenta-bright:  oklch(70% 0.19 12);    /* AA-safe magenta for text */
  --azure:           oklch(62% 0.19 255);
  --azure-bright:    oklch(75% 0.14 255);   /* AA-safe azure for text */
  --silver:          oklch(85% 0.01 260);
  --pearl:           oklch(92% 0.01 260);
  --amber:           oklch(78% 0.13 75);    /* aging / warn */
  --green-ok:        oklch(72% 0.15 155);   /* fresh / success */

  /* Fonts (loaded via Google Fonts in <head>) */
  --font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --font-body:    'Manrope', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;

  /* Semantic */
  --bg:      var(--navy-deep);
  --fg:      var(--pearl);
  --muted:   var(--periwinkle);
  --accent:  var(--magenta-hot);
  --surface: var(--indigo-card);
  --border:  oklch(72% 0.07 265 / 0.18);

  /* Motion */
  --ease-emphasis: cubic-bezier(0.16, 1, 0.3, 1);
  --duration-reveal: 600ms;
  --stagger-step: 0.09s;
  --radius-card: 14px;
  --radius-pill: 999px;
}

* { box-sizing: border-box; }
html, body { height: 100%; }
body {
  margin: 0;
  min-height: 100dvh;
  font-family: var(--font-body);
  color: var(--fg);
  background:
    radial-gradient(120% 90% at 50% -10%, var(--indigo-deep) 0%, var(--navy-deep) 55%, var(--navy-darker) 100%);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  line-height: 1.6;
}
a { color: var(--azure-bright); text-decoration: none; }
a:hover { color: var(--pearl); }
code { font-family: var(--font-mono); font-size: 0.92em; color: var(--periwinkle); }

h1, h2, h3 {
  font-family: var(--font-display);
  font-variation-settings: "opsz" 144, "SOFT" 100;
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -0.02em;
  margin: 0 0 0.5em;
}
h1 { font-size: clamp(2.1rem, 4vw + 0.5rem, 3.4rem); }
h1 i, h2 i, h3 i { color: var(--magenta-bright); font-style: italic; font-variation-settings: "opsz" 144, "SOFT" 120; }

/* ---------- Atmosphere (drift mesh) ---------- */
.atmosphere { position: relative; isolation: isolate; overflow: hidden; }
.atmosphere::before {
  content: ""; position: absolute; inset: -20%;
  background:
    radial-gradient(60% 50% at 18% 22%, oklch(55% 0.22 12 / 0.16), transparent 60%),
    radial-gradient(50% 45% at 82% 70%, oklch(72% 0.07 265 / 0.20), transparent 65%),
    radial-gradient(45% 40% at 50% 110%, oklch(32% 0.09 265 / 0.42), transparent 70%);
  filter: blur(42px);
  animation: atmosphere-drift 32s ease-in-out infinite alternate;
  z-index: -2; pointer-events: none;
}
@keyframes atmosphere-drift {
  0%   { transform: translate3d(0, 0, 0) rotate(0deg) scale(1); }
  50%  { transform: translate3d(-2%, 3%, 0) rotate(2deg) scale(1.04); }
  100% { transform: translate3d(3%, -2%, 0) rotate(-1deg) scale(1.02); }
}

/* ---------- Reveal-on-scroll ---------- */
.reveal {
  opacity: 0; transform: translate3d(0, 22px, 0);
  transition: opacity var(--duration-reveal) var(--ease-emphasis),
              transform var(--duration-reveal) var(--ease-emphasis);
  will-change: opacity, transform;
}
.reveal.visible { opacity: 1; transform: none; }

/* ---------- Login ---------- */
.login-body { display: grid; place-items: center; }
.login-wrap { display: grid; place-items: center; min-height: 100dvh; width: 100%; padding: 1.5rem; }
.login-card {
  width: 100%; max-width: 430px; position: relative; z-index: 1;
  background: linear-gradient(180deg, oklch(32% 0.09 265 / 0.92), oklch(22% 0.08 260 / 0.92));
  border: 1px solid var(--border); border-radius: 18px;
  padding: 2.4rem 2.1rem 1.8rem;
  box-shadow: 0 30px 80px -30px rgba(0, 0, 0, 0.7);
}
.eyebrow { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.18em; color: var(--muted); margin: 0 0 1.4rem; }
.login-lock {
  width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center;
  background: oklch(55% 0.22 12 / 0.12); border: 1px solid oklch(55% 0.22 12 / 0.3); margin: 0 0 1.1rem;
}
.login-card h1 { font-size: 1.7rem; margin: 0 0 0.4rem; }
.login-card .sub { color: var(--muted); font-size: 0.95rem; margin: 0 0 1.5rem; }
.login-card form { display: flex; flex-direction: column; gap: 0.55rem; }
.login-card label { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--muted); }
.login-card input {
  width: 100%; padding: 0.85rem 1rem; font-size: 1rem; font-family: var(--font-body);
  color: var(--pearl); background: oklch(15% 0.06 260 / 0.6); border: 1px solid var(--border); border-radius: 11px;
}
.login-card input:focus { outline: 2px solid var(--magenta-bright); outline-offset: 1px; border-color: transparent; }
.login-card button {
  margin-top: 0.4rem; padding: 0.9rem 1rem; font-size: 1rem; font-weight: 600; font-family: var(--font-body);
  color: #fff; background: linear-gradient(180deg, var(--magenta-hot), oklch(45% 0.21 8)); border: 0; border-radius: 11px; cursor: pointer;
}
.login-card button:hover { filter: brightness(1.07); }
.login-card .err { color: var(--magenta-bright); font-size: 0.85rem; margin: 0.35rem 0 0; min-height: 1.05em; }
.login-card .foot { margin-top: 1.6rem; padding-top: 1.15rem; border-top: 1px solid var(--border); font-size: 0.72rem; color: var(--muted); }

/* ---------- Cockpit chrome ---------- */
.cockpit-body { display: block; }
.cockpit { min-height: 100dvh; display: flex; flex-direction: column; padding: clamp(1rem, 3vw, 2.2rem); }
.cockpit-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.4rem; }
.brand { display: flex; align-items: baseline; gap: 0.6rem; }
.brand-mark { color: var(--magenta-bright); font-size: 1.1rem; }
.brand-text { font-family: var(--font-display); font-weight: 500; font-size: 1.35rem; letter-spacing: -0.01em; }
.brand-sub { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.16em; color: var(--muted); }
.head-right { display: flex; align-items: center; gap: 1rem; }
.env-pill {
  font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--periwinkle); padding: 0.3rem 0.7rem; border: 1px solid var(--border); border-radius: var(--radius-pill);
  background: oklch(32% 0.09 265 / 0.5);
}
.logout { font-size: 0.82rem; color: var(--muted); }
.logout:hover { color: var(--magenta-bright); }

.client-switcher { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-bottom: 1.8rem; }
.tab {
  font-family: var(--font-body); font-size: 0.85rem; font-weight: 500; cursor: pointer;
  color: var(--periwinkle); background: oklch(32% 0.09 265 / 0.4); border: 1px solid var(--border);
  border-radius: var(--radius-pill); padding: 0.45rem 1.05rem; transition: all 160ms var(--ease-emphasis);
}
.tab:hover { color: var(--pearl); border-color: var(--magenta-soft); }
.tab-active { color: #fff; background: linear-gradient(180deg, var(--magenta-hot), oklch(45% 0.21 8)); border-color: transparent; }

.cockpit-main { flex: 1; }
.scaffold-note {
  max-width: 720px; background: oklch(32% 0.09 265 / 0.55); border: 1px solid var(--border);
  border-radius: var(--radius-card); padding: clamp(1.4rem, 4vw, 2.4rem);
  box-shadow: 0 24px 60px -34px rgba(0, 0, 0, 0.6);
}
.scaffold-note h1 { font-size: clamp(1.7rem, 3vw + 0.5rem, 2.4rem); }
.scaffold-note .lede { color: var(--pearl); font-size: 1.02rem; margin: 0 0 1.1rem; }
.scaffold-note .muted-note { color: var(--muted); font-size: 0.9rem; margin: 1.2rem 0 0; }
.phase-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.5rem; }
.phase-list li {
  font-size: 0.92rem; color: var(--periwinkle); padding: 0.6rem 0.9rem;
  background: oklch(15% 0.06 260 / 0.4); border: 1px solid var(--border); border-radius: 10px;
}
.phase-list li b { color: var(--magenta-bright); font-family: var(--font-mono); font-size: 0.82rem; margin-right: 0.5rem; }

.cockpit-foot { margin-top: 2rem; padding-top: 1.2rem; border-top: 1px solid var(--border); font-size: 0.72rem; color: var(--muted); letter-spacing: 0.02em; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
  .atmosphere::before { animation: none !important; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important; animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important; scroll-behavior: auto !important;
  }
}

/* ============================================================================
   P4 — data panels. AA: magenta-bright (#fd617f-class) ONLY for labels/accents;
   numerals ride periwinkle/pearl on the indigo-card fills. green-ok=fresh,
   amber=aging, magenta-bright=stale/broken (never raw --magenta-hot on text).
   ============================================================================ */
.client-switcher .tab { text-decoration: none; }

/* ---- alert banner ---- */
.alert-banner { margin: 0 0 1.4rem; display: grid; gap: 0.5rem; }
.alert-clear {
  display: flex; align-items: center; gap: 0.55rem; font-size: 0.86rem; color: var(--muted);
  padding: 0.7rem 1rem; border: 1px solid var(--border); border-radius: 11px; background: oklch(32% 0.09 265 / 0.4);
}
.ab-head { display: flex; align-items: center; gap: 0.55rem; font-weight: 600; color: var(--magenta-bright); font-size: 0.9rem; }
.ab-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--green-ok); box-shadow: 0 0 0 3px oklch(72% 0.15 155 / 0.18); }
.ab-dot-fire { background: var(--magenta-bright); box-shadow: 0 0 0 3px oklch(70% 0.19 12 / 0.2); animation: pulse 2s var(--ease-emphasis) infinite; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.45; } }
.alert-row {
  display: grid; grid-template-columns: auto auto auto 1fr; gap: 0.7rem; align-items: center;
  padding: 0.6rem 0.9rem; border-radius: 10px; font-size: 0.85rem;
  background: oklch(15% 0.06 260 / 0.5); border: 1px solid var(--border); border-left-width: 3px;
}
.alert-crit { border-left-color: var(--magenta-bright); }
.alert-warn { border-left-color: var(--amber); }
.alert-info { border-left-color: var(--azure-bright); }
.ab-sev { font-family: var(--font-mono); font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--magenta-bright); }
.alert-warn .ab-sev { color: var(--amber); }
.ab-rule { font-family: var(--font-mono); font-size: 0.78rem; color: var(--pearl); }
.ab-tenant { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--periwinkle); }
.ab-obs { color: var(--silver); font-size: 0.82rem; }

/* ---- KPI band ---- */
.kpi-band { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.9rem; margin: 0 0 1.6rem; }
.kpi-card {
  background: linear-gradient(180deg, oklch(32% 0.09 265 / 0.85), oklch(28% 0.10 265 / 0.85));
  border: 1px solid var(--border); border-radius: var(--radius-card); padding: 1.1rem 1.2rem;
  display: flex; flex-direction: column; gap: 0.3rem; box-shadow: 0 18px 44px -30px rgba(0,0,0,0.6);
}
.kpi-label { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.13em; color: var(--magenta-bright); }
.kpi-value { font-family: var(--font-display); font-weight: 500; font-size: 1.85rem; letter-spacing: -0.01em; color: var(--pearl); line-height: 1.1; }
.kpi-sub { font-size: 0.74rem; color: var(--periwinkle); }
.kpi-hero { grid-column: span 1; border-color: oklch(70% 0.19 12 / 0.35); }
.kpi-hero .kpi-value { font-size: 2.3rem; color: var(--pearl); }
.kpi-hero { background: linear-gradient(180deg, oklch(34% 0.11 300 / 0.9), oklch(28% 0.10 265 / 0.9)); }
.kpi-good .kpi-value { color: var(--green-ok); }
.kpi-bad .kpi-value { color: var(--magenta-bright); }

/* ---- generic panel ---- */
.panel {
  background: oklch(32% 0.09 265 / 0.5); border: 1px solid var(--border); border-radius: var(--radius-card);
  padding: 1.2rem 1.3rem; margin: 0 0 1.3rem; box-shadow: 0 18px 44px -34px rgba(0,0,0,0.5);
}
.panel-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 1.3rem; align-items: start; }
.panel-grid .panel { margin: 0; }
.panel-h { font-family: var(--font-display); font-size: 1.2rem; font-weight: 500; margin: 0 0 1rem; color: var(--pearl); display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.6rem; }
.panel-note { font-family: var(--font-body); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--periwinkle-soft); font-weight: 400; }
.panel-pending .pending-note { color: var(--muted); font-size: 0.88rem; margin: 0; }

/* ---- freshness chips ---- */
.fchip-strip { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.fchip {
  min-width: 116px; padding: 0.6rem 0.8rem; border-radius: 11px; display: grid; gap: 0.2rem;
  background: oklch(15% 0.06 260 / 0.5); border: 1px solid var(--border); border-top: 2px solid var(--periwinkle-soft);
}
.fchip-ok { border-top-color: var(--green-ok); }
.fchip-stale { border-top-color: var(--amber); }
.fchip-cred, .fchip-err { border-top-color: var(--magenta-bright); }
.fchip-src { font-family: var(--font-mono); font-size: 0.72rem; color: var(--pearl); }
.fchip-row { display: flex; justify-content: space-between; gap: 0.5rem; font-size: 0.72rem; }
.fchip-k { color: var(--magenta-bright); text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.62rem; align-self: center; }
.fchip-v { font-family: var(--font-mono); color: var(--periwinkle); }
.fchip-stale .fchip-v { color: var(--amber); }
.fchip-cred .fchip-v, .fchip-err .fchip-v { color: var(--magenta-bright); }

/* ---- tables (matrix + ledger) ---- */
.matrix, .ledger { width: 100%; border-collapse: collapse; font-size: 0.84rem; }
.matrix th, .ledger th { text-align: left; font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--magenta-bright); font-weight: 600; padding: 0.4rem 0.6rem; border-bottom: 1px solid var(--border); }
.matrix td, .ledger td { padding: 0.5rem 0.6rem; border-bottom: 1px solid oklch(72% 0.07 265 / 0.08); color: var(--silver); }
.ledger .n, .matrix .n, th.n { text-align: right; font-family: var(--font-mono); }
.fo-plat, .geo-term { font-family: var(--font-mono); font-size: 0.78rem; color: var(--periwinkle); }
.fo-cell, .geo-cell {
  display: inline-block; font-family: var(--font-mono); font-size: 0.72rem; padding: 0.18rem 0.55rem; border-radius: var(--radius-pill);
  border: 1px solid transparent;
}
.fo-live { color: var(--green-ok); background: oklch(72% 0.15 155 / 0.12); border-color: oklch(72% 0.15 155 / 0.3); }
.fo-broken { color: var(--magenta-bright); background: oklch(70% 0.19 12 / 0.12); border-color: oklch(70% 0.19 12 / 0.35); }
.fo-unconfigured { color: var(--periwinkle); background: oklch(72% 0.07 265 / 0.1); border-color: var(--border); }
.fo-idle, .fo-none, .geo-none { color: var(--muted); }
.rev-amt { font-family: var(--font-mono); color: var(--green-ok); font-weight: 600; }
.rev-corr { font-family: var(--font-mono); font-size: 0.74rem; color: var(--periwinkle-soft); }

/* ---- SEO ---- */
.seo-warn td { background: oklch(78% 0.13 75 / 0.06); }
.seo-flag { font-family: var(--font-mono); font-size: 0.68rem; color: var(--amber); padding: 0.15rem 0.5rem; border-radius: var(--radius-pill); border: 1px solid oklch(78% 0.13 75 / 0.35); }
.seo-okflag { font-size: 0.7rem; color: var(--green-ok); }

/* ---- GEO ---- */
.geo-cited { color: var(--green-ok); background: oklch(72% 0.15 155 / 0.12); border-color: oklch(72% 0.15 155 / 0.3); }
.geo-present { color: var(--azure-bright); background: oklch(62% 0.19 255 / 0.12); border-color: oklch(62% 0.19 255 / 0.3); }
.geo-absent { color: var(--muted); }

/* ---- self-health footer ---- */
.self-health { display: flex; flex-wrap: wrap; gap: 0.4rem 0.9rem; align-items: center; }
.self-health .sh-spacer { flex: 1; }
@media (max-width: 560px) { .alert-row { grid-template-columns: 1fr; gap: 0.3rem; } .self-health .sh-spacer { display: none; } }
