:root{
  --bg:#09090b;
  --sidebar:#0c0c0e;
  --surface:#111113;
  --surface2:#18181b;
  --surface3:#1c1c1f;
  --border:rgba(255,255,255,0.06);
  --border2:rgba(255,255,255,0.10);
  --border3:rgba(255,255,255,0.15);
  --accent:#3b82f6;
  --accent-dim:rgba(59,130,246,0.10);
  --green:#22c55e;
  --green-dim:rgba(34,197,94,0.10);
  --red:#ef4444;
  --red-dim:rgba(239,68,68,0.10);
  --amber:#f59e0b;
  --amber-dim:rgba(245,158,11,0.10);
  --purple:#a78bfa;
  --purple-dim:rgba(167,139,250,0.10);
  --text:#f4f4f5;
  --text2:#a1a1aa;
  --text3:#9a9aa4;
  --text4:#82828c;
  --font:'Inter',system-ui,sans-serif;
  --mono:'JetBrains Mono',monospace;
  --r:3px;

  /* ── Cinematic layer — 2026-07-23: recalibrated again, this time deliberately TOWARD a
     near-future biotech-research-lab feeling (glowing instrumentation, bioluminescent
     accents, a sense of something actively running) — reversing the earlier "cold
     institutional, no purple, low glow" pass. Purple/violet is back in play as a second
     bioluminescent accent (GFP/synthetic-biology tagging reads as blue-cyan-violet, not
     single-hue), glow intensities raised, motion given more visible life. Depth/blur
     mechanics are unchanged — only the intensity and palette moved. ── */
  --glass-bg:rgba(14,15,18,0.55);
  --glass-bg-strong:rgba(14,15,18,0.8);
  --glass-border:rgba(255,255,255,0.08);
  --glass-blur:20px;
  --ion-blue:#6ea8ff;
  --ion-cyan:#5fe8df;
  --ion-violet:#b39dff;
  --glow-blue:rgba(110,168,255,0.5);
  --glow-blue-soft:rgba(110,168,255,0.22);
  --glow-cyan-soft:rgba(95,232,223,0.18);
  --glow-violet-soft:rgba(167,139,250,0.2);
  --depth-1:0 1px 2px rgba(0,0,0,0.4), 0 8px 24px -8px rgba(0,0,0,0.55);
  --depth-2:0 4px 12px rgba(0,0,0,0.35), 0 24px 60px -20px rgba(0,0,0,0.65);
  --depth-glow:0 4px 24px -6px var(--glow-blue-soft), 0 24px 60px -24px rgba(0,0,0,0.7);
  --ease-cinematic:cubic-bezier(.16,.84,.44,1);
  --dur-float:17s;
  --dur-orb:8.5s;
}


*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased;}
::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.08);border-radius:2px;}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.14);}

/* ── SHELL ── */
body{display:flex;}
.skip-link{position:fixed;left:12px;top:10px;z-index:10000;transform:translateY(-160%);background:var(--text);color:var(--bg);padding:10px 14px;border-radius:6px;font-weight:700;text-decoration:none;}
.skip-link:focus{transform:translateY(0);}
.sidebar{
  width:224px;flex-shrink:0;background:var(--sidebar);
  border-right:1px solid var(--border);
  display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100dvh;
  position:relative;
}
/* Faint, near-static instrument-field texture — the one place the "living environment" extends
   beyond the hero, kept subtle enough not to compete with nav legibility. */
.sidebar::before{
  content:'';position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background:
    radial-gradient(1px 1px at 15% 12%, rgba(255,255,255,.45), transparent),
    radial-gradient(1px 1px at 70% 8%, rgba(255,255,255,.3), transparent),
    radial-gradient(1.2px 1.2px at 40% 30%, rgba(255,255,255,.35), transparent),
    radial-gradient(1px 1px at 85% 45%, rgba(255,255,255,.28), transparent),
    radial-gradient(1.3px 1.3px at 25% 60%, rgba(255,255,255,.35), transparent),
    radial-gradient(1px 1px at 60% 72%, rgba(255,255,255,.28), transparent),
    radial-gradient(1.2px 1.2px at 90% 85%, rgba(255,255,255,.32), transparent),
    radial-gradient(1px 1px at 10% 92%, rgba(255,255,255,.28), transparent),
    radial-gradient(240px 240px at 25% 10%, var(--glow-blue-soft), transparent 72%);
  animation:orion-field-drift 100s linear infinite;
}
.sidebar>*{position:relative;z-index:1;}
@keyframes orion-field-drift{
  0%{background-position:0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0;}
  100%{background-position:0 -60px,0 -60px,0 -60px,0 -60px,0 -60px,0 -60px,0 -60px,0 -60px,0 0;}
}
.main{flex:1;display:flex;flex-direction:column;height:100vh;overflow:hidden;min-width:0;}
.content{flex:1;overflow-y:auto;min-height:0;}
.view{display:none;height:100%;}
.view.active{display:flex;flex-direction:column;}
/* Module travel — switching sidebar destinations reads as moving between intelligence
   modules, not a page reloading. Entrance-only (the outgoing view is simply hidden, which
   is imperceptible next to the incoming one animating in) so this never adds a frame of
   delay to the switch itself. */
.view.active.view-enter{animation:orion-module-enter .38s var(--ease-cinematic) both;}
@keyframes orion-module-enter{
  from{opacity:0;transform:translateY(6px) scale(.992);filter:blur(2px);}
  to{opacity:1;transform:translateY(0) scale(1);filter:blur(0);}
}
@media(prefers-reduced-motion:reduce){.view.active.view-enter{animation:none;}}

/* ── SIDEBAR ── */
.sb-head{min-height:0;}
.sb-logo{
  padding:13px 14px 11px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:9px;
}
.logo-mark{
  width:26px;height:26px;background:var(--accent);border-radius:4px;
  display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:700;color:#fff;flex-shrink:0;
}
.logo-name{font-size:13px;font-weight:600;letter-spacing:-0.2px;}
.logo-sub{font-size:9px;color:var(--text4);margin-top:1px;font-family:var(--mono);}
.sb-new{
  margin:8px 10px 4px;padding:6px 10px;
  background:var(--accent-dim);border:1px solid rgba(59,130,246,0.18);
  border-radius:var(--r);color:var(--accent);font-size:11.5px;font-weight:500;
  cursor:pointer;display:flex;align-items:center;gap:6px;
  font-family:var(--font);transition:background .12s;
}
.sb-new:hover{background:rgba(59,130,246,0.15);}
.sb-new-wrap{padding:7px 10px 2px;}
.sb-scroll{min-height:0;overflow-y:auto;padding:8px 10px;}
.sb-label{
  font-size:8.5px;font-weight:600;letter-spacing:0.7px;color:var(--text4);
  text-transform:uppercase;padding:0 6px;margin:10px 0 4px;
  font-family:var(--mono);
}
.sb-nav-group{margin-top:14px;}
.sb-nav-group>summary{
  display:flex;align-items:center;justify-content:space-between;gap:6px;
  padding:6px;color:var(--text4);cursor:pointer;list-style:none;
  font-family:var(--mono);font-size:8.5px;font-weight:600;letter-spacing:.7px;
  text-transform:uppercase;border-radius:5px;transition:background .12s,color .12s;
}
.sb-nav-group>summary::-webkit-details-marker{display:none;}
.sb-nav-group>summary::before{content:'▸';font-size:9px;transition:transform .12s;}
.sb-nav-group[open]>summary::before{transform:rotate(90deg);}
.sb-nav-group>summary:hover{background:var(--surface2);color:var(--text2);}
.sb-nav-group>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.sb-nav-group>summary>span:first-of-type{flex:1;}
.sb-nav-count{font-size:8px;letter-spacing:.2px;color:var(--text4);text-transform:none;}
.sb-nav-group-items{padding-top:2px;}
.experimental-nav-note{
  margin:2px 6px 6px;padding:6px 7px;border-left:2px solid var(--amber);
  color:var(--text4);font:8.5px/1.4 var(--mono);
}
.sb-item{
  display:flex;align-items:center;gap:7px;padding:5px 8px;
  border-radius:4px;font-size:12px;color:var(--text3);cursor:pointer;
  transition:color .1s,background .1s;text-decoration:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  user-select:none;width:100%;border:0;background:transparent;text-align:left;font-family:var(--font);
}
/* Wraps a nav item's icon+label once capabilities.js's surfaceBadgeNode() appends a status
   badge (BETA · LIVE DATA, MIXED SOURCES, PILOT ONLY, ...) — without this, .sb-item's own
   ellipsis has no single text node to truncate, so a long label simply clips straight through
   the badge instead of the label (e.g. "MIXED SOURCES" rendering as "MIXED SOUR"). Giving the
   label its own shrinkable, ellipsized box means the badge (flex-shrink:0) always stays intact. */
.sb-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sb-item:hover{background:rgba(255,255,255,0.04);color:var(--text2);}
.sb-item:focus-visible,.sb-new:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.sb-item.active{background:var(--accent-dim);color:var(--accent);}
.sb-icon{font-size:12px;width:15px;text-align:center;flex-shrink:0;font-style:normal;}
/* Sidebar-level heads-up for views whose mounted content is demo-only today (no live backend
   endpoint exists yet — see gm-demo-flag inside each view for the full explanation). Without
   this, a user only discovers that after clicking in and the demo content finishes loading;
   this puts the same fact one glance earlier, before the click. */
.sb-beta-tag{
  margin-left:auto;flex-shrink:0;font-family:var(--mono);font-size:8px;font-weight:700;
  letter-spacing:.4px;color:var(--amber);background:rgba(245,158,11,0.12);
  border:1px solid rgba(245,158,11,0.3);border-radius:3px;padding:1px 5px;
}
.sb-watchlist-row{display:flex;align-items:center;border-radius:4px;}
.sb-watchlist-open{min-width:0;flex:1;}
.sb-watchlist-label{overflow:hidden;text-overflow:ellipsis;}
.sb-item-del{margin-left:auto;font-size:10px;color:var(--text4);opacity:0;transition:opacity .1s;cursor:pointer;padding:4px 6px;flex-shrink:0;border:0;background:transparent;border-radius:4px;}
.sb-watchlist-row:hover .sb-item-del,.sb-item-del:focus-visible{opacity:1;}
.sb-item-del:hover{color:var(--red);}
.sb-item-del:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.upgrade-tier{color:inherit;text-decoration:none;}
button.cal-card,button.cal-pill,button.cal-more,button.fdd-sec-hdr,button.fdd-back,
button.alert-chip,button.gm-wt-pred-chip,button.gm-wt-score-chip,button.tl-entity-card,
button.tl-tl-hdr,button.ic-step-card,button.onb-upgrade-hint,
button.countdown-row,button.pm-row{
  font:inherit;color:inherit;text-align:left;
}
button.tl-entity-card,button.ic-step-card,button.countdown-row,button.pm-row{width:100%;}
button.tl-tl-hdr{width:100%;padding:0;border:0;background:transparent;}
.sb-bottom{border-top:1px solid var(--border);padding:9px 10px;flex-shrink:0;}
.sb-acct{font-size:10.5px;color:var(--text4);padding:2px 8px 8px;font-family:var(--mono);}
.sb-acct a,.sb-acct button{color:var(--text4);text-decoration:none;transition:color .1s;background:none;border:0;padding:0;font:inherit;cursor:pointer;}
.sb-acct a:hover,.sb-acct button:hover{color:var(--text2);}
/* Separator derived purely from which links are actually visible, not a parallel set of
   independently-[hidden] <span> siblings each auth state has to remember to keep in sync --
   see renderAccountNav() (js/app.js) for the bug that shipped from that duplication. Matches
   every visible <a> preceded by at least one other visible <a>, so the first visible link in
   either auth state never gets a leading separator and no state can ever show two in a row. */
.sb-acct :is(a,button):not([hidden])~:is(a,button):not([hidden])::before{content:'·';margin:0 5px;opacity:.5;}
.auth-skeleton{color:var(--text4)!important;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);background-size:200% 100%;animation:auth-skeleton 1.2s linear infinite;}
@keyframes auth-skeleton{to{background-position:-200% 0;}}
.sb-user{
  display:flex;align-items:center;gap:8px;padding:5px 8px;
  border-radius:4px;cursor:pointer;transition:background .1s;
}
.sb-user:hover{background:rgba(255,255,255,0.04);}
.sb-av{
  width:22px;height:22px;background:var(--surface3);border:1px solid var(--border2);
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:8px;font-weight:700;color:var(--text2);flex-shrink:0;
}
.sb-uname{font-size:11.5px;font-weight:500;flex:1;}
.sb-plan{font-size:8px;background:var(--accent);color:#fff;padding:1px 5px;border-radius:3px;font-weight:700;font-family:var(--mono);}

/* ── TOPBAR ── */
.topbar{
  height:44px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;padding:0 16px;gap:8px;flex-shrink:0;
  background:var(--bg);
}
.tb-menu{display:none;background:none;border:1px solid var(--border);border-radius:4px;color:var(--text2);font-size:14px;width:28px;height:28px;cursor:pointer;flex-shrink:0;}
.tb-title{font-size:12.5px;font-weight:500;color:var(--text2);flex:1;}
.tb-src{
  font-size:9.5px;font-family:var(--mono);color:var(--text4);
  padding:2px 7px;background:var(--surface);border:1px solid var(--border);border-radius:4px;
}
.live-badge{display:flex;align-items:center;gap:4px;font-size:9px;color:var(--green);font-family:var(--mono);}
.cap-status{display:inline-flex;align-items:center;white-space:nowrap;border:1px solid var(--border2);border-radius:4px;padding:2px 6px;font:600 8px/1.4 var(--mono);letter-spacing:.04em;color:var(--text3);}
.cap-status-live,.cap-status-beta{color:var(--green);border-color:rgba(70,200,120,.28);}
.cap-status-pilot-only,.cap-status-illustrative-demo,.cap-status-mixed-sources{color:var(--amber);border-color:rgba(245,180,55,.28);}
.cap-status-planned,.cap-status-unavailable,.cap-status-stale{color:var(--text4);}
.live-dot{width:5px;height:5px;background:var(--green);border-radius:50%;animation:pulse 2.5s ease infinite;}
/* The topbar's LIVE badge is static HTML shown on every view — Watchtower/Thesis Ledger/Impact
   Chain can silently fall back to demo data (backend unreachable, or nothing real to show yet),
   and without this override the topbar kept reading "● LIVE" directly above a card list that
   was, at the same time, labeled DEMO PREVIEW. gmSetLiveBadge() in growth-modules.js toggles
   this class once a view's render function knows which case it's actually in. */
.live-badge.gm-demo-badge{color:var(--amber);}
.live-badge.gm-demo-badge .live-dot{background:var(--amber);animation:none;}
.live-badge.gm-verified-badge{color:var(--green);}
.live-badge.gm-verified-badge .live-dot{background:var(--green);animation:none;}
.live-badge.gm-sponsor-badge{color:var(--amber);}
.live-badge.gm-sponsor-badge .live-dot{background:var(--amber);animation:none;}
.live-badge.gm-mixed-badge{color:var(--amber);}
.live-badge.gm-mixed-badge .live-dot{background:var(--amber);animation:none;}
.live-badge.gm-unverified-badge,.live-badge.gm-stale-badge{color:var(--red);}
.live-badge.gm-unverified-badge .live-dot,.live-badge.gm-stale-badge .live-dot{background:var(--red);animation:none;}
.live-badge.gm-locked-badge{color:var(--text4);}
.live-badge.gm-locked-badge .live-dot{background:var(--text4);animation:none;}
.live-badge.gm-unavailable-badge{color:var(--text4);}
.live-badge.gm-unavailable-badge .live-dot{background:var(--text4);animation:none;}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
.tb-btn{
  padding:4px 10px;border-radius:4px;font-size:11px;color:var(--text3);
  cursor:pointer;border:1px solid var(--border);background:transparent;
  font-family:var(--font);font-weight:500;transition:all .1s;
  display:flex;align-items:center;gap:5px;
}
.tb-btn:hover{background:rgba(255,255,255,0.04);color:var(--text2);border-color:var(--border2);}
.tb-btn.accent{background:var(--accent-dim);border-color:rgba(59,130,246,0.22);color:var(--accent);}
.tb-btn.accent:hover{background:rgba(59,130,246,0.16);}

/* ── CINEMATIC DESIGN SYSTEM (shared by hero / dashboard / FDA calendar / report cards) ── */
.glass-panel{
  background:var(--glass-bg);
  -webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));
  border:1px solid var(--glass-border);
  box-shadow:var(--depth-1);
}
.glow-hover{transition:transform .35s var(--ease-cinematic),box-shadow .35s var(--ease-cinematic),border-color .35s var(--ease-cinematic);}
.glow-hover:hover{transform:translateY(-2px);box-shadow:var(--depth-glow);border-color:rgba(59,130,246,0.28);}

@keyframes orion-float{
  0%,100%{transform:translateY(0) rotate(var(--fr,0deg));}
  50%{transform:translateY(-6px) rotate(var(--fr,0deg));}
}
@keyframes orion-orb-pulse{
  0%,100%{opacity:.6;transform:scale(1);}
  50%{opacity:.85;transform:scale(1.02);}
}
@keyframes orion-spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
@keyframes orion-spin-rev{from{transform:rotate(360deg);}to{transform:rotate(0deg);}}
@keyframes orion-mesh-drift{
  0%,100%{transform:translate(0,0) scale(1);}
  33%{transform:translate(2%,-3%) scale(1.05);}
  66%{transform:translate(-2%,2%) scale(1.02);}
}
@keyframes orion-draw-line{to{stroke-dashoffset:0;}}
@keyframes orion-fade-up{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}
@keyframes orion-shimmer{0%{background-position:-200% 0;}100%{background-position:200% 0;}}

.reveal-up{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease-cinematic),transform .7s var(--ease-cinematic);}
.reveal-up.is-visible{opacity:1;transform:translateY(0);}

/* Skeleton loading — reuses the existing orion-shimmer sweep rather than a plain spinner, so a
   multi-second wait (e.g. a free-tier backend waking from an idle spin-down) shows the shape of
   what's coming instead of one static line of text that looks identical whether the page is
   about to update in 200ms or still 40 seconds away. See loadAccuracy()'s skeleton branch. */
.skeleton-block{
  border-radius:8px;background:var(--surface2);
  background-image:linear-gradient(90deg,var(--surface2) 0%,rgba(255,255,255,0.06) 50%,var(--surface2) 100%);
  background-size:200% 100%;animation:orion-shimmer 1.6s ease-in-out infinite;
}
.acc-skeleton-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:14px;}
.acc-skeleton-card{height:74px;}
.acc-skeleton-wide{height:120px;margin-bottom:10px;}
.acc-skeleton-note{margin-top:14px;font-size:11.5px;color:var(--text4);text-align:center;opacity:0;animation:orion-fade-up .5s var(--ease-cinematic) 3.2s forwards;}
@media(prefers-reduced-motion:reduce){.skeleton-block{animation:none;background-image:none;}}

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

