/* ═══════════ STATIC VISIBILITY (active page content visible) ═══════════ */
.page.is-active .page-content,
.page.is-active .hero-inner {
  opacity: 1;
}

/* ═══════════ REVEAL SYSTEM (within pages) ═══════════ */
[data-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity 400ms var(--apple-ease),
    transform 400ms var(--apple-ease);
  transition-delay: var(--reveal-delay, 0ms);
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* per-element variants */
[data-reveal="heading"] {
  transform: translateY(24px);
}
[data-reveal="diagram"] {
  transform: translateY(32px);
  transition-duration: 500ms;
}
[data-reveal="tech-landscape"] {
  transform: translateY(20px);
  transition-duration: 450ms;
}
[data-reveal="paragraph"] {
  transform: translateY(16px);
  transition-duration: 300ms;
}
[data-reveal="blockquote"] {
  transform: translateY(16px);
  transition-duration: 350ms;
}
[data-reveal="table"] {
  transform: translateY(24px);
  transition-duration: 500ms;
}
[data-reveal="callout"] {
  transform: translateY(24px);
  transition-duration: 500ms;
}
[data-reveal="example"] {
  transform: translateY(24px);
  transition-duration: 500ms;
}
[data-reveal="bridge"] {
  transform: translateY(12px);
  transition-duration: 300ms;
}

/* ═══════════ PILL STAGGER ═══════════ */
@keyframes pill-in {
  from {
    opacity: 0;
    transform: translateX(-6px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}
.tl-row .pill,
.tl-row .prod-pill,
.tl-row .pp-bench {
  opacity: 0;
}
.is-visible .tl-row .pill,
.is-visible .tl-row .prod-pill,
.is-visible .tl-row .pp-bench {
  animation: pill-in 300ms var(--apple-ease) both;
  animation-delay: var(--pill-delay, 0ms);
}

/* ═══════════ BAR GROW ═══════════ */
@keyframes bar-grow {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}
.pl-bar,
.br-bar {
  transform-origin: left;
  transform: scaleX(0);
}
.is-visible .pl-bar,
.is-visible .br-bar {
  animation: bar-grow 400ms var(--apple-ease) both;
  animation-delay: var(--bar-delay, 0ms);
}

/* ═══════════ FRONTIER PULSE ═══════════ */
@keyframes frontier-pulse {
  0%, 100% { opacity: .7; }
  50% { opacity: 1; }
}
.ai-tier.tier-frontier {
  animation: frontier-pulse 2s ease-in-out infinite;
}

/* ═══════════ FRONTIER DEMO STAGGER ═══════════ */
@keyframes rc-stack-in-1 {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes rc-stack-in-2 {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: .7; transform: translateY(0); }
}
@keyframes rc-stack-in-3 {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: .4; transform: translateY(0); }
}
@keyframes rc-stack-in-4 {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: .2; transform: translateY(0); }
}
@keyframes rc-node-in {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(0); }
  50%  { opacity: 1; transform: translate(-50%, -50%) scale(1.12); }
  70%  { transform: translate(-50%, -50%) scale(0.96); }
  100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
@keyframes rc-edge-draw {
  0%   { stroke-dashoffset: var(--line-len); opacity: 0; }
  1%   { opacity: 1; }
  100% { stroke-dashoffset: 0; opacity: 1; }
}
@keyframes rc-arrow-in {
  from { opacity: 0; transform: scaleX(0); }
  to   { opacity: 1; transform: scaleX(1); }
}
@keyframes rc-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes rc-breathe {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  50%      { transform: translate(-50%, -50%) scale(1.06); }
}

/* Doc stack — back cards first, each with its own target opacity */
.rc-demo .rc-doc { opacity: 0; }
.is-visible .rc-doc:nth-child(1) { animation: rc-stack-in-1 400ms var(--apple-ease) 300ms both; }
.is-visible .rc-doc:nth-child(2) { animation: rc-stack-in-2 400ms var(--apple-ease) 200ms both; }
.is-visible .rc-doc:nth-child(3) { animation: rc-stack-in-3 400ms var(--apple-ease) 100ms both; }
.is-visible .rc-doc:nth-child(4) { animation: rc-stack-in-4 400ms var(--apple-ease) 0ms both; }

/* Graph nodes — spring entrance + ambient breathing */
.rc-demo .rc-node { opacity: 0; }
.is-visible .rc-node {
  animation:
    rc-node-in 450ms var(--apple-ease) calc(450ms + var(--ni, 0) * 40ms) both,
    rc-breathe 4s ease-in-out calc(1.5s + var(--ni, 0) * 300ms) infinite;
}

/* Graph edges — draw-on after nodes */
.rc-demo .rc-graph-svg line {
  opacity: 0;
  stroke-dasharray: var(--line-len);
  stroke-dashoffset: var(--line-len);
}
.is-visible .rc-graph-svg line {
  animation: rc-edge-draw 500ms var(--apple-ease) both;
}
.is-visible .rc-graph-svg line:nth-child(1) { animation-delay: 550ms; }
.is-visible .rc-graph-svg line:nth-child(2) { animation-delay: 590ms; }
.is-visible .rc-graph-svg line:nth-child(3) { animation-delay: 630ms; }
.is-visible .rc-graph-svg line:nth-child(4) { animation-delay: 660ms; }
.is-visible .rc-graph-svg line:nth-child(5) { animation-delay: 700ms; }
.is-visible .rc-graph-svg line:nth-child(6) { animation-delay: 740ms; }
.is-visible .rc-graph-svg line:nth-child(7) { animation-delay: 780ms; }
.is-visible .rc-graph-svg line:nth-child(8) { animation-delay: 820ms; }
.is-visible .rc-graph-svg line:nth-child(9) { animation-delay: 860ms; }

/* Arrow */
.rc-demo .rc-arrow-line { opacity: 0; transform-origin: left; }
.is-visible .rc-arrow-line {
  animation: rc-arrow-in 400ms var(--apple-ease) both;
  animation-delay: 350ms;
}
.rc-demo .rc-arrow-stat { opacity: 0; }
.is-visible .rc-arrow-stat {
  animation: rc-fade-in 300ms var(--apple-ease) both;
  animation-delay: 500ms;
}

/* ═══════════ EVIDENCE SCENARIO NARRATIVE ═══════════ */

/* Initial hidden states */
.ev-compare-label { opacity: 0; transform: translateY(6px); }
.ev-scenario-query { opacity: 0; transform: translateY(8px); }
.ev-scenario-act-label { opacity: 0; }
.ev-scenario-file { opacity: 0; transform: translateY(10px) scale(0.92); }
.ev-scenario-act--std .ev-scenario-token-row { opacity: 0; }
.ev-scenario-token-fill--std,
.ev-scenario-token-fill--rc { transform: scaleX(0); }
.ev-scenario-token-count { opacity: 0; }
.ev-scenario-token-unit { opacity: 0; }
.ev-scenario-pain { opacity: 0; }
.ev-scenario-divider { opacity: 0; }
.ev-scenario-node { opacity: 0; transform: scale(0); }
.ev-scenario-act--rc .ev-scenario-token-row { opacity: 0; }
.ev-scenario-helper { opacity: 0; }
.ev-metrics-row { opacity: 0; transform: translateY(8px); }

/* ── Act 1: THE PROBLEM (0–2.5s) ── */
@keyframes area-label-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes area-tag-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes file-cascade-in {
  from { opacity: 0; transform: translateY(10px) scale(0.92); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes token-bar-fill {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
/* Stepped fill: each file adds its share — 30K, 150K, 5K, 180K, 135K, 100K = 600K */
@keyframes token-bar-fill-std {
  0%     { transform: scaleX(0.05); }   /* 30K  → 30K cumul  */
  19.9%  { transform: scaleX(0.05); }
  20%    { transform: scaleX(0.30); }   /* +150K → 180K cumul */
  39.9%  { transform: scaleX(0.30); }
  40%    { transform: scaleX(0.308); }  /* +5K   → 185K cumul */
  59.9%  { transform: scaleX(0.308); }
  60%    { transform: scaleX(0.608); }  /* +180K → 365K cumul */
  79.9%  { transform: scaleX(0.608); }
  80%    { transform: scaleX(0.833); }  /* +135K → 500K cumul */
  99.9%  { transform: scaleX(0.833); }
  100%   { transform: scaleX(1.0); }    /* +100K → 600K cumul */
}

/* ── Act 3: THE PROOF (3.2–5.6s) ── */
@keyframes elastic-pop {
  0%   { opacity: 0; transform: scale(0); }
  40%  { opacity: 1; transform: scale(1.35); }
  60%  { transform: scale(0.9); }
  80%  { transform: scale(1.08); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes dot-glow {
  0%   { box-shadow: 0 0 0 0 rgba(88,86,214,.5); }
  50%  { box-shadow: 0 0 16px 6px rgba(88,86,214,.15); }
  100% { box-shadow: 0 0 0 0 rgba(88,86,214,0); }
}
@keyframes rc-tag-in {
  from { opacity: 0; transform: translateX(-4px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes metrics-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Trigger on .is-visible ── */

/* Act 1 — query + files + standard token bar */
.is-visible .ev-compare-label {
  animation: area-label-in 250ms var(--apple-ease) 400ms both;
}
.is-visible .ev-scenario-query {
  animation: area-label-in 300ms var(--apple-ease) 700ms both;
}
.is-visible .ev-scenario-act--std .ev-scenario-act-label {
  animation: area-tag-in 200ms var(--apple-ease) 1000ms both;
}
.is-visible .ev-scenario-file:nth-child(1) { animation: file-cascade-in 280ms var(--apple-ease) 1100ms both; }
.is-visible .ev-scenario-file:nth-child(2) { animation: file-cascade-in 280ms var(--apple-ease) 1180ms both; }
.is-visible .ev-scenario-file:nth-child(3) { animation: file-cascade-in 280ms var(--apple-ease) 1260ms both; }
.is-visible .ev-scenario-file:nth-child(4) { animation: file-cascade-in 280ms var(--apple-ease) 1340ms both; }
.is-visible .ev-scenario-file:nth-child(5) { animation: file-cascade-in 280ms var(--apple-ease) 1420ms both; }
.is-visible .ev-scenario-file:nth-child(6) { animation: file-cascade-in 280ms var(--apple-ease) 1500ms both; }
/* Token row appears with first file; bar fills in steps synced to file drops */
.is-visible .ev-scenario-act--std .ev-scenario-token-row {
  animation: area-tag-in 150ms var(--apple-ease) 1050ms both;
}
.is-visible .ev-scenario-token-fill--std {
  animation: token-bar-fill-std 400ms linear 1100ms both;
}
.is-visible .ev-scenario-act--std .ev-scenario-token-count {
  animation: area-tag-in 100ms var(--apple-ease) 1100ms both;
}
.is-visible .ev-scenario-act--std .ev-scenario-token-unit {
  animation: area-tag-in 100ms var(--apple-ease) 1100ms both;
}
.is-visible .ev-scenario-pain {
  animation: area-tag-in 250ms var(--apple-ease) 1700ms both;
}

/* Act 2 — transition: divider appears */
.is-visible .ev-scenario-divider {
  animation: area-tag-in 200ms var(--apple-ease) 2800ms both;
}

/* Act 3 — Reasoner Core proof */
.is-visible .ev-scenario-act--rc .ev-scenario-act-label {
  animation: rc-tag-in 300ms var(--apple-ease) 3200ms both;
}
.is-visible .ev-scenario-node {
  animation:
    elastic-pop 600ms ease-out 3400ms both,
    dot-glow 800ms ease-out 3400ms both;
}
.is-visible .ev-scenario-act--rc .ev-scenario-token-row {
  animation: area-tag-in 150ms var(--apple-ease) 3650ms both;
}
.is-visible .ev-scenario-token-fill--rc {
  animation: token-bar-fill 400ms var(--apple-ease) 3700ms both;
}
.is-visible .ev-scenario-act--rc .ev-scenario-token-count {
  animation: area-tag-in 250ms var(--apple-ease) 3800ms both;
}
.is-visible .ev-scenario-act--rc .ev-scenario-token-unit {
  animation: area-tag-in 250ms var(--apple-ease) 3800ms both;
}
.is-visible .ev-scenario-helper {
  animation: area-tag-in 300ms var(--apple-ease) 4100ms both;
}
.is-visible .ev-metrics-row {
  animation: metrics-in 400ms var(--apple-ease) 4600ms both;
}

/* ═══════════ EVIDENCE DOT FILL ═══════════ */
@keyframes dot-fill {
  from { opacity: 0; transform: scale(0.5); }
  to   { opacity: 1; transform: scale(1); }
}
.is-visible .ev-dot {
  animation: dot-fill 200ms var(--apple-ease) both;
  animation-delay: var(--dot-delay, 0ms);
}

/* ═══════════ SCROLL HINT BOB ═══════════ */
@keyframes scroll-hint-bob {
  0%, 100% {
    transform: translateX(-50%) scale(1) translateY(0);
  }
  50% {
    transform: translateX(-50%) scale(1) translateY(5px);
  }
}
.scroll-hint.is-visible {
  animation: scroll-hint-bob 2s var(--apple-ease) infinite;
}

/* ═══════════ VIEW TRANSITION RULES ═══════════ */

/* Level heading morph */
::view-transition-group(level-heading) {
  animation-duration: 400ms;
  animation-timing-function: var(--apple-ease);
}

/* Constraint Window plan bar — the dramatic slide */
::view-transition-group(cw-plan-bar) {
  animation-duration: 600ms;
  animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* Verdict row morph (fail → pass) */
::view-transition-group(cw-verdict) {
  animation-duration: 500ms;
  animation-timing-function: var(--apple-ease);
}

/* Default root crossfade — sequential to avoid ghosting */
::view-transition-group(root) {
  animation-duration: 300ms;
  animation-timing-function: var(--apple-ease);
}

/* Old page fades out quickly */
::view-transition-old(root) {
  animation-duration: 120ms;
  animation-timing-function: ease-out;
}

/* New page fades in after old is mostly gone */
::view-transition-new(root) {
  animation-delay: 80ms;
  animation-duration: 220ms;
  animation-timing-function: ease-in;
}

/* ═══════════ FALLBACK CROSSFADE (browsers without View Transitions) ═══════════ */
@keyframes fallback-fade-out {
  from { opacity: 1; }
  to { opacity: 0; }
}
@keyframes fallback-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.fallback-fade-out {
  animation: fallback-fade-out 250ms var(--apple-ease) forwards;
}
.fallback-fade-in {
  animation: fallback-fade-in 300ms var(--apple-ease) forwards;
}

/* ═══════════ CASE STUDY: MindSim ═══════════ */

/* ── New keyframes ── */
@keyframes cs-cell-fill {
  0%   { opacity: 0; transform: scale(0.5); }
  40%  { opacity: 1; transform: scale(1.15); }
  60%  { transform: scale(0.95); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes cs-cell-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(88,86,214,.6); }
  50%  { box-shadow: 0 0 8px 3px rgba(88,86,214,.2); }
  100% { box-shadow: 0 0 0 0 rgba(88,86,214,0); }
}
@keyframes cs-arrow-draw {
  from { opacity: 0; transform: scaleX(0); }
  to   { opacity: 1; transform: scaleX(1); }
}
@keyframes cs-infinity-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Cycling frame: 5 frames over 30s → 6s each = 20% per frame
   Lateral flow: slides in from left, holds, flows right toward arrow (data integration feel) */
@keyframes cs-loop-cycle {
  0%   { opacity: 0; transform: translateX(-18px) scale(0.93); }
  3%   { opacity: 1; transform: translateX(0) scale(1); }
  14%  { opacity: 1; transform: translateX(0) scale(1); }
  19%  { opacity: 0; transform: translateX(14px) scale(0.93); }
  20%  { opacity: 0; transform: translateX(-18px) scale(0.93); }
  100% { opacity: 0; transform: translateX(-18px) scale(0.93); }
}

/* Delta pop: appears ~1.5s after transcript arrives (8% of 30s = 2.4s vs frame at 0.9s),
   fades before transcript exits. Flows left→right. */
@keyframes cs-loop-delta-pop {
  0%   { opacity: 0; transform: translate(calc(-50% - 8px), 0); }
  6%   { opacity: 0; transform: translate(calc(-50% - 8px), 0); }
  8%   { opacity: 1; transform: translate(-50%, 0); }
  14%  { opacity: 1; transform: translate(-50%, 0); }
  17%  { opacity: 0; transform: translate(calc(-50% + 8px), 0); }
  20%  { opacity: 0; transform: translate(calc(-50% - 8px), 0); }
  100% { opacity: 0; transform: translate(calc(-50% - 8px), 0); }
}


/* Cell cycling glow: lights up during its frame slot (20% of 30s = 6s), same fill+pulse feel as Act 2 */
@keyframes cs-cell-cycle-glow {
  0%   { background: rgba(88,86,214,.12); box-shadow: none; }
  3%   { background: var(--purple); box-shadow: 0 0 6px 2px rgba(88,86,214,.3); }
  14%  { background: var(--purple); box-shadow: 0 0 4px 1px rgba(88,86,214,.15); }
  19%  { background: rgba(88,86,214,.12); box-shadow: none; }
  100% { background: rgba(88,86,214,.12); box-shadow: none; }
}

/* Arrow breathe: subtle opacity pulse every 6s */
@keyframes cs-arrow-breathe {
  0%, 100% { opacity: 0.5; }
  10%      { opacity: 1; }
  20%      { opacity: 0.5; }
}

/* ── Initial hidden states ── */
.cs-act-header,
.cs-act-stat {
  opacity: 0;
  transform: translateY(6px);
}
.cs-input,
.cs-output,
.cs-core-label {
  opacity: 0;
}
.cs-timeline .cs-arrow-line {
  opacity: 0;
  transform-origin: left;
}
.cs-process-label {
  opacity: 0;
}
.cs-cell--new,
.cs-cell--changed {
  opacity: 0;
}
.cs-cell--stable {
  opacity: 0;
}
.cs-doc-tokens,
.cs-core-tokens {
  opacity: 0;
}
/* Cycling elements — hidden until Act 3 reveals */
.cs-loop-frame {
  opacity: 0;
  transform: translateX(-18px) scale(0.93);
}
.cs-loop-delta {
  opacity: 0;
}
.cs-loop-deltas {
  opacity: 0;
}
.cs-loop-tally {
  opacity: 0;
}
.cs-infinity-icon,
.cs-infinity-text {
  opacity: 0;
  transform: translateY(8px);
}

/* ── ACT 1: GENESIS (200ms → countup 2500ms → done ~3700ms) ── */
.is-visible .cs-act--genesis .cs-act-header {
  animation: area-label-in 300ms var(--apple-ease) 200ms both;
}
.is-visible .cs-act--genesis .cs-input {
  animation: file-cascade-in 350ms var(--apple-ease) 600ms both;
}
.is-visible .cs-act--genesis .cs-arrow-line {
  animation: cs-arrow-draw 400ms var(--apple-ease) 1000ms both;
}
.is-visible .cs-act--genesis .cs-process-label {
  animation: area-tag-in 250ms var(--apple-ease) 1200ms both;
}
.is-visible .cs-act--genesis .cs-output {
  animation: area-tag-in 250ms var(--apple-ease) 1200ms both;
}
/* 16 cells fill with 60ms stagger starting at 1300ms */
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(1)  { animation: cs-cell-fill 300ms var(--apple-ease) 1300ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(2)  { animation: cs-cell-fill 300ms var(--apple-ease) 1360ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(3)  { animation: cs-cell-fill 300ms var(--apple-ease) 1420ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(4)  { animation: cs-cell-fill 300ms var(--apple-ease) 1480ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(5)  { animation: cs-cell-fill 300ms var(--apple-ease) 1540ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(6)  { animation: cs-cell-fill 300ms var(--apple-ease) 1600ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(7)  { animation: cs-cell-fill 300ms var(--apple-ease) 1660ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(8)  { animation: cs-cell-fill 300ms var(--apple-ease) 1720ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(9)  { animation: cs-cell-fill 300ms var(--apple-ease) 1780ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(10) { animation: cs-cell-fill 300ms var(--apple-ease) 1840ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(11) { animation: cs-cell-fill 300ms var(--apple-ease) 1900ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(12) { animation: cs-cell-fill 300ms var(--apple-ease) 1960ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(13) { animation: cs-cell-fill 300ms var(--apple-ease) 2020ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(14) { animation: cs-cell-fill 300ms var(--apple-ease) 2080ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(15) { animation: cs-cell-fill 300ms var(--apple-ease) 2140ms both; }
.is-visible .cs-core-grid--full .cs-cell--new:nth-child(16) { animation: cs-cell-fill 300ms var(--apple-ease) 2200ms both; }
.is-visible .cs-act--genesis .cs-core-label {
  animation: area-tag-in 250ms var(--apple-ease) 2400ms both;
}
.is-visible .cs-act--genesis .cs-doc-tokens {
  animation: area-tag-in 250ms var(--apple-ease) 800ms both;
}
.is-visible .cs-act--genesis .cs-core-tokens {
  animation: area-tag-in 250ms var(--apple-ease) 2400ms both;
}
.is-visible .cs-act--genesis .cs-act-stat {
  animation: area-label-in 300ms var(--apple-ease) 2500ms both;
}

/* ── ACT 2: EVOLUTION (4000ms → countup 5800ms → done ~7000ms) ── */
/* Waits for Act 1 countup (2500ms + 1200ms = 3700ms) + 300ms breathing room */
.is-visible .cs-act--evolution .cs-act-header {
  animation: area-label-in 300ms var(--apple-ease) 4000ms both;
}
.is-visible .cs-act--evolution .cs-input {
  animation: file-cascade-in 350ms var(--apple-ease) 4400ms both;
}
.is-visible .cs-act--evolution .cs-arrow-line {
  animation: cs-arrow-draw 400ms var(--apple-ease) 4800ms both;
}
.is-visible .cs-act--evolution .cs-process-label {
  animation: area-tag-in 250ms var(--apple-ease) 5000ms both;
}
.is-visible .cs-act--evolution .cs-output {
  animation: area-tag-in 250ms var(--apple-ease) 5000ms both;
}
/* Stable cells fade in together */
.is-visible .cs-core-grid--delta .cs-cell--stable {
  animation: area-tag-in 250ms var(--apple-ease) 5100ms both;
}
/* 3 changed cells with 100ms stagger + pulse */
.is-visible .cs-core-grid--delta .cs-cell--changed:nth-child(2) {
  animation: cs-cell-fill 350ms var(--apple-ease) 5300ms both,
             cs-cell-pulse 800ms ease-out 5650ms both;
}
.is-visible .cs-core-grid--delta .cs-cell--changed:nth-child(8) {
  animation: cs-cell-fill 350ms var(--apple-ease) 5400ms both,
             cs-cell-pulse 800ms ease-out 5750ms both;
}
.is-visible .cs-core-grid--delta .cs-cell--changed:nth-child(11) {
  animation: cs-cell-fill 350ms var(--apple-ease) 5500ms both,
             cs-cell-pulse 800ms ease-out 5850ms both;
}
.is-visible .cs-act--evolution .cs-core-label {
  animation: area-tag-in 250ms var(--apple-ease) 5700ms both;
}
.is-visible .cs-act--evolution .cs-doc-tokens {
  animation: area-tag-in 250ms var(--apple-ease) 4600ms both;
}
.is-visible .cs-act--evolution .cs-core-tokens {
  animation: area-tag-in 250ms var(--apple-ease) 5700ms both;
}
.is-visible .cs-act--evolution .cs-act-stat {
  animation: area-label-in 300ms var(--apple-ease) 5800ms both;
}

/* ── ACT 3: INFINITE LOOP (7300ms → reveal structure → cycling begins 8400ms) ── */
/* Waits for Act 2 countup (5800ms + 1200ms = 7000ms) + 300ms breathing room */
.is-visible .cs-act--loop .cs-act-header {
  animation: area-label-in 300ms var(--apple-ease) 7300ms both;
}
.is-visible .cs-act--loop .cs-input {
  animation: area-tag-in 1ms var(--apple-ease) 7600ms both;
}
/* Arrow reveals once, then breathes */
.is-visible .cs-act--loop .cs-arrow-line--breathing {
  animation: cs-arrow-draw 400ms var(--apple-ease) 7700ms both,
             cs-arrow-breathe 30s ease-in-out 8.4s infinite;
}
.is-visible .cs-act--loop .cs-process-label {
  animation: area-tag-in 250ms var(--apple-ease) 7900ms both;
}
.is-visible .cs-act--loop .cs-loop-deltas {
  animation: area-tag-in 1ms var(--apple-ease) 8200ms both;
}
/* Output side reveals once */
.is-visible .cs-act--loop .cs-output {
  animation: area-tag-in 250ms var(--apple-ease) 7900ms both;
}
.is-visible .cs-act--loop .cs-core-label {
  animation: area-tag-in 250ms var(--apple-ease) 8100ms both;
}
.is-visible .cs-act--loop .cs-core-tokens {
  animation: area-tag-in 250ms var(--apple-ease) 8100ms both;
}
.is-visible .cs-act--loop .cs-loop-tally {
  animation: area-tag-in 250ms var(--apple-ease) 8200ms both;
}
/* ── ACT 4: TRANSFER (9400ms → after infinity reveals at 9200ms) ── */
.is-visible .cs-act--transfer .cs-act-header {
  animation: area-label-in 300ms var(--apple-ease) 9400ms both;
}
.is-visible .cs-act--transfer .cs-output {
  animation: area-tag-in 250ms var(--apple-ease) 9400ms both;
}
#case-study-mindsim .is-visible .cs-act--transfer .cs-core-grid--full .cs-cell--new {
  animation: cs-cell-fill 250ms var(--apple-ease) 9500ms both;
}
#case-study-mindsim .is-visible .cs-act--transfer .cs-core-label {
  animation: area-tag-in 250ms var(--apple-ease) 9700ms both;
}
#case-study-mindsim .is-visible .cs-act--transfer .cs-core-sublabel {
  animation: area-tag-in 250ms var(--apple-ease) 9700ms both;
}
.is-visible .cs-act--transfer .cs-act-desc {
  animation: area-tag-in 300ms var(--apple-ease) 9900ms both;
}
/* Grid — all cells fade in together, frame cells additionally cycle glow */
.is-visible .cs-core-grid--loop .cs-cell--stable {
  animation: area-tag-in 250ms var(--apple-ease) 8000ms both;
}
/* Frame cells: fade in first, then cycle glow synced to transcript frames */
.is-visible .cs-core-grid--loop .cs-cell--f0 {
  animation: area-tag-in 250ms var(--apple-ease) 8000ms both,
             cs-cell-cycle-glow 30s ease-out calc(8.4s + 0s) infinite;
}
.is-visible .cs-core-grid--loop .cs-cell--f1 {
  animation: area-tag-in 250ms var(--apple-ease) 8000ms both,
             cs-cell-cycle-glow 30s ease-out calc(8.4s + 6s) infinite;
}
.is-visible .cs-core-grid--loop .cs-cell--f2 {
  animation: area-tag-in 250ms var(--apple-ease) 8000ms both,
             cs-cell-cycle-glow 30s ease-out calc(8.4s + 12s) infinite;
}
.is-visible .cs-core-grid--loop .cs-cell--f3 {
  animation: area-tag-in 250ms var(--apple-ease) 8000ms both,
             cs-cell-cycle-glow 30s ease-out calc(8.4s + 18s) infinite;
}
.is-visible .cs-core-grid--loop .cs-cell--f4 {
  animation: area-tag-in 250ms var(--apple-ease) 8000ms both,
             cs-cell-cycle-glow 30s ease-out calc(8.4s + 24s) infinite;
}

/* ── CYCLING ANIMATIONS (infinite, starts after 8400ms reveal) ── */
/* Transcript frames + delta badges cycle: 30s loop (5 frames × 6s each)
   animation-play-state paused → running on .is-visible */

/* Transcript frames — each occupies 20% of 30s cycle (6s) */
.cs-loop-frame {
  animation: cs-loop-cycle 30s var(--apple-ease) infinite;
  animation-delay: calc(8.4s + var(--ti) * 6s);
  animation-play-state: paused;
}

/* Delta badges — synced to frame timing */
.cs-loop-delta {
  animation: cs-loop-delta-pop 30s var(--apple-ease) infinite;
  animation-delay: calc(8.4s + var(--ti) * 6s);
  animation-play-state: paused;
}

/* Play-state activation — MUST come AFTER base animation declarations to override */
.is-visible .cs-loop-frame,
.is-visible .cs-loop-delta {
  animation-play-state: running;
}

/* ── FINALE (8800ms+) ── */
/* Appears after Act 3 structure reveals (8400ms) + brief pause */
.is-visible .cs-infinity-icon {
  animation: cs-infinity-in 500ms var(--apple-ease) 8800ms both;
}
.is-visible .cs-infinity-text {
  animation: cs-infinity-in 400ms var(--apple-ease) 9200ms both;
}

/* ═══════════ PORTABILITY: Hub-and-Spoke Animations ═══════════ */

/* ── New keyframes ── */
@keyframes cs-port-line-draw {
  from { stroke-dashoffset: var(--line-length); }
  to   { stroke-dashoffset: 0; }
}
@keyframes cs-port-spoke-in {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes cs-port-sync-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(88,86,214,.4); }
  30%  { box-shadow: 0 0 12px 4px rgba(88,86,214,.15); }
  100% { box-shadow: 0 0 0 0 rgba(88,86,214,0); }
}
@keyframes cs-port-line-pulse {
  0%   { stroke: rgba(88,86,214,.2); }
  25%  { stroke: rgba(88,86,214,.5); }
  100% { stroke: rgba(88,86,214,.2); }
}

/* ── Initial hidden states ── */
.cs-port-center {
  opacity: 0;
}
.cs-port-spoke {
  opacity: 0;
  transform: translateY(16px);
}
.cs-port-line {
  stroke-dashoffset: var(--line-length);
  stroke-dasharray: var(--line-length);
}
.cs-port-update {
  opacity: 0;
}
.cs-port-tagline {
  opacity: 0;
  transform: translateY(8px);
}

/* ── Entrance sequence on .is-visible ── */

/* Hub container fades in (200ms) */
.is-visible .cs-port-center {
  animation: area-tag-in 400ms var(--apple-ease) 200ms both;
}

/* Hub grid cells fill (300–900ms, 40ms stagger) */
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(1)  { animation: cs-cell-fill 300ms var(--apple-ease) 300ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(2)  { animation: cs-cell-fill 300ms var(--apple-ease) 340ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(3)  { animation: cs-cell-fill 300ms var(--apple-ease) 380ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(4)  { animation: cs-cell-fill 300ms var(--apple-ease) 420ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(5)  { animation: cs-cell-fill 300ms var(--apple-ease) 460ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(6)  { animation: cs-cell-fill 300ms var(--apple-ease) 500ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(7)  { animation: cs-cell-fill 300ms var(--apple-ease) 540ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(8)  { animation: cs-cell-fill 300ms var(--apple-ease) 580ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(9)  { animation: cs-cell-fill 300ms var(--apple-ease) 620ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(10) { animation: cs-cell-fill 300ms var(--apple-ease) 660ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(11) { animation: cs-cell-fill 300ms var(--apple-ease) 700ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(12) { animation: cs-cell-fill 300ms var(--apple-ease) 740ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(13) { animation: cs-cell-fill 300ms var(--apple-ease) 780ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(14) { animation: cs-cell-fill 300ms var(--apple-ease) 820ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(15) { animation: cs-cell-fill 300ms var(--apple-ease) 860ms both; }
.is-visible .cs-port-grid--hub .cs-cell--new:nth-child(16) { animation: cs-cell-fill 300ms var(--apple-ease) 900ms both; }

/* SVG lines draw on (1200–1500ms, 150ms stagger) — combined with infinite pulse */
.is-visible .cs-port-line--1 {
  animation: cs-port-line-draw 500ms var(--apple-ease) 1200ms both,
             cs-port-line-pulse 4s ease-in-out 2400ms infinite;
}
.is-visible .cs-port-line--2 {
  animation: cs-port-line-draw 500ms var(--apple-ease) 1350ms both,
             cs-port-line-pulse 4s ease-in-out 2400ms infinite;
}
.is-visible .cs-port-line--3 {
  animation: cs-port-line-draw 500ms var(--apple-ease) 1500ms both,
             cs-port-line-pulse 4s ease-in-out 2400ms infinite;
}

/* Spoke cards rise in (1500–1800ms, 150ms stagger) */
.is-visible .cs-port-spoke:nth-child(1) {
  animation: cs-port-spoke-in 400ms var(--apple-ease) 1500ms both;
}
.is-visible .cs-port-spoke:nth-child(2) {
  animation: cs-port-spoke-in 400ms var(--apple-ease) 1650ms both;
}
.is-visible .cs-port-spoke:nth-child(3) {
  animation: cs-port-spoke-in 400ms var(--apple-ease) 1800ms both;
}

/* Spoke mini-cells fill (1800–2100ms, per spoke batch simultaneously) */
.is-visible .cs-port-spoke:nth-child(1) .cs-port-grid--mini .cs-cell--new { animation: cs-cell-fill 250ms var(--apple-ease) 1800ms both; }
.is-visible .cs-port-spoke:nth-child(2) .cs-port-grid--mini .cs-cell--new { animation: cs-cell-fill 250ms var(--apple-ease) 1900ms both; }
.is-visible .cs-port-spoke:nth-child(3) .cs-port-grid--mini .cs-cell--new { animation: cs-cell-fill 250ms var(--apple-ease) 2000ms both; }

/* Standalone mini grids (evidence cards, badge flows, etc.) */
.ev-prod-card .cs-output,
.ev-prod-card .cs-core-label,
.ev-prod-card .cs-cell--new { opacity: 1; }

/* Compression bar fills */
.is-visible .cmp-bar-fill {
  animation: bar-grow 600ms var(--apple-ease) both;
}
.is-visible .cmp-bar-fill--source { animation-delay: 200ms; }
.is-visible .cmp-bar-fill--output { animation-delay: 700ms; }

/* Compression screen: sequential animation
   Phase 1 — SOURCE (0-700ms): doc stack cascades, labels visible
   Phase 2 — ARROW (900-1300ms): line draws, "3,278x smaller" fades in
   Phase 3 — OUTPUT (1200-2700ms): labels fade, cells fill, "Digital Twin" last
*/

/* Closing page: force visibility (no animation needed) */
#closing .cs-core-label,
#closing .cs-cell--new { opacity: 1; }

/* Hide output elements until Phase 3 */
#compression .cmp-right-grid .rc-panel-label,
#compression .cmp-output-meta { opacity: 0; }

/* Phase 2: Arrow draws after source docs finish */
#compression .is-visible .rc-arrow-line { animation-delay: 900ms; }
#compression .is-visible .rc-arrow-stat { animation-delay: 1000ms; }

/* Phase 3: Output labels fade in */
#compression .is-visible .cmp-right-grid .rc-panel-label {
  animation: rc-fade-in 300ms var(--apple-ease) 1200ms both;
}
#compression .is-visible .cmp-output-meta {
  animation: rc-fade-in 300ms var(--apple-ease) 1200ms both;
}

/* Phase 3: Grid cells fill (1200ms start, 60ms stagger) */
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(1)  { animation: cs-cell-fill 300ms var(--apple-ease) 1200ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(2)  { animation: cs-cell-fill 300ms var(--apple-ease) 1260ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(3)  { animation: cs-cell-fill 300ms var(--apple-ease) 1320ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(4)  { animation: cs-cell-fill 300ms var(--apple-ease) 1380ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(5)  { animation: cs-cell-fill 300ms var(--apple-ease) 1440ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(6)  { animation: cs-cell-fill 300ms var(--apple-ease) 1500ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(7)  { animation: cs-cell-fill 300ms var(--apple-ease) 1560ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(8)  { animation: cs-cell-fill 300ms var(--apple-ease) 1620ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(9)  { animation: cs-cell-fill 300ms var(--apple-ease) 1680ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(10) { animation: cs-cell-fill 300ms var(--apple-ease) 1740ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(11) { animation: cs-cell-fill 300ms var(--apple-ease) 1800ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(12) { animation: cs-cell-fill 300ms var(--apple-ease) 1860ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(13) { animation: cs-cell-fill 300ms var(--apple-ease) 1920ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(14) { animation: cs-cell-fill 300ms var(--apple-ease) 1980ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(15) { animation: cs-cell-fill 300ms var(--apple-ease) 2040ms both; }
#compression .is-visible .cs-core-grid--full .cs-cell--new:nth-child(16) { animation: cs-cell-fill 300ms var(--apple-ease) 2100ms both; }

/* Phase 3: "Digital Twin" fades in after all cells finish */
#compression .is-visible .cs-core-label {
  animation: rc-fade-in 300ms var(--apple-ease) 2400ms both;
}

/* Self-update bar (2300ms) */
.is-visible .cs-port-update {
  animation: cs-infinity-in 400ms var(--apple-ease) 2300ms both;
}

/* Tagline (2600ms) */
.is-visible .cs-port-tagline {
  animation: cs-infinity-in 400ms var(--apple-ease) 2600ms both;
}

/* ── Infinite sync pulse (starts at 2400ms, 4s cycle) ── */
.is-visible .cs-port-grid--hub {
  animation: cs-port-sync-pulse 4s ease-in-out 2400ms infinite;
}
.is-visible .cs-port-grid--spoke {
  animation: cs-port-sync-pulse 4s ease-in-out 2800ms infinite;
}

/* ═══════════ RUNS ANYWHERE: Entrance Animations ═══════════ */

/* ── New keyframes ── */
@keyframes ra-card-in {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes ra-env-in {
  from { opacity: 0; transform: translateX(-4px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes ra-check-draw {
  from { stroke-dashoffset: 12; }
  to   { stroke-dashoffset: 0; }
}

/* ── Initial hidden states ── */
.ra-card { opacity: 0; transform: translateY(16px); }
.ra-card-env { opacity: 0; }
.ra-card-env .ra-check {
  stroke-dasharray: 12;
  stroke-dashoffset: 12;
}

/* ── Entrance sequence on .is-visible ── */
.is-visible .ra-card:nth-child(1) { animation: ra-card-in 400ms var(--apple-ease) 300ms both; }
.is-visible .ra-card:nth-child(2) { animation: ra-card-in 400ms var(--apple-ease) 450ms both; }
.is-visible .ra-card:nth-child(3) { animation: ra-card-in 400ms var(--apple-ease) 600ms both; }
.is-visible .ra-card:nth-child(4) { animation: ra-card-in 400ms var(--apple-ease) 750ms both; }

/* Env items: stagger within each card (--ei = env index within card) */
/* Card 1 base: 600ms */
.is-visible .ra-card:nth-child(1) .ra-card-env { animation: ra-env-in 250ms var(--apple-ease) both; animation-delay: calc(600ms + var(--ei, 0) * 100ms); }
.is-visible .ra-card:nth-child(1) .ra-card-env .ra-check { animation: ra-check-draw 300ms var(--apple-ease) both; animation-delay: calc(750ms + var(--ei, 0) * 100ms); }
/* Card 2 base: 750ms */
.is-visible .ra-card:nth-child(2) .ra-card-env { animation: ra-env-in 250ms var(--apple-ease) both; animation-delay: calc(750ms + var(--ei, 0) * 100ms); }
.is-visible .ra-card:nth-child(2) .ra-card-env .ra-check { animation: ra-check-draw 300ms var(--apple-ease) both; animation-delay: calc(900ms + var(--ei, 0) * 100ms); }
/* Card 3 base: 900ms */
.is-visible .ra-card:nth-child(3) .ra-card-env { animation: ra-env-in 250ms var(--apple-ease) both; animation-delay: calc(900ms + var(--ei, 0) * 100ms); }
.is-visible .ra-card:nth-child(3) .ra-card-env .ra-check { animation: ra-check-draw 300ms var(--apple-ease) both; animation-delay: calc(1050ms + var(--ei, 0) * 100ms); }
/* Card 4 base: 1050ms */
.is-visible .ra-card:nth-child(4) .ra-card-env { animation: ra-env-in 250ms var(--apple-ease) both; animation-delay: calc(1050ms + var(--ei, 0) * 100ms); }
.is-visible .ra-card:nth-child(4) .ra-card-env .ra-check { animation: ra-check-draw 300ms var(--apple-ease) both; animation-delay: calc(1200ms + var(--ei, 0) * 100ms); }

/* ═══════════ EVIDENCE COST GRAPH: Draw-on Animations ═══════════ */

/* ── New keyframes ── */
@keyframes ev-graph-line-draw {
  from { stroke-dashoffset: 600; }
  to   { stroke-dashoffset: 0; }
}
@keyframes ev-graph-area-fill {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── Initial hidden states ── */
.ev-graph { opacity: 0; transform: translateY(12px); }
.ev-graph-line-std,
.ev-graph-line-rc {
  stroke-dasharray: 600;
  stroke-dashoffset: 600;
}
.ev-graph-area-std,
.ev-graph-area-rc { opacity: 0; }
.ev-graph-savings { opacity: 0; transform: translateY(6px); }

/* ── Entrance sequence (continues from Act 3 metrics at ~5s) ── */
.is-visible .ev-graph {
  animation: metrics-in 400ms var(--apple-ease) 5500ms both;
}
.is-visible .ev-graph-line-std {
  animation: ev-graph-line-draw 1200ms var(--apple-ease) 5800ms both;
}
.is-visible .ev-graph-area-std {
  animation: ev-graph-area-fill 800ms var(--apple-ease) 6200ms both;
}
.is-visible .ev-graph-line-rc {
  animation: ev-graph-line-draw 1200ms var(--apple-ease) 6400ms both;
}
.is-visible .ev-graph-area-rc {
  animation: ev-graph-area-fill 800ms var(--apple-ease) 6800ms both;
}
.is-visible .ev-graph-savings {
  animation: metrics-in 400ms var(--apple-ease) 7400ms both;
}

/* ═══════════ NARRATIVE ARC TAG ═══════════ */
.arc-tag { opacity: 0; transform: translateY(6px); }
.arc-tag.is-visible {
  animation: metrics-in 400ms var(--apple-ease) forwards;
  animation-delay: 100ms;
}

/* ═══════════ REDUCED MOTION ═══════════ */
@media (prefers-reduced-motion: reduce) {
  /* Page visibility */
  .page.is-active .page-content,
  .page.is-active .hero-inner {
    opacity: 1 !important;
  }
  /* Reveals */
  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  /* Pills */
  .tl-row .pill,
  .tl-row .prod-pill,
  .tl-row .pp-bench {
    opacity: 1 !important;
    animation: none !important;
  }
  /* Bars */
  .pl-bar,
  .br-bar {
    transform: scaleX(1) !important;
    animation: none !important;
    transition: none !important;
  }
  /* Frontier pulse */
  .ai-tier.tier-frontier {
    animation: none !important;
    opacity: 1 !important;
  }
  /* View Transitions */
  ::view-transition-group(*),
  ::view-transition-old(*),
  ::view-transition-new(*) {
    animation-duration: 0.001ms !important;
  }
  /* Fallback */
  .fallback-fade-out,
  .fallback-fade-in {
    animation: none !important;
    opacity: 1 !important;
  }
  /* Page nav */
  .page-nav {
    transition: none !important;
  }
  .page-nav-label {
    transition: none !important;
  }
  /* Scroll hint */
  .scroll-hint.is-visible {
    animation: none !important;
  }
  /* Frontier demo */
  .rc-demo .rc-doc,
  .rc-demo .rc-node,
  .rc-demo .rc-arrow-line,
  .rc-demo .rc-arrow-stat {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
  .rc-demo .rc-graph-svg line {
    opacity: 1 !important;
    animation: none !important;
    stroke-dashoffset: 0 !important;
  }
  /* Evidence scenario */
  .ev-compare-label { opacity: 1 !important; transform: none !important; animation: none !important; }
  .ev-scenario-query,
  .ev-scenario-act-label,
  .ev-scenario-file,
  .ev-scenario-pain,
  .ev-scenario-divider,
  .ev-scenario-node,
  .ev-scenario-act--std .ev-scenario-token-row,
  .ev-scenario-act--rc .ev-scenario-token-row,
  .ev-scenario-helper,
  .ev-scenario-token-count,
  .ev-scenario-token-unit {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
  .ev-scenario-token-fill--std,
  .ev-scenario-token-fill--rc {
    transform: scaleX(1) !important;
    animation: none !important;
  }
  .ev-metrics-row { opacity: 1 !important; transform: none !important; animation: none !important; }
  .ev-dot { opacity: 1 !important; animation: none !important; }
  /* Case study */
  .cs-act-header, .cs-act-row, .cs-act-stat, .cs-act-desc,
  .cs-arrow-line, .cs-process-label,
  .cs-input, .cs-output, .cs-core-label,
  .cs-cell--new, .cs-cell--changed, .cs-cell--stable,
  .cs-infinity-icon, .cs-infinity-text {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
  .cs-cell--changed { box-shadow: none !important; }
  .cs-doc-tokens,
  .cs-core-tokens {
    opacity: 1 !important;
    animation: none !important;
  }
  .cs-loop-frame,
  .cs-loop-delta,
  .cs-loop-deltas {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
  .cs-loop-frame:not(:first-child),
  .cs-loop-delta:not(:first-child) {
    display: none !important;
  }
  .cs-loop-tally {
    opacity: 1 !important;
    animation: none !important;
  }
  .cs-cell--f0, .cs-cell--f1, .cs-cell--f2,
  .cs-cell--f3, .cs-cell--f4 {
    animation: none !important;
    background: rgba(88,86,214,.12) !important;
    box-shadow: none !important;
    opacity: 1 !important;
  }
  /* Portability */
  .cs-port-center, .cs-port-spoke, .cs-port-tagline, .cs-port-update {
    opacity: 1 !important; transform: none !important; animation: none !important;
  }
  .cs-port-line {
    stroke-dashoffset: 0 !important; animation: none !important;
  }
  .cs-port-grid--hub, .cs-port-grid--spoke {
    animation: none !important; box-shadow: none !important;
  }
  /* Runs Anywhere */
  .ra-card, .ra-card-env {
    opacity: 1 !important; transform: none !important; animation: none !important;
  }
  .ra-card-env .ra-check {
    stroke-dashoffset: 0 !important; animation: none !important;
  }
  /* Evidence cost graph */
  .ev-graph, .ev-graph-savings {
    opacity: 1 !important; transform: none !important; animation: none !important;
  }
  .ev-graph-line-std, .ev-graph-line-rc {
    stroke-dashoffset: 0 !important; animation: none !important;
  }
  .ev-graph-area-std, .ev-graph-area-rc {
    opacity: 1 !important; animation: none !important;
  }
  /* Narrative arc tag */
  .arc-tag { opacity: 1 !important; transform: none !important; animation: none !important; }
}
