/* ==================================================================
   RaisePoint — site styles
   ------------------------------------------------------------------
   NON-CODER TIP: To recolor the entire site, change the hex values in
   the ":root" block below. Everything (glows, borders, buttons, links)
   derives from these few variables.
   Tailwind (loaded from the CDN in each HTML file) handles layout and
   spacing; this file holds the palette and the custom "defense-tech"
   effects (glows, blueprint grid, crosshairs, accordion, wordmark).
   ================================================================== */

:root {
  /* ---- BRAND PALETTE — edit these to recolor the site ---- */
  --bg:          #141414;  /* page background          */
  --bg-alt:      #191919;  /* alternating sections     */
  --surface:     #1c1c1c;  /* cards                    */
  --surface-2:   #232323;  /* raised cards / CTA band  */
  --ink:         #f4f6f7;  /* headings                 */
  --muted:       #adb2b8;  /* body text                */
  --muted-2:     #8b9198;  /* secondary text           */
  --faint:       #5f656c;  /* labels, legal, captions  */
  --accent:      #29a8dd;  /* primary accent — refined deeper technical cyan */
  --accent-br:   #59c4f2;  /* accent bright (hovers, wordmark highlight)     */
  --accent-deep: #175d7a;  /* deep accent (petrol)     */
  --accent-ink:  #04222e;  /* text on an accent fill   */

  /* ---- Type system ("new-generation defense") ---- */
  --fd: "Sora", system-ui, -apple-system, sans-serif;              /* display / headings */
  --fb: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif; /* body               */
  --fm: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;/* mono labels        */

  /* ---- Hairlines (white at low opacity) ---- */
  --border:    rgba(255, 255, 255, 0.09);
  --border-2:  rgba(255, 255, 255, 0.16);

  /* ---- Derived effects (no need to edit) ---- */
  --glow:      color-mix(in srgb, var(--accent) 30%, transparent);
  --glow-soft: color-mix(in srgb, var(--accent) 15%, transparent);
  --glow-deep: color-mix(in srgb, var(--accent-deep) 42%, transparent);
  --accent-12: color-mix(in srgb, var(--accent) 12%, transparent);
  --accent-20: color-mix(in srgb, var(--accent) 20%, transparent);
  --accent-40: color-mix(in srgb, var(--accent) 42%, transparent);

  /* ---- Layout ---- */
  --maxw: 1360px;
  --nav-h: 64px;

  /* ---- confidence (demos): fact / estimate / inferred ---- */
  --ok:   #2fcf7a;  /* fact     — green */
  --warn: #f0b13b;  /* estimate — amber */
  /* inferred reuses --accent (cyan) */

  /* ---- slide-4 analyst accents (IB rebuild) — colour only when it means something ---- */
  --accent-ember: #e25822;   /* realized combat results        */
  --accent-green: var(--ok); /* investability                  */
  --accent-amber: #d29922;   /* caution / single-sourced / estimates */
}

/* ------------------------------------------------------------------ */
/* Base                                                                */
/* ------------------------------------------------------------------ */
* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--nav-h) + 16px);
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--muted);
  font-family: var(--fb);
  font-feature-settings: "cv05", "ss01";
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.6;
  overflow-x: hidden;
}

h1, h2, h3, h4 {
  color: var(--ink);
  font-family: var(--fd);
  font-weight: 600;
  letter-spacing: -0.022em;
  line-height: 1.06;
  margin: 0;
  text-wrap: balance;
}
p { text-wrap: pretty; }

a { color: inherit; text-decoration: none; }

::selection { background: var(--accent-40); color: #fff; }

/* Accessible focus ring (keyboard users) */
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: 4px;
}

.container {
  width: 100%;
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: 24px;
}
@media (max-width: 640px) { .container { padding-inline: 20px; } }

/* ------------------------------------------------------------------ */
/* Eyebrow / mono index labels  (e.g. "01 — What it does")            */
/* ------------------------------------------------------------------ */
.eyebrow {
  font-family: var(--fm);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--faint);
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
}
.eyebrow .idx { color: var(--accent); }

.eyebrow::before {
  content: "";
  width: 22px; height: 1px;
  background: var(--border-2);
  display: inline-block;
}

/* ------------------------------------------------------------------ */
/* Glows                                                               */
/* ------------------------------------------------------------------ */
.glow {
  position: absolute;
  pointer-events: none;
  z-index: 0;
  filter: blur(8px);
}
.glow-hero {
  top: -220px; left: 50%;
  width: min(1300px, 130vw); height: 900px;
  transform: translateX(-50%);
  filter: blur(20px);
  background:
    radial-gradient(48% 55% at 50% 42%, var(--glow) 0%, transparent 68%),
    radial-gradient(38% 48% at 32% 60%, var(--glow-deep) 0%, transparent 70%),
    radial-gradient(34% 44% at 70% 38%, var(--glow-soft) 0%, transparent 72%);
}
.glow-band {
  left: 50%; top: 50%;
  width: min(1000px, 115vw); height: 600px;
  transform: translate(-50%, -50%);
  filter: blur(16px);
  background:
    radial-gradient(50% 50% at 50% 50%, var(--glow-soft) 0%, transparent 70%),
    radial-gradient(30% 40% at 38% 55%, var(--glow-deep) 0%, transparent 72%);
}

/* ------------------------------------------------------------------ */
/* Blueprint grid + crosshair motifs                                  */
/* ------------------------------------------------------------------ */
.grid-bp {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image:
    linear-gradient(to right,  var(--border) 1px, transparent 1px),
    linear-gradient(to bottom, var(--border) 1px, transparent 1px);
  background-size: 72px 72px;
  -webkit-mask-image: radial-gradient(120% 100% at 50% 0%, #000 30%, transparent 78%);
          mask-image: radial-gradient(120% 100% at 50% 0%, #000 30%, transparent 78%);
  opacity: 0.5;
}

/* hairline divider with a centre "+" crosshair */
.divider {
  position: relative;
  height: 1px;
  background: var(--border);
}
.divider::after {
  content: "+";
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  color: var(--faint);
  font-size: 14px;
  line-height: 1;
  background: var(--bg);
  padding: 0 8px;
}

/* small corner crosshairs for cards/sections */
.crosshair { position: relative; }
.crosshair::before,
.crosshair::after {
  content: "+";
  position: absolute;
  color: var(--border-2);
  font-size: 13px;
  line-height: 1;
}
.crosshair::before { top: -7px; left: -7px; }
.crosshair::after  { bottom: -7px; right: -7px; }

/* ------------------------------------------------------------------ */
/* Buttons                                                             */
/* ------------------------------------------------------------------ */
/* squared "engineered" buttons — 7px radius */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  padding: 0.85rem 1.4rem;
  border-radius: 7px;
  font-size: 0.94rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1;
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform .15s ease, background-color .2s ease,
              border-color .2s ease, box-shadow .2s ease, color .2s ease;
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }

.btn-primary {
  background: var(--ink);
  color: #0e0e0e;
}
.btn-primary:hover {
  background: #fff;
  box-shadow: 0 10px 30px -10px var(--accent);
  transform: translateY(-1px);
}

.btn-ghost {
  background: transparent;
  color: var(--ink);
  border-color: var(--border-2);
}
.btn-ghost:hover {
  border-color: var(--accent);
  background: var(--accent-12);
}

.btn-sm { padding: 0.55rem 1rem; font-size: 0.85rem; }

/* uppercase mono mini-button (reference style) */
.btn-mono {
  font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  border-radius: 8px;
}

/* bordered button group with a cyan arrow square (footer / nav) */
.btn-group {
  display: inline-flex;
  align-items: stretch;
  border: 1px solid var(--border-2);
  border-radius: 10px;
  overflow: hidden;
}
.btn-group > * {
  display: inline-flex;
  align-items: center;
  padding: 0.62rem 0.95rem;
  font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  color: var(--ink);
  border-right: 1px solid var(--border);
  transition: background-color .2s ease;
}
.btn-group > *:last-child { border-right: 0; }
.btn-group > *:hover { background: rgba(255,255,255,0.05); }
.btn-group .arrow {
  background: var(--accent);
  color: var(--accent-ink);
  padding-inline: 0.85rem;
}
.btn-group .arrow:hover { background: #5bd0ff; }

/* ------------------------------------------------------------------ */
/* Cards, chips, links                                                */
/* ------------------------------------------------------------------ */
.card {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  transition: border-color .25s ease, background-color .25s ease,
              transform .3s cubic-bezier(.2, .7, .2, 1), box-shadow .3s ease;
}
.card-hover:hover {
  border-color: var(--accent-40);
  background: #202020;
  transform: translateY(-4px);
  box-shadow: 0 22px 50px -28px rgba(0, 0, 0, 0.85);
}

/* card header row: icon tile + mono corner marker (About / Use cases) */
.card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 22px;
}
.tile {
  display: inline-grid;
  place-items: center;
  width: 48px; height: 48px;
  border: 1px solid var(--border-2);
  border-radius: 12px;
  color: var(--accent);
  background: linear-gradient(180deg, var(--accent-12), rgba(255, 255, 255, 0));
}

.chip {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  padding: 0.42rem 0.8rem;
  border: 1px solid var(--border-2);
  border-radius: 999px;
  font-size: 0.8rem;
  color: var(--muted);
  background: rgba(255,255,255,0.02);
  transition: border-color .2s ease, color .2s ease;
}
.chip:hover { border-color: var(--accent-40); color: var(--ink); }
.chip .dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--accent);
}
.chip-muted .dot { background: var(--faint); }

.link-accent { color: var(--accent); transition: color .15s ease; }
.link-accent:hover { color: var(--accent-br); }

/* numbered step marker */
.step-no {
  font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  color: var(--accent);
  border: 1px solid var(--accent-40);
  border-radius: 8px;
  padding: 0.3rem 0.55rem;
  background: var(--accent-12);
}

/* hero image frame (right column of the hero) */
.hero-frame {
  position: relative;
  border: 1px solid var(--border-2);
  border-radius: 18px;
  overflow: hidden;
  background: var(--surface);
  aspect-ratio: 4 / 5;
  box-shadow: 0 40px 90px -40px rgba(0, 0, 0, 0.7);
}
.hero-img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 1023px) { .hero-frame { aspect-ratio: 16 / 11; } }