/* ── WELCOME ── */
.welcome{
  flex:1;display:flex;flex-direction:column;
  align-items:center;padding:0 24px 24px;overflow-y:auto;overflow-x:hidden;
}
/* ── CINEMATIC HERO ── */
.hero-scene{
  /* Keep the primary CTA inside its own layout box at browser zoom / enlarged-text settings.
     The earlier 6px bottom padding left no safety margin when font metrics grew, allowing the
     following search panel (higher z-index) to paint over the CTA. */
  position:relative;width:100%;max-width:1040px;
  min-height:190px;display:flex;align-items:center;justify-content:center;
  padding:26px 24px 22px;margin-bottom:8px;overflow:visible;flex-shrink:0;
}
.hero-bg-mesh{
  position:absolute;inset:-80px -40px;z-index:0;pointer-events:none;
  background:
    radial-gradient(520px 340px at 20% 20%, var(--glow-blue-soft), transparent 68%),
    radial-gradient(480px 340px at 80% 22%, var(--glow-cyan-soft), transparent 68%),
    radial-gradient(440px 320px at 55% 90%, var(--glow-violet-soft), transparent 70%);
  filter:blur(8px);
  animation:orion-mesh-drift 34s ease-in-out infinite;
}
.hero-grid{
  /* Molecular lattice, not a plain graph grid — hexagonal cells (a honeycomb/crystalline
     motif reads as "lab instrumentation" specifically, where a square grid reads as generic
     UI chrome) layered under the existing fine grid for depth. */
  position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:20px;
  background-image:
    linear-gradient(rgba(255,255,255,0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.045) 1px, transparent 1px),
    repeating-linear-gradient(60deg, rgba(95,232,223,0.05) 0 1px, transparent 1px 44px),
    repeating-linear-gradient(-60deg, rgba(95,232,223,0.05) 0 1px, transparent 1px 44px),
    repeating-linear-gradient(0deg, rgba(95,232,223,0.05) 0 1px, transparent 1px 44px);
  background-size:34px 34px,34px 34px,76px 132px,76px 132px,76px 132px;
  -webkit-mask-image:radial-gradient(ellipse 90% 80% at 50% 45%, #000 40%, transparent 85%);
  mask-image:radial-gradient(ellipse 90% 80% at 50% 45%, #000 40%, transparent 85%);
}
.hero-content{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;text-align:center;max-width:660px;}
.hero-eyebrow{
  font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:1.6px;
  color:var(--accent);background:var(--accent-dim);border:1px solid rgba(59,130,246,0.25);
  padding:5px 12px;border-radius:999px;margin-bottom:12px;
}
.hero-headline{
  /* Compact pass: was clamp(28px,4.4vw,46px)/margin-bottom:16px — same copy, smaller so the
     hero no longer visually outweighs the search panel below it. */
  font-size:clamp(22px,3.2vw,34px);font-weight:700;letter-spacing:-1px;line-height:1.14;
  color:var(--text);margin-bottom:10px;
}
.hero-headline .grad{
  background:linear-gradient(100deg,#eef4ff 0%,#9dc2ff 55%,var(--ion-blue) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  display:block;
}
.hero-sub{font-size:14px;color:var(--text2);line-height:1.5;max-width:520px;margin-bottom:12px;}
.hero-cta{
  display:inline-flex;align-items:center;gap:8px;
  padding:10px 22px;border-radius:10px;border:1px solid rgba(110,168,255,0.35);
  background:linear-gradient(135deg,#2f6fe0,#3b82f6);color:#fff;
  font-family:var(--font);font-size:13px;font-weight:600;letter-spacing:.2px;
  cursor:pointer;box-shadow:0 8px 26px -10px rgba(59,130,246,0.45);
  transition:transform .3s var(--ease-cinematic),box-shadow .3s var(--ease-cinematic);
}
.hero-cta:hover{transform:translateY(-2px);box-shadow:0 12px 32px -10px rgba(59,130,246,0.55);}
.hero-cta:active{transform:translateY(0);}

/* Floating glass data cards */
.hero-float{position:absolute;z-index:2;pointer-events:none;--fr:0deg;animation:orion-float var(--dur-float) ease-in-out infinite;}
.hf-card{
  position:relative;padding:11px 13px;border-radius:12px;min-width:132px;
  background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));
  border:1px solid var(--glass-border);box-shadow:var(--depth-1);
}
.hf-badge{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.5px;color:var(--red);margin-bottom:5px;}
.hf-title{font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:2px;}
.hf-sub{font-family:var(--mono);font-size:8.5px;color:var(--text4);}

.hero-float-fda{top:6%;left:1%;--fr:-3deg;animation-delay:0s;}
.hero-float-pipeline{bottom:12%;left:5%;--fr:2deg;animation-delay:1.4s;}
.hero-float-chart{top:10%;right:1%;--fr:3deg;animation-delay:.7s;}

.hf-pipeline{display:flex;flex-direction:column;gap:5px;}
.hf-pipe-row{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:8.5px;color:var(--text3);}
.hf-pipe-dot{width:6px;height:6px;border-radius:50%;background:var(--surface3);border:1px solid var(--border2);flex-shrink:0;}
.hf-pipe-dot.active{background:var(--accent);box-shadow:0 0 8px 1px var(--glow-blue);}

.hf-chart{width:150px;}
.hf-chart-svg{width:100%;height:44px;display:block;overflow:visible;}
.hf-chart-line{fill:none;stroke:url(#heroChartGrad);stroke-width:1.75;filter:drop-shadow(0 0 4px rgba(95,216,208,.4));
  stroke-dasharray:200;stroke-dashoffset:200;animation:orion-draw-line 2.8s var(--ease-cinematic) .3s forwards;}
.hf-chart-lbl{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--green);margin-top:2px;}

/* AI intelligence instrument — a calibration dial, not a glowing orb: dim frosted core, tick-marked
   bezel, two independent slow-spinning rings. Reads as measurement instrumentation (NASA/JARVIS HUD),
   not a light source. */
/* top:34%/190px (was top:50%/230px) — the ring was centered on the whole hero-content block,
   so its lower half swept directly across the CTA button (visible as an "overlapping" glitch
   once the ring's brightness was raised). Shifted up and shrunk so it now halos the
   eyebrow/headline only and clears the button entirely. */
.hero-orb{position:absolute;z-index:1;top:22%;left:50%;width:150px;height:150px;margin:-75px 0 0 -75px;pointer-events:none;}
/* Real 3D core (js/hud-3d-orb.js) — hidden by default. Canvas is only revealed by adding
   .orb-3d-active on #heroOrb after WebGL init actually succeeds; until/unless that happens
   this rule has zero effect and the CSS ring/core divs above remain the only thing visible. */
#heroOrbCanvas{position:absolute;inset:0;width:100%;height:100%;display:none;}
.hero-orb.orb-3d-active #heroOrbCanvas{display:block;}
.hero-orb.orb-3d-active .hero-orb-ring,
.hero-orb.orb-3d-active .hero-orb-core{display:none;}
.hero-orb-core{
  position:absolute;inset:64px;border-radius:50%;
  background:radial-gradient(circle at 40% 34%, rgba(255,255,255,0.20), rgba(110,168,255,0.12) 45%, transparent 75%);
  border:1px solid rgba(255,255,255,0.10);
  box-shadow:0 0 18px -6px var(--glow-blue-soft);
  animation:orion-orb-pulse var(--dur-orb) ease-in-out infinite;
}
.hero-orb-ring{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(110,168,255,0.16);}
.hero-orb-ring.r1{
  inset:16px;border-color:transparent;animation:orion-spin 52s linear infinite;
  background:repeating-conic-gradient(rgba(110,168,255,0.36) 0deg 1.2deg, transparent 1.2deg 9deg);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
  mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
}
.hero-orb-ring.r2{inset:0;border-color:rgba(179,157,255,0.16);animation:orion-spin-rev 78s linear infinite;border-style:dashed;}

/* DNA helix — a live, glowing bioluminescent instrument now, not a faint watermark */
.hero-dna{position:absolute;z-index:1;bottom:2%;right:3%;width:52px;height:190px;pointer-events:none;opacity:.9;
  animation:orion-dna-sway 12s ease-in-out infinite;transform-origin:50% 100%;}
.hero-dna-svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 8px rgba(95,232,223,.45));}
.hero-dna-strand{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;}
.hero-dna-nodes circle{filter:drop-shadow(0 0 2.5px rgba(255,255,255,.6));}
@keyframes orion-dna-sway{0%,100%{transform:rotate(-2deg);}50%{transform:rotate(2deg);}}

@media(max-width:900px){
  .hero-float,.hero-orb,.hero-dna{display:none;}
  .hero-scene{min-height:auto;padding:32px 16px 20px;}
}

/* 901–1260px: .hero-scene hasn't reached its 1040px max-width cap yet, so the centered
   .hero-content column (which can render wider than h1.hero-headline itself) creeps toward
   the edge-anchored float cards while their own left/right % stays put. Measured headless:
   overlap with .hero-headline starts the instant these cards reappear at 901px and clears
   only around ~1212px — text-metrics-dependent, so a fixed px reposition can't be trusted
   across fonts/browsers. Hiding across the whole measured range (same pattern as the
   max-width:900px rule above, just closing the gap on the wide side) is the reliable fix. */
@media(min-width:901px) and (max-width:1260px){
  .hero-float-fda,.hero-float-pipeline,.hero-float-chart{display:none;}
}

.search-wrap{
  width:100%;max-width:720px;position:relative;z-index:3;
  min-width:0;
  /* Independent guardrail: even if decorative/translated hero text grows, the form never
     begins flush against the CTA. */
  margin-top:12px;
}
.search-box{
  background:var(--glass-bg-strong);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));
  border:1px solid var(--glass-border);
  border-radius:12px;overflow:hidden;transition:border-color .15s,box-shadow .15s;
  box-shadow:var(--depth-1);
}
.search-box:focus-within{
  border-color:rgba(59,130,246,0.4);
  box-shadow:0 0 0 3px rgba(59,130,246,0.07), var(--depth-glow);
}
.search-fields{display:flex;align-items:stretch;}
.sf{flex:1;border-right:1px solid var(--border);}
.sf:last-child{border-right:none;}
.sf label{
  display:block;font-size:8.5px;font-weight:600;letter-spacing:0.7px;
  text-transform:uppercase;color:var(--text4);padding:7px 12px 2px;
  font-family:var(--mono);
}
.sf input{
  width:100%;background:transparent;border:none;outline:none;
  padding:0 12px 7px;font-size:12.5px;color:var(--text);font-family:var(--font);
}
.sf input::placeholder{color:var(--text4);}
.search-footer{
  display:flex;align-items:center;justify-content:space-between;
  padding:7px 10px;border-top:1px solid var(--border);background:var(--surface2);
}
.search-hint{font-size:9.5px;color:var(--text4);font-family:var(--mono);}
.search-submit{
  padding:5px 14px;background:var(--accent);border:none;border-radius:4px;
  color:#fff;font-size:11.5px;font-weight:600;cursor:pointer;
  font-family:var(--font);transition:background .1s,opacity .1s;
}
.search-submit:hover{background:#2563eb;}
.search-submit:disabled{opacity:.45;cursor:not-allowed;}
.quick-row{display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap;}
.q-label{font-size:9px;color:var(--text4);font-family:var(--mono);font-weight:600;}
.chip{
  padding:3px 9px;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r);font-size:11px;color:var(--text3);cursor:pointer;
  transition:all .1s;font-family:var(--font);
}
.chip:hover{background:var(--surface2);border-color:var(--border2);color:var(--text2);}
.wc-stats{display:flex;gap:14px;margin-top:20px;font-family:var(--mono);font-size:10px;color:var(--text4);}
.wcs{display:flex;align-items:baseline;gap:4px;}
.wcs-val{color:var(--text3);font-weight:600;}
.wcs-lbl{text-transform:uppercase;letter-spacing:0.4px;}

/* ── HOME DASHBOARD ── */
.home-core-nav{
  width:100%;max-width:960px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;margin:4px auto 12px;
}
.home-core-card{
  min-width:0;min-height:92px;padding:12px;border:1px solid var(--border2);border-radius:9px;
  background:var(--surface);color:var(--text);text-align:left;cursor:pointer;font:inherit;
  display:flex;flex-direction:column;align-items:flex-start;gap:4px;
  transition:border-color .15s,background .15s,transform .15s;
}
.home-core-card:hover{border-color:rgba(59,130,246,.4);background:var(--surface2);transform:translateY(-1px);}
.home-core-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.home-core-index{font:8.5px var(--mono);color:var(--accent);letter-spacing:.08em;}
.home-core-card strong{font-size:12.5px;}
.home-core-card small{font-size:10px;line-height:1.4;color:var(--text4);overflow-wrap:anywhere;}
.daily-radar-home{
  width:100%;max-width:960px;margin:0 auto 12px;padding:14px;
  border:1px solid var(--border2);border-radius:11px;background:var(--surface);
}
.daily-radar-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;}
.daily-radar-heading h2{font-size:16px;margin:0 0 2px;}
.daily-radar-heading p{font-size:10.5px;color:var(--text4);}
.daily-radar-meta{font:9px var(--mono);color:var(--text4);margin-bottom:8px;}
.daily-radar-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
.daily-radar-card{min-width:0;padding:11px;border:1px solid var(--border);border-radius:8px;background:var(--surface2);}
.daily-radar-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font:8.5px var(--mono);color:var(--text4);}
.daily-radar-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.verified-label{color:var(--green);font-weight:700;letter-spacing:.05em;}
.sponsor-reported-label{color:var(--amber);font-weight:700;letter-spacing:.05em;}
.watched-label{color:var(--accent);font-weight:700;letter-spacing:.05em;}
.daily-radar-card h3{font-size:12px;margin:8px 0 3px;overflow-wrap:anywhere;}
.daily-radar-card h3 span{font:9px var(--mono);color:var(--accent);}
.daily-radar-card p{font-size:10px;color:var(--text3);min-height:30px;overflow-wrap:anywhere;}
.daily-radar-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px;}
.daily-radar-loading{padding:18px;text-align:center;color:var(--text4);font-size:11px;}
.daily-radar-empty{
  display:flex;flex-direction:column;align-items:flex-start;gap:7px;padding:16px;
  border:1px dashed var(--border2);border-radius:8px;color:var(--text3);
}
.daily-radar-empty strong{color:var(--text2);font-size:12px;}
.daily-radar-empty span{font-size:10.5px;}
.experimental-notice{
  margin-bottom:14px;padding:10px 12px;border:1px solid rgba(245,158,11,.32);
  border-left:3px solid var(--amber);border-radius:7px;background:var(--amber-dim);
  color:var(--text3);font-size:11px;line-height:1.5;
}
.experimental-notice strong{color:var(--amber);}
.report-trust-links{
  display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:14px;
  padding:9px 11px;border:1px solid var(--border);border-radius:7px;background:var(--surface2);
}
.report-trust-links a{color:var(--accent);font-size:10.5px;text-decoration:none;}
.report-trust-links a:hover{text-decoration:underline;}
.reports-list{display:grid;gap:8px;}
.report-row{
  display:grid;grid-template-columns:minmax(180px,1fr) auto auto;align-items:center;gap:12px;
  padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:var(--surface);
}
.report-row h3{font-size:12.5px;margin:0 0 3px;}
.report-row p{font:9.5px var(--mono);color:var(--text4);}
.preference-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:720px;}
.preference-field{display:flex;flex-direction:column;gap:6px;color:var(--text3);font-size:11px;}
.preference-field select{
  width:100%;padding:9px 10px;border:1px solid var(--border2);border-radius:6px;
  background:var(--surface);color:var(--text);font:inherit;
}
.preference-field select:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.preference-status{grid-column:1/-1;min-height:20px;color:var(--green);font:10px var(--mono);}
#homeDash{width:100%;max-width:960px;margin:18px auto 0;} /* was 28px — tightened to match the vertical rhythm used elsewhere on the homepage (10–20px between sections) */
.briefing-card{
  background:var(--surface);border:1px solid var(--border2);border-radius:11px;padding:14px 16px;
  margin-bottom:10px;text-align:left;box-shadow:var(--depth-1);
  transition:box-shadow .3s var(--ease-cinematic),border-color .3s var(--ease-cinematic);
  animation:orion-panel-in .5s var(--ease-cinematic) both;
}
.briefing-eyebrow{font-size:9px;font-weight:600;letter-spacing:0.8px;color:var(--accent);font-family:var(--mono);margin-bottom:6px;}
.briefing-text{font-size:12.5px;color:var(--text2);line-height:1.6;}
.alert-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.alert-chip{font-size:10.5px;color:var(--text2);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r);padding:4px 9px;}
.home-widgets{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.home-widgets>.scard{
  transition:transform .3s var(--ease-cinematic),box-shadow .3s var(--ease-cinematic),border-color .3s var(--ease-cinematic);
  animation:orion-panel-in .5s var(--ease-cinematic) both;
}
/* The briefing lands first, then the four widgets follow it in reading order — a briefing
   being assembled, the same cascade language as Command Center. */
.home-widgets>.scard:nth-child(1){animation-delay:.08s;}
.home-widgets>.scard:nth-child(2){animation-delay:.14s;}
.home-widgets>.scard:nth-child(3){animation-delay:.2s;}
.home-widgets>.scard:nth-child(4){animation-delay:.26s;}
.home-widgets>.scard:hover{transform:translateY(-2px);box-shadow:var(--depth-glow);border-color:rgba(59,130,246,0.22);}
.briefing-card:hover{box-shadow:var(--depth-glow);border-color:rgba(59,130,246,0.2);}
.why-now-card{
  margin-bottom:10px;border-color:rgba(34,197,94,0.22);
  animation:orion-panel-in .5s var(--ease-cinematic) .05s both;
  transition:box-shadow .3s var(--ease-cinematic),border-color .3s var(--ease-cinematic);
}
.why-now-card:hover{box-shadow:0 4px 20px -6px rgba(34,197,94,0.12);border-color:rgba(34,197,94,0.4);}
.card-foot{display:block;width:100%;padding:8px 14px;text-align:center;font:inherit;font-size:10.5px;color:var(--accent);cursor:pointer;background:transparent;border:0;border-top:1px solid var(--border);transition:background .1s;}
.card-foot:hover{background:rgba(255,255,255,0.03);}
.countdown-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer;transition:background .1s;}
.countdown-row:last-of-type{border-bottom:none;}
.countdown-row:hover{background:rgba(255,255,255,0.03);}
.countdown-d{font-family:var(--mono);font-weight:700;font-size:15px;width:44px;flex-shrink:0;}
/* Same near-term/very-high-impact threshold as the FDA calendar and Command Center — a signal
   only fires when the catalyst is genuinely urgent. */
.countdown-row-signal .countdown-d{animation:orion-badge-pulse 4.5s ease-in-out infinite;}
.countdown-info{flex:1;min-width:0;}
.countdown-drug{font-size:12px;font-weight:600;color:var(--text);}
.countdown-co{font-size:10px;color:var(--text4);font-family:var(--mono);margin-top:1px;}
.pm-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border:0;border-bottom:1px solid var(--border);background:transparent;cursor:pointer;transition:background .1s;text-align:left;}
.pm-row:hover{background:rgba(255,255,255,0.03);}
.pm-row:last-of-type{border-bottom:none;}
.pm-name{font-size:11.5px;color:var(--text2);flex:1;min-width:0;}
.pm-price{font-family:var(--mono);font-weight:600;font-size:12px;color:var(--text);}

