/* ============================================================================
   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.
   ========================================================================== */

/* Space Grotesk is self-hosted (woff2) instead of pulled from gstatic — removes a duplicate
   font download estate-wide. IBM Plex Sans + Mono (2026-07-15, SPEED lane) now follow the
   same pattern: this file's @import was fetching them a SECOND time on every page that
   already carries its own separate Google Fonts <link> for the same families (confirmed live:
   two fonts.googleapis.com/css2 requests + 4 duplicate gstatic woff2 fetches per pageload on
   80+ pages) — self-hosting here removes the @import's fetch entirely rather than reordering
   it. Sans is a variable font upstream (one file covers 300-700); Mono ships as 3 discrete
   static weights. Latin subset only, matching the existing Space Grotesk convention. */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/ibm-plex-sans-var.woff2?v=ps1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-400.woff2?v=pm1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-500.woff2?v=pm1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-600.woff2?v=pm1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/space-grotesk-latin-var.woff2?v=hf1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

: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','SG Fallback',system-ui,sans-serif;
  --reddenda-font-body:'IBM Plex Sans','PS Fallback',system-ui,-apple-system,'Segoe UI',sans-serif;
  --reddenda-font-mono:'IBM Plex Mono','PM Fallback',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 + LEFT-ALIGNED wordmark over tagline ----
   The R of "reddenda" sits directly above the H of "Healthcare". Tagline is shown at
   every breakpoint (mobile included). Text-based so it themes crisply (dark + light). */
.brand.rb-brand{ display:inline-flex; align-items:center; gap:11px; text-decoration:none; line-height:1; }
.rb-brand__mk{ width:42px; height:42px; flex:none; display:inline-block; }
.rb-brand__lock{ display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:4px; }
.rb-brand__word{ font-family:var(--reddenda-font-display,'Space Grotesk','SG Fallback'),system-ui,sans-serif; font-weight:700; font-size:23px; line-height:.92; letter-spacing:-.014em; color:#fff; }
.rb-brand__tag{ font-family:var(--reddenda-font-mono,'IBM Plex Mono','PM Fallback'),monospace; font-weight:500; font-size:9px; line-height:1; letter-spacing:.155em; text-transform:uppercase; color:rgba(255,255,255,.56); white-space:nowrap; }
/* legacy PNG lockup classes retired (kept inert in case any page still ships them) */
.rb-brand__tx{ display:none !important; }
@media(max-width:640px){
  .rb-brand__mk{ width:37px; height:37px; }
  .rb-brand__word{ font-size:20px; }
  .rb-brand__tag{ font-size:8px; letter-spacing:.12em; }
}
@media(max-width:360px){
  .rb-brand__mk{ width:34px; height:34px; }
  .rb-brand__word{ font-size:18px; }
  .rb-brand__tag{ font-size:7px; letter-spacing:.08em; }
}

/* ---- light/dark theme toggle (base = dark nav; light refinement in reddenda-light.css) ---- */
.rb-theme-toggle{ display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; flex:none;
  border-radius:10px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.14);
  color:rgba(255,255,255,.82); cursor:pointer; margin-right:6px; padding:0;
  transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease; }
.rb-theme-toggle:hover{ background:rgba(255,255,255,.10); border-color:rgba(255,255,255,.26); color:#fff; transform:translateY(-1px); }
.rb-theme-toggle:active{ transform:translateY(0); }
.rb-theme-toggle svg{ display:block; }
.rb-theme-toggle--labeled{ width:auto; min-width:0; padding:0 15px 0 12px; gap:8px; font-family:var(--reddenda-font-display,'Space Grotesk','SG Fallback'),sans-serif; font-weight:600; font-size:13px; }
.rb-theme-toggle--labeled span{ letter-spacing:.005em; }
.foot__theme{ display:flex; align-items:center; gap:12px; margin-top:26px; }
.foot__theme-lbl{ font-family:var(--reddenda-font-mono,'IBM Plex Mono','PM Fallback'),monospace; font-weight:500; font-size:10.5px; letter-spacing:.18em; text-transform:uppercase; color:rgba(255,255,255,.5); }
/* launchpad (mobile menu) theme row — the header toggle is hidden on phones, so the
   mobile menu carries its own reachable switch, placed at the TOP under the brand.
   grid-column:1/-1 is REQUIRED: .rb-lp__inner is a 2-col grid (links | feature rail);
   without spanning the full row this row would steal a grid cell and shove .rb-lp__grid
   into the narrow 300px rail, collapsing the whole menu to one column. */
/* Hidden on desktop (the header already carries a toggle); shown only on phones/tablets,
   where the header toggle is collapsed into the menu. grid-column:1/-1 keeps it from
   stealing a grid cell when it IS shown. */
.rb-lp__theme{ grid-column:1 / -1; display:none; align-items:center; gap:12px; margin:2px 0 18px; padding-bottom:18px; border-bottom:1px solid rgba(255,255,255,.10); }
@media (max-width:880px){ .rb-lp__theme{ display:flex; } }
.rb-lp__theme-lbl{ font-family:var(--reddenda-font-mono,'IBM Plex Mono','PM Fallback'),monospace; font-weight:500; font-size:10.5px; letter-spacing:.18em; text-transform:uppercase; color:rgba(255,255,255,.5); }
/* tighter top padding so the menu content starts higher (more groups visible without scroll) */
.rb-lp__inner{ padding-top:clamp(64px,7vh,86px); }
@media(max-width:560px){ .rb-theme-toggle{ width:36px; height:36px; margin-right:4px; } }

@media(prefers-reduced-motion:reduce){ .rdda-grad-text,.rdda-grad-bar{ animation:none; } .rb-theme-toggle{ transition: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','PM Fallback',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','PM Fallback',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','SG Fallback',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','PS Fallback',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','PM Fallback',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','SG Fallback',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','PS Fallback',system-ui,sans-serif; color:#9aa6c2; }
.rb-lp__feat-s{ margin:0 0 20px; font:500 11.5px/1.5 'IBM Plex Mono','PM Fallback',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','PS Fallback',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','PS Fallback',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; } }