/* ------------------------------------------------------------------ */
/* Product demo video — cyan-framed section                           */
/* ------------------------------------------------------------------ */
.video-frame {
  position: relative;
  max-width: 720px;
  border: 2px solid var(--accent);
  border-radius: 16px;
  overflow: hidden;
  background: #0d0d0d;
  box-shadow: 0 0 0 1px var(--accent-20), 0 0 60px -12px var(--glow), 0 40px 90px -45px rgba(0, 0, 0, 0.75);
}
.video-el { display: block; width: 100%; height: auto; }

/* Signal QR (contact) */
.signal-qr {
  display: block;
  width: 150px; height: 150px;
  border-radius: 12px;
  background: #fff;
  border: 1px solid var(--border-2);
  object-fit: cover;
}
.signal-qr.signal-qr-lg { width: 200px; height: 200px; border-radius: 14px; }

/* demo video controls (pause / restart) */
.video-ctrl {
  position: absolute;
  right: 12px; bottom: 12px;
  display: flex; gap: 8px;
  z-index: 2;
}
.vc-btn {
  display: grid; place-items: center;
  width: 38px; height: 38px;
  border-radius: 10px;
  color: var(--ink);
  background: rgba(13, 13, 13, 0.72);
  border: 1px solid var(--border-2);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  cursor: pointer;
  transition: border-color .15s ease, color .15s ease, background .15s ease;
}
.vc-btn:hover { border-color: var(--accent); color: var(--accent); background: rgba(13, 13, 13, 0.9); }
.vc-btn svg { width: 16px; height: 16px; }
.vc-btn .ic-play { display: none; }
.vc-btn.paused .ic-pause { display: none; }
.vc-btn.paused .ic-play { display: block; }

/* soft accent wash behind the video (right side of the section) */
.demo-glow {
  top: 50%; right: -160px;
  width: min(860px, 92vw); height: 560px;
  transform: translateY(-50%);
  filter: blur(18px);
  background:
    radial-gradient(46% 52% at 60% 50%, var(--glow-soft) 0%, transparent 70%),
    radial-gradient(32% 44% at 44% 58%, var(--glow-deep) 0%, transparent 72%);
}