/* ── ANALYSIS AREA ── */
.analysis-area{
  flex:1;overflow-y:auto;min-height:0;padding:12px 16px;
  display:flex;flex-direction:column;gap:8px;
}
.dash-row{display:flex;gap:8px;align-items:stretch;}
.dash-row>.scard{flex:1 0 auto;min-width:0;}
.analysis-hdr{
  display:flex;align-items:center;gap:10px;padding:11px 14px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);
}

/* Report sections cascade in on load — transform-only (never opacity, which some cards set inline
   for their own semantics, e.g. the roadmap placeholder cards) so this can never fight a static style. */
@keyframes orion-panel-in{from{transform:translateY(14px);}to{transform:translateY(0);}}
.analysis-hdr{animation:orion-panel-in .6s var(--ease-cinematic) both;}
#discoveryCard{animation:orion-panel-in .6s var(--ease-cinematic) .04s both;}
.dash-row{animation:orion-panel-in .6s var(--ease-cinematic) .1s both;}
.sub-scores{animation:orion-panel-in .6s var(--ease-cinematic) .17s both;}
.chart-grid{animation:orion-panel-in .6s var(--ease-cinematic) .23s both;}

/* "Declassified" reveal — a bright line sweeps once across each section's top edge exactly
   when it arrives, echoing a document being unsealed rather than a generic fade. Reuses the
   existing orion-shimmer gradient-sweep vocabulary instead of inventing new motion. No
   overflow:hidden on the sections themselves, so existing card shadows are never clipped.
   ORION Discovered leads this cascade (see renderDashboard()) — the surprise unseals first. */
.analysis-hdr,#discoveryCard,.dash-row,.sub-scores,.chart-grid{position:relative;}
.analysis-hdr::before,#discoveryCard::before,.dash-row::before,.sub-scores::before,.chart-grid::before{
  content:"";position:absolute;top:-1px;left:0;right:0;height:2px;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--glow-blue-soft) 20%,#fff 50%,var(--glow-blue-soft) 80%,transparent);
  background-size:200% 100%;opacity:0;
  animation:orion-declassify-sweep 1.1s var(--ease-cinematic) both;
}
#discoveryCard::before{animation-delay:.04s;}
.dash-row::before{animation-delay:.1s;}
.sub-scores::before{animation-delay:.17s;}
.chart-grid::before{animation-delay:.23s;}
@keyframes orion-declassify-sweep{
  0%{opacity:1;background-position:200% 0;}
  65%{opacity:1;background-position:-40% 0;}
  100%{opacity:0;background-position:-200% 0;}
}
.a-company{font-size:14px;font-weight:600;color:var(--text);}
.a-ticker{
  font-size:10.5px;font-family:var(--mono);color:var(--text3);
  background:var(--surface2);border:1px solid var(--border);
  padding:2px 6px;border-radius:3px;
}
.a-meta{margin-left:auto;font-size:10px;color:var(--text4);font-family:var(--mono);}

/* ── SECTION CARDS ── */
.scard{
  background:linear-gradient(180deg, rgba(255,255,255,0.025), transparent 44%), var(--surface);
  border:1px solid var(--border);position:relative;
  border-radius:11px;overflow:hidden;flex-shrink:0;
  box-shadow:var(--depth-1);
  transition:box-shadow .3s var(--ease-cinematic),border-color .3s var(--ease-cinematic);
}
.scard::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;z-index:1;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,0.16), transparent);
  pointer-events:none;
}
.scard-hdr{
  display:flex;align-items:center;gap:8px;padding:7px 12px;
  border-bottom:1px solid var(--border);background:var(--surface2);
}
.scard-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.scard-title{font-size:10.5px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:0.4px;flex:1;}
.src-tag{
  font-size:9px;font-family:var(--mono);color:var(--text4);
  padding:1px 6px;background:var(--surface3);border-radius:3px;border:1px solid var(--border);
}

/* ── STOCK METRICS ── */
.stock-metrics{display:grid;grid-template-columns:repeat(4,1fr);}
.mc{padding:11px 14px;border-right:1px solid var(--border);}
.mc:last-child{border-right:none;}
.mc-lbl{font-size:9px;color:var(--text4);text-transform:uppercase;letter-spacing:0.6px;font-family:var(--mono);margin-bottom:4px;}
.mc-val{font-size:16px;font-weight:600;font-family:var(--mono);color:var(--text);letter-spacing:-0.3px;}
.mc-val.up{color:var(--green);}
.mc-val.dn{color:var(--red);}
.mc-val.accent{color:var(--accent);}

/* ── ORION SCORE ── */
.score-wrap{display:flex;gap:14px;align-items:flex-start;padding:12px;flex-wrap:wrap;}
.score-left{}
.score-num-row{display:flex;align-items:baseline;gap:3px;margin-bottom:5px;}
.score-num{font-size:36px;font-weight:700;font-family:var(--mono);color:var(--text);letter-spacing:-1px;line-height:1;text-shadow:0 0 24px var(--glow-blue-soft);}
.score-denom{font-size:13px;color:var(--text4);font-family:var(--mono);}
.score-bars{flex:1;display:flex;flex-direction:column;gap:7px;}
.score-row{display:flex;align-items:flex-start;gap:8px;}
/* min-width, not width: Franchise Health's sub-term names ("Life-Cycle Pipeline Depth",
   "Institutional Confidence") are much longer than the short labels ("Pipeline", "Phase")
   this was originally sized for — a fixed width with no wrap clipped them at the card edge. */
.score-rlbl{font-size:9.5px;color:var(--text3);min-width:62px;flex-shrink:0;font-family:var(--mono);white-space:normal;overflow-wrap:break-word;}
.score-track{flex:1;height:3px;background:var(--surface3);border-radius:2px;overflow:hidden;}
.score-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--ion-cyan));border-radius:2px;transition:width .8s var(--ease-cinematic);box-shadow:0 0 8px var(--glow-blue-soft);}
.score-rval{font-size:9.5px;color:var(--text2);font-family:var(--mono);width:20px;text-align:right;}
.verdict-tag{
  font-size:10px;font-weight:700;font-family:var(--mono);
  padding:2px 8px;border-radius:3px;letter-spacing:0.3px;display:inline-block;margin-top:6px;
}
.v-buy{background:var(--green-dim);color:var(--green);border:1px solid rgba(34,197,94,0.22);}
.v-hold{background:var(--amber-dim);color:var(--amber);border:1px solid rgba(245,158,11,0.22);}
.v-sell{background:var(--red-dim);color:var(--red);border:1px solid rgba(239,68,68,0.22);}
.v-avoid{background:var(--red);color:#fff;border:1px solid var(--red);}
.score-note{font-size:9px;color:var(--text4);font-family:var(--mono);margin-top:4px;}

/* ── SUB-SCORES (Intelligence Engine) ── */
.sub-scores{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.sub-score-body{padding:11px 13px;display:flex;flex-direction:column;gap:7px;}
.sub-score-num-row{display:flex;align-items:baseline;gap:3px;}
.sub-score-num{font-size:24px;font-weight:700;font-family:var(--mono);letter-spacing:-0.5px;line-height:1;text-shadow:0 0 14px color-mix(in srgb, currentColor 45%, transparent);}
.tier-pill{font-size:8.5px;font-weight:700;font-family:var(--mono);padding:2px 7px;border-radius:3px;display:inline-block;width:fit-content;letter-spacing:.3px;}
.sub-score-why{font-size:10px;color:var(--text3);line-height:1.5;}
.sub-score-meta{font-size:9.5px;color:var(--text4);font-family:var(--mono);}
.sub-score-meta summary{cursor:pointer;color:var(--text3);list-style:none;}
.sub-score-meta summary::-webkit-details-marker{display:none;}
.sub-score-meta[open] summary{color:var(--text2);margin-bottom:4px;}
.sub-score-meta div{padding-top:6px;margin-top:2px;border-top:1px solid var(--border);line-height:1.6;color:var(--text3);font-family:var(--font);font-size:10.5px;}

/* ── ORION GENOME (Company as Organism) ── */
.genome-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:12px;}
.genome-organ{border:1px solid var(--border);border-radius:8px;padding:10px 11px;display:flex;flex-direction:column;gap:6px;}
.genome-organ-top{display:flex;align-items:center;justify-content:space-between;}
.genome-organ-tag{font-size:8.5px;font-weight:700;font-family:var(--mono);padding:2px 6px;border-radius:3px;border:1px solid;letter-spacing:.3px;}
.genome-organ-name{font-size:11px;font-weight:600;color:var(--text);}
.genome-organ-meaning{font-size:9px;color:var(--text4);margin-top:-4px;}
.genome-organ-val{font-family:var(--mono);font-size:19px;font-weight:700;line-height:1;}
.genome-organ-unit{font-size:10px;font-weight:500;margin-left:2px;opacity:.7;}
.genome-organ-desc{font-size:9.5px;color:var(--text3);line-height:1.45;}
@media(max-width:900px){.genome-grid{grid-template-columns:repeat(2,1fr);}}

/* ── VISUAL DASHBOARDS ── */
.chart-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;}
.chart-box{height:220px;padding:10px 14px;}
.ptree-wrap{display:flex;align-items:center;padding:22px 14px;gap:4px;flex-wrap:wrap;}
.ptree-box{flex:1;min-width:70px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r);padding:10px 8px;text-align:center;}
.ptree-box.active{border-color:var(--accent);background:var(--accent-dim);box-shadow:0 0 0 1px var(--accent);}
.ptree-lbl{font-size:10.5px;font-weight:600;color:var(--text2);}
.ptree-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);margin:5px auto 0;}
.ptree-arrow{font-size:12px;color:var(--text4);display:flex;flex-direction:column;align-items:center;flex-shrink:0;padding:0 2px;}
.ptree-rate{font-size:9px;font-family:var(--mono);color:var(--accent);margin-top:1px;}

/* ── INVESTMENT COMMITTEE ── */
.committee-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.committee-role{font-size:11px;font-weight:600;color:var(--text2);width:130px;flex-shrink:0;}
.committee-text{font-size:11px;color:var(--text3);line-height:1.5;flex:1;min-width:200px;}
.verdict-card{margin:12px 14px 14px;border:1px solid rgba(167,139,250,0.25);border-radius:var(--r);background:var(--purple-dim);padding:14px;}
.verdict-card-hdr{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;}
.verdict-conf{font-size:11px;color:var(--text2);font-family:var(--mono);margin-bottom:10px;}
.verdict-conf strong{color:var(--text);}
.verdict-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:12px;}
.verdict-col-lbl{font-size:9px;font-weight:600;letter-spacing:0.6px;text-transform:uppercase;color:var(--text4);font-family:var(--mono);margin-bottom:5px;}
.verdict-cols ul{list-style:none;display:flex;flex-direction:column;gap:5px;}
.verdict-cols li{font-size:10.5px;color:var(--text3);line-height:1.5;padding-left:11px;position:relative;}
.verdict-cols li::before{content:'▸';position:absolute;left:0;color:var(--text4);}
.verdict-stats{display:flex;gap:14px;border-top:1px solid rgba(167,139,250,0.2);padding-top:12px;}
.verdict-stats>div{flex:1;}
.verdict-note{font-size:9.5px;color:var(--text4);margin-top:3px;line-height:1.4;}

/* ── TRIALS TABLE ── */
.tbl-scroll{overflow-x:auto;}
.trials-table{width:100%;border-collapse:collapse;min-width:520px;}
.trials-table th{
  font-size:9px;font-weight:600;letter-spacing:0.7px;text-transform:uppercase;
  color:var(--text4);font-family:var(--mono);padding:8px 12px;text-align:left;
  border-bottom:1px solid var(--border);background:var(--surface2);
}
.trials-table td{padding:9px 12px;border-bottom:1px solid var(--border);font-size:12px;vertical-align:top;}
.trials-table tr:last-child td{border-bottom:none;}
.trials-table tr:hover td{background:rgba(255,255,255,0.02);}
.t-name{color:var(--text2);line-height:1.4;}
.t-name a{color:var(--text2);text-decoration:none;transition:color .1s;}
.t-name a:hover{color:var(--accent);}
.t-cond{font-size:10px;color:var(--text4);margin-top:2px;font-family:var(--mono);}
.ph{font-size:9px;font-weight:700;font-family:var(--mono);padding:2px 6px;border-radius:3px;white-space:nowrap;display:inline-block;}
.ph1{background:var(--purple-dim);color:var(--purple);border:1px solid rgba(167,139,250,0.22);}
.ph2{background:var(--accent-dim);color:var(--accent);border:1px solid rgba(59,130,246,0.22);}
.ph3{background:var(--green-dim);color:var(--green);border:1px solid rgba(34,197,94,0.22);}
.ph4{background:var(--amber-dim);color:var(--amber);border:1px solid rgba(245,158,11,0.22);}
.phn{background:var(--surface3);color:var(--text4);border:1px solid var(--border);}
.st{font-size:9px;font-weight:600;font-family:var(--mono);padding:2px 7px;border-radius:3px;white-space:nowrap;display:inline-block;}
.sr{background:var(--green-dim);color:var(--green);border:1px solid rgba(34,197,94,0.22);}
.sa{background:var(--accent-dim);color:var(--accent);border:1px solid rgba(59,130,246,0.22);}
.sc{background:var(--surface3);color:var(--text3);border:1px solid var(--border);}
.sx{background:var(--red-dim);color:var(--red);border:1px solid rgba(239,68,68,0.22);}
.so{background:var(--surface3);color:var(--text4);border:1px solid var(--border);}

/* ── ANALYSIS BODY ── */
.abody{padding:14px 16px;font-size:13px;line-height:1.75;color:var(--text2);}
.abody h2{font-size:12.5px;font-weight:600;color:var(--text);margin:14px 0 6px;padding-bottom:5px;border-bottom:1px solid var(--border);}
.abody h3{font-size:12px;font-weight:600;color:var(--text);margin:10px 0 4px;}
.abody strong{color:var(--text);font-weight:600;}

/* ── ACTIONS ── */
.action-row{
  display:flex;gap:5px;padding:9px 12px;
  border-top:1px solid var(--border);background:var(--surface2);flex-wrap:wrap;
}
.act-btn{
  padding:5px 11px;border-radius:4px;font-size:11px;font-weight:500;cursor:pointer;
  border:1px solid var(--border);background:var(--surface);color:var(--text2);
  font-family:var(--font);transition:all .1s;display:flex;align-items:center;gap:4px;
}
.act-btn:hover{background:rgba(255,255,255,0.05);border-color:var(--border2);color:var(--text);}
.act-btn:disabled{opacity:.4;cursor:not-allowed;}
.act-btn.primary{background:var(--accent-dim);border-color:rgba(59,130,246,0.22);color:var(--accent);}
.act-btn.primary:hover{background:rgba(59,130,246,0.16);}

/* ── FORECAST ── */
.forecast-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px 14px;border-bottom:1px solid var(--border);}
.sc-cell{background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:10px 12px;}
.sc-type{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.7px;font-family:var(--mono);margin-bottom:4px;}
.sc-cell.bull .sc-type{color:var(--green);}
.sc-cell.base .sc-type{color:var(--accent);}
.sc-cell.bear .sc-type{color:var(--red);}
.sc-price{font-size:18px;font-weight:700;font-family:var(--mono);color:var(--text);letter-spacing:-0.3px;}
.sc-note{font-size:10px;color:var(--text4);margin-top:2px;}
.verdict-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:9px 14px;border-top:1px solid var(--border);
  font-size:9.5px;color:var(--text4);font-family:var(--mono);letter-spacing:0.4px;
}

/* ── TYPING / CURSOR ── */
.cursor{display:inline-block;width:2px;height:13px;background:var(--accent);vertical-align:middle;margin-left:1px;animation:blink 1s step-end infinite;}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
.typing-dots{display:flex;gap:4px;padding:12px 16px;align-items:center;}
.typing-dots span{width:4px;height:4px;background:var(--text4);border-radius:50%;animation:tbounce 1.2s ease infinite;}
.typing-dots span:nth-child(2){animation-delay:.15s;}
.typing-dots span:nth-child(3){animation-delay:.3s;}
@keyframes tbounce{0%,80%,100%{transform:scale(1);opacity:.4}40%{transform:scale(1.3);opacity:1}}

/* ── BOTTOM INPUT ── */
.bottom-input{border-top:1px solid var(--border);background:var(--bg);flex-shrink:0;min-width:0;}
.bottom-input-actions{
  min-height:46px;padding:7px 16px;display:flex;align-items:center;justify-content:flex-end;
  gap:8px;background:var(--surface);border-bottom:1px solid transparent;
}
.bottom-input.is-expanded .bottom-input-actions{border-bottom-color:var(--border);}
.bottom-input-toggle{
  min-height:32px;padding:6px 12px;border:1px solid var(--border2);border-radius:6px;
  background:var(--surface2);color:var(--text2);font:600 11.5px var(--font);cursor:pointer;
}
.bottom-input-toggle:hover{border-color:var(--accent);color:var(--accent);}
.bottom-input-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.bottom-input-panel{min-width:0;padding:10px 16px 0;}
.bottom-input-panel[hidden]{display:none;}
.bottom-input-panel .search-box{border-radius:8px;}
.disclaimer{
  font-size:9px;color:var(--text4);padding:7px 12px;
  border-top:1px solid var(--border);font-family:var(--mono);line-height:1.5;
}

/* ── PAGE VIEWS ── */
.page-pad{padding:24px;max-width:1100px;margin:0 auto;}
.page-hdr{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border);}
.page-title{font-size:16px;font-weight:600;color:var(--text);letter-spacing:-0.3px;margin-bottom:3px;}
.page-sub{font-size:11px;color:var(--text3);font-family:var(--mono);}

/* ── DATA TABLE (Global Biotech) ── */
.kr-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.kr-search{
  flex:1;min-width:200px;max-width:320px;padding:8px 12px;background:var(--surface2);
  border:1px solid var(--border2);border-radius:var(--r);color:var(--text);font-size:12px;
  font-family:var(--font);
}
.kr-search:focus{outline:none;border-color:var(--accent);}
.kr-search::placeholder{color:var(--text4);}
.kr-sector-select{
  padding:8px 10px;background:var(--surface2);border:1px solid var(--border2);border-radius:var(--r);
  color:var(--text2);font-size:11.5px;font-family:var(--font);cursor:pointer;max-width:220px;
}
.kr-count{font-size:10.5px;color:var(--text4);font-family:var(--mono);margin-left:auto;white-space:nowrap;}

