/* black.solutions — design tokens
   Derived from the Midnight Command Center system, customized.
   Display font swap: Space Grotesk (substitute for Esbuild). Mono: JetBrains Mono. */

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

:root {
  /* Core palette */
  --color-pitch-black:     #090a0c;
  --color-charcoal-grey:   #111111;
  --color-shadow-ink:      #303236;
  --color-ash-cloud:       #4a4b50;
  --color-storm-grey:      #61656b;
  --color-battleship-grey: #95979e;
  --color-silver-mist:     #a9a9aa;
  --color-cloud-burst:     #d1d1d1;
  --color-canvas-white:    #ffffff;
  --color-electric-blue:   #5683da;
  --color-sunset-orange:   #ff8964;

  /* Brand red — from the BLACK/solutions slash */
  --color-brand-red:       #e92128;
  --color-brand-red-soft:  #ff3b41;

  /* Surfaces */
  --bg:           var(--color-pitch-black);
  --bg-elev:      var(--color-charcoal-grey);
  --border:       var(--color-shadow-ink);
  --border-soft:  #1a1c20;
  --text:         var(--color-canvas-white);
  --text-muted:   var(--color-battleship-grey);
  --text-faint:   var(--color-storm-grey);
  --accent:       var(--color-brand-red);
  --accent-blue:  var(--color-electric-blue);
  --accent-warm:  var(--color-sunset-orange);

  /* Fonts */
  --font-display: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif;
  --font-ui:      'Inter', ui-sans-serif, system-ui, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Scale */
  --text-caption:    10px;
  --text-body-lg:    14px;
  --text-heading-sm: 22px;
  --text-heading:    28px;
  --text-heading-lg: 32px;
  --text-display:    80px;

  /* Radius */
  --radius-inputs:  4px;
  --radius-cards:   12px;
  --radius-lists:   30px;
  --radius-pill:    9999px;

  /* Shadows */
  --shadow-sm: rgba(0,0,0,0.15) 0px 4px 6px 0px;
  --shadow-md: rgba(0,0,0,0.35) 0px 4px 16px 0px;
  --shadow-xl: rgba(0,0,0,0.50) 0px 6px 25px 0px;
  --glow-subtle: rgba(255,255,255,0.4) 0px 0px 0px 6px;
  --glow-blue: 0 0 80px rgba(86,131,218,0.35), 0 0 240px rgba(86,131,218,0.18);
  --glow-warm: 0 0 80px rgba(255,137,100,0.35), 0 0 240px rgba(255,137,100,0.18);
  --glow-red:  0 0 80px rgba(233,33,40,0.35), 0 0 240px rgba(233,33,40,0.16);
}

/* Base */
.bs-root {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-ui);
  font-feature-settings: 'ss01', 'cv11';
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* Logo — < BLACK / solutions > */
.bs-logo {
  display: inline-flex;
  align-items: center;
  gap: 0;
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 800;
  font-size: 18px;
  letter-spacing: -0.02em;
  color: var(--text);
  text-decoration: none;
  line-height: 1;
  white-space: nowrap;
}
.bs-logo .lo-br {
  font-weight: 500;
  color: var(--color-silver-mist);
  margin: 0 6px;
  font-size: 0.95em;
  transform: translateY(-1px);
}
.bs-logo .lo-black {
  font-weight: 800;
  color: var(--text);
  letter-spacing: -0.01em;
}
.bs-logo .lo-slash {
  color: var(--color-brand-red);
  font-weight: 500;
  margin: 0 2px;
  text-shadow: 0 0 12px rgba(233,33,40,0.5);
}
.bs-logo .lo-solutions {
  font-weight: 300;
  color: var(--color-silver-mist);
  letter-spacing: -0.005em;
}

/* Smaller variant for nav */
.bs-logo.sm { font-size: 18px; }
.bs-logo.sm .lo-br { font-size: 0.9em; margin: 0 4px; }

/* Nav */
.bs-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 22px 40px;
  border-bottom: 1px solid var(--border-soft);
}
.bs-nav-links {
  display: flex;
  gap: 4px;
}
.bs-nav-links a {
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--color-battleship-grey);
  text-decoration: none;
  padding: 8px 12px;
  border-radius: var(--radius-inputs);
  transition: color .15s ease;
  white-space: nowrap;
}
.bs-nav-links a:hover { color: var(--text); }
.bs-nav-cta {
  display: inline-flex; align-items: center; gap: 8px;
}

/* Buttons */
.btn {
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: -0.01em;
  cursor: pointer;
  border: 0;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  transition: transform .15s ease, background .15s ease, color .15s ease;
}
.btn-primary {
  background: var(--accent);
  color: var(--text);
  border-radius: var(--radius-inputs);
  padding: 10px 16px;
}
.btn-primary:hover { background: var(--color-brand-red-soft); }
.btn-ghost {
  background: transparent;
  color: var(--text);
  padding: 10px 14px;
  border-radius: var(--radius-inputs);
}
.btn-ghost:hover { background: rgba(255,255,255,0.04); }
.btn-pill {
  background: var(--color-cloud-burst);
  color: var(--color-shadow-ink);
  border-radius: var(--radius-pill);
  padding: 8px 22px;
  font-weight: 600;
}
.btn-pill-outline {
  background: transparent;
  color: var(--text);
  border: 1px solid var(--color-shadow-ink);
  border-radius: var(--radius-pill);
  padding: 8px 18px;
}
.btn-pill-outline:hover { border-color: var(--color-ash-cloud); }