/* fading fine dot grid behind the video */
.demo-dots {
  position: absolute; z-index: 0; pointer-events: none;
  top: 50%; right: 0;
  width: min(760px, 90vw); height: 480px;
  transform: translateY(-50%);
  background-image: radial-gradient(circle at 1px 1px, rgba(255,255,255,.4) 1px, transparent 0);
  background-size: 20px 20px;
  opacity: .16;
  -webkit-mask: radial-gradient(60% 60% at 55% 50%, #000 30%, transparent 75%);
          mask: radial-gradient(60% 60% at 55% 50%, #000 30%, transparent 75%);
}

/* circuit-style data line from the heading's full stop into the video (desktop only).
   Geometry is computed in JS (index.html) so the line starts exactly at the period. */
.demo-link {
  display: none;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
@media (min-width: 1024px) { .demo-link { display: block; } }
/* Demo section fades in without sliding, so the connector line stays static
   (no rise-from-bottom) — its anchors, the heading and the frame, don't move. */
#demo-stage .reveal { transform: none; }
.demo-link-base { stroke: var(--border-2); stroke-width: 1.5; }
.demo-link-node { fill: var(--bg); stroke: var(--border-2); stroke-width: 1.5; }
.demo-link-port { fill: var(--accent); filter: drop-shadow(0 0 6px var(--accent)); }
.demo-link-pulse {
  stroke: var(--accent);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-dasharray: 32 400;
  filter: drop-shadow(0 0 5px var(--glow));
  animation: demo-pulse 3.2s linear infinite;
}
@keyframes demo-pulse {
  from { stroke-dashoffset: 432; }
  to   { stroke-dashoffset: 0; }
}

/* ------------------------------------------------------------------ */
/* Hero drone visual — the image melts into the dark hero (no frame)  */
/* ------------------------------------------------------------------ */
.hero-media { position: relative; width: 100%; }
.hero-media-glow {
  position: absolute;
  left: 50%; top: 44%;
  transform: translate(-50%, -50%);
  width: 92%; height: 80%;
  filter: blur(34px);
  pointer-events: none;
  background:
    radial-gradient(50% 50% at 50% 50%, var(--glow) 0%, transparent 70%),
    radial-gradient(34% 44% at 62% 58%, var(--glow-deep) 0%, transparent 72%);
}
.hero-media-mask {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 8;
  overflow: hidden;
  -webkit-mask: radial-gradient(68% 64% at 50% 48%, #000 34%, transparent 82%);
          mask: radial-gradient(68% 64% at 50% 48%, #000 34%, transparent 82%);
}
.hero-media-img {
  width: 100%; height: 100%;
  object-fit: cover;
  transform: scale(1.45);
}
}

/* ------------------------------------------------------------------ */
/* AI assistant preview (recreation of the RaisePoint AI Assistant)   */
/* ------------------------------------------------------------------ */
.ai {
  display: flex;
  width: 100%;
  border: 1px solid var(--border-2);
  border-radius: 14px;
  overflow: hidden;
  background: #131313;
  box-shadow: 0 40px 90px -40px rgba(0, 0, 0, 0.75);
  font-family: "Inter", system-ui, sans-serif;
  color: var(--muted);
  user-select: none;
}
.ai-side {
  flex: none; width: 250px;
  border-right: 1px solid var(--border);
  background: #0f0f0f;
  padding: 16px 14px;
  display: none;
  flex-direction: column; gap: 9px;
}
.ai-sec { font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace; font-size: 8px; letter-spacing: 0.2em; color: var(--faint); margin-bottom: 2px; }
.ai-q { border: 1px solid var(--accent-40); border-radius: 8px; padding: 10px 11px; font-size: 11.5px; color: var(--muted); line-height: 1.35; transition: border-color .2s ease, color .2s ease; }
.ai-q:hover { border-color: var(--accent); color: var(--ink); }
.ai-note { margin-top: auto; border: 1px dashed var(--border-2); border-radius: 8px; padding: 10px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 8.5px; color: var(--faint); line-height: 1.5; }
.ai-main { flex: 1; min-width: 0; padding: 16px; display: flex; flex-direction: column; gap: 12px; }
.ai-user { align-self: stretch; background: #232323; border: 1px solid var(--border); border-radius: 9px; padding: 10px 14px; font-size: 13px; color: var(--ink); }
.ai-answer { border: 1px solid var(--border); border-radius: 11px; padding: 15px; font-size: 12.5px; color: var(--muted); line-height: 1.5; }
.ai-answer .lead { margin: 0 0 9px; }
.ai-answer ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; }
.ai-answer li { color: var(--muted); }
.ai-answer .co { color: var(--ink); }
.ai-sources { margin: 11px 0 0; font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace; font-size: 8.5px; letter-spacing: 0.06em; color: var(--faint); }
.ai-sources b { color: var(--accent); font-weight: 400; }
.ai-input { margin-top: 2px; display: flex; gap: 8px; align-items: center; border-top: 1px solid var(--border); padding-top: 13px; }
.ai-input .box { flex: 1; min-width: 0; border: 1px solid var(--border-2); border-radius: 9px; padding: 10px 12px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 11px; color: var(--faint); background: #161616; }
.ai-send { flex: none; background: var(--accent); color: var(--accent-ink); border-radius: 9px; padding: 10px 18px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 9px; letter-spacing: 0.14em; font-weight: 600; }
@media (min-width: 768px) { .ai-side { display: flex; } }

/* pull-quote (editorial, right-aligned) */
.quote-mark {
  display: block;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(3.5rem, 7vw, 6rem);
  line-height: 0.6;
  color: var(--accent);
  opacity: 0.5;
}
.quote-mark-close { margin-top: 0.4rem; }
.quote-text {
  font-style: italic;
  font-weight: 500;
  font-size: clamp(1.35rem, 2.7vw, 2.1rem);
  line-height: 1.42;
  color: var(--ink);
}
.quote-cite {
  margin-top: 1.4rem;
  font-family: "IBM Plex Mono", ui-monospace, "SF Mono", "Roboto Mono", Menlo, monospace;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 11.5px;
  color: var(--faint);
}
.quote-cite::before {
  content: "";
  display: inline-block;
  width: 24px; height: 1px;
  background: var(--accent);
  vertical-align: middle;
  margin-right: 0.7em;
}

/* the single RaisePoint score badge */
.score-badge {
  display: inline-flex;
  align-items: baseline;
  gap: 0.15em;
  font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;
  color: var(--accent);
  border: 1px solid var(--accent-40);
  background: var(--accent-12);
  border-radius: 12px;
  padding: 0.35rem 0.7rem;
}

/* ------------------------------------------------------------------ */
/* Nav                                                                */
/* ------------------------------------------------------------------ */
.nav {
  position: sticky;
  top: 0;
  z-index: 50;
  height: var(--nav-h);
  background: color-mix(in srgb, var(--bg) 72%, transparent);
  backdrop-filter: saturate(140%) blur(12px);
  -webkit-backdrop-filter: saturate(140%) blur(12px);
  border-bottom: 1px solid var(--border);
}
.nav-link {
  color: var(--muted);
  font-size: 0.9rem;
  transition: color .15s ease;
  position: relative;
}
.nav-link:hover { color: var(--ink); }

.logo-mark {
  width: 22px; height: 22px;
  flex: none;
}
/* Larger logo in the top nav (footer logo stays at the base size) */
.nav .logo-mark { width: 30px; height: 30px; }

/* mobile menu (toggled by JS) */
/* solid background (the Tailwind bg-bg/95 opacity modifier fails on the CSS-var colour,
   leaving the dropdown transparent — this makes it opaque so it doesn't show the hero through) */
#mobile-menu { display: none; background: var(--bg); }
#mobile-menu.open { display: block; }

/* ------------------------------------------------------------------ */
/* Footer wordmark                                                    */
/* ------------------------------------------------------------------ */
.wordmark {
  font-family: var(--fd);
  font-weight: 600;
  letter-spacing: -0.035em;
  line-height: 0.86;
  font-size: clamp(3.4rem, 15.5vw, 13.5rem);
  white-space: nowrap;
  /* animated "shiny text" (adapted from the animated-shiny-text component, pure CSS) */
  background: linear-gradient(110deg, #474747 0%, #474747 38%, #ededed 47%, var(--accent-br) 50%, #ededed 53%, #474747 62%, #474747 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  animation: wordmark-shine 6s linear infinite;
}
@keyframes wordmark-shine {
  0%   { background-position: -100% 0; }
  100% { background-position: 100% 0; }
}

/* Header logo wordmark — static Sora ink (the shine stays on the giant footer wordmark) */
.logo-word {
  font-family: var(--fd);
  font-weight: 600;
  font-size: 1.22rem;
  letter-spacing: -0.02em;
  color: var(--ink);
}

/* ------------------------------------------------------------------ */
/* Forms (request-access.html)                                        */
/* ------------------------------------------------------------------ */
.label {
  display: block;
  font-size: 0.82rem;
  color: var(--muted);
  margin-bottom: 0.45rem;
  font-weight: 500;
}
.label .req { color: var(--accent); }
.label .opt { color: var(--faint); font-weight: 400; }

.field {
  width: 100%;
  background: #161616;
  border: 1px solid var(--border-2);
  border-radius: 10px;
  color: var(--ink);
  padding: 0.78rem 0.9rem;
  font-size: 0.95rem;
  font-family: inherit;
  transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.field::placeholder { color: #5f5f5f; }
.field:hover { border-color: rgba(255,255,255,0.28); }
.field:focus {
  outline: none;
  border-color: var(--accent);
  background: #181c1e;
  box-shadow: 0 0 0 3px var(--accent-20);
}
select.field {
  appearance: none;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%238a8a8a' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.95rem center;
  padding-right: 2.4rem;
}
.field.invalid { border-color: #fb6a5a; box-shadow: 0 0 0 3px rgba(251,65,40,0.18); }
.field-error {
  display: none;
  color: #fb8c80;
  font-size: 0.78rem;
  margin-top: 0.35rem;
}
.field-error.show { display: block; }

/* ------------------------------------------------------------------ */
/* FAQ accordion (native <details>)                                   */
/* ------------------------------------------------------------------ */
.faq {
  border-top: 1px solid var(--border);
}
.faq summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 0;
  color: var(--ink);
  font-family: var(--fd);
  font-size: 1.02rem;
  font-weight: 500;
  border-bottom: 1px solid var(--border);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary .plus {
  flex: none;
  width: 22px; height: 22px;
  position: relative;
  color: var(--faint);
  transition: color .2s ease, transform .25s ease;
}
.faq summary .plus::before,
.faq summary .plus::after {
  content: "";
  position: absolute;
  background: currentColor;
  left: 50%; top: 50%;
}
.faq summary .plus::before { width: 12px; height: 1.5px; transform: translate(-50%,-50%); }
.faq summary .plus::after  { width: 1.5px; height: 12px; transform: translate(-50%,-50%); }
/* open: the whole + rotates 45° and turns accent */
.faq details[open] summary .plus { color: var(--accent); transform: rotate(45deg); }
.faq .faq-body {
  color: var(--muted);
  padding: 0 0 1.3rem;
  max-width: 60ch;
  font-size: 0.96rem;
}

/* ------------------------------------------------------------------ */
/* Reveal-on-scroll (progressive; no-JS shows everything)            */
/* ------------------------------------------------------------------ */
/* Only hide when JS is present (the <html class="js"> flag); no-JS shows all. */
/* Subdued: 7px rise over 1.15s, engineered easing; per-card stagger via .rd-* */
.js .reveal { opacity: 0; transform: translateY(7px); }
.js .reveal.in {
  opacity: 1; transform: none;
  transition: opacity 1.15s cubic-bezier(.22, .55, .25, 1), transform 1.15s cubic-bezier(.22, .55, .25, 1);
}
.js .reveal.rd-1.in { transition-delay: 80ms; }
.js .reveal.rd-2.in { transition-delay: 160ms; }
.js .reveal.rd-3.in { transition-delay: 240ms; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal, .reveal.in { opacity: 1; transform: none; transition: none; }
  .wordmark { animation: none; background: linear-gradient(180deg, #e6e6e6, #9a9a9a); -webkit-background-clip: text; background-clip: text; }
  .demo-link-pulse { display: none; }
}

/* ================================================================== */
/* Hero background — near-black canvas blending into --bg, one soft   */
/* cyan glow and the blueprint grid: the same technical treatment as  */
/* the rest of the page (careers / request-access heroes, footer).    */
/* ================================================================== */
.hero-bg { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.hero-bg-base {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #000 0%, #050505 52%, var(--bg) 100%);
}
.hero-bg-corner {
  position: absolute; inset: 0;
  background: radial-gradient(115% 95% at 0% 0%, rgba(46, 46, 46, 0.9) 0%, rgba(0, 0, 0, 0) 62%);
}
.hero-bg-glow {
  position: absolute;
  top: -180px; left: 50%;
  transform: translateX(-50%);
  width: min(1300px, 130vw); height: 820px;
  filter: blur(18px);
  background:
    radial-gradient(46% 52% at 42% 40%, var(--glow) 0%, transparent 68%),
    radial-gradient(36% 46% at 66% 46%, var(--glow-deep) 0%, transparent 72%),
    radial-gradient(30% 40% at 26% 62%, var(--glow-soft) 0%, transparent 72%);
}

/* ================================================================== */
/* DEMOS — auto-playing product showreel (5 self-contained panels)     */
/* ================================================================== */
.rp-head { max-width: 920px; }

/* confidence legend + dots + source affordance (shared across panels) */
.rp-legend {
  display: flex; flex-wrap: wrap; align-items: center; gap: 9px 18px;
  font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 11px; letter-spacing: .03em; color: var(--faint);
}
.rp-legend b { color: var(--muted-2); font-weight: 500; }
.rp-conf { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.rp-dot { width: 7px; height: 7px; border-radius: 999px; background: var(--faint); flex: none; }
.rp-dot--fact { background: var(--ok); }
.rp-dot--estimate { background: var(--warn); }
.rp-dot--inferred { background: var(--accent); }
.rp-src {
  display: inline-grid; place-items: center; width: 13px; height: 13px;
  border: 1px solid var(--border-2); border-radius: 999px;
  font-size: 8px; line-height: 1; color: var(--faint); cursor: help;
  font-style: normal; vertical-align: middle; transition: color .15s, border-color .15s;
}
.rp-src:hover { color: var(--accent); border-color: var(--accent-40); }
.rp-asof { font-size: 9.5px; color: var(--faint); letter-spacing: .02em; }
.rp-na { color: var(--faint); }                 /* "Not disclosed" */
.rp-num { font-variant-numeric: tabular-nums; }

/* the deck of stacked panels */
.rp-deck { display: flex; flex-direction: column; gap: 16px; }
.rp-panel {
  border: 1px solid rgba(255,255,255,.22); border-radius: 18px; background: var(--surface);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.10); overflow: hidden;
  display: flex; flex-direction: column;
}
/* Demo panels are display-only: no hover tooltips, no clickable sources/links, no manual
   interaction — the showreel just auto-plays. (Dot nav + swipe live outside .rp-panel.) */
.rp-panel, .rp-panel * { pointer-events: none !important; }
.rp-panel-bar {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 18px; border-bottom: 1px solid var(--border);
  font-family: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif; font-size: 16.5px;
  letter-spacing: .005em; text-transform: none;
}
.rp-panel-bar .rp-ix { color: var(--accent); }
.rp-panel-bar .rp-nm { color: var(--ink); font-weight: 600; }
.rp-panel-body { padding: 10px 16px 10px; flex: 1 1 auto; display: flex; flex-direction: column; justify-content: center; }
/* operational-kpi re-renders its content each loop — keep it top-anchored so it doesn't drift while it fills */
[data-demo="operational-kpi"] .rp-panel-body { justify-content: flex-start; }
[data-demo="ai-search"] .rp-panel-body { justify-content: flex-start; }
[data-demo="capital-raises"] .rp-panel-body { justify-content: flex-start; }
[data-demo="sea-drones"] .rp-panel-body { justify-content: stretch; }
/* Slide 2 title: sentence case + more visible (not the shared uppercase-faint bar) */
/* (no ≤720px body-padding override — on phones the panels render as zoomed-down desktop screenshots) */

/* ---- Slide 1 — AI search ---- */
.rp1 { display: flex; flex-direction: column; gap: 11px; }
.rp1-search {
  display: flex; align-items: center; gap: 10px;
  border: 1px solid var(--border); border-radius: 11px; background: var(--bg); padding: 12px 14px;
}
.rp1-search > svg { width: 16px; height: 16px; color: var(--faint); flex: none; }
.rp1-q { font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 13px; color: var(--ink); min-width: 0; }
.rp1-caret { display: inline-block; width: 7px; height: 15px; margin-left: 1px; background: var(--accent); vertical-align: -2px; animation: rp-blink 1s steps(1) infinite; }
@keyframes rp-blink { 50% { opacity: 0; } }
.rp1-chips { display: flex; flex-wrap: wrap; gap: 8px; min-height: 25px; }
.rp1-chip {
  display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--accent-40); background: var(--accent-12); color: var(--accent);
  border-radius: 999px; padding: 4px 11px; font-size: 11px; white-space: nowrap;
  opacity: 0; transform: translateY(6px) scale(.96); transition: opacity .3s ease, transform .3s ease;
}
.rp1-chip.in { opacity: 1; transform: none; }
.rp1-chip .k { color: var(--muted-2); }
/* wide results table — company discovery results, compact one-line rows */
.rp1-cards { display: flex; flex-direction: column; margin-top: 2px; }
.rp1-thead, .rp1-card {
  display: grid;
  grid-template-columns: minmax(0,1.15fr) minmax(0,1.3fr) minmax(0,0.85fr) minmax(0,1.75fr) minmax(0,1.5fr);
  align-items: center; gap: 16px;
}
.rp1-thead {
  font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 9px; letter-spacing: .13em;
  text-transform: uppercase; color: var(--faint);
  padding: 2px 14px 8px; border-bottom: 1px solid var(--border);
}
.rp1-card {
  padding: 9px 14px; border-bottom: 1px solid var(--border);
  opacity: 0; transform: translateY(8px); transition: opacity .4s ease, transform .4s ease;
}
.rp1-card:last-child { border-bottom: 0; }
.rp1-card.in { opacity: 1; transform: none; }
.rp1-card:hover { background: var(--surface-2); }
.rp1-co { min-width: 0; }
.rp1-co b { color: var(--ink); font-size: 12.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
.rp1-cell { min-width: 0; font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp1-cell.na { color: var(--faint); }
.rp1-prod { color: var(--ink); }
.rp1-conf { display: flex; align-items: center; gap: 8px; overflow: hidden; }
.rp1-conf .rp1-txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rp1-conf .rp-dot { flex: none; margin-left: auto; }
/* table header fades in just before the result rows */
.rp1-thead { opacity: 0; transform: translateY(6px); transition: opacity .4s ease, transform .4s ease; }
.rp1-thead.in { opacity: 1; transform: none; }
@media (max-width: 760px) {
  .rp1-thead, .rp1-card { grid-template-columns: minmax(0,1.05fr) minmax(0,1.6fr) minmax(0,1.4fr); gap: 11px; }
  .rp1-hide-sm { display: none; }
}

/* reduced motion → composed final state, no looping motion */
@media (prefers-reduced-motion: reduce) {
  .rp-panel { transition: none; }
  .rp1-thead, .rp1-chip, .rp1-card { opacity: 1 !important; transform: none !important; transition: none; }
  .rp1-caret { display: none; }
}

/* ---- Slide 2 — Operational KPI analysis (Buntar Aerospace) · v2 (action title + tightened x2) ---- */
.rp2{display:flex;flex-direction:column;gap:6px;}
.rp2-legend{display:flex;flex-wrap:wrap;align-items:center;gap:5px 14px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9.5px;letter-spacing:.03em;color:var(--faint);}
.rp2-legend b{color:var(--muted-2);font-weight:500;}
.rp2-legend .c{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}

/* analyst action title */
.rp2-head{display:flex;flex-direction:column;gap:2px;opacity:0;transform:translateY(8px);transition:opacity .45s ease,transform .45s ease;}
.rp2-head.in{opacity:1;transform:none;}
.rp2-eyebrow{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9.5px;letter-spacing:.04em;color:var(--faint);}
.rp2-title{margin:0;color:var(--ink);font-size:12.5px;font-weight:600;line-height:1.3;letter-spacing:-.01em;max-width:96ch;}

/* shared section label */
.rp2-lbl{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:0 0 -6px;}
.rp2-lbl{opacity:0;transform:translateY(6px);transition:opacity .4s ease,transform .4s ease;}
.rp2-lbl.in{opacity:1;transform:none;}

/* products row — only Buntar-3 (flagship) is emphasised */
.rp2-prods{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:8px;}
.rp2-prod{border:1px solid var(--border);border-top:2px solid transparent;border-radius:9px;background:var(--surface-2);padding:5px 9px;display:flex;flex-direction:column;gap:2px;min-width:0;opacity:0;transform:translateY(10px);transition:opacity .4s ease,transform .4s ease,border-color .3s,background .3s;}
.rp2-prod.in{opacity:1;transform:none;}
.rp2-prod.is-flagship.active{border-color:var(--accent-40);border-top-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface-2));}
.rp2-prod-nm{display:flex;align-items:center;gap:7px;color:var(--ink);font-size:12.5px;font-weight:600;}
.rp2-flag{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent-40);border-radius:4px;padding:1px 5px;}
.rp2-prod-do{color:var(--faint);font-size:10.5px;line-height:1.34;}

/* Buntar-3 detail: context badges + spec grid */
.rp2-badges{display:flex;flex-wrap:wrap;gap:6px;opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .4s ease;}
.rp2-badges.in{opacity:1;transform:none;}
.rp2-badge{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-2);border-radius:999px;background:var(--surface-2);padding:3px 11px;font-size:11px;color:var(--muted);white-space:nowrap;}
.rp2-specgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;}
.rp2-spec-cell{border:1px solid var(--border);border-radius:8px;background:var(--surface-2);padding:4px 8px;display:flex;flex-direction:column;gap:1px;min-width:0;opacity:0;transform:translateY(6px);transition:opacity .35s ease,transform .35s ease;}
.rp2-spec-cell.in{opacity:1;transform:none;}
.rp2-spec-k{font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);}
.rp2-spec-v{display:flex;align-items:center;gap:5px;color:var(--ink);font-size:12px;line-height:1.18;}
.rp2-spec-v b{font-weight:600;font-variant-numeric:tabular-nums;}

/* economic story — three equal full-sentence benefit boxes */
.rp2-benefits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-items:stretch;}
.rp2-benefit{border:1px solid var(--border);border-radius:10px;background:var(--surface-2);padding:6px 10px;display:flex;flex-direction:column;gap:4px;min-width:0;opacity:0;transform:translateY(9px);transition:opacity .42s ease,transform .42s ease;}
.rp2-benefit.in{opacity:1;transform:none;}
.rp2-benefit-h{display:flex;align-items:center;gap:6px;}
.rp2-benefit-t{color:var(--ink);font-size:11.5px;font-weight:600;}
.rp2-benefit-s{margin:0;color:var(--muted);font-size:10px;line-height:1.4;}
/* survivability 6.6% -> near-zero drop viz */
.rp2-drop{display:flex;flex-direction:column;gap:4px;margin-top:auto;padding-top:2px;}
.rp2-drop-row{display:grid;grid-template-columns:56px 1fr auto;align-items:center;gap:8px;}
.rp2-drop-cap{font-size:8.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;}
.rp2-drop-track{height:5px;border-radius:999px;background:var(--surface);overflow:hidden;}
.rp2-drop-fill{display:block;height:100%;border-radius:999px;}
.rp2-para{width:66%;background:var(--warn);}
.rp2-vtol{width:0;background:var(--ok);transition:width 1.1s cubic-bezier(.4,0,.2,1);}
.rp2-drop-n{font-size:9.5px;font-variant-numeric:tabular-nums;}
.rp2-para-n{color:var(--warn);}
.rp2-vtol-n{color:var(--ok);}
.rp2-payoff{margin:0;color:var(--muted-2);font-size:10.5px;line-height:1.4;display:flex;align-items:center;gap:6px;flex-wrap:wrap;opacity:0;transform:translateY(6px);transition:opacity .4s ease,transform .4s ease;}
.rp2-payoff.in{opacity:1;transform:none;}

/* deployment crew pictograph — schematic bar comparison (few words; detail on hover) */
.rp2-picto{display:flex;flex-direction:column;gap:6px;margin-top:2px;flex:1;justify-content:center;}
.rp2-picto-head{display:flex;align-items:baseline;gap:6px;cursor:help;}
.rp2-hn{color:var(--accent);font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1;}
.rp2-picto-lab{color:var(--muted-2);font-size:10.5px;}
.rp2-pic-row{display:grid;grid-template-columns:82px 1fr;align-items:center;gap:8px;cursor:help;}
.rp2-pic-lab{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);white-space:nowrap;}
.rp2-pic-lab b{color:var(--ink);font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:0;margin-right:3px;}
.rp2-pic-icons{display:flex;flex-wrap:wrap;gap:2px;}
.rp2-pic-row.vtol .rp2-ic-w{color:var(--accent);}
.rp2-pic-row.cat .rp2-ic-w{color:var(--muted-2);}
.rp2-ic-w{display:inline-flex;width:10px;height:10px;opacity:0;transform:scale(.5);transition:opacity .22s ease,transform .22s ease;}
.rp2-ic-w.on{opacity:1;transform:none;}
.rp2-ic{width:100%;height:100%;fill:currentColor;}
.rp2-pic-sys{margin-left:90px;color:var(--faint);font-size:8.5px;}

/* EW resilience — short sentence bullets */
.rp2-bullets{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;justify-content:space-evenly;gap:7px;flex:1;}
.rp2-bullet{position:relative;padding-left:14px;color:var(--muted);font-size:10.5px;line-height:1.45;cursor:help;opacity:0;transform:translateY(5px);transition:opacity .35s ease,transform .35s ease;}
.rp2-bullet::before{content:"";position:absolute;left:0;top:.45em;width:6px;height:6px;border-radius:2px;background:var(--accent);opacity:.85;}
.rp2-benefit.in .rp2-bullet{opacity:1;transform:none;}
.rp2-benefit.in .rp2-bullet:nth-child(1){transition-delay:.15s;}
.rp2-benefit.in .rp2-bullet:nth-child(2){transition-delay:.3s;}
.rp2-benefit.in .rp2-bullet:nth-child(3){transition-delay:.45s;}
.rp2-benefit-h[title]{cursor:help;}

/* where used — plain city names, no flags */
.rp2-where{display:flex;flex-wrap:wrap;align-items:center;gap:6px;opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .4s ease;}
.rp2-where.in{opacity:1;transform:none;}
.rp2-where-h{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-right:4px;}
.rp2-where-chip{border:1px solid var(--border);border-radius:6px;background:var(--surface);padding:2px 9px;font-size:11px;color:var(--muted-2);}
.rp2-ua{display:inline-flex;align-items:center;border:1px solid var(--accent-40);border-radius:999px;background:var(--accent-12);color:var(--accent);font-size:11px;font-weight:600;padding:2px 11px;white-space:nowrap;}
.rp2-ua-cities{color:var(--muted-2);font-size:10.5px;}

/* case study — the one concrete proof (two-part: What happened | Result box) */
.rp2-case{border:1px solid var(--accent-40);border-left:3px solid var(--accent);border-radius:10px;background:color-mix(in srgb,var(--accent) 6%,var(--surface-2));box-shadow:0 18px 50px -38px var(--glow);padding:9px 13px 10px;display:flex;flex-direction:column;gap:7px;opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .4s ease;}
.rp2-case.in{opacity:1;transform:none;}
.rp2-case-top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
.rp2-case-h{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);}
.rp2-case-meta{color:var(--muted-2);font-size:11px;}
/* two columns: action (left) · result box (right) */
.rp2-case-body{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch;}
.rp2-case-k{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9px;font-weight:500;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);}
.rp2-case-k--r{color:var(--accent);}
.rp2-case-act{color:var(--muted);font-size:11.5px;line-height:1.5;}
/* the result box */
.rp2-case-box{display:flex;flex-direction:column;gap:5px;border:1px solid var(--accent-40);border-radius:8px;background:color-mix(in srgb,var(--accent) 10%,transparent);padding:7px 11px 8px;min-width:0;}
.rp2-case-box--plain{border-color:var(--border-2);background:var(--surface-2);}
.rp2-case-box--plain .rp2-case-act{color:var(--ink);}
.rp2-case-pts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;}
.rp2-case-pts li{position:relative;padding-left:14px;color:var(--ink);font-size:11.5px;line-height:1.4;}
.rp2-case-pts li::before{content:"";position:absolute;left:0;top:6px;width:5px;height:5px;border-radius:1px;background:var(--accent);}

@media (max-width:820px){
  .rp2-prods{grid-template-columns:1fr;}
  .rp2-specgrid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .rp2-benefits{grid-template-columns:1fr;}
  .rp2-case-body{grid-template-columns:1fr;}
}
/* airframe reduction graph (6.6% -> ~1%) */
.rp2-graph-wrap{margin-top:auto;padding-top:4px;cursor:help;}
.rp2-benefit--graph .rp2-graph-wrap{flex:1;display:flex;flex-direction:column;justify-content:center;margin-top:0;}
.rp2-graph{width:100%;height:auto;display:block;overflow:visible;}
.rp2-graph-base{stroke:var(--border);stroke-width:1;}
.rp2-graph-area{opacity:0;transition:opacity .7s ease .35s;}
.rp2-graph-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:330;stroke-dashoffset:330;transition:stroke-dashoffset 1.15s cubic-bezier(.4,0,.2,1);}
.rp2-graph-pt{opacity:0;transition:opacity .35s ease;}
.rp2-graph-pt--hi{fill:var(--warn);}
.rp2-graph-pt--lo{fill:var(--ok);}
.rp2-graph-v{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:11px;font-weight:700;opacity:0;transition:opacity .4s ease;}
.rp2-graph-v--hi{fill:var(--warn);}
.rp2-graph-v--lo{fill:var(--ok);}
.rp2-graph-x{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:8px;fill:var(--faint);}
.rp2-benefit.in .rp2-graph-line{stroke-dashoffset:0;}
.rp2-benefit.in .rp2-graph-area{opacity:1;}
.rp2-benefit.in .rp2-graph-pt--hi{opacity:1;}
.rp2-benefit.in .rp2-graph-pt--lo{opacity:1;transition-delay:1s;}
.rp2-benefit.in .rp2-graph-v--hi{opacity:1;transition-delay:.15s;}
.rp2-benefit.in .rp2-graph-v--lo{opacity:1;transition-delay:1.05s;}

@media (prefers-reduced-motion:reduce){
  .rp2-lbl,.rp2-head,.rp2-prod,.rp2-badges,.rp2-spec-cell,.rp2-benefit,.rp2-payoff,.rp2-where,.rp2-case,.rp2-bullet{opacity:1 !important;transform:none !important;transition:none;}
  .rp2-graph-line{stroke-dashoffset:0;transition:none;}
  .rp2-graph-area,.rp2-graph-pt,.rp2-graph-v{opacity:1;}
}

/* ---- Slide 4 — Case study / impact deduction (Destinus Ruta) ---- */
.rp4 { display: grid; grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr); gap: 24px; align-items: start; }
.rp4-left, .rp4-right { display: flex; flex-direction: column; min-width: 0; }
.rp4-right { border-left: 1px solid var(--border); padding-left: 24px; }