.dtable-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);overflow-x:auto;max-height:72vh;overflow-y:auto;}
.dtable{width:100%;border-collapse:collapse;min-width:680px;}
.dtable th{
  font-size:8.5px;font-weight:600;letter-spacing:0.7px;text-transform:uppercase;
  color:var(--text4);font-family:var(--mono);padding:9px 14px;text-align:left;
  border-bottom:1px solid var(--border);background:var(--surface2);white-space:nowrap;
  position:sticky;top:0;z-index:1;
}
.dtable th.r{text-align:right;}
.dtable th.sortable{cursor:pointer;user-select:none;transition:color .1s;}
.dtable th.sortable:hover{color:var(--text2);}
.dtable-sort{
  border:0;background:transparent;padding:0;color:inherit;font:inherit;
  letter-spacing:inherit;text-transform:inherit;cursor:pointer;
}
.dtable th.r .dtable-sort{width:100%;text-align:right;}
.dtable-sort:focus-visible,.dtable tr.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.dtable td{padding:10px 14px;border-bottom:1px solid var(--border);font-size:12.5px;vertical-align:middle;}
.dtable tr:last-child td{border-bottom:none;}
.dtable tr.clickable:hover td{background:rgba(59,130,246,0.04);cursor:pointer;}
/* Opacity only, never transform — table rows don't reliably animate transform across browsers,
   but opacity paints fine. Only the first rows get a visible stagger; deep rows still fade in,
   just bunched at the same short delay so a 300-row table doesn't take seconds to finish. */
.dtable tbody tr{animation:orion-row-fade .4s var(--ease-cinematic) both;}
@keyframes orion-row-fade{from{opacity:0;}to{opacity:1;}}
.d-rank{font-size:10px;color:var(--text4);font-family:var(--mono);}
.d-co{font-weight:500;color:var(--text);margin-bottom:3px;}
.d-sector-tag{
  font-size:9px;font-weight:600;color:var(--text3);background:var(--surface3);
  border:1px solid var(--border2);padding:1px 6px;border-radius:3px;display:inline-block;
  font-family:var(--mono);letter-spacing:.2px;
}
.d-ticker{
  font-size:10px;font-family:var(--mono);font-weight:600;color:var(--text3);
  background:var(--surface3);border:1px solid var(--border);padding:2px 6px;border-radius:3px;
  display:inline-block;
}
.d-price{font-family:var(--mono);font-weight:500;color:var(--text);}
.d-chg{font-family:var(--mono);font-size:11.5px;font-weight:500;}
.d-chg.up{color:var(--green);}
.d-chg.dn{color:var(--red);}
.d-chg.neu{color:var(--text4);}
.d-mcap{font-family:var(--mono);color:var(--text2);font-size:11.5px;}
.tr{text-align:right;}

/* ── FDA CALENDAR ── */
.fda-sec-lbl{
  font-size:9px;font-weight:600;letter-spacing:0.8px;text-transform:uppercase;
  color:var(--text4);font-family:var(--mono);padding:16px 0 8px;
}
.ev-badge{font-size:9px;font-weight:600;font-family:var(--mono);padding:2px 8px;border-radius:3px;white-space:nowrap;}
.page-pad.fda-page{max-width:1480px;}

.fda-hdr{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.fda-tabs{display:flex;gap:2px;background:var(--surface2);border:1px solid var(--border2);border-radius:9px;padding:2px;flex-shrink:0;box-shadow:var(--depth-1);}
.fda-tab{
  font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.3px;
  color:var(--text3);background:transparent;border:none;padding:6px 13px;
  border-radius:6px;cursor:pointer;transition:background .18s var(--ease-cinematic),color .18s,box-shadow .18s;
}
.fda-tab:hover{color:var(--text2);}
.fda-tab.active{background:linear-gradient(135deg,#2f6fe0,#3b82f6);color:#fff;box-shadow:0 2px 14px -2px var(--glow-blue);}
.fda-coverage-notice{margin:0 0 14px;padding:10px 12px;border:1px solid rgba(245,158,11,.25);border-radius:8px;background:rgba(245,158,11,.06);color:var(--text3);font-size:11px;line-height:1.55;}
.fda-quarantine{margin-top:20px;padding:0 16px 14px;border:1px solid rgba(239,68,68,.2);border-radius:10px;background:rgba(239,68,68,.035);}
.fda-separated{margin-top:20px;padding:0 16px 16px;border:1px solid var(--border);border-radius:10px;background:var(--surface2);}
.fda-quarantine-hdr{display:flex;align-items:center;justify-content:space-between;gap:14px;}
.fda-quarantine-copy{max-width:820px;color:var(--text4);font-size:10.5px;line-height:1.5;margin-top:-4px;padding-bottom:10px;}
.fda-quarantine-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.fda-quarantine-row{padding:10px 12px;border:1px solid var(--border);border-radius:7px;background:var(--surface);}
.fda-quarantine-row strong{display:block;color:var(--text2);font-size:11px;margin-bottom:3px;}
.fda-quarantine-row span{display:block;color:var(--text4);font-family:var(--mono);font-size:9.5px;}
.fda-quarantine-row p{margin-top:7px;color:var(--text3);font-size:10.5px;line-height:1.45;}

/* Shared catalyst card */
.cal-list{display:flex;flex-direction:column;gap:8px;}
.cal-card{
  display:flex;gap:16px;padding:14px 16px;
  background:linear-gradient(180deg, rgba(255,255,255,0.02), transparent 44%), var(--surface);
  border:1px solid var(--border);border-radius:11px;cursor:pointer;
  box-shadow:var(--depth-1);
  transition:border-color .3s var(--ease-cinematic),background .3s var(--ease-cinematic),transform .3s var(--ease-cinematic),box-shadow .3s var(--ease-cinematic);
  /* transform-only (orion-panel-in), never orion-fade-up's opacity — .cal-card.past sets its
     own opacity:.5 in the stylesheet, and an opacity-animating fill-forward would fight it. */
  animation:orion-panel-in .5s var(--ease-cinematic) both;
}
.cal-card:hover{border-color:rgba(59,130,246,0.3);background:var(--surface2);transform:translateY(-2px);box-shadow:var(--depth-glow);}
.cal-card.past{opacity:.78;}
.cal-card.past:hover{opacity:1;}
.cal-card-date{
  flex-shrink:0;width:52px;text-align:center;padding-top:1px;
  border-left:3px solid var(--ic,var(--accent));padding-left:11px;
}
.cal-card-mon{font-size:9px;font-weight:700;letter-spacing:.5px;color:var(--accent);font-family:var(--mono);}
.cal-card-day{font-size:24px;font-weight:700;color:var(--text);font-family:var(--mono);line-height:1.15;}
.cal-card-yr{font-size:9px;color:var(--text4);font-family:var(--mono);}
.cal-card-body{flex:1;min-width:0;}
.cal-badges{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px;}
.cal-badge{
  font-size:8.5px;font-weight:700;letter-spacing:.4px;font-family:var(--mono);
  padding:3px 7px;border-radius:4px;border:1px solid;white-space:nowrap;text-transform:uppercase;
}
/* Reserved for the highest-priority catalysts only — a slow, low-amplitude glow, not a flashing alert. */
.cal-badge-pulse{animation:orion-badge-pulse 4.5s ease-in-out infinite;}
@keyframes orion-badge-pulse{
  0%,100%{box-shadow:0 0 0 0 transparent;}
  50%{box-shadow:0 0 9px 1px color-mix(in srgb, currentColor 32%, transparent);}
}
.cal-card-drug{font-size:14.5px;font-weight:600;color:var(--text);margin-bottom:3px;letter-spacing:-.1px;}
.cal-card-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap;}
.cal-ticker{
  font-size:10px;font-family:var(--mono);font-weight:700;color:var(--text2);
  background:var(--surface3);border:1px solid var(--border2);padding:2px 6px;border-radius:3px;
}
.cal-co{font-size:11.5px;color:var(--text3);}
.cal-card-type{font-size:11px;color:var(--text3);font-family:var(--mono);margin-bottom:4px;}
.cal-card-notes{font-size:11px;color:var(--text4);line-height:1.5;}
.cal-card-provenance{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:9px;padding-top:8px;border-top:1px solid var(--border);font-family:var(--mono);font-size:9.5px;color:var(--text4);}
.cal-source-link{color:var(--accent);text-decoration:none;overflow-wrap:anywhere;}
.cal-source-link:hover{text-decoration:underline;}
.cal-source-missing{color:var(--red);font-family:var(--mono);font-size:9.5px;}
.cal-card-lg{padding:18px 20px;}
.cal-card-lg .cal-card-drug{font-size:16.5px;}
.cal-grid-impact{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px;}

/* Mode 1: Monthly calendar */
.cal-month-nav{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.cal-nav-btn{
  width:28px;height:28px;border-radius:6px;background:var(--surface2);
  border:1px solid var(--border2);color:var(--text2);font-size:14px;cursor:pointer;transition:background .12s;
}
.cal-nav-btn:hover{background:var(--surface3);}
.cal-month-label{font-size:14px;font-weight:600;color:var(--text);min-width:150px;font-family:var(--mono);}
.cal-today-btn{margin-left:auto;}
.cal-grid{
  display:grid;grid-template-columns:repeat(7,1fr);gap:1px;
  background:var(--border);border:1px solid var(--border);border-radius:11px;overflow:hidden;
  box-shadow:var(--depth-1);
}
.cal-dow{
  background:var(--surface2);padding:8px 10px;font-size:9px;font-weight:700;
  letter-spacing:.6px;color:var(--text4);font-family:var(--mono);text-align:center;
}
.cal-cell{background:var(--surface);min-height:96px;padding:6px 6px 4px;display:flex;flex-direction:column;gap:3px;transition:background .2s;}
.cal-cell.other-month{background:var(--sidebar);}
.cal-cell.other-month .cal-cell-num{color:var(--text4);}
.cal-cell.today{background:rgba(59,130,246,0.09);box-shadow:inset 0 0 0 1px var(--accent),0 0 16px -4px var(--glow-blue-soft);}
.cal-cell-num{font-size:10.5px;font-weight:600;color:var(--text3);font-family:var(--mono);margin-bottom:2px;}
.cal-pill{
  font-size:9.5px;padding:2px 5px;border-radius:3px;background:var(--surface2);
  color:var(--text2);cursor:pointer;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;transition:background .1s;
}
.cal-pill:hover{background:var(--surface3);}
.cal-pill-ticker{font-family:var(--mono);font-weight:700;color:var(--accent);}
.cal-more{font-size:9px;color:var(--text4);cursor:pointer;padding:1px 5px;}
.cal-more:hover{color:var(--accent);}

/* Mode 2: Timeline */
.cal-timeline{position:relative;padding-left:26px;}
.cal-timeline::before{content:'';position:absolute;left:5px;top:4px;bottom:4px;width:1px;background:var(--border2);}
.cal-tl-month{
  font-size:9px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;
  color:var(--text4);font-family:var(--mono);margin:18px 0 8px;
}
.cal-tl-month:first-child{margin-top:0;}
.cal-tl-today{position:relative;margin:14px 0;}
.cal-tl-today span{
  font-size:9px;font-weight:700;letter-spacing:.5px;color:var(--accent);font-family:var(--mono);
  background:var(--accent-dim);border:1px solid rgba(59,130,246,.3);padding:3px 8px;
  border-radius:4px;margin-left:-26px;position:relative;display:inline-block;
}
.cal-tl-item{position:relative;margin-bottom:8px;}
.cal-tl-dot{position:absolute;left:-23px;top:20px;width:9px;height:9px;border-radius:50%;border:2px solid var(--bg);}

/* ── FDA EVENT INTELLIGENCE DETAIL ── */
.fdd-back{
  display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text3);
  cursor:pointer;margin-bottom:14px;font-family:var(--mono);transition:color .12s;
}
.fdd-back:hover{color:var(--accent);}
.fdd-hero{
  display:flex;gap:18px;padding:20px 22px;
  background:linear-gradient(180deg, rgba(255,255,255,0.03), transparent 44%), var(--surface);
  border:1px solid var(--border);border-radius:14px;margin-bottom:16px;
  box-shadow:var(--depth-2);position:relative;overflow:hidden;
}
.fdd-hero::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,0.18), transparent);
}
.fdd-hero-date{flex-shrink:0;width:58px;text-align:center;border-left:3px solid var(--ic,var(--accent));padding-left:12px;}
.fdd-hero-mo{font-size:10px;font-weight:700;letter-spacing:.5px;color:var(--accent);font-family:var(--mono);}
.fdd-hero-day{font-size:30px;font-weight:700;color:var(--text);font-family:var(--mono);line-height:1.1;}
.fdd-hero-yr{font-size:10px;color:var(--text4);font-family:var(--mono);}
.fdd-hero-body{flex:1;min-width:0;}
.fdd-hero-drug{font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.3px;margin-bottom:4px;}
.fdd-hero-meta{font-size:12.5px;color:var(--text3);margin-bottom:10px;}
.fdd-hero-meta strong{color:var(--accent);font-family:var(--mono);}
.fdd-hero-badges{display:flex;flex-wrap:wrap;gap:6px;}

.fdd-why{padding:16px 18px;line-height:1.7;font-size:12.5px;color:var(--text2);}
.fdd-why p+p{margin-top:0;}

.fdd-kv{display:flex;flex-direction:column;}
.fdd-kv-row{
  display:flex;gap:14px;padding:9px 18px;border-bottom:1px solid var(--border);font-size:12px;
}
.fdd-kv-row:last-child{border-bottom:none;}
.fdd-kv-lbl{width:110px;flex-shrink:0;color:var(--text4);font-family:var(--mono);font-size:10px;
  text-transform:uppercase;letter-spacing:.5px;padding-top:2px;}
.fdd-kv-val{flex:1;color:var(--text2);line-height:1.55;}

.fdd-sec{background:var(--surface);border:1px solid var(--border);border-radius:11px;margin-bottom:8px;overflow:hidden;box-shadow:var(--depth-1);transition:box-shadow .3s var(--ease-cinematic);}
.fdd-sec.open{box-shadow:var(--depth-glow);}
.fdd-sec-hdr{
  display:flex;align-items:center;gap:9px;padding:13px 16px;cursor:pointer;
  user-select:none;transition:background .1s;
}
.fdd-sec-hdr:hover{background:var(--surface2);}
.fdd-sec-chev{
  font-size:11px;color:var(--text4);transition:transform .15s;flex-shrink:0;
  display:inline-block;width:10px;
}
.fdd-sec.open .fdd-sec-chev{transform:rotate(90deg);color:var(--accent);}
.fdd-sec-title{font-size:12.5px;font-weight:600;color:var(--text);flex:1;}
.fdd-sec-meta{font-size:10.5px;color:var(--text4);font-family:var(--mono);flex-shrink:0;}
.fdd-sec-body{display:none;border-top:1px solid var(--border);}
.fdd-sec.open .fdd-sec-body{display:block;}

.fdd-signal-list{display:flex;flex-direction:column;}
.fdd-signal{display:flex;gap:10px;padding:11px 18px;border-bottom:1px solid var(--border);font-size:12px;line-height:1.55;color:var(--text2);}
.fdd-signal:last-child{border-bottom:none;}
.fdd-signal-icon{flex-shrink:0;font-size:13px;line-height:1.55;}

.fdd-empty{padding:18px;font-size:11.5px;color:var(--text4);text-align:center;}

/* ── ORION Catalyst Intelligence™ ── */
.fdd-intel-top{display:flex;gap:20px;align-items:center;padding:16px;border-bottom:1px solid var(--border);}
.fdd-score-ring{
  width:100px;height:100px;border-radius:50%;flex-shrink:0;
  background:conic-gradient(var(--rc) calc(var(--pct)*1%), var(--surface3) 0);
  display:flex;align-items:center;justify-content:center;
  filter:drop-shadow(0 0 18px color-mix(in srgb, var(--rc) 40%, transparent));
}
.fdd-score-ring-inner{
  width:80px;height:80px;border-radius:50%;background:var(--surface);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
}
.fdd-score-ring-num{font-size:25px;font-weight:700;font-family:var(--mono);line-height:1;}
.fdd-score-ring-lbl{font-size:8px;color:var(--text4);text-transform:uppercase;letter-spacing:.4px;margin-top:2px;}
.fdd-intel-top-body{flex:1;min-width:0;}
.fdd-intel-tier{font-size:14px;font-weight:700;letter-spacing:.3px;margin-bottom:4px;}
.fdd-intel-sub{font-size:11.5px;color:var(--text3);line-height:1.55;margin-bottom:6px;}
.fdd-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--border);}
.fdd-metric-tile{padding:12px 14px;background:var(--surface);display:flex;flex-direction:column;gap:5px;min-height:88px;}
.fdd-metric-lbl{font-size:8.5px;color:var(--text4);text-transform:uppercase;letter-spacing:.5px;font-family:var(--mono);}
.fdd-metric-val{font-size:17px;font-weight:700;font-family:var(--mono);line-height:1.1;}
.fdd-metric-tier-pill{font-size:9px;font-weight:700;padding:2px 7px;border-radius:4px;display:inline-block;width:fit-content;letter-spacing:.3px;}
.fdd-metric-note{font-size:9.5px;color:var(--text4);line-height:1.45;}
.fdd-hero-catalyst-chip{
  font-family:var(--mono);font-size:9px;font-weight:700;padding:2px 8px;border-radius:3px;
  border:1px solid;white-space:nowrap;
}

@media(max-width:520px){
  .fdd-hero{flex-direction:column;gap:10px;}
  .fdd-hero-date{width:auto;border-left:none;border-bottom:3px solid var(--ic,var(--accent));padding:0 0 6px;
    display:flex;align-items:baseline;gap:8px;}
  .fdd-kv-row{flex-direction:column;gap:2px;}
  .fdd-kv-lbl{width:auto;}
  .fdd-intel-top{flex-direction:column;align-items:flex-start;}
}

/* ── PREDICTION HISTORY ── */
.pred-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;}
.pred-filter-field{display:flex;flex-direction:column;gap:4px;min-width:150px;}
.pred-filter-field label{font:600 9px var(--mono);letter-spacing:.04em;color:var(--text4);text-transform:uppercase;}
.pred-filter-input,.pred-filter-select{
  padding:6px 10px;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r);font-size:11.5px;color:var(--text2);font-family:var(--font);
}
.pred-filter-input{flex:1;min-width:140px;}
.pred-filter-input::placeholder{color:var(--text4);}
.pred-list{display:flex;flex-direction:column;gap:4px;}
.pred-row{
  display:flex;align-items:center;gap:14px;padding:11px 14px;
  background:var(--surface);border:1px solid var(--border);border-radius:4px;
  flex-wrap:wrap;transition:border-color .1s;
  animation:orion-panel-in .45s var(--ease-cinematic) both;
}
.pred-row:hover{border-color:var(--border2);}
.pred-bundle-check{flex:0 0 auto;width:15px;height:15px;cursor:pointer;accent-color:var(--accent);}
.pred-co{flex:1 1 160px;min-width:0;}
.pred-name{font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.pred-metric{flex:0 0 auto;text-align:center;min-width:56px;}
.pred-mlbl{font-size:8.5px;color:var(--text4);font-family:var(--mono);text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px;}
.pred-mval{font-size:12px;font-weight:600;color:var(--text2);font-family:var(--mono);}

/* ── NEWS ── */
.news-filter-bar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:9px 14px;margin-bottom:10px;background:var(--surface);border:1px solid var(--border);
  border-radius:4px;font-size:11.5px;color:var(--text3);
}
.news-item{
  display:block;padding:11px 14px;background:var(--surface);border:1px solid var(--border);
  border-radius:4px;text-decoration:none;margin-bottom:4px;
  transition:border-color .1s;animation:orion-news-dock .4s var(--ease-cinematic) both;
}
.news-item:hover{border-color:var(--border2);}
/* A headline docking into the network — a brief accent pulse on the leading edge as it
   arrives, then it settles into the same quiet row every other item has. Only border-left-
   color is animated (never border-left-width) so the row never shifts its own layout. */
