/* ============================================================================
   REDDENDA — central brand layer (design system, single source of truth).
   Loaded LAST on every surface (injected by global-nav.js + linked on app/ext)
   so it wins the cascade. ADDITIVE + token-level. Built for the company we are
   BECOMING — infrastructure intelligence, not beige medical software.

   HARD PROTECT (never referenced/altered here, so they remain byte-for-byte):
     the Fable-5 moving gradients (.flow-text, .ros-shimmer, scroll-progress,
     .sw-grad, walk-cta), the cosmos dark surfaces, the transform/opacity 60fps
     motion engine + its easing. This layer only HARMONIZES with them (the new
     blue anchor sits under the existing cyan→violet, making them more on-brand).

   Research+room-backed (peer deep-research + 7-seat brand room + 25-seat vote):
     avoid Inter + Grilli (GT America/Standard) + teal-as-primary (Turquoise owns
     it). Own: dark cosmos + blue→cyan→green gradient + mono numerals.
   ========================================================================== */

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

:root{
  /* ---- Reddenda anchor palette (straight from the logo) ---- */
  --reddenda-blue:#0072FF;            --reddenda-blue-soft:rgba(0,114,255,.14);
  --reddenda-cyan:#00E5FF;            --reddenda-cyan-soft:rgba(0,229,255,.12);
  --reddenda-green:#62FF8F;           --reddenda-green-soft:rgba(98,255,143,.16);
  --reddenda-grad:linear-gradient(100deg,#ffffff 0%,#00E5FF 48%,#a78bff 100%); /* interim: the cool header blend (white→cyan→violet) — room to finalize WHERE it applies */
  --reddenda-grad-soft:linear-gradient(100deg,rgba(0,114,255,.16),rgba(0,215,255,.14) 50%,rgba(98,255,143,.16));
  /* ---- semantic data-only (desaturated; meaning, not candy) ---- */
  --reddenda-red:#DC2F3D;             --reddenda-amber:#B45309;
  /* ---- type system (Space Grotesk display · IBM Plex Sans UI · IBM Plex Mono numerals) ---- */
  --reddenda-font-display:'Space Grotesk',system-ui,sans-serif;
  --reddenda-font-body:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --reddenda-font-mono:'IBM Plex Mono',ui-monospace,'SF Mono',monospace;

  /* ---- RETIRE decorative warm tokens → the SINGLE cyan accent.
     Premium-room verdict (w5dm5hjst): WHITE is the brand, CYAN #00E5FF is the one
     chromatic accent, royal blue #0072FF is RETIRED from UI. Every estate file that
     uses var(--ember)/var(--gold) now resolves to cyan — NOT the rejected royal
     blue (that remap was the blue leak David saw everywhere). Inline warm hexes are
     caught by the file sweep; this fixes every token-driven warm accent for free. ---- */
  --ember:var(--reddenda-cyan);
  --ember-2:var(--reddenda-cyan);
  --gold:var(--reddenda-cyan);
  --amber:var(--reddenda-amber);     /* keep amber semantic (data-only), desaturated */
}

/* ---- type application (consolidation; Fable-5 animations unaffected) ---- */
body{ font-family:var(--reddenda-font-body); }
h1,h2,h3,.display,.hero h1,[class*="headline"],[class*="-h1"],[class*="-title"]{ font-family:var(--reddenda-font-display); }
code,pre,kbd,samp,.mono{ font-family:var(--reddenda-font-mono); }

/* monospace tabular numerals = the "this is infrastructure" precision signal.
   Applied to money / rates / scores / NPI / CPT carriers across the estate. */
.num,.rate,.dollars,.score,.npi,.cpt,[data-num],[class*="-num"],[class*="-rate"],[class*="-dollar"],[class*="-score"]{
  font-family:var(--reddenda-font-mono); font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1;
}

/* ---- brand gradient utility (for NEW Reddenda accents only — NOT the Fable-5 classes) ---- */
.rdda-grad-text{
  background:var(--reddenda-grad); -webkit-background-clip:text; background-clip:text; color:transparent;
}
.rdda-grad-bar{ background:var(--reddenda-grad); }

/* ---- bespoke icon system base (replaces all emoji; one 24/1.5 monoline spec) ---- */
.rdda-ico{ width:1.15em; height:1.15em; display:inline-block; vertical-align:-0.15em; flex:none;
  stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; fill:none; }
.rdda-ico--grad{ stroke:url(#rddaGrad); }

/* ---- nav brand lockup: living swarm mark + wordmark (+ subtitle on wider screens) ---- */
.brand.rb-brand{ display:inline-flex; align-items:center; gap:9px; text-decoration:none; line-height:0; }
.rb-brand__mk{ width:40px; height:40px; flex:none; display:inline-block; margin-right:1px; }
.rb-brand__tx{ display:block; width:auto; }
.rb-brand__tx--full{ height:34px; }
.rb-brand__tx--word{ height:24px; display:none; }
@media(max-width:640px){
  .rb-brand__tx--full{ display:none; }
  .rb-brand__tx--word{ display:block; height:23px; }
  .rb-brand__mk{ width:34px; height:34px; }
}

@media(prefers-reduced-motion:reduce){ .rdda-grad-text,.rdda-grad-bar{ animation:none; } }

/* ---- universal mobile safety: no horizontal scroll on small screens ---- */
@media(max-width:600px){
  /* clip decorative full-bleed/minor overflow at the page box (no scroll container => sticky still works) */
  html,body{ overflow-x:clip; max-width:100%; }
  /* wide data tables scroll inside their own box instead of pushing the page */
  table{ display:block; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  /* long unbreakable tokens (NPI/CPT/codes/$) wrap instead of forcing overflow */
  .num,.npi,.cpt,.rate,.score,.dollars,[class*="-num"],[class*="-rate"],[class*="-score"],code,kbd,samp{ overflow-wrap:anywhere; word-break:break-word; }
}

/* ============================================================================
   REDDENDA launchPad (estate-wide) — styles for the standalone launchpad.js used
   on marketing-nav / inline cc-nav / app-topbar pages. (global-nav.css carries an
   identical copy for its own pages; duplicate-identical rules are harmless.)
   ========================================================================== */
.rb-navtrig{ display:inline-flex; align-items:center; gap:9px; background:transparent;
  border:1px solid rgba(255,255,255,.16); color:#eef2fb; border-radius:10px; padding:9px 14px;
  cursor:pointer; font:600 12.5px/1 'IBM Plex Mono',ui-monospace,monospace; letter-spacing:.08em;
  text-transform:uppercase; transition:border-color .2s,color .2s,background .2s; flex:0 0 auto; }
.rb-navtrig--injected{ margin-left:auto; }
.rb-navtrig:hover{ border-color:rgba(0,229,255,.55); color:#00E5FF; background:rgba(0,229,255,.06); }
.rb-navtrig:focus-visible{ outline:2px solid #00E5FF; outline-offset:2px; }
.rb-navtrig__bars{ position:relative; width:16px; height:11px; display:block; flex:none; }
.rb-navtrig__bars i{ position:absolute; left:0; right:0; height:1.6px; background:currentColor; border-radius:2px; transition:transform .25s,opacity .2s; }
.rb-navtrig__bars i:nth-child(1){ top:0; } .rb-navtrig__bars i:nth-child(2){ top:50%; transform:translateY(-50%); } .rb-navtrig__bars i:nth-child(3){ bottom:0; }
.rb-navtrig[aria-expanded="true"] .rb-navtrig__bars i:nth-child(1){ top:50%; transform:translateY(-50%) rotate(45deg); }
.rb-navtrig[aria-expanded="true"] .rb-navtrig__bars i:nth-child(2){ opacity:0; }
.rb-navtrig[aria-expanded="true"] .rb-navtrig__bars i:nth-child(3){ bottom:auto; top:50%; transform:translateY(-50%) rotate(-45deg); }
@media(max-width:520px){ .rb-navtrig__lbl{ display:none; } .rb-navtrig{ padding:10px; } }
/* migrate marketing hover-links to the launchPad (Palantir style); keep app .topbar nav */
html.rb-lp-ready .cc-nav__links{ display:none !important; }

html.rb-lp-open{ overflow:hidden; }
.rb-lp{ position:fixed; inset:0; z-index:2147483000; background:rgba(4,6,11,.93);
  -webkit-backdrop-filter:blur(16px) saturate(125%); backdrop-filter:blur(16px) saturate(125%);
  opacity:0; transition:opacity .36s cubic-bezier(.16,1,.3,1); overscroll-behavior:contain; }
.rb-lp.is-open{ opacity:1; }
html.low-perf .rb-lp{ -webkit-backdrop-filter:none; backdrop-filter:none; background:rgba(4,6,11,.985); }
.rb-lp__close{ position:absolute; top:22px; right:clamp(18px,5vw,56px); z-index:2; width:42px; height:42px;
  display:grid; place-items:center; background:transparent; border:1px solid rgba(255,255,255,.14);
  border-radius:10px; color:#9aa6c2; font-size:15px; cursor:pointer; transition:color .2s,border-color .2s; }
.rb-lp__close:hover{ color:#00E5FF; border-color:rgba(0,229,255,.5); }
.rb-lp__inner{ max-width:1280px; margin:0 auto; box-sizing:border-box; height:100%; overflow:auto;
  padding:clamp(84px,11vh,118px) clamp(20px,5vw,64px) 64px;
  display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:clamp(28px,4vw,60px); align-content:start; }
.rb-lp__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(188px,1fr)); gap:30px 36px; align-content:start; }
.rb-lp__gt{ margin:0 0 14px; padding-bottom:11px; border-bottom:1px solid rgba(255,255,255,.09);
  font:600 11px/1 'IBM Plex Mono',ui-monospace,monospace; letter-spacing:.16em; text-transform:uppercase; color:#00E5FF; }
.rb-lp__item{ display:block; text-decoration:none; padding:9px 0; opacity:0; transform:translateY(10px); }
.rb-lp.is-open .rb-lp__item{ animation:rbLpIn .52s cubic-bezier(.16,1,.3,1) forwards; animation-delay:calc(var(--i,0)*.022s + .06s); }
.rb-lp__item b{ display:flex; align-items:center; gap:8px; font:500 16px/1.2 'Space Grotesk',system-ui,sans-serif; color:#eef2fb; letter-spacing:-.01em; transition:color .18s; }
.rb-lp__item small{ display:block; margin-top:3px; font:400 12.5px/1.35 'IBM Plex Sans',system-ui,sans-serif; color:#8a97ad; transition:color .18s; }
.rb-lp__item:hover b,.rb-lp__item:focus-visible b{ color:#00E5FF; } .rb-lp__item:hover small{ color:#c3ccdb; }
.rb-lp__item[aria-current="page"] b{ color:#00E5FF; }
.rb-lp__tag{ font:600 9px/1 'IBM Plex Mono',monospace; letter-spacing:.1em; text-transform:uppercase; color:#00E5FF; border:1px solid rgba(0,229,255,.4); border-radius:999px; padding:2px 6px; }
.rb-lp__feat{ align-self:start; border-left:1px solid rgba(255,255,255,.09); padding-left:clamp(22px,3vw,40px); opacity:0; transform:translateY(10px); }
.rb-lp.is-open .rb-lp__feat{ animation:rbLpIn .6s cubic-bezier(.16,1,.3,1) .12s forwards; }
.rb-lp__feat-mk{ width:74px; height:74px; display:block; margin-bottom:18px; }
.rb-lp__feat-t{ font:600 22px/1 'Space Grotesk',system-ui,sans-serif; color:#eef2fb; letter-spacing:-.01em; }
.rb-lp__feat-d{ margin:11px 0 14px; font:400 13.5px/1.55 'IBM Plex Sans',system-ui,sans-serif; color:#9aa6c2; }
.rb-lp__feat-s{ margin:0 0 20px; font:500 11.5px/1.5 'IBM Plex Mono',monospace; letter-spacing:.02em; color:#00E5FF; }
.rb-lp__feat-cta{ display:block; text-align:center; text-decoration:none; background:#fff; color:#02121a; font:600 14px/1 'IBM Plex Sans',system-ui,sans-serif; padding:13px 16px; border-radius:11px; transition:transform .18s,box-shadow .18s; }
.rb-lp__feat-cta:hover{ transform:translateY(-1px); box-shadow:0 12px 32px -14px rgba(0,229,255,.55); }
.rb-lp__feat-cta2{ display:block; text-align:center; text-decoration:none; margin-top:10px; border:1px solid rgba(255,255,255,.16); color:#eef2fb; padding:12px 16px; border-radius:11px; font:600 13px/1 'IBM Plex Sans',system-ui,sans-serif; transition:border-color .2s,color .2s; }
.rb-lp__feat-cta2:hover{ border-color:rgba(0,229,255,.5); color:#00E5FF; }
@keyframes rbLpIn{ to{ opacity:1; transform:none; } }
@media(max-width:880px){ .rb-lp__inner{ grid-template-columns:1fr; gap:30px; padding-top:86px; } .rb-lp__feat{ border-left:none; border-top:1px solid rgba(255,255,255,.09); padding-left:0; padding-top:26px; } .rb-lp__feat-mk{ width:60px; height:60px; } }
@media(prefers-reduced-motion:reduce){ .rb-lp,.rb-lp.is-open .rb-lp__item,.rb-lp.is-open .rb-lp__feat{ transition:none; animation:none !important; opacity:1 !important; transform:none !important; } }