.rp4-id { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.rp4-id-mk { flex: none; display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--accent-40); border-radius: 8px; background: var(--accent-12); color: var(--accent); font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 11px; font-weight: 600; }
.rp4-id-tx { display: flex; flex-direction: column; min-width: 0; }
.rp4-id-tx b { color: var(--ink); font-size: 13.5px; font-weight: 600; }
.rp4-id-tx span { color: var(--faint); font-size: 10.5px; }
.rp4-badge { margin-left: auto; flex: none; display: inline-flex; align-items: center; gap: 6px; border: 1px solid color-mix(in srgb, var(--ok) 40%, transparent); background: color-mix(in srgb, var(--ok) 12%, transparent); color: var(--ok); border-radius: 999px; padding: 4px 10px; font-size: 10.5px; white-space: nowrap; }

.rp4-headline { font-size: 13px; color: var(--muted); line-height: 1.5; margin: 0 0 16px; }

.rp4-lbl { font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 9px; letter-spacing: .14em; text-transform: uppercase; color: var(--faint); margin: 0 0 8px; }
.rp4-lbl--warn { color: var(--warn); }
.rp4-lbl-note { font-family: "Inter", sans-serif; letter-spacing: 0; text-transform: none; color: var(--faint); font-size: 10px; }

.rp4-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin-bottom: 16px; }
.rp4-fact { display: flex; flex-direction: column; gap: 3px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2); padding: 8px 10px; }
.rp4-k { font-size: 8.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--faint); }
.rp4-v { font-size: 12.5px; color: var(--ink); display: flex; align-items: center; gap: 6px; }