@keyframes orion-news-dock{
  0%{transform:translateX(-8px);border-left-color:var(--accent);}
  100%{transform:translateX(0);border-left-color:var(--border);}
}
.news-title{font-size:12.5px;font-weight:500;color:var(--text);line-height:1.45;margin-bottom:5px;}
.news-meta{display:flex;align-items:center;gap:10px;}
.news-src{font-size:9.5px;font-weight:600;color:var(--accent);font-family:var(--mono);}
.news-date{font-size:9.5px;color:var(--text4);font-family:var(--mono);}
.news-desc{font-size:11px;color:var(--text3);line-height:1.5;margin-top:5px;}

/* ── LOADING ── */
.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px;gap:10px;}
.spinner{width:18px;height:18px;border:2px solid var(--surface3);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-txt{font-size:11px;color:var(--text4);font-family:var(--mono);}

/* ── TIER GATING ── */
.track-record-lock-badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-family:var(--mono);
  color:var(--green);background:rgba(34,197,94,.10);border:1px solid rgba(34,197,94,.3);
  border-radius:5px;padding:4px 9px;font-weight:600;}

/* ── PREMIUM UPGRADE CARDS ──
   One design language for every locked feature in the product: a real (never fabricated)
   blurred preview where the underlying data already exists, then What's Locked / Why It
   Matters / What You Get / a real CTA button / the recommended plan — always all five,
   never a bare "locked" placeholder. `--lock-accent` is set inline per card (blue=Starter,
   purple=Analyst/ORION Brain, green=Fund) so the same three colors mean the same three
   tiers everywhere they appear in the product. */
.lock-card{position:relative;border:1px solid var(--border2);border-radius:12px;overflow:hidden;
  background:linear-gradient(165deg,var(--surface2),var(--surface) 65%);margin-bottom:10px;
  box-shadow:0 1px 0 rgba(255,255,255,.02) inset;}
.lock-card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--lock-accent,var(--accent)) 40%,var(--lock-accent,var(--accent)) 60%,transparent);
  opacity:.55;}
.lock-preview{position:relative;max-height:132px;overflow:hidden;
  -webkit-mask-image:linear-gradient(to bottom,#000 25%,transparent 96%);
  mask-image:linear-gradient(to bottom,#000 25%,transparent 96%);}
.lock-preview>*{filter:blur(4.5px) saturate(.65);opacity:.5;pointer-events:none;user-select:none;transform:scale(1.01);}
.lock-preview-scrim{position:absolute;inset:0;background:linear-gradient(180deg,transparent 0%,var(--surface) 92%);}
.lock-preview-glyph{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:13px;border:1px solid;backdrop-filter:blur(2px);}
.lock-card-body{padding:18px 20px 20px;position:relative;}
.lock-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px;flex-wrap:wrap;}
.lock-card-glyph{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:14px;border:1px solid;flex:none;}
.lock-card-badge{font:700 9px/1 var(--mono);letter-spacing:.06em;padding:4px 9px;border-radius:20px;white-space:nowrap;}
.lock-card-title{font-size:15px;font-weight:700;letter-spacing:-.01em;margin-bottom:7px;color:var(--text);}
.lock-card-why{font-size:12px;color:var(--text2);line-height:1.55;margin-bottom:13px;max-width:52ch;}
.lock-card-benefits{list-style:none;padding:0;margin:0 0 17px;display:flex;flex-direction:column;gap:6.5px;}
.lock-card-benefits li{font-size:11.5px;color:var(--text3);padding-left:19px;position:relative;line-height:1.45;}
.lock-card-benefits li::before{content:'✓';position:absolute;left:0;top:0;color:var(--lock-accent,var(--accent));font-weight:700;font-size:11px;}
.lock-card-cta{width:100%;padding:12px 18px;border-radius:8px;border:none;font:700 12.5px/1 var(--font);
  cursor:pointer;color:#04070a;display:flex;align-items:center;justify-content:center;gap:6px;
  transition:opacity .15s,transform .1s;}
.lock-card-cta:hover{opacity:.9;}
.lock-card-cta:active{transform:scale(.98);}
@media(max-width:640px){
  .lock-card-body{padding:15px 16px 17px;}
  .lock-card-title{font-size:14px;}
  .lock-card-why{font-size:11.5px;}
  .lock-preview{max-height:96px;}
}

@media(max-width:900px){
  button,.chip,.search-submit,.tb-btn,.gm-wt-open,.upgrade-send{min-height:44px;}
}
.locked{position:relative;opacity:.45;cursor:not-allowed!important;}
.locked::after{content:attr(data-lock);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);
  background:var(--surface3);border:1px solid var(--border2);color:var(--text2);font-size:10px;
  white-space:nowrap;padding:4px 9px;border-radius:5px;pointer-events:none;font-family:var(--mono);}
.upgrade-modal{display:none;position:fixed;inset:0;z-index:200;background:rgba(0,0,0,0.75);
  backdrop-filter:blur(6px);align-items:center;justify-content:center;}
.upgrade-modal.open{display:flex;}
.upgrade-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);
  width:90%;max-width:480px;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,0.5);}
.upgrade-hdr{padding:18px 22px 14px;border-bottom:1px solid var(--border);}
.upgrade-hdr-top{display:flex;align-items:center;gap:10px;}
.upgrade-glyph{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:14px;border:1px solid;flex:none;}
.upgrade-badge{font-size:9px;font-family:var(--mono);letter-spacing:.12em;color:var(--amber);
  background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.25);border-radius:4px;padding:2px 8px;flex:1;}
.upgrade-close{background:none;border:none;color:var(--text3);cursor:pointer;font-size:16px;padding:2px 6px;transition:color .1s;flex:none;}
.upgrade-close:hover{color:var(--text);}
.upgrade-title{font-size:16px;font-weight:600;margin-top:12px;letter-spacing:-.2px;}
.upgrade-why{font-size:12.5px;color:var(--text2);margin-top:6px;line-height:1.55;}
.upgrade-benefits{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:6px;}
.upgrade-benefits li{font-size:11.5px;color:var(--text3);padding-left:19px;position:relative;line-height:1.45;}
.upgrade-benefits li::before{content:'✓';position:absolute;left:0;top:0;color:var(--accent);font-weight:700;font-size:11px;}
.upgrade-sub{font-size:12px;color:var(--text3);margin-top:4px;line-height:1.5;}
.upgrade-body{padding:18px 22px;}
.upgrade-tiers{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;}
.upgrade-tier{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;
  border:1px solid var(--border);border-radius:7px;cursor:pointer;transition:border-color .12s,background .12s;}
.upgrade-tier:hover{border-color:var(--border2);background:var(--surface2);}
.upgrade-tier.recommended{border-color:rgba(59,130,246,.4);background:var(--accent-dim);}
.upgrade-tier-info{}
.upgrade-tier-name{font-size:13px;font-weight:600;}
.upgrade-tier-desc{font-size:11px;color:var(--text3);margin-top:2px;}
.upgrade-tier-price{font-size:12px;font-family:var(--mono);color:var(--text2);white-space:nowrap;}
.upgrade-tier-price span{font-size:16px;font-weight:700;color:var(--text);}
.upgrade-divider{border:none;border-top:1px solid var(--border);margin:14px 0;}
.upgrade-email-label{font-size:11.5px;color:var(--text2);margin-bottom:7px;display:block;}
.upgrade-email-row{display:flex;gap:8px;}
.upgrade-email-input{flex:1;background:var(--bg);border:1px solid var(--border2);border-radius:6px;
  color:var(--text);font-size:13px;padding:9px 12px;font-family:var(--font);transition:border-color .12s;}
.upgrade-email-input:focus{outline:none;border-color:var(--accent);}
.upgrade-email-input::placeholder{color:var(--text4);}
.upgrade-send{padding:9px 16px;background:var(--accent);border:none;border-radius:6px;
  color:#fff;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .1s;}
.upgrade-send:hover{background:#2563eb;}
.upgrade-send:disabled{opacity:.5;cursor:not-allowed;}
.upgrade-note{font-size:10px;color:var(--text4);font-family:var(--mono);margin-top:10px;}
.tier-chip{font-size:8px;font-family:var(--mono);letter-spacing:.1em;padding:1px 5px;border-radius:3px;font-weight:700;}
.tier-free{background:var(--surface3);color:var(--text3);border:1px solid var(--border);}
.tier-analyst{background:var(--accent-dim);color:var(--accent);border:1px solid rgba(59,130,246,.25);}
.tier-fund{background:var(--green-dim);color:var(--green);border:1px solid rgba(34,197,94,.25);}
.tier-enterprise{background:var(--purple-dim);color:var(--purple);border:1px solid rgba(167,139,250,.25);}

/* ── EXPLAINABILITY MODAL ── */
.explain-modal{display:none;position:fixed;inset:0;z-index:200;background:rgba(0,0,0,0.75);
  backdrop-filter:blur(6px);align-items:center;justify-content:center;padding:20px;}
.explain-modal.open{display:flex;}
.explain-box{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);
  width:100%;max-width:720px;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 24px 80px rgba(0,0,0,0.5);}
.explain-hdr{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;
  align-items:center;justify-content:space-between;flex-shrink:0;}
.explain-title{font-size:15px;font-weight:600;letter-spacing:-.2px;}
.explain-close{background:none;border:none;color:var(--text3);cursor:pointer;font-size:16px;padding:2px 6px;transition:color .1s;}
.explain-close:hover{color:var(--text);}
.explain-tabs{display:flex;gap:2px;padding:0 20px;border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto;}
.explain-tab{padding:10px 12px;font-size:11.5px;font-weight:600;color:var(--text3);background:none;
  border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .1s;white-space:nowrap;font-family:var(--font);}
.explain-tab:hover{color:var(--text2);}
.explain-tab.active{color:var(--accent);border-bottom-color:var(--accent);}
.explain-body{padding:16px 20px;overflow-y:auto;flex:1;}
.explain-disclaimer{padding:10px 20px;border-top:1px solid var(--border);font-size:9.5px;
  color:var(--text4);line-height:1.5;flex-shrink:0;}

.explain-sec{margin-bottom:16px;}
.explain-sec-title{font-size:10.5px;font-weight:700;color:var(--text2);text-transform:uppercase;
  letter-spacing:.5px;margin-bottom:7px;}
.explain-sec-body{font-size:12.5px;color:var(--text2);line-height:1.65;}
.explain-list{list-style:none;display:flex;flex-direction:column;gap:6px;}
.explain-list li{font-size:12px;color:var(--text2);line-height:1.55;padding-left:14px;position:relative;}
.explain-list li::before{content:"•";position:absolute;left:0;color:var(--text4);}
.explain-empty{font-size:12px;color:var(--text4);font-style:italic;}

.explain-badge{display:inline-block;font-size:8.5px;font-weight:700;font-family:var(--mono);
  padding:2px 6px;border-radius:3px;letter-spacing:.3px;text-transform:uppercase;white-space:nowrap;}
.explain-badge.verified{background:var(--green-dim);color:var(--green);}
.explain-badge.estimated{background:var(--amber-dim);color:var(--amber);}
.explain-badge.missing{background:var(--surface3);color:var(--text4);}
.explain-badge.lowconf{background:var(--red-dim);color:var(--red);}

.explain-comp{padding:10px 0;border-bottom:1px solid var(--border);}
.explain-comp:last-child{border-bottom:none;}
.explain-comp-hdr{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;flex-wrap:wrap;}
.explain-comp-name{font-size:12.5px;font-weight:600;color:var(--text);}
.explain-comp-nums{font-size:10.5px;font-family:var(--mono);color:var(--text3);white-space:nowrap;}
.explain-comp-reason{font-size:11.5px;color:var(--text3);line-height:1.55;margin-top:3px;}
.explain-comp-badges{display:flex;gap:5px;margin-top:6px;flex-wrap:wrap;}

.explain-btn{padding:8px 14px;background:var(--surface2);border:1px solid var(--border2);
  border-radius:7px;color:var(--text2);font-size:11.5px;font-weight:600;cursor:pointer;
  transition:all .12s;display:inline-flex;align-items:center;gap:6px;font-family:var(--font);}
.explain-btn:hover{border-color:var(--accent);color:var(--accent);}

/* ── RESPONSIVE ── */
.sb-backdrop{display:none;}
.sb-close{display:none;}
@media(max-width:900px){
  .tb-menu{display:block;}
  .sidebar{
    position:fixed;left:0;top:0;bottom:0;z-index:210;
    transform:translateX(-100%);transition:transform .18s ease;
    box-shadow:0 0 40px rgba(0,0,0,0.5);
  }
  .sidebar.open{transform:translateX(0);}
  /* .sidebar becomes a fixed full-height overlay above (visually covering) the topbar's own
     #btnMenu toggle at this width, so that button can no longer be used to close the drawer
     once it's open -- this is the drawer's own, always-reachable close control instead. */
  .sb-close{
    display:flex;position:absolute;top:14px;right:14px;z-index:2;
    width:32px;height:32px;align-items:center;justify-content:center;
    background:var(--surface2);border:1px solid var(--border2);border-radius:8px;
    color:var(--text2);cursor:pointer;font-size:15px;line-height:1;
  }
  .sb-close:hover{border-color:var(--accent);color:var(--accent);}
  .sb-backdrop.open{
    display:block;position:fixed;inset:0;z-index:205;
    background:rgba(0,0,0,0.5);
  }
  .dash-row{flex-direction:column;}
  .sub-scores{grid-template-columns:repeat(2,1fr);}
  .home-widgets{grid-template-columns:1fr;}
  .home-core-nav{grid-template-columns:repeat(2,minmax(0,1fr));}
  .daily-radar-grid{grid-template-columns:1fr;}
  .chart-grid{grid-template-columns:1fr;}
  #homeDash{margin-top:18px;}
  .stock-metrics{grid-template-columns:repeat(2,1fr);}
  .mc:nth-child(2){border-right:none;}
  .forecast-grid{grid-template-columns:1fr;}
  .search-fields{flex-direction:column;}
  .sf{border-right:none;border-bottom:1px solid var(--border);}
  .sf:last-child{border-bottom:none;}
  .welcome{padding:32px 16px 16px;}
  .action-row{gap:6px;}
  .act-btn{flex:1 1 calc(50% - 6px);justify-content:center;}
  .committee-role{width:auto;}
  .verdict-cols{grid-template-columns:1fr;}
  .verdict-stats{flex-direction:column;gap:10px;}
  .fda-hdr{flex-direction:column;align-items:flex-start;}
  .fda-tabs{width:100%;overflow-x:auto;}
  .cal-grid-impact{grid-template-columns:1fr;}
  .fda-quarantine-list{grid-template-columns:1fr;}
  .cal-cell{min-height:76px;}
}
@media(max-width:520px){
  .topbar{padding-inline:10px;}
  .tb-src,.live-badge{display:none;}
  #surfaceStatusBadge{max-width:none;flex-shrink:0;font-size:7.5px;}
  .tb-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .welcome{width:100%;min-width:0;padding-inline:16px;}
  .home-core-nav,.daily-radar-home{min-width:0;}
  .home-core-card{min-height:88px;padding:10px;}
  .daily-radar-heading{align-items:flex-start;}
  .report-row{grid-template-columns:1fr;align-items:start;}
  .preference-grid{grid-template-columns:1fr;}
  .hero-scene{padding-inline:0;}
  .hero-content{width:100%;min-width:0;}
  .hero-headline{font-size:clamp(21px,7vw,27px);letter-spacing:-.7px;}
  .hero-sub{font-size:13px;overflow-wrap:anywhere;}
  .search-box,.search-fields,.search-footer,.quick-row{min-width:0;max-width:100%;}
  .search-footer{gap:8px;align-items:flex-start;}
  .search-hint{min-width:0;overflow-wrap:anywhere;line-height:1.45;}
  .search-submit{flex:none;}
  .quick-row{align-items:flex-start;}
  .wc-stats{width:100%;justify-content:center;gap:8px 12px;text-align:center;}
  .wcs{flex-direction:column;align-items:center;gap:1px;}
  .wcs-lbl{font-size:8px;}
  .stock-metrics{grid-template-columns:repeat(2,1fr);}
  .score-wrap{flex-direction:column;}
  .sub-scores{grid-template-columns:1fr;}
  .wc-stats{flex-wrap:wrap;row-gap:4px;}
  .cal-card{flex-direction:column;gap:8px;}
  .cal-card-date{
    display:flex;flex-direction:row;align-items:baseline;gap:6px;width:auto;
    border-left:none;border-bottom:3px solid var(--ic,var(--accent));padding:0 0 6px;
  }
  .cal-card-provenance{align-items:flex-start;flex-direction:column;gap:5px;}
  .fda-quarantine{padding:0 12px 12px;}
  .fda-quarantine-hdr{align-items:flex-start;flex-direction:column;gap:0;padding-bottom:8px;}
  .cal-grid{font-size:10px;}
  .cal-cell{min-height:58px;padding:4px;}
  .cal-pill{font-size:8px;padding:1px 3px;}
  .cal-dow{padding:6px 2px;font-size:8px;}
  .cal-month-label{min-width:0;font-size:12.5px;}
}

/* ── GROWTH MODULES (js/growth-modules.js) ── */
.gm-loading,.gm-error,.gm-empty,.gm-lowsample{padding:16px;font-size:12.5px;border-radius:8px;}
.gm-loading{color:var(--text3);}
.gm-error{color:var(--red);background:rgba(239,68,68,0.08);border:1px solid rgba(239,68,68,0.25);}
.gm-empty{color:var(--text3);border:1px dashed var(--border2);text-align:center;}
.gm-lowsample{color:var(--amber);background:rgba(245,158,11,0.08);border:1px solid rgba(245,158,11,0.25);}

/* Reasoning Sequence Loader — real pipeline stages, not a spinner. The connecting line
   fills in behind completed stages; the active stage pulses (it's genuinely in flight, not
   decoration); future stages sit dim until their turn. */
.gm-awaken-wrap{width:96px;height:96px;flex-shrink:0;margin:0 auto 4px;}
.gm-awaken-wrap canvas{display:block;width:100%;height:100%;}
.gm-reason-loader{display:flex;flex-direction:column;padding:6px 2px;}
.gm-reason-step{display:flex;align-items:center;gap:10px;padding:6px 0;position:relative;}
.gm-reason-step::before{
  content:"";position:absolute;left:3.5px;top:-2px;bottom:-2px;width:1px;background:var(--border2);z-index:0;
}
.gm-reason-step:first-child::before{top:50%;}
.gm-reason-step:last-child::before{bottom:50%;}
.gm-reason-dot{width:8px;height:8px;border-radius:50%;background:var(--surface3);border:1px solid var(--border2);flex-shrink:0;position:relative;z-index:1;transition:background .3s var(--ease-cinematic),border-color .3s var(--ease-cinematic);}
.gm-reason-step.done .gm-reason-dot{background:var(--accent);border-color:var(--accent);}
.gm-reason-step.active .gm-reason-dot{border-color:var(--accent);animation:orion-orb-pulse 1.1s ease-in-out infinite;}
.gm-reason-label{font-family:var(--mono);font-size:11.5px;color:var(--text4);transition:color .3s var(--ease-cinematic);}
.gm-reason-step.done .gm-reason-label{color:var(--text3);}
.gm-reason-step.active .gm-reason-label{color:var(--text);}
/* Ticks up every ~900ms once the final (typically longest-running) stage is reached — a real
   elapsed-seconds count, not a fabricated percentage, so a 40-60s final-synthesis wait reads
   as "actively working" instead of "possibly hung." tabular-nums keeps the digit width steady
   so the line doesn't visibly jitter as the count grows past one digit. */
.gm-reason-elapsed{color:var(--accent);font-variant-numeric:tabular-nums;opacity:.85;}

/* Module 1 — Track Record */
.gm-tr-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:14px;}
.gm-stat{background:var(--surface);padding:14px;}
.gm-stat-lbl{font-family:var(--mono);font-size:9.5px;color:var(--text4);text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px;}
.gm-stat-val{font-family:var(--font);font-size:20px;font-weight:700;color:var(--text);}
.gm-stat-val.accent{color:var(--accent);}
.gm-chart-wrap{height:180px;margin-bottom:10px;}
.gm-tr-note{font-size:11px;color:var(--text3);line-height:1.55;}
.gm-tr-note a{color:var(--accent);}