/* Tag/chip */
.chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border);
  background: rgba(17,17,17,0.6);
  color: var(--color-silver-mist);
  font-family: var(--font-ui);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: -0.01em;
  white-space: nowrap;
}
.chip .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 8px var(--accent);
}
.chip .dot.blue {
  background: var(--accent-blue);
  box-shadow: 0 0 8px var(--accent-blue);
}
/* Denser variant for placement over noisy/lit backgrounds */
.chip.solid { background: rgba(17,17,17,0.85); }

/* Mono fineprint strip — section ledger rows top/bottom of each section.
   Defaults sit on storm-grey; override .upper for caps, inline letter-spacing
   when the rhythm of the section calls for wider tracking. */
.meta {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--color-storm-grey);
  letter-spacing: 0.04em;
  white-space: nowrap;
}
.meta.upper { text-transform: uppercase; }

/* Caps mono label — used by the discipline callouts where the color is
   per-instance (set inline). Keep typography here, color out there. */
.label-mono {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1;
}
.label-mono.sm { font-size: 10px; }

/* Display heading */
.h-display {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--text-display);
  line-height: 0.86;
  letter-spacing: -0.045em;
  color: var(--text);
}
.h-display em {
  font-style: normal;
  color: var(--color-battleship-grey);
}
.h-heading-lg {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 32px;
  line-height: 0.95;
  letter-spacing: -0.035em;
}
.body-lg {
  font-family: var(--font-ui);
  font-size: 17px;
  line-height: 1.5;
  letter-spacing: -0.012em;
  color: var(--text-muted);
  font-weight: 400;
}
.eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-battleship-grey);
}

/* Glow utilities */
.glow-beam-red {
  position: absolute;
  width: 900px; height: 900px;
  border-radius: 50%;
  background: radial-gradient(circle at center, rgba(233,33,40,0.32) 0%, rgba(233,33,40,0.07) 40%, transparent 70%);
  filter: blur(40px);
  pointer-events: none;
}
.glow-beam-blue {
  position: absolute;
  width: 900px; height: 900px;
  border-radius: 50%;
  background: radial-gradient(circle at center, rgba(86,131,218,0.30) 0%, rgba(86,131,218,0.06) 40%, transparent 70%);
  filter: blur(40px);
  pointer-events: none;
}
.glow-beam-warm {
  position: absolute;
  width: 700px; height: 700px;
  border-radius: 50%;
  background: radial-gradient(circle at center, rgba(255,137,100,0.28) 0%, rgba(255,137,100,0.05) 45%, transparent 70%);
  filter: blur(40px);
  pointer-events: none;
}

/* Grid background */
.grid-bg {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(ellipse at center, black 0%, transparent 80%);
  pointer-events: none;
}

/* Card */
.card {
  background: var(--bg-elev);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-cards);
  padding: 16px;
}

/* Status dot */
.status-dot {
  width: 8px; height: 8px; border-radius: 50%;
  display: inline-block;
}
.status-dot.live { background: #7cf2a0; box-shadow: 0 0 8px rgba(124,242,160,0.6); }
.status-dot.warm { background: var(--accent-warm); box-shadow: 0 0 8px rgba(255,137,100,0.6); }
.status-dot.blue { background: var(--accent-blue); box-shadow: 0 0 8px rgba(86,131,218,0.6); }
.status-dot.red  { background: var(--accent); box-shadow: 0 0 8px rgba(233,33,40,0.7); }

/* ─── Prism · smoke beam ─────────────────────────── */
/* The actual smoke distortion is driven by SVG <feTurbulence> filters
   (defined inline in hero-prism.jsx). These keyframes layer a slow,
   organic breath on top — opacity rising and falling as the cloud
   inhales and exhales. Each layer breathes at a different rate so
   nothing repeats visibly. */
@keyframes prism-breathe-outer {
  0%, 100% { opacity: 0.55; transform: scale(1)    translateY(0);    }
  50%      { opacity: 0.95; transform: scale(1.06) translateY(-4px); }
}
@keyframes prism-breathe-mid {
  0%, 100% { opacity: 0.78; transform: scale(1);    }
  50%      { opacity: 1.00; transform: scale(1.02); }
}
@keyframes prism-breathe-inner {
  0%, 100% { opacity: 0.80; }
  50%      { opacity: 1.00; }
}

.prism-smoke-outer {
  transform-origin: center;
  animation: prism-breathe-outer 11s ease-in-out infinite;
}
.prism-smoke-mid {
  transform-origin: center;
  animation: prism-breathe-mid 7s ease-in-out infinite;
}
.prism-smoke-inner {
  animation: prism-breathe-inner 4.5s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
  .prism-smoke-outer, .prism-smoke-mid, .prism-smoke-inner {
    animation: none !important;
  }
}

/* Caret */
.caret {
  display: inline-block;
  width: 9px;
  height: 1.05em;
  background: var(--accent);
  vertical-align: -2px;
  margin-left: 4px;
  animation: caret-blink 1.1s steps(2) infinite;
}
@keyframes caret-blink {
  50% { opacity: 0; }
}