.rp4-claims { list-style: none; margin: 0 0 16px; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.rp4-claims li { font-size: 11px; color: var(--muted); padding-left: 15px; position: relative; line-height: 1.4; }
.rp4-claims li::before { content: "›"; position: absolute; left: 3px; color: var(--accent); }
.rp4-est { color: var(--warn); border: 1px solid color-mix(in srgb, var(--warn) 40%, transparent); border-radius: 4px; padding: 0 5px; font-size: 8.5px; letter-spacing: .04em; text-transform: uppercase; margin-left: 4px; white-space: nowrap; }

.rp4-deploy { font-size: 11px; color: var(--muted); border-left: 2px solid var(--accent-40); padding: 5px 0 5px 11px; line-height: 1.45; }
.rp4-dp-date { color: var(--accent); font-weight: 600; margin-right: 6px; }

.reveal-step { opacity: 0; transform: translateY(6px); transition: opacity .4s ease, transform .4s ease; }
.reveal-step.in { opacity: 1; transform: none; }

/* the reasoning chain — the differentiator */
.rp4-chain { list-style: none; margin: 0 0 14px; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.rp4-step { display: grid; grid-template-columns: 74px minmax(0, 1fr); gap: 12px; align-items: start; opacity: 0; transform: translateX(-7px); transition: opacity .45s ease, transform .45s ease; }
.rp4-step.in { opacity: 1; transform: none; }
.rp4-st-tag { font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 8.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; padding: 3px 0; border-radius: 5px; text-align: center; border: 1px solid; align-self: start; margin-top: 1px; }
.rp4-st-tx { font-size: 11.5px; color: var(--muted); line-height: 1.45; }
.rp4-step[data-tag="FACT"] .rp4-st-tag { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 45%, transparent); background: color-mix(in srgb, var(--ok) 12%, transparent); }
.rp4-step[data-tag="ESTIMATE"] .rp4-st-tag { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 45%, transparent); background: color-mix(in srgb, var(--warn) 12%, transparent); }
.rp4-step[data-tag="INFERRED"] .rp4-st-tag { color: var(--accent); border-color: var(--accent-40); background: var(--accent-12); }

/* the conclusion */
.rp4-impact { border: 1px solid var(--accent-40); background: var(--accent-12); border-radius: 10px; padding: 11px 13px; margin-bottom: 14px; opacity: 0; transform: translateY(7px); transition: opacity .5s ease, transform .5s ease; }
.rp4-impact.in { opacity: 1; transform: none; }
.rp4-impact-lbl { display: inline-flex; align-items: center; gap: 6px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 8.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); margin-bottom: 5px; }
.rp4-impact p { margin: 0 0 6px; font-size: 12.5px; color: var(--ink); line-height: 1.45; }
.rp4-impact-src { font-size: 9.5px; color: var(--muted-2); line-height: 1.4; display: block; }

.rp4-grid2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 0.95fr); gap: 13px; align-items: start; }

/* the honest gap */
.rp4-unknown { border: 1px dashed var(--border-2); border-radius: 10px; padding: 10px 12px; opacity: 0; transition: opacity .5s ease; }
.rp4-unknown.in { opacity: 1; }
.rp4-unknown ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.rp4-unknown li { font-size: 10px; color: var(--muted-2); padding-left: 15px; position: relative; line-height: 1.35; }
.rp4-unknown li::before { content: "?"; position: absolute; left: 3px; color: var(--warn); font-weight: 700; }

/* buyer / contract signal */
.rp4-buyer { border: 1px solid var(--border); border-radius: 10px; background: var(--surface-2); padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; opacity: 0; transform: translateY(7px); transition: opacity .5s ease, transform .5s ease; }
.rp4-buyer.in { opacity: 1; transform: none; }
.rp4-buyer-row { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.rp4-buyer-nm { font-size: 11.5px; color: var(--ink); display: flex; flex-direction: column; }
.rp4-buyer-nm span { font-size: 9.5px; color: var(--faint); }
.rp4-buyer-u { font-size: 19px; font-weight: 600; color: var(--accent); white-space: nowrap; }
.rp4-buyer-u small { font-size: 9.5px; font-weight: 400; color: var(--muted-2); }
.rp4-repeat { align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; color: var(--ok); border: 1px solid color-mix(in srgb, var(--ok) 40%, transparent); border-radius: 999px; padding: 3px 9px; font-size: 10px; white-space: nowrap; animation: rp4-pulse 2.4s ease-in-out infinite; }
.rp4-repeat small { color: var(--muted-2); }
.rp4-buyer-src { align-self: flex-start; }
@keyframes rp4-pulse { 0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--ok) 35%, transparent); } 55% { box-shadow: 0 0 0 5px transparent; } }