.gm-timeline{display:flex;flex-direction:column;gap:0;}
.gm-tl-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);}
.gm-tl-item:last-child{border-bottom:none;}
.gm-tl-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:4px;}
.gm-tl-co{font-size:13px;font-weight:600;color:var(--text);}
.gm-tl-dates{font-size:10.5px;font-family:var(--mono);color:var(--text3);display:flex;gap:6px;align-items:center;margin-top:3px;}
.gm-tl-arrow{color:var(--text4);}
.gm-tl-outcome{font-size:11.5px;color:var(--text2);margin-top:4px;}

/* Module 2 — Freemium Sample Report */
.gm-sample-card{position:relative;border:1px solid var(--border2);border-radius:12px;overflow:hidden;background:var(--surface);}
.gm-demo-flag,.gm-live-flag{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.06em;padding:8px 14px;}
.gm-demo-flag{color:var(--amber);background:rgba(245,158,11,0.12);border-bottom:1px solid rgba(245,158,11,0.3);}
.gm-demo-flag::before{content:'⚠ ';}
.gm-live-flag{color:var(--green);background:rgba(34,197,94,0.08);}

/* Applied to the whole mount container (not just the top banner) whenever a growth-modules
   card list is rendering simulated/fictional data — the top banner alone was easy to miss once
   a user scrolled past it, and nothing distinguished individual company/event cards further
   down from real ones. The diagonal hatch + corner ribbon repeat that signal at every scroll
   depth, matching the print/screenshot-safe pattern convention (still visible in grayscale or
   a printed PDF, unlike a color-only cue). toggled via el.classList.toggle('gm-demo-zone',isDemo)
   in every render*(...,isDemo) function in this file — see MODULE comments above each. */
.gm-demo-zone{
  position:relative;
  background-image:repeating-linear-gradient(135deg,rgba(245,158,11,0.09) 0 10px,rgba(245,158,11,0.16) 10px 20px);
  outline:2px dashed rgba(245,158,11,0.55);
  outline-offset:2px;
  border-radius:10px;
}
.gm-demo-zone::after{
  /* Inset (not overflowing the box) on purpose — this class gets applied to mount containers
     whose own parent's overflow behavior isn't controlled from here, and a corner ribbon that
     overflows its box silently disappears under any ancestor's overflow:hidden. */
  content:'SIMULATED';
  position:absolute;top:8px;right:8px;z-index:5;
  font-family:var(--mono);font-size:9px;font-weight:800;letter-spacing:.08em;
  color:#1a1206;background:var(--amber);
  padding:3px 9px;border-radius:4px;
  pointer-events:none;
  box-shadow:0 1px 3px rgba(0,0,0,0.3);
}
.gm-sample-unlocked{padding:14px 16px 6px;}
.gm-sample-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.gm-sample-co{font-size:14.5px;font-weight:700;color:var(--text);}
.gm-sample-badge{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--accent);background:rgba(59,130,246,0.12);border:1px solid rgba(59,130,246,0.3);border-radius:5px;padding:3px 8px;}
.gm-sample-reason{font-size:12px;color:var(--text2);line-height:1.5;margin-top:6px;}
.gm-sample-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:14px 16px;}
.gm-sm-lbl{font-family:var(--mono);font-size:9px;color:var(--text4);text-transform:uppercase;margin-bottom:4px;}
.gm-sm-val{font-family:var(--mono);font-size:16px;font-weight:700;color:var(--text);}
.gm-sample-cta{width:100%;padding:12px;border:none;background:var(--accent);color:#fff;font:700 12.5px/1 var(--font);border-radius:0;cursor:pointer;}
.gm-sample-cta:hover{opacity:.9;}
.gm-sample-note{padding:9px 16px 12px;font-size:10.5px;color:var(--text4);line-height:1.5;}

/* Module 3 — Explain infographic */
.gm-explain-infographic{display:flex;gap:20px;align-items:center;flex-wrap:wrap;padding:14px 0;border-bottom:1px solid var(--border);margin-bottom:6px;}
.gm-inf-donut-wrap{width:120px;height:120px;flex-shrink:0;}
.gm-inf-rows{flex:1;min-width:220px;display:flex;flex-direction:column;gap:11px;}
.gm-inf-row{display:flex;flex-direction:column;gap:4px;animation:orion-fade-up .45s var(--ease-cinematic) both;}
.gm-inf-rows .gm-inf-row:nth-child(1){animation-delay:.04s;}
.gm-inf-rows .gm-inf-row:nth-child(2){animation-delay:.1s;}
.gm-inf-rows .gm-inf-row:nth-child(3){animation-delay:.16s;}
.gm-inf-rows .gm-inf-row:nth-child(4){animation-delay:.22s;}
.gm-inf-rows .gm-inf-row:nth-child(5){animation-delay:.28s;}
.gm-inf-bar-fill{transition:width .8s var(--ease-cinematic);}
.gm-inf-row-top{display:flex;align-items:center;gap:8px;}
.gm-inf-row-bottom{display:flex;align-items:center;gap:10px;padding-left:15px;flex-wrap:wrap;}
.gm-inf-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.gm-inf-name{font-size:11.5px;color:var(--text2);flex:0 0 auto;min-width:110px;}
.gm-inf-bar-track{flex:1;height:5px;background:var(--surface3);border-radius:3px;overflow:hidden;}
.gm-inf-bar-fill{height:100%;border-radius:3px;}
.gm-inf-val{font-family:var(--mono);font-size:10.5px;color:var(--text3);white-space:nowrap;}
.gm-inf-weight{color:var(--text4);}
.gm-inf-conf{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.04em;padding:2px 6px;border:1px solid;border-radius:20px;}
.gm-inf-verify{font-size:10.5px;color:var(--accent);}
.gm-inf-verify:hover{text-decoration:underline;}
.gm-inf-verify-disabled{color:var(--text4);cursor:default;}

/* Module 4 — Alert settings */
.gm-alert-section-title{font-size:10.5px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px;}
.gm-alert-channels{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:10px;}
.gm-chan{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text2);cursor:pointer;}
.gm-chan.locked{color:var(--text4);cursor:not-allowed;}
.gm-alert-field{display:flex;flex-direction:column;gap:5px;margin-bottom:10px;max-width:360px;}
.gm-alert-field label{font-size:11px;color:var(--text3);}
.gm-alert-field input{background:var(--surface2);border:1px solid var(--border2);border-radius:6px;padding:8px 10px;color:var(--text);font-size:12.5px;font-family:var(--mono);}
.gm-alert-tickers{display:flex;flex-direction:column;gap:10px;}
.gm-alert-ticker{border:1px solid var(--border);border-radius:8px;padding:10px 12px;animation:orion-panel-in .45s var(--ease-cinematic) both;}
.gm-alert-ticker-name{font-size:13px;font-weight:600;color:var(--text);margin-bottom:8px;}
.gm-alert-events{display:flex;flex-direction:column;gap:6px;}
.gm-ev{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text2);cursor:pointer;}
.gm-alert-savemsg{font-size:11px;color:var(--green);margin-top:10px;min-height:14px;}
.gm-alert-savemsg.flash{animation:orion-fade-up .4s var(--ease-cinematic);}

/* Module 5 — Internal Risk Monitor */
.gm-risk-card{display:flex;flex-direction:column;}
.gm-risk-row{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-top:1px solid var(--border);}
.gm-risk-row:first-of-type{border-top:none;}
.gm-risk-sev{flex-shrink:0;font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border:1px solid;border-radius:20px;margin-top:1px;}
.gm-risk-cat{font-size:12px;font-weight:600;color:var(--text);}
.gm-risk-summary{font-size:11.5px;color:var(--text3);line-height:1.5;margin-top:2px;}
.gm-risk-source{display:inline-block;margin-top:10px;font-size:11px;color:var(--accent);}
.gm-risk-source:hover{text-decoration:underline;}

/* Module 6 — PoS + Peak Sales */
.gm-pos-card{display:flex;flex-direction:column;gap:8px;}
.gm-pos-row{display:flex;align-items:center;gap:10px;}
.gm-pos-phase{font-size:11.5px;color:var(--text2);width:70px;flex-shrink:0;}
.gm-pos-bar-track{flex:1;height:6px;background:var(--surface3);border-radius:3px;overflow:hidden;}
.gm-pos-bar-fill{height:100%;border-radius:3px;background:var(--accent);transition:width .8s var(--ease-cinematic);}
.gm-pos-val{font-family:var(--mono);font-size:11px;color:var(--text3);width:40px;text-align:right;}
.gm-peak-card{display:flex;flex-direction:column;gap:12px;}
.gm-peak-inputs{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.gm-peak-inputs label{display:flex;flex-direction:column;gap:4px;font-size:10.5px;color:var(--text3);}
.gm-peak-inputs input{background:var(--surface2);border:1px solid var(--border2);border-radius:6px;padding:7px 9px;color:var(--text);font-size:12px;font-family:var(--mono);}
.gm-peak-result{border-top:1px solid var(--border);padding-top:10px;}
.gm-peak-lbl{font-family:var(--mono);font-size:9.5px;color:var(--text4);text-transform:uppercase;letter-spacing:.05em;}
.gm-peak-val{font-family:var(--mono);font-size:24px;font-weight:700;color:var(--green);margin:2px 0 4px;transition:transform .3s var(--ease-cinematic);}
.gm-peak-val.flash{animation:orion-value-flash .5s var(--ease-cinematic);}
@keyframes orion-value-flash{0%{transform:scale(1);}35%{transform:scale(1.06);text-shadow:0 0 16px var(--glow-blue-soft);}100%{transform:scale(1);}}
.gm-peak-formula{font-size:10px;color:var(--text4);line-height:1.5;}

/* Module 7 — Reasoning Chain */
.gm-chain{display:flex;flex-direction:column;padding-bottom:10px;margin-bottom:6px;border-bottom:1px solid var(--border);}
.gm-chain-step{display:flex;gap:12px;animation:orion-fade-up .5s var(--ease-cinematic) both;}
.gm-chain .gm-chain-step:nth-child(1){animation-delay:.03s;}
.gm-chain .gm-chain-step:nth-child(2){animation-delay:.13s;}
.gm-chain .gm-chain-step:nth-child(3){animation-delay:.23s;}
.gm-chain .gm-chain-step:nth-child(4){animation-delay:.33s;}
.gm-chain-marker{display:flex;flex-direction:column;align-items:center;flex-shrink:0;}
.gm-chain-num{width:24px;height:24px;border-radius:50%;border:1px solid;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:700;flex-shrink:0;}
.gm-chain-line{width:1px;flex:1;background:var(--border2);margin:4px 0;min-height:14px;}
.gm-chain-body{padding-bottom:14px;}
.gm-chain-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px;margin-top:2px;}
.gm-chain-text{font-size:12px;color:var(--text2);line-height:1.55;}
.gm-chain-step-dim .gm-chain-text{color:var(--text4);}

/* Module 8 — Command Center */
.gm-cc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.gm-cc-panel{
  background:var(--surface);padding:14px 16px;grid-column:span 2;min-height:120px;
  animation:orion-panel-in .5s var(--ease-cinematic) both;
  transition:background .3s var(--ease-cinematic),box-shadow .3s var(--ease-cinematic);
}
.gm-cc-panel:hover{background:var(--surface2);box-shadow:var(--depth-glow);}
/* Each panel arrives a beat after the last — a briefing being assembled, not a table dropped in at once. */
.gm-cc-grid>.gm-cc-panel:nth-child(1){animation-delay:.02s;}
.gm-cc-grid>.gm-cc-panel:nth-child(2){animation-delay:.08s;}
.gm-cc-grid>.gm-cc-panel:nth-child(3){animation-delay:.14s;}
.gm-cc-grid>.gm-cc-panel:nth-child(4){animation-delay:.2s;}
.gm-cc-grid>.gm-cc-panel:nth-child(5){animation-delay:.26s;}
.gm-cc-grid>.gm-cc-panel:nth-child(6){animation-delay:.32s;}
.gm-cc-panel-wide{grid-column:span 4;}
@media(max-width:900px){.gm-cc-grid{grid-template-columns:1fr;}.gm-cc-panel,.gm-cc-panel-wide{grid-column:span 1;}}
.gm-cc-panel-hdr{font-family:var(--mono);font-size:9.5px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.gm-cc-src{font-weight:500;color:var(--text4);text-transform:none;letter-spacing:0;margin-left:auto;display:flex;align-items:center;gap:5px;}
/* A small live-signal dot — only on panels actually backed by a just-completed fetch, never decorative. */
.gm-cc-src.live::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--green);animation:pulse 2.5s ease infinite;}
.gm-cc-co{font-size:14px;font-weight:700;color:var(--text);margin-bottom:8px;}
.gm-cc-score-row{display:flex;align-items:baseline;gap:10px;}
.gm-cc-score{font-family:var(--mono);font-size:32px;font-weight:700;color:var(--accent);line-height:1;
  animation:orion-score-breathe 5s var(--ease-cinematic) infinite;}
@keyframes orion-score-breathe{0%,100%{text-shadow:0 0 0 transparent;}50%{text-shadow:0 0 14px var(--glow-blue-soft);}}
.gm-cc-score-lbl{font-family:var(--mono);font-size:9px;color:var(--text4);text-transform:uppercase;line-height:1.5;}
.gm-cc-score-lbl span{color:var(--text2);font-size:11px;text-transform:none;}
.gm-cc-fin-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.gm-cc-fin-lbl{font-family:var(--mono);font-size:9px;color:var(--text4);text-transform:uppercase;margin-bottom:3px;}
.gm-cc-fin-val{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--text);transition:color .4s ease;}
.gm-cc-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--border);font-size:11.5px;}
.gm-cc-row:first-of-type{border-top:none;}
.gm-cc-row-d{font-family:var(--mono);color:var(--accent);flex-shrink:0;}
.gm-cc-row-main{color:var(--text2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gm-cc-row-dim{color:var(--text4);}
/* A catalyst emitting a signal — reserved for genuinely near-term (D-7 or closer) or very-high-impact
   rows, the same threshold the FDA calendar already uses for cal-badge-pulse. Motion marks urgency,
   it never runs on a row that isn't actually urgent. */
.gm-cc-row-signal .gm-cc-row-d{animation:orion-badge-pulse 4.5s ease-in-out infinite;}

/* Module 9 — ORION Discovered */
.gm-disc-list{display:flex;flex-direction:column;gap:10px;margin-top:10px;}
.gm-disc-card{
  background:var(--surface);border:1px solid var(--border2);border-radius:10px;padding:14px 16px;
  animation:orion-panel-in .45s var(--ease-cinematic) both;
  transition:border-color .3s var(--ease-cinematic);
}
.gm-disc-card:hover{border-color:var(--purple);}
.gm-disc-cat{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.06em;color:var(--purple);margin-bottom:8px;}
.gm-disc-headline{font-size:13px;color:var(--text2);line-height:1.55;}
.gm-disc-headline strong{color:var(--text);}
.gm-disc-why{font-size:11.5px;color:var(--text3);line-height:1.55;margin-top:6px;padding-left:11px;border-left:2px solid var(--border2);}
.gm-disc-evidence-list{display:flex;flex-direction:column;gap:5px;margin-top:10px;}
.gm-disc-evidence{display:flex;align-items:center;gap:8px;font-size:10.5px;flex-wrap:wrap;}
.gm-disc-ev-src{font-family:var(--mono);font-weight:700;color:var(--text3);background:var(--surface3);border:1px solid var(--border2);padding:1px 6px;border-radius:3px;flex-shrink:0;}
.gm-disc-ev-val{color:var(--text4);}
.gm-disc-evidence a{color:var(--accent);font-family:var(--mono);font-size:10px;}
.gm-disc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border);flex-wrap:wrap;}
.gm-disc-conf{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border:1px solid;border-radius:20px;}
.gm-disc-explore{background:none;border:1px solid var(--border2);color:var(--accent);font-size:11px;font-family:var(--font);padding:5px 11px;border-radius:6px;cursor:pointer;transition:border-color .15s,background .15s;}
.gm-disc-explore:hover{border-color:var(--accent);background:var(--accent-dim);}
/* Discovery graph — the knowledge graph made visible, not a chart: the subject at center,
   each evidenced discovery orbiting it with a line back. */
.gm-disc-graph-wrap{position:relative;height:180px;margin-bottom:6px;}
.gm-disc-graph-wrap canvas{display:block;width:100%;height:100%;cursor:default;}
.gm-disc-graph-tip{
  position:absolute;z-index:5;pointer-events:none;transform:translate(-50%,-130%);
  background:var(--surface2);border:1px solid var(--border2);border-radius:4px;
  padding:7px 10px;font-family:var(--mono);font-size:10px;color:var(--text);
  opacity:0;transition:opacity .12s ease;white-space:nowrap;
}
.gm-disc-graph-tip b{display:block;font-size:10.5px;color:var(--accent);margin-bottom:2px;}
.gm-disc-graph-tip span{color:var(--text4);font-size:9px;}
.gm-disc-graph-tip.show{opacity:1;}

/* Module 10 — ORION Watchtower */
.gm-wt-monitoring{display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:10px 14px;border-bottom:1px solid var(--border);background:rgba(16,185,129,.035)}
.gm-wt-monitoring-label{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.08em;color:var(--green)}
.gm-wt-monitoring-company{font-family:var(--mono);font-size:10px;color:var(--text2);border:1px solid rgba(16,185,129,.22);background:rgba(16,185,129,.07);border-radius:999px;padding:3px 8px}
.gm-wt-teaser{border:1px dashed var(--border2);border-radius:10px;padding:22px;text-align:center;margin-bottom:14px;}
.gm-wt-teaser-count{font-family:var(--mono);font-size:32px;font-weight:700;color:var(--text);line-height:1;}
.gm-wt-teaser-label{font-size:12.5px;color:var(--text2);margin-top:6px;}
.gm-wt-teaser-sub{font-size:11px;color:var(--text4);margin-top:4px;}