@media (max-width: 860px) {
  .rp4 { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .rp4-right { border-left: 0; padding-left: 0; border-top: 1px solid var(--border); padding-top: 16px; }
  .rp4-grid2 { grid-template-columns: minmax(0, 1fr); }
  .rp4-step { grid-template-columns: 68px minmax(0, 1fr); gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .rp4-headline, .reveal-step, .rp4-step, .rp4-impact, .rp4-unknown, .rp4-buyer { opacity: 1 !important; transform: none !important; transition: none; }
  .rp4-repeat { animation: none; }
}

/* ---- Slide 3 — deck upload → company analysis + competitor benchmark ---- */
.rp3{--rp3-pink:#f2a9cf;--rp3-green:#8fe0b0;display:flex;flex-direction:column;gap:6px;}
.rp3-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9.5px;letter-spacing:.03em;color:var(--faint);}
.rp3-legend b{color:var(--muted-2);font-weight:500;}
.rp3-legend .c{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}

.rp3-split{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,2.15fr);gap:20px;align-items:start;}

/* LEFT — upload */
.rp3-up{display:flex;flex-direction:column;gap:10px;}
.rp3-drop{border:1.5px dashed var(--border-2);border-radius:12px;background:var(--surface-2);padding:13px 13px 14px;display:flex;flex-direction:column;gap:10px;}
.rp3-drop-h{display:flex;align-items:center;gap:8px;color:var(--muted-2);font-size:11px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;letter-spacing:.02em;}
.rp3-drop-h svg{width:15px;height:15px;color:var(--accent);flex:none;}
.rp3-files{display:flex;flex-direction:column;gap:8px;}
.rp3-file{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:2px 9px;align-items:center;border:1px solid var(--border);border-radius:9px;background:var(--surface);padding:8px 10px;opacity:0;transform:translateY(9px);transition:opacity .4s ease,transform .4s ease;}
.rp3-file.in{opacity:1;transform:none;}
.rp3-file-ic{grid-row:1 / 3;display:grid;place-items:center;width:30px;height:30px;border-radius:6px;background:var(--accent-12);border:1px solid var(--accent-40);color:var(--accent);font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:8.5px;font-weight:600;letter-spacing:.04em;}
.rp3-file-tx{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0;}
.rp3-file-tx b{color:var(--ink);font-size:11.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rp3-file-sz{color:var(--faint);font-size:9.5px;flex:none;}
.rp3-file-bar{grid-column:2;height:3px;border-radius:999px;background:var(--surface-2);overflow:hidden;}
.rp3-file-bar i{display:block;height:100%;width:0;border-radius:999px;background:var(--accent);transition:width 1.1s cubic-bezier(.4,0,.2,1);}
.rp3-files.filling .rp3-file-bar i{width:100%;}
.rp3-ticker{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:10px;color:var(--muted-2);min-height:14px;transition:opacity .4s ease;}
.rp3-ticker::before{content:"› ";color:var(--accent);}
.rp3-ticker.rp3-ticker-out{opacity:0;}
.rp3-done{display:none;align-items:center;gap:7px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:10.5px;color:var(--ok);}
.rp3-done.in{display:inline-flex;}
.rp3-done-ic{display:grid;place-items:center;width:15px;height:15px;border-radius:999px;background:color-mix(in srgb,var(--ok) 15%,transparent);border:1px solid color-mix(in srgb,var(--ok) 45%,transparent);font-size:9px;}

/* RIGHT — analysis */
.rp3-an{display:flex;flex-direction:column;gap:5px;border-left:1px solid var(--border);padding-left:20px;min-width:0;}
.rp3-co{display:flex;flex-direction:column;gap:4px;opacity:0;transform:translateY(8px);transition:opacity .45s ease,transform .45s ease;}
.rp3-co.in{opacity:1;transform:none;}
.rp3-co-nm{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:16px;font-weight:600;letter-spacing:-.01em;}
.rp3-anon{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);border:1px solid var(--border-2);border-radius:4px;padding:1px 6px;font-weight:400;}
.rp3-co-tags{display:flex;flex-wrap:wrap;gap:6px;}
.rp3-co-tags span{border:1px solid var(--border);border-radius:999px;background:var(--surface-2);padding:2px 9px;font-size:10px;color:var(--muted-2);white-space:nowrap;}

/* score + sub-scores */
.rp3-score{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;border:1px solid var(--accent-40);border-radius:12px;background:linear-gradient(180deg,var(--accent-12),transparent);padding:6px 11px;opacity:0;transform:translateY(9px);transition:opacity .45s ease,transform .45s ease;}
.rp3-score.in{opacity:1;transform:none;}
.rp3-score-hd{display:flex;flex-direction:column;gap:1px;}
.rp3-score-n{display:flex;align-items:baseline;color:var(--accent);font-size:30px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1;}
.rp3-score-n small{font-size:12px;color:var(--muted-2);font-weight:500;margin-left:1px;}
.rp3-score-lbl{display:inline-flex;align-items:center;gap:5px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);}
.rp3-subs{display:grid;grid-template-columns:1fr 1fr;gap:2px 16px;min-width:0;}
.rp3-sub{display:grid;grid-template-columns:118px 1fr 26px;align-items:center;gap:8px;}
.rp3-sub-n{font-size:9.5px;color:var(--muted-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rp3-sub-bar{height:4px;border-radius:999px;background:var(--surface-2);overflow:hidden;min-width:26px;}
.rp3-sub-bar i{display:block;height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--accent-deep),var(--accent));transition:width .9s cubic-bezier(.4,0,.2,1);}
.rp3-sub-v{font-size:9.5px;color:var(--muted);font-variant-numeric:tabular-nums;}

/* executive summary heading */
.rp3-exec-h{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);margin-bottom:1px;opacity:0;transform:translateY(6px);transition:opacity .4s ease,transform .4s ease;}
.rp3-exec-h.in{opacity:1;transform:none;}
/* key facts — bullet list */
.rp3-points{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;}
.rp3-pt{position:relative;padding:1.5px 0 1.5px 13px;font-size:10.5px;color:var(--muted);line-height:1.32;opacity:0;transform:translateY(6px);transition:opacity .4s ease,transform .4s ease;}
.rp3-pt::before{content:"";position:absolute;left:2px;top:8px;width:3px;height:3px;border-radius:50%;background:color-mix(in srgb,var(--accent) 85%,transparent);}
.rp3-pt.in{opacity:1;transform:none;}
.rp3-pt-k{color:var(--ink);font-weight:600;}
.rp3-pt-k::after{content:":";color:var(--faint);font-weight:400;margin-right:1px;}
.rp3-pt-v{color:var(--muted);}

/* competitor benchmark */
.rp3-comp{display:flex;flex-direction:column;gap:5px;opacity:0;transform:translateY(8px);transition:opacity .45s ease,transform .45s ease;}
.rp3-comp.in{opacity:1;transform:none;}
.rp3-comp-h{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;}
.rp3-found{font-size:11px;color:var(--ink);font-weight:500;}
.rp3-found::before{content:"⌕ ";color:var(--accent);}
.rp3-basis{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin-left:auto;}
.rp3-tabs{display:inline-flex;gap:5px;flex-wrap:wrap;}
.rp3-tab{border:1px solid var(--border);border-radius:999px;background:var(--surface-2);color:var(--muted-2);font:inherit;font-size:10px;padding:3px 10px;cursor:pointer;white-space:nowrap;transition:color .2s,border-color .2s,background .2s;}
.rp3-tab.is-active{border-color:var(--accent-40);background:var(--accent-12);color:var(--accent);}
.rp3-table{display:flex;flex-direction:column;}
.rp3-trow{display:grid;grid-template-columns:minmax(96px,1.05fr) repeat(3,minmax(0,1fr));gap:8px;align-items:center;padding:1px 8px;border-radius:7px;opacity:0;transform:translateY(6px);transition:opacity .35s ease,transform .35s ease;}
.rp3-trow.in{opacity:1;transform:none;}
.rp3-trow:nth-child(even){background:var(--surface-2);}
.rp3-thead{font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);background:transparent !important;padding-bottom:3px;}
.rp3-thead .rp3-ccol{color:var(--muted-2);display:inline-flex;align-items:center;gap:4px;}
.rp3-metric{font-size:10px;line-height:1.2;color:var(--muted-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rp3-cell{font-size:10.5px;line-height:1.2;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rp3-cell.rp3-best{color:var(--muted);font-weight:400;}
.rp3-cell.na{color:var(--faint);}
.rp3-thead .rp3-ccol.rp3-c1{color:var(--accent);}
.rp3-thead .rp3-ccol.rp3-c2{color:var(--rp3-pink);}
.rp3-thead .rp3-ccol.rp3-c3{color:var(--rp3-green);}
.rp3-pt[title],.rp3-score-lbl[title],.rp3-flag[title],.rp3-cell [title],.rp3-note[title]{cursor:help;}
.rp3-cell .rp-dot{display:inline-block;margin-left:5px;vertical-align:middle;}
.rp3 a.rp-dot{cursor:pointer;transition:box-shadow .15s ease;}
.rp3 a.rp-dot:hover{box-shadow:0 0 0 2.5px color-mix(in srgb,var(--ok) 30%,transparent);}
.rp3-note{display:flex;align-items:center;gap:6px;font-size:9.5px;color:var(--faint);line-height:1.4;padding:0 8px 0;}
.rp3-flag{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;border:1px solid var(--border-2);background:var(--surface-2);color:var(--muted-2);border-radius:999px;padding:2px 10px;font-size:10px;opacity:0;transform:translateY(6px);transition:opacity .4s ease,transform .4s ease;}
.rp3-flag.in{opacity:1;transform:none;}
.rp3-flag .rp-dot{flex:none;}
.rp3-flag-ic{color:var(--warn);line-height:1;}

/* mobile-only: competitor comparison as three vertical company cards (2-3 details each) */
.rp3-cmob{display:none;flex-direction:column;gap:8px;}
.rp3-cmob-card{border:1px solid var(--border-2);border-radius:10px;background:var(--surface-2);padding:8px 11px;opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .4s ease;}
.rp3-cmob-card.in{opacity:1;transform:none;}
.rp3-cmob-nm{color:var(--ink);font-size:12.5px;font-weight:600;letter-spacing:.01em;margin-bottom:4px;}
.rp3-cmob-card.rp3-c1 .rp3-cmob-nm{color:var(--accent);}
.rp3-cmob-card.rp3-c2 .rp3-cmob-nm{color:var(--rp3-pink);}
.rp3-cmob-card.rp3-c3 .rp3-cmob-nm{color:var(--rp3-green);}
.rp3-cmob-d{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:11px;padding:3px 0;border-top:1px solid var(--border);}
.rp3-cmob-k{color:var(--faint);white-space:nowrap;}
.rp3-cmob-v{color:var(--muted);text-align:right;}

@media (max-width:860px){
  .rp3-split{grid-template-columns:minmax(0,1fr);}
  .rp3-an{border-left:0;padding-left:0;border-top:1px solid var(--border);padding-top:12px;}
  .rp3-subs{grid-template-columns:1fr;}
}
@media (prefers-reduced-motion:reduce){
  .rp3-exec-h,.rp3-file,.rp3-co,.rp3-score,.rp3-pt,.rp3-comp,.rp3-trow,.rp3-flag,.rp3-cmob-card{opacity:1 !important;transform:none !important;transition:none;}
  .rp3-file-bar i,.rp3-sub-bar i{transition:none;}
}

/* ---- demo carousel — horizontal showreel (one slide visible, dot nav) ---- */
.rp-viewport { position: relative; overflow: hidden; border-radius: 18px; box-shadow: 0 22px 55px -30px rgba(0,0,0,.85); }
.rp-track { display: flex; align-items: stretch; will-change: transform; transition: transform .6s cubic-bezier(.4, 0, .2, 1); }
.rp-track > .rp-panel { flex: 0 0 100%; width: 100%; min-width: 0; }
.rp-dots { display: flex; justify-content: center; align-items: center; gap: 9px; }
.rp-mobile-note { display: none; margin: 10px 0 0; text-align: center; font-family: var(--fm); font-size: 9px; letter-spacing: .08em; text-transform: uppercase; color: var(--faint); }
.rp-dot-nav {
  width: 8px; height: 8px; padding: 0; border: 0; border-radius: 999px;
  background: var(--border-2); cursor: pointer; appearance: none;
  transition: background .3s ease, width .3s ease;
}
.rp-dot-nav:hover { background: var(--muted-2); }
.rp-dot-nav.is-active { width: 26px; background: var(--accent); }
@media (prefers-reduced-motion: reduce) {
  .rp-viewport, .rp-track { transition: none; }
}

/* ---- Slide 4 — Ukraine sea-drone makers (signature-edge cards) ---- */
.rpsd { --rpsd-reported: var(--accent-ember); --rpsd-pink: #f6a8cc; --rpsd-blue: #5a82ea; display: flex; flex-direction: column; gap: 10px; height: 100%; justify-content: flex-start; }
.rpsd-title { color: var(--ink); font-size: 14px; font-weight: 600; line-height: 1.35; letter-spacing: -.01em; }
.rpsd-sub { color: var(--muted-2); font-size: 10.5px; margin-top: 6px; }

.rpsd-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 11px; align-items: stretch; }
.rpsd-card { display: flex; flex-direction: column; gap: 9px; border: 1px solid var(--border-2); border-radius: 13px; background: var(--surface-2); padding: 11px 12px; opacity: 0; transform: translateY(10px); transition: opacity .45s ease, transform .45s ease; }
.rpsd-card.in { opacity: 1; transform: none; }
/* IB alignment: subgrid so the Platform · Combat · Economics bands line up across all three cards */
@supports (grid-template-rows: subgrid) {
  .rpsd-cards { grid-template-rows: auto auto auto auto; column-gap: 11px; row-gap: 7px; }
  .rpsd-card { display: grid; grid-template-rows: subgrid; grid-row: 1 / -1; row-gap: 7px; }
  .rpsd-card:nth-child(1) { grid-column: 1; }
  .rpsd-card:nth-child(2) { grid-column: 2; }
  .rpsd-card:nth-child(3) { grid-column: 3; }
}

.rpsd-chd { display: flex; flex-direction: column; gap: 3px; }
.rpsd-name { color: var(--ink); font-size: 14px; font-weight: 700; letter-spacing: .01em; }
.rpsd-maker { color: var(--faint); font-size: 9.5px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; }
.rpsd-badges { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 0; }
.rpsd-badge { font-size: 8.5px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; letter-spacing: .05em; text-transform: uppercase; padding: 3px 7px; border-radius: 999px; border: 1px solid var(--border-2); color: var(--muted-2); white-space: nowrap; }
.rpsd-badge--state { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 42%, transparent); }
.rpsd-badge--private { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 45%, transparent); }

/* IB frame — 5 sections per card: identity · platform · combat record · economics · investability */
.rpsd-sec { border-top: 1px solid var(--border); padding-top: 8px; display: flex; flex-direction: column; gap: 6px; opacity: 0; transform: translateY(7px); transition: opacity .4s ease, transform .4s ease; }
.rpsd-sec.in { opacity: 1; transform: none; }
.rpsd-slabel { color: var(--faint); font-size: 8px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; letter-spacing: .12em; text-transform: uppercase; }
.rpsd-slabel--ember { color: var(--accent-ember); }

/* platform: label + value rows */
.rpsd-kv { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.rpsd-kv .k { flex: none; color: var(--faint); font-size: 8.5px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; letter-spacing: .04em; text-transform: uppercase; }
.rpsd-kv .vs { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 2px 12px; min-width: 0; text-align: right; }
.rpsd-kv .v { color: var(--ink); font-size: 10px; line-height: 1.4; font-variant-numeric: tabular-nums; }
.rpsd-kv .nd { color: var(--faint); font-size: 10px; }

/* combat record: ember hero + lines */
.rpsd-hero { display: flex; align-items: baseline; flex-wrap: wrap; gap: 3px 7px; }
.rpsd-hn { color: var(--accent-ember); font-size: 23px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; }
.rpsd-h2 { color: var(--ink); font-size: 12px; font-weight: 700; margin-left: 4px; }
.rpsd-hu { color: var(--muted); font-size: 10px; }
.rpsd-sec--combat.in .rpsd-hn { animation: rpsd-emberland .55s cubic-bezier(.2, .7, .3, 1); }
@keyframes rpsd-emberland { 0% { transform: scale(1.22); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }

.rpsd-line { color: var(--muted); font-size: 9.5px; line-height: 1.45; }
.rpsd-line b { color: var(--ink); font-weight: 600; }
.rpsd-sub2 { color: var(--faint); font-size: 9.5px; line-height: 1.3; }

/* damage hero — the standout stat, using the card's spare space. MAGURA = pink, Sea Baby = dark blue */
.rpsd-slabel--pink { color: var(--rpsd-pink); }
.rpsd-slabel--blue { color: var(--rpsd-blue); }
.rpsd-dmg { display: flex; flex-direction: column; gap: 2px; margin: 2px 0 3px; }
.rpsd-dmg-n { color: var(--rpsd-pink); font-size: 32px; font-weight: 800; line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.rpsd-dmg-n--blue { color: var(--rpsd-blue); }
.rpsd-dmg-cap { color: var(--muted); font-size: 9.5px; line-height: 1.3; }
.rpsd-ratio { color: var(--muted); }
.rpsd-ratio b { color: var(--rpsd-pink); font-weight: 700; }
.rpsd-ratio--blue b { color: var(--rpsd-blue); }
.rpsd-noval { color: var(--muted-2); }

/* dots: green=fact · ember=reported · amber filled=single-sourced/company-stated · amber ring=analyst estimate */
.rpsd .rp-dot { display: inline-block; width: 6px; height: 6px; vertical-align: middle; margin-left: 4px; }
.rpsd-repdot { background: var(--accent-ember); }
.rpsd-ambdot { background: var(--accent-amber); }
.rpsd-estdot { display: inline-block; width: 6px; height: 6px; border-radius: 999px; border: 1.5px solid var(--accent-amber); vertical-align: middle; margin-left: 4px; cursor: help; }
.rpsd a.rp-dot { cursor: pointer; transition: box-shadow .15s ease; }
.rpsd a.rp-dot:hover { box-shadow: 0 0 0 2.5px color-mix(in srgb, var(--ink) 18%, transparent); }

/* Marichka: company-stated tint + attribution flag */
.rpsd-csnote { align-self: flex-start; display: inline-flex; align-items: center; border: 1px solid color-mix(in srgb, var(--accent-amber) 45%, transparent); color: var(--accent-amber); background: color-mix(in srgb, var(--accent-amber) 9%, transparent); border-radius: 999px; padding: 2px 9px; font-size: 8.5px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; letter-spacing: .06em; text-transform: uppercase; }
.rpsd-cs { border-left: 2px solid color-mix(in srgb, var(--accent-amber) 40%, transparent); padding-left: 9px; display: flex; flex-direction: column; gap: 4px; }
.rpsd-attr { color: var(--accent-amber); font-size: 8.5px; font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; letter-spacing: .04em; }
.rpsd-attr a { color: inherit; text-decoration: underline dotted; text-underline-offset: 2px; }

/* investability */
.rpsd-verdict { color: var(--muted); font-size: 10px; line-height: 1.3; }
.rpsd-verdict--green { color: var(--ok); }
.rpsd-invest { position: relative; display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; border: 1px solid color-mix(in srgb, var(--ok) 55%, transparent); background: color-mix(in srgb, var(--ok) 14%, transparent); color: var(--ok); border-radius: 999px; padding: 3px 10px; font-size: 10px; font-weight: 700; }
.rpsd-invest::after { content: ""; position: absolute; inset: -2px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--ok) 60%, transparent); opacity: 0; pointer-events: none; }
.rpsd-card.armed .rpsd-invest::after { animation: rpsd-invpulse 1.8s ease-in-out infinite; }
@keyframes rpsd-invpulse { 0%, 100% { opacity: 0; transform: scale(1); } 50% { opacity: .9; transform: scale(1.04); } }

.rpsd a.rp-src { text-decoration: none; }
.rpsd-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 6px 18px; border-top: 1px solid var(--border); padding-top: 10px; }
.rpsd-thesis { color: var(--muted-2); font-size: 10.5px; }
.rpsd-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace; font-size: 10px; letter-spacing: .03em; color: var(--faint); }
.rpsd-foot .rp-dot { width: 6px; height: 6px; margin-left: 0; }

@media (max-width: 760px) {
  .rpsd-cards { display: flex; flex-direction: column; }
  .rpsd-card { display: flex; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  .rpsd-card, .rpsd-sec { opacity: 1 !important; transform: none !important; transition: none; }
  .rpsd-sec--combat.in .rpsd-hn { animation: none; }
  .rpsd-card.armed .rpsd-invest::after { animation: none; opacity: .5; }
}

/* ---- Slide 5 — Capital raise comparison (three cards · circular badges · green investor column) ---- */
/* IB alignment: ONE shared column template for all three tables → every column boundary sits at the same x in every panel */
.rp5c{--rp5c-cols:40px minmax(0,0.85fr) 62px minmax(0,1.55fr);display:flex;flex-direction:column;gap:7px;}

.rp5c-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;align-items:stretch;}
.rp5c-p{display:flex;flex-direction:column;gap:8px;border:1px solid var(--border-2);border-radius:13px;background:var(--surface-2);padding:11px 12px;opacity:0;transform:translateY(10px);transition:opacity .45s ease,transform .45s ease;}
.rp5c-p.in{opacity:1;transform:none;}

/* company header — circular monogram badge + name */
.rp5c-p-hd{display:flex;align-items:center;gap:9px;}
.rp5c-badge{flex:none;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;letter-spacing:.02em;color:var(--ink);background:color-mix(in srgb,var(--accent) 13%,transparent);border:1.5px solid color-mix(in srgb,var(--accent) 48%,transparent);}
.rp5c-p-id{min-width:0;}
.rp5c-p-id b{display:block;color:var(--ink);font-size:13.5px;font-weight:700;letter-spacing:.01em;line-height:1.15;}
.rp5c-p-id span{display:block;color:var(--faint);font-size:8.5px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;margin-top:2px;line-height:1.25;}

/* total block — the hero; the slide's single accent */
.rp5c-total{display:flex;flex-direction:column;gap:1px;cursor:help;}
.rp5c-t-lbl{color:var(--faint);font-size:8px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase;}
.rp5c-t-big{color:var(--accent);font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1;}
.rp5c-t-val{color:var(--muted-2);font-size:9.5px;}
.rp5c-t-rounds{display:none;color:var(--faint);font-size:8.5px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;letter-spacing:.06em;text-transform:uppercase;margin-top:3px;}