.gm-wt-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0 16px;}
.gm-wt-stat{border:1px solid var(--border2);border-radius:10px;padding:13px 14px;background:var(--surface2);
  animation:orion-panel-in .45s var(--ease-cinematic) both;}
.gm-wt-stat-val{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--text);line-height:1;}
.gm-wt-stat-lbl{font-size:10.5px;color:var(--text3);margin-top:6px;letter-spacing:.02em;}
@media(max-width:760px){.gm-wt-summary{grid-template-columns:repeat(2,1fr);}}

.gm-wt-list{display:flex;flex-direction:column;gap:10px;}
.gm-wt-card{
  border:1px solid var(--border2);border-radius:10px;padding:14px 16px;background:var(--surface2);
  border-left:3px solid var(--wt-color,var(--border2));
  animation:orion-panel-in .45s var(--ease-cinematic) both;
}
.gm-wt-card-top{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.gm-wt-level{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.06em;color:var(--wt-color,var(--text3));}
.gm-wt-unverified{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.04em;color:var(--amber);
  border:1px solid var(--amber);padding:1px 6px;border-radius:20px;}
.gm-wt-time{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--text4);}
.gm-wt-entity{font-size:13.5px;font-weight:700;color:var(--text);margin-bottom:5px;}
.gm-wt-what{font-size:12.5px;color:var(--text2);line-height:1.55;margin-bottom:5px;}
.gm-wt-why{font-size:11.5px;color:var(--text3);line-height:1.5;padding-left:10px;border-left:2px solid var(--border2);margin-bottom:8px;}
.gm-wt-disclaimer{font-size:10px;color:var(--text4);font-style:italic;line-height:1.4;margin-bottom:8px;}
.gm-wt-pred-chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:10.5px;color:var(--accent);
  background:var(--accent-dim);border:1px solid var(--border2);border-radius:20px;padding:3px 10px;margin-bottom:8px;cursor:pointer;width:fit-content;}
.gm-wt-pred-chip:hover{border-color:var(--accent);}
.gm-wt-score-chip{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;
  background:var(--surface3);border:1px solid var(--border2);border-radius:6px;padding:6px 10px;margin-bottom:8px;width:fit-content;}
.gm-wt-score-chip.gm-wt-score-locked{cursor:pointer;color:var(--text4);font-family:var(--font);}
.gm-wt-score-chip.gm-wt-score-locked:hover{border-color:var(--purple);}
.gm-wt-up{color:var(--green);font-weight:700;}
.gm-wt-down{color:var(--red);font-weight:700;}
.gm-wt-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:9px;border-top:1px solid var(--border);flex-wrap:wrap;}
.gm-wt-src{font-family:var(--mono);font-size:10px;color:var(--text4);}
.gm-wt-open{background:none;border:1px solid var(--border2);color:var(--accent);font-size:11px;font-family:var(--font);
  padding:5px 11px;border-radius:6px;cursor:pointer;transition:border-color .15s,background .15s;}
.gm-wt-open:hover{border-color:var(--accent);background:var(--accent-dim);}

.gm-wt-brief-badge{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.05em;
  padding:4px 10px;border-radius:20px;border:1px solid;margin-bottom:14px;}
.gm-wt-brief-score-row{display:grid;grid-template-columns:auto auto auto 1fr;gap:10px;align-items:baseline;
  font-size:12px;padding:7px 0;border-bottom:1px solid var(--border);}
.gm-wt-brief-score-row:last-child{border-bottom:none;}
.gm-wt-brief-score-reason{color:var(--text4);font-size:11px;}

/* ── MODULE 11 — ORION Thesis Ledger™ ── */
.tl-entity-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:12px;}
.tl-entity-card{border:1px solid var(--border2);border-radius:11px;padding:14px 15px;cursor:pointer;
  background:var(--surface2);transition:border-color .2s var(--ease-cinematic),transform .2s var(--ease-cinematic);
  animation:orion-panel-in .45s var(--ease-cinematic) both;}
.tl-entity-card:hover{border-color:var(--accent);transform:translateY(-1px);}
.tl-entity-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px;}
.tl-entity-name{font-size:13.5px;font-weight:700;color:var(--text);}
.tl-entity-ver{font-family:var(--mono);font-size:9.5px;color:var(--text4);white-space:nowrap;}
.tl-entity-meta{font-size:11px;color:var(--text4);margin-top:8px;}

.tl-timeline{display:flex;flex-direction:column;}
.tl-tl-step{display:flex;gap:12px;animation:orion-fade-up .4s var(--ease-cinematic) both;}
.tl-tl-marker{display:flex;flex-direction:column;align-items:center;flex-shrink:0;}
.tl-tl-num{width:26px;height:26px;border-radius:50%;border:1px solid;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:11.5px;font-weight:700;flex-shrink:0;}
.tl-tl-line{width:1px;flex:1;background:var(--border2);margin:4px 0;min-height:14px;}
.tl-tl-body{padding-bottom:18px;flex:1;min-width:0;}
.tl-tl-hdr{display:flex;align-items:center;gap:10px;cursor:pointer;flex-wrap:wrap;}
.tl-tl-conf{font-family:var(--mono);font-size:11px;color:var(--text3);}
.tl-tl-date{font-family:var(--mono);font-size:10.5px;color:var(--text4);margin-left:auto;}
.tl-tl-chev{color:var(--text4);transition:transform .2s var(--ease-cinematic);}
.tl-tl-step.open .tl-tl-chev{transform:rotate(90deg);}
.tl-tl-summary{font-size:12px;color:var(--text3);margin-top:6px;}
.tl-tl-detail{display:none;margin-top:14px;padding-top:12px;border-top:1px solid var(--border);}
.tl-tl-step.open .tl-tl-detail{display:block;}
.tl-badge{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.04em;padding:2px 7px;
  border:1px solid;border-radius:20px;white-space:nowrap;}
.tl-diff-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;padding:6px 0;
  border-bottom:1px solid var(--border);}
.tl-diff-row:last-child{border-bottom:none;}
.tl-diff-text{color:var(--text2);}
.tl-diff-src{color:var(--text4);font-family:var(--mono);font-size:10px;margin-left:auto;}
.tl-new-thesis{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border);}
.tl-assumption-row{display:grid;grid-template-columns:2fr 1fr 1.4fr;gap:8px;margin-bottom:8px;align-items:center;}
@media(max-width:640px){.tl-assumption-row{grid-template-columns:1fr;}}
.tl-assum-nolink{font-size:10px;color:var(--text4);font-style:italic;}

/* ── MODULE 12 — ORION Impact Chain™ ── */
.ic-graph-wrap{position:relative;height:150px;margin:12px 0 4px;}
.ic-graph-wrap canvas{display:block;width:100%;height:100%;}
.ic-node-panel{border:1px solid var(--border2);border-radius:11px;padding:16px 18px;margin-bottom:14px;
  background:var(--surface2);min-height:60px;}
.ic-step-list{display:flex;flex-direction:column;gap:9px;}
.ic-step-card{border:1px solid var(--border2);border-radius:10px;padding:13px 15px;cursor:pointer;
  background:var(--surface);transition:border-color .2s var(--ease-cinematic);
  animation:orion-fade-up .4s var(--ease-cinematic) both;border-left:3px solid var(--ic-color,var(--border2));}
.ic-step-card:hover{border-color:var(--ic-color,var(--accent));}
.ic-step-card.ic-dimmed{opacity:.72;}
.ic-step-card.ic-counterfactual-dim{opacity:.3;}
.ic-step-top{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
.ic-step-n{font-family:var(--mono);font-size:10px;color:var(--text4);}
.ic-conf-badge{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.04em;
  padding:2px 7px;border:1px solid;border-radius:20px;}
.ic-step-event{font-size:12.5px;color:var(--text2);line-height:1.5;}
.ic-step-entity{font-size:11.5px;color:var(--text3);margin-top:4px;}
.ic-step-qi{font-family:var(--mono);font-size:11px;color:var(--text2);margin-top:8px;display:flex;gap:8px;align-items:baseline;}
.ic-step-qi-none{font-family:var(--font);font-size:10.5px;color:var(--text4);margin-top:8px;font-style:italic;}
.ic-counterfactual{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);}
.ic-counterfactual-btn{background:none;border:1px solid var(--border2);color:var(--red);font-size:11px;
  font-family:var(--font);padding:6px 12px;border-radius:6px;cursor:pointer;transition:border-color .15s;}
.ic-counterfactual-btn:hover{border-color:var(--red);}
.ic-counterfactual-result{font-size:11.5px;color:var(--text3);margin-top:9px;}

/* ── ONBOARDING (Module 13) ── */
.onb-box{max-width:540px;}
.onb-steps{display:flex;align-items:center;gap:6px;padding:14px 20px 0;flex-shrink:0;}
.onb-step-dot{width:6px;height:6px;border-radius:50%;background:var(--border3);transition:background .2s,transform .2s;}
.onb-step-dot.active{background:var(--accent);transform:scale(1.35);}
.onb-step-dot.done{background:var(--green);}
.onb-step-line{flex:1;height:1px;background:var(--border);max-width:36px;}

.onb-eyebrow{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.06em;color:var(--text4);text-transform:uppercase;margin-bottom:6px;}
.onb-title{font-size:19px;font-weight:700;letter-spacing:-.3px;color:var(--text);margin-bottom:6px;}
.onb-sub{font-size:12.5px;color:var(--text2);line-height:1.6;margin-bottom:18px;}

.onb-feature-list{display:flex;flex-direction:column;gap:12px;margin-bottom:6px;}
.onb-feature-item{display:flex;gap:11px;align-items:flex-start;animation:orion-fade-up .4s var(--ease-cinematic) both;}
.onb-feature-icon{width:26px;height:26px;border-radius:7px;background:var(--accent-dim);color:var(--accent);
  display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;}
.onb-feature-label{font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:1px;}
.onb-feature-desc{font-size:11.5px;color:var(--text3);line-height:1.5;}

.onb-goal-grid{display:flex;flex-direction:column;gap:8px;margin-bottom:4px;}
.onb-goal-card{display:flex;align-items:center;justify-content:space-between;gap:10px;
  border:1px solid var(--border2);border-radius:var(--r);padding:11px 13px;cursor:pointer;
  background:var(--surface2);transition:border-color .15s,background .15s;text-align:left;}
.onb-goal-card:hover{border-color:var(--accent);}
.onb-goal-card.selected{border-color:var(--accent);background:var(--accent-dim);}
.onb-goal-label{font-size:12.5px;color:var(--text2);}
.onb-goal-card.selected .onb-goal-label{color:var(--text);font-weight:600;}
.onb-goal-check{color:var(--accent);font-size:12px;opacity:0;transition:opacity .15s;}
.onb-goal-card.selected .onb-goal-check{opacity:1;}

.onb-upgrade-hint{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:9.5px;
  color:var(--purple);background:var(--purple-dim);border:1px solid rgba(167,139,250,.25);
  border-radius:20px;padding:3px 9px;margin-top:10px;cursor:pointer;transition:opacity .15s;}
.onb-upgrade-hint:hover{opacity:.8;}

.onb-action-primary{width:100%;text-align:left;border:1px solid var(--accent);border-radius:var(--r);
  background:var(--accent-dim);padding:14px 15px;cursor:pointer;margin-bottom:12px;transition:opacity .15s;}
.onb-action-primary:hover{opacity:.9;}
.onb-action-primary-label{font-size:9.5px;font-family:var(--mono);font-weight:700;letter-spacing:.05em;
  color:var(--accent);text-transform:uppercase;margin-bottom:4px;}
.onb-action-primary-title{font-size:14px;font-weight:700;color:var(--text);}
.onb-action-primary-sub{font-size:11.5px;color:var(--text3);margin-top:3px;}

.onb-action-secondary-row{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:6px;}
.onb-action-chip{font-size:11px;color:var(--text3);background:var(--surface2);border:1px solid var(--border2);
  border-radius:var(--r);padding:7px 11px;cursor:pointer;transition:border-color .15s,color .15s;}
.onb-action-chip:hover{border-color:var(--accent);color:var(--text2);}
.onb-action-quota-note{font-size:11px;color:var(--amber);margin-top:8px;line-height:1.5;}

.onb-footer{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;
  border-top:1px solid var(--border);flex-shrink:0;}
.onb-skip{background:none;border:none;color:var(--text4);font-size:11.5px;cursor:pointer;transition:color .15s;}
.onb-skip:hover{color:var(--text2);}
.onb-nav-btns{display:flex;gap:8px;}
.onb-btn{font-size:12px;font-weight:600;padding:8px 15px;border-radius:var(--r);cursor:pointer;transition:opacity .15s;}
.onb-btn.primary{background:var(--accent);border:1px solid var(--accent);color:#fff;}
.onb-btn.ghost{background:none;border:1px solid var(--border2);color:var(--text2);}
.onb-btn:hover{opacity:.88;}
.onb-btn:disabled{opacity:.4;cursor:not-allowed;}

.onb-hint{display:inline-block;margin-top:14px;font-size:11.5px;color:var(--accent);opacity:.85;transition:opacity .15s;background:none;border:0;padding:0;cursor:pointer;font-family:inherit;}
.onb-hint:hover{opacity:1;}

.field-error{display:none;color:var(--red);font-size:10.5px;line-height:1.35;margin-top:4px;}
.field-error:not(:empty){display:block;}
.form-error-summary{display:none;color:var(--red);font-size:11px;padding:0 14px 8px;}
.form-error-summary:not(:empty){display:block;}
.sf input[aria-invalid="true"]{border-color:var(--red);box-shadow:0 0 0 1px rgba(239,68,68,.2);}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}

/* First-successful-analysis acknowledgment — deliberately calm: one line, a checkmark, no
   confetti/badge/points language, matching the project's no-gamification rule. */
.onb-toast{position:fixed;bottom:20px;right:20px;z-index:250;max-width:320px;
  background:var(--surface);border:1px solid var(--green);border-radius:var(--r);
  padding:13px 15px;box-shadow:0 12px 40px rgba(0,0,0,0.4);
  display:none;align-items:flex-start;gap:10px;animation:orion-fade-up .35s var(--ease-cinematic) both;}
.onb-toast.show{display:flex;}
.onb-toast-check{color:var(--green);font-size:15px;flex-shrink:0;line-height:1.3;}
.onb-toast-title{font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:2px;}
.onb-toast-body{font-size:11.5px;color:var(--text3);line-height:1.5;}
.onb-toast-close{background:none;border:none;color:var(--text4);cursor:pointer;font-size:12px;margin-left:auto;flex-shrink:0;}

@keyframes onb-pulse-ring{0%{box-shadow:0 0 0 0 rgba(59,130,246,.5);}70%{box-shadow:0 0 0 8px rgba(59,130,246,0);}100%{box-shadow:0 0 0 0 rgba(59,130,246,0);}}
.onb-pulse{animation:onb-pulse-ring 1.4s ease-out 3;border-radius:6px;}

@media(max-width:600px){
  .explain-modal{padding:12px;}
  .explain-box,.onb-box{width:100%;max-width:calc(100vw - 24px);min-width:0;}
  .explain-hdr{padding:14px;}
  .explain-body{padding:14px;}
  .onb-steps{padding:12px 14px 0;}
  .onb-feature-item>div{min-width:0;}
  .onb-feature-desc,.onb-sub{overflow-wrap:anywhere;}
  .onb-footer{padding:14px 0 0;margin-top:14px;}
  .onb-action-secondary-row{flex-direction:column;}
  .onb-action-chip{width:100%;text-align:left;}
}

/* Screen Tutorials (js/growth-modules.js MODULE 14), positioned against real page controls. */
.cm-tip{position:fixed;z-index:260;width:min(320px,calc(100vw - 16px));
  background:var(--surface);border:1px solid var(--accent);border-radius:var(--r);
  padding:13px 15px;box-shadow:0 12px 40px rgba(0,0,0,0.4);
  animation:orion-fade-up .3s var(--ease-cinematic) both;}
.cm-tip-kicker{font:600 9px/1.4 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin-bottom:5px;}
.cm-tip-title{font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:4px;padding-right:16px;}
.cm-tip-body{font-size:11.5px;color:var(--text3);line-height:1.5;}
.cm-tip-actions{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;margin-top:12px;}
.cm-tip-dismiss{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--text4);cursor:pointer;font-size:12px;}
.cm-tip-back{background:none;border:none;color:var(--text3);padding:5px 7px;font-size:11px;cursor:pointer;}
.cm-tip-gotit{background:none;border:1px solid var(--accent);color:var(--accent);border-radius:6px;padding:5px 10px;font-size:11px;font-weight:600;cursor:pointer;}
.cm-tip-gotit:hover{background:var(--accent);color:var(--bg);}
.cm-anchor-active{position:relative;z-index:251;outline:2px solid rgba(110,168,255,.72);outline-offset:4px;border-radius:4px;box-shadow:0 0 0 7px rgba(59,130,246,.08),0 0 28px rgba(59,130,246,.2);}

/* Bottom-left of the content area; .onb-toast already owns bottom-right. */
.cm-tips-btn{position:fixed;bottom:20px;left:244px;z-index:250;display:none;align-items:center;gap:6px;
  background:var(--surface);border:1px solid var(--border2);border-radius:20px;
  padding:8px 14px;font-size:11.5px;font-weight:600;color:var(--text2);cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,0.3);transition:border-color .15s,color .15s;}
.cm-tips-btn:hover{border-color:var(--accent);color:var(--accent);}
.bottom-input-actions .cm-tips-btn{
  position:static;inset:auto;z-index:auto;box-shadow:none;flex:none;
}
@media(max-width:900px){
  /* The report and re-analysis controls share one normal document flow on small screens.
     Nothing is fixed over report content, and the final report line remains reachable. */
  .main{padding-bottom:60px;}
  .cm-tips-btn{left:14px;bottom:14px;}
  .cm-tip{max-height:calc(100vh - 16px);overflow:auto;}
  #view-analyze:has(#analysisArea[style*="display: flex"]){overflow-y:auto;min-height:0;}
  #view-analyze:has(#analysisArea[style*="display: flex"]) .analysis-area{
    flex:none;overflow:visible;min-height:auto;
  }
  .bottom-input{flex:none;}
  .bottom-input-actions{padding:7px 12px;flex-wrap:wrap;}
  .bottom-input-panel{padding:8px 12px 0;}
  .bottom-input-actions .cm-tips-btn{margin:0;}
}

/* ══════════════════════════════════════════════════════════════════════════
   SIGNAL FEED — homepage UI prototype, sample data only.
   Additive-only block: no existing selector above is modified. Reuses the
   same color tokens, card/badge/typography vocabulary, and motion timing
   (--ease-cinematic) as the rest of the product so it doesn't read as a
   bolted-on component. Self-contained under .signal-feed / .sf-* — verified
   against every existing class name in this file before adding (no clashes
   with the unrelated .sf / .sf label / .sf input search-field classes above).
   ══════════════════════════════════════════════════════════════════════════ */