/* rounds table — Date · Round · Raised · Investors(green) */
.rp5c-tbl{margin-top:5px;display:flex;flex-direction:column;}
.rp5c-th{display:grid;grid-template-columns:var(--rp5c-cols);gap:13px;padding:0 4px 3px;border-bottom:1px solid var(--border);color:var(--faint);font-size:7.5px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase;}
.rp5c-th span:nth-child(3),.rp5c-th span:nth-child(4){text-align:right;}
.rp5c-r{display:grid;grid-template-columns:var(--rp5c-cols);gap:13px;align-items:baseline;padding:6px 4px;border-bottom:1px solid var(--border);opacity:0;transform:translateY(6px);transition:opacity .35s ease,transform .35s ease;cursor:help;}
.rp5c-r:last-child{border-bottom:0;}
.rp5c-r.in{opacity:1;transform:none;}
.rp5c-r .d{color:var(--faint);font-size:8px;font-family:"IBM Plex Mono", ui-monospace,Menlo,monospace;white-space:nowrap;}
.rp5c-r .s{color:var(--muted);font-size:9.5px;line-height:1.25;}
.rp5c-r .a{display:flex;flex-direction:column;align-items:flex-end;gap:1px;color:var(--ink);font-size:9.5px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;}
.rp5c-r .a.nd{color:var(--faint);font-weight:400;}
.rp5c-rv{color:var(--muted-2);font-size:8px;font-weight:400;}
/* investors — their own right-aligned column, names only, white */
.rp5c-inv{color:var(--ink);font-size:9px;line-height:1.35;min-width:0;overflow-wrap:break-word;text-align:right;}
.rp5c-inv .nd{color:var(--faint);}
.rp5c-more{color:var(--faint);font-weight:400;}
/* QS debt row — visually distinct from equity rows */
.rp5c-r--debt .s,.rp5c-r--debt .a{color:var(--faint);font-weight:400;}
.rp5c-r--debt .rp5c-inv{opacity:.8;}

@media (max-width:1140px){
  .rp5c{--rp5c-cols:38px minmax(0,0.82fr) 58px minmax(0,1.45fr);}
}
@media (max-width:860px){
  .rp5c-grid{grid-template-columns:1fr;}
  .rp5c-tbl{margin-top:4px;}
}
@media (prefers-reduced-motion:reduce){
  .rp5c-p,.rp5c-r{opacity:1 !important;transform:none !important;transition:none;}
}

/* DEMOS on phones (≤720px): same swipeable carousel as desktop, but every
   slide is given one uniform height — content that overflows scrolls inside
   the slide. Single-column layouts (ungated above), dots + swipe to navigate. */
@media (max-width: 720px) {
  .rp-viewport { overflow: hidden; border-radius: 16px; box-shadow: 0 16px 38px -26px rgba(0,0,0,.85); }
  .rp-panel { border-radius: 16px; }
  .rp-dots { display: flex; }
  /* uniform slide height (tuned to Slide 1's content); taller slides scroll internally */
  .rp-panel-body { height: 66vh; max-height: 470px; min-height: 340px; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; }
  [data-demo] .rp-panel-body { justify-content: flex-start; }

  /* consistent body-text size across slides */
  .rp1-cell, .rp1-co, .rpsd-kv .v, .rpsd-line, .rp3-pt, .rp3-cell, .rp5c-inv { font-size: 11px; }
  /* trim less-relevant blocks on mobile so each slide fits the uniform height */
  [data-demo="operational-kpi"] .rp2-where,
  [data-demo="operational-kpi"] .rp2-case,
  [data-demo="operational-kpi"] .rp2-badges,
  [data-demo="operational-kpi"] .rp2-benefit--ew,
  [data-demo="sea-drones"] .rpsd-sub2,
  [data-demo="sea-drones"] .rpsd-bottom,
  [data-demo="sea-drones"] .rpsd-line,
  [data-demo="capital-raises"] .rp5c-tbl { display: none; }   /* rounds stay desktop-only */
  [data-demo="capital-raises"] .rp5c-t-rounds { display: block; }
  [data-demo="capital-raises"] .rp5c-p { padding: 9px 11px; gap: 5px; }
  [data-demo="capital-raises"] .rp5c-grid { gap: 8px; }
  /* Slide 4 (mobile): compare just MAGURA + Sea Baby — equal-height cards, compact type */
  [data-demo="sea-drones"] .rpsd-cards { display: grid; grid-template-columns: 1fr; grid-template-rows: 1fr 1fr; gap: 6px; }
  /* undo the desktop subgrid column/row pinning so the two cards stack */
  [data-demo="sea-drones"] .rpsd-cards > .rpsd-card { display: flex; flex-direction: column; grid-column: auto; grid-row: auto; }
  /* Marichka stays desktop-only (must outrank the display:flex above) */
  [data-demo="sea-drones"] .rpsd-cards > .rpsd-card:nth-child(3) { display: none; }
  [data-demo="sea-drones"] .rpsd-card { gap: 2px; padding: 5px 8px; }
  [data-demo="sea-drones"] .rpsd-sec { gap: 1px; padding-top: 2px; }
  [data-demo="sea-drones"] .rpsd { gap: 4px; }
  [data-demo="sea-drones"] .rpsd-title { font-size: 12px; }
  [data-demo="sea-drones"] .rpsd-sub { display: none; } /* redundant with the title at phone size */
  [data-demo="sea-drones"] .rpsd-chd { gap: 2px; }
  [data-demo="sea-drones"] .rpsd-name { font-size: 11px; }
  [data-demo="sea-drones"] .rpsd-maker { font-size: 7.5px; }
  [data-demo="sea-drones"] .rpsd-badges { gap: 4px; }
  [data-demo="sea-drones"] .rpsd-badge { font-size: 6.5px; padding: 1px 5px; }
  [data-demo="sea-drones"] .rpsd-kv { line-height: 1.2; }
  [data-demo="sea-drones"] .rpsd-kv .k { font-size: 7px; }
  [data-demo="sea-drones"] .rpsd-kv .v { font-size: 8px; line-height: 1.2; }
  [data-demo="sea-drones"] .rpsd-slabel { font-size: 6.5px; }
  [data-demo="sea-drones"] .rpsd-hn { font-size: 14px; }
  [data-demo="sea-drones"] .rpsd-hu { font-size: 8px; }
  [data-demo="sea-drones"] .rpsd-dmg { margin: 1px 0 0; }
  [data-demo="sea-drones"] .rpsd-dmg-n { font-size: 15px; }
  /* the note under the dots */
  .rp-mobile-note { display: block; }

  /* hero buttons: one row, equal widths (#hero scope outranks Tailwind's runtime .flex) */
  #hero .hero-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  #hero .hero-actions .btn { justify-content: center; padding-inline: 0.4rem; white-space: nowrap; }

  /* Slide 2 (mobile): show only the flagship product name, much smaller spec boxes, keep the two bottom visuals */
  [data-demo="operational-kpi"] .rp2-prod:not(.is-flagship) { display: none; }
  [data-demo="operational-kpi"] .rp2-prod-do { display: none; }
  [data-demo="operational-kpi"] .rp2-prod { padding: 4px 10px; }
  [data-demo="operational-kpi"] .rp2-specgrid { gap: 5px; }
  [data-demo="operational-kpi"] .rp2-spec-cell { padding: 4px 8px; }
  [data-demo="operational-kpi"] .rp2-spec-k { font-size: 7.5px; }
  [data-demo="operational-kpi"] .rp2-spec-v b { font-size: 11px; }
  /* drop the Operator-ratio + AI cells so the two measurable-value boxes fit the fixed slide height */
  [data-demo="operational-kpi"] .rp2-spec-cell:nth-child(5),
  [data-demo="operational-kpi"] .rp2-spec-cell:nth-child(6) { display: none; }
  /* the two measurable-value boxes share one height; drop the RQ-7 reference caption */
  [data-demo="operational-kpi"] .rp2-benefits { grid-auto-rows: 1fr; }
  [data-demo="operational-kpi"] .rp2-pic-sys { display: none; }

  /* Slide 3 (mobile): keep the upload (one deck) + a vertical 3-company comparison; hide the exec summary + wide table */
  [data-demo="deck-analysis"] .rp3-co,
  [data-demo="deck-analysis"] .rp3-exec-h,
  [data-demo="deck-analysis"] .rp3-score,
  [data-demo="deck-analysis"] .rp3-points,
  [data-demo="deck-analysis"] .rp3-flag,
  [data-demo="deck-analysis"] .rp3-comp,
  [data-demo="deck-analysis"] .rp3-done,
  [data-demo="deck-analysis"] .rp3-files .rp3-file:nth-of-type(2) { display: none; }
  [data-demo="deck-analysis"] .rp3-split { grid-template-columns: 1fr; gap: 7px; }
  [data-demo="deck-analysis"] .rp3-cmob { display: flex; gap: 6px; }
  /* the hover hint means nothing on touch; the ticker line just leaves a gap */
  [data-demo="deck-analysis"] .rp3-legend,
  [data-demo="deck-analysis"] .rp3-ticker { display: none; }
  [data-demo="deck-analysis"] .rp3-an { padding-top: 7px; }
  [data-demo="deck-analysis"] .rp3-drop { padding: 9px 11px 10px; gap: 7px; }
  [data-demo="deck-analysis"] .rp3-file { padding: 6px 9px; }
  [data-demo="deck-analysis"] .rp3-cmob-card { padding: 6px 9px; }
  [data-demo="deck-analysis"] .rp3-cmob-nm { font-size: 11px; margin-bottom: 2px; }
  [data-demo="deck-analysis"] .rp3-cmob-d { font-size: 10px; padding: 2px 0; }

  /* Slide 1 (mobile): smaller prompt + chips, and drop the Battlefield validation column */
  [data-demo="ai-search"] .rp1-search { padding: 8px 11px; gap: 8px; border-radius: 9px; }
  [data-demo="ai-search"] .rp1-search > svg { width: 13px; height: 13px; }
  [data-demo="ai-search"] .rp1-q { font-size: 10px; }
  [data-demo="ai-search"] .rp1-caret { width: 5px; height: 11px; }
  [data-demo="ai-search"] .rp1-chips { gap: 6px; min-height: 0; }
  [data-demo="ai-search"] .rp1-chip { padding: 3px 8px; font-size: 9px; gap: 4px; }
  [data-demo="ai-search"] .rp1-thead > :nth-child(4),
  [data-demo="ai-search"] .rp1-card > :nth-child(4) { display: none; }
  [data-demo="ai-search"] .rp1-thead,
  [data-demo="ai-search"] .rp1-card { grid-template-columns: minmax(0,1fr) minmax(0,1.25fr); gap: 10px; }
}