/* Compact pass: Signal Feed sits above the search panel, so its footprint is tightened
   (padding/gaps/margins only — same heading, copy, badges, card fields, and card count as
   before) so it reads as a supporting strip rather than competing with search for the fold. */
.signal-feed{width:100%;max-width:1040px;margin:0 auto 10px;text-align:left;}
.labs-preview{width:100%;max-width:1040px;margin:24px auto 0;border:1px solid var(--border);border-radius:10px;background:var(--surface);}
.labs-preview>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:10px 14px;color:var(--text2);font-size:12px;font-weight:600;cursor:pointer;list-style:none;}
.labs-preview>summary::-webkit-details-marker{display:none}.labs-preview[open]>summary{border-bottom:1px solid var(--border)}
.labs-preview .signal-feed{padding:14px;margin-bottom:0;}
.sf-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px;}
.sf-heading{font-size:14px;font-weight:700;color:var(--text);letter-spacing:-.2px;}
.sf-head-badge{
  font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.5px;
  color:var(--amber);background:var(--amber-dim);border:1px solid rgba(245,158,11,0.3);
  padding:3px 8px;border-radius:999px;white-space:nowrap;
}
.sf-sub{font-size:11px;color:var(--text3);line-height:1.45;max-width:780px;margin-bottom:10px;}

.sf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px;}

.sf-card{
  position:relative;display:flex;flex-direction:column;gap:5px;
  background:linear-gradient(180deg, rgba(255,255,255,0.025), transparent 44%), var(--surface);
  border:1px solid var(--border);border-left:3px solid var(--text4);
  border-radius:var(--r);padding:10px 12px 11px;
  box-shadow:var(--depth-1);
  transition:transform .3s var(--ease-cinematic),box-shadow .3s var(--ease-cinematic),border-color .3s var(--ease-cinematic);
}
.sf-card:hover{transform:translateY(-2px);box-shadow:var(--depth-glow);border-color:var(--border2);}
.sf-card.sf-imp-high{border-left-color:var(--red);}
.sf-card.sf-imp-medium{border-left-color:var(--amber);}
.sf-card.sf-imp-info{border-left-color:var(--accent);}

.sf-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.sf-demo-badge{
  font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.4px;
  color:var(--amber);background:rgba(245,158,11,0.12);border:1px solid rgba(245,158,11,0.3);
  padding:2px 6px;border-radius:3px;white-space:nowrap;
}
.sf-imp-badge{
  font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.5px;
  padding:2px 7px;border-radius:3px;white-space:nowrap;
}
.sf-imp-badge-high{color:var(--red);background:var(--red-dim);border:1px solid rgba(239,68,68,0.3);}
.sf-imp-badge-medium{color:var(--amber);background:var(--amber-dim);border:1px solid rgba(245,158,11,0.3);}
.sf-imp-badge-info{color:var(--accent);background:var(--accent-dim);border:1px solid rgba(59,130,246,0.3);}

.sf-title{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;}
.sf-ticker{
  font-size:10px;font-family:var(--mono);font-weight:600;color:var(--text3);
  background:var(--surface2);border:1px solid var(--border);padding:1px 5px;border-radius:3px;
}
.sf-drug{font-size:10.5px;color:var(--text3);font-family:var(--mono);}
.sf-change{font-size:12px;font-weight:600;color:var(--text2);margin-top:2px;}
.sf-why{font-size:11.5px;color:var(--text3);line-height:1.45;}
.sf-meta{display:flex;align-items:center;justify-content:space-between;margin-top:2px;}
.sf-time{font-size:9.5px;color:var(--text4);font-family:var(--mono);}

/* View Evidence reuses the existing .act-btn treatment (see index.html — the button carries
   both classes) for consistency with the rest of the product's secondary-action buttons;
   this rule only adds the card-specific placement/touch-target delta on top of it. */
.sf-evidence-btn{align-self:flex-start;margin-top:4px;min-height:32px;}

.sf-evidence{
  margin-top:2px;padding:10px 12px;border-radius:var(--r);
  background:var(--surface2);border:1px solid var(--border);
  animation:orion-panel-in .3s var(--ease-cinematic) both;
}
.sf-evidence-list{display:flex;flex-direction:column;gap:5px;margin-bottom:8px;}
.sf-evidence-list>div{display:flex;gap:8px;font-size:11px;}
.sf-evidence-list dt{color:var(--text4);min-width:132px;flex-shrink:0;}
.sf-evidence-list dd{color:var(--text2);}
.sf-evidence-disclaimer{font-size:10.5px;color:var(--amber);line-height:1.5;}

@media(max-width:900px){
  .sf-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));}
}
@media(max-width:640px){
  .signal-feed{margin-bottom:16px;}
  .sf-grid{grid-template-columns:1fr;}
  .sf-evidence-btn{width:100%;text-align:center;}
  .sf-evidence-list>div{flex-direction:column;gap:1px;}
  .sf-evidence-list dt{min-width:0;}
}

/* ── Visible keyboard focus, added on top of existing interactive classes ──
   None of these classes had a focus style before (only relying on the browser default, which
   several dark-surface buttons render with low contrast against). Additive only: outline +
   outline-offset on top of each class's existing look, using the one existing accent color —
   no new color, no change to click targets, hover states, or handlers.
   Dashboard card footer actions are semantic buttons and share this focus treatment. */
.act-btn:focus-visible,
.chip:focus-visible,
.hero-cta:focus-visible,
.search-submit:focus-visible,
.sf-evidence-btn:focus-visible,
.sb-item:focus-visible,
.card-foot:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px;
}

/* ══════════════════════════════════════════════════════════════════════════
   HUD / MISSION-CONTROL DECORATIVE PASS — homepage only, additive.
   Direction: NASA/JARVIS-style instrumentation chrome (corner brackets, scan
   sweeps, telemetry labels, radar-ping status dot) layered onto existing
   elements — no new colors, no 3D, no particle systems, same restrained
   accent blue used everywhere else. Every rule below only adds a pseudo-
   element or refines an existing animation; no layout-affecting property is
   touched and no selector below removes anything declared earlier in this
   file.
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Corner brackets ── */
/* Fuller two-corner frame on the more overtly "instrument" pieces (hero's
   floating glass cards, Signal Feed cards) — both ::before/::after were free
   on these selectors (verified against the rest of this file first). */
.hf-card::before,.hf-card::after,
.sf-card::before,.sf-card::after{
  content:'';position:absolute;width:9px;height:9px;pointer-events:none;
  border-color:rgba(110,168,255,0.5);opacity:.8;
}
.hf-card::before,.sf-card::before{top:5px;left:5px;border-top:1.5px solid;border-left:1.5px solid;}
.hf-card::after,.sf-card::after{bottom:5px;right:5px;border-bottom:1.5px solid;border-right:1.5px solid;}
/* .scard is used everywhere in the product (report sections, dashboard cards) — ::before is
   already the existing top-highlight line, so only a single, lighter top-left corner accent
   is added via ::after here, rather than a full frame, to keep this restrained app-wide. */
.scard::after{
  content:'';position:absolute;top:6px;left:6px;width:7px;height:7px;pointer-events:none;
  border-top:1.5px solid rgba(110,168,255,0.4);border-left:1.5px solid rgba(110,168,255,0.4);opacity:.7;
}

/* ── Scan sweep on the homepage's own new content (same vocabulary already used for
   analysis-report sections via orion-declassify-sweep — just extended to two more
   containers that don't already use ::before for something else). ── */
.signal-feed,.briefing-card{position:relative;}
.signal-feed::before,.briefing-card::before{
  content:"";position:absolute;top:-1px;left:0;right:0;height:2px;pointer-events:none;z-index:2;
  background:linear-gradient(90deg,transparent,var(--glow-blue-soft) 20%,#fff 50%,var(--glow-blue-soft) 80%,transparent);
  background-size:200% 100%;opacity:0;
  animation:orion-declassify-sweep 1.1s var(--ease-cinematic) both;
}
.briefing-card::before{animation-delay:.12s;}

/* ── Orb telemetry labels — decorative flavor text only (aria-hidden parent), never a claim
   about real system status; kept to abstract callsign/status words, not fabricated metrics. ── */
/* Anchored to the ring's own top-right / bottom-left, not dead-center — the hero got much
   shorter in the previous compaction pass, so a center-anchored label at this size would sit
   right on top of the headline/subtext. Low opacity throughout: reads as instrument-panel
   texture behind the text, never a legible label competing with it. */
.orb-tag{
  position:absolute;
  font-family:var(--mono);font-size:7px;font-weight:600;letter-spacing:1.1px;
  color:var(--ion-blue);opacity:0;white-space:nowrap;pointer-events:none;
  text-shadow:0 0 6px var(--glow-blue-soft);
  animation:orb-tag-in .8s var(--ease-cinematic) 1.4s both, orb-tag-flicker 5s ease-in-out 2.2s infinite;
}
.orb-tag-top{top:2%;right:4%;}
/* Was anchored to the orb's bottom edge, landing in the gap between subtitle and CTA button —
   but that gap is only ~7-10px at some viewport widths, narrower than the tag itself, so it
   kept clipping the button no matter how the offset was tuned. Moved to mirror orb-tag-top
   (both near the orb's top, in the open space above the headline) instead of fighting for
   room in a gap too small to ever reliably hold it. */
.orb-tag-bottom{top:2%;left:4%;}
@keyframes orb-tag-in{from{opacity:0;}to{opacity:.32;}}
@keyframes orb-tag-flicker{0%,94%,100%{opacity:.32;}96%{opacity:.08;}}
@media(max-width:1100px){.orb-tag,.hero-orb{display:none;}} /* At 1024px the orb canvas itself
  crosses the primary CTA even after its labels are removed. Hide this nonessential layer
  before it can compete with the task; the remaining cards and DNA retain the HUD character. */

/* ── LIVE badge — radar-ping ring added on top of the existing opacity pulse. Purely visual;
   does not touch gmSetLiveBadge()'s live/demo class toggle, and the demo state (amber, no
   pulse) correctly suppresses this ring too so the live/demo distinction stays intact. ── */
.live-dot{position:relative;}
.live-dot::after{
  content:'';position:absolute;inset:-4px;border-radius:50%;
  border:1px solid var(--green);opacity:0;
  animation:orion-radar-ping 2.5s ease-out infinite;
}
.live-badge.gm-demo-badge .live-dot::after,.live-badge.gm-verified-badge .live-dot::after,.live-badge.gm-sponsor-badge .live-dot::after,.live-badge.gm-unverified-badge .live-dot::after,.live-badge.gm-stale-badge .live-dot::after,.live-badge.gm-mixed-badge .live-dot::after,.live-badge.gm-locked-badge .live-dot::after,.live-badge.gm-unavailable-badge .live-dot::after{display:none;}
@keyframes orion-radar-ping{0%{opacity:.5;transform:scale(.4);}70%{opacity:0;transform:scale(1.8);}100%{opacity:0;transform:scale(1.8);}}

/* ── Mono readout emphasis — same restrained glow already used on .score-num, applied to the
   other key numeric displays on the homepage so they read as one instrument panel. ── */
.wcs-val,.mc-val{text-shadow:0 0 10px var(--glow-blue-soft);}

@media(prefers-reduced-motion:reduce){
  .orb-tag{animation:none;opacity:.55;}
  .live-dot::after{animation:none;display:none;}
  .signal-feed::before,.briefing-card::before{animation:none;opacity:0;}
}

/* Source-derived change review: compact enough for the dashboard, explicit enough that facts,
   interpretation, freshness, and provenance cannot collapse into one marketing sentence. */
.change-intel{margin:14px 0;padding:15px;border:1px solid var(--border);border-radius:10px;background:rgba(8,11,18,.82)}
.change-intel-head,.change-intel-card-head,.change-intel-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}
.change-intel-head{margin-bottom:10px}.change-intel-head h2{font-size:16px;margin:3px 0}.change-intel-head>span,.change-intel-kicker{font:9px var(--mono);color:var(--text4);letter-spacing:.07em}
.change-intel-card{border:1px solid var(--border);border-left:3px solid var(--text4);border-radius:7px;padding:11px;margin-top:8px;background:var(--surface)}
.change-intel-card.severity-critical,.change-intel-card.severity-high{border-left-color:var(--red)}
.change-intel-card.severity-medium{border-left-color:var(--amber)}.change-intel-card.severity-low{border-left-color:var(--accent)}
.change-intel-card-head{font-size:12px}.change-intel-card-head span{font:9px var(--mono);letter-spacing:.06em;color:var(--text3)}
.change-intel-entity{margin-top:4px;font:10px var(--mono);color:var(--text4);text-transform:uppercase}
.change-intel-diff{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}
.change-intel-diff>div{min-width:0;padding:8px;border:1px solid var(--border);border-radius:6px;background:rgba(255,255,255,.015)}
.change-intel-diff small{font:8.5px var(--mono);color:var(--text4);letter-spacing:.06em}.change-intel-diff p{margin:4px 0 0;font-size:11px;color:var(--text2);overflow-wrap:anywhere}
.change-intel-interpretation{font-size:10.5px;color:var(--text3);line-height:1.5}.change-intel-interpretation b{font:8.5px var(--mono);color:var(--purple);letter-spacing:.05em}
.change-intel-meta{font:9px var(--mono);color:var(--text4);flex-wrap:wrap}.change-intel-meta a{color:var(--accent)}
.change-intel-empty,.change-intel-more,.change-intel-disclaimer{font-size:10.5px;color:var(--text4);margin:7px 0 0}
@media(max-width:600px){
  .change-intel-head,.change-intel-meta{align-items:flex-start;flex-direction:column}
  .change-intel-diff{grid-template-columns:1fr}
}
/* Trust-first Evidence Dossier */
.dossier-shell{display:grid;gap:12px;margin-top:12px}
.dossier-title,.dossier-section{border:1px solid var(--border);background:var(--surface);border-radius:10px}
.dossier-title{padding:18px;display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.dossier-title span{font:10px var(--mono);letter-spacing:.12em;color:var(--accent);text-transform:uppercase}
.dossier-title h2{margin:4px 0 0;font-size:20px;color:var(--text1)}
.dossier-actions{display:flex;flex-wrap:wrap;gap:7px}
.dossier-section-head{display:flex;align-items:center;gap:9px;padding:11px 14px;border-bottom:1px solid var(--border)}
.dossier-section-head>span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent-dim);color:var(--accent);font:10px var(--mono)}
.dossier-section-head h3{margin:0;font-size:12px;color:var(--text2)}
.dossier-section-body{padding:14px}
.passport-grid,.financial-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:8px;margin:0}
.passport-field{padding:9px;border:1px solid var(--border);border-radius:6px;background:rgba(0,0,0,.12);min-width:0}
.passport-field dt{font:9px var(--mono);color:var(--text4);text-transform:uppercase;margin-bottom:5px}
.passport-field dd{margin:0;font-size:11px;color:var(--text2);overflow-wrap:anywhere}
.entity-pill,.claim-type,.trust-gate,.severity{display:inline-flex;margin:1px 3px 1px 0;padding:2px 6px;border-radius:999px;font:8.5px var(--mono);letter-spacing:.03em}
.entity-pill{border:1px solid var(--border);color:var(--text3)}
.trust-gate{padding:6px 10px;font-size:10px;font-weight:700}
.trust-verified,.claim-type-source_fact{background:rgba(41,204,132,.12);color:var(--green);border:1px solid rgba(41,204,132,.35)}
.trust-partial,.trust-partially_verified,.claim-type-derived_metric{background:rgba(239,178,56,.12);color:var(--amber);border:1px solid rgba(239,178,56,.35)}
.trust-ambiguous,.trust-conflicting,.trust-not_found,.trust-insufficient_evidence,.trust-unresolved,.claim-type-conflicting{background:rgba(235,87,87,.12);color:var(--red);border:1px solid rgba(235,87,87,.35)}
.claim-type-ai_interpretation{background:rgba(141,105,255,.12);color:var(--purple);border:1px solid rgba(141,105,255,.35)}
.claim-type-unverified,.claim-type-missing{border:1px solid var(--border);color:var(--text4)}
.dossier-note,.generation-meta,.empty-state,.missing-value{font-size:10px;color:var(--text4)}
.verification-summary{display:flex;align-items:center;gap:12px;margin-bottom:12px}.verification-summary p{margin:3px 0;color:var(--text4);font-size:10px}
.evidence-list,.claim-list,.change-list{display:grid;gap:8px}
.evidence-list article,.claim-row,.change-row{padding:10px;border:1px solid var(--border);border-radius:6px}
.evidence-list small,.claim-row small,.change-row small{display:block;color:var(--text4);font:9px var(--mono);margin:4px 0}
.evidence-link{font-size:10px;color:var(--accent);text-decoration:none}
.dossier-table{width:100%;border-collapse:collapse;font-size:10px}.dossier-table th,.dossier-table td{padding:8px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}.dossier-table th{font:9px var(--mono);color:var(--text4)}
.claim-row p{margin:7px 0;color:var(--text2);font-size:11px;line-height:1.55}.claim-id{font:8px var(--mono);color:var(--text4)}
.experimental-panel{border:1px dashed var(--amber);padding:12px;border-radius:7px}.experimental-label{color:var(--amber);font-size:10px;font-weight:600}
.generation-meta{padding:10px 12px;border:1px solid var(--border);border-radius:7px;overflow-wrap:anywhere}
.change-row dl{display:grid;grid-template-columns:1fr 1fr;gap:8px}.change-row dt{font:9px var(--mono);color:var(--text4)}.change-row dd{margin:3px 0;font-size:10px;overflow-wrap:anywhere}
.severity-high,.severity-critical{color:var(--red)}.severity-medium{color:var(--amber)}.severity-low{color:var(--text4)}
.risk-list{display:grid;gap:7px;padding-left:18px;color:var(--text3);font-size:11px}
@media(max-width:600px){.dossier-title{display:block}.dossier-actions{margin-top:12px}.passport-grid,.financial-grid{grid-template-columns:1fr}.change-row dl{grid-template-columns:1fr}}
.hero-actions{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}
.hero-secondary{padding:10px 14px;border:1px solid var(--border);border-radius:6px;color:var(--text2);font-size:11px;text-decoration:none}
.trust-value-strip,.trust-workflow{max-width:760px;margin:14px auto 0;text-align:center;font:9px var(--mono);letter-spacing:.06em;color:var(--text4)}
.trust-workflow{font-size:10px;letter-spacing:0;color:var(--text3)}
.reliability-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin-top:16px}
.reliability-card{padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
.reliability-card h3{font-size:10px;color:var(--text4);margin:0 0 7px}.reliability-card strong{display:block;font:17px var(--mono);color:var(--text1)}
.reliability-card small{display:block;margin-top:7px;font-size:9px;line-height:1.45;color:var(--text4)}
.reliability-limitations{grid-column:1/-1}
.reliability-low-sample{
  display:block;margin-top:8px;padding:5px 7px;border-radius:5px;font-size:9px;line-height:1.4;
  color:var(--amber);background:rgba(245,158,11,0.1);border:1px solid rgba(245,158,11,0.28);
  cursor:help;
}
