/**
 * Persona Quest - Modular CSS Architecture
 * Strictly following R-Series UI/UX Standards
 */

/* 1. Core Layer: Variables, Resets, Typography */
:root {
  /* Colors - Base */
  --bg-dark: #020617;
  --bg-dark-rgb: 2, 6, 23;
  --bg-slate: #0f172a;
  --bg-slate-rgb: 15, 23, 42;
  --bg-deep: #05050a;

  /* Text Colors - Semantic Scale */
  --text-primary: #ffffff;
  --text-primary-rgb: 255, 255, 255;
  --text-secondary: rgba(255, 255, 255, 0.85);
  --text-main: #ffffff;
  --text-muted: #94a3b8; /* slate-400 */
  --text-faint: rgba(255, 255, 255, 0.45);
  --text-contrast-shadow: 0 2px 10px rgba(0, 0, 0, 0.9), 0 0 20px rgba(0,0,0,0.5);
  --text-glow-soft: 0 0 10px rgba(255, 255, 255, 0.3);

  /* Slate Palette - constellation design system */
  --slate-50: #f8fafc;
  --slate-100: #f1f5f9;
  --slate-200: #e2e8f0;
  --slate-300: #cbd5e1;
  --slate-400: #94a3b8;
  --slate-500: #64748b;
  --slate-600: #475569;
  --slate-700: #334155;
  --slate-800: #1e293b;
  --slate-900: #0f172a;
  --slate-950: #020617;

  /* Typography Tokens */
  --font-heading: 'Syne', sans-serif;
  --font-serif: 'Instrument Serif', serif;
  /* Zwei-Serifen-System (bewusst): --font-serif (Instrument Serif) ist die
     fließende, editoriale „Stimme" (Landing-Hero, Hub-H1). --font-display-serif
     (Cinzel) ist die inschriftliche „Titel/Monument"-Serife (Report-
     Sektionstitel). Beide klassisch, mit gemeinsamen Nebenrollen (Mono-Caps-
     Eyebrows, Body, Farbe, Gravur). Ref: Unified Visual Language §Typografie. */
  --font-display-serif: 'Cinzel', serif;
  --font-body: 'Outfit', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
  --letter-spacing-radical: -0.02em;
  --letter-spacing-interface: 0.01em;
  --letter-spacing-story: 0.05em;

  /* Text Size Scale */
  --text-xs: 0.75rem; /* 12px */
  --text-sm: 0.875rem; /* 14px */
  --text-base: 1rem; /* 16px */
  --text-lg: 1.125rem; /* 18px */
  --text-xl: 1.25rem; /* 20px */
  --text-2xl: 1.5rem; /* 24px */
  --text-3xl: 1.875rem; /* 30px */
  --text-4xl: 2.25rem; /* 36px */
  --text-5xl: 3rem; /* 48px */
  --text-6xl: 3.75rem; /* 60px */

  /* Spacing Scale */
  --spacing-1: 0.25rem; /* 4px */
  --spacing-2: 0.5rem; /* 8px */
  --spacing-3: 0.75rem; /* 12px */
  --spacing-4: 1rem; /* 16px */
  --spacing-5: 1.25rem; /* 20px */
  --spacing-6: 1.5rem; /* 24px */
  --spacing-8: 2rem; /* 32px */
  --spacing-10: 2.5rem; /* 40px */
  --spacing-12: 3rem; /* 48px */
  --spacing-14: 3.5rem; /* 56px */
  --spacing-16: 4rem; /* 64px */
  --spacing-20: 5rem; /* 80px */
  --spacing-24: 6rem; /* 96px */
  --spacing-32: 8rem; /* 128px */

  /* Semantic Spacing Aliases */
  --spacing-xs: var(--spacing-1);
  --spacing-sm: var(--spacing-2);
  --spacing-md: var(--spacing-4);
  --spacing-lg: var(--spacing-6);
  --spacing-xl: var(--spacing-8);
  --spacing-2xl: var(--spacing-12);

  /* Legacy Space Aliases (used in landing components) */
  --space-xs: var(--spacing-xs);
  --space-sm: var(--spacing-sm);
  --space-md: var(--spacing-md);
  --space-lg: var(--spacing-lg);
  --space-xl: var(--spacing-xl);
  --space-2xl: var(--spacing-2xl);
  --space-4xl: var(--spacing-16);
  --space-6xl: var(--spacing-24);
  --space-8xl: var(--spacing-32);

  /* Radii */
  --radius-sm: 0.375rem; /* 6px */
  --radius-md: 0.75rem; /* 12px */
  --radius-lg: 1rem; /* 16px */
  --radius-xl: 1.5rem; /* 24px */
  --radius-2xl: 2.5rem; /* 40px */
  --radius-pill: 9999px;
  --radius-full: var(--radius-pill);


  /* Aura & Glow Tokens */
  --aura-soft: 0 0 20px rgba(var(--accent-primary-rgb), 0.3);
  --aura-medium: 0 0 40px rgba(var(--accent-primary-rgb), 0.5);
  --aura-hard: 0 0 60px rgba(var(--accent-primary-rgb), 0.7);

  /* Accents */
  --accent-arcane: #9d8df1;
  --accent-arcane-rgb: 157, 141, 241;
  --accent-secondary: #06b6d4;
  --accent-secondary-rgb: 6, 182, 212;
  --accent-primary: #a78bfa;
  --accent-primary-rgb: 167, 139, 250;
  --accent-tertiary: #fcd34d;
  --accent-tertiary-rgb: 252, 211, 77;
  --accent-quaternary: #c084fc;
  --accent-quaternary-rgb: 192, 132, 252;
  --accent-quinary: #f59e0b;
  --accent-quinary-rgb: 245, 158, 11;
  --accent-mystic: #fcd34d;
  --accent-mystic-rgb: 252, 211, 77;
  --accent-gold: #d4af37;
  --accent-gold-rgb: 212, 175, 55;
  --accent-gold-bright: #fef08a;
  --accent-gold-bright-rgb: 254, 240, 138;
  --accent-gold-glow: #fde047;
  --accent-gold-glow-rgb: 253, 224, 71;

  /* Mystic Accent Variants */
  --mystic-accent-soft: rgba(var(--accent-mystic-rgb), 0.15);
  --mystic-accent-medium: rgba(var(--accent-mystic-rgb), 0.4);
  --mystic-accent-strong: rgba(var(--accent-mystic-rgb), 0.8);
  --mystic-accent-glow: 0 0 20px rgba(var(--accent-mystic-rgb), 0.4);

  /* Primary Accent Variants */
  --primary-accent-soft: rgba(var(--accent-primary-rgb), 0.15);
  --primary-accent-medium: rgba(var(--accent-primary-rgb), 0.4);
  --primary-accent-strong: rgba(var(--accent-primary-rgb), 0.8);
  --primary-accent-glow: 0 0 20px rgba(var(--accent-primary-rgb), 0.4);

  /* Semantic Colors */
  --success: #10b981;
  --success-rgb: 16, 185, 129;
  --danger: #f43f5e;
  --danger-rgb: 244, 63, 94;
  --warning: #f59e0b;
  --info: #3b82f6;
  --whatsapp: #25d366;
  --whatsapp-rgb: 37, 211, 102;
  --whatsapp-hover: #075e54;

  /* Brand Colors */
  --brand-google-blue: #4285F4;
  --brand-google-green: #34A853;
  --brand-google-yellow: #FBBC05;
  --brand-google-red: #EA4335;

  /* Feature Specific Colors (Result Screen) */
  --color-growth: #60a5fa;
  --color-growth-rgb: 96, 165, 250;
  --color-shadow: #f43f5e;
  --color-match: #10b981;
  --color-match-light: #34d399;
  --color-shadow-light: #fecaca;

  /* Hub & Interaction Accents */
  --hub-accent: #a8b4ff;
  --hub-accent-rgb: 168, 180, 255;
  --hub-accent-soft: rgba(var(--hub-accent-rgb), 0.08);
  --hub-accent-medium: rgba(var(--hub-accent-rgb), 0.15);
  --hub-accent-strong: rgba(var(--hub-accent-rgb), 0.25);
  --hub-accent-glow: 0 0 24px rgba(var(--hub-accent-rgb), 0.25);

  /* Quest Type Colors */
  --color-quest-mirror: #7ec8e3;
  --color-quest-shadow: #b388ff;
  --color-quest-impulse: #ffd180;
  --color-quest-chronicle: #a5d6a7;

  /* Shadow Sections (Behavioral/Moral) */
  --color-shadow-surface: rgba(244, 63, 94, 0.04);
  --color-shadow-border: rgba(244, 63, 94, 0.1);

  /* Utility Colors */
  --white: #ffffff;
  --white-rgb: 255, 255, 255;
  --black: #000000;
  --black-rgb: 0, 0, 0;

  /* Semantics */
  --overlay-dark: rgba(0, 0, 0, 0.8);

  /* Glassmorphism 2.0 (Liquid Glass) */
  --glass-blur: 15px;
  --glass-bg: rgba(255, 255, 255, 0.03);
  --glass-border: rgba(255, 255, 255, 0.06);
  --glass-border-faint: rgba(255, 255, 255, 0.03);
  --glass-light: rgba(255, 255, 255, 0.05);
  --glass-overlay: rgba(0, 0, 0, 0.6);
  --glass-overlay-rgb: 0, 0, 0;
  --glass-overlay-soft: rgba(0, 0, 0, 0.4);
  --glass-overlay-deep: rgba(0, 0, 0, 0.85);
  --glass-shadow: 0 12px 48px 0 rgba(0, 0, 0, 0.5);

  /* Semantic Surfaces */
  --surface-base: var(--bg-dark);
  --surface-bg: var(--bg-dark);
  --surface-glass: var(--glass-bg);
  --surface-glass-deep: var(--glass-overlay-deep);
  --surface-glass-soft: rgba(var(--bg-dark-rgb), 0.45);
  --surface-elevated: rgba(255, 255, 255, 0.06);
  --surface-ghost: rgba(255, 255, 255, 0.08);
  --surface-accent: rgba(var(--accent-primary-rgb), 0.08);
  --surface-accent-secondary: rgba(var(--accent-secondary-rgb), 0.08);

  /* Semantic Borders */
  --border-glass: var(--glass-border);
  --border-subtle: var(--glass-border);
  --border-accent-primary: rgba(var(--accent-primary-rgb), 0.4);
  --border-accent-secondary: rgba(var(--accent-secondary-rgb), 0.4);
  --border-accent-secondary-soft: rgba(var(--accent-secondary-rgb), 0.15);

  /* Z-Index Scale */
  --z-negative: -1;
  --z-base: 1;
  --z-dock: 10;
  --z-nav: 50;
  --z-overlay: 100;
  --z-modal: 200;
  --z-toast: 500;
  --z-max: 9999;

  /* Timing & Easing (R-Core) */
  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
  --ease-in-out-cubic: cubic-bezier(0.65, 0, 0.35, 1);
  --transition-fast: 0.2s var(--ease-out-expo);
  --transition-smooth: 0.4s var(--ease-out-expo);
  --transition-deliberate: 0.8s var(--ease-out-expo);

  /* Effects */
  --shadow-glow: 0 0 15px var(--accent-primary);
  --glow-cap-soft: 8px;
  --glow-cap-medium: 12px;
  --glow-cap-hard: 20px;

  /* Portal & Warp Transformation Tokens */
  --portal-glow: 0 0 60px rgba(var(--accent-primary-rgb), 0.5);
  --portal-size: 300px;
  --warp-intensity: 0;
  --plasma-speed: 2s;
  --descent-progress: 0;

  /* Legacy Signal Aliases (kept for older orb/loading visuals; not product paths) */
  --path-logic-color: #00e5ff;
  --path-logic-rgb: 0, 229, 255;
  --path-intuition-color: #f59e0b;
  --path-intuition-rgb: 245, 158, 11;

  /* HEXACO Dimension Colors */
  --color-dim-o: #8b5cf6;
  --color-dim-o-rgb: 139, 92, 246;
  --color-dim-c: #3b82f6;
  --color-dim-c-rgb: 59, 130, 246;
  --color-dim-e: #f59e0b;
  --color-dim-e-rgb: 245, 158, 11;
  --color-dim-a: #10b981;
  --color-dim-a-rgb: 16, 185, 129;
  --color-dim-n: #ec4899;
  --color-dim-n-rgb: 236, 72, 153;
  --color-dim-h: #06b6d4;
  --color-dim-h-rgb: 6, 182, 212;

  /* Orb Specific Tokens */
  --orb-cyan-mid: #0891b2;
  --orb-cyan-deep: #083344;
  --orb-violet-mid: #6d28d9;
  --orb-violet-deep: #2e1065;
  --orb-amber-mid: #b45309;
  --orb-amber-deep: #78350f;

  /* Scene-Specific Cool/Warm Depth Colors */
  --scene-logic-bright: #b8f7ff;
  --scene-logic-deep: #1e1b4b;
  --scene-intuition-bright: #ddd6fe;
  --scene-intuition-deep: #4c1d95;

  /* Atmospheric Mood Tokens */
  --mood-amber: #f59e0b;
  --mood-amber-rgb: 245, 158, 11;
  --mood-mint: #a7f3d0;
  --mood-mint-rgb: 167, 243, 208;
  --mood-flare: #f97316;
  --mood-flare-rgb: 249, 115, 22;
  --mood-neon: #22d3ee;
  --mood-neon-rgb: 34, 211, 238;
  --mood-cyan: #06b6d4;
  --mood-cyan-rgb: 6, 182, 212;
  --mood-slate: #94a3b8;
  --mood-slate-rgb: 148, 163, 184;
  --mood-indigo: #818cf8;
  --mood-indigo-rgb: 129, 140, 248;
  --mood-void-night: #1e1b4b;
  --mood-void-purple: #2e1a4b;
  --mood-violet: #a78bfa;
  --mood-violet-rgb: 167, 139, 250;

  /* Atmospheric Tints – richer for Life-is-Strange mood system */
  --tint-amber: rgba(60, 30, 0, 0.35);
  --tint-mint: rgba(10, 40, 25, 0.28);
  --tint-flare: rgba(55, 12, 0, 0.38);
  --tint-neon: rgba(0, 30, 45, 0.32);
  --tint-cyan: rgba(0, 20, 50, 0.32);
  --tint-slate: rgba(15, 18, 28, 0.28);
  --tint-indigo: rgba(8, 0, 35, 0.38);
  --tint-violet: rgba(20, 5, 40, 0.28);

  /* Space Descent & Plasma Tokens (R-Custom) */
  --plasma-glow: 0 0 30px rgba(167, 139, 250, 0.6);
  --impulse-accent: #fcd34d;
  --space-depth-z: 1200px;
  --liquid-btn-filter: url(#gooey-filter);
  --warp-speed-blur: 0px;
  --bg-accent-gradient: radial-gradient(circle at 50% 50%, rgba(var(--accent-primary-rgb), 0.1), transparent 80%);
  --bg-dark-accent: #050510;
  --bg-dark-accent-rgb: 5, 5, 16;
  --accent-magenta: #f472b6;
  --accent-magenta-rgb: 244, 114, 182;

  /* Layout Guard Hardening */
  --layout-max-width: 1440px;
  --layout-safe-padding: clamp(2rem, 5vw, 6rem);
  --layout-bottom-safe: clamp(100px, 15vh, 180px);
  --report-shell-max-width: 940px;

  /* ==========================================================
   * Editorial Aetherpunk – LANDING-VISUAL-02 (Brief v2.1)
   * Reference: Persona_Quest_Landingpage_Visual_Brief.md §6, §7, §8
   * Two-metal restraint: cool platinum (structural) + warm antique
   * gold (primary actions, chapter sigil). No third metal without
   * documented exception (Brief §2.5).
   * ========================================================== */

  /* Editorial Surfaces */
  --surface-page: #080b13;
  --surface-page-rgb: 8, 11, 19;
  --surface-card: #0e1220;
  --surface-card-rgb: 14, 18, 32;
  --surface-card-strong: #131826;
  --surface-card-strong-rgb: 19, 24, 38;

  /* Two-Metal Palette */
  --metal-platinum: #a9b0bb;
  --metal-platinum-rgb: 169, 176, 187;
  --metal-platinum-border: rgba(169, 176, 187, 0.32);
  --metal-platinum-inset: rgba(169, 176, 187, 0.09);
  --metal-platinum-strong: rgba(169, 176, 187, 0.55);
  --metal-gold: #d6b87a;
  --metal-gold-rgb: 214, 184, 122;
  --metal-gold-border: rgba(214, 184, 122, 0.55);
  --metal-gold-inset: rgba(214, 184, 122, 0.16);
  --metal-gold-strong: rgba(214, 184, 122, 0.70);

  /* Kodex axes: stable semantic tokens for reveal, report and artifact UI. */
  --kodex-system-lawful: #d8bd7a;
  --kodex-system-neutral: #8fcac5;
  --kodex-system-chaotic: #c48a6a;
  --kodex-focus-care: #8ab5d8;
  --kodex-focus-fairness: #d8bd7a;
  --kodex-focus-loyalty: #b58ee8;

  /* Editorial Text Scale */
  --text-aether-primary: #f1ede1;
  --text-aether-body: #c8ccd2;
  --text-aether-muted: #8a8f97;
  --text-aether-faint: #6e7176;
  --text-aether-extra-faint: #4a4d52;

  /* Mono-Caps Letter-Spacing */
  --ls-mono-button: 0.28em;
  --ls-mono-eyebrow: 0.30em;
  --ls-mono-marker: 0.32em;
  --ls-mono-chip: 0.22em;
  --ls-italic-title: 0.005em;

  /* Engraved Double-Border Aliases */
  --engrave-platinum: 1px solid var(--metal-platinum-border);
  --engrave-platinum-inset: inset 0 0 0 1px var(--metal-platinum-inset);
  --engrave-gold: 1px solid var(--metal-gold-border);
  --engrave-gold-inset: inset 0 0 0 1px var(--metal-gold-inset);

  /* ==========================================================
   * Unified Visual Language – „Deco-Rahmen + persönliche Farbe"
   * Ref: Persona_Quest_Unified_Visual_Language_2026-06-14.md
   * Schicht A (Rahmen) = statische Metalle/Gravur (oben definiert).
   * Schicht B (Akzent) = persönliche Signal-Farbe; zur Laufzeit via
   * getPersonaThemeVars() auf .hub-shell/Report injiziert. Hier nur
   * sinnvolle Fallbacks, damit die Aliase auch ohne Ergebnis auflösen.
   * ========================================================== */

  /* Persona-Akzent Fallbacks (werden zur Laufzeit überschrieben) */
  --pq-signal-rgb: 167, 139, 250;            /* Fallback: arcane violet */
  --pq-signal-secondary-rgb: 6, 182, 212;    /* Fallback: cyan */

  /* Verzierungs-Intensität – EINE Stellschraube (0 ruhig … 1 reich) */
  --deco-ornament-level: 0.62;

  /* Schicht B – sichtbare Stufen des persönlichen Akzents.
     Ersetzen die unsichtbaren ~0.05-Floors im Hub. */
  --accent-veil-faint: rgba(var(--pq-signal-rgb), 0.10);
  --accent-veil-soft: rgba(var(--pq-signal-rgb), 0.20);
  --accent-veil-strong: rgba(var(--pq-signal-rgb), 0.34);
  --accent-line: rgba(var(--pq-signal-rgb), 0.55);
  --accent-glow-visible: 0 0 28px rgba(var(--pq-signal-rgb), 0.28);
  --accent-ink: color-mix(in oklab, rgb(var(--pq-signal-rgb)) 82%, white);

  /* Schicht A – sichtbare Metall-Schleier (Zwei-Metall-Rahmen) */
  --metal-gold-veil: rgba(var(--metal-gold-rgb), 0.10);
  --metal-gold-veil-strong: rgba(var(--metal-gold-rgb), 0.20);
  --metal-platinum-veil: rgba(var(--metal-platinum-rgb), 0.08);

  /* Deco-Panel-Grammatik – geteilter Behälter über alle Flächen.
     Graphit-Karte + dezenter Persona-Schleier + Glaslicht. */
  --panel-radius: 8px;
  /* Mehrstufige, graphit-blau getönte Elevation – wirkt edler als ein
     einzelner harter Schwarz-Schatten. */
  --panel-shadow:
    0 3px 8px rgba(4, 7, 13, 0.4),
    0 14px 28px rgba(4, 7, 13, 0.36),
    0 28px 60px rgba(4, 7, 13, 0.4);
  --panel-bg:
    linear-gradient(135deg, var(--metal-gold-veil), transparent 46%),
    linear-gradient(34deg, transparent 40%, var(--metal-platinum-veil), transparent 80%),
    linear-gradient(135deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.014)),
    var(--surface-card);
  --panel-bg-strong:
    linear-gradient(135deg, var(--metal-gold-veil-strong), transparent 48%),
    linear-gradient(135deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.016)),
    var(--surface-card-strong);
  --panel-border: var(--metal-platinum-border);
  --panel-border-gold: var(--metal-gold-border);
  --panel-engrave: var(--engrave-platinum-inset);
  --panel-engrave-gold: var(--engrave-gold-inset);
}

/* Responsiveness (R5 Implementation) */
@media (max-width: 768px) {
  :root {
    --glass-blur: 8px;
    --glow-cap-soft: 6px;
    --glow-cap-medium: 10px;
    --glow-cap-hard: 16px;
  }
}

/* Accessibility: Respect user motion preferences */
@media (prefers-reduced-motion: reduce) {
  html:root body * {
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
    transition-duration: 0.01ms;
    scroll-behavior: auto;
  }

  /* Keep layout transforms but remove decorative ones */
  html:root body .plasma-text {
    animation: none;
    background-position: 0% center;
  }

  html:root body .float-subtle,
  html:root body .vision-track {
    animation: none;
  }
}

.keyword-ping-trigger {
    display: inline;
    color: var(--accent-primary);
    font-weight: 600;
    cursor: help;
    border-bottom: 1px dashed rgba(var(--accent-primary-rgb), 0.3);
    transition: all 0.3s var(--ease-out-expo);
}

.keyword-ping-trigger:hover {
    color: var(--accent-mystic);
    border-color: var(--accent-mystic);
    text-shadow: 0 0 10px rgba(var(--accent-mystic-rgb), 0.4);
}
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html, body {
  width: 100%;
  min-height: 100%;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  background: linear-gradient(135deg, var(--bg-slate) 0%, var(--bg-dark) 100%);
  color: var(--text-main);
  overflow-x: hidden;
  overflow-y: auto;
}

#root {
  width: 100%;
  min-height: 100vh;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
}

.fade-in { opacity: 1; transition: opacity 0.4s ease-out; }
.fade-out { opacity: 0; transition: opacity 0.3s ease-in; }

/* Global grain overlay – sits over entire app, pointer-events:none */
.grain-overlay {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 9999;
  opacity: 0.022;
  mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
  background-size: 220px 220px;
}

@media (max-width: 480px) {
  .grain-overlay { opacity: 0.014; }
}
a {
  color: var(--accent-primary);
  text-decoration: none;
  transition: color 0.2s ease, opacity 0.2s ease;
  font-weight: 500;
}

a:hover {
  text-decoration: underline;
  opacity: 0.8;
}

a:focus-visible {
  outline: 2px solid var(--accent-primary);
  outline-offset: 4px;
  border-radius: 4px;
}

/* Global List Reset (Prevents Ghost Dots) */
ul, ol {
  list-style: none; /* Default to no bullets for our Modern-Mystic UI */
  padding: 0;
  margin: 0;
}

/* Explicit opt-in for textual lists if needed */
.text-list {
  list-style: disc;
  padding-left: 1.5rem;
  margin-bottom: 1rem;
}

.text-list li {
  margin-bottom: 0.5rem;
}

/* Utilities */
.hidden-preload {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
    z-index: var(--z-negative);
}
/* Brand Typography - Defined in variables.css */

/* Base Typography - Mobile First */
body {
  font-family: var(--font-body);
  font-size: var(--text-sm); /* 14px */
  line-height: 1.5;
  color: var(--text-main);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background-color: var(--bg-dark);
}

@media (min-width: 768px) {
  body {
    font-size: var(--text-base); /* 16px */
  }
}

h1, h2, h3, .card-title, .result-archetype-title, .step-number {
  font-family: var(--font-heading);
  letter-spacing: var(--letter-spacing-radical);
  font-weight: 700;
}

/* Modern-Mystic Special Styles */
.font-serif {
  font-family: var(--font-serif);
  text-transform: none;
  font-style: italic;
  font-weight: 400;
}

.font-mono {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: var(--text-xs);
  opacity: 0.8;
}

.intro-title {
  font-family: var(--font-serif);
  font-size: var(--text-6xl);
  line-height: 1.1;
  text-transform: none;
  font-style: italic;
  margin-bottom: var(--spacing-6);
  color: var(--text-primary);
  text-shadow: 0 0 40px rgba(var(--accent-primary-rgb), 0.2);
}

.archetype-title {
  font-family: var(--font-heading);
  font-size: var(--text-4xl);
  letter-spacing: var(--letter-spacing-radical);
  text-transform: uppercase;
  background: linear-gradient(to right, var(--text-primary), var(--accent-primary));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.section-label {
  font-family: var(--font-mono);
  color: var(--accent-secondary);
  display: block;
  margin-bottom: var(--spacing-2);
}

/* Typography Color Utilities */
.text-main { color: var(--text-main); }
.text-muted { color: var(--text-muted); }
.text-accent { color: var(--accent-arcane); }
.text-success { color: var(--success); }
.text-danger { color: var(--danger); }
.text-white { color: var(--white); }
.text-secondary { color: var(--text-secondary); }

/* Typography Utilities */
.text-metadata {
  font-size: var(--text-xs); /* 12px */
  color: var(--text-muted);
  line-height: 1.4;
}

@media (min-width: 768px) {
  .text-metadata {
    font-size: var(--text-sm); /* 14px */
  }
}

.text-bold { font-weight: 700; }
.text-extrabold { font-weight: 800; }

.text-body-large { 
  font-size: var(--text-base); /* 16px */ 
  line-height: 1.6; 
}

@media (min-width: 768px) {
  .text-body-large {
    font-size: var(--text-xl); /* 20px */
  }
}

.text-match-light { color: var(--color-match-light); }
.text-shadow { color: var(--color-shadow); }
.text-growth { color: var(--color-growth); }
.text-match { color: var(--color-match); }

.clear-text {
  color: var(--text-main);
  line-height: 1.6;
}

.glitch-text {
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-weight: 900;
  text-shadow: 
    -1px 0px 0px rgba(255, 0, 193, 0.2), 
    1px 0px 0px rgba(0, 255, 249, 0.2),
    0px 0px var(--glow-cap-soft) rgba(255,255,255,0.05);
  margin-left: 0.15em; 
  transition: all 0.3s var(--ease-out-expo);
  position: relative;
}

@media (min-width: 768px) {
  .glitch-text {
    letter-spacing: 0.25em;
    margin-left: 0.25em;
  }
}

.glitch-text:hover {
  animation: rgb-glitch 0.6s infinite alternate;
  text-shadow: 
    -2px 0px 0px rgba(255, 0, 193, 0.4), 
    2px 0px 0px rgba(0, 255, 249, 0.4),
    0px 0px var(--glow-cap-medium) rgba(255,255,255,0.2);
  cursor: help;
}

@media (prefers-reduced-motion: reduce) {
  .glitch-text:hover {
    animation: none;
  }
}

/* 2. Shared Layer: Patterns, Utilities, Overlays */
/* Standard Button System (Mobile First) */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-md);
  font-weight: 700;
  font-family: 'Outfit', sans-serif;
  cursor: pointer;
  transition: all 0.3s var(--ease-out-expo);
  border: none;
  outline: none;
  gap: 8px;
  text-decoration: none;
  padding: var(--spacing-3) var(--spacing-6);
  font-size: 15px;
}

@media (min-width: 768px) {
  .btn {
    padding: 14px 28px;
    font-size: 16px;
  }
}

.btn:active {
  transform: translateY(1px) scale(0.98);
}

.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Variants */
.btn-primary {
  background: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);
  color: white;
  box-shadow: 0 8px 24px rgba(var(--accent-primary-rgb), 0.4);
}
.btn-primary:hover {
  transform: translateY(-2px) scale(1.02);
  box-shadow: 0 12px 30px rgba(var(--accent-primary-rgb), 0.6);
}

.btn-secondary {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur));
  -webkit-backdrop-filter: blur(var(--glass-blur));
  border: 1px solid var(--glass-border);
  color: var(--accent-arcane);
}
.btn-secondary:hover {
  background: var(--glass-light);
  border-color: rgba(255, 255, 255, 0.2);
}

.btn-ghost {
  background: transparent;
  color: var(--text-muted);
}
.btn-ghost:hover {
  background: var(--glass-border-faint);
  color: white;
}

.btn-arcane {
  background: var(--bg-slate);
  border: 1px solid var(--accent-arcane);
  color: var(--accent-arcane);
  box-shadow: 0 0 10px rgba(var(--accent-arcane-rgb, 157, 141, 241), 0.1);
}
.btn-arcane:hover {
  box-shadow: 0 0 20px var(--accent-arcane);
  background: rgba(var(--accent-arcane-rgb, 157, 141, 241), 0.05);
  transform: translateY(-1px);
}

/* Sizes */
.btn-sm { padding: 8px 16px; font-size: 14px; }
.btn-md { padding: 14px 28px; font-size: 16px; }
.btn-lg { padding: 18px 36px; font-size: 18px; }

/* Desktop overrides for sizes if needed */
@media (min-width: 768px) {
  .btn-lg { padding: 20px 42px; font-size: 20px; }
}

/* Utilities */
.btn-full { width: 100%; }
.btn-glow { box-shadow: 0 0 20px var(--accent-primary); }
.btn-pill { 
  border-radius: 50px; 
  background: var(--glass-overlay); 
  backdrop-filter: blur(8px); 
  -webkit-backdrop-filter: blur(8px);
  color: var(--white);
  border: 1px solid var(--glass-border);
}
.btn-pill:hover {
  background: var(--glass-overlay-deep);
  border-color: rgba(255, 255, 255, 0.3);
}

.secondary-button {
  background: var(--glass-light);
  color: white;
  border: 1px solid var(--glass-border);
  padding: 12px;
  border-radius: 12px;
  font-weight: 600;
  font-family: 'Inter', sans-serif;
  cursor: pointer;
  transition: all 0.2s;
  width: 100%;
}

@media (min-width: 768px) {
  .secondary-button {
    padding: 14px;
  }
}

.secondary-button:hover {
  background: var(--glass-border-faint);
}

.action-button {
  background: linear-gradient(135deg, var(--success) 0%, #059669 100%);
  color: white;
  border: none;
  border-radius: 12px;
  padding: 16px 20px;
  font-size: 15px;
  font-weight: 700;
  font-family: 'Outfit', sans-serif;
  cursor: pointer;
  width: 100%;
  box-shadow: 0 10px 30px rgba(var(--success-rgb, 16, 185, 129), 0.4);
  transition: all 0.3s;
}

@media (min-width: 768px) {
  .action-button {
    padding: 18px 24px;
    font-size: 16px;
  }
}

.action-button:hover {
  transform: translateY(-2px);
  box-shadow: 0 15px 40px rgba(var(--success-rgb, 16, 185, 129), 0.6);
}

.share-button {
  background: var(--whatsapp);
  color: white;
  border: none;
  padding: 12px;
  border-radius: 10px;
  font-weight: 600;
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  cursor: pointer;
  transition: all 0.2s;
}

@media (min-width: 768px) {
  .share-button {
    padding: 14px;
  }
}

.share-button:hover {
  background: var(--whatsapp-hover);
}

.copy-button {
  background: var(--glass-border-faint);
  color: white;
  border: none;
  padding: 12px;
  border-radius: 10px;
  font-weight: 600;
  flex: 1;
  cursor: pointer;
  transition: all 0.2s;
}

@media (min-width: 768px) {
  .copy-button {
    padding: 14px;
  }
}

.copy-button:hover {
  background: var(--glass-light);
}

.copy-button.copied {
  background: var(--success);
}

.text-button {
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  padding: 8px 16px;
  transition: color 0.2s;
}
.text-button:hover {
  color: white;
}

/* Floating Sound Toggle */
.sound-toggle {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--glass-overlay-deep);
  backdrop-filter: blur(var(--glass-blur));
  -webkit-backdrop-filter: blur(var(--glass-blur));
  border: 1px solid var(--glass-border);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 1000;
  transition: all 0.3s var(--ease-out-expo);
  font-size: 20px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}

.sound-toggle:hover {
  transform: scale(1.1) translateY(-2px);
  background: var(--glass-light);
  border-color: rgba(255, 255, 255, 0.3);
  box-shadow: 0 12px 40px rgba(var(--accent-primary-rgb), 0.3);
}

.sound-toggle:active {
  transform: scale(0.95);
}

@media (max-width: 768px) {
  .sound-toggle {
    bottom: 20px;
    right: 20px;
    width: 44px;
    height: 44px;
    font-size: 18px;
  }
}

/* Crystalline / Arcane Variant (Hardened UI) */
.btn-crystalline {
  background: rgba(255, 255, 255, 0.03);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--glass-border-faint);
  color: var(--text-muted);
  font-family: var(--font-mono);
  font-size: 0.7rem;
  padding: 10px 20px;
  border-radius: 14px;
  text-transform: uppercase;
  letter-spacing: 2px;
  transition: all 0.4s var(--ease-out-expo);
  position: relative;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.btn-crystalline:hover {
  background: rgba(var(--accent-primary-rgb), 0.08);
  color: white;
  border-color: var(--accent-primary);
  box-shadow: 0 0 25px rgba(var(--accent-primary-rgb), 0.25);
  letter-spacing: 2.5px;
  transform: translateY(-1px);
}

.btn-crystalline:active {
  transform: translateY(1px) scale(0.97);
}

/* Arcane Glass CTA (Premium Branding) */
.btn-arcane-glass {
  background: rgba(10, 12, 20, 0.75); /* Deep obsidian */
  backdrop-filter: blur(28px) saturate(200%);
  -webkit-backdrop-filter: blur(28px) saturate(200%);
  border: 0.5px solid rgba(var(--accent-secondary-rgb), 0.3);
  color: var(--white);
  padding: 18px 52px;
  font-family: var(--font-mono);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  border-radius: 40px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 
    0 20px 50px rgba(0, 0, 0, 0.7),
    inset 0 0 30px rgba(var(--accent-secondary-rgb), 0.05);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  outline: none;
}

.btn-arcane-glass::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg, 
    rgba(var(--white-rgb), 0.08), 
    transparent 40%, 
    rgba(var(--accent-secondary-rgb), 0.05) 80%
  );
  pointer-events: none;
}

.btn-arcane-glass::after {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: 40px;
  padding: 1px;
  background: linear-gradient(
    135deg, 
    rgba(var(--accent-secondary-rgb), 0.4), 
    rgba(var(--accent-primary-rgb), 0.4)
  );
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  opacity: 0.6;
  transition: opacity 0.6s ease;
}

/* Void-Glass CTA (New Premium Hero Style) - Minimalist & Sentient */
.btn-void-glass {
  background: rgba(8, 10, 15, 0.9); /* Deep abyss */
  backdrop-filter: blur(24px) saturate(200%);
  -webkit-backdrop-filter: blur(24px) saturate(200%);
  border: 1px solid rgba(var(--accent-secondary-rgb), 0.25);
  color: var(--white);
  padding: 20px 60px;
  font-family: var(--font-mono);
  font-size: 0.9rem;
  font-weight: 500;
  letter-spacing: 0.45em;
  text-transform: uppercase;
  border-radius: 4px; /* More crystalline/shard-like than pill */
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 
    0 30px 60px rgba(0, 0, 0, 0.7),
    inset 0 0 40px rgba(var(--accent-secondary-rgb), 0.05);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  outline: none;
}

.btn-void-glass::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg, 
    rgba(var(--accent-secondary-rgb), 0.2), 
    transparent 50%, 
    rgba(var(--accent-primary-rgb), 0.1) 100%
  );
  opacity: 0.6;
  pointer-events: none;
}

.btn-void-glass::after {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(var(--accent-secondary-rgb), 0.2),
    transparent
  );
  opacity: 0; /* Hide by default to prevent stripe bleed when overflow-visible (Task 18) */
  transition: opacity 0.4s ease;
  pointer-events: none;
}

.btn-void-glass:hover {
  background: rgba(var(--accent-secondary-rgb), 0.05);
  border-color: rgba(var(--accent-secondary-rgb), 0.7);
  box-shadow: 
    0 15px 45px rgba(var(--accent-secondary-rgb), 0.35),
    inset 0 0 20px rgba(var(--accent-secondary-rgb), 0.1);
  letter-spacing: 0.5em;
  transform: translateY(-2px) scale(1.01);
}

.btn-void-glass:hover::after {
  left: 100%;
  transition: left 0.9s cubic-bezier(0.4, 0, 0.2, 1);
}

.btn-void-glass .btn-label {
  position: relative;
  z-index: 2;
  text-shadow: 0 0 12px rgba(255, 255, 255, 0.3);
}

.btn-arcane-glass:hover {
  background: rgba(var(--accent-secondary-rgb), 0.12);
  border-color: rgba(var(--accent-secondary-rgb), 0.6);
  box-shadow: 
    0 15px 60px rgba(var(--accent-secondary-rgb), 0.35),
    0 0 20px rgba(var(--accent-primary-rgb), 0.2);
  letter-spacing: 0.38em;
  transform: translateY(-3px) scale(1.02);
}

.btn-arcane-glass:hover::after {
  opacity: 1;
}

.btn-arcane-glass .btn-glow-layer {
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at var(--mouse-x, 50%) var(--mouse-y, 50%), 
    rgba(var(--accent-secondary-rgb), 0.4), 
    transparent 65%
  );
  opacity: 0;
  transition: opacity 0.5s ease;
}

.btn-arcane-glass:hover .btn-glow-layer {
  opacity: 1;
}

/* Calmer CTA Pulsation - Ambient & Slow */
.cta-glow-pulse {
  position: absolute;
  inset: -6px;
  border-radius: 48px;
  box-shadow: 
    0 0 45px rgba(var(--accent-secondary-rgb), 0.2),
    0 0 80px rgba(var(--accent-primary-rgb), 0.08);
  opacity: 0;
  pointer-events: none;
  animation: cta-pulse-ambient 12s infinite ease-in-out;
}

@keyframes cta-pulse-ambient {
  0%, 100% { opacity: 0.02; transform: scale(0.98); filter: blur(6px); }
  50% { opacity: 0.12; transform: scale(1.04); filter: blur(10px); }
}

/* Global Button Hardening (R8/Nav Gore Prevention) */
button {
  -webkit-tap-highlight-color: transparent;
  outline: none;
}

button:focus-visible {
  outline: 2px solid rgba(var(--metal-gold-rgb), 0.78);
  outline-offset: 4px;
  box-shadow:
    0 0 0 1px rgba(241, 237, 225, 0.18),
    0 0 0 4px rgba(5, 7, 11, 0.74);
}

/* ============================================================
 * Editorial Aetherpunk – LANDING-VISUAL-02 (Brief v2.1)
 * Two-metal restraint: warm antique gold for primary actions,
 * cool platinum for secondary. Mono-caps with wide letter-spacing,
 * engraved double-border via outer border + inset shadow.
 * No drop shadows, no glows, no gradients.
 *
 * Usage:
 *   <Button variant="aetherpunk-primary">Essenz entdecken</Button>
 *   <Button variant="aetherpunk-secondary">Methodik ansehen</Button>
 *
 * Reference: Persona_Quest_Landingpage_Visual_Brief.md §7.5, §8.2, §11.2.
 * ============================================================ */
.btn-aetherpunk-primary,
.btn-aetherpunk-secondary {
  font-family: var(--font-mono);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: var(--ls-mono-button);
  border-radius: 2px;
  padding: 13px 24px;
  font-size: 0.6875rem; /* 11px – Aetherpunk Mono-Caps Skala */
  transition:
    border-color 0.3s var(--ease-out-expo),
    box-shadow 0.3s var(--ease-out-expo),
    color 0.3s var(--ease-out-expo);
}

.btn-aetherpunk-primary {
  background: var(--surface-card-strong);
  color: var(--metal-gold);
  border: var(--engrave-gold);
  box-shadow: var(--engrave-gold-inset);
}
.btn-aetherpunk-primary:hover {
  border-color: var(--metal-gold);
  box-shadow: inset 0 0 0 1px var(--metal-gold-strong);
  color: var(--text-aether-primary);
}
.btn-aetherpunk-primary:active {
  transform: translateY(1px) scale(0.99);
}

.btn-aetherpunk-secondary {
  background: transparent;
  color: var(--text-aether-body);
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
}
.btn-aetherpunk-secondary:hover {
  border-color: var(--metal-platinum-strong);
  box-shadow: inset 0 0 0 1px var(--metal-platinum-strong);
  color: var(--text-aether-primary);
}

.btn-aetherpunk-primary:focus-visible,
.btn-aetherpunk-secondary:focus-visible {
  border-color: var(--metal-gold-strong);
  color: var(--text-aether-primary);
}

.btn-aetherpunk-secondary:active {
  transform: translateY(1px) scale(0.99);
}

/* Disabled-State respektiert Editorial-Regel:
 * keine Glows, nur reduzierte Opazität und kein Hover-Versprechen. */
.btn-aetherpunk-primary:disabled,
.btn-aetherpunk-secondary:disabled,
.btn-aetherpunk-primary[aria-disabled='true'],
.btn-aetherpunk-secondary[aria-disabled='true'] {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}
/* Glassmorphism 2.0 Utility */
.glass-liquid, .glass-card {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(180%);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(180%);
  border: 1px solid var(--glass-border);
  border-radius: 24px;
  padding: var(--glass-container-padding, var(--spacing-6));
  box-shadow: var(--glass-shadow);
  transition: var(--transition-smooth);
  position: relative;
  overflow: hidden;
}

.glass-liquid:hover, .glass-card:hover {
  border-color: rgba(var(--white-rgb), 0.25);
  box-shadow: 0 12px 40px rgba(var(--accent-primary-rgb), 0.2);
}

.glass-v2 {
  background: var(--glass-light);
  backdrop-filter: blur(25px);
  border: 1px solid var(--glass-border);
  border-radius: 32px;
  padding: 24px; /* Mobile first */
  box-shadow: 0 40px 100px rgba(var(--black-rgb), 0.6);
}

@media (min-width: 768px) {
  .glass-v2 {
    padding: 48px;
  }
}

/* ============================================================
 * Editorial Aetherpunk – LANDING-VISUAL-02 (Brief v2.1)
 * Engraved card variant: scharfe Ecken, eingravierter Doppelrand,
 * keine Glas-Blur (Surface ist solide, kein Glasstil). Vier
 * CornerChevron-Komponenten werden vom GlassContainer automatisch
 * an den Ecken platziert – overflow: visible ist deshalb Pflicht.
 *
 * Reference: Persona_Quest_Landingpage_Visual_Brief.md §7.5, §9.1, §10.1.
 * ============================================================ */
.glass-engraved {
  position: relative;
  background: var(--surface-card);
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
  border-radius: 0;
  padding: var(--glass-container-padding, var(--spacing-6));
  overflow: visible;
  transition:
    border-color 0.3s var(--ease-out-expo),
    box-shadow 0.3s var(--ease-out-expo);
}

.glass-engraved:hover {
  border-color: var(--metal-platinum-strong);
  box-shadow: inset 0 0 0 1px var(--metal-platinum-strong);
}

/* Gold-Variante für Hero- und Signatur-Karten (Brief §9.1).
 * Verwendung über metal="gold" Prop am GlassContainer. */
.glass-engraved.is-gold {
  border: var(--engrave-gold);
  box-shadow: var(--engrave-gold-inset);
}

.glass-engraved.is-gold:hover {
  border-color: var(--metal-gold-strong);
  box-shadow: inset 0 0 0 1px var(--metal-gold-strong);
}
@keyframes spin { 100% { transform: rotate(360deg); } }
@keyframes spinReverse { 100% { transform: rotate(-360deg); } }

@keyframes pulseCore { 0% { transform: scale(0.8); opacity: 0.8; } 100% { transform: scale(1.2); opacity: 1; box-shadow: 0 0 30px white; } }
@keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } }
@keyframes pulse-indicator {
  0% { transform: scale(1); box-shadow: 0 0 0px var(--accent-secondary); border-color: rgba(var(--accent-secondary-rgb), 0.4); }
  50% { transform: scale(1.1); box-shadow: 0 0 12px var(--accent-secondary); border-color: rgba(var(--accent-secondary-rgb), 0.8); }
  100% { transform: scale(1); box-shadow: 0 0 0px var(--accent-secondary); border-color: rgba(var(--accent-secondary-rgb), 0.4); }
}

@keyframes floatEmoji { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-15px); } }

@keyframes slideInFromRight {
    0% { transform: translateX(50px); opacity: 0; }
    100% { transform: translateX(0); opacity: 1; }
}

@keyframes slideOutToLeft {
    0% { transform: translateX(0); opacity: 1; }
    100% { transform: translateX(-50px); opacity: 0; }
}

@keyframes slideUp {
  0% { transform: translateY(20px); opacity: 0; }
  100% { transform: translateY(0); opacity: 1; }
}

@keyframes creatureSubtleBreath {
  0% { transform: scale(1.0); }
  100% { transform: scale(1.05); }
}

@keyframes creatureBreath {
  0%, 100% { transform: scale(1) translateY(0px); }
  50% { transform: scale(1.03) translateY(-4px); }
}

@keyframes creatureReveal {
  0% {
    opacity: 0;
    filter: blur(20px) brightness(2);
    transform: scale(0.85);
  }
  60% {
    opacity: 1;
    filter: blur(2px) brightness(1.3);
    transform: scale(1.04);
  }
  100% {
    opacity: 1;
    filter: blur(0px) brightness(1);
    transform: scale(1);
  }
}

@keyframes auraGlow {
  0%, 100% { opacity: 0.5; transform: scale(1); }
  50% { opacity: 0.85; transform: scale(1.08); }
}

@keyframes shadowGlowRotate {
  0% { transform: scale(1); opacity: 0.6; filter: hue-rotate(0deg); }
  50% { transform: scale(1.02); opacity: 1; filter: hue-rotate(30deg); }
  100% { transform: scale(1); opacity: 0.6; filter: hue-rotate(0deg); }
}

@keyframes tabReveal {
  to { opacity: 1; transform: translateY(0); }
}

@keyframes pulseIcon { 
  0% { transform: scale(0.9); opacity: 0.7; } 
  100% { transform: scale(1.1); opacity: 1; } 
}

@keyframes dotPulse {
  0%, 100% { transform: scale(0.5); opacity: 0.3; }
  50% { transform: scale(1.2); opacity: 1; }
}

@keyframes rgb-glitch {
  0%   { filter: none; }
  20%  { 
    filter: drop-shadow(-2px 0 0 rgba(var(--danger-rgb), 0.7))
            drop-shadow(2px 0 0 rgba(var(--accent-secondary-rgb), 0.7)); 
    transform: translateX(1px); 
  }
  40%  { 
    filter: drop-shadow(2px 0 0 rgba(var(--danger-rgb), 0.5))
            drop-shadow(-2px 0 0 rgba(var(--accent-secondary-rgb), 0.5)); 
    transform: translateX(-1px); 
  }
  60%  { 
    filter: drop-shadow(-1px 0 0 rgba(var(--danger-rgb), 0.3)); 
    transform: translateX(0.5px); 
  }
  100% { filter: none; transform: translateX(0); }
}

@keyframes liquid-text {
  0%   { letter-spacing: -0.1em; opacity: 0; filter: blur(8px); }
  60%  { letter-spacing: 0.05em; opacity: 0.8; filter: blur(2px); }
  100% { letter-spacing: 0; opacity: 1; filter: blur(0); }
}

@keyframes float-liquid {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-10px) rotate(1deg); }
  66% { transform: translateY(5px) rotate(-0.5deg); }
}

.animation-slide-in {
    animation: slideInFromRight 0.4s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

.animation-slide-out {
    animation: slideOutToLeft 0.4s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

/* Reduced Motion Support (R5) */
@media (prefers-reduced-motion: reduce) {
  .animation-slide-in, .animation-slide-out {
    animation: none;
    opacity: 1;
  }
}

.glitch-flash {
  animation: rgb-glitch 0.2s steps(2, end) infinite;
  filter: brightness(1.5) contrast(1.2);
  pointer-events: none;
}
/**
 * Sketchy Borders & Radical UI Textures
 * Uses SVG filters from index.html to create organic, hand-drawn effects.
 */

.sketchy-border {
    position: relative;
    border: 2px solid var(--glass-border);
    filter: url(#sketchy);
    transition: filter 0.3s var(--ease-out-expo);
}

.sketchy-border:hover {
    filter: url(#sketchy) brightness(1.2);
}

/* Radical Glass Card with Organic Edge */
.glass-card-radical {
    background: var(--glass-bg);
    backdrop-filter: blur(var(--glass-blur));
    border: 1px solid var(--glass-border);
    border-radius: 4px; /* Slightly sharper but then distorted by mask */
    position: relative;
    overflow: hidden;
}

.glass-card-radical::before {
    content: '';
    position: absolute;
    inset: 0;
    border: 1px solid var(--accent-primary);
    opacity: 0.3;
    pointer-events: none;
    filter: url(#sketchy);
}

/* Magnetic Button Base Style */
.btn-magnetic {
    position: relative;
    transition: transform 0.2s cubic-bezier(0.23, 1, 0.32, 1);
    will-change: transform;
}

.btn-magnetic:active {
    transform: scale(0.95);
}
/* Organic Aether Overlay */
.aether-overlay {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  z-index: 1;
  background: 
    radial-gradient(circle at 20% 30%, rgba(var(--accent-primary-rgb), 0.08) 0%, transparent 50%),
    radial-gradient(circle at 80% 70%, rgba(var(--accent-secondary-rgb), 0.05) 0%, transparent 50%);
  filter: blur(60px);
  animation: aetherPulse 15s infinite alternate ease-in-out;
}

@keyframes aetherPulse {
  0% { opacity: 0.4; transform: scale(1); }
  100% { opacity: 0.7; transform: scale(1.1); }
}

/* Dreamy Vignette */
.dreamy-vignette {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  z-index: 2;
  background: radial-gradient(circle, transparent 40%, rgba(0,0,0,0.6) 100%);
}

/* Premium Noise Grain */
.noise-grain {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  opacity: 0.02;
  pointer-events: none;
  z-index: 999;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
}

@keyframes fogDrift {
  0% { transform: scale(1) translate(0,0); }
  50% { transform: scale(1.1) translate(-2%, 3%); }
  100% { transform: scale(1.05) translate(2%, -3%); }
}

/* Technical grids removed in favor of organic Aether */

/* Glitch Effects (Spider-Verse inspired) */
.glitch-text {
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-weight: 900;
  position: relative;
  text-shadow: 
    -1px 0px 0px rgba(var(--danger-rgb), 0.3), 
    1px 0px 0px rgba(var(--accent-secondary-rgb), 0.3);
  transition: all 0.3s ease;
}

.glitch-text:hover {
  animation: rgb-glitch 0.6s infinite alternate;
  text-shadow: 
    -2px 0px 0px rgba(var(--danger-rgb), 0.5), 
    2px 0px 0px rgba(var(--accent-secondary-rgb), 0.5),
    0 0 10px rgba(255,255,255,0.2);
}

@keyframes rgb-glitch {
  0% { transform: translate(0); }
  25% { transform: translate(-1px, 1px); }
  50% { transform: translate(1px, -1px); }
  75% { transform: translate(-1px, -1px); }
  100% { transform: translate(1px, 1px); }
}

/* Sketchy Borders (Comic Book Style) */
.sketchy-border {
  border: 2px solid rgba(255, 255, 255, 0.5);
  background: var(--glass-bg);
  box-shadow: 
    -1px 0px 3px rgba(var(--danger-rgb), 0.4), 
    1px 0px 3px rgba(var(--accent-secondary-rgb), 0.4);
  transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.sketchy-border:hover {
  transform: scale(1.02) rotate(0.5deg);
  box-shadow: 
    -2px 0px 8px rgba(var(--danger-rgb), 0.6), 
    2px 0px 8px rgba(var(--accent-secondary-rgb), 0.6);
}

@media (max-width: 768px) {
  .noise-grain { opacity: 0.013; }
  .aether-overlay { filter: blur(40px); }
}
/* 
  Persona Quest: Refraction Glassmorphism (Glass 3.0) 
  Zweck: Lichtbrechungen, Mesh-Gradienten & Fluid-Elements
*/

.glass-refraction {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(200%);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(200%);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  position: relative;
  overflow: hidden;
}

.glass-refraction::before {
  content: "";
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(
    circle at center,
    rgba(var(--accent-primary-rgb), 0.1) 0%,
    transparent 50%
  );
  animation: refraction-rotate 10s linear infinite;
  pointer-events: none;
  z-index: 0;
}

@keyframes refraction-rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes plasma-flow {
  from { background-position: 0% center; }
  to { background-position: 200% center; }
}

/* Mesh Gradient for Section Backgrounds */
.mesh-bg-dynamic {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  background-color: var(--bg-dark);
  background-image: 
    radial-gradient(at 0% 0%, rgba(var(--accent-primary-rgb), 0.15) 0px, transparent 50%),
    radial-gradient(at 100% 100%, rgba(var(--accent-secondary-rgb), 0.15) 0px, transparent 50%);
  filter: blur(80px);
  opacity: 0.8;
  pointer-events: none;
}

/* Liquid Button Masking */
.btn-liquid {
  filter: var(--liquid-btn-filter);
  transition: transform 0.3s var(--ease-out-expo);
}

.btn-liquid:hover {
  transform: scale(1.05);
}

.btn-liquid:active {
  transform: scale(0.95);
}

.btn-liquid-content {
  position: relative;
  z-index: 2;
}

.btn-glow-aura {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: radial-gradient(circle at center, rgba(var(--accent-primary-rgb), 0.4), transparent 70%);
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 1;
}

.btn-liquid:hover .btn-glow-aura {
  opacity: 1;
}

/* Responsiveness (R5) */
@media (max-width: 768px) {
    .glass-refraction {
        backdrop-filter: blur(8px) saturate(160%);
        -webkit-backdrop-filter: blur(8px) saturate(160%);
    }
    
    .mesh-bg-dynamic {
        filter: blur(40px);
        opacity: 0.6;
    }
}

@media (max-width: 480px) {
    .plasma-text {
        animation-duration: 4s; /* Slower on mobile for performance */
    }
}
/* ═══════════════════════════════════════════════════════════════════════
   Design System: Chips & Badges (Shared)
   Standardized indicators for metadata, status, and tags.
   ═══════════════════════════════════════════════════════════════════════ */

.chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: var(--spacing-1) var(--spacing-3);
  border-radius: var(--radius-pill);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  background: var(--surface-glass);
  border: 1px solid var(--glass-border);
  color: var(--text-secondary);
  transition: all var(--transition-fast);
  white-space: nowrap;
}

/* Variants */
.chip-primary {
  border-color: rgba(var(--accent-primary-rgb), 0.3);
  color: var(--accent-primary);
}

.chip-secondary {
  border-color: rgba(var(--accent-secondary-rgb), 0.3);
  color: var(--accent-secondary);
}

.chip-mystic {
  border-color: rgba(var(--accent-mystic-rgb), 0.3);
  color: var(--accent-mystic);
}

.chip-success {
  border-color: rgba(var(--success-rgb), 0.3);
  color: var(--success);
}

.chip-warning {
  border-color: rgba(var(--warning-rgb), 0.3);
  color: var(--warning);
}

.chip-error {
  border-color: rgba(var(--error-rgb), 0.3);
  color: var(--error);
}

.chip-info {
  border-color: rgba(var(--accent-primary-rgb), 0.3);
  color: var(--accent-primary);
}

.chip-outline {
  background: transparent;
}

.chip-glass {
  backdrop-filter: blur(var(--glass-blur));
  -webkit-backdrop-filter: blur(var(--glass-blur));
}

/* Icon Support */
.chip-icon {
  margin-right: var(--spacing-1);
  font-size: 1.2em;
}

/* Stat Chip specific (from Hub) */
.stat-chip {
  display: flex;
  align-items: center;
  gap: var(--spacing-2);
  padding: var(--spacing-3) var(--spacing-4);
  border-radius: var(--radius-md);
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  flex: 1;
}

.stat-chip .value {
  display: block;
  font-size: var(--text-base);
  font-weight: 600;
  color: var(--text-primary);
  line-height: 1.2;
}

.stat-chip .label {
  display: block;
  font-size: var(--text-xs);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-muted);
  font-family: var(--font-mono);
}

/* ── Responsiveness ────────────────────────────────────────────────── */
@media (max-width: 480px) {
  .stat-chip {
    padding: var(--spacing-2) var(--spacing-3);
  }

  .stat-chip .value {
    font-size: var(--text-sm);
  }
}

/* ============================================================
 * Editorial Aetherpunk – LANDING-VISUAL-02 (Brief v2.1)
 * Aetherpunk Chip: rechteckig statt Pill, Mono-Caps mit Punkt-
 * Indikator. Default Platin (neutral), is-active aktiviert
 * Gold (Premium/Active), aria-disabled='true' aktiviert Muted-State.
 *
 * Reference: Persona_Quest_Landingpage_Visual_Brief.md §8.4, §11.2.
 * ============================================================ */
.chip-aetherpunk {
  background: transparent;
  border: 1px solid var(--metal-platinum-border);
  box-shadow: inset 0 0 0 1px var(--metal-platinum-inset);
  border-radius: 2px;
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 0.5625rem; /* 9px per Brief §8.4 */
  letter-spacing: var(--ls-mono-chip);
  color: var(--text-aether-body);
  padding: 6px 14px;
  gap: 8px;
  text-transform: uppercase;
  transition:
    border-color 0.3s var(--ease-out-expo),
    box-shadow 0.3s var(--ease-out-expo),
    color 0.3s var(--ease-out-expo);
}

.chip-aetherpunk::before {
  content: '';
  display: inline-block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--metal-platinum);
  flex-shrink: 0;
}

/* Active/Premium-State: Gold-Akzent */
.chip-aetherpunk.is-active {
  background: rgba(214, 184, 122, 0.04);
  border-color: var(--metal-gold-border);
  box-shadow: inset 0 0 0 1px var(--metal-gold-inset);
  color: var(--metal-gold);
}

.chip-aetherpunk.is-active::before {
  background: var(--metal-gold);
}

/* Muted/Disabled-State (Chip ist <div>, nicht <button> – daher aria-disabled) */
.chip-aetherpunk[aria-disabled='true'] {
  border-color: rgba(110, 113, 118, 0.4);
  box-shadow: none;
  color: var(--text-aether-faint);
  cursor: not-allowed;
}

.chip-aetherpunk[aria-disabled='true']::before {
  background: var(--text-aether-faint);
}
/* ═══════════════════════════════════════════════════════════════════════
   Persona Quest – Inputs (shared)
   Architectural-Variante (Editorial Aetherpunk, LANDING-VISUAL-02 v2.1):
   Top/Bottom-Hairlines in Platin, vier L-förmige Eckticks, Italic-Serif-
   Placeholder, Mono-Caps-Label.

   Auth-Variante (.auth-input / .auth-field-label / .input-group) liegt
   weiterhin in screens/AuthScreen.css und wird nur dort geladen. Refactor
   in diese Datei kann später erfolgen, wenn der IntroScreen-Rebuild läuft.

   Reference: Persona_Quest_Landingpage_Visual_Brief.md §10.4, §11.2.
   ═══════════════════════════════════════════════════════════════════════ */

/* Architectural Field Label (Mono-Caps, weite Spreizung) */
.architectural-field-label {
  display: block;
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 0.5625rem; /* 9px */
  letter-spacing: var(--ls-mono-eyebrow);
  text-transform: uppercase;
  color: var(--text-aether-faint);
  margin: 0 0 12px;
}

/* Architectural Field Wrapper (trägt Hairlines + Eckticks) */
.architectural-field {
  position: relative;
  border-top: 1px solid rgba(169, 176, 187, 0.38);
  border-bottom: 1px solid rgba(169, 176, 187, 0.38);
  padding: 11px 6px;
  transition: border-color 0.3s var(--ease-out-expo);
}

.architectural-field:focus-within {
  border-top-color: var(--metal-platinum-strong);
  border-bottom-color: var(--metal-platinum-strong);
}

/* Eckticks (L-förmig, 6×6) – Basis */
.architectural-tick {
  position: absolute;
  width: 6px;
  height: 6px;
  pointer-events: none;
}

.architectural-tick::before,
.architectural-tick::after {
  content: '';
  position: absolute;
  background: var(--metal-platinum-strong);
}

.architectural-tick::before {
  width: 6px;
  height: 1px;
}

.architectural-tick::after {
  width: 1px;
  height: 6px;
}

/* Eckticks – Positionen pro Ecke */
.architectural-tick.tl { top: -1px; left: -3px; }
.architectural-tick.tl::before { top: 0; left: 0; }
.architectural-tick.tl::after { top: 0; left: 0; }

.architectural-tick.tr { top: -1px; right: -3px; }
.architectural-tick.tr::before { top: 0; right: 0; }
.architectural-tick.tr::after { top: 0; right: 0; }

.architectural-tick.bl { bottom: -1px; left: -3px; }
.architectural-tick.bl::before { bottom: 0; left: 0; }
.architectural-tick.bl::after { bottom: 0; left: 0; }

.architectural-tick.br { bottom: -1px; right: -3px; }
.architectural-tick.br::before { bottom: 0; right: 0; }
.architectural-tick.br::after { bottom: 0; right: 0; }

/* Das eigentliche <input> Element */
.architectural-input {
  width: 100%;
  background: transparent;
  border: 0;
  outline: none;
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-style: italic;
  font-size: 1rem; /* 16px */
  font-weight: 400;
  letter-spacing: 0.005em;
  padding: 0;
}

.architectural-input::placeholder {
  color: var(--text-aether-faint);
  font-style: italic;
  opacity: 1; /* Firefox setzt sonst 0.54 */
}

/* Error-State für Architectural-Variante */
.input-group-architectural.has-error .architectural-field {
  border-top-color: rgba(244, 63, 94, 0.5);
  border-bottom-color: rgba(244, 63, 94, 0.5);
}

.input-group-architectural.has-error .architectural-tick::before,
.input-group-architectural.has-error .architectural-tick::after {
  background: rgba(244, 63, 94, 0.6);
}

/* Disabled-State */
.architectural-input:disabled {
  color: var(--text-aether-faint);
  cursor: not-allowed;
}

.architectural-input:disabled ~ .architectural-tick::before,
.architectural-input:disabled ~ .architectural-tick::after {
  opacity: 0.4;
}
.arcane-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 999;
  opacity: 0.6;
  mix-blend-mode: screen;
}
.pq-surface-frame {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(216, 189, 122, 0.16);
  background:
    linear-gradient(180deg, rgba(14, 17, 25, 0.82), rgba(5, 6, 10, 0.9)),
    rgba(6, 8, 13, 0.88);
  box-shadow:
    0 28px 84px rgba(0, 0, 0, 0.48),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.pq-surface-frame::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(216, 189, 122, 0.2), transparent 18%, transparent 82%, rgba(216, 189, 122, 0.14)),
    linear-gradient(180deg, rgba(255, 255, 255, 0.06), transparent 18%);
  opacity: 0.36;
}

.pq-surface-frame::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    radial-gradient(1px 1px at 12% 18%, rgba(255, 255, 255, 0.34), transparent 60%),
    radial-gradient(1px 1px at 64% 72%, rgba(255, 255, 255, 0.2), transparent 60%),
    radial-gradient(1px 1px at 86% 28%, rgba(216, 189, 122, 0.24), transparent 60%);
  opacity: 0.18;
  mix-blend-mode: screen;
}

.pq-mono-label {
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  line-height: 1.2;
  text-transform: uppercase;
}

.pq-brass-button {
  border: 1px solid rgba(216, 189, 122, 0.24);
  background:
    linear-gradient(180deg, rgba(216, 189, 122, 0.16), rgba(216, 189, 122, 0.08)),
    rgba(8, 10, 15, 0.72);
  color: rgba(255, 247, 224, 0.92);
  box-shadow:
    0 12px 32px rgba(0, 0, 0, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
/* ═══════════════════════════════════════════════════════════════════════
   Deco-Frame – Geteilte „Deco-Rahmen + persönliche Farbe"-Bausteine
   Eine Grammatik für Landingpage, Essenzreport und Hub.
   Ref: Persona_Quest_Unified_Visual_Language_2026-06-14.md

   Schicht A (Rahmen): Gold/Platin-Gravur, Graphit-Panels  → Einheit
   Schicht B (Akzent): persönliche Signal-Farbe (--pq-*/--accent*) → Identität
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Panel: Graphit-Karte mit Platin-Gravur-Doppelrand ─────────────── */
.deco-panel {
  position: relative;
  border: var(--engrave-platinum);
  border-radius: var(--panel-radius);
  background: var(--panel-bg);
  box-shadow: var(--panel-engrave), var(--panel-shadow);
}

/* Gold-Variante – „verdiente" Akzentpanels (CTA-Karten, Signatur). */
.deco-panel--gold {
  border: var(--engrave-gold);
  background: var(--panel-bg-strong);
  box-shadow: var(--panel-engrave-gold), var(--panel-shadow);
}

/* Persona-Variante – Rahmen bleibt, persönlicher Akzent leuchtet. */
.deco-panel--accent {
  border-color: var(--accent-line);
  box-shadow:
    inset 0 0 0 1px var(--accent-veil-faint),
    var(--panel-shadow);
}

/* ── Eck-Ticks (architektonische Marke) – opt-in ──────────────────── */
.deco-panel--ticked::before,
.deco-panel--ticked::after {
  content: '';
  position: absolute;
  width: 11px;
  height: 11px;
  border: 1px solid var(--metal-gold-border);
  opacity: var(--deco-ornament-level);
  pointer-events: none;
}

.deco-panel--ticked::before {
  top: 7px;
  left: 7px;
  border-right: 0;
  border-bottom: 0;
}

.deco-panel--ticked::after {
  right: 7px;
  bottom: 7px;
  border-left: 0;
  border-top: 0;
}

/* ── Haarlinie mit End-Tick (Trenner / Kapitelmarke) ──────────────── */
.deco-rule {
  position: relative;
  height: 1px;
  border: 0;
  background: linear-gradient(
    to right,
    var(--metal-gold) 0%,
    var(--metal-platinum-strong) 100%
  );
  opacity: calc(0.5 + 0.5 * var(--deco-ornament-level));
}

.deco-rule::before {
  content: '';
  position: absolute;
  left: 0;
  top: -3px;
  width: 1px;
  height: 7px;
  background: var(--metal-gold);
}

/* ── Mono-Caps Eyebrow – editoriale Auszeichnung (persönlich getönt) ─ */
.deco-eyebrow {
  display: block;
  margin: 0 0 10px;
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--ls-mono-eyebrow);
  text-transform: uppercase;
  color: var(--accent-ink);
}

/* Platin-Variante des Eyebrows (rein strukturell, ohne Identität). */
.deco-eyebrow--platinum {
  color: var(--text-aether-faint);
}

/* ── Sichtbarer persönlicher Glow (Schicht B) ─────────────────────── */
.accent-glow {
  position: relative;
  isolation: isolate;
}

.accent-glow::after {
  content: '';
  position: absolute;
  inset: -1px;
  z-index: -1;
  border-radius: inherit;
  background: radial-gradient(120% 140% at 78% 0%, var(--accent-veil-soft), transparent 60%);
  opacity: var(--deco-ornament-level);
  pointer-events: none;
}

/* ── Interactive Signifiers (R11) ─────────────────────────────────── */
.deco-panel--interactive {
  cursor: pointer;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    transform var(--transition-fast);
}

.deco-panel--interactive:hover {
  border-color: var(--metal-gold-strong);
  box-shadow:
    var(--panel-engrave-gold),
    var(--panel-shadow),
    var(--accent-glow-visible);
  transform: translateY(-1px);
}

.deco-panel--interactive:focus-visible {
  outline: 1px solid var(--accent-line);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .deco-panel--interactive {
    transition: none;
  }

  .deco-panel--interactive:hover {
    transform: none;
  }
}

/* Mobile-first: Ornament-Ticks auf sehr schmalen Screens beruhigen. */
@media (max-width: 480px) {
  .deco-panel--ticked::before,
  .deco-panel--ticked::after {
    width: 8px;
    height: 8px;
  }
}


/* 3. Layout Layer: Structural Containers */
.container {
  width: 100%;
  max-width: 100%;
  min-height: 100vh;
  margin: 0 auto;
  background: var(--bg-dark);
  display: flex;
  flex-direction: column;
  position: relative;
  box-shadow: 0 0 100px rgba(var(--accent-primary-rgb), 0.1); /* Subtle glowing backdrop */
  overflow-x: hidden;
}

.screen {
  display: flex;
  flex: 1;
  flex-direction: column;
  width: 100%;
  padding: var(--spacing-4) var(--spacing-5) var(--spacing-10) var(--spacing-5);
}

/* Constrain text-heavy screens to maintain readability while letting the app container span the full width */
.intro-screen,
.scenario-content,
.loading-screen {
  width: 100%;
  max-width: 800px;
  margin: 0 auto;
  padding: 1rem;
}
/* Action Dock & Sticky CTAs (Mobile First) */
.action-dock {
  display: flex;
  gap: var(--spacing-3);
  flex-wrap: wrap;
  margin-top: var(--spacing-6);
}

@media (min-width: 768px) {
  .action-dock {
    gap: var(--spacing-5);
    margin-top: var(--spacing-10);
  }
}

.sticky-bottom-action {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 430px;
  padding: 0 var(--spacing-6) var(--spacing-8) var(--spacing-6);
  z-index: 50;
  display: flex;
  justify-content: center;
  pointer-events: none;
}

@media (min-width: 768px) {
  .sticky-bottom-action {
    padding-bottom: var(--spacing-12);
  }
}

.sticky-bottom-action .action-button {
  pointer-events: auto;
  position: relative;
  z-index: 2;
  margin-top: var(--spacing-10);
}

.sticky-fade-bg {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 180px;
  background: linear-gradient(to top, var(--bg-dark) 25%, transparent);
  z-index: 1;
  pointer-events: none;
}

@media (min-width: 600px) {
  .action-dock {
    flex-direction: row;
    max-width: 480px;
    bottom: var(--spacing-8);
  }
}

/* 4. Components Layer: Reusable UI Elements */
/* Progress Bar */
.progress-bar {
  width: 100%;
  height: 4px;
  background: rgba(255,255,255,0.05);
  position: sticky;
  top: 0;
  left: 0;
  z-index: 10;
}

.progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);
  width: 0%;
  transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
  box-shadow: 0 0 10px var(--accent-primary);
}

/* Mana Progress Bar (Gamification) */
.scenario-progress-glow {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 6px;
  background: var(--glass-border-faint);
  z-index: 100;
  box-shadow: 0 0 10px var(--glass-overlay);
  /* Needed for absolutely-positioned milestone markers */
  overflow: visible;
}

.scenario-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--success), var(--info), var(--accent-primary), var(--danger));
  background-size: 300% 100%;
  transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
  box-shadow: 0 0 15px currentColor;
  border-radius: 0 4px 4px 0;
  animation: manaPulse 4s infinite linear;
}

@keyframes manaPulse {
  0% { background-position: 0% 50%; filter: brightness(1) drop-shadow(0 0 5px var(--accent-primary)); }
  50% { background-position: 100% 50%; filter: brightness(1.3) drop-shadow(0 0 15px var(--accent-arcane)); }
  100% { background-position: 0% 50%; filter: brightness(1) drop-shadow(0 0 5px var(--accent-primary)); }
}

/* ─── PB-3: Quest Milestone Markers ─────────────────────────────────────────
   Dots appear at 25%, 50%, 75% on the progress bar.
   When the fill reaches a milestone, the dot pulses and the label glows.
   ───────────────────────────────────────────────────────────────────────── */
.progress-milestone {
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  pointer-events: none;
}

.milestone-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--glass-border-faint);
  border: 1.5px solid rgba(255, 255, 255, 0.15);
  transition: background 0.4s ease, box-shadow 0.4s ease, border-color 0.4s ease;
  position: relative;
  z-index: 2;
}

.progress-milestone.reached .milestone-dot {
  background: var(--accent-primary);
  border-color: rgba(255, 255, 255, 0.6);
  box-shadow: 0 0 12px var(--accent-primary), 0 0 4px rgba(255, 255, 255, 0.4);
  animation: milestonePulse 1.2s ease-out 1;
}

@keyframes milestonePulse {
  0%   { transform: scale(1);   box-shadow: 0 0 12px var(--accent-primary); }
  40%  { transform: scale(1.6); box-shadow: 0 0 24px var(--accent-primary), 0 0 8px rgba(255,255,255,0.5); }
  100% { transform: scale(1);   box-shadow: 0 0 12px var(--accent-primary); }
}

.milestone-label {
  font-size: 0.5rem;
  font-family: var(--font-mono, monospace);
  letter-spacing: 0.05em;
  color: rgba(255, 255, 255, 0.2);
  transition: color 0.4s ease;
  margin-top: 3px;
  white-space: nowrap;
}

.progress-milestone.reached .milestone-label {
  color: var(--accent-primary);
  text-shadow: 0 0 8px var(--accent-primary);
}

@media (prefers-reduced-motion: reduce) {
  .progress-milestone.reached .milestone-dot {
    animation: none;
  }
}
.scenario-card {
  background: rgba(10, 10, 22, 0.55);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-top: 1px solid var(--glass-border-faint);
  border-radius: 16px;
  padding: 16px;
  box-shadow:
    0 8px 32px rgba(0, 0, 0, 0.3),
    inset 0 0 0 1px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.04);
  margin-top: 56px;
  margin-bottom: 16px;
  position: relative;
  overflow: hidden;
  transition: box-shadow 0.8s ease;
}

@media (min-width: 768px) {
  .scenario-card {
    padding: 24px;
    border-radius: 20px;
    margin-bottom: 24px;
  }
}

.scenario-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);
}

.scenario-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}

.scenario-badge {
  font-size: 11px;
  font-family: 'Outfit', sans-serif;
  font-weight: 800;
  color: rgba(255, 255, 255, 0.8);
  background: rgba(var(--scene-glow-rgb, 167, 139, 250), 0.12);
  border: 1px solid rgba(var(--scene-glow-rgb, 167, 139, 250), 0.3);
  padding: 4px 10px;
  border-radius: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  transition: background 0.6s ease, border-color 0.6s ease;
}

.scenario-counter {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
}

.scenario-setting {
  font-size: 13px;
  color: var(--scene-glow-color, var(--accent-secondary));
  font-weight: 600;
  line-height: 1.5;
  text-transform: uppercase;
  letter-spacing: 1px;
  opacity: 0.85;
  transition: color 0.6s ease;
}

.scenario-situation {
  margin-top: 8px;
  font-size: 14px;
  color: var(--text-main);
  line-height: 1.6;
  margin-bottom: 20px;
}

@media (min-width: 768px) {
  .scenario-situation {
    font-size: 16px;
    margin-bottom: 32px;
  }
}

/* Options container adjusted */
.options-container {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 8px;
}

@media (min-width: 768px) {
  .options-container {
    gap: 12px;
  }
}

.option-button {
  background: rgba(10, 10, 22, 0.4);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 12px;
  padding: 14px 16px;
  font-size: 14px;
  color: var(--text-main);
  text-align: left;
  cursor: pointer;
  transition: all 0.3s var(--ease-out-expo);
  position: relative;
  overflow: hidden;
  font-family: 'Inter', sans-serif;
  font-weight: 500;
  line-height: 1.5;
  flex: 1;
}

@media (min-width: 768px) {
  .option-button {
    font-size: 15px;
    padding: 16px 20px;
  }
}

.option-button:hover:not(:disabled) {
  background: rgba(var(--scene-glow-rgb, 167, 139, 250), 0.08);
  border-color: rgba(var(--scene-glow-rgb, 167, 139, 250), 0.2);
  transform: translateY(-2px);
  box-shadow:
    0 4px 20px rgba(0, 0, 0, 0.25),
    0 0 15px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.06);
}

.option-button.selected {
  background: rgba(var(--scene-glow-rgb, 167, 139, 250), 0.12);
  border-color: var(--scene-glow-color, var(--accent-primary));
  box-shadow:
    0 0 20px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.15) inset,
    0 0 20px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.1);
}

.option-stat-fill {
  position: absolute;
  top: 0; left: 0; bottom: 0;
  background: rgba(var(--scene-glow-rgb, 167, 139, 250), 0.1);
  z-index: 0;
  transition: width 0.8s var(--ease-out-expo);
}

.option-button.selected .option-stat-fill {
  background: rgba(var(--scene-glow-rgb, 167, 139, 250), 0.2);
}

.option-content {
  position: relative;
  z-index: 1;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.stat-label {
  font-family: 'Outfit', sans-serif;
  font-weight: 700;
  color: white;
  background: rgba(var(--glass-overlay-rgb), 0.4);
  padding: 4px 10px;
  border-radius: 6px;
  margin-left: 12px;
  font-size: 13px;
}

.option-button.dimmed {
  opacity: 0.3;
  transform: scale(0.98);
  pointer-events: none;
  cursor: not-allowed;
}



.opt-letter {
  display: inline-flex;
  width: 26px;
  height: 26px;
  align-items: center;
  justify-content: center;
  background: var(--glass-border);
  border-radius: 6px;
  margin-right: 12px;
  font-size: 12px;
  color: var(--text-muted);
  transition: all 0.3s;
  font-weight: 800;
}

.option-button.selected .opt-letter {
  background: var(--scene-glow-color, var(--accent-primary));
  color: white;
  box-shadow: 0 0 12px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.4);
}

/* Stats Feedback */
.stats-feedback-container {
  animation: slideUp 0.5s var(--ease-out-expo) forwards;
  position: sticky;
  bottom: 0;
  background: var(--bg-dark);
  padding: 16px 0;
  margin-top: 12px;
  z-index: 10;
}

.stats-info {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  background: rgba(var(--success-rgb), 0.08);
  border: 1px solid rgba(var(--success-rgb), 0.2);
  padding: 14px 18px;
  border-radius: 14px;
  font-size: 14px;
  color: var(--color-match-light, var(--success));
  line-height: 1.5;
  margin-bottom: 4px;
}

/* Visualization Navigation Dots (Fix for Ghost Dots) */
.viz-nav-dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  padding: 0;
  margin: 16px 0 0;
  list-style: none; /* Crucial: Removes browser default bullets */
}

.viz-dot {
  height: 8px;
  border-radius: 4px;
  background: var(--glass-border);
  cursor: pointer;
  transition: all 0.4s var(--ease-out-expo);
  border: 1px solid transparent;
}

.viz-dot:hover {
  background: var(--accent-secondary);
  box-shadow: 0 0 10px var(--accent-secondary);
}

.viz-dot.active {
  background: var(--accent-primary);
  box-shadow: 0 0 15px var(--accent-primary);
  border-color: var(--pure-white);
}

@media (min-width: 768px) {
  .viz-nav-dots {
    margin-top: 24px;
    gap: 12px;
  }
}

/* ─── Make quiz-screen ancestors transparent so atmosphere shows ──────────
   Same pattern as the result page: strip solid backgrounds when the quiz
   question-screen is active so the fixed atmosphere layer is visible.
   ───────────────────────────────────────────────────────────────────────── */
body:has(.question-screen) {
  background: #0a0a15;
}
body:has(.question-screen) .container {
  background: transparent;
  box-shadow: none;
}

/* ─── Scenario Atmosphere Overlay ───────────────────────────────────────────
   Life-is-Strange-inspired mood lighting. Multi-layer atmospheric system:
   1. Main element: base gradient wash (scene-bg-tint)
   2. ::before: secondary radial bloom from bottom corner
   3. ::after: vignette + edge breathing
   Fades in with framer-motion opacity on the parent .question-screen.
   ───────────────────────────────────────────────────────────────────────── */
.scenario-atmosphere {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  /* Layer 1: Primary mood wash – large ellipse from top, plus subtle bottom fill */
  background:
    radial-gradient(
      ellipse 120% 70% at 50% 5%,
      rgba(var(--scene-glow-rgb, 167, 139, 250), 0.14),
      transparent 65%
    ),
    radial-gradient(
      ellipse 80% 50% at 50% 100%,
      rgba(var(--scene-glow-rgb, 167, 139, 250), 0.06),
      transparent 60%
    ),
    radial-gradient(
      circle at 50% 50%,
      var(--scene-bg-tint, transparent),
      transparent 80%
    );
  transition: background 1.2s var(--ease-out-expo, cubic-bezier(0.19, 1, 0.22, 1));
}

/* Layer 2: Soft directional bloom – drifts gently via animation */
.scenario-atmosphere::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse 60% 80% at 15% 80%,
      rgba(var(--scene-glow-rgb, 167, 139, 250), 0.08),
      transparent 55%
    ),
    radial-gradient(
      ellipse 50% 60% at 85% 20%,
      rgba(var(--scene-glow-rgb, 167, 139, 250), 0.05),
      transparent 50%
    );
  opacity: 0.8;
  animation: atm-scene-drift 12s ease-in-out infinite alternate;
}

/* Layer 3: Cinematic vignette + edge glow breathing */
.scenario-atmosphere::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse 75% 70% at 50% 50%,
      transparent 40%,
      rgba(0, 0, 0, 0.35) 100%
    );
  animation: atm-scene-breathe 8s ease-in-out infinite;
}

@keyframes atm-scene-drift {
  0%   { transform: translate(0, 0) scale(1); }
  100% { transform: translate(2%, -1.5%) scale(1.04); }
}

@keyframes atm-scene-breathe {
  0%, 100% { opacity: 0.7; }
  50%      { opacity: 0.9; }
}

/* Scene-color accent on the top border bar of scenario-card */
.scenario-card::before {
  background: linear-gradient(
    90deg,
    var(--scene-glow-color, var(--accent-primary)) 0%,
    transparent 100%
  );
  opacity: 0.7;
  transition: background 0.6s var(--ease-out-expo, cubic-bezier(0.19, 1, 0.22, 1));
}

/* Subtle scene-colored glow around the card */
.scenario-card::after {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  background: transparent;
  box-shadow:
    0 0 40px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.08),
    0 0 80px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.04);
  pointer-events: none;
  z-index: -1;
  transition: box-shadow 0.8s ease;
}

/* ─── Easter Egg Hint ────────────────────────────────────────────────────────
   A subtle ✦ dot next to the path indicator. Hovering for 1.5 s reveals a
   tooltip with a cultural reference from designNotes.easterEggs[].
   ───────────────────────────────────────────────────────────────────────── */
.easter-egg-trigger {
  position: relative;
  display: inline-flex;
  align-items: center;
  cursor: help;
  outline: none;
}

.easter-egg-dot {
  font-size: 0.6rem;
  color: var(--scene-glow-color, var(--accent-primary));
  opacity: 0.4;
  transition:
    opacity 0.35s var(--ease-out-expo, cubic-bezier(0.19, 1, 0.22, 1)),
    transform 0.35s var(--ease-out-expo, cubic-bezier(0.19, 1, 0.22, 1));
  line-height: 1;
}

.easter-egg-trigger:hover .easter-egg-dot,
.easter-egg-trigger:focus .easter-egg-dot {
  opacity: 1;
  transform: scale(1.4) rotate(20deg);
}

.easter-egg-hint {
  position: absolute;
  /* Float above and to the right of the trigger dot */
  bottom: calc(100% + 10px);
  right: -4px;
  width: 230px;
  padding: 10px 14px;
  background: rgba(6, 4, 18, 0.94);
  border: 1px solid rgba(var(--scene-glow-rgb, 167, 139, 250), 0.35);
  border-radius: 10px;
  font-size: 0.68rem;
  font-family: var(--font-mono, monospace);
  color: var(--scene-glow-color, var(--accent-primary));
  line-height: 1.55;
  white-space: normal;
  box-shadow:
    0 6px 28px rgba(0, 0, 0, 0.55),
    0 0 18px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.14);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  z-index: 200;
  pointer-events: none;
}

/* Small downward arrow */
.easter-egg-hint::after {
  content: '';
  position: absolute;
  bottom: -6px;
  right: 10px;
  width: 10px;
  height: 6px;
  background: rgba(6, 4, 18, 0.94);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  border-bottom: 1px solid rgba(var(--scene-glow-rgb, 167, 139, 250), 0.35);
}

/* Prefix icon inside the hint text */
.easter-egg-hint::before {
  content: '✦ ';
  opacity: 0.55;
  font-size: 0.6rem;
}

/* Focus ring for keyboard users */
.easter-egg-trigger:focus-visible {
  outline: 1px dashed rgba(var(--scene-glow-rgb, 167, 139, 250), 0.5);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Reduced-motion: skip hint animation */
@media (prefers-reduced-motion: reduce) {
  .easter-egg-hint {
    transition: none;
  }
  .easter-egg-dot {
    transition: none;
  }
  .scenario-atmosphere {
    transition: none;
  }
}

/* -----------------------------------------------------------------------
   Scene Visual System v1
   Shared encounter surface for Essence, Kodex and later Sphere scenes.
   The background stays cinematic; the UI reads as an engraved artifact.
   ----------------------------------------------------------------------- */

html:has(.scene-visual-system-v1),
body:has(.scene-visual-system-v1) {
  background:
    radial-gradient(circle at 50% 0%, rgba(var(--scene-glow-rgb, 167, 139, 250), 0.16), transparent 42%),
    #05060a;
  height: 100svh;
  overflow: hidden;
  overflow-x: hidden;
  max-width: 100%;
}

body:has(.scene-visual-system-v1) .footer-arcane {
  display: none;
}

.question-screen.scene-visual-system-v1 {
  position: relative;
  isolation: isolate;
  box-sizing: border-box;
  width: 100%;
  min-height: 100svh;
  display: grid;
  align-items: center;
  padding: clamp(28px, 5vw, 64px);
  overflow: hidden;
  overflow-x: hidden;
  color: var(--text-aether-primary, #f1ede1);
}

@media (min-width: 821px) {
  html:has(.scene-visual-system-v1),
  body:has(.scene-visual-system-v1) {
    height: 100svh;
    overflow: hidden;
    overflow-x: hidden;
  }

  body:has(.scene-visual-system-v1) .app-container,
  body:has(.scene-visual-system-v1) .content-wrapper,
  body:has(.scene-visual-system-v1) .container {
    height: 100svh;
    min-height: 100svh;
    overflow: hidden;
  }

  .question-screen.scene-visual-system-v1 {
    height: 100svh;
    min-height: 0;
    padding-block: clamp(22px, 3.4vh, 40px);
  }
}

@media (min-width: 821px) and (max-height: 760px) {
  .question-screen.scene-visual-system-v1 {
    padding-block: 14px;
  }

  .scene-visual-system-v1 .scenario-content {
    gap: 8px;
  }

  .scene-visual-system-v1 .scenario-card {
    padding: 16px 24px;
  }

  .scene-visual-system-v1 .scenario-header {
    margin-bottom: 10px;
  }

  .scene-visual-system-v1 .scenario-setting {
    font-size: clamp(13px, 1vw, 15px);
    line-height: 1.52;
  }

  .scene-visual-system-v1 .scenario-situation {
    margin-top: 8px;
    margin-bottom: 14px;
    font-size: clamp(15px, 1.08vw, 17px);
    line-height: 1.55;
  }

  .scene-visual-system-v1 .options-container {
    gap: 8px;
  }

  .scene-visual-system-v1 .option-button {
    min-height: clamp(48px, 6vh, 56px);
  }

  .scene-visual-system-v1 .option-content {
    padding: 12px 18px;
    font-size: clamp(13px, 1vw, 15px);
    line-height: 1.45;
  }
}

.scene-visual-system-v1 .lis-double-exposure {
  position: absolute;
  z-index: 0;
  inset: 0;
}

.scene-visual-system-v1 .lis-double-exposure::before {
  inset: -4%;
  opacity: 0.68;
  filter: brightness(0.5) contrast(1.08) saturate(0.58) sepia(0.16);
  transform: scale(1.035);
}

.scene-visual-system-v1 .lis-double-exposure::after {
  inset: -8%;
  opacity: 0.18;
  mix-blend-mode: screen;
  filter: blur(16px) brightness(1.1) saturate(0.7);
  background:
    radial-gradient(circle at 18% 26%, rgba(214, 184, 122, 0.28), transparent 34%),
    radial-gradient(circle at 72% 36%, rgba(var(--scene-glow-rgb, 167, 139, 250), 0.42), transparent 42%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
  animation: double-exposure-drift 22s infinite alternate ease-in-out;
}

.scene-visual-system-v1 .scenario-atmosphere {
  z-index: 1;
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.72), rgba(3, 5, 10, 0.12) 46%, rgba(3, 5, 10, 0.76)),
    radial-gradient(circle at 50% 36%, rgba(255, 255, 255, 0.08), transparent 28%),
    radial-gradient(ellipse 90% 72% at 52% 24%, rgba(var(--scene-glow-rgb, 167, 139, 250), 0.2), transparent 58%),
    radial-gradient(ellipse 62% 42% at 52% 100%, rgba(214, 184, 122, 0.09), transparent 62%);
}

.scene-visual-system-v1 .scenario-atmosphere::before {
  background:
    linear-gradient(180deg, rgba(3, 5, 10, 0.12), rgba(3, 5, 10, 0.72)),
    radial-gradient(ellipse 48% 60% at 16% 82%, rgba(214, 184, 122, 0.1), transparent 58%),
    radial-gradient(ellipse 42% 54% at 84% 20%, rgba(var(--scene-glow-rgb, 167, 139, 250), 0.12), transparent 54%);
  opacity: 0.95;
}

.scene-visual-system-v1 .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 70% 66% at 50% 44%, transparent 30%, rgba(0, 0, 0, 0.72) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.035), transparent 18%, transparent 82%, rgba(255, 255, 255, 0.03));
}

.scene-visual-system-v1[data-scene-id="1"] .lis-double-exposure::before {
  opacity: 0.8;
  filter: brightness(0.58) contrast(1.08) saturate(0.82) sepia(0.08);
  transform: scale(1.02);
}

.scene-visual-system-v1[data-scene-id="1"] .lis-double-exposure::after {
  opacity: 0.28;
  filter: blur(10px) brightness(1.08) saturate(0.95);
  background:
    radial-gradient(circle at 72% 67%, rgba(230, 170, 94, 0.44), transparent 24%),
    radial-gradient(circle at 40% 22%, rgba(104, 190, 215, 0.22), transparent 38%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="1"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.7), rgba(3, 5, 10, 0.08) 48%, rgba(3, 5, 10, 0.58)),
    radial-gradient(ellipse 38% 44% at 72% 68%, rgba(214, 137, 76, 0.26), transparent 66%),
    radial-gradient(ellipse 72% 56% at 46% 22%, rgba(96, 176, 205, 0.18), transparent 62%),
    radial-gradient(ellipse 68% 54% at 50% 105%, rgba(214, 184, 122, 0.08), transparent 62%);
}

.scene-visual-system-v1[data-scene-id="1"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(
      102deg,
      transparent 0,
      transparent 18px,
      rgba(203, 239, 247, 0.06) 19px,
      transparent 21px
    ),
    radial-gradient(ellipse 44% 58% at 76% 72%, rgba(230, 171, 101, 0.12), transparent 60%);
  opacity: 0.9;
  animation: scene-rain-shift 11s linear infinite;
}

.scene-visual-system-v1[data-scene-id="1"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 70% 66% at 50% 44%, transparent 28%, rgba(0, 0, 0, 0.76) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.045), transparent 14%, transparent 86%, rgba(255, 255, 255, 0.035)),
    linear-gradient(180deg, transparent 0 58%, rgba(255, 255, 255, 0.035) 59%, transparent 62%);
}

.scene-visual-system-v1[data-scene-id="5"] .lis-double-exposure::before {
  opacity: 0.87;
  filter: brightness(0.6) contrast(1.12) saturate(0.78) sepia(0.02);
  transform: scale(1.014);
}

.scene-visual-system-v1[data-scene-id="5"] .lis-double-exposure::after {
  opacity: 0.24;
  filter: blur(10px) brightness(1.08) saturate(0.82);
  background:
    radial-gradient(circle at 72% 44%, rgba(111, 193, 218, 0.28), transparent 32%),
    radial-gradient(circle at 78% 72%, rgba(226, 171, 94, 0.16), transparent 30%),
    radial-gradient(circle at 56% 28%, rgba(174, 213, 226, 0.12), transparent 34%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="5"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.84), rgba(3, 5, 10, 0.34) 50%, rgba(3, 5, 10, 0.5)),
    radial-gradient(ellipse 42% 54% at 73% 46%, rgba(91, 172, 205, 0.18), transparent 62%),
    radial-gradient(ellipse 42% 42% at 79% 73%, rgba(218, 158, 82, 0.09), transparent 62%),
    radial-gradient(ellipse 56% 54% at 56% 26%, rgba(180, 214, 226, 0.06), transparent 64%);
}

.scene-visual-system-v1[data-scene-id="5"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(
      100deg,
      transparent 0,
      transparent 30px,
      rgba(156, 221, 231, 0.028) 31px,
      transparent 33px
    ),
    radial-gradient(ellipse 46% 58% at 72% 45%, rgba(110, 198, 221, 0.1), transparent 62%),
    radial-gradient(ellipse 40% 50% at 78% 72%, rgba(226, 171, 94, 0.06), transparent 58%);
  opacity: 0.82;
}

.scene-visual-system-v1[data-scene-id="5"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 78% 70% at 50% 44%, transparent 28%, rgba(0, 0, 0, 0.74) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.022), transparent 14%, transparent 88%, rgba(135, 216, 226, 0.034));
}

.scene-visual-system-v1[data-scene-id="7"] .lis-double-exposure::before {
  opacity: 0.9;
  filter: brightness(0.65) contrast(1.1) saturate(0.84);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="7"] .lis-double-exposure::after {
  opacity: 0.22;
  filter: blur(11px) brightness(1.06) saturate(0.86);
  background:
    radial-gradient(circle at 70% 48%, rgba(225, 166, 92, 0.28), transparent 27%),
    radial-gradient(circle at 62% 40%, rgba(78, 139, 177, 0.16), transparent 37%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="7"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 6, 11, 0.9), rgba(3, 6, 11, 0.4) 49%, rgba(3, 6, 11, 0.42)),
    radial-gradient(ellipse 42% 48% at 72% 49%, rgba(219, 154, 78, 0.16), transparent 63%),
    radial-gradient(ellipse 52% 60% at 64% 38%, rgba(61, 119, 158, 0.1), transparent 66%);
}

.scene-visual-system-v1[data-scene-id="7"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 38% 50% at 72% 50%, rgba(225, 166, 92, 0.08), transparent 61%),
    radial-gradient(ellipse 44% 58% at 60% 38%, rgba(77, 139, 177, 0.055), transparent 64%);
  opacity: 0.78;
}

.scene-visual-system-v1[data-scene-id="7"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 80% 72% at 53% 46%, transparent 29%, rgba(0, 0, 0, 0.7) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.015), transparent 16%, transparent 90%, rgba(214, 184, 122, 0.025));
}

.scene-visual-system-v1[data-scene-id="4"] .lis-double-exposure::before {
  opacity: 0.92;
  filter: brightness(0.72) contrast(1.08) saturate(0.88);
  transform: scale(1.01);
}

.scene-visual-system-v1[data-scene-id="4"] .lis-double-exposure::after {
  opacity: 0.2;
  filter: blur(12px) brightness(1.04) saturate(0.9);
  background:
    radial-gradient(ellipse 24% 42% at 68% 44%, rgba(231, 174, 92, 0.3), transparent 68%),
    radial-gradient(ellipse 30% 56% at 84% 50%, rgba(74, 111, 129, 0.14), transparent 72%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="4"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 5, 9, 0.86), rgba(2, 5, 9, 0.44) 44%, rgba(2, 5, 9, 0.12) 70%, rgba(2, 5, 9, 0.28)),
    radial-gradient(ellipse 28% 52% at 69% 45%, rgba(221, 154, 71, 0.17), transparent 70%),
    radial-gradient(ellipse 34% 58% at 86% 52%, rgba(71, 104, 119, 0.12), transparent 72%);
}

.scene-visual-system-v1[data-scene-id="4"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 34% 56% at 70% 46%, rgba(232, 166, 85, 0.1), transparent 68%),
    linear-gradient(180deg, rgba(103, 135, 148, 0.035), transparent 32%, rgba(0, 0, 0, 0.16));
  opacity: 0.74;
}

.scene-visual-system-v1[data-scene-id="4"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 74% at 58% 46%, transparent 32%, rgba(0, 0, 0, 0.68) 100%),
    linear-gradient(90deg, rgba(1, 4, 8, 0.18), transparent 52%, rgba(1, 4, 8, 0.08));
}

.scene-visual-system-v1[data-scene-id="8"] .lis-double-exposure::before {
  opacity: 0.86;
  filter: brightness(0.7) contrast(1.08) saturate(0.86) sepia(0.08);
  transform: scale(1.015);
}

.scene-visual-system-v1[data-scene-id="8"] .lis-double-exposure::after {
  opacity: 0.24;
  filter: blur(10px) brightness(1.06) saturate(0.9);
  background:
    radial-gradient(circle at 78% 54%, rgba(226, 177, 98, 0.4), transparent 30%),
    radial-gradient(circle at 54% 34%, rgba(94, 178, 204, 0.16), transparent 38%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="8"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.72), rgba(3, 5, 10, 0.22) 48%, rgba(3, 5, 10, 0.42)),
    radial-gradient(ellipse 36% 44% at 78% 56%, rgba(214, 159, 86, 0.2), transparent 66%),
    radial-gradient(ellipse 64% 52% at 48% 20%, rgba(86, 157, 188, 0.11), transparent 62%);
}

.scene-visual-system-v1[data-scene-id="8"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(
      96deg,
      transparent 0,
      transparent 24px,
      rgba(214, 184, 122, 0.035) 25px,
      transparent 27px
    ),
    radial-gradient(ellipse 46% 58% at 78% 58%, rgba(226, 171, 101, 0.13), transparent 60%);
  opacity: 0.78;
}

.scene-visual-system-v1[data-scene-id="8"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 74% 68% at 50% 44%, transparent 31%, rgba(0, 0, 0, 0.62) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.035), transparent 14%, transparent 88%, rgba(214, 184, 122, 0.035));
}

.scene-visual-system-v1[data-scene-id="10"] .lis-double-exposure::before {
  opacity: 0.92;
  filter: brightness(0.72) contrast(1.1) saturate(0.86);
  transform: scale(1.01);
}

.scene-visual-system-v1[data-scene-id="10"] .lis-double-exposure::after {
  opacity: 0.19;
  filter: blur(12px) brightness(1.04) saturate(0.9);
  background:
    radial-gradient(ellipse 28% 48% at 78% 43%, rgba(91, 177, 201, 0.23), transparent 70%),
    radial-gradient(ellipse 18% 30% at 69% 60%, rgba(202, 102, 94, 0.13), transparent 72%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="10"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 5, 10, 0.87), rgba(2, 5, 10, 0.45) 45%, rgba(2, 5, 10, 0.13) 72%, rgba(2, 5, 10, 0.3)),
    radial-gradient(ellipse 34% 54% at 79% 43%, rgba(79, 160, 188, 0.14), transparent 70%),
    radial-gradient(ellipse 20% 34% at 69% 60%, rgba(190, 88, 83, 0.08), transparent 72%);
}

.scene-visual-system-v1[data-scene-id="10"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 34% 56% at 79% 43%, rgba(99, 188, 211, 0.085), transparent 68%),
    radial-gradient(ellipse 18% 30% at 69% 60%, rgba(207, 103, 92, 0.045), transparent 70%);
  opacity: 0.72;
}

.scene-visual-system-v1[data-scene-id="10"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 58% 44%, transparent 31%, rgba(0, 0, 0, 0.72) 100%),
    linear-gradient(90deg, rgba(1, 4, 9, 0.18), transparent 54%, rgba(1, 4, 9, 0.09));
}

.scene-visual-system-v1[data-scene-id="11"] .lis-double-exposure::before {
  opacity: 0.88;
  filter: brightness(0.6) contrast(1.12) saturate(0.78) sepia(0.12);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="11"] .lis-double-exposure::after {
  opacity: 0.25;
  filter: blur(10px) brightness(1.08) saturate(0.82);
  background:
    radial-gradient(circle at 79% 43%, rgba(219, 164, 96, 0.32), transparent 27%),
    radial-gradient(circle at 66% 20%, rgba(100, 169, 196, 0.16), transparent 34%),
    radial-gradient(circle at 89% 30%, rgba(214, 184, 122, 0.12), transparent 28%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="11"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.82), rgba(3, 5, 10, 0.28) 50%, rgba(3, 5, 10, 0.44)),
    radial-gradient(ellipse 38% 44% at 79% 45%, rgba(212, 147, 77, 0.19), transparent 64%),
    radial-gradient(ellipse 46% 52% at 66% 20%, rgba(80, 145, 173, 0.13), transparent 62%),
    radial-gradient(ellipse 54% 50% at 88% 28%, rgba(214, 184, 122, 0.07), transparent 62%);
}

.scene-visual-system-v1[data-scene-id="11"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(
      98deg,
      transparent 0,
      transparent 24px,
      rgba(214, 184, 122, 0.032) 25px,
      transparent 27px
    ),
    radial-gradient(ellipse 44% 58% at 79% 45%, rgba(226, 169, 101, 0.12), transparent 60%),
    radial-gradient(ellipse 42% 58% at 66% 20%, rgba(91, 158, 190, 0.08), transparent 58%);
  opacity: 0.82;
}

.scene-visual-system-v1[data-scene-id="11"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 76% 68% at 50% 44%, transparent 30%, rgba(0, 0, 0, 0.7) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.024), transparent 15%, transparent 88%, rgba(214, 184, 122, 0.04));
}

.scene-visual-system-v1[data-scene-id="12"] .lis-double-exposure::before {
  opacity: 0.9;
  filter: brightness(0.64) contrast(1.1) saturate(0.84);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="12"] .lis-double-exposure::after {
  opacity: 0.22;
  filter: blur(11px) brightness(1.06) saturate(0.88);
  background:
    radial-gradient(circle at 77% 42%, rgba(86, 181, 211, 0.27), transparent 29%),
    radial-gradient(circle at 61% 70%, rgba(214, 151, 77, 0.14), transparent 27%),
    radial-gradient(circle at 89% 52%, rgba(206, 80, 84, 0.075), transparent 23%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="12"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.9), rgba(3, 6, 11, 0.4) 50%, rgba(3, 6, 11, 0.39)),
    radial-gradient(ellipse 43% 54% at 78% 42%, rgba(72, 155, 191, 0.16), transparent 64%),
    radial-gradient(ellipse 34% 38% at 61% 70%, rgba(210, 145, 70, 0.09), transparent 62%),
    radial-gradient(ellipse 28% 36% at 89% 52%, rgba(190, 72, 78, 0.04), transparent 58%);
}

.scene-visual-system-v1[data-scene-id="12"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 38% 52% at 78% 42%, rgba(91, 181, 207, 0.085), transparent 62%),
    radial-gradient(ellipse 32% 42% at 61% 70%, rgba(218, 156, 80, 0.045), transparent 60%);
  opacity: 0.78;
}

.scene-visual-system-v1[data-scene-id="12"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 80% 72% at 53% 45%, transparent 30%, rgba(0, 0, 0, 0.7) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.014), transparent 16%, transparent 91%, rgba(92, 177, 205, 0.026));
}

.scene-visual-system-v1[data-scene-id="13"] .lis-double-exposure::before {
  opacity: 0.88;
  filter: brightness(0.62) contrast(1.12) saturate(0.78) sepia(0.18);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="13"] .lis-double-exposure::after {
  opacity: 0.26;
  filter: blur(10px) brightness(1.08) saturate(0.86);
  background:
    radial-gradient(circle at 78% 62%, rgba(235, 154, 74, 0.42), transparent 29%),
    radial-gradient(circle at 58% 27%, rgba(85, 154, 183, 0.16), transparent 33%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="13"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.78), rgba(3, 5, 10, 0.24) 49%, rgba(3, 5, 10, 0.46)),
    radial-gradient(ellipse 34% 40% at 78% 63%, rgba(219, 131, 60, 0.23), transparent 64%),
    radial-gradient(ellipse 40% 46% at 59% 27%, rgba(81, 146, 178, 0.13), transparent 62%),
    radial-gradient(ellipse 72% 54% at 52% 105%, rgba(214, 184, 122, 0.06), transparent 62%);
}

.scene-visual-system-v1[data-scene-id="13"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(
      96deg,
      transparent 0,
      transparent 28px,
      rgba(214, 184, 122, 0.03) 29px,
      transparent 31px
    ),
    radial-gradient(ellipse 44% 56% at 78% 63%, rgba(226, 151, 76, 0.14), transparent 62%),
    radial-gradient(ellipse 42% 58% at 56% 28%, rgba(84, 149, 183, 0.08), transparent 58%);
  opacity: 0.84;
}

.scene-visual-system-v1[data-scene-id="13"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 76% 68% at 50% 44%, transparent 30%, rgba(0, 0, 0, 0.68) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.026), transparent 15%, transparent 88%, rgba(214, 184, 122, 0.04));
}

.scene-visual-system-v1[data-scene-id="14"] .lis-double-exposure::before {
  opacity: 0.93;
  filter: brightness(0.74) contrast(1.08) saturate(0.86) sepia(0.05);
  transform: scale(1.01);
}

.scene-visual-system-v1[data-scene-id="14"] .lis-double-exposure::after {
  opacity: 0.2;
  filter: blur(12px) brightness(1.04) saturate(0.9);
  background:
    radial-gradient(ellipse 26% 48% at 71% 45%, rgba(103, 160, 188, 0.22), transparent 70%),
    radial-gradient(ellipse 24% 42% at 88% 48%, rgba(219, 169, 92, 0.17), transparent 70%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="14"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 5, 9, 0.87), rgba(2, 5, 9, 0.44) 45%, rgba(2, 5, 9, 0.12) 72%, rgba(2, 5, 9, 0.27)),
    radial-gradient(ellipse 30% 54% at 71% 45%, rgba(87, 146, 176, 0.14), transparent 70%),
    radial-gradient(ellipse 28% 48% at 88% 48%, rgba(207, 151, 76, 0.1), transparent 72%);
}

.scene-visual-system-v1[data-scene-id="14"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 30% 56% at 71% 45%, rgba(107, 170, 197, 0.085), transparent 68%),
    radial-gradient(ellipse 24% 46% at 88% 48%, rgba(224, 174, 98, 0.055), transparent 70%);
  opacity: 0.72;
}

.scene-visual-system-v1[data-scene-id="14"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 58% 45%, transparent 31%, rgba(0, 0, 0, 0.68) 100%),
    linear-gradient(90deg, rgba(1, 4, 8, 0.18), transparent 54%, rgba(1, 4, 8, 0.08));
}

.scene-visual-system-v1[data-scene-id="16"] .lis-double-exposure::before {
  opacity: 0.86;
  filter: brightness(0.66) contrast(1.1) saturate(0.84) sepia(0.02);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="16"] .lis-double-exposure::after {
  opacity: 0.26;
  filter: blur(10px) brightness(1.08) saturate(0.88);
  background:
    radial-gradient(circle at 80% 48%, rgba(85, 174, 218, 0.32), transparent 31%),
    radial-gradient(circle at 61% 78%, rgba(226, 171, 94, 0.14), transparent 28%),
    radial-gradient(circle at 91% 24%, rgba(148, 203, 226, 0.12), transparent 30%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="16"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.82), rgba(3, 5, 10, 0.28) 50%, rgba(3, 5, 10, 0.4)),
    radial-gradient(ellipse 38% 50% at 80% 49%, rgba(74, 157, 201, 0.19), transparent 62%),
    radial-gradient(ellipse 40% 38% at 61% 79%, rgba(218, 158, 82, 0.08), transparent 60%),
    radial-gradient(ellipse 36% 44% at 91% 24%, rgba(138, 196, 220, 0.08), transparent 62%);
}

.scene-visual-system-v1[data-scene-id="16"] .scenario-atmosphere::before {
  background:
    linear-gradient(116deg, transparent 0 55%, rgba(115, 186, 216, 0.04) 68%, transparent 82%),
    radial-gradient(ellipse 44% 60% at 80% 49%, rgba(78, 164, 205, 0.11), transparent 62%),
    radial-gradient(ellipse 38% 46% at 60% 80%, rgba(226, 169, 92, 0.055), transparent 58%);
  opacity: 0.8;
}

.scene-visual-system-v1[data-scene-id="16"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 78% 70% at 50% 44%, transparent 30%, rgba(0, 0, 0, 0.68) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.024), transparent 15%, transparent 88%, rgba(114, 190, 221, 0.038));
}

.scene-visual-system-v1[data-scene-id="18"] .lis-double-exposure::before {
  opacity: 0.88;
  filter: brightness(0.58) contrast(1.12) saturate(0.78) sepia(0.08);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="18"] .lis-double-exposure::after {
  opacity: 0.24;
  filter: blur(10px) brightness(1.08) saturate(0.82);
  background:
    radial-gradient(circle at 84% 50%, rgba(226, 151, 72, 0.28), transparent 26%),
    radial-gradient(circle at 72% 28%, rgba(75, 145, 184, 0.18), transparent 34%),
    radial-gradient(circle at 66% 74%, rgba(100, 170, 190, 0.1), transparent 30%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="18"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.86), rgba(3, 5, 10, 0.34) 51%, rgba(3, 5, 10, 0.48)),
    radial-gradient(ellipse 34% 42% at 84% 51%, rgba(218, 134, 66, 0.15), transparent 62%),
    radial-gradient(ellipse 44% 52% at 72% 28%, rgba(72, 138, 178, 0.12), transparent 64%),
    radial-gradient(ellipse 50% 46% at 66% 75%, rgba(91, 160, 184, 0.07), transparent 62%);
}

.scene-visual-system-v1[data-scene-id="18"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(
      102deg,
      transparent 0,
      transparent 30px,
      rgba(99, 177, 205, 0.025) 31px,
      transparent 33px
    ),
    radial-gradient(ellipse 38% 52% at 84% 52%, rgba(226, 142, 70, 0.09), transparent 60%),
    radial-gradient(ellipse 44% 58% at 72% 28%, rgba(80, 150, 190, 0.07), transparent 58%);
  opacity: 0.82;
}

.scene-visual-system-v1[data-scene-id="18"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 80% 70% at 50% 44%, transparent 28%, rgba(0, 0, 0, 0.74) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.02), transparent 15%, transparent 88%, rgba(226, 151, 72, 0.034));
}

.scene-visual-system-v1[data-scene-id="3"] .lis-double-exposure::before {
  opacity: 0.9;
  filter: brightness(0.66) contrast(1.1) saturate(0.84);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="3"] .lis-double-exposure::after {
  opacity: 0.21;
  filter: blur(11px) brightness(1.05) saturate(0.86);
  background:
    radial-gradient(circle at 72% 52%, rgba(225, 167, 101, 0.2), transparent 34%),
    radial-gradient(circle at 62% 30%, rgba(72, 126, 171, 0.14), transparent 38%),
    radial-gradient(circle at 91% 50%, rgba(204, 171, 111, 0.07), transparent 28%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="3"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 6, 11, 0.89), rgba(3, 6, 11, 0.38) 50%, rgba(3, 6, 11, 0.38)),
    radial-gradient(ellipse 46% 52% at 72% 52%, rgba(210, 150, 88, 0.12), transparent 65%),
    radial-gradient(ellipse 54% 58% at 61% 30%, rgba(57, 111, 158, 0.1), transparent 66%),
    radial-gradient(ellipse 28% 38% at 91% 50%, rgba(203, 169, 108, 0.04), transparent 60%);
}

.scene-visual-system-v1[data-scene-id="3"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 44% 54% at 72% 52%, rgba(220, 161, 98, 0.07), transparent 62%),
    radial-gradient(ellipse 46% 58% at 60% 29%, rgba(70, 126, 169, 0.055), transparent 64%);
  opacity: 0.76;
}

.scene-visual-system-v1[data-scene-id="3"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 80% 72% at 53% 45%, transparent 30%, rgba(0, 0, 0, 0.7) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.014), transparent 16%, transparent 91%, rgba(95, 145, 184, 0.026));
}

.scene-visual-system-v1[data-scene-id="6"] .lis-double-exposure::before {
  opacity: 0.88;
  filter: brightness(0.58) contrast(1.12) saturate(0.82) sepia(0.04);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="6"] .lis-double-exposure::after {
  opacity: 0.25;
  filter: blur(10px) brightness(1.08) saturate(0.86);
  background:
    radial-gradient(circle at 72% 42%, rgba(91, 195, 222, 0.3), transparent 31%),
    radial-gradient(circle at 72% 64%, rgba(226, 164, 82, 0.16), transparent 28%),
    radial-gradient(circle at 84% 38%, rgba(215, 84, 78, 0.08), transparent 24%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="6"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.86), rgba(3, 5, 10, 0.32) 50%, rgba(3, 5, 10, 0.46)),
    radial-gradient(ellipse 44% 52% at 72% 43%, rgba(83, 180, 210, 0.17), transparent 64%),
    radial-gradient(ellipse 34% 38% at 72% 65%, rgba(226, 164, 82, 0.09), transparent 60%),
    radial-gradient(ellipse 26% 32% at 84% 38%, rgba(215, 84, 78, 0.045), transparent 58%);
}

.scene-visual-system-v1[data-scene-id="6"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(94deg, transparent 0, transparent 29px, rgba(122, 219, 226, 0.03) 30px, transparent 32px),
    radial-gradient(ellipse 50% 62% at 72% 44%, rgba(94, 204, 226, 0.1), transparent 62%);
  opacity: 0.82;
}

.scene-visual-system-v1[data-scene-id="6"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 80% 70% at 50% 44%, transparent 28%, rgba(0, 0, 0, 0.74) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.02), transparent 15%, transparent 88%, rgba(126, 216, 226, 0.034));
}

.scene-visual-system-v1[data-scene-id="17"] .lis-double-exposure::before {
  opacity: 0.93;
  filter: brightness(0.74) contrast(1.08) saturate(0.84) sepia(0.04);
  transform: scale(1.01);
}

.scene-visual-system-v1[data-scene-id="17"] .lis-double-exposure::after {
  opacity: 0.19;
  filter: blur(12px) brightness(1.04) saturate(0.88);
  background:
    radial-gradient(ellipse 20% 32% at 86% 25%, rgba(178, 218, 231, 0.24), transparent 70%),
    radial-gradient(ellipse 30% 44% at 72% 58%, rgba(78, 124, 148, 0.12), transparent 72%),
    radial-gradient(ellipse 18% 32% at 78% 50%, rgba(215, 161, 82, 0.09), transparent 72%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="17"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 5, 9, 0.87), rgba(2, 5, 9, 0.44) 45%, rgba(2, 5, 9, 0.13) 72%, rgba(2, 5, 9, 0.28)),
    radial-gradient(ellipse 24% 38% at 86% 25%, rgba(157, 204, 220, 0.14), transparent 70%),
    radial-gradient(ellipse 34% 48% at 72% 58%, rgba(69, 112, 136, 0.1), transparent 72%),
    radial-gradient(ellipse 20% 34% at 78% 50%, rgba(205, 150, 73, 0.065), transparent 72%);
}

.scene-visual-system-v1[data-scene-id="17"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 24% 40% at 86% 25%, rgba(178, 221, 232, 0.085), transparent 68%),
    linear-gradient(180deg, rgba(91, 126, 143, 0.03), transparent 34%, rgba(0, 0, 0, 0.14));
  opacity: 0.72;
}

.scene-visual-system-v1[data-scene-id="17"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 58% 44%, transparent 31%, rgba(0, 0, 0, 0.69) 100%),
    linear-gradient(90deg, rgba(1, 4, 8, 0.18), transparent 54%, rgba(1, 4, 8, 0.08));
}

.scene-visual-system-v1[data-scene-id="20"] .lis-double-exposure::before {
  opacity: 0.9;
  filter: brightness(0.66) contrast(1.1) saturate(0.8);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="20"] .lis-double-exposure::after {
  opacity: 0.21;
  filter: blur(11px) brightness(1.05) saturate(0.82);
  background:
    radial-gradient(circle at 74% 48%, rgba(118, 153, 166, 0.18), transparent 35%),
    radial-gradient(circle at 92% 35%, rgba(220, 157, 77, 0.15), transparent 25%),
    radial-gradient(circle at 76% 74%, rgba(170, 188, 190, 0.07), transparent 28%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="20"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 8, 0.9), rgba(3, 5, 8, 0.39) 50%, rgba(3, 5, 8, 0.4)),
    radial-gradient(ellipse 46% 52% at 74% 48%, rgba(103, 139, 153, 0.11), transparent 65%),
    radial-gradient(ellipse 30% 38% at 92% 35%, rgba(212, 146, 69, 0.085), transparent 61%);
}

.scene-visual-system-v1[data-scene-id="20"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 42% 55% at 74% 48%, rgba(128, 158, 168, 0.065), transparent 62%),
    radial-gradient(ellipse 28% 40% at 92% 35%, rgba(220, 154, 76, 0.045), transparent 60%);
  opacity: 0.76;
}

.scene-visual-system-v1[data-scene-id="20"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 80% 72% at 52% 45%, transparent 29%, rgba(0, 0, 0, 0.72) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.014), transparent 16%, transparent 91%, rgba(214, 169, 104, 0.025));
}

.scene-visual-system-v1[data-scene-id="21"] .lis-double-exposure::before {
  opacity: 0.88;
  filter: brightness(0.6) contrast(1.1) saturate(0.84) sepia(0.16);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="21"] .lis-double-exposure::after {
  opacity: 0.25;
  filter: blur(10px) brightness(1.08) saturate(0.88);
  background:
    radial-gradient(circle at 76% 50%, rgba(226, 178, 94, 0.3), transparent 30%),
    radial-gradient(circle at 86% 36%, rgba(148, 101, 205, 0.12), transparent 30%),
    radial-gradient(circle at 64% 30%, rgba(83, 151, 184, 0.1), transparent 33%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="21"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.84), rgba(3, 5, 10, 0.3) 50%, rgba(3, 5, 10, 0.44)),
    radial-gradient(ellipse 44% 50% at 76% 50%, rgba(222, 171, 92, 0.16), transparent 64%),
    radial-gradient(ellipse 36% 44% at 86% 36%, rgba(138, 92, 190, 0.08), transparent 62%),
    radial-gradient(ellipse 46% 52% at 64% 30%, rgba(72, 138, 178, 0.07), transparent 62%);
}

.scene-visual-system-v1[data-scene-id="21"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(98deg, transparent 0, transparent 25px, rgba(214, 184, 122, 0.032) 26px, transparent 28px),
    radial-gradient(ellipse 48% 58% at 76% 50%, rgba(226, 178, 94, 0.1), transparent 60%);
  opacity: 0.82;
}

.scene-visual-system-v1[data-scene-id="21"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 78% 70% at 50% 44%, transparent 29%, rgba(0, 0, 0, 0.72) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.022), transparent 15%, transparent 88%, rgba(214, 184, 122, 0.036));
}

.scene-visual-system-v1[data-scene-id="22"] .lis-double-exposure::before {
  opacity: 0.88;
  filter: brightness(0.58) contrast(1.12) saturate(0.76) sepia(0.04);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="22"] .lis-double-exposure::after {
  opacity: 0.24;
  filter: blur(10px) brightness(1.08) saturate(0.82);
  background:
    radial-gradient(circle at 80% 44%, rgba(226, 184, 104, 0.18), transparent 28%),
    radial-gradient(circle at 70% 48%, rgba(76, 145, 184, 0.18), transparent 34%),
    radial-gradient(circle at 85% 70%, rgba(235, 165, 76, 0.1), transparent 24%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="22"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.86), rgba(3, 5, 10, 0.34) 51%, rgba(3, 5, 10, 0.48)),
    radial-gradient(ellipse 44% 54% at 70% 48%, rgba(72, 138, 178, 0.12), transparent 64%),
    radial-gradient(ellipse 36% 42% at 80% 44%, rgba(218, 176, 94, 0.09), transparent 62%),
    radial-gradient(ellipse 28% 34% at 85% 70%, rgba(235, 165, 76, 0.055), transparent 58%);
}

.scene-visual-system-v1[data-scene-id="22"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(102deg, transparent 0, transparent 30px, rgba(99, 177, 205, 0.025) 31px, transparent 33px),
    radial-gradient(ellipse 44% 58% at 70% 48%, rgba(80, 150, 190, 0.07), transparent 58%);
  opacity: 0.82;
}

.scene-visual-system-v1[data-scene-id="22"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 80% 70% at 50% 44%, transparent 28%, rgba(0, 0, 0, 0.74) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.02), transparent 15%, transparent 88%, rgba(226, 184, 104, 0.034));
}

.scene-visual-system-v1[data-scene-id="9"] .lis-double-exposure::before {
  opacity: 0.93;
  filter: brightness(0.72) contrast(1.08) saturate(0.86) sepia(0.04);
  transform: scale(1.01);
}

.scene-visual-system-v1[data-scene-id="9"] .lis-double-exposure::after {
  opacity: 0.2;
  filter: blur(12px) brightness(1.04) saturate(0.9);
  background:
    radial-gradient(ellipse 30% 48% at 78% 46%, rgba(224, 169, 92, 0.25), transparent 68%),
    radial-gradient(ellipse 24% 38% at 69% 32%, rgba(84, 123, 143, 0.13), transparent 72%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="9"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 5, 9, 0.87), rgba(2, 5, 9, 0.44) 45%, rgba(2, 5, 9, 0.13) 72%, rgba(2, 5, 9, 0.28)),
    radial-gradient(ellipse 36% 52% at 79% 46%, rgba(219, 158, 76, 0.14), transparent 70%),
    radial-gradient(ellipse 24% 40% at 69% 31%, rgba(75, 111, 132, 0.1), transparent 72%);
}

.scene-visual-system-v1[data-scene-id="9"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 36% 54% at 79% 46%, rgba(231, 174, 95, 0.09), transparent 68%),
    linear-gradient(180deg, rgba(85, 118, 136, 0.035), transparent 34%, rgba(0, 0, 0, 0.15));
  opacity: 0.74;
}

.scene-visual-system-v1[data-scene-id="9"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 58% 44%, transparent 32%, rgba(0, 0, 0, 0.69) 100%),
    linear-gradient(90deg, rgba(1, 4, 8, 0.18), transparent 54%, rgba(1, 4, 8, 0.08));
}

.scene-visual-system-v1[data-scene-id="12"] .lis-double-exposure::before {
  opacity: 0.88;
  filter: brightness(0.57) contrast(1.14) saturate(0.78) sepia(0.08);
  transform: scale(1.012);
}

.scene-visual-system-v1[data-scene-id="12"] .lis-double-exposure::after {
  opacity: 0.25;
  filter: blur(10px) brightness(1.08) saturate(0.84);
  background:
    radial-gradient(circle at 78% 58%, rgba(226, 166, 82, 0.24), transparent 26%),
    radial-gradient(circle at 70% 42%, rgba(76, 150, 190, 0.18), transparent 34%),
    radial-gradient(circle at 86% 78%, rgba(86, 190, 216, 0.08), transparent 28%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="12"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(3, 5, 10, 0.88), rgba(3, 5, 10, 0.36) 52%, rgba(3, 5, 10, 0.5)),
    radial-gradient(ellipse 36% 48% at 78% 58%, rgba(226, 166, 82, 0.12), transparent 62%),
    radial-gradient(ellipse 42% 58% at 70% 42%, rgba(74, 146, 188, 0.12), transparent 64%),
    radial-gradient(ellipse 34% 44% at 86% 78%, rgba(86, 190, 216, 0.05), transparent 58%);
}

.scene-visual-system-v1[data-scene-id="12"] .scenario-atmosphere::before {
  background:
    repeating-linear-gradient(88deg, transparent 0, transparent 26px, rgba(214, 184, 122, 0.026) 27px, transparent 29px),
    linear-gradient(180deg, transparent 0%, rgba(82, 158, 196, 0.055) 54%, transparent 100%);
  opacity: 0.82;
}

.scene-visual-system-v1[data-scene-id="12"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 80% 72% at 50% 44%, transparent 28%, rgba(0, 0, 0, 0.76) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.018), transparent 16%, transparent 88%, rgba(226, 166, 82, 0.034));
}

.scene-visual-system-v1[data-scene-id="15"] .lis-double-exposure::before {
  opacity: 0.93;
  filter: brightness(0.72) contrast(1.08) saturate(0.86) sepia(0.06);
  transform: scale(1.01);
}

.scene-visual-system-v1[data-scene-id="15"] .lis-double-exposure::after {
  opacity: 0.2;
  filter: blur(12px) brightness(1.04) saturate(0.9);
  background:
    radial-gradient(ellipse 28% 42% at 83% 66%, rgba(226, 179, 99, 0.25), transparent 68%),
    radial-gradient(ellipse 30% 46% at 76% 35%, rgba(120, 148, 151, 0.13), transparent 72%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="15"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 5, 9, 0.87), rgba(2, 5, 9, 0.44) 45%, rgba(2, 5, 9, 0.13) 72%, rgba(2, 5, 9, 0.28)),
    radial-gradient(ellipse 34% 48% at 83% 66%, rgba(218, 164, 83, 0.14), transparent 70%),
    radial-gradient(ellipse 32% 48% at 75% 35%, rgba(91, 122, 129, 0.1), transparent 72%);
}

.scene-visual-system-v1[data-scene-id="15"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 34% 52% at 83% 66%, rgba(232, 181, 98, 0.09), transparent 68%),
    linear-gradient(180deg, rgba(99, 129, 133, 0.035), transparent 34%, rgba(0, 0, 0, 0.15));
  opacity: 0.74;
}

.scene-visual-system-v1[data-scene-id="15"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 58% 45%, transparent 31%, rgba(0, 0, 0, 0.69) 100%),
    linear-gradient(90deg, rgba(1, 4, 8, 0.18), transparent 54%, rgba(1, 4, 8, 0.08));
}

.scene-visual-system-v1[data-scene-id="19"] .lis-double-exposure::before {
  opacity: 0.94;
  filter: brightness(0.69) contrast(1.08) saturate(0.9);
  transform: scale(1.008);
}

.scene-visual-system-v1[data-scene-id="19"] .lis-double-exposure::after {
  opacity: 0.18;
  filter: blur(12px) brightness(1.06) saturate(0.9);
  background:
    radial-gradient(ellipse 34% 26% at 83% 17%, rgba(174, 142, 236, 0.3), transparent 70%),
    radial-gradient(ellipse 42% 30% at 75% 63%, rgba(93, 150, 181, 0.13), transparent 72%),
    radial-gradient(ellipse 28% 24% at 88% 69%, rgba(214, 184, 122, 0.08), transparent 72%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="19"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 5, 10, 0.9), rgba(2, 5, 10, 0.42) 47%, rgba(2, 5, 10, 0.12) 73%, rgba(2, 5, 10, 0.28)),
    radial-gradient(ellipse 34% 30% at 83% 17%, rgba(160, 126, 226, 0.13), transparent 68%),
    radial-gradient(ellipse 42% 36% at 75% 65%, rgba(70, 128, 160, 0.09), transparent 70%),
    radial-gradient(ellipse 30% 24% at 88% 70%, rgba(214, 184, 122, 0.045), transparent 68%);
}

.scene-visual-system-v1[data-scene-id="19"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 32% 24% at 83% 16%, rgba(184, 151, 238, 0.08), transparent 68%),
    radial-gradient(ellipse 48% 34% at 78% 64%, rgba(92, 155, 185, 0.045), transparent 72%);
  opacity: 0.76;
}

.scene-visual-system-v1[data-scene-id="19"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 56% 44%, transparent 30%, rgba(0, 0, 0, 0.7) 100%),
    linear-gradient(90deg, rgba(1, 4, 8, 0.2), transparent 55%, rgba(1, 4, 8, 0.08));
}

.scene-visual-system-v1[data-scene-id="22"] .lis-double-exposure::before {
  opacity: 0.94;
  filter: brightness(0.73) contrast(1.08) saturate(0.82);
  transform: scale(1.008);
}

.scene-visual-system-v1[data-scene-id="22"] .lis-double-exposure::after {
  opacity: 0.17;
  filter: blur(12px) brightness(1.06) saturate(0.86);
  background:
    radial-gradient(ellipse 24% 50% at 81% 44%, rgba(231, 174, 93, 0.24), transparent 70%),
    radial-gradient(ellipse 34% 52% at 59% 48%, rgba(92, 142, 166, 0.12), transparent 72%),
    radial-gradient(ellipse 20% 34% at 91% 26%, rgba(214, 184, 122, 0.1), transparent 70%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="22"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 4, 8, 0.92), rgba(2, 4, 8, 0.48) 47%, rgba(2, 4, 8, 0.14) 70%, rgba(2, 4, 8, 0.25)),
    radial-gradient(ellipse 26% 56% at 81% 45%, rgba(224, 165, 82, 0.13), transparent 70%),
    radial-gradient(ellipse 38% 56% at 59% 48%, rgba(79, 129, 154, 0.08), transparent 72%),
    radial-gradient(ellipse 20% 34% at 91% 25%, rgba(214, 184, 122, 0.055), transparent 68%);
}

.scene-visual-system-v1[data-scene-id="22"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 25% 54% at 81% 45%, rgba(230, 174, 94, 0.075), transparent 69%),
    radial-gradient(ellipse 38% 58% at 59% 48%, rgba(90, 145, 169, 0.045), transparent 72%);
  opacity: 0.72;
}

.scene-visual-system-v1[data-scene-id="22"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 56% 44%, transparent 30%, rgba(0, 0, 0, 0.71) 100%),
    linear-gradient(90deg, rgba(1, 3, 7, 0.22), transparent 56%, rgba(1, 3, 7, 0.08));
}

.scene-visual-system-v1[data-scene-id="23"] .lis-double-exposure::before {
  opacity: 0.94;
  filter: brightness(0.75) contrast(1.08) saturate(0.82);
  transform: scale(1.008);
}

.scene-visual-system-v1[data-scene-id="23"] .lis-double-exposure::after {
  opacity: 0.16;
  filter: blur(12px) brightness(1.06) saturate(0.84);
  background:
    radial-gradient(ellipse 23% 30% at 66% 30%, rgba(139, 190, 215, 0.18), transparent 72%),
    radial-gradient(ellipse 18% 24% at 53% 70%, rgba(147, 205, 226, 0.16), transparent 70%),
    radial-gradient(ellipse 24% 30% at 79% 58%, rgba(210, 168, 104, 0.055), transparent 72%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="23"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 4, 8, 0.92), rgba(2, 4, 8, 0.5) 47%, rgba(2, 4, 8, 0.14) 72%, rgba(2, 4, 8, 0.3)),
    radial-gradient(ellipse 27% 34% at 66% 30%, rgba(123, 179, 204, 0.1), transparent 70%),
    radial-gradient(ellipse 19% 26% at 53% 70%, rgba(147, 205, 226, 0.085), transparent 68%),
    radial-gradient(ellipse 30% 36% at 80% 58%, rgba(198, 155, 95, 0.035), transparent 72%);
}

.scene-visual-system-v1[data-scene-id="23"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 25% 34% at 66% 30%, rgba(139, 190, 215, 0.065), transparent 68%),
    radial-gradient(ellipse 20% 27% at 53% 70%, rgba(155, 211, 229, 0.05), transparent 70%);
  opacity: 0.72;
}

.scene-visual-system-v1[data-scene-id="23"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 56% 44%, transparent 30%, rgba(0, 0, 0, 0.72) 100%),
    linear-gradient(90deg, rgba(1, 3, 7, 0.22), transparent 56%, rgba(1, 3, 7, 0.08));
}

.scene-visual-system-v1[data-scene-id="24"] .lis-double-exposure::before {
  opacity: 0.94;
  filter: brightness(0.72) contrast(1.07) saturate(0.84) sepia(0.04);
  transform: scale(1.008);
}

.scene-visual-system-v1[data-scene-id="24"] .lis-double-exposure::after {
  opacity: 0.17;
  filter: blur(12px) brightness(1.06) saturate(0.88);
  background:
    radial-gradient(ellipse 40% 32% at 76% 72%, rgba(232, 182, 101, 0.23), transparent 72%),
    radial-gradient(ellipse 40% 36% at 74% 26%, rgba(196, 153, 93, 0.1), transparent 72%),
    radial-gradient(ellipse 18% 28% at 84% 50%, rgba(238, 188, 92, 0.12), transparent 68%),
    var(--bg-image) no-repeat center center;
  background-size: cover;
}

.scene-visual-system-v1[data-scene-id="24"] .scenario-atmosphere {
  background:
    linear-gradient(90deg, rgba(2, 4, 8, 0.91), rgba(2, 4, 8, 0.46) 47%, rgba(2, 4, 8, 0.12) 70%, rgba(2, 4, 8, 0.24)),
    radial-gradient(ellipse 42% 34% at 76% 72%, rgba(226, 176, 96, 0.13), transparent 70%),
    radial-gradient(ellipse 42% 40% at 74% 26%, rgba(182, 141, 86, 0.065), transparent 72%),
    radial-gradient(ellipse 18% 28% at 84% 50%, rgba(238, 188, 92, 0.07), transparent 68%);
}

.scene-visual-system-v1[data-scene-id="24"] .scenario-atmosphere::before {
  background:
    radial-gradient(ellipse 42% 34% at 76% 72%, rgba(234, 184, 101, 0.075), transparent 70%),
    radial-gradient(ellipse 40% 40% at 74% 26%, rgba(202, 158, 96, 0.04), transparent 72%);
  opacity: 0.7;
}

.scene-visual-system-v1[data-scene-id="24"] .scenario-atmosphere::after {
  background:
    radial-gradient(ellipse 82% 72% at 56% 44%, transparent 30%, rgba(0, 0, 0, 0.69) 100%),
    linear-gradient(90deg, rgba(1, 3, 7, 0.2), transparent 56%, rgba(1, 3, 7, 0.07));
}

@keyframes scene-rain-shift {
  0% { transform: translate3d(0, -3%, 0); }
  100% { transform: translate3d(-2%, 4%, 0); }
}

.scene-frame {
  position: absolute;
  /* Oberkante bewusst tiefer: lässt der oberen Chrome-Zeile (Fortschritts-Orb
     mittig, Schließen-Button rechts) ein eigenes ruhiges Band, statt dass die
     Rahmenlinie sie durchschneidet. Mobile-Inset bleibt in der 820px-Query. */
  top: clamp(64px, 6.5vh, 76px);
  right: clamp(14px, 2.2vw, 32px);
  bottom: clamp(16px, 2vh, 24px);
  left: clamp(14px, 2.2vw, 32px);
  z-index: 2;
  pointer-events: none;
  opacity: 0.86;
}

.scene-frame__corner {
  position: absolute;
  width: clamp(34px, 5vw, 76px);
  height: clamp(34px, 5vw, 76px);
  border-color: rgba(214, 184, 122, 0.46);
  filter: drop-shadow(0 0 12px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.12));
}

.scene-frame__corner--tl {
  top: 0;
  left: 0;
  border-top: 1px solid;
  border-left: 1px solid;
}

.scene-frame__corner--tr {
  top: 0;
  right: 0;
  border-top: 1px solid;
  border-right: 1px solid;
}

.scene-frame__corner--bl {
  bottom: 0;
  left: 0;
  border-bottom: 1px solid;
  border-left: 1px solid;
}

.scene-frame__corner--br {
  bottom: 0;
  right: 0;
  border-bottom: 1px solid;
  border-right: 1px solid;
}

.scene-visual-system-v1 .scenario-content {
  position: relative;
  z-index: 3;
  width: min(900px, calc(100vw - clamp(42px, 8vw, 128px)));
  max-width: none;
  margin: 0 auto;
  padding: 0;
  display: grid;
  gap: 14px;
}

.scene-visual-system-v1 .scenario-mobile-art {
  display: none;
}

@media (min-width: 1100px) {
  .scene-visual-system-v1 .scenario-content {
    width: min(760px, 52vw);
    margin-left: clamp(64px, 7vw, 132px);
    margin-right: auto;
  }
}

@media (min-width: 821px) {
  .scene-visual-system-v1 .scenario-content {
    gap: clamp(8px, 1.2vh, 12px);
  }
}

.scene-visual-system-v1 .scenario-card {
  margin: 0;
  padding: clamp(22px, 3vw, 34px);
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.012)),
    radial-gradient(circle at 82% 14%, rgba(var(--scene-glow-rgb, 167, 139, 250), 0.12), transparent 34%),
    rgba(5, 8, 16, 0.66);
  border: 1px solid rgba(169, 176, 187, 0.22);
  border-top-color: rgba(214, 184, 122, 0.3);
  backdrop-filter: blur(24px) saturate(1.15);
  -webkit-backdrop-filter: blur(24px) saturate(1.15);
  box-shadow:
    0 26px 80px rgba(0, 0, 0, 0.42),
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    inset 0 0 80px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.045);
}

@media (min-width: 821px) {
  .scene-visual-system-v1 .scenario-card {
    padding: clamp(18px, 2.7vh, 30px) clamp(22px, 2.6vw, 34px);
  }
}

.scene-visual-system-v1 .scenario-card::before {
  height: 1px;
  background: linear-gradient(
    90deg,
    rgba(214, 184, 122, 0.88),
    rgba(var(--scene-glow-rgb, 167, 139, 250), 0.42),
    transparent
  );
  opacity: 1;
}

.scene-visual-system-v1 .scenario-card::after {
  border-radius: inherit;
  box-shadow:
    0 0 72px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.09),
    0 0 120px rgba(214, 184, 122, 0.035);
}

.scene-visual-system-v1 .scenario-header {
  position: relative;
  margin-bottom: clamp(18px, 2.4vw, 28px);
  min-height: 32px;
}

.scene-visual-system-v1 .scenario-badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 6px 11px;
  border-radius: 3px;
  font-family: var(--font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.18em;
  color: rgba(214, 184, 122, 0.92);
  background: rgba(5, 8, 16, 0.54);
  border: 1px solid rgba(214, 184, 122, 0.22);
  box-shadow: inset 0 0 18px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.08);
}

.scene-visual-system-v1 .scenario-index-mark {
  position: absolute;
  top: -12px;
  right: 0;
  font-family: var(--font-serif, Georgia, 'Iowan Old Style', serif);
  font-style: italic;
  font-size: clamp(46px, 6vw, 74px);
  line-height: 1;
  color: rgba(255, 255, 255, 0.055);
  letter-spacing: 0;
  pointer-events: none;
}

.scene-visual-system-v1 .scenario-setting {
  max-width: 760px;
  font-family: var(--font-body, 'Inter', sans-serif);
  font-size: clamp(14px, 1.05vw, 16px);
  font-weight: 500;
  line-height: 1.62;
  letter-spacing: 0.01em;
  text-transform: none;
  color: rgba(235, 226, 204, 0.82);
  text-shadow: 0 0 18px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.12);
}

.scene-visual-system-v1 .scenario-situation {
  max-width: 790px;
  margin-top: clamp(14px, 1.8vh, 20px);
  margin-bottom: clamp(22px, 3vw, 34px);
  font-family: var(--font-body, 'Inter', sans-serif);
  font-size: clamp(16px, 1.2vw, 18px);
  line-height: 1.66;
  color: rgba(248, 244, 235, 0.94);
  text-wrap: pretty;
}

@media (min-width: 821px) {
  .scene-visual-system-v1 .scenario-header {
    margin-bottom: clamp(12px, 1.7vh, 20px);
  }

  .scene-visual-system-v1 .scenario-situation {
    margin-top: clamp(8px, 1.2vh, 14px);
    margin-bottom: clamp(16px, 2.4vh, 26px);
  }
}

.scene-visual-system-v1 .options-container {
  display: grid;
  gap: 10px;
  margin: 0;
}

.scene-visual-system-v1 .option-button {
  width: 100%;
  min-height: 62px;
  padding: 0;
  border-radius: 8px;
  border: 1px solid rgba(169, 176, 187, 0.18);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.012)),
    rgba(5, 8, 16, 0.56);
  color: rgba(246, 242, 230, 0.88);
  box-shadow:
    0 14px 34px rgba(0, 0, 0, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.045);
  backdrop-filter: blur(20px) saturate(1.08);
  -webkit-backdrop-filter: blur(20px) saturate(1.08);
  font-family: var(--font-body, 'Inter', sans-serif);
  overflow: hidden;
}

@media (min-width: 821px) {
  .scene-visual-system-v1 .option-button {
    min-height: clamp(50px, 6.8vh, 62px);
  }
}

.scene-visual-system-v1 .option-button::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(var(--scene-glow-rgb, 167, 139, 250), 0.13), transparent 45%),
    radial-gradient(circle at 90% 50%, rgba(214, 184, 122, 0.08), transparent 38%);
  opacity: 0;
  transition: opacity 0.32s var(--ease-out-expo, cubic-bezier(0.19, 1, 0.22, 1));
}

.scene-visual-system-v1 .option-button:hover:not(:disabled) {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.018)),
    rgba(5, 8, 16, 0.68);
  border-color: rgba(214, 184, 122, 0.38);
  transform: translateY(-1px);
  box-shadow:
    0 18px 44px rgba(0, 0, 0, 0.34),
    0 0 28px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.07);
}

.scene-visual-system-v1 .option-button:hover:not(:disabled)::before,
.scene-visual-system-v1 .option-button.selected::before {
  opacity: 1;
}

.scene-visual-system-v1 .option-button.selected {
  background:
    linear-gradient(135deg, rgba(var(--scene-glow-rgb, 167, 139, 250), 0.18), rgba(214, 184, 122, 0.055)),
    rgba(8, 11, 20, 0.78);
  border-color: color-mix(in srgb, var(--scene-glow-color, #d6b87a) 62%, #ffffff);
  box-shadow:
    0 0 0 1px rgba(214, 184, 122, 0.12),
    0 20px 54px rgba(0, 0, 0, 0.38),
    0 0 38px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.16);
}

.scene-visual-system-v1 .option-content {
  min-height: inherit;
  display: flex;
  align-items: center;
  padding: 15px 20px;
  font-size: clamp(14px, 1.08vw, 16px);
  line-height: 1.55;
}

.scene-visual-system-v1 .option-content span {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  width: 100%;
}

.scene-visual-system-v1 .opt-letter {
  width: 28px;
  height: 28px;
  margin: 1px 0 0;
  border-radius: 4px;
  font-family: var(--font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: 11px;
  font-weight: 700;
  color: rgba(246, 242, 230, 0.68);
  background: rgba(169, 176, 187, 0.11);
  border: 1px solid rgba(169, 176, 187, 0.14);
}

.scene-visual-system-v1 .option-button.selected .opt-letter {
  background: color-mix(in srgb, var(--scene-glow-color, #d6b87a) 72%, #ffffff);
  border-color: transparent;
  color: #05060a;
  box-shadow: 0 0 18px rgba(var(--scene-glow-rgb, 167, 139, 250), 0.26);
}

@media (max-width: 820px) {
  html:has(.scene-visual-system-v1),
  body:has(.scene-visual-system-v1) {
    height: auto;
    min-height: 100svh;
    overflow-y: auto;
    overflow-x: hidden;
  }

  body:has(.scene-visual-system-v1) .orb-guide--quiz {
    z-index: 90;
  }

  .question-screen.scene-visual-system-v1 {
    z-index: 3;
    min-height: 100svh;
    align-items: start;
    padding: 72px 20px 32px;
    overflow-y: visible;
    overflow-x: hidden;
  }

  .scene-frame {
    top: 14px;
    right: 14px;
    bottom: 24px;
    left: 14px;
  }

  .scene-visual-system-v1 .scenario-content {
    width: 100%;
    gap: 10px;
  }

  .scene-visual-system-v1 .scenario-mobile-art {
    position: relative;
    display: block;
    width: calc(100% + 16px);
    height: clamp(152px, 22svh, 184px);
    margin: -6px -8px 0;
    overflow: hidden;
    background:
      linear-gradient(180deg, rgba(4, 7, 12, 0.06) 0%, transparent 54%, rgba(4, 7, 12, 0.82) 100%),
      var(--mobile-scene-image) no-repeat var(--mobile-scene-position, center);
    background-size: cover;
    border-top: 1px solid rgba(214, 184, 122, 0.18);
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, 0.04),
      0 24px 44px rgba(0, 0, 0, 0.24);
    -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 9%, #000 80%, transparent 100%);
    mask-image: linear-gradient(180deg, transparent 0%, #000 9%, #000 80%, transparent 100%);
  }

  .scene-visual-system-v1 .scenario-mobile-art::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
      linear-gradient(90deg, rgba(4, 7, 12, 0.46), transparent 36%, transparent 82%, rgba(4, 7, 12, 0.2)),
      radial-gradient(circle at 78% 54%, rgba(var(--scene-glow-rgb, 167, 139, 250), 0.08), transparent 36%);
    pointer-events: none;
  }

  .scene-visual-system-v1 .scenario-card {
    padding: 20px;
  }

  .scene-visual-system-v1 .scenario-index-mark {
    display: none;
  }

  .scene-visual-system-v1 .option-content {
    padding: 14px 15px;
  }

  .scene-visual-system-v1[data-scene-id="5"] .lis-double-exposure::before,
  .scene-visual-system-v1[data-scene-id="5"] .lis-double-exposure::after,
  .scene-visual-system-v1[data-scene-id="8"] .lis-double-exposure::before,
  .scene-visual-system-v1[data-scene-id="8"] .lis-double-exposure::after,
  .scene-visual-system-v1[data-scene-id="11"] .lis-double-exposure::before,
  .scene-visual-system-v1[data-scene-id="11"] .lis-double-exposure::after,
  .scene-visual-system-v1[data-scene-id="13"] .lis-double-exposure::before,
  .scene-visual-system-v1[data-scene-id="13"] .lis-double-exposure::after,
  .scene-visual-system-v1[data-scene-id="16"] .lis-double-exposure::before,
  .scene-visual-system-v1[data-scene-id="16"] .lis-double-exposure::after {
    background-position: 78% center;
  }
}

@media (prefers-reduced-motion: reduce) {
  .scene-visual-system-v1 .lis-double-exposure::after,
  .scene-visual-system-v1 .scenario-atmosphere::before,
  .scene-visual-system-v1 .scenario-atmosphere::after {
    animation: none;
  }
}
/* Trait Constellation: Orbiting Nodes (Mobile First) */
.constellation-node {
  width: 8px;
  height: 8px;
  background: var(--accent-primary);
  border-radius: 50%;
  position: absolute;
  box-shadow: 0 0 10px var(--accent-primary);
  transform: translate(-50%, -50%);
  transition: all 0.5s var(--ease-out-expo);
  z-index: 5;
}

@media (min-width: 768px) {
  .constellation-node {
    width: 12px;
    height: 12px;
    box-shadow: 0 0 15px var(--accent-primary);
  }
}

.constellation-node.active {
  width: 14px;
  height: 14px;
  background: var(--pure-white);
  box-shadow: 0 0 20px var(--pure-white), 0 0 40px var(--accent-secondary);
}

@media (min-width: 768px) {
  .constellation-node.active {
    width: 18px;
    height: 18px;
    box-shadow: 0 0 25px var(--pure-white), 0 0 50px var(--accent-secondary);
  }
}

.orbit-path {
  position: absolute;
  top: 50%; left: 50%;
  border: 1px dashed var(--glass-border-faint);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.node-label {
  position: absolute;
  top: -24px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--bg-dark);
  color: var(--pure-white);
  padding: 4px 10px;
  border-radius: 8px;
  font-size: 10px;
  font-family: 'Outfit', sans-serif;
  font-weight: 700;
  white-space: nowrap;
  border: 1px solid var(--accent-primary);
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
}

@media (min-width: 768px) {
  .node-label {
    font-size: 11px;
    top: -28px;
  }
}

.constellation-node:hover .node-label,
.constellation-node.active .node-label {
  opacity: 1;
}

/* Connecting Lines */
.constellation-line {
  stroke: var(--accent-secondary);
  stroke-width: 1;
  stroke-dasharray: 5 5;
  opacity: 0.3;
  animation: dash 10s linear infinite;
}

@media (prefers-reduced-motion: reduce) {
  .constellation-line {
    animation: none;
  }
}

@keyframes dash {
  from { stroke-dashoffset: 100; }
  to { stroke-dashoffset: 0; }
}
/* Constellation Modal / Bottom Sheet (Mobile First) */
.constellation-modal-overlay {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: var(--glass-overlay);
  backdrop-filter: blur(var(--glass-blur));
  -webkit-backdrop-filter: blur(var(--glass-blur));
  z-index: 1000;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  animation: fadeIn 0.3s ease forwards;
}

@media (min-width: 768px) {
  .constellation-modal-overlay {
    align-items: center;
    padding: 40px;
  }
}

.constellation-modal {
  width: 100%;
  max-width: var(--container-max-width, 480px);
  max-height: 85vh;
  background: var(--glass-bg);
  backdrop-filter: blur(25px);
  -webkit-backdrop-filter: blur(25px);
  border: 1px solid var(--glass-border);
  border-bottom: none;
  border-radius: 24px 24px 0 0;
  padding: 24px;
  position: relative;
  box-shadow: 0 -10px 40px rgba(0,0,0,0.5);
  animation: slideUpModal 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.1) forwards;
  overflow-y: auto;
}

@media (min-width: 768px) {
  .constellation-modal {
    border-bottom: 1px solid var(--glass-border);
    border-radius: 24px;
    max-height: 90vh;
    box-shadow: 0 20px 50px rgba(0,0,0,0.6);
    animation: zoomFadeIn 0.4s var(--ease-out-expo) forwards;
  }
}

.modal-close-bar {
  width: 40px;
  height: 4px;
  background: var(--glass-border);
  border-radius: 2px;
  margin: 0 auto 20px auto;
  cursor: pointer;
  transition: background 0.3s ease;
}

@media (min-width: 768px) {
  .modal-close-bar {
    display: none; /* Hide drag bar on desktop */
  }
}

.modal-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--glass-border-faint);
  padding-bottom: 15px;
}

.modal-title {
  font-family: 'Outfit', sans-serif;
  font-size: 24px;
  font-weight: 800;
  color: white;
  margin: 0;
}

.modal-content {
  color: var(--text-main);
  line-height: 1.6;
}

.modal-content-scroll {
  overflow-y: auto;
  padding-right: 10px;
}

@keyframes slideUpModal {
  from { transform: translateY(100%); }
  to { transform: translateY(0); }
}

@keyframes zoomFadeIn {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
.system-fallback {
  display: grid;
  min-height: 100vh;
  place-items: center;
  padding: clamp(24px, 6vw, 64px);
  background:
    radial-gradient(circle at 78% 18%, rgba(208, 176, 111, 0.13), transparent 30%),
    radial-gradient(circle at 18% 82%, rgba(63, 91, 99, 0.16), transparent 34%),
    linear-gradient(135deg, #030507 0%, #071015 54%, #05070a 100%);
  color: #f6efda;
}

.system-fallback--embedded {
  width: 100%;
  min-height: 100%;
  padding: clamp(18px, 4vw, 38px);
  background:
    radial-gradient(circle at 78% 18%, rgba(208, 176, 111, 0.09), transparent 34%),
    linear-gradient(135deg, rgba(2, 5, 8, 0.96), rgba(7, 13, 16, 0.96));
}

.system-fallback__card {
  position: relative;
  width: min(560px, 100%);
  overflow: hidden;
  padding: clamp(28px, 5vw, 48px);
  border: 1px solid rgba(208, 176, 111, 0.24);
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(255, 247, 224, 0.045), transparent 46%),
    rgba(3, 7, 10, 0.82);
  box-shadow:
    0 26px 70px rgba(0, 0, 0, 0.46),
    inset 0 1px 0 rgba(255, 247, 224, 0.07);
  text-align: left;
}

.system-fallback__card::before,
.system-fallback__card::after {
  content: '';
  position: absolute;
  pointer-events: none;
}

.system-fallback__card::before {
  inset: 14px;
  border: 1px solid rgba(208, 176, 111, 0.08);
}

.system-fallback__card::after {
  right: 18px;
  bottom: 18px;
  width: min(34%, 180px);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(208, 176, 111, 0.46));
  box-shadow:
    0 -18px 0 rgba(208, 176, 111, 0.1),
    0 -36px 0 rgba(91, 115, 122, 0.08);
}

.system-fallback__card--compact {
  max-width: 460px;
  padding: clamp(22px, 4vw, 34px);
}

.system-fallback__kicker {
  display: block;
  margin-bottom: 0.86rem;
  color: rgba(208, 176, 111, 0.88);
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.system-fallback h1,
.system-fallback h2 {
  max-width: 12ch;
  margin: 0;
  color: #fff7e0;
  font-family: var(--font-heading, 'Syne', sans-serif);
  font-size: clamp(2rem, 6vw, 4.25rem);
  line-height: 0.95;
  letter-spacing: 0;
}

.system-fallback h2 {
  max-width: 15ch;
  font-size: clamp(1.55rem, 4vw, 2.6rem);
}

.system-fallback p {
  max-width: 36rem;
  margin: 1rem 0 0;
  color: rgba(246, 239, 218, 0.76);
  font-size: 1rem;
  line-height: 1.65;
}

.system-fallback__details {
  max-width: 100%;
  margin-top: 1.35rem;
  padding: 0.9rem 1rem;
  overflow-x: auto;
  border: 1px solid rgba(208, 176, 111, 0.12);
  border-radius: 6px;
  background: rgba(0, 0, 0, 0.3);
  color: rgba(218, 229, 224, 0.68);
}

.system-fallback__details code {
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.78rem;
}

.system-fallback__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  margin-top: 1.6rem;
}

.system-fallback__action {
  display: inline-flex;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  margin-top: 1.6rem;
  padding: 0.68rem 1rem;
  border: 1px solid rgba(208, 176, 111, 0.3);
  border-radius: 6px;
  background: rgba(208, 176, 111, 0.08);
  color: #fff7e0;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color 160ms ease, background 160ms ease, transform 160ms ease;
}

.system-fallback__actions .system-fallback__action {
  margin-top: 0;
}

.system-fallback__action:hover,
.system-fallback__action:focus-visible {
  border-color: rgba(208, 176, 111, 0.52);
  background: rgba(208, 176, 111, 0.14);
  outline: none;
  transform: translateY(-1px);
}

.system-fallback__action:disabled {
  cursor: not-allowed;
  opacity: 0.56;
  transform: none;
}

.system-fallback__action--quiet {
  border-color: rgba(246, 239, 218, 0.14);
  background: rgba(246, 239, 218, 0.04);
  color: rgba(246, 239, 218, 0.78);
}

@media (max-width: 560px) {
  .system-fallback {
    padding: 18px;
  }

  .system-fallback__card {
    padding: 24px;
  }
}
/* Stats Bars (OCEAN & General) - Mobile First */
.ocean-bars {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-3);
}

@media (min-width: 768px) {
  .ocean-bars {
    gap: var(--spacing-4);
  }
}

.ocean-bar-row {
  margin-bottom: var(--spacing-1);
}

.ocean-bar-label {
  display: flex;
  justify-content: space-between;
  margin-bottom: var(--spacing-2);
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

@media (min-width: 768px) {
  .ocean-bar-label {
    font-size: 14px;
  }
}

.ocean-bar-bg {
  width: 100%;
  height: var(--spacing-2);
  border-radius: var(--radius-sm);
  background: var(--glass-border-faint);
  overflow: hidden;
  box-shadow: inset 0 1px 2px rgba(0,0,0,0.2);
}

.ocean-bar-fill {
  height: 100%;
  border-radius: var(--radius-sm);
  background: linear-gradient(90deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);
  transition: width 1.2s var(--ease-out-expo);
  box-shadow: 0 0 12px rgba(var(--accent-primary-rgb), 0.4);
}

/* Strength Chips & Badges */
.strengths-chips {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-3);
  list-style: none;
  padding: 0;
}

@media (min-width: 768px) {
  .strengths-chips {
    gap: var(--spacing-4);
  }
}

.strength-chip {
  padding: var(--spacing-3) var(--spacing-4);
  background: var(--glass-light);
  border: 1px solid var(--glass-border);
  border-left: var(--spacing-1) solid var(--accent, var(--accent-primary));
  border-radius: var(--radius-md);
  font-size: 14px;
  font-weight: 600;
  color: white;
  transition: all 0.3s var(--ease-out-expo);
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-3);
}

.strength-chip:hover {
  background: var(--glass-border-faint);
  transform: translateX(var(--spacing-1));
}

.badge-growth {
  background: var(--success);
  color: var(--bg-dark);
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  width: var(--spacing-6);
  height: var(--spacing-6);
  font-size: 12px;
  box-shadow: 0 0 10px rgba(var(--success-rgb), 0.4);
}

.shadow-mirror-card {
  background: rgba(var(--danger-rgb), 0.05);
  border: 1px solid rgba(var(--danger-rgb), 0.2);
  padding: var(--spacing-5);
  border-radius: var(--radius-lg);
  margin-top: var(--spacing-5);
}

@media (min-width: 768px) {
  .shadow-mirror-card {
    padding: var(--spacing-8);
  }
}

.shadow-text {
  color: var(--color-shadow-light, #fca5a5);
  line-height: 1.7;
  font-size: 15px;
}
/* ═══════════════════════════════════════════════════════════════════════
   Report Section Rail — einheitliche Punkte-Leiste für Essenz-, Kodex- und
   Signaturreport (inkl. Tiefen-Abschnitte). Ein Renderer, ein Look.
   Übernommen aus der ursprünglichen Essenz-Leiste (.frv3-side-nav), damit die
   gewohnte Optik erhalten bleibt.
   ═══════════════════════════════════════════════════════════════════════ */
.report-rail {
  position: fixed;
  right: 28px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  gap: 16px;
  z-index: 100;
  padding: 16px 10px;
  background: rgba(255, 255, 255, 0.03);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 30px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.report-rail.visible {
  opacity: 1;
  pointer-events: auto;
}

.report-rail-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.2);
  cursor: pointer;
  border: none;
  padding: 0;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
}

.report-rail-dot:hover {
  background: rgba(255, 255, 255, 0.5);
  transform: scale(1.3);
}

.report-rail-dot.active {
  background: var(--accent, #a8b4ff);
  transform: scale(1.5);
  box-shadow: 0 0 10px color-mix(in oklab, var(--accent, #a8b4ff) 45%, transparent);
}

.report-rail-dot-label {
  position: absolute;
  right: 24px;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(10, 10, 20, 0.9);
  color: #fff;
  padding: 4px 10px;
  border-radius: 6px;
  font-size: 11px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
  font-weight: 500;
  letter-spacing: 0.02em;
  border: 1px solid rgba(255, 255, 255, 0.1);
}

.report-rail-dot:hover .report-rail-dot-label {
  opacity: 1;
  transform: translateY(-50%) translateX(-4px);
}

@media (max-width: 1150px) {
  .report-rail {
    display: flex;
    right: 10px;
    padding: 14px 8px;
    gap: 14px;
    transform: translateY(-50%) scale(0.85);
    background: rgba(10, 10, 20, 0.6);
    border-color: rgba(255, 255, 255, 0.15);
  }

  .report-rail-dot-label {
    display: none;
  }
}

@media (max-width: 600px) {
  .report-rail {
    display: none;
  }
}
/**
 * RadarChart - Arcane/Crystalline Styling
 */

:root {
  --radar-accent: var(--accent-primary, #a78bfa);
  --radar-accent-glow: rgba(167, 139, 250, 0.4);
  --radar-axis-color: var(--glass-border-faint, rgba(255, 255, 255, 0.1));
}

.radar-chart-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
}

.radar-chart-svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}

.radar-grid-ring {
  fill: none;
  stroke: var(--radar-axis-color);
  stroke-width: 0.45;
  opacity: 0.78;
}

.radar-axis-line {
  stroke: var(--radar-axis-color);
  stroke-width: 0.45;
  stroke-dasharray: 2 2;
  opacity: 0.68;
}

.radar-label-text {
  fill: rgba(255, 255, 255, 0.70);
  font-size: 13px; /* Erhöht für bessere Barrierefreiheit */
  font-family: var(--font-mono, monospace);
  font-weight: 600;
  letter-spacing: 0.12em;
  pointer-events: none;
  text-shadow: 0 0 10px rgba(0, 0, 0, 0.9); /* Kontrast-Schatten gegen helle BGs */
}

.radar-data-polygon {
  stroke-width: 1.35;
  stroke-opacity: 0.78;
  stroke-linejoin: round;
  transition: all 0.5s var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1));
}

.radar-data-point {
  stroke-width: 0.65;
  filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.18));
  transition: all 0.3s ease;
}

/* Detail View Variant (Larger) */
.radar-wrapper-large {
  width: 300px;
  height: 300px;
}

.radar-wrapper-large .radar-label-text {
  font-size: 14px;
  fill: rgba(255, 255, 255, 0.9);
  font-weight: 700;
}

/* Responsive Audit (Rule R5 compliance) */
@media (max-width: 768px) {
  .radar-wrapper-large {
    width: 260px;
    height: 260px;
  }
  
  .radar-label-text {
    letter-spacing: 0.05em;
  }
}

@media (max-width: 480px) {
  .radar-wrapper-large {
    width: 220px;
    height: 220px;
  }
}
/* ═══════════════════════════════════════════════════════════════
   Scene Atmosphere – Atmospheric Backgrounds & Interactive Scenes
   Covers: Pattern (Scene 1), Threshold (Scene 2)
   ═══════════════════════════════════════════════════════════════ */

/* ── Scene 1: Pattern (Atmosphere) ─────────────────────────────── */

.scene-geometry {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 1;
  opacity: 0.8;
  transition: transform 0.1s ease-out;
}

/* SVG Elements in Pattern Scene */
.scene-geometry circle,
.scene-geometry line,
.scene-geometry polygon {
  vector-effect: non-scaling-stroke;
}

.geo-cyan {
  stroke: var(--accent-secondary);
  transform-origin: 450px 300px;
}

.geo-cyan-faint {
  stroke: rgba(var(--accent-secondary-rgb), 0.3);
}

.geo-violet {
  stroke: var(--accent-primary);
  transform-origin: 450px 300px;
}

.geo-violet-faint {
  stroke: rgba(var(--accent-primary-rgb), 0.2);
}

.geo-center-origin {
  transform-origin: center;
}

.pattern-science-badge {
  display: inline-block;
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  color: var(--accent-secondary);
  background: rgba(var(--accent-secondary-rgb), 0.08);
  padding: 4px 12px;
  border-radius: 20px;
  border: 1px solid rgba(var(--accent-secondary-rgb), 0.2);
  margin-bottom: 1.5rem;
  text-transform: uppercase;
}

/* Legend Styling */
.dimension-legend {
  margin: 1.2rem 0 1rem;
  display: flex;
  flex-direction: column;
  gap: 8px; /* Reduced from 12px to prevent overflow */
  max-height: 300px; /* Guard: prevents legend from overflowing into other sections */
  overflow: visible;
}

.dimension-legend-item {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 0.88rem;
  padding: 4px 8px;
  border-radius: 6px;
  background: transparent;
  border: none;
  cursor: default;
  transition: background 0.25s ease, transform 0.2s ease;
  text-align: left;
  width: 100%;
}

.dimension-legend-item:hover,
.dimension-legend-item.active {
  background: rgba(var(--accent-secondary-rgb), 0.07);
  transform: translateX(3px);
  cursor: pointer;
}

.dim-key {
  font-family: var(--font-mono, monospace);
  font-weight: 700;
  color: var(--accent-secondary);
  width: 20px;
  font-size: 0.85rem;
  letter-spacing: 0.05em;
  text-shadow: 0 0 8px rgba(var(--accent-secondary-rgb), 0.5);
  flex-shrink: 0;
}

.dim-label {
  font-weight: 500;
  color: var(--slate-50);
  min-width: 130px;
  font-size: 0.85rem;
}

.dim-desc {
  color: var(--slate-400);
  font-size: 0.78rem;
  opacity: 0.8;
  line-height: 1.3;
}

/* ── Scene 2: Threshold (Resonance Cluster) ─────────────────────── */

.scene-threshold {
  overflow: hidden;
}

.threshold-bg-geometry {
  position: absolute;
  inset: -10%;
  pointer-events: none;
  z-index: 1;
}

.resonance-cluster-container {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
}

.resonance-shard-mini {
  position: absolute;
  width: 42px;
  height: 64px;
  background: rgba(var(--white-rgb), 0.05);
  backdrop-filter: blur(12px) saturate(1.8);
  clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
  border: 1px solid rgba(var(--white-rgb), 0.15);
  cursor: pointer;
  transition: all 0.5s var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1));
  box-shadow: inset 0 0 10px rgba(var(--white-rgb), 0.05);
}

.resonance-shard-mini::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(var(--white-rgb), 0.2) 0%, transparent 50%, rgba(var(--white-rgb), 0.1) 100%);
  opacity: 0.5;
  pointer-events: none;
}

.resonance-cluster-container .resonance-shard-mini.active {
  z-index: 50;
  transform: scale(1.5);
  box-shadow: 0 0 30px var(--shard-glow);
}

.ghost-shard {
  background: rgba(var(--slate-800-rgb), 0.3);
  border-style: dashed;
  opacity: 0.2;
}

.shard-designation-tag {
  position: absolute;
  bottom: -20px;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-mono, monospace);
  font-size: 8px;
  color: var(--slate-400);
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.3s;
}

.resonance-shard-mini:hover .shard-designation-tag {
  opacity: 1;
}

.shard-light-core {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
}

.shard-shimmer {
  position: absolute;
  top: -100%;
  left: -100%;
  width: 300%;
  height: 300%;
  background: linear-gradient(
    45deg,
    transparent 45%,
    rgba(var(--white-rgb), 0.15) 50%,
    transparent 55%
  );
  animation: shard-sweep 8s infinite ease-in-out;
  pointer-events: none;
}

@keyframes shard-sweep {
  0% { transform: translate(-30%, -30%) rotate(0deg); }
  100% { transform: translate(30%, 30%) rotate(0deg); }
}

.shard-aura {
  position: absolute;
  inset: -20%;
  background: var(--shard-glow, rgba(var(--accent-secondary-rgb), 0.2));
  filter: blur(20px);
  z-index: 0;
  opacity: 0;
  transition: opacity 0.4s ease;
}

/* Shard Hover – Premium Haptik */
.resonance-shard-mini:hover {
  filter: brightness(1.4) contrast(1.1) drop-shadow(0 0 15px var(--shard-glow));
  backdrop-filter: blur(8px) saturate(2.2);
  border-color: rgba(var(--white-rgb), 0.4);
  z-index: 50;
}

.resonance-shard-mini:hover .shard-aura,
.resonance-shard-mini.active .shard-aura {
  opacity: 1;
  transform: scale(1.3);
}

/* Parallax Helpers */
.parallax-layer-slow { transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1); }
.parallax-layer-fast { transition: transform 0.1s cubic-bezier(0.16, 1, 0.3, 1); }
.parallax-layer-inverse { transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1); }

/* Technical Narrative Casing (R2) */
.hint-scan-prefix {
  color: var(--accent-secondary);
  font-weight: 700;
  opacity: 0.8;
}

.fragment-hint-content .hint-status {
  text-transform: none; /* Force Sentence Case compliance */
  font-style: italic;
  opacity: 0.6;
}

/* Hint Overlay - Positioned center-bottom for maximum visibility */
.fragment-hint-overlay {
  position: absolute;
  bottom: var(--layout-bottom-safe);
  left: 50%;
  transform: translateX(-50%);
  z-index: 100;
  width: 100%;
  max-width: 600px;
  pointer-events: none;
}

.fragment-hint-content {
  background: rgba(var(--slate-900-rgb), 0.6);
  backdrop-filter: blur(12px);
  padding: 16px 24px;
  border-radius: 12px;
  border: 1px solid rgba(var(--accent-secondary-rgb), 0.2);
  box-shadow: 0 10px 30px rgba(var(--black-rgb), 0.4);
}

.hint-id {
  font-family: var(--font-mono, monospace);
  font-size: 0.65rem;
  color: var(--accent-secondary);
  margin-bottom: 4px;
  opacity: 0.7;
}

.hint-text {
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--slate-50);
  display: block;
  margin: 4px 0;
  line-height: 1.4;
}

.hint-status {
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  color: var(--slate-400);
  letter-spacing: 0.05em;
}

.fragment-hint-idle {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--text-muted);
  opacity: 0.6;
  letter-spacing: 0.1em;
  display: flex;
  align-items: center;
  justify-content: center;
}

.fragment-hint-idle .hint-idle-icon {
  color: var(--accent-secondary);
  margin-right: 8px;
}

/* ── Responsive Guards (R5) ─────────────────────────────────────── */

@media (max-width: 768px) {
  .scene-pattern-layout {
    flex-direction: column;
    padding-top: 40px;
    gap: 32px;
  }
  
  .pattern-text-col {
    text-align: center;
    width: 100%;
  }
  
  .dimension-legend {
    align-items: center;
  }
  
  .scene-ocean-embed {
    width: 240px;
    margin: 0 auto;
  }
  
  .fragment-hint-overlay {
    min-width: 90vw;
    bottom: 15%;
  }
}

@media (max-width: 480px) {
  .scene-headline {
    font-size: 2rem;
  }
  
  .dim-label {
    min-width: 100px;
  }
  
  .dim-desc {
    display: none; /* Hide descriptions on very small screens to avoid clutter */
  }
}
/* ================================================================== */
/*  OrbReveal – der Essenz-Moment: Der Orb bekommt seine Farbe        */
/*                                                                    */
/*  Phasen (Klassen am Root):                                         */
/*    .phase-seed     – entsättigter Orb, Leselinien                  */
/*    .phase-infusion – Essenzfarbe flutet Orb und Raum               */
/*    .phase-naming   – Name erscheint, Atmosphäre hält               */
/* ================================================================== */

.orb-reveal {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--bg-deep);
  overflow: hidden;
}

/* ---- Atmosphäre: Essenzfarben im Raum ---- */

.orb-reveal__vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.orb-reveal__bloom {
  position: absolute;
  width: 72vmax;
  height: 72vmax;
  border-radius: 999px;
  filter: blur(90px);
  opacity: 0;
  transition: opacity 2.2s var(--ease-out-expo);
  will-change: opacity;
}

.orb-reveal__bloom--primary {
  top: -28vmax;
  left: -18vmax;
  background: radial-gradient(
    circle,
    rgba(var(--orb-primary-rgb), 0.16),
    transparent 64%
  );
}

.orb-reveal__bloom--secondary {
  bottom: -30vmax;
  right: -20vmax;
  background: radial-gradient(
    circle,
    rgba(var(--orb-secondary-rgb), 0.13),
    transparent 64%
  );
}

.orb-reveal.phase-infusion .orb-reveal__bloom,
.orb-reveal.phase-naming .orb-reveal__bloom {
  opacity: 1;
}

/* ---- Bühne ---- */

.orb-reveal__stage {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  flex: 1;
  pointer-events: none;
}

/* ---- Leselinien der sechs Signalfelder ---- */

.orb-reveal__reading {
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  width: clamp(300px, 46vw, 400px);
  height: clamp(300px, 46vw, 400px);
  z-index: 1;
}

.orb-reveal__reading-ring {
  fill: none;
  stroke: rgba(var(--white-rgb), 0.07);
  stroke-width: 0.35;
}

.orb-reveal__reading-line {
  stroke: rgba(var(--white-rgb), 0.22);
  stroke-width: 0.45;
  stroke-linecap: round;
}

.orb-reveal__reading-node {
  fill: rgba(var(--white-rgb), 0.55);
}

/* ---- Lichtimpuls beim Farbeintritt ---- */

.orb-reveal__pulse {
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  width: clamp(216px, 32vw, 280px);
  height: clamp(216px, 32vw, 280px);
  border-radius: 999px;
  border: 1px solid rgba(var(--orb-primary-rgb), 0.5);
  box-shadow:
    0 0 42px rgba(var(--orb-primary-rgb), 0.22),
    inset 0 0 28px rgba(var(--orb-primary-rgb), 0.12);
  z-index: 1;
}

/* ---- Peak-Flare beim Farbeintritt ---- */

.orb-reveal__flare {
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  width: clamp(216px, 32vw, 280px);
  height: clamp(216px, 32vw, 280px);
  border-radius: 999px;
  background: radial-gradient(
    circle,
    rgba(var(--white-rgb), 0.55) 0%,
    rgba(var(--orb-primary-rgb), 0.4) 38%,
    transparent 70%
  );
  filter: blur(10px);
  mix-blend-mode: screen;
  z-index: 3;
  pointer-events: none;
}

.orb-reveal__pulse--second {
  border-color: rgba(var(--orb-secondary-rgb), 0.45);
  box-shadow:
    0 0 36px rgba(var(--orb-secondary-rgb), 0.18),
    inset 0 0 24px rgba(var(--orb-secondary-rgb), 0.1);
}

/* ---- Der Orb: entsättigt → Essenzfarbe ---- */

.orb-reveal__orb-shell {
  position: relative;
  z-index: 2;
  filter: saturate(0.06) brightness(0.48) contrast(0.94);
  transition: filter 2s var(--ease-out-expo);
  will-change: transform, filter;
}

.orb-reveal__orb-shell.is-colored {
  filter: saturate(1) brightness(1);
}

.orb-reveal__orb-shell .orb-id__visual {
  filter: drop-shadow(0 0 34px rgba(var(--orb-primary-rgb), 0.3));
}

/* Seed-Phase: der Orb atmet sichtbar – Anticipation durch Präsenz. */
.orb-reveal__orb-shell.phase-seed .orb-id__visual {
  animation: orb-reveal-seed-breath 2.6s ease-in-out infinite;
}

@keyframes orb-reveal-seed-breath {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.035); }
}

.orb-reveal__identity-slot {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
}

/* ---- Namens-Phase ---- */

.orb-reveal__text-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-top: 8px;
  width: 90%;
  max-width: 640px;
  z-index: 2;
  text-align: center;
}

.orb-reveal__eyebrow {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--letter-spacing-story);
  text-transform: uppercase;
  color: var(--text-faint);
}

.orb-reveal__name {
  font-size: clamp(36px, 6vw, 56px);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.1;
  margin: 0;
  color: var(--text-primary);
  text-shadow: 0 0 48px rgba(var(--orb-primary-rgb), 0.35);
}

.orb-reveal__handoff {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--letter-spacing-story);
  text-transform: uppercase;
  color: rgba(246, 239, 218, 0.58);
  margin: 6px 0 0;
}

.orb-reveal__tagline {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: clamp(var(--text-sm), 2.5vw, var(--text-lg));
  color: var(--text-secondary);
  margin: 0;
  max-width: 30em;
  line-height: 1.5;
}

/* ---- Skip button ---- */

.orb-reveal__skip {
  position: absolute;
  bottom: max(28px, env(safe-area-inset-bottom));
  left: 50%;
  translate: -50% 0;
  z-index: 3;
  min-height: 44px;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--letter-spacing-interface);
  text-transform: uppercase;
  color: var(--text-faint);
  background: transparent;
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm);
  padding: 8px 20px;
  cursor: pointer;
  pointer-events: auto;
  transition:
    color var(--transition-fast),
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.orb-reveal__skip:hover {
  color: rgba(255, 255, 255, 0.8);
  border-color: rgba(255, 255, 255, 0.35);
  box-shadow: 0 0 16px var(--orb-accent, rgba(255, 255, 255, 0.15));
}

.orb-reveal__skip:focus-visible {
  outline: 2px solid var(--orb-accent, #fff);
  outline-offset: 2px;
}

.orb-reveal__continue {
  position: absolute;
  bottom: max(28px, env(safe-area-inset-bottom));
  left: 50%;
  translate: -50% 0;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-width: min(280px, calc(100vw - 40px));
  min-height: 48px;
  padding: 13px 24px;
  border: 1px solid rgba(255, 246, 213, 0.68);
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--metal-gold) 86%, #f7f1de);
  color: #0a0c10;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: var(--letter-spacing-interface);
  text-transform: uppercase;
  cursor: pointer;
  pointer-events: auto;
  transition:
    transform var(--transition-fast),
    filter var(--transition-fast),
    box-shadow var(--transition-fast);
}

.orb-reveal__continue:hover {
  transform: translateY(-1px);
  filter: brightness(1.04);
  box-shadow: 0 10px 28px rgba(var(--metal-gold-rgb), 0.18);
}

.orb-reveal__continue:focus-visible {
  outline: 2px solid var(--metal-gold);
  outline-offset: 3px;
}

/* ================================================================== */
/*  Reduced motion: fertiger Zustand sofort, keine Animationen        */
/* ================================================================== */

@media (prefers-reduced-motion: reduce) {
  .orb-reveal .orb-reveal__bloom {
    transition: none;
    opacity: 1;
  }

  .orb-reveal .orb-reveal__orb-shell {
    transition: none;
    filter: saturate(1) brightness(1);
  }

  .orb-reveal .orb-reveal__pulse,
  .orb-reveal .orb-reveal__flare,
  .orb-reveal .orb-reveal__reading {
    display: none;
  }

  .orb-reveal .orb-reveal__orb-shell.phase-seed .orb-id__visual {
    animation: none;
  }
}
/* Kodex reveal v2: matrix plus Orb form as one artefact. */

.kodex-reveal-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: grid;
  place-items: center;
  padding: clamp(18px, 4vw, 38px);
  overflow: hidden;
  background:
    radial-gradient(ellipse 60% 52% at 50% 18%, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 16%, transparent), transparent 70%),
    #030407;
  backdrop-filter: blur(12px);
  color: var(--text-primary);
  isolation: isolate;
}

.kodex-reveal-atmosphere {
  z-index: 0;
  opacity: 0.76;
}

.kr-architectural-frame {
  position: absolute;
  inset: 8% 7%;
  z-index: 1;
  border: 0;
  background:
    radial-gradient(ellipse 42% 18% at 50% 58%, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 14%, transparent), transparent 72%),
    radial-gradient(ellipse 36% 22% at 50% 43%, color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 10%, transparent), transparent 76%);
  opacity: 0.86;
  pointer-events: none;
}

.kr-architectural-frame::before {
  content: '';
  position: absolute;
  inset: 0;
  opacity: 0.34;
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 62%, transparent), transparent) left top / min(116px, 18vw) 1px no-repeat,
    linear-gradient(180deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 62%, transparent), transparent) left top / 1px min(116px, 18vw) no-repeat,
    linear-gradient(270deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 62%, transparent), transparent) right top / min(116px, 18vw) 1px no-repeat,
    linear-gradient(180deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 62%, transparent), transparent) right top / 1px min(116px, 18vw) no-repeat,
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 48%, transparent), transparent) left bottom / min(86px, 14vw) 1px no-repeat,
    linear-gradient(0deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 48%, transparent), transparent) left bottom / 1px min(86px, 14vw) no-repeat,
    linear-gradient(270deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 48%, transparent), transparent) right bottom / min(86px, 14vw) 1px no-repeat,
    linear-gradient(0deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 48%, transparent), transparent) right bottom / 1px min(86px, 14vw) no-repeat;
}

.kr-architectural-frame::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 54%;
  width: min(520px, 52vw);
  height: min(150px, 20vh);
  border-radius: 999px;
  background:
    radial-gradient(ellipse at center, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 14%, transparent), transparent 68%);
  filter: blur(18px);
  opacity: 0.64;
  transform: translate(-50%, -50%);
}

.kodex-reveal {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: minmax(220px, 330px) minmax(300px, 430px);
  width: min(920px, calc(100vw - 48px));
  max-height: calc(100vh - 48px);
  gap: clamp(24px, 5vw, 58px);
  align-items: center;
  padding: clamp(22px, 4vw, 46px);
  border-radius: 18px;
  overflow: auto;
}

.kr-orb-lock {
  position: relative;
  display: grid;
  min-height: 300px;
  place-items: center;
}

.kr-orb-lock::before {
  content: '';
  position: absolute;
  width: min(270px, 78vw);
  aspect-ratio: 1;
  border: 1px solid color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 28%, transparent);
  border-radius: 999px;
  background:
    conic-gradient(from 12deg, transparent, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 16%, transparent), transparent 34%, color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 14%, transparent), transparent 68%, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 16%, transparent), transparent);
  box-shadow:
    0 0 72px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 14%, transparent),
    inset 0 0 54px rgba(0, 0, 0, 0.32);
  opacity: 0.8;
}

.kr-orb-lock-ring {
  display: none;
}

.kr-assembly-stage {
  position: relative;
  z-index: 2;
  display: grid;
  place-items: center;
}

.kr-assembly-stage--complete {
  width: min(270px, 78vw);
}

.kr-orb-placeholder {
  position: relative;
  z-index: 2;
  display: grid;
  width: 142px;
  aspect-ratio: 1;
  place-items: center;
  border: 1px solid color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 32%, transparent);
  border-radius: 999px;
  color: var(--kodex-reveal-accent, #d8bd7a);
  font-family: var(--font-mono);
  font-size: 2rem;
  font-weight: 900;
  letter-spacing: 0.1em;
}

.kr-matrix-container {
  display: flex;
  justify-content: center;
}

.kr-matrix {
  display: grid;
  width: 100%;
  max-width: 410px;
  grid-template-columns: minmax(78px, 0.9fr) repeat(3, minmax(82px, 1fr));
  gap: 8px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.kodex-type-matrix__row {
  display: contents;
}

.kr-corner {
  min-width: 0;
}

.kr-col-header,
.kr-row-header {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 24px;
  padding: 4px 6px;
  color: rgba(235, 226, 204, 0.5);
  font-family: var(--font-mono);
  font-size: clamp(0.54rem, 0.64vw, 0.64rem);
  font-weight: 800;
  letter-spacing: 0.06em;
  line-height: 1.12;
  text-align: center;
  text-transform: uppercase;
  white-space: nowrap;
}

.kr-col-header > *,
.kr-row-header > * {
  max-width: 100%;
  min-width: 0;
  font-size: inherit;
  letter-spacing: inherit;
  overflow-wrap: normal;
  white-space: nowrap;
}

.kr-row-header {
  justify-content: flex-end;
  padding-right: 10px;
  text-align: right;
}

.kr-cell {
  position: relative;
  aspect-ratio: 1;
  overflow: hidden;
  border: 1px solid rgba(216, 189, 122, 0.14);
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.018)),
    rgba(0, 0, 0, 0.24);
}

.kr-cell::before {
  content: '';
  position: absolute;
  inset: 12%;
  z-index: 2;
  border: 1px solid rgba(255, 255, 255, 0.055);
  border-radius: 5px;
  pointer-events: none;
}

.kr-cell-frame-preview {
  position: absolute;
  inset: 8%;
  z-index: 1;
  display: grid;
  place-items: center;
  opacity: 0.62;
  filter:
    drop-shadow(0 0 10px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 16%, transparent))
    saturate(0.82)
    contrast(1.08);
  transition:
    opacity 0.42s ease,
    filter 0.42s ease,
    transform 0.42s ease;
}

.kr-cell-frame-preview img,
.kr-cell-frame-preview span {
  grid-area: 1 / 1;
  width: 100%;
  height: 100%;
}

.kr-cell-frame-preview img {
  object-fit: contain;
}

.kr-cell-frame-preview span {
  width: 58%;
  height: 58%;
  border-radius: 999px;
  background:
    radial-gradient(circle at 36% 28%, rgba(255, 255, 255, 0.2), transparent 28%),
    radial-gradient(circle at 52% 58%, color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 18%, transparent), transparent 64%),
    rgba(255, 255, 255, 0.035);
  box-shadow:
    inset 0 0 18px rgba(0, 0, 0, 0.34),
    0 0 16px color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 8%, transparent);
}

.kr-cell-frame-preview .kodex-type-matrix__core {
  background:
    radial-gradient(circle at 36% 28%, rgba(255, 255, 255, 0.22), transparent 28%),
    linear-gradient(
      135deg,
      color-mix(in srgb, var(--kodex-matrix-primary, #d8bd7a) 36%, transparent),
      color-mix(in srgb, var(--kodex-matrix-secondary, #d7d3ca) 26%, transparent)
    ),
    rgba(255, 255, 255, 0.035);
}

.kr-cell-dimmed .kodex-type-matrix__core {
  background:
    radial-gradient(circle at 36% 28%, rgba(255, 255, 255, 0.12), transparent 28%),
    rgba(155, 158, 164, 0.08);
}

.kr-cell-scanning {
  border-color: color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 32%, transparent);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.026)),
    rgba(0, 0, 0, 0.2);
}

.kr-cell-scanning .kr-cell-frame-preview {
  opacity: 0.78;
  filter:
    drop-shadow(0 0 11px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 18%, transparent))
    saturate(0.9)
    contrast(1.08);
}

.kr-cell-glowing,
.kr-cell-active {
  border-color: var(--kodex-reveal-accent, #d8bd7a);
  background:
    radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 28%, transparent), transparent 72%),
    rgba(255, 255, 255, 0.05);
  box-shadow:
    0 0 28px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 28%, transparent),
    inset 0 0 22px color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 12%, transparent);
}

.kr-cell-glowing .kr-cell-frame-preview,
.kr-cell-active .kr-cell-frame-preview {
  opacity: 1;
  filter:
    drop-shadow(0 0 16px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 34%, transparent))
    drop-shadow(0 0 18px color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 18%, transparent))
    saturate(1.04)
    contrast(1.14);
  transform: scale(1.06);
}

.kr-cell-dimmed {
  opacity: 0.32;
}

.kr-cell-dimmed .kr-cell-frame-preview {
  opacity: 0.48;
  filter:
    drop-shadow(0 0 6px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 8%, transparent))
    grayscale(0.2)
    saturate(0.56)
    contrast(0.95);
}

.kr-cell-glow {
  position: absolute;
  inset: 0;
  z-index: 0;
  background: radial-gradient(circle, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 52%, transparent) 0%, transparent 70%);
  pointer-events: none;
}

.kr-result,
.kr-complete {
  grid-column: 2;
}

.kr-result {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  text-align: left;
}

.kr-result-badge {
  display: inline-flex;
  width: fit-content;
  padding: 6px 10px;
  border: 1px solid color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 28%, transparent);
  border-radius: 7px;
  background: color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 12%, transparent);
  color: #fff7e0;
}

.kr-result-title {
  margin: 0;
  color: #fff7e0;
  font-family: var(--font-heading);
  font-size: clamp(2rem, 4vw, 3.25rem);
  font-weight: 820;
  letter-spacing: 0;
  line-height: 0.98;
  max-width: 100%;
  text-wrap: balance;
}

.kr-result-matrix {
  margin: 0;
  color: rgba(235, 226, 204, 0.52);
}

.kr-result-hold {
  margin-top: 0.3rem;
  color: color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 72%, transparent);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.kr-complete {
  display: flex;
  max-width: 430px;
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
  text-align: left;
}

.kr-belief {
  margin: 0;
  color: #fff7e0;
  font-family: var(--font-body);
  font-size: 1.02rem;
  font-weight: 680;
  line-height: 1.5;
}

.kr-opening {
  margin: 0;
  color: rgba(246, 239, 218, 0.7);
  font-size: 0.92rem;
  line-height: 1.62;
}

.kr-section-label {
  display: block;
  margin-bottom: 8px;
  color: color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 72%, rgba(255, 255, 255, 0.48));
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.kr-strengths,
.kr-shadow,
.kr-confidence,
.kr-signature-card {
  width: 100%;
  padding: 14px 16px;
  border: 1px solid rgba(216, 189, 122, 0.14);
  border-radius: 10px;
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 8%, transparent), transparent 62%),
    rgba(255, 255, 255, 0.04);
}

.kr-strengths-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.kr-strength-item {
  position: relative;
  padding-left: 16px;
  color: rgba(246, 239, 218, 0.72);
  font-size: 0.9rem;
  line-height: 1.5;
}

.kr-strength-item::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.72em;
  width: 6px;
  height: 1px;
  background: var(--kodex-reveal-accent, #d8bd7a);
}

.kr-shadow {
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 7%, transparent), transparent 62%),
    rgba(0, 0, 0, 0.12);
}

.kr-shadow-text,
.kr-confidence-text,
.kr-signature-desc {
  margin: 0;
  color: rgba(246, 239, 218, 0.7);
  font-size: 0.9rem;
  line-height: 1.55;
}

.kr-compatibility-text,
.kr-compatibility-scope {
  margin: 0;
  color: rgba(246, 239, 218, 0.7);
  font-size: 0.9rem;
  line-height: 1.55;
}

.kr-compatibility-scope {
  margin-top: 6px;
  color: rgba(246, 239, 218, 0.5);
  font-size: 0.78rem;
}

.kr-shadow-text {
  font-style: italic;
}

.kr-confidence {
  border-style: dashed;
}

.kr-confidence-text strong {
  color: #fff7e0;
  font-weight: 760;
}

.kr-signature-title {
  margin: 0;
  color: #fff7e0;
  font-family: var(--font-heading);
  font-size: 1.08rem;
  font-weight: 760;
  line-height: 1.2;
}

.kr-methodology-link {
  width: fit-content;
  color: rgba(235, 226, 204, 0.54);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-decoration: none;
  text-transform: uppercase;
}

.kr-methodology-link:hover,
.kr-methodology-link:focus-visible {
  color: var(--kodex-reveal-accent, #d8bd7a);
  outline: none;
}

.kr-cta {
  align-self: flex-start;
  margin-top: 6px;
  padding: 12px 22px;
  border: 1px solid color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 42%, transparent);
  border-radius: 9px;
  background: linear-gradient(180deg, var(--kodex-reveal-accent, #d8bd7a), color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 78%, #17110a));
  color: #05070c;
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: 0.74rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: transform 0.18s ease, filter 0.18s ease;
}

.kr-cta:hover,
.kr-cta:focus-visible {
  filter: brightness(1.05);
  outline: none;
  transform: translateY(-1px);
}

.kr-skip {
  position: absolute;
  right: clamp(20px, 4vw, 38px);
  bottom: clamp(18px, 4vw, 34px);
  border: 0;
  background: none;
  color: rgba(235, 226, 204, 0.45);
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition: color 0.18s ease;
}

.kr-skip:hover,
.kr-skip:focus-visible {
  color: #fff7e0;
  outline: none;
}

@media (max-width: 820px) {
  .kodex-reveal-overlay {
    align-items: stretch;
    justify-items: stretch;
    padding: 0;
    overflow: auto;
    background:
      radial-gradient(ellipse 88% 46% at 50% 20%, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 12%, transparent), transparent 72%),
      radial-gradient(ellipse 82% 58% at 50% 44%, color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 8%, transparent), transparent 76%),
      #030407;
  }

  .kodex-reveal-overlay:not([data-phase='complete']) {
    overflow: hidden;
  }

  .kr-architectural-frame {
    inset: 18px;
    opacity: 0.48;
  }

  .kr-architectural-frame::before {
    opacity: 0.2;
  }

  .kr-architectural-frame::after {
    width: 88vw;
    height: 130px;
    opacity: 0.38;
  }

  .kodex-reveal {
    width: 100%;
    min-height: 100dvh;
    max-height: none;
    grid-template-columns: 1fr;
    gap: 18px;
    padding: calc(20px + env(safe-area-inset-top, 0px)) 18px calc(26px + env(safe-area-inset-bottom, 0px));
    border-radius: 0;
  }

  .kr-orb-lock {
    min-height: 210px;
  }

  .kr-result,
  .kr-complete {
    grid-column: 1;
  }

  .kr-result {
    align-items: center;
    text-align: center;
  }

  .kr-complete {
    max-width: none;
  }

  .kr-matrix {
    max-width: min(360px, 100%);
    grid-template-columns: minmax(46px, 0.65fr) repeat(3, minmax(70px, 1fr));
    gap: 6px;
  }

  .kr-corner {
    min-width: 0;
  }
}

@media (max-width: 420px) {
  .kr-col-header,
  .kr-row-header {
    font-size: 0.55rem;
    letter-spacing: 0.04em;
    padding-inline: 3px;
  }

  .kr-matrix {
    grid-template-columns: minmax(46px, 0.62fr) repeat(3, minmax(70px, 1fr));
    gap: 5px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kr-cta,
  .kr-skip {
    transition: none;
  }
}

/* ════════════ Akt 1 – Zeremonie (KODEX-STAGE-01) ════════════ */

.kr-ceremony {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(14px, 2.4vh, 26px);
  width: min(680px, 92vw);
  min-height: min(700px, calc(100dvh - 92px));
  margin: 0 auto;
  padding: clamp(8px, 2vh, 24px) 0;
  text-align: center;
}

.kr-ceremony__progress {
  position: absolute;
  top: clamp(8px, 1.6vh, 16px);
  left: 50%;
  z-index: 5;
  display: grid;
  width: min(560px, 86vw);
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  padding: 0;
  margin: 0;
  color: rgba(235, 226, 204, 0.46);
  list-style: none;
  pointer-events: none;
  transform: translateX(-50%);
}

.kr-ceremony__progress li {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 7px;
  min-width: 0;
  padding: 7px 0;
  border-top: 1px solid rgba(216, 189, 122, 0.12);
  opacity: 0.44;
}

.kr-ceremony__progress li::after {
  content: '';
  position: absolute;
  right: -6px;
  top: 50%;
  width: 5px;
  height: 1px;
  background: rgba(216, 189, 122, 0.22);
}

.kr-ceremony__progress li:last-child::after {
  display: none;
}

.kr-ceremony__progress li[data-state='done'],
.kr-ceremony__progress li[data-state='active'] {
  border-top-color: color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 48%, transparent);
  opacity: 1;
}

.kr-ceremony__progress li[data-state='active'] {
  color: #fff7e0;
}

.kr-ceremony__progress span,
.kr-ceremony__progress strong {
  display: block;
  min-width: 0;
  font-family: var(--font-mono);
  font-size: clamp(0.58rem, 0.7vw, 0.68rem);
  font-weight: 850;
  letter-spacing: 0.12em;
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
}

.kr-ceremony__progress span {
  color: color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 72%, transparent);
}

.kr-ceremony__progress strong {
  overflow: hidden;
  color: inherit;
  text-overflow: ellipsis;
}

.kr-ceremony__matrix {
  position: absolute;
  top: 50%;
  left: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  translate: -50% -50%;
}

.kr-ceremony__eyebrow {
  color: color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 78%, transparent);
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

/* Größere, zentrale Matrix für die Verengung */
.kr-matrix--ceremony {
  width: min(600px, 90vw);
  grid-template-columns: minmax(92px, 0.72fr) repeat(3, minmax(112px, 1fr));
  gap: 10px;
  filter: brightness(1.42) saturate(1.08);
}

.kr-matrix--ceremony .kr-cell {
  min-height: clamp(76px, 10.5vh, 108px);
  border-color: rgba(216, 189, 122, 0.24);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.032)),
    rgba(0, 0, 0, 0.2);
}

.kr-matrix--ceremony .kr-cell-frame-preview {
  inset: -16%;
}

.kr-matrix--ceremony .kr-cell-scanning .kr-cell-frame-preview {
  opacity: 0.94;
  filter:
    brightness(1.16)
    drop-shadow(0 0 13px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 22%, transparent))
    saturate(0.94)
    contrast(1.1);
}

.kr-matrix--ceremony .kr-col-header,
.kr-matrix--ceremony .kr-row-header {
  color: rgba(246, 239, 218, 0.7);
}

.kr-ceremony__artifact {
  position: relative;
  display: grid;
  width: min(760px, 94vw);
  min-height: clamp(380px, 66vmin, 620px);
  place-items: center;
}

.kodex-reveal-overlay[data-phase='synthesis'] .kr-ceremony {
  gap: clamp(8px, 1.4vh, 14px);
}

.kodex-reveal-overlay[data-phase='synthesis'] .kr-ceremony__artifact {
  min-height: clamp(286px, 45vmin, 420px);
  margin-top: clamp(10px, 1.8vh, 18px);
}

.kr-ceremony__lockwork {
  position: absolute;
  inset: 4% 10% 12%;
  z-index: 0;
  opacity: 0.34;
  pointer-events: none;
  transform: translateY(1%);
}

.kr-ceremony__lock-ring {
  position: absolute;
  left: 50%;
  top: 50%;
  aspect-ratio: 1;
  border-radius: 3px;
  clip-path: polygon(9% 0, 91% 0, 100% 9%, 100% 91%, 91% 100%, 9% 100%, 0 91%, 0 9%);
  opacity: 0.24;
  transform: translate(-50%, -50%);
}

.kr-ceremony__lock-ring--outer {
  width: min(520px, 72vw);
  border: 1px solid color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 12%, transparent);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 5%, transparent), transparent 45%),
    radial-gradient(circle at 50% 50%, transparent 0 64%, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 6%, transparent) 70%, transparent 78%);
  box-shadow:
    inset 0 0 34px rgba(0, 0, 0, 0.18),
    0 0 46px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 4%, transparent);
}

.kr-ceremony__lock-ring--inner {
  width: min(360px, 51vw);
  border: 1px solid color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 9%, transparent);
  box-shadow:
    inset 0 0 24px color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 4%, transparent),
    0 0 28px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 4%, transparent);
}

.kr-ceremony__dock,
.kr-ceremony__contact {
  position: absolute;
  left: 50%;
  top: 50%;
  border-radius: 999px;
  pointer-events: none;
}

.kr-ceremony__dock {
  width: min(82px, 12vw);
  height: 2px;
  opacity: 0.12;
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 34%, transparent),
    color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 14%, transparent),
    transparent
  );
  box-shadow: 0 0 12px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 6%, transparent);
  transform-origin: 50% 50%;
}

.kr-ceremony__dock--north {
  transform: translate(-50%, calc(-50% - min(236px, 33vw))) rotate(0deg);
}

.kr-ceremony__dock--east {
  transform: translate(calc(-50% + min(236px, 33vw)), -50%) rotate(90deg);
}

.kr-ceremony__dock--south {
  transform: translate(-50%, calc(-50% + min(236px, 33vw))) rotate(0deg);
}

.kr-ceremony__dock--west {
  transform: translate(calc(-50% - min(236px, 33vw)), -50%) rotate(90deg);
}

.kr-ceremony__contact {
  width: 8px;
  aspect-ratio: 1;
  opacity: 0;
  background: radial-gradient(circle, #fff8d7 0 15%, var(--kodex-reveal-accent, #d8bd7a) 48%, transparent 72%);
  box-shadow:
    0 0 14px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 54%, transparent),
    0 0 28px color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 24%, transparent);
}

.kr-ceremony__contact--north {
  transform: translate(-50%, calc(-50% - min(202px, 28vw)));
}

.kr-ceremony__contact--east {
  transform: translate(calc(-50% + min(202px, 28vw)), -50%);
}

.kr-ceremony__contact--south {
  transform: translate(-50%, calc(-50% + min(202px, 28vw)));
}

.kr-ceremony__contact--west {
  transform: translate(calc(-50% - min(202px, 28vw)), -50%);
}

.kr-ceremony__blueprint {
  position: absolute;
  top: auto;
  bottom: 1.5%;
  left: 50%;
  z-index: 4;
  display: flex;
  width: min(430px, 78vw);
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px 13px;
  border: 1px solid color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 18%, transparent);
  border-radius: 999px;
  background:
    linear-gradient(90deg, transparent, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 7%, transparent), transparent),
    rgba(4, 7, 10, 0.42);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 18px 42px rgba(0, 0, 0, 0.2);
  text-align: center;
  backdrop-filter: blur(12px);
  translate: -50% 0;
}

.kr-ceremony__blueprint span,
.kr-ceremony__blueprint small {
  display: block;
  margin: 0;
  color: rgba(235, 226, 204, 0.44);
  font-family: var(--font-mono);
  font-size: 0.58rem;
  font-weight: 850;
  letter-spacing: 0.12em;
  line-height: 1.25;
  text-transform: uppercase;
  white-space: nowrap;
}

.kr-ceremony__blueprint strong {
  display: block;
  color: #fff7e0;
  font-family: var(--font-mono);
  font-size: clamp(0.66rem, 0.86vw, 0.78rem);
  font-weight: 780;
  letter-spacing: 0.12em;
  line-height: 1.25;
  text-transform: uppercase;
  white-space: nowrap;
}

.kr-ceremony__blueprint small {
  color: color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 62%, rgba(235, 226, 204, 0.36));
  letter-spacing: 0.08em;
}

.kr-ceremony__axis-line {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 0;
  width: min(430px, 74vw);
  height: 1px;
  opacity: 0;
  pointer-events: none;
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 16%, transparent),
    color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 10%, transparent),
    transparent
  );
  transform: translate(-50%, -50%);
}

.kr-ceremony__axis-line--focus {
  transform: translate(-50%, -50%) rotate(90deg);
}

.kodex-reveal-overlay[data-phase='manifest'] .kr-ceremony__axis-line {
  opacity: 0.06;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__axis-line {
  animation: kr-ceremony-axis-seat 3.6s cubic-bezier(0.16, 1, 0.3, 1) 0.22s both;
}

.kr-ceremony__artifact::before {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 7%;
  z-index: 0;
  width: min(480px, 84vw);
  height: clamp(110px, 18vmin, 170px);
  border-radius: 999px;
  background:
    radial-gradient(ellipse at 50% 44%, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 18%, transparent), transparent 24%),
    radial-gradient(ellipse at 50% 54%, rgba(4, 6, 9, 0.42), rgba(5, 7, 10, 0.16) 54%, transparent 78%),
    linear-gradient(90deg, transparent, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 14%, transparent), transparent);
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 9%, transparent),
    0 26px 62px rgba(0, 0, 0, 0.34);
  opacity: 0.36;
  pointer-events: none;
  transform: translateX(-50%) perspective(420px) rotateX(66deg);
  -webkit-mask-image: radial-gradient(ellipse at 50% 50%, #000 0 54%, transparent 78%);
  mask-image: radial-gradient(ellipse at 50% 50%, #000 0 54%, transparent 78%);
}

.kr-ceremony__artifact::after {
  content: '';
  position: absolute;
  inset: 9% 6% 0;
  z-index: 0;
  border-radius: 999px;
  background:
    radial-gradient(ellipse at 50% 42%, color-mix(in srgb, var(--kodex-reveal-secondary, #8fcac5) 12%, transparent), transparent 52%),
    radial-gradient(ellipse at 50% 48%, color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 11%, transparent), transparent 66%);
  filter: blur(18px);
  opacity: 0.52;
  pointer-events: none;
}

.kr-assembly-stage--ceremony {
  z-index: 1;
}

.kodex-reveal-overlay[data-phase='manifest'] .kr-ceremony__lockwork {
  opacity: 0.22;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__lock-ring--outer {
  animation: kr-ceremony-lock-ring 4.2s cubic-bezier(0.16, 1, 0.3, 1) 0.22s both;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__lock-ring--inner {
  animation: kr-ceremony-inner-ring 3.9s cubic-bezier(0.16, 1, 0.3, 1) 0.18s both;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__dock {
  animation: kr-ceremony-dock-seat 3.4s cubic-bezier(0.16, 1, 0.3, 1) 0.58s both;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__contact--north {
  animation: kr-ceremony-contact-flash 0.74s cubic-bezier(0.16, 1, 0.3, 1) 3.1s both;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__contact--east {
  animation: kr-ceremony-contact-flash 0.74s cubic-bezier(0.16, 1, 0.3, 1) 3.34s both;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__contact--south {
  animation: kr-ceremony-contact-flash 0.74s cubic-bezier(0.16, 1, 0.3, 1) 3.58s both;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__contact--west {
  animation: kr-ceremony-contact-flash 0.74s cubic-bezier(0.16, 1, 0.3, 1) 3.82s both;
}

.kodex-reveal-overlay[data-phase='synthesis'] .kr-ceremony__lockwork {
  opacity: 0.12;
  filter: blur(0.1px);
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__artifact::before {
  animation: kr-ceremony-bench-seat 3.4s cubic-bezier(0.16, 1, 0.3, 1) 0.22s both;
}

.kodex-reveal-overlay[data-phase='closing'] .kr-ceremony__artifact::after {
  animation: kr-ceremony-artifact-glow 4.2s cubic-bezier(0.16, 1, 0.3, 1) 0.2s both;
}

.kr-ceremony__name {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.kr-ceremony__divider {
  display: block;
  width: min(220px, 50vw);
  height: 1px;
  margin: 4px auto 10px;
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 55%, transparent),
    transparent
  );
}

.kr-ceremony__synthesis {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.kr-ceremony__eyebrow--signature {
  color: var(--text-faint);
}

.kr-ceremony__signature-title {
  margin: 0;
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(28px, 4.6vw, 44px);
  line-height: 1.15;
  color: var(--text-primary);
  text-shadow: 0 0 42px color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 38%, transparent);
}

.kr-ceremony__signature-line {
  color: var(--text-secondary);
  max-width: 34em;
}

.kr-ceremony__cta {
  align-self: center;
  margin-top: 10px;
}

@keyframes kr-ceremony-bench-seat {
  0% {
    opacity: 0.32;
    transform: translateX(-50%) perspective(420px) rotateX(66deg) scale(0.94);
  }
  46% {
    opacity: 0.56;
    transform: translateX(-50%) perspective(420px) rotateX(66deg) scale(1.04);
  }
  100% {
    opacity: 0.46;
    transform: translateX(-50%) perspective(420px) rotateX(66deg) scale(1);
  }
}

@keyframes kr-ceremony-artifact-glow {
  0% {
    opacity: 0.36;
    transform: scale(0.96);
  }
  58% {
    opacity: 0.72;
    transform: scale(1.04);
  }
  100% {
    opacity: 0.5;
    transform: scale(1);
  }
}

@keyframes kr-ceremony-axis-seat {
  0% {
    opacity: 0.04;
    filter: blur(0.8px);
    scale: 1.08;
  }
  34% {
    opacity: 0.1;
    filter: blur(0);
    scale: 1;
  }
  72% {
    opacity: 0.06;
  }
  100% {
    opacity: 0;
    filter: blur(0.6px);
    scale: 0.96;
  }
}

@keyframes kr-ceremony-lock-ring {
  0% {
    opacity: 0.1;
    transform: translate(-50%, -50%) rotate(-8deg) scale(1.035);
  }
  42% {
    opacity: 0.24;
    transform: translate(-50%, -50%) rotate(-2deg) scale(0.992);
  }
  72% {
    opacity: 0.18;
    transform: translate(-50%, -50%) rotate(0.6deg) scale(1.006);
  }
  100% {
    opacity: 0.12;
    transform: translate(-50%, -50%) rotate(0deg) scale(1);
  }
}

@keyframes kr-ceremony-inner-ring {
  0% {
    opacity: 0.08;
    transform: translate(-50%, -50%) scale(1.08);
  }
  46% {
    opacity: 0.2;
    transform: translate(-50%, -50%) scale(0.982);
  }
  76% {
    opacity: 0.14;
    transform: translate(-50%, -50%) scale(1.012);
  }
  100% {
    opacity: 0.1;
    transform: translate(-50%, -50%) scale(1);
  }
}

@keyframes kr-ceremony-dock-seat {
  0% {
    opacity: 0.04;
    filter: blur(0.8px);
  }
  34% {
    opacity: 0.18;
    filter: blur(0);
  }
  64% {
    opacity: 0.1;
  }
  100% {
    opacity: 0.05;
    filter: blur(0.2px);
  }
}

@keyframes kr-ceremony-contact-flash {
  0% {
    opacity: 0;
    scale: 0.35;
  }
  28% {
    opacity: 0.64;
    scale: 1.1;
  }
  58% {
    opacity: 0.28;
    scale: 0.82;
  }
  100% {
    opacity: 0;
    scale: 1.36;
  }
}

@media (max-width: 640px) {
  .kr-ceremony {
    min-height: calc(100dvh - 32px);
    padding: calc(34px + env(safe-area-inset-top, 0px)) 0 calc(28px + env(safe-area-inset-bottom, 0px));
  }

  .kr-ceremony__progress {
    top: calc(8px + env(safe-area-inset-top, 0px));
    width: min(332px, 86vw);
    gap: 4px;
    padding: 0 8px;
    border-radius: 999px;
    background:
      linear-gradient(90deg, transparent, rgba(4, 7, 10, 0.36), transparent);
  }

  .kr-ceremony__progress li {
    grid-template-columns: 1fr;
    gap: 3px;
    padding-block: 4px 5px;
    text-align: center;
  }

  .kr-ceremony__progress li::after {
    right: -4px;
    opacity: 0.64;
  }

  .kr-ceremony__progress span {
    font-size: 0.46rem;
    opacity: 0.78;
  }

  .kr-ceremony__progress strong {
    font-size: 0.45rem;
    letter-spacing: 0.08em;
  }

  .kr-ceremony__blueprint {
    top: auto;
    bottom: 2%;
    right: auto;
    left: 50%;
    display: grid;
    width: min(282px, 78vw);
    max-width: none;
    gap: 6px;
    padding: 8px 10px;
    border-radius: 12px;
    translate: -50% 0;
    text-align: center;
  }

  .kr-ceremony__blueprint span {
    display: none;
  }

  .kr-ceremony__blueprint strong {
    white-space: normal;
  }

  .kr-ceremony__blueprint small {
    display: none;
  }

  .kr-ceremony__artifact {
    width: min(390px, 96vw);
    min-height: clamp(350px, 70vh, 520px);
  }

  .kr-ceremony__lockwork {
    inset: 8% 0 16%;
    opacity: 0.32;
  }

  .kr-ceremony__lock-ring--outer {
    width: min(342px, 88vw);
  }

  .kr-ceremony__lock-ring--inner {
    width: min(260px, 68vw);
  }

  .kr-ceremony__dock {
    width: min(76px, 20vw);
  }

  .kr-ceremony__dock--north {
    transform: translate(-50%, calc(-50% - min(150px, 38vw))) rotate(0deg);
  }

  .kr-ceremony__dock--east {
    transform: translate(calc(-50% + min(150px, 38vw)), -50%) rotate(90deg);
  }

  .kr-ceremony__dock--south {
    transform: translate(-50%, calc(-50% + min(150px, 38vw))) rotate(0deg);
  }

  .kr-ceremony__dock--west {
    transform: translate(calc(-50% - min(150px, 38vw)), -50%) rotate(90deg);
  }

  .kr-ceremony__contact--north {
    transform: translate(-50%, calc(-50% - min(132px, 34vw)));
  }

  .kr-ceremony__contact--east {
    transform: translate(calc(-50% + min(132px, 34vw)), -50%);
  }

  .kr-ceremony__contact--south {
    transform: translate(-50%, calc(-50% + min(132px, 34vw)));
  }

  .kr-ceremony__contact--west {
    transform: translate(calc(-50% - min(132px, 34vw)), -50%);
  }

  .kr-result-title {
    font-size: clamp(1.95rem, 7.8vw, 2.2rem);
    line-height: 1.04;
  }

  .kr-matrix--ceremony {
    grid-template-columns: minmax(64px, 0.8fr) repeat(3, minmax(72px, 1fr));
  }

  .kr-matrix--ceremony .kr-cell {
    min-height: clamp(48px, 7vh, 72px);
    border-color: color-mix(in srgb, var(--kodex-reveal-accent, #d8bd7a) 20%, transparent);
    background:
      linear-gradient(135deg, rgba(255, 255, 255, 0.072), rgba(255, 255, 255, 0.022)),
      rgba(7, 9, 13, 0.34);
  }

}

@media (min-width: 821px) and (max-height: 760px) {
  .kodex-reveal-overlay[data-phase='synthesis'] .kr-ceremony {
    gap: 6px;
    min-height: calc(100dvh - 54px);
    padding-block: 0;
    transform: translateY(-12px);
  }

  .kodex-reveal-overlay[data-phase='synthesis'] .kr-ceremony__artifact {
    min-height: clamp(250px, 42vmin, 340px);
    margin-top: 4px;
  }

  .kodex-reveal-overlay[data-phase='synthesis'] .kr-ceremony__signature-title {
    font-size: clamp(28px, 4.1vw, 40px);
  }

  .kodex-reveal-overlay[data-phase='synthesis'] .kr-ceremony__signature-line {
    line-height: 1.35;
  }

  .kodex-reveal-overlay[data-phase='synthesis'] .kr-ceremony__cta {
    margin-top: 4px;
  }
}
/* Kodex scene system v2: formal lock chamber, related to Essenz scenes. */

.kodex-scene-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: grid;
  place-items: center;
  padding: clamp(18px, 4vw, 38px);
  overflow: hidden;
  color: var(--text-primary, #f1eee4);
  background:
    radial-gradient(ellipse 72% 62% at 78% 42%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 14%, transparent), transparent 68%),
    linear-gradient(180deg, var(--kodex-shadow, #070912), #030407 100%);
  isolation: isolate;
}

.kodex-scene-atmosphere {
  z-index: 0;
  opacity: 0.92;
}

.kodex-scene-world {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(2, 4, 8, 0.96) 0%, rgba(2, 4, 8, 0.88) 34%, rgba(2, 4, 8, 0.12) 66%, rgba(2, 4, 8, 0.68) 100%),
    radial-gradient(ellipse 34% 42% at 75% 43%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 22%, transparent), transparent 70%);
}

.kodex-scene-world__image {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 68% 50%;
  opacity: 0.88;
  filter: saturate(0.95) contrast(1.04);
  animation: kodex-frame-reveal 760ms cubic-bezier(0.19, 1, 0.22, 1) both;
}

@keyframes kodex-frame-reveal {
  from {
    opacity: 0;
    filter: saturate(0.82) contrast(1.02) brightness(0.84);
  }
}

.kodex-scene-world__scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(90deg, rgba(2, 4, 8, 0.98) 0%, rgba(2, 4, 8, 0.92) 33%, rgba(2, 4, 8, 0.25) 62%, rgba(2, 4, 8, 0.72) 100%),
    radial-gradient(ellipse 60% 72% at 16% 50%, rgba(0, 0, 0, 0.52), transparent 70%),
    radial-gradient(ellipse 44% 48% at 76% 42%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 12%, transparent), transparent 72%);
  opacity: 0.72;
}

.kodex-scene-world::before {
  content: '';
  position: absolute;
  inset: 7% 5% 8% 48%;
  z-index: 2;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 22%, transparent);
  border-radius: 2px;
  background:
    linear-gradient(90deg, transparent 0 49%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 16%, transparent) 50%, transparent 51%),
    linear-gradient(0deg, transparent 0 49%, color-mix(in srgb, var(--kodex-secondary, #749ac2) 12%, transparent) 50%, transparent 51%);
  opacity: 0.46;
  transform: perspective(900px) rotateY(-16deg);
}

.kodex-scene-world::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 3;
  background:
    radial-gradient(1px 1px at 68% 18%, rgba(255, 255, 255, 0.4), transparent 64%),
    radial-gradient(1px 1px at 82% 56%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 64%, transparent), transparent 64%),
    radial-gradient(1px 1px at 58% 78%, rgba(255, 255, 255, 0.24), transparent 64%);
  opacity: 0.28;
}

.kodex-anchor-mark {
  position: absolute;
  z-index: 4;
  right: clamp(42px, 8vw, 128px);
  top: clamp(54px, 11vh, 128px);
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: clamp(3.8rem, 13vw, 11rem);
  font-weight: 800;
  letter-spacing: 0.02em;
  color: transparent;
  -webkit-text-stroke: 1px color-mix(in srgb, var(--kodex-accent, #d8bd7a) 26%, transparent);
  text-shadow: 0 0 42px color-mix(in srgb, var(--kodex-accent, #d8bd7a) 16%, transparent);
  opacity: 0.56;
}

.kodex-anchor-object {
  position: absolute;
  z-index: 4;
  right: clamp(70px, 13vw, 210px);
  top: 48%;
  width: clamp(170px, 22vw, 320px);
  height: clamp(116px, 17vw, 236px);
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 34%, transparent);
  background:
    linear-gradient(140deg, rgba(255, 255, 255, 0.08), transparent 42%),
    linear-gradient(180deg, color-mix(in srgb, var(--kodex-secondary, #749ac2) 12%, transparent), rgba(0, 0, 0, 0.16));
  box-shadow:
    0 28px 74px rgba(0, 0, 0, 0.52),
    0 0 54px color-mix(in srgb, var(--kodex-ember, #9d6140) 22%, transparent);
  opacity: 0.72;
  transform: translateY(-50%) perspective(900px) rotateY(-22deg) rotateZ(-1deg);
}

.kodex-anchor-object::before,
.kodex-anchor-object::after,
.kodex-anchor-line {
  content: '';
  position: absolute;
  pointer-events: none;
}

.kodex-anchor-line {
  z-index: 4;
  right: clamp(46px, 8vw, 140px);
  width: clamp(220px, 30vw, 420px);
  height: 1px;
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 56%, transparent), transparent);
  opacity: 0.46;
}

.kodex-anchor-line-a {
  top: 39%;
}

.kodex-anchor-line-b {
  top: 62%;
}

.kodex-scene-overlay[data-kodex-asset='ready'] .kodex-scene-world {
  background: var(--kodex-shadow, #070912);
}

.kodex-scene-overlay[data-kodex-asset='ready'] .kodex-scene-world::before,
.kodex-scene-overlay[data-kodex-asset='ready'] .kodex-anchor-object,
.kodex-scene-overlay[data-kodex-asset='ready'] .kodex-anchor-line {
  opacity: 0;
}

.kodex-scene-overlay[data-kodex-asset='ready'] .kodex-anchor-mark {
  opacity: 0.09;
}

.kodex-scene-overlay[data-kodex-asset='ready'] .kodex-scene-world__image {
  opacity: 0.48;
}

.kodex-scene-overlay[data-kodex-anchor='shared-kitchen'] .kodex-anchor-object {
  width: clamp(210px, 27vw, 360px);
  height: clamp(126px, 17vw, 218px);
  border-radius: 4px 4px 18px 18px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.07), transparent 22%),
    linear-gradient(135deg, color-mix(in srgb, var(--kodex-ember, #9d6140) 17%, #090909), rgba(3, 4, 7, 0.92));
  transform: translateY(-48%) perspective(900px) rotateY(-20deg) rotateZ(-1deg);
}

.kodex-scene-overlay[data-kodex-anchor='shared-kitchen'] .kodex-anchor-object::before {
  left: 17%;
  top: 22%;
  width: 58%;
  height: 48%;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 54%, transparent);
  border-radius: 2px;
  background:
    linear-gradient(32deg, transparent 49%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 28%, transparent) 50% 51%, transparent 52%),
    linear-gradient(148deg, transparent 49%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 28%, transparent) 50% 51%, transparent 52%),
    rgba(12, 12, 13, 0.46);
  box-shadow: 10px 12px 22px rgba(0, 0, 0, 0.3);
}

.kodex-scene-overlay[data-kodex-anchor='shared-kitchen'] .kodex-anchor-object::after {
  right: 11%;
  bottom: 16%;
  width: 17px;
  height: 17px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 66%, transparent);
  box-shadow:
    -22px 2px 0 -2px color-mix(in srgb, var(--kodex-accent, #d8bd7a) 42%, transparent),
    -10px -17px 0 -3px color-mix(in srgb, var(--kodex-secondary, #749ac2) 34%, transparent);
}

.kodex-scene-overlay[data-kodex-anchor='midnight-call'] .kodex-anchor-object {
  width: clamp(96px, 12vw, 170px);
  height: clamp(220px, 34vw, 390px);
  border-radius: 32px;
  transform: translateY(-50%) perspective(900px) rotateY(-18deg) rotateZ(2deg);
}

.kodex-scene-overlay[data-kodex-anchor='midnight-call'] .kodex-anchor-object::before {
  inset: 12% 18% 18%;
  border: 1px solid color-mix(in srgb, var(--kodex-secondary, #86c7db) 42%, transparent);
  border-radius: 22px;
}

.kodex-scene-overlay[data-kodex-anchor='midnight-call'] .kodex-anchor-object::after {
  left: 50%;
  bottom: 8%;
  width: 32px;
  height: 3px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--kodex-accent, #86c7db) 54%, transparent);
  transform: translateX(-50%);
}

.kodex-scene-overlay[data-kodex-anchor='harbor-night-shift'] .kodex-anchor-object {
  width: clamp(220px, 29vw, 390px);
  height: clamp(126px, 17vw, 216px);
  border-radius: 5px 5px 20px 20px;
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--kodex-accent, #d9a55e) 13%, rgba(255, 255, 255, 0.03)), transparent 30%),
    linear-gradient(90deg, rgba(5, 9, 12, 0.92), color-mix(in srgb, var(--kodex-secondary, #5d9aae) 12%, #080b0e));
  transform: translateY(-46%) perspective(900px) rotateY(-18deg) rotateZ(0deg);
}

.kodex-scene-overlay[data-kodex-anchor='harbor-night-shift'] .kodex-anchor-object::before {
  right: 10%;
  top: 14%;
  width: 42%;
  height: 70%;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d9a55e) 44%, transparent);
  border-radius: 2px;
  background:
    repeating-linear-gradient(180deg, transparent 0 13px, color-mix(in srgb, var(--kodex-accent, #d9a55e) 26%, transparent) 14px 15px),
    rgba(10, 12, 13, 0.52);
}

.kodex-scene-overlay[data-kodex-anchor='harbor-night-shift'] .kodex-anchor-object::after {
  left: 12%;
  top: 22%;
  width: 56px;
  height: 56px;
  border-radius: 999px;
  background: radial-gradient(circle, color-mix(in srgb, var(--kodex-accent, #d9a55e) 56%, transparent), transparent 70%);
  box-shadow: 0 0 40px color-mix(in srgb, var(--kodex-accent, #d9a55e) 28%, transparent);
}

.kodex-scene-overlay[data-kodex-anchor='rehearsal-showcase'] .kodex-anchor-object {
  width: clamp(210px, 27vw, 360px);
  height: clamp(144px, 19vw, 246px);
  border-radius: 5px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.07), transparent 24%),
    color-mix(in srgb, var(--kodex-secondary, #92704d) 12%, rgba(5, 5, 6, 0.92));
  transform: translateY(-49%) perspective(900px) rotateY(-21deg) rotateZ(1deg);
}

.kodex-scene-overlay[data-kodex-anchor='rehearsal-showcase'] .kodex-anchor-object::before {
  inset: 14% 12% 36%;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #c8ae73) 36%, transparent);
  border-radius: 2px;
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-accent, #c8ae73) 24%, transparent) 0 82%, transparent 82%),
    repeating-linear-gradient(180deg, transparent 0 16px, color-mix(in srgb, var(--kodex-secondary, #92704d) 32%, transparent) 17px 18px);
}

.kodex-scene-overlay[data-kodex-anchor='rehearsal-showcase'] .kodex-anchor-object::after {
  left: 12%;
  right: 12%;
  bottom: 14%;
  height: 18%;
  border-radius: 2px;
  background: color-mix(in srgb, var(--kodex-accent, #c8ae73) 18%, rgba(0, 0, 0, 0.5));
  box-shadow:
    inset 38px 0 0 color-mix(in srgb, var(--kodex-accent, #c8ae73) 22%, transparent),
    inset -54px 0 0 color-mix(in srgb, var(--kodex-secondary, #92704d) 18%, transparent);
}

.kodex-scene-overlay[data-kodex-anchor='blackout-relief'] .kodex-anchor-object {
  width: clamp(230px, 30vw, 410px);
  height: clamp(132px, 18vw, 224px);
  border-radius: 4px 4px 16px 16px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.05), transparent 24%),
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--kodex-secondary, #7ea3b0) 16%, rgba(4, 6, 8, 0.92)) 0 26%, rgba(3, 4, 6, 0.94) 26% 29%);
  box-shadow: 0 34px 72px rgba(0, 0, 0, 0.56);
  transform: translateY(-44%) perspective(900px) rotateY(-17deg) rotateZ(0deg);
}

.kodex-scene-overlay[data-kodex-anchor='blackout-relief'] .kodex-anchor-object::before {
  left: 9%;
  top: -24%;
  width: 24%;
  height: 34%;
  border: 1px solid color-mix(in srgb, var(--kodex-ember, #bd7357) 52%, transparent);
  border-radius: 3px 3px 0 0;
  background: rgba(5, 7, 9, 0.72);
}

.kodex-scene-overlay[data-kodex-anchor='blackout-relief'] .kodex-anchor-object::after {
  right: 10%;
  top: 18%;
  width: 34%;
  height: 54%;
  border-radius: 2px;
  background:
    repeating-linear-gradient(180deg, transparent 0 12px, color-mix(in srgb, var(--kodex-accent, #e0c486) 28%, transparent) 13px 14px),
    rgba(4, 5, 7, 0.5);
}

.kodex-scene {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-rows: auto 1fr;
  width: min(1120px, calc(100vw - 48px));
  min-height: min(720px, calc(100vh - 48px));
  max-height: calc(100vh - 48px);
  padding: clamp(20px, 3.2vw, 38px);
  border-radius: 18px;
  overflow-x: hidden;
  overflow-y: auto;
}

.kodex-scene > * {
  position: relative;
  z-index: 2;
}

.kodex-scene::before {
  content: '';
  position: absolute;
  inset: 0 0 0 auto;
  width: 46%;
  background:
    radial-gradient(ellipse 80% 66% at 55% 45%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 16%, transparent), transparent 72%),
    linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.18));
  opacity: 0.82;
  pointer-events: none;
}

.kodex-scene-establishing {
  position: absolute !important;
  inset: 0 0 0 auto;
  z-index: 1 !important;
  width: 44%;
  overflow: hidden;
  background: var(--kodex-shadow, #070912);
}

.kodex-scene-establishing img,
.kodex-scene-establishing__veil {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.kodex-scene-establishing img {
  object-fit: cover;
  object-position: 72% 50%;
  filter: saturate(0.94) contrast(1.06);
  animation: kodex-establishing-frame-reveal 760ms cubic-bezier(0.19, 1, 0.22, 1) both;
}

@keyframes kodex-establishing-frame-reveal {
  from {
    opacity: 0;
    filter: saturate(0.82) contrast(1.03) brightness(0.86);
  }
}

.kodex-scene-establishing__veil {
  background:
    linear-gradient(90deg, rgba(6, 8, 13, 0.96) 0%, rgba(6, 8, 13, 0.58) 20%, transparent 54%),
    linear-gradient(180deg, rgba(3, 4, 7, 0.2), transparent 38%, rgba(3, 4, 7, 0.34));
}

.kodex-scene-loading {
  position: relative;
  z-index: 2;
  display: grid;
  place-items: center;
  min-height: 220px;
  padding: 32px;
}

.kodex-loading-text {
  color: rgba(255, 247, 224, 0.52);
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.kodex-scene-header {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  max-width: min(620px, 58vw);
  padding-bottom: clamp(18px, 3vh, 28px);
}

.kodex-scene-close {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border: 1px solid rgba(216, 189, 122, 0.24);
  border-radius: 8px;
  background: rgba(5, 7, 12, 0.58);
  color: rgba(255, 247, 224, 0.72);
  cursor: pointer;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1;
  transition: border-color 0.18s ease, color 0.18s ease, transform 0.18s ease;
}

.kodex-scene-close:hover,
.kodex-scene-close:focus-visible {
  border-color: color-mix(in srgb, var(--kodex-accent, #d8bd7a) 60%, transparent);
  color: #fff7e0;
  outline: none;
  transform: translateY(-1px);
}

.kodex-scene-meta {
  flex: 1 1 auto;
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 4px;
}

.kodex-scene-schloss,
.kodex-scene-landmark {
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  line-height: 1.2;
  text-transform: uppercase;
}

.kodex-scene-schloss {
  color: color-mix(in srgb, var(--kodex-accent, #d8bd7a) 72%, rgba(255, 255, 255, 0.48));
}

.kodex-scene-title {
  margin: 0;
  overflow: hidden;
  color: #f1eee4;
  font-family: var(--font-heading, 'Syne', sans-serif);
  font-size: clamp(1.08rem, 1.8vw, 1.42rem);
  font-weight: 760;
  line-height: 1.12;
  letter-spacing: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.kodex-scene-landmark {
  color: rgba(235, 226, 204, 0.5);
}

.kodex-scene-acts {
  display: flex;
  flex: 0 0 auto;
  gap: 7px;
  padding-top: 4px;
}

.kodex-act-dot {
  width: 28px;
  height: 4px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  transition: background 0.25s ease, box-shadow 0.25s ease;
}

.kodex-act-dot.active {
  background: color-mix(in srgb, var(--kodex-accent, #d8bd7a) 38%, rgba(255, 255, 255, 0.08));
}

.kodex-act-dot.current {
  background: var(--kodex-accent, #d8bd7a);
  box-shadow: 0 0 16px color-mix(in srgb, var(--kodex-accent, #d8bd7a) 42%, transparent);
}

.kodex-scene-body {
  display: flex;
  min-height: 0;
  max-width: min(620px, 58vw);
  align-items: flex-start;
  padding: clamp(16px, 2.6vh, 28px) 0 clamp(10px, 2vh, 24px);
}

.kodex-narrative {
  display: flex;
  width: 100%;
  flex-direction: column;
  gap: 14px;
}

.kodex-story-text {
  max-width: 600px;
  margin: 0;
  color: rgba(246, 239, 218, 0.74);
  font-family: var(--font-body, 'Outfit', sans-serif);
  font-size: clamp(0.94rem, 1.05vw, 1.02rem);
  line-height: 1.58;
}

.kodex-question {
  margin: 6px 0 0;
  color: #fff7e0;
  font-family: var(--font-heading, 'Syne', sans-serif);
  font-size: clamp(1.04rem, 1.45vw, 1.24rem);
  font-weight: 760;
  line-height: 1.34;
  letter-spacing: 0;
}

.kodex-continue-tap {
  position: relative;
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  gap: 18px;
  align-self: flex-start;
  margin-top: 4px;
  padding: 0 14px 0 16px;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 34%, transparent);
  border-radius: 4px;
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 10%, transparent), transparent 74%),
    rgba(6, 9, 13, 0.48);
  box-shadow: inset 2px 0 0 color-mix(in srgb, var(--kodex-accent, #d8bd7a) 72%, transparent);
  color: color-mix(in srgb, var(--kodex-accent, #d8bd7a) 88%, #fff7e0);
  cursor: pointer;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: border-color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

.kodex-continue-tap:hover,
.kodex-continue-tap:focus-visible {
  border-color: color-mix(in srgb, var(--kodex-accent, #d8bd7a) 60%, transparent);
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 16%, transparent), transparent 78%),
    rgba(9, 12, 17, 0.7);
  box-shadow:
    inset 2px 0 0 var(--kodex-accent, #d8bd7a),
    0 10px 26px rgba(0, 0, 0, 0.2);
  outline: 2px solid transparent;
  transform: translateX(3px);
}

.kodex-continue-tap__arrow {
  color: #fff7e0;
  font-size: 0.9rem;
  line-height: 1;
  transition: transform 0.18s ease;
}

.kodex-continue-tap:hover .kodex-continue-tap__arrow,
.kodex-continue-tap:focus-visible .kodex-continue-tap__arrow {
  transform: translateX(2px);
}

.kodex-choices {
  display: grid;
  gap: 10px;
  margin-top: 2px;
}

.kodex-choice-btn {
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: 12px;
  width: 100%;
  min-height: 58px;
  padding: 12px 14px;
  border: 1px solid rgba(216, 189, 122, 0.14);
  border-radius: 10px;
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 9%, transparent), transparent 56%),
    rgba(255, 255, 255, 0.035);
  color: var(--text-primary, #f1eee4);
  cursor: pointer;
  font-family: var(--font-body, 'Outfit', sans-serif);
  text-align: left;
  transition: border-color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease;
}

.kodex-choice-btn:hover,
.kodex-choice-btn:focus-visible {
  border-color: color-mix(in srgb, var(--kodex-accent, #d8bd7a) 44%, transparent);
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 14%, transparent), transparent 62%),
    rgba(255, 255, 255, 0.055);
  box-shadow: 0 16px 34px rgba(0, 0, 0, 0.22);
  outline: none;
}

.kodex-choice-btn:disabled,
.kodex-choice-btn[aria-disabled='true'] {
  cursor: wait;
  opacity: 0.56;
  pointer-events: none;
}

.kodex-choice-id {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  margin-top: 1px;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 28%, transparent);
  border-radius: 7px;
  background: rgba(0, 0, 0, 0.24);
  color: color-mix(in srgb, var(--kodex-accent, #d8bd7a) 80%, #fff);
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.74rem;
  font-weight: 800;
}

.kodex-choice-text {
  color: rgba(246, 239, 218, 0.78);
  font-size: 0.9rem;
  line-height: 1.44;
}

.kodex-completion {
  display: flex;
  max-width: 520px;
  flex-direction: column;
  align-items: flex-start;
  gap: 13px;
  padding: clamp(10px, 3vh, 28px) 0;
  text-align: left;
}

.kodex-completion-badge,
.kodex-completion-theme {
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  line-height: 1.2;
  text-transform: uppercase;
}

.kodex-completion-badge {
  padding: 6px 10px;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 26%, transparent);
  border-radius: 7px;
  background: color-mix(in srgb, var(--kodex-accent, #d8bd7a) 12%, transparent);
  color: #fff7e0;
}

.kodex-completion-theme {
  margin: 0;
  color: rgba(235, 226, 204, 0.5);
}

.kodex-completion-title {
  margin: 4px 0 0;
  color: #fff7e0;
  font-family: var(--font-heading, 'Syne', sans-serif);
  font-size: clamp(1.65rem, 3vw, 2.35rem);
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1.08;
}

.kodex-completion-text {
  max-width: 500px;
  margin: 4px 0 0;
  color: rgba(246, 239, 218, 0.74);
  font-size: 0.98rem;
  line-height: 1.62;
}

.kodex-completion-next {
  max-width: 520px;
  margin: 2px 0 0;
  padding: 14px 16px;
  border: 1px solid rgba(216, 189, 122, 0.16);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.045);
  color: rgba(246, 239, 218, 0.72);
  font-size: 0.9rem;
  line-height: 1.55;
}

.kodex-completion-cta {
  margin-top: 12px;
  padding: 12px 22px;
  border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 42%, transparent);
  border-radius: 9px;
  background: linear-gradient(180deg, var(--kodex-accent, #d8bd7a), color-mix(in srgb, var(--kodex-accent, #d8bd7a) 78%, #17110a));
  color: #070912;
  cursor: pointer;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 0.74rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: transform 0.18s ease, filter 0.18s ease;
}

.kodex-completion-cta:hover,
.kodex-completion-cta:focus-visible {
  filter: brightness(1.05);
  outline: none;
  transform: translateY(-1px);
}

@media (max-width: 760px) {
  .kodex-scene-overlay {
    align-items: stretch;
    justify-items: stretch;
    padding: 0;
    overflow: auto;
  }

  .kodex-scene-world {
    background:
      linear-gradient(180deg, rgba(2, 4, 8, 0.72), rgba(2, 4, 8, 0.96) 48%),
      radial-gradient(ellipse 72% 42% at 80% 10%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 16%, transparent), transparent 72%);
  }

  .kodex-scene-world__image {
    object-position: 76% 18%;
    opacity: 0.32;
  }

  .kodex-scene-overlay[data-kodex-asset='ready'] .kodex-scene-world__image {
    opacity: 0.32;
  }

  .kodex-scene-world__scrim {
    background:
      linear-gradient(180deg, rgba(2, 4, 8, 0.68) 0%, rgba(2, 4, 8, 0.92) 34%, rgba(2, 4, 8, 0.98) 100%),
      radial-gradient(ellipse 86% 44% at 78% 12%, color-mix(in srgb, var(--kodex-accent, #d8bd7a) 12%, transparent), transparent 72%);
    opacity: 0.86;
  }

  .kodex-scene-world::before,
  .kodex-anchor-object,
  .kodex-anchor-line {
    opacity: 0.22;
  }

  .kodex-anchor-mark {
    right: 18px;
    top: 28px;
    font-size: clamp(4rem, 28vw, 7rem);
    opacity: 0.3;
  }

  .kodex-scene {
    grid-template-rows: auto auto 1fr;
    width: 100%;
    min-height: 100dvh;
    max-height: none;
    padding: calc(18px + env(safe-area-inset-top, 0px)) 18px calc(24px + env(safe-area-inset-bottom, 0px));
    border-radius: 0;
    overflow-y: auto;
  }

  .kodex-scene-establishing {
    position: relative !important;
    inset: auto;
    z-index: 2 !important;
    width: 100%;
    height: clamp(152px, 25vh, 188px);
    margin: 2px 0 18px;
    border: 1px solid color-mix(in srgb, var(--kodex-accent, #d8bd7a) 24%, transparent);
    border-radius: 4px;
  }

  .kodex-scene-establishing img {
    object-position: 72% 50%;
  }

  .kodex-scene-establishing__veil {
    background:
      linear-gradient(180deg, rgba(3, 4, 7, 0.08), transparent 52%, rgba(3, 4, 7, 0.46)),
      linear-gradient(90deg, rgba(3, 4, 7, 0.38), transparent 36%);
  }

  .kodex-scene::before {
    width: 100%;
    opacity: 0.28;
  }

  .kodex-scene-header {
    max-width: none;
    gap: 10px;
  }

  .kodex-scene-title {
    white-space: normal;
  }

  .kodex-act-dot {
    width: 18px;
  }

  .kodex-scene-body {
    align-items: flex-start;
    max-width: none;
    padding-top: 2px;
  }

  .kodex-scene-overlay[data-kodex-asset='ready'] .kodex-scene-body {
    padding-top: 2px;
  }

  .kodex-choice-btn {
    min-height: 58px;
    padding: 13px 14px;
  }

  .kodex-completion {
    align-items: stretch;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kodex-scene-world__image,
  .kodex-scene-establishing img {
    animation: none;
  }

  .kodex-scene-close,
  .kodex-continue-tap,
  .kodex-choice-btn,
  .kodex-completion-cta {
    transition: none;
  }
}
.rtn-root {
  position: fixed;
  inset: 0 0 auto;
  z-index: 40;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: clamp(16px, 3vw, 40px);
  min-height: 72px;
  padding: 10px clamp(20px, 4vw, 52px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
  background: rgba(8, 10, 14, 0.82);
  backdrop-filter: blur(18px) saturate(125%);
  -webkit-backdrop-filter: blur(18px) saturate(125%);
  transition: background 180ms ease, border-color 180ms ease;
}

.rtn-root.rtn-transparent {
  border-bottom-color: rgba(255, 255, 255, 0.04);
  background: linear-gradient(180deg, rgba(8, 10, 14, 0.86), rgba(8, 10, 14, 0.62));
}

.rtn-brand {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 44px;
  min-height: 44px;
  padding: 6px 4px;
  border: 0;
  background: none;
  color: inherit;
  font-family: inherit;
  cursor: pointer;
  transition: opacity 160ms ease;
}

.rtn-brand:hover {
  opacity: 0.82;
}

.rtn-brand:focus-visible,
.rtn-report-link:focus-visible,
.rtn-share-btn:focus-visible {
  outline: 1px solid var(--metal-gold, #d8bd7a);
  outline-offset: 3px;
}

.rtn-brand-mark {
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
  border-radius: 50%;
  background:
    radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.12) 44%, transparent 70%),
    radial-gradient(circle at 70% 75%, var(--accent, #a8b4ff), transparent 58%);
  box-shadow: 0 0 12px rgba(168, 180, 255, 0.28);
}

.rtn-brand-text {
  color: rgba(255, 255, 255, 0.82);
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.rtn-report-nav {
  justify-self: center;
  display: flex;
  align-items: center;
  gap: 3px;
  min-width: 0;
  padding: 4px;
  border: 1px solid rgba(var(--metal-gold-rgb, 216, 189, 122), 0.18);
  border-radius: 7px;
  background: rgba(0, 0, 0, 0.2);
}

.rtn-report-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 44px;
  padding: 0 11px;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  color: rgba(255, 255, 255, 0.56);
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 10px;
  font-weight: 750;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease;
}

.rtn-report-link:hover:not(:disabled) {
  border-color: rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.05);
  color: rgba(255, 255, 255, 0.92);
}

.rtn-report-link.is-active {
  border-color: rgba(var(--metal-gold-rgb, 216, 189, 122), 0.34);
  background: rgba(var(--metal-gold-rgb, 216, 189, 122), 0.09);
  color: var(--metal-gold, #d8bd7a);
}

.rtn-report-link:disabled:not(.is-active) {
  color: rgba(255, 255, 255, 0.24);
  cursor: not-allowed;
}

.rtn-report-link--hub svg {
  width: 14px;
  height: 14px;
}

.rtn-report-separator {
  width: 1px;
  height: 18px;
  margin: 0 3px;
  background: rgba(255, 255, 255, 0.1);
}

.rtn-actions {
  justify-self: end;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  min-width: 0;
}

.rtn-share-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.055);
  color: rgba(255, 255, 255, 0.9);
  font-family: inherit;
  font-size: 13px;
  font-weight: 650;
  letter-spacing: 0;
  white-space: nowrap;
  cursor: pointer;
  transition:
    color 160ms ease,
    background 160ms ease,
    border-color 160ms ease,
    box-shadow 160ms ease;
}

.rtn-share-btn:hover:not(:disabled) {
  border-color: rgba(var(--metal-gold-rgb, 216, 189, 122), 0.5);
  background: rgba(var(--metal-gold-rgb, 216, 189, 122), 0.1);
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.24);
  color: #fff;
}

.rtn-share-btn:disabled {
  opacity: 0.35;
  cursor: wait;
}

.rtn-share-btn svg {
  width: 17px;
  height: 17px;
  flex: 0 0 auto;
}

.report-share-notice {
  position: fixed;
  right: clamp(16px, 3vw, 40px);
  bottom: clamp(16px, 3vw, 32px);
  z-index: 80;
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: min(440px, calc(100vw - 32px));
  padding: 13px 16px;
  border: 1px solid rgba(var(--metal-gold-rgb, 216, 189, 122), 0.34);
  border-radius: 7px;
  background: rgba(9, 10, 14, 0.94);
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.34);
  color: var(--text-aether-primary, #f4f0e6);
  font-size: 13px;
  line-height: 1.45;
  backdrop-filter: blur(14px);
  animation: report-share-notice-in 220ms ease-out both;
}

.report-share-notice__mark {
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
  border: 1px solid rgba(var(--metal-gold-rgb, 216, 189, 122), 0.48);
  border-radius: 50%;
  color: var(--metal-gold, #d8bd7a);
  font-size: 12px;
}

@keyframes report-share-notice-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 780px) {
  .rtn-root {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 4px 12px;
    padding: 8px 14px 9px;
  }

  .rtn-report-nav {
    grid-column: 1 / -1;
    grid-row: 2;
    width: 100%;
    justify-content: center;
  }

  .rtn-actions {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
  }

  .rtn-brand {
    grid-column: 1;
    grid-row: 1;
  }
}

@media (max-width: 480px) {
  .rtn-brand-text {
    display: none;
  }

  .rtn-report-link {
    flex: 1 1 auto;
    min-width: 0;
    padding-inline: 6px;
    font-size: 9px;
    letter-spacing: 0.06em;
  }

  .rtn-report-link--hub span {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .rtn-report-link--hub {
    flex: 0 0 44px;
    min-width: 44px;
    padding: 0;
  }

  .rtn-share-btn {
    width: 44px;
    padding: 0;
  }

  .rtn-share-label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .report-share-notice {
    right: 16px;
    bottom: 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .report-share-notice {
    animation: none;
  }
}
body:has(.constellation-wrapper) {
  background: #070910;
}

body:has(.constellation-wrapper) .container {
  background: transparent;
  box-shadow: none;
}

.constellation-wrapper {
  background: transparent;
}

.report-atmosphere {
  z-index: 0;
  animation: report-atmosphere-enter 1.2s ease-out both;
}

.constellation-wrapper > *:not(.report-atmosphere):not(.rtn-root):not(.report-share-notice) {
  position: relative;
  z-index: 1;
}

@keyframes report-atmosphere-enter {
  from { opacity: 0; }
  to { opacity: 1; }
}
.persona-atmosphere {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  background:
    linear-gradient(180deg, #070910 0%, #090914 48%, #05060b 100%),
    radial-gradient(ellipse 110% 70% at 50% 0%, rgba(255, 255, 255, 0.06), transparent 62%);
}

.persona-atmosphere::before {
  content: '';
  position: absolute;
  inset: -12%;
  background:
    linear-gradient(110deg, transparent 0%, rgba(var(--pq-primary-rgb, 139, 92, 246), 0.12) 21%, transparent 44%),
    linear-gradient(72deg, transparent 18%, rgba(var(--pq-secondary-rgb, 6, 182, 212), 0.08) 54%, transparent 78%);
  filter: blur(44px) saturate(80%);
  opacity: 0.72;
  mix-blend-mode: screen;
  transform: translate3d(-3%, -2%, 0) rotate(-6deg);
  animation: persona-smoke-shear 36s ease-in-out infinite;
}

.persona-atmosphere::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(255,255,255,0.05), transparent 1px),
    radial-gradient(ellipse 120% 90% at 50% 50%, transparent 58%, rgba(0, 0, 0, 0.38) 100%);
  background-size: 22vw 100%, 100% 100%;
  opacity: 0.34;
}

.persona-atmosphere__grain {
  position: absolute;
  inset: 0;
  opacity: 0.2;
  background-image:
    radial-gradient(1px 1px at 10% 20%, rgba(255,255,255,0.55), transparent 60%),
    radial-gradient(1px 1px at 30% 84%, rgba(255,255,255,0.38), transparent 60%),
    radial-gradient(1px 1px at 74% 16%, rgba(255,255,255,0.46), transparent 60%),
    radial-gradient(1px 1px at 90% 72%, rgba(255,255,255,0.34), transparent 60%),
    radial-gradient(1px 1px at 54% 46%, rgba(255,255,255,0.26), transparent 60%);
}

.persona-atmosphere__smoke {
  position: absolute;
  inset: -34%;
  filter: blur(58px) saturate(86%);
  mix-blend-mode: screen;
  will-change: transform;
}

.persona-atmosphere__smoke--a {
  background:
    conic-gradient(
      from 218deg at 42% 48%,
      transparent 0deg,
      rgba(var(--pq-primary-rgb, 139, 92, 246), 0.2) 54deg,
      transparent 116deg,
      rgba(var(--pq-secondary-rgb, 6, 182, 212), 0.12) 188deg,
      transparent 285deg,
      rgba(var(--pq-primary-rgb, 139, 92, 246), 0.14) 338deg,
      transparent 360deg
    );
  opacity: 0.3;
  animation: persona-smoke-drift-a 52s ease-in-out infinite;
}

.persona-atmosphere__smoke--b {
  background:
    linear-gradient(125deg, transparent 12%, rgba(var(--pq-secondary-rgb, 6, 182, 212), 0.12) 38%, transparent 64%),
    linear-gradient(22deg, transparent 30%, rgba(var(--pq-primary-rgb, 139, 92, 246), 0.1) 58%, transparent 82%);
  opacity: 0.22;
  transform: rotate(11deg);
  animation: persona-smoke-drift-b 68s ease-in-out infinite;
}

.persona-atmosphere__veil {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 70% 52% at 50% 16%, rgba(255, 255, 255, 0.05), transparent 66%),
    linear-gradient(180deg, rgba(4, 5, 10, 0.1), rgba(4, 5, 10, 0.58));
}

.persona-atmosphere[data-variant='hub'] {
  background:
    linear-gradient(180deg, #05070b 0%, #07090d 52%, #030406 100%),
    linear-gradient(124deg, transparent 8%, rgba(216, 189, 122, 0.055) 34%, transparent 58%),
    linear-gradient(36deg, transparent 18%, rgba(108, 154, 190, 0.05) 62%, transparent 84%);
}

.persona-atmosphere[data-variant='hub']::before {
  background:
    linear-gradient(106deg, transparent 4%, rgba(216, 189, 122, 0.085) 28%, transparent 48%),
    linear-gradient(64deg, transparent 30%, rgba(108, 154, 190, 0.07) 62%, transparent 84%);
  opacity: 0.48;
  filter: blur(50px) saturate(74%);
}

.persona-atmosphere[data-variant='hub'] .persona-atmosphere__smoke {
  opacity: 0.15;
}

.persona-atmosphere[data-variant='hub']::after {
  background:
    linear-gradient(90deg, rgba(216, 189, 122, 0.055), transparent 1px),
    linear-gradient(0deg, rgba(255, 255, 255, 0.028), transparent 1px),
    radial-gradient(ellipse 120% 90% at 50% 50%, transparent 58%, rgba(0, 0, 0, 0.48) 100%);
  background-size: 22vw 100%, 100% 18vh, 100% 100%;
  opacity: 0.3;
}

.persona-atmosphere[data-variant='kodex'] {
  background:
    linear-gradient(180deg, #05070c 0%, #080910 48%, #030407 100%),
    radial-gradient(ellipse 82% 62% at 76% 24%, rgba(216, 189, 122, 0.12), transparent 62%);
}

.persona-atmosphere[data-variant='kodex']::before {
  background:
    linear-gradient(108deg, transparent 0%, rgba(216, 189, 122, 0.1) 24%, transparent 46%),
    linear-gradient(68deg, transparent 26%, rgba(116, 154, 194, 0.08) 58%, transparent 82%);
  opacity: 0.5;
  filter: blur(42px) saturate(78%);
}

.persona-atmosphere[data-variant='kodex']::after {
  background:
    linear-gradient(90deg, rgba(216, 189, 122, 0.08), transparent 1px),
    linear-gradient(0deg, rgba(255, 255, 255, 0.035), transparent 1px),
    radial-gradient(ellipse 110% 88% at 50% 50%, transparent 56%, rgba(0, 0, 0, 0.54) 100%);
  background-size: 18vw 100%, 100% 18vh, 100% 100%;
  opacity: 0.28;
}

.persona-atmosphere[data-variant='sphere'] {
  background:
    linear-gradient(180deg, #07090f 0%, #080910 54%, #040507 100%),
    radial-gradient(ellipse 70% 52% at 50% 4%, rgba(216, 189, 122, 0.08), transparent 64%);
}

.persona-atmosphere[data-variant='sphere']::before {
  background:
    linear-gradient(100deg, transparent 10%, rgba(216, 189, 122, 0.08) 35%, transparent 58%),
    linear-gradient(22deg, transparent 28%, rgba(127, 167, 201, 0.08) 64%, transparent 86%);
  opacity: 0.44;
  filter: blur(52px) saturate(70%);
}

.persona-atmosphere[data-variant='sphere'] .persona-atmosphere__smoke {
  opacity: 0.16;
}

@keyframes persona-smoke-shear {
  0%, 100% { transform: translate3d(-3%, -2%, 0) rotate(-6deg) scale(1); }
  50% { transform: translate3d(4%, 3%, 0) rotate(-2deg) scale(1.06); }
}

@keyframes persona-smoke-drift-a {
  0%, 100% { transform: translate3d(-4%, -3%, 0) rotate(0deg) scale(1); }
  50% { transform: translate3d(5%, 4%, 0) rotate(4deg) scale(1.08); }
}

@keyframes persona-smoke-drift-b {
  0%, 100% { transform: translate3d(4%, 5%, 0) rotate(11deg) scale(1.05); }
  50% { transform: translate3d(-5%, -4%, 0) rotate(7deg) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .persona-atmosphere::before,
  .persona-atmosphere__smoke {
    animation: none;
  }
}


/* 5. Screens Layer: Page-Specific Views */
.portal-core-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 100vh;
  position: relative;
  overflow: hidden;
  background: var(--bg-deep); /* Standardized deeper darkness */
}

/* SVG Noise Overlay */
.noise-overlay {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 9999;
  opacity: 0.05;
  mix-blend-mode: overlay;
}

.portal-core-container::before {
  content: '';
  position: absolute;
  top: -50%; left: -50%;
  width: 200%; height: 200%;
  background: 
    radial-gradient(circle at 30% 30%, rgba(var(--accent-primary-rgb), 0.05) 0%, transparent 50%),
    radial-gradient(circle at 70% 70%, rgba(var(--accent-secondary-rgb), 0.05) 0%, transparent 50%);
  animation: plasmaDrift 20s ease-in-out infinite alternate;
  pointer-events: none;
  z-index: 0;
}

@keyframes plasmaDrift {
    0% { transform: translate(0, 0) rotate(0deg); }
    100% { transform: translate(5%, 5%) rotate(5deg); }
}

.portal-visual-wrapper {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(600px, 90vw); /* R8 Fix */
    height: min(600px, 90vw);
    z-index: 0;
    pointer-events: none;
    display: flex;
    align-items: center;
    justify-content: center;
}

.portal-ring {
    position: absolute;
    border: 1px solid rgba(var(--accent-primary-rgb), 0.1);
    border-radius: 50%;
    box-shadow: 0 0 30px rgba(var(--accent-primary-rgb), 0.03);
    transition: all 0.8s var(--ease-out-expo);
}

.ring-1 { width: min(300px, 50vw); height: min(300px, 50vw); animation: orbit 20s linear infinite; }
.ring-2 { width: min(450px, 70vw); height: min(450px, 70vw); animation: orbit 30s linear infinite reverse; }
.ring-3 { width: min(600px, 90vw); height: min(600px, 90vw); animation: orbit 45s linear infinite; }

@keyframes orbit {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.portal-center {
    position: relative;
    width: 140px;
    height: 140px;
    background: var(--accent-primary);
    border-radius: 50%;
    filter: blur(50px);
    opacity: 0.5;
    transition: all 1.2s var(--ease-out-expo);
}

.portal-inner-light {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 10px;
    height: 10px;
    background: white;
    border-radius: 50%;
    box-shadow: 0 0 40px 10px white, 0 0 80px 20px var(--accent-primary);
    animation: corePulse 3s ease-in-out infinite;
}

@keyframes corePulse {
    0%, 100% { opacity: 0.8; transform: translate(-50%, -50%) scale(1); }
    50% { opacity: 1; transform: translate(-50%, -50%) scale(1.5); }
}

[data-active-path='logic'] .portal-center { 
    background: var(--accent-secondary); 
    filter: blur(40px) drop-shadow(0 0 30px var(--accent-secondary));
    transform: scale(1.1);
}

[data-active-path='intuition'] .portal-center { 
    background: var(--accent-primary); 
    filter: blur(40px) drop-shadow(0 0 30px var(--accent-primary));
    transform: scale(1.2);
}

.portal-content-v3 {
    position: relative;
    z-index: 20;
    text-align: center;
    padding: 0 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    pointer-events: auto;
}

.portal-header-narrative {
    margin-bottom: 2rem;
}

.portal-title-v3 {
    font-size: clamp(2.5rem, 8vw, 5rem);
    line-height: 1.1;
    margin-bottom: 1rem;
    font-weight: 400;
}

.portal-title-v3.portal-title-cinzel {
    font-family: var(--font-display-serif);
    letter-spacing: 0.15em;
    text-transform: uppercase;
}

.portal-subtitle-v3 {
    font-size: 0.8rem;
    letter-spacing: 0.4em;
    text-transform: uppercase;
    opacity: 0.4;
}

.portal-actions {
    margin-top: 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.choice-buttons {
    display: flex;
    align-items: center;
    gap: 0;
    margin-top: 1.5rem;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid rgba(255, 255, 255, 0.05);
    border-radius: 100px;
    padding: 0.4rem;
}

.choice-divider {
    width: 1px;
    height: 20px;
    background: rgba(255, 255, 255, 0.1);
}

.btn-magnetic {
    padding: 0.8rem 2rem;
    border-radius: 100px;
    background: transparent;
    border: 1px solid transparent;
    color: rgba(255, 255, 255, 0.3);
    font-family: var(--font-mono);
    font-size: 0.75rem;
    letter-spacing: 0.2em;
    cursor: pointer;
    transition: all 0.6s var(--ease-out-expo);
}

.btn-magnetic.active {
    background: rgba(255, 255, 255, 0.05);
    color: white;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
}

.btn-magnetic.logic.active { 
    color: var(--accent-secondary);
    text-shadow: 0 0 20px rgba(var(--accent-secondary-rgb), 0.5);
}

.btn-magnetic.intuition.active { 
    color: var(--accent-primary);
    text-shadow: 0 0 20px rgba(var(--accent-primary-rgb), 0.5);
}

.plasma-text {
    background: linear-gradient(to right, #fff, var(--accent-primary), #fff);
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: plasmaShift 4s linear infinite;
}

@keyframes plasmaShift {
    0% { background-position: 0% center; }
    100% { background-position: 200% center; }
}

/* portal-scroll-hint entfernt → ersetzt durch portal-nav-controls */

/* ═══════════════════════════════════════════════════════════════
   Horizontale Panel-Navigation
   ═══════════════════════════════════════════════════════════════ */

/** Wrapper der scrollbaren Panel-Fläche */
.portal-panels-wrapper {
    position: relative;
    z-index: 20;
    width: 100%;
    max-width: 600px;
    /* Überlauf abschneiden, damit exit-Frames nicht sichtbar sind */
    overflow: hidden;
    /* Nötig für absolut-pos Kinder, falls man mehrere überlagert */
    min-height: 260px;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto;
}

/** Einzelne Panel-Folie */
.portal-panel-slide {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

/** Navigation: Dots + Pfeile */
.portal-nav-controls {
    position: absolute;
    bottom: 2.5rem;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    z-index: 30;
    pointer-events: auto;
}

/** Panel-Indikator-Dots */
.portal-panel-dots {
    display: flex;
    gap: 8px;
    align-items: center;
}

.portal-panel-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.2);
    border: none;
    cursor: pointer;
    transition: background 0.35s ease, transform 0.35s ease, width 0.35s ease;
    padding: 0;
}

.portal-panel-dot.active {
    background: var(--accent-secondary);
    box-shadow: 0 0 8px rgba(var(--accent-secondary-rgb), 0.6);
    transform: scale(1.15);
    width: 18px;
    border-radius: 3px;
}

/** Animierter Weiter-Pfeil (ersetzt den alten Scroll-Hinweis) */
.portal-next-arrow {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0.4rem 0.6rem;
    color: var(--accent-secondary);
    transition: color 0.25s ease;
}

.portal-next-arrow:hover {
    color: var(--mood-neon);
}

.portal-next-arrow-svg,
.portal-back-arrow-svg {
    display: block;
}

.portal-next-arrow:disabled {
    opacity: 0.3;
    cursor: default;
}

.portal-next-label {
    font-family: var(--font-mono);
    font-size: 0.62rem;
    letter-spacing: 0.35em;
    text-transform: uppercase;
    opacity: 0.65;
}

.portal-trust-anchor-v3 {
    opacity: 0.55;
    font-size: 0.72rem;
    letter-spacing: 0.08em;
}

.portal-invite-trust-anchor {
    opacity: 0.4;
    font-size: 0.7rem;
    margin-top: 0.75rem;
    letter-spacing: 0.1em;
}

/** Zurück-Pfeil */
.portal-back-arrow {
    position: absolute;
    left: -3rem;
    top: 50%;
    transform: translateY(-50%);
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0.3rem;
    opacity: 0.6;
    transition: opacity 0.25s ease;
}

.portal-back-arrow:hover { opacity: 1; }

/* ═══════════════════════════════════════════════════════════════
   Panel 1 – „Was erwartet dich?"
   ═══════════════════════════════════════════════════════════════ */

.portal-panel-label {
    font-size: 0.65rem;
    letter-spacing: 0.5em;
    text-transform: uppercase;
    color: rgba(6, 182, 212, 0.6);
    margin-bottom: 1.1rem;
}

.portal-panel1-content,
.portal-panel2-content {
    text-align: center;
    padding: 0 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    pointer-events: auto;
}

.portal-panel1-headline,
.portal-panel2-headline {
    font-size: clamp(2rem, 6vw, 3.4rem);
    line-height: 1.15;
    margin-bottom: 1.1rem;
    font-weight: 400;
}

.portal-panel1-body,
.portal-panel2-body {
    font-size: 0.78rem;
    letter-spacing: 0.06em;
    line-height: 1.75;
    opacity: 0.55;
    max-width: 380px;
    margin-bottom: 1.6rem;
}

.portal-panel1-items {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    text-align: left;
    width: 100%;
    max-width: 340px;
}

.portal-panel1-item {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.panel1-item-icon {
    font-size: 1rem;
    color: #06b6d4;
    opacity: 0.8;
    flex-shrink: 0;
    line-height: 1.4;
}

.panel1-item-title {
    font-size: 0.72rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.85);
    margin-bottom: 0.18rem;
}

.panel1-item-desc {
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    opacity: 0.4;
}

/* ═══════════════════════════════════════════════════════════════
   Panel 2 – „Die Einladung"
   ═══════════════════════════════════════════════════════════════ */

/* Nutzt dieselben Klassen wie Panel 1, nichts extra nötig */

/* ═══════════════════════════════════════════════════════════════
   Responsiveness (R5)
   ═══════════════════════════════════════════════════════════════ */
/* Responsiveness (R5) */
@media (max-width: 768px) {
    .portal-header-narrative {
        margin-bottom: 2rem;
    }
    
    .portal-title-v3 {
        font-size: clamp(2rem, 10vw, 3.5rem);
    }
    
    .choice-buttons {
        scale: 0.9;
    }
    
    .portal-nav-controls {
        bottom: 1.5rem;
    }

    .portal-panels-wrapper {
        min-height: 220px;
    }
}

@media (max-width: 480px) {
    .choice-buttons {
        flex-direction: column;
        border-radius: 20px;
        gap: 0.5rem;
    }
    
    .choice-divider {
        width: 80%;
        height: 1px;
        margin: 5px 0;
    }
    
    .btn-magnetic {
        padding: 0.5rem 1.5rem;
        width: 100%;
    }
}
/* Question Screen Layout (Mobile First) */
.quiz-container {
  display: flex;
  flex-direction: column;
  padding: 16px;
  gap: 16px;
  flex: 1;
  position: relative;
  z-index: 10;
  width: 100%;
}

@media (min-width: 768px) {
  .quiz-container {
    max-width: 800px;
    margin: 0 auto;
    padding: 40px;
    gap: 32px;
  }
}

.quiz-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.quiz-title {
  font-family: 'Outfit', sans-serif;
  font-weight: 800;
  font-size: 1.2rem;
  color: white;
}

@media (min-width: 768px) {
  .quiz-title {
    font-size: 1.5rem;
  }
}

.quiz-meta {
  color: var(--text-muted);
  font-size: 0.9rem;
  font-weight: 600;
}

.quiz-footer {
  margin-top: auto;
  padding-top: 24px;
}

/* Question Transitions */
.question-enter {
  opacity: 0;
  transform: translateX(30px);
}

.question-enter-active {
  opacity: 1;
  transform: translateX(0);
  transition: all 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.question-exit {
  opacity: 1;
  transform: translateX(0);
}

.question-exit-active {
  opacity: 0;
  transform: translateX(-30px);
  transition: all 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
/* Result Screen: Persona Reveal (Mobile First) */
.result-view {
  display: flex;
  flex-direction: column;
  padding: 16px;
  gap: 20px;
  width: 100%;
  max-width: var(--container-max-width, 600px);
  margin: 0 auto;
}

@media (min-width: 768px) {
  .result-view {
    padding: 32px 20px;
    gap: 32px;
  }
}

.persona-reveal-card {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur));
  -webkit-backdrop-filter: blur(var(--glass-blur));
  border: 1px solid var(--glass-border);
  border-radius: 24px;
  padding: 32px 24px;
  text-align: center;
  position: relative;
  overflow: hidden;
  box-shadow: var(--glass-shadow);
  animation: slideUp 0.8s var(--ease-out-expo) forwards;
}

@media (min-width: 768px) {
  .persona-reveal-card {
    padding: 48px 40px;
  }
}

.persona-badge-glow {
  width: 100px;
  height: 100px;
  background: radial-gradient(circle, var(--accent-primary) 0%, transparent 70%);
  margin: 0 auto 20px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 30px var(--accent-glow);
  position: relative;
}

@media (min-width: 768px) {
  .persona-badge-glow {
    width: 130px;
    height: 130px;
    margin-bottom: 24px;
  }
}

.persona-icon {
  font-size: 3rem;
  z-index: 2;
  filter: drop-shadow(0 0 10px var(--pure-white));
}

@media (min-width: 768px) {
  .persona-icon {
    font-size: 4rem;
  }
}

.persona-title {
  font-family: 'Outfit', sans-serif;
  font-weight: 800;
  font-size: 1.8rem;
  color: var(--pure-white);
  margin-bottom: 8px;
  letter-spacing: -0.5px;
}

@media (min-width: 768px) {
  .persona-title {
    font-size: 2.5rem;
  }
}

.persona-subtitle {
  color: var(--accent-secondary);
  font-size: 1rem;
  font-weight: 700;
  margin-bottom: 16px;
  text-transform: uppercase;
  letter-spacing: 1px;
}

.persona-description {
  color: var(--text-main);
  line-height: 1.6;
  font-size: 1rem;
  margin-bottom: 24px;
}

@media (min-width: 768px) {
  .persona-description {
    font-size: 1.15rem;
    margin-bottom: 32px;
  }
}

/* ICE (Intrinsic, Core, External) Cards */
.ice-metrics-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}

@media (min-width: 768px) {
  .ice-metrics-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
  }
}

.ice-card {
  background: var(--glass-light);
  border: 1px solid var(--glass-border-faint);
  border-left: 4px solid var(--accent-primary);
  padding: 16px;
  border-radius: 12px;
  transition: all 0.3s var(--ease-out-expo);
  text-align: left;
}

.ice-card:hover {
  transform: translateY(-4px);
  background: var(--glass-border-faint);
  border-color: var(--glass-border);
}

.ice-label {
  font-family: 'Outfit', sans-serif;
  font-weight: 800;
  font-size: 11px;
  text-transform: uppercase;
  color: var(--accent-secondary);
  margin-bottom: 8px;
  letter-spacing: 0.5px;
}

.ice-value {
  color: var(--pure-white);
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
}

/* Share & Actions */
.result-actions {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-top: 16px;
}

.share-section {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  padding: 24px;
  border-radius: 20px;
  box-shadow: var(--glass-shadow);
}

.share-title {
  font-family: 'Outfit', sans-serif;
  font-weight: 700;
  color: var(--pure-white);
  margin-bottom: 20px;
  text-align: center;
  font-size: 1.1rem;
}

.share-buttons-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}

@media (min-width: 768px) {
  .share-buttons-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* ── HI-4: Archetyp Hero-Block ────────────────────────────────────────────
   Das erste, was der User nach der RevealAnimation sieht:
   Sein Archetyp, groß und atmosphärisch, mit Farbe und Bild.
   ──────────────────────────────────────────────────────────────────────── */
.archetype-hero-block {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 3rem 1.5rem 2.5rem;
  margin-bottom: 1.5rem;
  border-radius: 1.5rem;
  background: rgba(10, 10, 20, 0.6);
  border: 1px solid var(--accent, rgba(255,255,255,0.1));
  backdrop-filter: blur(20px);
  overflow: hidden;
}

.hero-glow-ring {
  position: absolute;
  inset: -20px;
  border-radius: 50%;
  border: 1px solid transparent;
  pointer-events: none;
  animation: heroRingPulse 4s ease-in-out infinite;
}

@keyframes heroRingPulse {
  0%, 100% { opacity: 0.4; transform: scale(0.95); }
  50%       { opacity: 0.9; transform: scale(1.0); }
}

.hero-spirit-frame {
  position: relative;
  width: 160px;
  height: 160px;
  margin-bottom: 1.5rem;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
}

@media (min-width: 768px) {
  .hero-spirit-frame { width: 200px; height: 200px; }
}

.hero-spirit-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  border: 2px solid var(--accent, rgba(255,255,255,0.2));
  box-shadow: 0 0 40px var(--accent, rgba(255,255,255,0.1));
}

.hero-spirit-glow {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
}

.hero-text-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
}

.hero-label {
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  opacity: 0.75;
  margin: 0;
}

.hero-archetype-name {
  font-family: 'Outfit', sans-serif;
  font-weight: 900;
  font-size: clamp(2rem, 7vw, 3.5rem);
  line-height: 1.1;
  letter-spacing: -0.02em;
  margin: 0;
  text-shadow: 0 0 40px currentColor;
}

.hero-tagline {
  color: rgba(255, 255, 255, 0.65);
  font-size: clamp(0.9rem, 2.5vw, 1.1rem);
  font-style: italic;
  line-height: 1.5;
  max-width: 340px;
  margin: 0.25rem 0 0;
}

.hero-rarity-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: 0.75rem;
  padding: 0.3rem 0.8rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  color: rgba(255, 255, 255, 0.5);
  font-family: var(--font-mono, monospace);
}

.rarity-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
  animation: rarityPulse 2s ease-in-out infinite;
}

@keyframes rarityPulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.4; }
}

@media (prefers-reduced-motion: reduce) {
  .hero-glow-ring, .rarity-dot { animation: none; }
}
/* Constellation Result View (Archetype Reveal) - Mobile First */
.constellation-wrapper {
  position: relative;
  width: 100%;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  overflow-x: hidden;
  padding-top: 92px;
}

@media (min-width: 768px) {
  .constellation-wrapper {
    padding-top: 72px;
  }
}

@media (max-width: 780px) {
  .constellation-wrapper {
    padding-top: 118px;
  }
}

.center-creature-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  z-index: 10;
  animation: floatBreathing 6s var(--ease-out-expo) infinite alternate;
}

.archetype-title {
  font-family: 'Outfit', sans-serif;
  font-size: 28px;
  font-weight: 800;
  color: var(--pure-white);
  text-align: center;
  margin-top: 10px;
  text-shadow: 0 0 20px var(--accent-glow);
  letter-spacing: 2px;
  padding: 0 20px;
}

@media (min-width: 768px) {
  .archetype-title {
    font-size: 42px;
  }
}

.archetype-subtitle {
  font-size: 14px;
  color: var(--text-muted);
  text-align: center;
  margin-top: 8px;
  max-width: 85%;
  line-height: 1.5;
}

@media (min-width: 768px) {
  .archetype-subtitle {
    font-size: 18px;
    max-width: 600px;
  }
}

.center-creature {
  width: 220px;
  height: 220px;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 20px 0;
}

@media (min-width: 768px) {
  .center-creature {
    width: 320px;
    height: 320px;
    margin: 40px 0;
  }
}

.center-creature img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 0 30px var(--accent-primary));
  z-index: 2;
}

.creature-glow {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 140%;
  height: 140%;
  border-radius: 50%;
  background: radial-gradient(circle, var(--accent-primary) 0%, transparent 60%);
  opacity: 0.2;
  z-index: 1;
  animation: pulseGlow 4s infinite alternate;
}

/* Orbit Nodes Layout */
.orbit-node {
  position: absolute;
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  backdrop-filter: blur(var(--glass-blur));
  -webkit-backdrop-filter: blur(var(--glass-blur));
  transition: all 0.4s var(--ease-out-expo);
  z-index: 20;
  box-shadow: var(--glass-shadow);
  color: var(--pure-white);
}

@media (min-width: 768px) {
  .orbit-node {
    width: 100px;
    height: 100px;
  }
}

.orbit-node:hover {
  transform: scale(1.1) translateY(-5px);
  background: var(--glass-light);
  border-color: var(--accent-primary);
  box-shadow: 0 0 30px rgba(var(--accent-primary-rgb), 0.4);
}

.node-icon {
  font-size: 20px;
  margin-bottom: 4px;
}

@media (min-width: 768px) {
  .node-icon {
    font-size: 28px;
  }
}

.node-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

/* --- Text Animations --- */
.kinetic-word {
  display: inline-flex;
  overflow: hidden;
}

.kinetic-letter {
  display: inline-block;
}

/* Positions - Responsive to Container */
.node-top { top: 8%; left: 50%; transform: translateX(-50%); }
.node-bottom { bottom: 12%; left: 50%; transform: translateX(-50%); }
.node-left { top: 45%; left: 8%; transform: translateY(-50%); }
.node-right { top: 45%; right: 8%; transform: translateY(-50%); }

@media (min-width: 768px) {
  .node-top { top: 12%; }
  .node-bottom { bottom: 18%; }
  .node-left { left: 15%; }
  .node-right { right: 15%; }
}

/* Specific Hover Scale factors to avoid conflict with transforms */
.node-top:hover { transform: translateX(-50%) scale(1.1); }
.node-bottom:hover { transform: translateX(-50%) scale(1.1); }
.node-left:hover { transform: translateY(-50%) scale(1.1); }
.node-right:hover { transform: translateY(-50%) scale(1.1); }

@media (prefers-reduced-motion: reduce) {
  .center-creature-container,
  .creature-glow {
    animation: none;
  }
}

/* Animations */
@keyframes floatBreathing {
  0% { transform: translateY(0px); }
  100% { transform: translateY(-15px); }
}

@keyframes pulseGlow {
  0% { transform: translate(-50%, -50%) scale(0.9); opacity: 0.1; }
  100% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.25; }
}
.legal-view-wrapper {
  --legal-brass-rgb: 216, 189, 122;
  --legal-blue-rgb: 108, 154, 190;
  --legal-ink: #030507;
  --legal-panel: rgba(7, 9, 13, 0.82);
  --legal-panel-strong: rgba(9, 11, 15, 0.94);
  --legal-border: rgba(var(--legal-brass-rgb), 0.14);
  position: relative;
  isolation: isolate;
  min-height: 100dvh;
  padding: clamp(1.25rem, 4vw, 3.5rem);
  overflow-x: clip;
  background: var(--legal-ink);
  color: rgba(246, 239, 218, 0.86);
}

.legal-atmosphere {
  opacity: 0.92;
}

.legal-shell {
  position: relative;
  z-index: 1;
  width: min(1120px, 100%);
  margin: 0 auto;
}

.legal-topbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1rem;
  margin-bottom: clamp(1.5rem, 4vw, 2.75rem);
}

.legal-status,
.legal-doc-link,
.legal-contact-card,
.legal-meta-row span {
  border: 1px solid var(--legal-border);
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(var(--legal-brass-rgb), 0.06), transparent 58%),
    rgba(4, 6, 10, 0.66);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.045);
}

.legal-status {
  padding: 0.62rem 0.82rem;
  color: rgba(var(--legal-brass-rgb), 0.8);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.legal-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(250px, 320px);
  gap: clamp(1.5rem, 5vw, 4.5rem);
  align-items: end;
  padding-bottom: clamp(1.4rem, 4vw, 2.5rem);
  border-bottom: 1px solid rgba(var(--legal-brass-rgb), 0.12);
}

.legal-heading {
  min-width: 0;
}

.legal-kicker {
  display: inline-flex;
  margin-bottom: 0.85rem;
  color: rgba(var(--legal-brass-rgb), 0.8);
  letter-spacing: 0.15em;
}

.legal-title {
  margin: 0;
  color: #fff7e0;
  font-size: clamp(2.7rem, 7vw, 5rem);
  line-height: 0.95;
  letter-spacing: 0;
}

.legal-lede {
  max-width: 700px;
  margin: clamp(1rem, 2.5vw, 1.5rem) 0 0;
  color: rgba(246, 239, 218, 0.68);
  font-size: clamp(1rem, 1.8vw, 1.18rem);
  line-height: 1.65;
}

.legal-meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-top: 1.35rem;
}

.legal-meta-row span {
  padding: 0.42rem 0.6rem;
  color: rgba(246, 239, 218, 0.58);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.legal-doc-nav {
  display: grid;
  gap: 0.65rem;
}

.legal-doc-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.78rem 0.9rem;
  color: rgba(246, 239, 218, 0.7);
  text-decoration: none;
  transition: border-color 0.18s ease, color 0.18s ease, background 0.18s ease;
}

.legal-doc-link span {
  color: inherit;
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 760;
}

.legal-doc-link small {
  color: rgba(var(--legal-blue-rgb), 0.7);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 900;
  letter-spacing: 0.14em;
}

.legal-doc-link:hover,
.legal-doc-link:focus-visible,
.legal-doc-link[data-active='true'] {
  border-color: rgba(var(--legal-brass-rgb), 0.36);
  color: #fff7e0;
  outline: none;
  background:
    linear-gradient(135deg, rgba(var(--legal-brass-rgb), 0.12), transparent 58%),
    linear-gradient(90deg, rgba(var(--legal-blue-rgb), 0.055), transparent 78%),
    rgba(6, 8, 12, 0.82);
}

.legal-doc-link[data-active='true'] small {
  color: rgba(var(--legal-brass-rgb), 0.82);
}

.legal-layout {
  display: grid;
  grid-template-columns: minmax(220px, 0.34fr) minmax(0, 1fr);
  gap: clamp(1rem, 3vw, 1.5rem);
  margin-top: clamp(1.25rem, 4vw, 2.5rem);
}

.legal-notice {
  position: sticky;
  top: 1.25rem;
  align-self: start;
  padding: 1rem;
  border: 1px solid var(--legal-border);
  border-radius: 8px;
  background:
    radial-gradient(ellipse 90% 48% at 20% 10%, rgba(var(--legal-brass-rgb), 0.08), transparent 70%),
    linear-gradient(90deg, rgba(var(--legal-blue-rgb), 0.045), transparent 76%),
    var(--legal-panel);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.045),
    0 18px 44px rgba(0, 0, 0, 0.2);
}

.legal-note-label,
.legal-contact-card span {
  display: block;
  margin-bottom: 0.55rem;
  color: rgba(var(--legal-brass-rgb), 0.84);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 900;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.legal-notice p {
  margin: 0;
  color: rgba(246, 239, 218, 0.64);
  font-size: 0.9rem;
  line-height: 1.62;
}

.legal-contact-card {
  margin-top: 1rem;
  padding: 0.78rem;
}

.legal-readiness-card {
  margin-top: 1rem;
  padding-top: 0.9rem;
  border-top: 1px solid rgba(var(--legal-brass-rgb), 0.12);
}

.legal-readiness-label {
  display: block;
  margin-bottom: 0.62rem;
  color: rgba(var(--legal-blue-rgb), 0.78);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 900;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.legal-readiness-list {
  display: grid;
  gap: 0.52rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.legal-readiness-list li {
  position: relative;
  padding-left: 1rem;
  color: rgba(246, 239, 218, 0.62);
  font-size: 0.84rem;
  line-height: 1.5;
}

.legal-readiness-list li::before {
  content: '';
  position: absolute;
  top: 0.68em;
  left: 0;
  width: 0.34rem;
  height: 0.34rem;
  border: 1px solid rgba(var(--legal-brass-rgb), 0.42);
  transform: translateY(-50%) rotate(45deg);
}

.legal-contact-card a {
  color: #fff7e0;
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 760;
  text-decoration: none;
}

.legal-contact-card a:hover,
.legal-contact-card a:focus-visible {
  color: rgb(var(--legal-brass-rgb));
  outline: none;
}

.legal-content {
  min-width: 0;
}

.legal-sections-container {
  display: grid;
  gap: 0.78rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.legal-section {
  display: grid;
  grid-template-columns: 3.25rem minmax(0, 1fr);
  gap: clamp(0.7rem, 2vw, 1.1rem);
  min-width: 0;
  padding: clamp(1rem, 2.6vw, 1.35rem);
  border: 1px solid rgba(var(--legal-brass-rgb), 0.12);
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(var(--legal-brass-rgb), 0.045), transparent 46%),
    linear-gradient(90deg, rgba(var(--legal-blue-rgb), 0.035), transparent 76%),
    var(--legal-panel-strong);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 14px 34px rgba(0, 0, 0, 0.14);
}

.legal-section-index {
  display: grid;
  width: 2.45rem;
  height: 2.45rem;
  place-items: center;
  border: 1px solid rgba(var(--legal-brass-rgb), 0.18);
  border-radius: 8px;
  color: rgba(var(--legal-brass-rgb), 0.84);
  font-family: var(--font-mono);
  font-size: 0.74rem;
  font-weight: 900;
  background: rgba(3, 5, 8, 0.42);
}

.legal-section-body {
  min-width: 0;
}

.section-title {
  margin: 0 0 0.65rem;
  color: #fff7e0;
  font-family: var(--font-heading);
  font-size: clamp(1.05rem, 2vw, 1.28rem);
  line-height: 1.1;
}

.section-text {
  max-width: 74ch;
  margin: 0;
  color: rgba(246, 239, 218, 0.68);
  font-size: 0.98rem;
  line-height: 1.72;
}

.section-text + .section-text {
  margin-top: 0.55rem;
}

.analytics-consent-control {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1rem 1.25rem;
  align-items: end;
  margin-top: 1.15rem;
  padding: 1rem;
  border: 1px solid rgba(var(--legal-brass-rgb), 0.2);
  border-radius: 8px;
  background: rgba(2, 4, 7, 0.58);
}

.analytics-consent-control__copy {
  min-width: 0;
}

.analytics-consent-control__kicker,
.analytics-consent-control__state span {
  display: block;
  color: rgba(var(--legal-brass-rgb), 0.78);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 900;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.analytics-consent-control h3 {
  margin: 0.4rem 0 0;
  color: #fff7e0;
  font-family: var(--font-heading);
  font-size: 1.05rem;
  line-height: 1.2;
}

.analytics-consent-control p {
  max-width: 58ch;
  margin: 0.55rem 0 0;
  color: rgba(246, 239, 218, 0.66);
  font-size: 0.9rem;
  line-height: 1.55;
}

.analytics-consent-control__state {
  min-width: 11.5rem;
  padding-left: 1rem;
  border-left: 1px solid rgba(var(--legal-brass-rgb), 0.14);
}

.analytics-consent-control__state strong {
  display: block;
  margin-top: 0.42rem;
  color: rgba(246, 239, 218, 0.82);
  font-size: 0.9rem;
}

.analytics-consent-control[data-consent-state='granted'] .analytics-consent-control__state strong {
  color: rgb(var(--legal-brass-rgb));
}

.analytics-consent-control__actions {
  display: flex;
  grid-column: 1 / -1;
  flex-wrap: wrap;
  gap: 0.65rem;
  padding-top: 0.85rem;
  border-top: 1px solid rgba(var(--legal-brass-rgb), 0.12);
}

.analytics-consent-control__button {
  min-height: 44px;
  padding: 0.62rem 0.82rem;
  border: 1px solid rgba(var(--legal-brass-rgb), 0.2);
  border-radius: 6px;
  color: rgba(246, 239, 218, 0.72);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: rgba(4, 6, 9, 0.72);
  cursor: pointer;
}

.analytics-consent-control__button:hover,
.analytics-consent-control__button:focus-visible,
.analytics-consent-control__button[aria-pressed='true'] {
  border-color: rgba(var(--legal-brass-rgb), 0.48);
  color: #fff7e0;
  outline: none;
}

.analytics-consent-control__button--primary {
  color: #151107;
  background: rgb(var(--legal-brass-rgb));
}

.analytics-consent-control__button--primary:hover,
.analytics-consent-control__button--primary:focus-visible,
.analytics-consent-control__button--primary[aria-pressed='true'] {
  color: #050403;
  background: #ead59b;
}

@media (max-width: 820px) {
  .legal-header,
  .legal-layout {
    grid-template-columns: 1fr;
  }

  .legal-notice {
    position: relative;
    top: auto;
  }

  .legal-doc-nav {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .legal-doc-link {
    align-items: flex-start;
    flex-direction: column;
    gap: 0.35rem;
  }
}

@media (max-width: 520px) {
  .legal-view-wrapper {
    padding: 1rem;
  }

  .legal-topbar {
    align-items: stretch;
    flex-direction: column;
  }

  .legal-status {
    justify-content: center;
  }

  .legal-doc-nav {
    grid-template-columns: 1fr;
  }

  .legal-section {
    grid-template-columns: 1fr;
  }

  .legal-section-index {
    width: 2.2rem;
    height: 2.2rem;
  }

  .analytics-consent-control {
    grid-template-columns: 1fr;
  }

  .analytics-consent-control__state {
    min-width: 0;
    padding: 0.85rem 0 0;
    border-top: 1px solid rgba(var(--legal-brass-rgb), 0.14);
    border-left: 0;
  }

  .analytics-consent-control__actions,
  .analytics-consent-control__button {
    width: 100%;
  }
}
/* Public editorial routes share this visual grammar. Keeping it in the initial
   stylesheet avoids a late unstyled hero on throttled mobile connections. */
/* ═══════════════════════════════════════════════════════════════════════
   Persona Quest – Aetherpunk Landing Page
   Editorial Aetherpunk Hero Layout (LANDING-VISUAL-02 v2.1, hero-only).

   Reference: Persona_Quest_Landingpage_Visual_Brief.md §4, §5, §7.
   ═══════════════════════════════════════════════════════════════════════ */

.aetherpunk-landing {
  position: relative;
  min-height: 100vh;
  /* Sehr zurückhaltender Hintergrund – die Hauptlichtarbeit übernimmt
     der Backlight. Hier nur ein Hauch warmer Tönung, damit das Schwarz
     nicht völlig flach ist, aber der Bg konkurriert nicht mit dem
     Backlight um Aufmerksamkeit. */
  background:
    radial-gradient(ellipse 90% 100% at 70% 30%, rgba(214, 184, 122, 0.06) 0%, transparent 60%),
    var(--surface-page);
  color: var(--text-aether-body);
  font-family: var(--font-body);
  overflow: hidden; /* Smoke-Wisps am Rand kappen */
  padding: 0 clamp(20px, 5vw, 80px);
}

/* ── Atmospheric Smoke ─────────────────────────────────────────────── */
.aetherpunk-landing__atmosphere {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}




  
/* Backlight – die Bühne hinter dem Orb. Eine einzelne große
   Lichtquelle, fokussiert und warm-golden. Eng umrissen, damit
   der Orb im Zentrum des Lichts sitzt ohne die ganze Seite
   aufzuhellen. */
.aetherpunk-landing__backlight {
  position: absolute;
  width: 1000px;
  height: 900px;
  right: -180px;
  top: -80px;
  background: radial-gradient(
    ellipse at center,
    rgba(254, 215, 170, 0.38) 0%,
    rgba(254, 215, 170, 0.20) 18%,
    rgba(214, 184, 122, 0.12) 35%,
    rgba(214, 184, 122, 0.04) 52%,
    transparent 68%
  );
  border-radius: 50%;
  pointer-events: none;
  filter: blur(6px);
}

.smoke-wisp {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  opacity: 0.10;
  transition: opacity 1.5s var(--ease-out-expo);
}

/* Cool-Wisp ist als ferner Komplementärakzent gedacht, nicht als
   zweite Lichtquelle. Verlegt nach links unten, weg vom Orb-Bereich,
   damit das Gold dort dominieren kann. Opazität gedrosselt. */
.smoke-wisp--cool {
  width: 480px;
  height: 320px;
  left: -140px;
  bottom: 12%;
  background: radial-gradient(circle, var(--color-dim-h) 0%, transparent 70%);
  opacity: 0.08;
}

.smoke-wisp--warm {
  width: 520px;
  height: 360px;
  right: -60px;
  bottom: -2%;
  background: radial-gradient(circle, var(--color-dim-e) 0%, transparent 70%);
  opacity: 0.14;
}

/* Bridge-Wisp – subtiler goldener Querstrahl für atmosphärische Verbindung.
   Deutlich zurückhaltender als zuvor, da der Backlight die Hauptarbeit macht. */
.smoke-wisp--bridge {
  width: 900px;
  height: 400px;
  left: 10%;
  top: 35%;
  background: radial-gradient(circle, var(--metal-gold) 0%, transparent 70%);
  opacity: 0.14;
  filter: blur(120px);
}

.aetherpunk-landing__edge-glow {
  position: absolute;
  pointer-events: none;
  filter: blur(100px);
  z-index: -1;
  opacity: 0.4;
  mix-blend-mode: screen;
}

.aetherpunk-landing__edge-glow--left {
  top: 0;
  left: -10vw;
  width: 20vw;
  height: 100vh;
  background: var(--metal-platinum);
}

.aetherpunk-landing__edge-glow--right {
  top: 0;
  right: -10vw;
  width: 20vw;
  height: 100vh;
  background: var(--accent-primary);
}

.aetherpunk-landing__edge-glow--bottom {
  bottom: -10vh;
  left: 0;
  width: 100vw;
  height: 20vh;
  background: var(--metal-gold);
  opacity: 0.15;
}

/* ── Top Navigation ────────────────────────────────────────────────── */
.aetherpunk-landing__nav {
  /* Sticky am Viewport-Top - gemeinsam für Landing, Methodik und /ueber.
     Reference: Persona_Quest_Landingpage_Sekundaerseiten_Konzept.md §6.1. */
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-sizing: border-box;
  padding: 14px clamp(20px, 2vw, 28px) 10px;
  gap: clamp(14px, 2vw, 24px);
  /* Schmale Smoke-Gradient damit Text beim Scrollen über Surface-Karten lesbar
     bleibt. Sehr dezent – Brief §10.5 verbietet Glow/Neon-Effekte. */
  background: linear-gradient(to bottom, rgba(8, 11, 19, 0.78), rgba(8, 11, 19, 0));
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.aetherpunk-landing__brand,
.aetherpunk-landing__nav-link,
.aetherpunk-landing__nav-login {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  line-height: 1;
}

.aetherpunk-landing__brand {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: 18px;
  color: var(--text-aether-primary);
  letter-spacing: 0.08em;
  /* Brand rendert seit LANDING-HERO-NAV-01 als <Link> (also <a>). Browser-
     Defaults für Anchor zurücksetzen, sonst entsteht Underline und Linkfarbe. */
  text-decoration: none;
  justify-content: flex-start;
  padding: 0;
  transition: color 0.3s var(--ease-out-expo);
}

.aetherpunk-landing__brand:hover,
.aetherpunk-landing__brand:focus-visible {
  color: var(--text-aether-primary);
  text-decoration: none;
  outline: none;
}

.aetherpunk-landing__nav-links {
  display: flex;
  gap: clamp(14px, 2.2vw, 30px);
  flex: 1;
  justify-content: center;
}

.aetherpunk-landing__nav-actions {
  display: flex;
  align-items: center;
  gap: var(--space-md);
}

.aetherpunk-landing__nav-primary {
  padding: 0.5rem 1rem;
  font-size: 0.85rem;
}

.aetherpunk-landing__nav-link {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: var(--ls-mono-eyebrow);
  text-transform: uppercase;
  color: var(--text-aether-muted);
  text-decoration: none;
  padding: 0 8px;
  transition: color 0.3s var(--ease-out-expo);
}

.aetherpunk-landing__nav-link:hover,
.aetherpunk-landing__nav-link:focus-visible {
  color: var(--text-aether-primary);
  outline: none;
}

/* Aktiver Nav-Link (gesetzt von LandingHeader auf allen Public-Seiten). Markiert
   die aktuelle Route ohne Glow oder Translation – nur Farbe und ein dezenter
   Platin-Hairline-Unterstrich. Visual Brief §10.5: keine Glow-/Neon-Effekte. */
.aetherpunk-landing__nav-link--active {
  color: var(--text-aether-primary);
  position: relative;
}

.aetherpunk-landing__nav-link--active::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 7px;
  height: 1px;
  background: rgba(169, 176, 187, 0.55);
}

.aetherpunk-landing__nav-login {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--ls-mono-eyebrow);
  text-transform: uppercase;
  color: var(--text-aether-muted);
  background: transparent;
  border: 0;
  cursor: pointer;
  padding: 0 12px;
  transition: color 0.3s var(--ease-out-expo);
}

.aetherpunk-landing__nav-login:hover {
  color: var(--text-aether-primary);
}

.aetherpunk-landing__brand:focus-visible,
.aetherpunk-landing__nav-link:focus-visible,
.aetherpunk-landing__nav-login:focus-visible {
  outline: 2px solid rgba(var(--metal-gold-rgb), 0.78);
  outline-offset: 6px;
  border-radius: 4px;
  box-shadow: 0 0 0 4px rgba(5, 7, 11, 0.74);
}

.aetherpunk-landing__nav-login:focus-visible {
  color: var(--text-aether-primary);
}

/* ── Hero ──────────────────────────────────────────────────────────── */
.aetherpunk-landing__hero {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(40px, 6vw, 80px);
  min-height: calc(100vh - 220px);
}

/* Copy column */
.aetherpunk-landing__copy-glass {
  position: relative;
  z-index: 2;
  padding: 48px; /* Slightly more spacious */
  background: rgba(255, 255, 255, 0.015); /* More subtle */
  backdrop-filter: blur(24px); /* Increased blur for premium feel */
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(169, 176, 187, 0.08); /* Fainter border */
  border-radius: 8px; /* Softer corners */
  box-shadow: 
    inset 0 0 40px rgba(255, 255, 255, 0.01),
    0 24px 60px rgba(0, 0, 0, 0.35);
}

.aetherpunk-landing__copy {
  max-width: 560px;
  position: relative;
}

.aetherpunk-landing__h1 {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  /* Brief §8.4: Hero H1 48 bis 60px. Auf großen Screens bis 72px
     erlaubt damit der Italic-Serif monumental wirkt, aber nicht umbricht. */
  font-size: clamp(48px, 5.5vw, 72px);
  line-height: 1.05;
  margin: 0 0 20px;
  letter-spacing: var(--ls-italic-title);
  
  /* Ethereal Typography: Lebendiger, animierter Gradient */
  background: linear-gradient(
    -45deg,
    var(--metal-platinum-strong),
    #ffffff,
    var(--metal-gold),
    #ffffff,
    var(--accent-primary),
    var(--metal-platinum-strong)
  );
  background-size: 300% auto;
  color: transparent;
  -webkit-background-clip: text;
  background-clip: text;
  animation: ethereal-text-shimmer 20s ease-in-out infinite alternate;
}

@keyframes ethereal-text-shimmer {
  0% {
    background-position: 0% 50%;
  }
  100% {
    background-position: 100% 50%;
  }
}

/* Architektonisches Mess-Lineal – Präzisionsinstrument-Ästhetik.
   Gold-Null-Tick links (14px) als Startpunkt, zwei Platin-Neben-Ticks
   bei 33% (8px) und 66% (5px). Das Instrument-Motiv ist im
   Aetherpunk-Brief unter §5.2 (Architectural over Ornamental) verankert. */
.aetherpunk-landing__ornament {
  position: relative;
  width: 72px;
  height: 14px;
  margin: 0 0 22px;
}

/* Horizontale Baseline: Gold → Platin Verlauf von links nach rechts */
.aetherpunk-landing__ornament-line {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background: linear-gradient(
    to right,
    var(--metal-gold) 0%,
    var(--metal-platinum-strong) 100%
  );
}

/* Gold-Null-Tick: hoher Strich am Startpunkt (Nullmarke) */
.aetherpunk-landing__ornament-line::before {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 1px;
  height: 14px;
  background: var(--metal-gold);
}

/* Neben-Ticks bei 33% (8px) und 66% (5px) in Platin */
.aetherpunk-landing__ornament-line::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background:
    linear-gradient(var(--metal-platinum-strong), var(--metal-platinum-strong)) 33% bottom / 1px 8px no-repeat,
    linear-gradient(var(--metal-platinum-strong), var(--metal-platinum-strong)) 66% bottom / 1px 5px no-repeat;
}

/* Nicht mehr genutzt – leer damit JSX-Refs nicht brechen */
.aetherpunk-landing__ornament-line--long {}
.aetherpunk-landing__ornament-dot { display: none; }

/* Trust-Zeile mit flankierender Hairline – Mono-Caps Auszeichnung.
   War im Brief vorgesehen und gibt dem CTA-Bereich editorial Gewicht. */
.aetherpunk-landing__trust {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 36px;
  max-width: 520px;
}

.aetherpunk-landing__trust-rule {
  flex: 0 0 48px;
  height: 1px;
  background: var(--metal-platinum-border);
  position: relative;
}

.aetherpunk-landing__trust-rule::before {
  content: '';
  position: absolute;
  left: -1px;
  top: -3px;
  width: 1px;
  height: 7px;
  background: var(--metal-platinum-strong);
}

.aetherpunk-landing__trust-text {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--ls-mono-eyebrow);
  text-transform: uppercase;
  color: var(--text-aether-faint);
  margin: 0;
  white-space: nowrap;
}

.aetherpunk-landing__subline {
  font-family: var(--font-body);
  font-size: clamp(16px, 1.6vw, 19px);
  font-weight: 400;
  line-height: 1.55;
  color: var(--text-aether-body);
  margin: 0 0 16px;
  max-width: 480px;
}

.aetherpunk-landing__body {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.65;
  color: var(--text-aether-muted);
  margin: 0 0 36px;
  max-width: 460px;
}

.aetherpunk-landing__ctas {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}

.aetherpunk-landing__ctas .btn,
.aetherpunk-landing__ctas button {
  min-height: 48px;
}

/* Orb stage column */
.aetherpunk-landing__orb-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 28px;
  min-height: 480px;
}

.aetherpunk-landing__orb-mark {
  position: relative;
  z-index: 1;
}

.aetherpunk-landing__signature-artifact {
  justify-content: center;
}

/* Caption unter dem Orb – Symbolik benennen, Text und Orb verbinden. */
.aetherpunk-landing__orb-caption {
  position: relative;
  z-index: 2;
  text-align: center;
  max-width: 320px;
  padding: 0 12px;
}

.aetherpunk-landing__orb-caption-label {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--ls-mono-eyebrow);
  text-transform: uppercase;
  color: var(--text-aether-faint);
  margin: 0 0 8px;
}

.aetherpunk-landing__orb-caption-text {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: 14px;
  line-height: 1.5;
  color: var(--text-aether-muted);
  margin: 0;
}

/* ── Next-Section Hint ─────────────────────────────────────────────── */
.aetherpunk-landing__next-hint {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  padding: 20px 0 60px;
}

.aetherpunk-landing__next-line {
  flex: 1;
  max-width: 200px;
  height: 1px;
  background: var(--metal-platinum-border);
}

.aetherpunk-landing__next-label {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--ls-mono-marker);
  text-transform: uppercase;
  color: var(--text-aether-faint);
  white-space: nowrap;
}

/* ── Responsive ────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
  .aetherpunk-landing__nav-links {
    gap: 18px;
  }

  .aetherpunk-landing__hero {
    grid-template-columns: 1fr;
    gap: 32px;
    padding: 40px 0 80px;
  }

  .aetherpunk-landing__copy {
    order: 1;
    max-width: none;
    text-align: center;
    margin: 0 auto;
  }

  .aetherpunk-landing__copy .aetherpunk-landing__subline,
  .aetherpunk-landing__copy .aetherpunk-landing__body {
    margin-left: auto;
    margin-right: auto;
  }

  .aetherpunk-landing__ctas {
    justify-content: center;
  }

  .aetherpunk-landing__orb-stage {
    order: 0;
    min-height: 360px;
  }
}

@media (max-width: 640px) {
  .aetherpunk-landing__nav {
    flex-wrap: wrap;
    padding: 10px clamp(12px, 4vw, 20px) 0;
    row-gap: 4px;
    column-gap: 12px;
  }

  .aetherpunk-landing__nav-links {
    order: 3;
    width: 100%;
    justify-content: space-between;
    gap: 4px;
    padding-top: 4px;
  }

  .aetherpunk-landing__h1 {
    font-size: 38px;
  }

  .smoke-wisp--cool { width: 320px; height: 240px; right: -80px; }
  .smoke-wisp--warm { width: 280px; height: 200px; }
}

/* ════════════════════════════════════════════════════════════════════
   LandingHeroOrb – kostbare Glaskugel
   Komposition adaptiert aus `Konzept Signatur.html` (Lawful-Variante).
   Mehrschichtige Inset-Shadows + SVG-Turbulenz + mix-blend-modes geben
   echte Glas-Haptik. Farben Editorial-Aetherpunk-aligned.
   ════════════════════════════════════════════════════════════════════ */

.landing-hero-orb {
  position: relative;
  border-radius: 50%;
  /* isolation verhindert, dass mix-blend-modes den Hintergrund "ausbrennen". */
  isolation: isolate;
  /* Asymmetrische Aura – wärmer oben links (Lichtquelle),
     kühler/dunkler unten rechts. Suggeriert eine reale Lichtquelle
     statt einer flach-symmetrischen Linse. */
  box-shadow:
    -40px -25px 130px rgba(214, 184, 122, 0.16),
    35px 30px 90px rgba(45, 212, 191, 0.08),
    0 20px 50px rgba(0, 0, 0, 0.5);
  animation: landing-orb-hue-cycle 180s linear infinite;
}

/* Innenraum als tiefes Glas – Bühne für Smoke und Lichtkern.
   Off-center radial gradient: Lichtseite oben links, Schattenseite
   unten rechts. Etwas heller getrimmt als die erste Iteration, damit
   die Smoke-Farben Luft zum Leuchten bekommen.
   Der Hue-Cycle (180s) rotiert die gesamte Palette langsam durch
   das volle Farbspektrum – so zeigt der Orb nicht nur die 4 Base-
   Colors, sondern alle Zwischentöne: Orange, Magenta, Indigo, Grün… */
.landing-hero-orb__inner {
  position: absolute;
  inset: 8px;
  border-radius: 50%;
  overflow: hidden;
  background: radial-gradient(
    circle at 35% 32%,
    rgba(0, 0, 0, 0.0) 0%,
    rgba(0, 0, 0, 0.40) 50%,
    rgba(0, 0, 0, 0.80) 100%
  );
  animation: landing-orb-pulse 15s ease-in-out infinite alternate;
}

@keyframes landing-orb-pulse {
  0% { transform: scale(1); filter: brightness(1) saturate(1); }
  100% { transform: scale(1.02); filter: brightness(1.1) saturate(1.2); }
}

/* Plasma-Nebel: Vier Layer mit statischen Turbulenz-Filtern.
   Der Filter gibt organische Kanten – alle Bewegung kommt aus CSS-
   Transforms. Lange Zyklen (45–90s) und weite Wanderwege (±18–22%)
   erzeugen fließendes, nebelhaftes Driften.
   Gradienten sind groß und zentral – die Verschiebung entsteht
   ausschließlich durch translate in den Keyframes. */
.landing-hero-orb__smoke {
  position: absolute;
  inset: -45%;
  mix-blend-mode: screen;
  opacity: 1.0;
  will-change: transform;
}

.landing-hero-orb__smoke--warm-deep {
  filter: var(--orb-filter-a);
  background: radial-gradient(
    ellipse at 50% 50%,
    rgba(251, 146, 60, 0.92) 0%,
    rgba(240, 160, 80, 0.50) 22%,
    rgba(214, 184, 122, 0.22) 42%,
    transparent 65%
  );
  animation: landing-orb-drift-1 65s ease-in-out infinite alternate;
}

.landing-hero-orb__smoke--cool-deep {
  filter: var(--orb-filter-a);
  background: radial-gradient(
    ellipse at 50% 50%,
    rgba(140, 80, 220, 0.72) 0%,
    rgba(120, 60, 200, 0.38) 24%,
    rgba(100, 50, 180, 0.15) 42%,
    transparent 60%
  );
  animation: landing-orb-drift-2 82s ease-in-out infinite alternate;
}

.landing-hero-orb__smoke--warm-edge {
  filter: var(--orb-filter-b);
  background: radial-gradient(
    ellipse at 50% 50%,
    rgba(255, 120, 180, 0.65) 0%,
    rgba(240, 90, 140, 0.30) 26%,
    transparent 50%
  );
  animation: landing-orb-drift-3 54s ease-in-out infinite alternate;
}

.landing-hero-orb__smoke--cool-edge {
  filter: var(--orb-filter-b);
  background: radial-gradient(
    ellipse at 50% 50%,
    rgba(100, 230, 220, 0.45) 0%,
    rgba(45, 212, 191, 0.18) 26%,
    transparent 48%
  );
  animation: landing-orb-drift-4 73s ease-in-out infinite alternate;
}

/* Feine Sternchen/Staub im Glas – bringen Tiefe und Bewegung. */
.landing-hero-orb__dust {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(1px 1px at 25% 35%, rgba(255, 255, 255, 0.7), transparent),
    radial-gradient(1.5px 1.5px at 65% 75%, rgba(255, 220, 150, 0.5), transparent),
    radial-gradient(1px 1px at 75% 45%, rgba(255, 255, 255, 0.4), transparent),
    radial-gradient(2px 2px at 45% 85%, rgba(200, 240, 255, 0.6), transparent),
    radial-gradient(1px 1px at 15% 70%, rgba(255, 255, 255, 0.5), transparent),
    radial-gradient(1.5px 1.5px at 85% 25%, rgba(254, 215, 170, 0.55), transparent);
  mix-blend-mode: screen;
  animation: landing-orb-dust-rotate 120s linear infinite;
}

/* Drift keyframes – organische, unregelmäßige Wanderwege */
@keyframes landing-orb-drift-1 {
  0%   { transform: translate(-15%, -12%) rotate(0deg) scale(1.0); }
  33%  { transform: translate(10%, 15%) rotate(120deg) scale(1.1); }
  66%  { transform: translate(18%, -10%) rotate(240deg) scale(0.9); }
  100% { transform: translate(-15%, -12%) rotate(360deg) scale(1.0); }
}

@keyframes landing-orb-drift-2 {
  0%   { transform: translate(12%, -18%) rotate(0deg) scale(1.1); }
  33%  { transform: translate(-15%, 12%) rotate(-120deg) scale(1.0); }
  66%  { transform: translate(8%, 20%) rotate(-240deg) scale(1.2); }
  100% { transform: translate(12%, -18%) rotate(-360deg) scale(1.1); }
}

@keyframes landing-orb-drift-3 {
  0%   { transform: translate(-8%, 15%) rotate(0deg) scale(0.9); }
  33%  { transform: translate(20%, -12%) rotate(120deg) scale(1.1); }
  66%  { transform: translate(-18%, -15%) rotate(240deg) scale(1.2); }
  100% { transform: translate(-8%, 15%) rotate(360deg) scale(0.9); }
}

@keyframes landing-orb-drift-4 {
  0%   { transform: translate(15%, 8%) rotate(0deg) scale(1.2); }
  33%  { transform: translate(-12%, -20%) rotate(-120deg) scale(0.9); }
  66%  { transform: translate(14%, -14%) rotate(-240deg) scale(1.1); }
  100% { transform: translate(15%, 8%) rotate(-360deg) scale(1.2); }
}

@keyframes landing-orb-hue-cycle {
  from { filter: hue-rotate(0deg); }
  to   { filter: hue-rotate(360deg); }
}

@keyframes landing-orb-dust-rotate {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Reduzierte Bewegung respektieren */
@media (prefers-reduced-motion: reduce) {
  .landing-hero-orb__smoke,
  .landing-hero-orb__dust {
    animation: none !important;
  }
}

/* Physische Glasoberfläche: Inset-Shadows simulieren die dicke Glas-Kante.
   Werte sind aus dem Signatur-Konzept übernommen, aber proportional auf
   ~360px Orb-Größe skaliert (Originalgröße dort: 70px). */
/* Physische Glasoberfläche mit asymmetrischen Inset-Shadows.
   Schlüssel zur kugeligen Anmutung: stärkere Vignette unten rechts,
   helle Lichtkante oben links, warmer Bounce am Boden (Reflexion einer
   Goldquelle). Reduzierter dunkel-Innenrand damit der Rand nicht als
   schwarzer Ring liest, sondern als elegante Glaskante. */
.landing-hero-orb__glass {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
  box-shadow:
    inset 0 0 60px rgba(0, 0, 0, 0.70),                 /* dunkler Innenrand rundum – etwas reduziert */
    inset -22px -30px 80px rgba(0, 0, 0, 0.38),         /* Schattenseite unten rechts */
    inset 0 0 24px rgba(0, 0, 0, 0.45),                 /* Verstärkung der Kante */
    inset 16px 16px 28px rgba(255, 255, 255, 0.10),     /* Lichtkante oben links – stärker */
    inset 0 -28px 55px rgba(214, 184, 122, 0.09),       /* warmer Bounce am Boden */
    inset 0 0 6px rgba(255, 255, 255, 0.22);            /* feine Außenkante */
  border: 1px solid rgba(255, 255, 255, 0.12);
}

/* Specular Highlight – kräftiger heller Reflexionspunkt oben links. */
.landing-hero-orb__specular {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
  mix-blend-mode: screen;
  background: radial-gradient(
    circle at 28% 26%,
    rgba(255, 255, 255, 0.55) 0%,
    rgba(255, 255, 255, 0.12) 18%,
    transparent 45%
  );
}

/* Mondsichel-Glanz oben links – Sekundärreflex, typisch für reales Glas
   mit zwei Lichtquellen (Hauptlicht + Umgebung). */
.landing-hero-orb__specular::before {
  content: '';
  position: absolute;
  top: 5%;
  left: 5%;
  width: 90%;
  height: 90%;
  border-radius: 50%;
  box-shadow: inset 25px 40px 30px -15px rgba(255, 255, 255, 0.42);
  transform: rotate(-15deg);
}



/* ═══════════════════════════════════════════════════════════
   § LÖSUNGSKARTE – Essenz · Kodex · Signatur Pfad
   Brief §5: offener horizontaler Pfad, keine Kartenwand.
   ═══════════════════════════════════════════════════════════ */

.aetherpunk-landing__path {
  max-width: 860px;
  margin: 0 auto;
  padding: 72px 48px 80px;
}

@supports (content-visibility: auto) {
  .aetherpunk-landing__path,
  .aetherpunk-landing__spheres,
  .aetherpunk-landing__social,
  .aetherpunk-landing__faq,
  .aetherpunk-landing__final-cta {
    content-visibility: auto;
    contain-intrinsic-size: auto 720px;
  }
}

/* Sektions-Header (wiederverwendbar für alle Sektionen) */
.aetherpunk-landing__section-header {
  text-align: center;
  margin-bottom: 56px;
}

.aetherpunk-landing__section-eyebrow {
  font-family: var(--font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--text-aether-muted, #8a8f97);
  margin: 0 0 12px;
}

.aetherpunk-landing__section-h2 {
  font-family: var(--font-serif, Georgia, 'Iowan Old Style', serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(28px, 3.5vw, 38px);
  color: var(--text-aether-primary, #f1ede1);
  margin: 0 0 16px;
  line-height: 1.18;
  letter-spacing: 0.005em;
}

.aetherpunk-landing__section-body {
  font-family: var(--font-sans, 'Outfit', sans-serif);
  font-size: 15px;
  line-height: 1.65;
  color: var(--text-aether-body, #c8ccd2);
  max-width: 540px;
  margin: 0 auto;
}

.aetherpunk-landing__principle-deferred {
  min-height: clamp(238px, 30vw, 294px);
  margin: 0 0 clamp(24px, 4vh, 36px);
}

.aetherpunk-landing__principle-deferred .signature-principle-strip {
  margin-bottom: 0;
}

.aetherpunk-landing__principle-placeholder {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  justify-content: center;
  gap: clamp(14px, 2.5vw, 26px);
}

.aetherpunk-landing__principle-placeholder-stage {
  display: flex;
  flex: 1 1 200px;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  max-width: 280px;
  min-height: clamp(238px, 30vw, 294px);
  padding: clamp(18px, 2.5vw, 24px);
  border: 1px solid rgba(214, 184, 122, 0.12);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.035), transparent 42%),
    rgba(10, 13, 18, 0.32);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.035);
}

.aetherpunk-landing__principle-placeholder-orb {
  width: 128px;
  height: 128px;
  border-radius: 50%;
  margin: 10px 0 8px;
  background:
    radial-gradient(circle at 35% 28%, rgba(255, 255, 255, 0.16), transparent 28%),
    radial-gradient(circle at 58% 62%, rgba(214, 184, 122, 0.12), transparent 58%);
  border: 1px solid rgba(214, 184, 122, 0.14);
  opacity: 0.62;
}

.aetherpunk-landing__principle-placeholder-line {
  width: min(148px, 68%);
  height: 8px;
  background: linear-gradient(90deg, transparent, rgba(214, 184, 122, 0.18), transparent);
  opacity: 0.72;
}

.aetherpunk-landing__principle-placeholder-line--short {
  width: min(104px, 54%);
}

/* ── Pfad-Schritte: vertikale Achse ─────────────────────── */
.aetherpunk-landing__path-steps {
  list-style: none;
  margin: 0 0 56px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}

.aetherpunk-landing__path-step {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 0 28px;
  position: relative;
}

.aetherpunk-landing__path-step-marker {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: 2px;
}

.aetherpunk-landing__path-step-index {
  font-family: var(--font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.18em;
  color: var(--metal-gold, #d6b87a);
  opacity: 0.72;
  margin-bottom: 10px;
  line-height: 1;
}

.aetherpunk-landing__path-step-rail {
  flex: 1;
  width: 1px;
  min-height: 60px;
  background: rgba(169, 176, 187, 0.22);
  position: relative;
}

/* Letzter Schritt: Rail unsichtbar (kein Folgeknoten) */
.aetherpunk-landing__path-step-rail--last {
  background: transparent;
}

.aetherpunk-landing__path-step-content {
  padding-bottom: 40px;
}

.aetherpunk-landing__path-step-title {
  font-family: var(--font-serif, Georgia, 'Iowan Old Style', serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(22px, 2.5vw, 28px);
  color: var(--text-aether-primary, #f1ede1);
  margin: 0 0 10px;
  line-height: 1.15;
  letter-spacing: 0.005em;
}

.aetherpunk-landing__path-step-body {
  font-family: var(--font-sans, 'Outfit', sans-serif);
  font-size: 15px;
  line-height: 1.65;
  color: var(--text-aether-body, #c8ccd2);
  max-width: 440px;
  margin: 0;
}

/* CTA am Ende der Lösungskarte */
.aetherpunk-landing__path-cta {
  display: flex;
  justify-content: center;
  padding-top: 8px;
}


/* ═══════════════════════════════════════════════════════════
   § SPHÄREN-KARTE – Topografische Karte
   Brief §5: map-like, weniger Dashboard, mehr persönliche Karte.
   ═══════════════════════════════════════════════════════════ */

.aetherpunk-landing__spheres {
  padding: 72px 48px 80px;
  max-width: 1040px;
  margin: 0 auto;
}

.aetherpunk-landing__spheres-map {
  margin: 0 -24px 32px;
  position: relative;
}

.aetherpunk-landing__spheres-svg {
  width: 100%;
  height: auto;
  display: block;
  overflow: visible;
}

.aetherpunk-landing__spheres-hint {
  text-align: center;
  font-family: var(--font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--text-aether-faint, #6e7176);
  margin: 0;
}


/* ═══════════════════════════════════════════════════════════
   § FINALER CTA-BLOCK
   ═══════════════════════════════════════════════════════════ */

.aetherpunk-landing__final-cta {
  padding: 0 48px 120px;
}

.aetherpunk-landing__final-cta-inner {
  max-width: 560px;
  margin: 0 auto;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  padding-top: 16px;
}

.aetherpunk-landing__final-h2 {
  font-family: var(--font-serif, Georgia, 'Iowan Old Style', serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(28px, 3vw, 36px);
  color: var(--text-aether-primary, #f1ede1);
  margin: 0;
  line-height: 1.18;
  letter-spacing: 0.005em;
}

.aetherpunk-landing__final-body {
  font-family: var(--font-sans, 'Outfit', sans-serif);
  font-size: 15px;
  line-height: 1.6;
  color: var(--text-aether-body, #c8ccd2);
  margin: 0;
}

.aetherpunk-landing__final-action {
  min-width: min(100%, 240px);
}

.aetherpunk-landing__final-account-action {
  min-width: min(100%, 240px);
  margin-top: -8px;
}

.aetherpunk-landing__final-reassurance {
  margin: -8px 0 0;
  color: var(--text-aether-muted, #8f949d);
  font-family: var(--font-mono, monospace);
  font-size: 10px;
  line-height: 1.5;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}


/* ═══════════════════════════════════════════════════════════
   § RESPONSIVE – Mobile Anpassungen
   ═══════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  .aetherpunk-landing__path,
  .aetherpunk-landing__spheres,
  .aetherpunk-landing__final-cta {
    padding-left: 24px;
    padding-right: 24px;
  }

  .aetherpunk-landing__path-step {
    grid-template-columns: 40px 1fr;
    gap: 0 16px;
  }

  .aetherpunk-landing__spheres-map {
    margin-left: -16px;
    margin-right: -16px;
  }
}

/* ── Advanced Aetherpunk Ornaments & Tech Panels ─────────────────── */



.hero-bracket--brass {
  border-color: var(--metal-gold) !important;
  opacity: 0.6 !important;
  width: 30px;
  height: 60px;
}

.hero-bracket--brass::before {
  background: #ffffff !important;
  box-shadow: 0 0 10px var(--metal-gold);
}
/* ── Cinematic Ignition Overlay ─────────────────────────────────── */
.aether-ignition-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: all;
  animation: aether-ignition-overlay-in 0.18s ease forwards;
}

.aether-ignition-scan {
  position: absolute;
  top: -10%;
  left: 0;
  width: 100%;
  height: 20vh;
  background: linear-gradient(to bottom, 
    transparent, 
    var(--metal-gold) 40%,
    var(--metal-platinum-strong) 50%,
    var(--metal-gold) 60%,
    transparent
  );
  opacity: 0.8;
  filter: blur(20px);
  animation: aether-ignition-scan 0.34s ease-in-out forwards;
}

.aether-ignition-ring {
  position: absolute;
  width: 300px;
  height: 300px;
  border: 2px solid var(--metal-gold);
  border-radius: 50%;
  box-shadow: 0 0 32px rgba(var(--metal-gold-rgb), 0.72);
  filter: blur(2px);
  opacity: 0;
  transform: scale(0.2);
  animation: aether-ignition-ring 0.46s ease 0.04s forwards;
}

.aether-ignition-flash {
  position: absolute;
  inset: 0;
  background: var(--surface-page);
  z-index: 100;
  opacity: 0;
  animation: aether-ignition-flash 0.14s ease 0.42s forwards;
}

@keyframes aether-ignition-overlay-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes aether-ignition-scan {
  from {
    top: -10%;
  }
  to {
    top: 110%;
  }
}

@keyframes aether-ignition-ring {
  0% {
    opacity: 0;
    transform: scale(0.2);
  }
  18% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: scale(4);
  }
}

@keyframes aether-ignition-flash {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .aether-ignition-overlay,
  .aether-ignition-scan,
  .aether-ignition-ring,
  .aether-ignition-flash {
    animation-duration: 1ms;
    animation-delay: 0ms;
  }
}

/* ════════════════════════════════════════════════════════════════════
   Landing consolidation – viewport rhythm, shared orb, no duplicate map.
   These rules intentionally override the first visual draft above.
   ════════════════════════════════════════════════════════════════════ */

.aetherpunk-landing,
.aetherpunk-landing * ,
.aetherpunk-landing *::before,
.aetherpunk-landing *::after {
  box-sizing: border-box;
}

html:has(.aetherpunk-landing) {
  position: relative;
  overflow-x: clip;
  overflow-y: auto;
}

body:has(.aetherpunk-landing) {
  overflow: clip;
}

body:has(.aetherpunk-landing) #root,
body:has(.aetherpunk-landing) .app-container,
body:has(.aetherpunk-landing) .content-wrapper {
  display: block;
  min-height: auto;
}

.aetherpunk-landing {
  overflow-x: clip;
  overflow-y: visible;
}

.aetherpunk-landing__nav {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
}

.aetherpunk-landing__hero {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  min-height: calc(100svh - 74px);
  padding: clamp(24px, 5vh, 58px) 0 clamp(56px, 8vh, 88px);
}

.aetherpunk-landing__copy-glass {
  width: 100%;
  max-width: 620px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.aetherpunk-landing__copy {
  max-width: 600px;
}

.aetherpunk-landing__h1 {
  font-size: clamp(46px, 5.1vw, 70px);
  max-width: 11ch;
}

.aetherpunk-landing__subline {
  max-width: 520px;
}

.aetherpunk-landing__body {
  max-width: 500px;
}

.aetherpunk-landing__trust-text {
  white-space: normal;
}

.aetherpunk-landing__orb-stage {
  min-width: 0;
  min-height: clamp(360px, 52vh, 560px);
}

.aetherpunk-landing__orb-mark {
  display: grid;
  place-items: center;
  max-width: 100%;
}

.aetherpunk-landing__journey-gate,
.aetherpunk-landing__journey-placeholder {
  min-height: 100svh;
}

.aetherpunk-landing__journey-placeholder {
  background:
    radial-gradient(circle at 50% 12%, rgba(214, 184, 122, 0.055), transparent 28%),
    linear-gradient(180deg, rgba(7, 9, 13, 0.18), rgba(5, 7, 11, 0.72));
}

.aetherpunk-landing__path {
  padding-top: clamp(64px, 9vw, 112px);
}

.aetherpunk-landing__spheres-map {
  margin: 0 0 32px;
  padding: clamp(18px, 3vw, 28px);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 14px;
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(169, 176, 187, 0.16);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.008)),
    radial-gradient(circle at 18% 15%, rgba(214, 184, 122, 0.12), transparent 34%),
    radial-gradient(circle at 78% 70%, rgba(45, 212, 191, 0.09), transparent 38%),
    rgba(5, 7, 14, 0.38);
}

.aetherpunk-landing__spheres-rail {
  position: absolute;
  left: 8%;
  right: 8%;
  top: 50%;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(169, 176, 187, 0.2),
    rgba(214, 184, 122, 0.22),
    transparent
  );
  pointer-events: none;
}

.aetherpunk-landing__sphere-node {
  position: relative;
  z-index: 1;
  min-height: 184px;
  padding: 18px 18px 20px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 12px;
  border: 1px solid color-mix(in srgb, var(--sphere-color, #d6b87a) 28%, rgba(169, 176, 187, 0.16));
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.01)),
    radial-gradient(circle at 22% 18%, color-mix(in srgb, var(--sphere-color, #d6b87a) 24%, transparent), transparent 40%),
    rgba(8, 11, 20, 0.64);
}

.aetherpunk-landing__sphere-node::before {
  content: '';
  position: absolute;
  left: 18px;
  top: 18px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--sphere-color, #d6b87a);
  box-shadow: 0 0 18px color-mix(in srgb, var(--sphere-color, #d6b87a) 60%, transparent);
}

.aetherpunk-landing__sphere-index {
  font-family: var(--font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: 10px;
  letter-spacing: 0.22em;
  color: color-mix(in srgb, var(--sphere-color, #d6b87a) 72%, #ffffff);
}

.aetherpunk-landing__sphere-title {
  font-family: var(--font-serif, Georgia, 'Iowan Old Style', serif);
  font-style: italic;
  font-weight: 400;
  font-size: 22px;
  line-height: 1.15;
  color: var(--text-aether-primary, #f1ede1);
  margin: 0;
}

.aetherpunk-landing__sphere-body {
  font-family: var(--font-sans, 'Outfit', sans-serif);
  font-size: 13px;
  line-height: 1.55;
  color: var(--text-aether-muted, #8a8f97);
  margin: 0;
}

.aetherpunk-landing__social {
  max-width: 920px;
  margin: 0 auto;
  padding: 72px 48px 88px;
}

.aetherpunk-landing__social-rows {
  display: grid;
  gap: 1px;
  border-top: 1px solid rgba(169, 176, 187, 0.18);
  border-bottom: 1px solid rgba(169, 176, 187, 0.18);
}

.aetherpunk-landing__social-row {
  display: grid;
  grid-template-columns: minmax(120px, 0.45fr) minmax(0, 1fr);
  gap: 24px;
  padding: 20px 0;
  border-top: 1px solid rgba(169, 176, 187, 0.12);
}

.aetherpunk-landing__social-row:first-child {
  border-top: 0;
}

.aetherpunk-landing__social-row span {
  font-family: var(--font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--metal-gold, #d6b87a);
}

.aetherpunk-landing__social-row p {
  margin: 0;
  font-family: var(--font-sans, 'Outfit', sans-serif);
  font-size: 15px;
  line-height: 1.65;
  color: var(--text-aether-body, #c8ccd2);
}

@media (max-width: 1024px) {
  .aetherpunk-landing__hero {
    grid-template-columns: 1fr;
    min-height: auto;
    padding: 48px 0 84px;
  }

  .aetherpunk-landing__copy-glass {
    order: 1;
    margin: 0 auto;
  }

  .aetherpunk-landing__copy {
    max-width: 660px;
    text-align: center;
  }

  .aetherpunk-landing__h1 {
    max-width: none;
  }

  .aetherpunk-landing__trust {
    justify-content: center;
    margin-left: auto;
    margin-right: auto;
  }

  .aetherpunk-landing__orb-stage {
    order: 0;
    min-height: clamp(330px, 48vh, 460px);
  }
}

@media (max-width: 640px) {
  .aetherpunk-landing {
    padding-left: 20px;
    padding-right: 20px;
  }

  .aetherpunk-landing__nav {
    gap: 8px 12px;
    padding-inline: clamp(12px, 4vw, 20px);
  }

  .aetherpunk-landing__brand {
    flex: 1 1 auto;
    max-width: calc(100% - 86px);
    font-size: 15px;
    letter-spacing: 0.06em;
  }

  .aetherpunk-landing__nav-links {
    gap: 6px;
  }

  .aetherpunk-landing__nav-link {
    flex: 1 1 0;
    min-width: 0;
    padding: 0 4px;
    font-size: 10px;
    letter-spacing: 0.12em;
  }

  .aetherpunk-landing__nav-login {
    flex: 0 0 auto;
    padding: 0 12px;
  }

  .aetherpunk-landing__hero {
    gap: 24px;
    padding-top: 28px;
    padding-bottom: 64px;
  }

  .aetherpunk-landing__copy-glass {
    order: 0;
  }

  .aetherpunk-landing__copy {
    text-align: left;
  }

  .aetherpunk-landing__copy .aetherpunk-landing__subline,
  .aetherpunk-landing__copy .aetherpunk-landing__body {
    margin-left: 0;
    margin-right: 0;
  }

  .aetherpunk-landing__body {
    margin-bottom: 24px;
  }

  .aetherpunk-landing__h1 {
    font-size: clamp(38px, 12vw, 48px);
  }

  .aetherpunk-landing__ctas .btn,
  .aetherpunk-landing__ctas button {
    width: 100%;
  }

  .aetherpunk-landing__methodology-action {
    display: none;
  }

  .aetherpunk-landing__trust {
    justify-content: flex-start;
    gap: 12px;
    margin-top: 24px;
    margin-left: 0;
    margin-right: 0;
  }

  .aetherpunk-landing__trust-rule {
    flex-basis: 32px;
  }

  .aetherpunk-landing__orb-stage {
    order: 1;
    min-height: 334px;
  }

  .aetherpunk-landing__path,
  .aetherpunk-landing__spheres,
  .aetherpunk-landing__social,
  .aetherpunk-landing__final-cta {
    padding-left: 0;
    padding-right: 0;
  }

  .aetherpunk-landing__path-step {
    grid-template-columns: 34px 1fr;
    gap: 0 14px;
  }

  .aetherpunk-landing__spheres-map {
    grid-template-columns: 1fr;
  }

  .aetherpunk-landing__social-row {
    grid-template-columns: 1fr;
    gap: 8px;
  }
}

/* ── Landing-FAQ (Phase 5 / LANDING-FAQ-01) ──────────────────────────
   Editorial Marginalblock vor dem Final-CTA. Bewusst KEINE Surface-Karten,
   keine CornerChevrons, keine Glows – nur Hairlines zwischen den Items.
   Sekundärseiten-Konzept §7.3, Visual Brief §10.5.
   ───────────────────────────────────────────────────────────────────── */

.aetherpunk-landing__faq {
  position: relative;
  z-index: 1;
  max-width: 760px;
  margin: 0 auto;
  padding: clamp(60px, 10vw, 96px) 0 clamp(20px, 4vw, 40px);
  text-align: left;
}

.aetherpunk-landing__faq-eyebrow {
  margin: 0 0 14px;
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

.aetherpunk-landing__faq-title {
  margin: 0 0 clamp(24px, 4vw, 36px);
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(24px, 3vw, 32px);
  line-height: 1.2;
  letter-spacing: 0.005em;
  color: var(--text-aether-primary);
}

.aetherpunk-landing__faq-list {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--metal-platinum-border);
}

.aetherpunk-landing__faq-item {
  padding: 18px 4px;
  border-bottom: 1px solid var(--metal-platinum-border);
  background: transparent;
}

.aetherpunk-landing__faq-item summary {
  color: var(--text-aether-primary);
  cursor: pointer;
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: 17px;
  line-height: 1.35;
  list-style: none;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
}

.aetherpunk-landing__faq-item summary::-webkit-details-marker {
  display: none;
}

.aetherpunk-landing__faq-item summary::after {
  content: '+';
  flex: 0 0 auto;
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-style: normal;
  font-size: 17px;
  line-height: 1;
  transition: transform 0.3s var(--ease-out-expo);
}

.aetherpunk-landing__faq-item[open] summary::after {
  content: '−';
}

.aetherpunk-landing__faq-item p {
  margin: 12px 0 4px;
  max-width: 64ch;
  color: var(--text-aether-body);
  font-size: 14px;
  line-height: 1.65;
}

@media (max-width: 620px) {
  .aetherpunk-landing__faq {
    padding: clamp(48px, 14vw, 72px) 0 24px;
  }

  .aetherpunk-landing__faq-item summary {
    font-size: 16px;
  }
}
/* ═══════════════════════════════════════════════════════════════════════
   Persona Quest – Methodik (Editorial Aetherpunk)

   Visual-Pass METHODIK-VIS-01, Phase 2a aus Sekundärseiten-Konzept §6.

   Übersetzt die Methodik-Seite vom alten --accent-* / --radius-lg-Stil auf das
   Editorial-Aetherpunk-System aus Landing Visual Brief v2.1:
   - Two-Metal-Restraint: Platin für Struktur, Antikgold nur für Primär-Akzente
   - eingravierte Doppelränder statt box-shadow
   - Border-Radius 0 oder 2px statt --radius-md/lg
   - Hairlines + Lichtkern für Sektions-Header (ChapterRule)
   - CornerChevrons an Surface-Karten (im JSX gesetzt, hier nur position: relative)

   Reference: Persona_Quest_Landingpage_Sekundaerseiten_Konzept.md §6.1, §6.2.
   Reference: Persona_Quest_Landingpage_Visual_Brief.md §6, §7, §8, §10.
   ═══════════════════════════════════════════════════════════════════════ */

.methodology-page {
  position: relative;
  min-height: 100vh;
  padding: 0 clamp(20px, 5vw, 80px);
  overflow: visible;
  color: var(--text-aether-body);
  font-family: var(--font-body);
  /* Sehr ruhiger Hintergrund – gleiche Atmosphäre wie Landing/Stub. */
  background:
    radial-gradient(ellipse 70% 90% at 22% 18%, rgba(214, 184, 122, 0.04) 0%, transparent 55%),
    radial-gradient(ellipse 80% 100% at 78% 88%, rgba(169, 176, 187, 0.04) 0%, transparent 60%),
    var(--surface-page);
}

.container:has(.methodology-page) {
  overflow: visible;
}

.methodology-page > section {
  position: relative;
  z-index: 1;
  max-width: 1180px;
  margin: 0 auto;
}

.methodology-content-shell {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(188px, 240px) minmax(0, 1fr);
  align-items: start;
  gap: clamp(24px, 4vw, 48px);
  max-width: 1180px;
  margin: 0 auto;
}

.methodology-content-flow {
  min-width: 0;
}

.methodology-page-rail-frame {
  align-self: stretch;
  min-height: 100%;
}

.methodology-content-flow > section {
  position: relative;
  z-index: 1;
  scroll-margin-top: 96px;
}

.methodology-page-rail {
  position: relative;
  align-self: start;
  display: grid;
  gap: 18px;
  max-height: calc(100svh - 116px);
  padding: 18px;
  overflow: auto;
  background:
    linear-gradient(180deg, rgba(8, 11, 17, 0.88), rgba(4, 6, 10, 0.72)),
    var(--surface-card);
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
}

@media (min-width: 901px) {
  .methodology-page-rail-frame[data-docked='true'] .methodology-page-rail {
    position: fixed;
    top: 92px;
    left: max(clamp(20px, 5vw, 80px), calc((100vw - 1180px) / 2));
    width: 240px;
    max-height: calc(100svh - 116px);
  }
}

.methodology-page-rail__header {
  display: grid;
  gap: 6px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--metal-platinum-border);
}

.methodology-page-rail__header span,
.methodology-page-rail a span {
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

.methodology-page-rail__header strong {
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-size: 18px;
  font-style: italic;
  font-weight: 400;
  line-height: 1.2;
}

.methodology-page-rail ol {
  display: grid;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.methodology-page-rail a {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: center;
  min-height: 42px;
  padding: 9px 10px;
  border: 1px solid transparent;
  color: var(--text-aether-muted);
  text-decoration: none;
  transition: border-color 0.25s var(--ease-out-expo), color 0.25s var(--ease-out-expo), background 0.25s var(--ease-out-expo);
}

.methodology-page-rail a strong {
  min-width: 0;
  color: inherit;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-chip, 0.22em);
  line-height: 1.35;
  text-transform: uppercase;
}

.methodology-page-rail a:hover,
.methodology-page-rail a:focus-visible,
.methodology-page-rail a[data-active='true'] {
  border-color: var(--metal-platinum-border);
  background: rgba(169, 176, 187, 0.045);
  color: var(--text-aether-primary);
  outline: none;
}

.methodology-page-rail a[data-active='true'] {
  border-color: var(--metal-gold-border, rgba(214, 184, 122, 0.34));
  box-shadow: var(--engrave-gold-inset);
}

.methodology-page-rail a:focus-visible {
  outline: 2px solid rgba(var(--metal-gold-rgb), 0.78);
  outline-offset: 4px;
  box-shadow:
    var(--engrave-gold-inset),
    0 0 0 4px rgba(5, 7, 11, 0.72);
}

/* ── Hero ──────────────────────────────────────────────────────────── */

.methodology-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
  align-items: center;
  gap: clamp(2rem, 6vw, 5rem);
  padding: clamp(48px, 8vh, 96px) 0 clamp(48px, 8vh, 96px);
  min-height: auto;
}

.methodology-hero-copy > h1 {
  max-width: 720px;
  margin: 0;
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  /* Reduziert von ehemals clamp(3.6rem, 9vw, 8.4rem) auf Landing-Skala (Brief §8.4). */
  font-size: clamp(36px, 5vw, 56px);
  line-height: 1.08;
  letter-spacing: 0.005em;
  color: var(--text-aether-primary);
}

.methodology-hero-copy > p {
  max-width: 620px;
  margin: clamp(20px, 3vh, 32px) 0 0;
  color: var(--text-aether-body);
  font-size: clamp(15px, 1.4vw, 17px);
  line-height: 1.7;
}

.methodology-anchor-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: clamp(20px, 3vh, 32px);
}

.methodology-anchor-nav a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  box-sizing: border-box;
  min-width: 0;
  padding: 10px 14px;
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
  background: transparent;
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: var(--ls-mono-button, 0.28em);
  text-transform: uppercase;
  text-decoration: none;
  overflow-wrap: anywhere;
  transition: color 0.3s var(--ease-out-expo), border-color 0.3s var(--ease-out-expo);
}

.methodology-anchor-nav a span {
  color: var(--metal-gold);
  letter-spacing: var(--ls-mono-marker, 0.32em);
}

.methodology-anchor-nav a:hover,
.methodology-anchor-nav a:focus-visible {
  border-color: var(--metal-platinum-strong);
  color: var(--text-aether-primary);
  outline: none;
}

.methodology-anchor-nav a:focus-visible {
  outline: 2px solid rgba(var(--metal-gold-rgb), 0.78);
  outline-offset: 4px;
  box-shadow: 0 0 0 4px rgba(5, 7, 11, 0.72);
}

.methodology-system-panel {
  position: relative;
  display: grid;
  gap: clamp(20px, 3vh, 28px);
  padding: clamp(20px, 3vw, 32px);
  background: var(--surface-card);
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
}

.methodology-system-orb {
  display: grid;
  place-items: center;
  min-height: 200px;
  padding: 20px 0;
}

.methodology-system-steps {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.methodology-system-steps li {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0 16px;
  padding: 14px 16px;
  background: transparent;
  border-top: 1px solid var(--metal-platinum-border);
}

.methodology-system-steps li:first-child {
  border-top: 0;
  padding-top: 4px;
}

.methodology-system-steps span {
  grid-row: span 2;
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
}

.methodology-system-steps strong,
.methodology-track-detail h3,
.hexaco-dimension-panel h3,
.kodex-axis-explainer h3,
.kodex-cell-reading h3,
.signature-method-grid h3 {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  letter-spacing: 0.005em;
  color: var(--text-aether-primary);
}

.methodology-system-steps strong {
  margin-top: 0;
  font-size: 17px;
  line-height: 1.3;
}

.methodology-system-steps p,
.methodology-track-detail p,
.methodology-section-heading p,
.hexaco-dimension-panel p,
.kodex-axis-explainer p,
.kodex-cell-reading p,
.signature-method-grid p,
.signature-pipeline p,
.methodology-note-band p,
.methodology-faq-list p {
  margin: 0;
  color: var(--text-aether-body);
  line-height: 1.62;
}

/* ── Sektions-Skelett ──────────────────────────────────────────────── */

.methodology-track-section,
.methodology-section {
  padding: clamp(48px, 8vw, 88px) 0 0;
}

.methodology-content-flow > .methodology-track-section {
  padding-top: 0;
}

.methodology-section-heading {
  max-width: 800px;
  margin-bottom: clamp(28px, 4vh, 40px);
}

.methodology-section-heading[data-section-index] {
  display: grid;
  grid-template-columns: minmax(54px, 72px) minmax(0, 1fr);
  column-gap: clamp(16px, 3vw, 26px);
  max-width: 900px;
}

.methodology-section-heading[data-section-index]::before {
  content: attr(data-section-index);
  grid-row: 1 / span 3;
  display: grid;
  place-items: center;
  width: clamp(48px, 5vw, 64px);
  aspect-ratio: 1;
  border: var(--engrave-gold);
  box-shadow: var(--engrave-gold-inset);
  color: var(--metal-gold);
  font-family: var(--font-serif);
  font-size: clamp(20px, 2.4vw, 30px);
  font-style: italic;
  font-weight: 400;
  line-height: 1;
}

.methodology-section-heading[data-section-index] > * {
  grid-column: 2;
}

.methodology-section-heading[data-section-kind] > span::after {
  content: ' / ' attr(data-section-kind);
  color: rgba(214, 184, 122, 0.72);
}

.methodology-section-heading > span,
.methodology-track-detail > span,
.kodex-cell-reading > span {
  display: inline-flex;
  margin-bottom: 14px;
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

.methodology-section-heading h2 {
  margin: 0;
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  /* Reduziert von ehemals clamp(2.5rem, 5vw, 5rem) auf Brief §8.4 Section-H2. */
  font-size: clamp(26px, 3.2vw, 36px);
  line-height: 1.15;
  letter-spacing: 0.005em;
  color: var(--text-aether-primary);
}

.methodology-section-heading p {
  max-width: 720px;
  margin-top: 18px;
  font-size: clamp(15px, 1.4vw, 17px);
}

/* ── Track-Tabs (Methodik-Übersicht) ───────────────────────────────── */

.methodology-track-grid {
  display: grid;
  grid-template-columns: minmax(280px, 0.88fr) minmax(0, 1.12fr);
  gap: 24px;
  align-items: start;
}

.methodology-track-tabs,
.methodology-track-detail ul,
.hexaco-dimension-list,
.kodex-axis-explainer ul,
.kodex-method-matrix,
.methodology-limit-list,
.methodology-reference-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.methodology-track-tabs {
  display: grid;
  gap: 10px;
  align-content: start;
}

.methodology-track-tabs button,
.hexaco-dimension-list button,
.kodex-method-matrix button {
  width: 100%;
  padding: 16px;
  background: transparent;
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
  color: var(--text-aether-body);
  font-family: inherit;
  cursor: pointer;
  text-align: left;
  /* Brief §10.5: keine Translation-Hover, nur Border-Alpha-Wechsel. */
  transition: border-color 0.3s var(--ease-out-expo), color 0.3s var(--ease-out-expo);
}

.methodology-track-tabs button {
  display: grid;
  gap: 6px;
}

.methodology-track-tabs button:hover,
.methodology-track-tabs button:focus-visible,
.methodology-track-tabs button.is-active,
.hexaco-dimension-list button:hover,
.hexaco-dimension-list button:focus-visible,
.hexaco-dimension-list button.is-active,
.kodex-method-matrix button:hover,
.kodex-method-matrix button:focus-visible,
.kodex-method-matrix button.is-active {
  border-color: var(--metal-platinum-strong);
  color: var(--text-aether-primary);
  outline: none;
}

.methodology-track-tabs button:focus-visible,
.hexaco-dimension-list button:focus-visible,
.kodex-method-matrix button:focus-visible {
  outline: 2px solid rgba(var(--metal-gold-rgb), 0.78);
  outline-offset: 4px;
  box-shadow:
    inset 0 0 0 1px var(--metal-gold-inset),
    0 0 0 4px rgba(5, 7, 11, 0.72);
}

.methodology-track-tabs span,
.hexaco-dimension-list span,
.kodex-method-matrix span {
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-chip, 0.22em);
  text-transform: uppercase;
}

.methodology-track-tabs strong,
.hexaco-dimension-list strong,
.kodex-method-matrix strong {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: 16px;
  line-height: 1.3;
  color: var(--text-aether-primary);
}

/* ── Surface-Karten (track-detail, panel, explainer, cell-reading, note-band, faq) ── */

.methodology-track-detail,
.hexaco-dimension-panel,
.kodex-axis-explainer,
.kodex-cell-reading,
.methodology-note-band,
.methodology-faq-list details {
  position: relative;
  background: var(--surface-card);
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
}

.methodology-track-detail {
  padding: clamp(20px, 3vw, 28px);
}

.methodology-track-detail h3 {
  margin: 0;
  font-size: clamp(22px, 2.4vw, 26px);
  line-height: 1.2;
}

.methodology-track-detail > p {
  margin-top: 18px;
  font-size: clamp(15px, 1.4vw, 16px);
}

.methodology-track-detail dl {
  display: grid;
  gap: 16px;
  margin: 24px 0;
}

.methodology-track-detail dl div {
  padding-top: 16px;
  border-top: 1px solid var(--metal-platinum-border);
}

.methodology-track-detail dt {
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

.methodology-track-detail dd {
  margin: 8px 0 0;
  color: var(--text-aether-body);
  line-height: 1.62;
}

.methodology-track-detail ul {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.methodology-track-detail li,
.methodology-limit-list li {
  padding: 10px 14px;
  background: transparent;
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
  color: var(--text-aether-body);
  font-size: 14px;
  line-height: 1.5;
}

/* ── Essenztest-Sektion ────────────────────────────────────────────── */

.methodology-split,
.kodex-method-layout {
  display: grid;
  grid-template-columns: minmax(280px, 0.82fr) minmax(0, 1.18fr);
  gap: 24px;
  align-items: start;
}

.hexaco-dimension-panel {
  position: sticky;
  top: 84px; /* unter dem sticky LandingHeader */
  padding: clamp(20px, 3vw, 28px);
}

.hexaco-dimension-panel > span {
  display: grid;
  place-items: center;
  width: 64px;
  aspect-ratio: 1;
  margin-bottom: 20px;
  border: var(--engrave-gold);
  box-shadow: var(--engrave-gold-inset);
  color: var(--metal-gold);
  font-family: var(--font-serif);
  font-style: italic;
  font-size: 28px;
  font-weight: 400;
}

.hexaco-dimension-panel h3,
.kodex-axis-explainer h3,
.kodex-cell-reading h3 {
  margin: 0;
  font-size: clamp(20px, 2.4vw, 26px);
  line-height: 1.2;
}

.hexaco-dimension-panel .scientific-name {
  margin: 6px 0 18px;
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: var(--ls-mono-chip, 0.22em);
  text-transform: uppercase;
}

.dimension-range {
  display: grid;
  gap: 10px;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--metal-platinum-border);
}

.dimension-range strong {
  color: var(--text-aether-primary);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: var(--ls-mono-chip, 0.22em);
}

.dimension-range span {
  color: var(--text-aether-muted);
  font-size: 14px;
  line-height: 1.5;
}

.hexaco-dimension-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.hexaco-dimension-list button {
  display: grid;
  min-height: 118px;
  padding: 16px;
}

.hexaco-dimension-list small {
  align-self: end;
  color: var(--text-aether-muted);
  font-size: 12px;
  line-height: 1.4;
}

.methodology-flow-list,
.signature-pipeline {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin: 28px 0 0;
  padding: 0;
  list-style: none;
}

.methodology-flow-list li,
.signature-pipeline li,
.signature-method-grid article {
  position: relative;
  padding: 18px;
  background: transparent;
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
}

.methodology-flow-list strong,
.signature-pipeline strong {
  display: block;
  margin-bottom: 10px;
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-style: italic;
  font-size: 17px;
  font-weight: 400;
}

/* ── Kodex-Sektion ─────────────────────────────────────────────────── */

.kodex-axis-explainer {
  display: grid;
  gap: 20px;
  padding: clamp(20px, 3vw, 28px);
}

.kodex-axis-explainer ul {
  display: grid;
  gap: 12px;
}

.kodex-axis-explainer li {
  display: grid;
  gap: 4px;
  padding-top: 12px;
  border-top: 1px solid var(--metal-platinum-border);
}

.kodex-axis-explainer strong {
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-style: italic;
  font-size: 16px;
  font-weight: 400;
}

.kodex-axis-explainer span {
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: var(--ls-mono-chip, 0.22em);
  text-transform: uppercase;
}

.kodex-matrix-explainer {
  display: grid;
  gap: 14px;
}

.kodex-method-matrix {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.kodex-method-matrix button {
  display: grid;
  gap: 8px;
  min-height: 110px;
  padding: 14px;
}

.kodex-cell-reading {
  padding: clamp(20px, 3vw, 28px);
}

.kodex-cell-reading p {
  margin-top: 14px;
  font-size: clamp(15px, 1.4vw, 16px);
}

.methodology-note-band {
  margin-top: 28px;
  padding: 20px 24px;
  background: var(--surface-card-strong, var(--surface-card));
}

.methodology-note-band strong {
  display: block;
  margin-bottom: 6px;
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

/* ── Signatur-Sektion ──────────────────────────────────────────────── */

.signature-method-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.signature-method-grid article {
  min-height: 200px;
}

.signature-method-grid span {
  color: var(--metal-gold);
  font-family: var(--font-serif);
  font-style: italic;
  font-size: clamp(48px, 6vw, 64px);
  line-height: 0.9;
}

.signature-method-grid h3 {
  margin: 16px 0 8px;
  font-size: 18px;
}

.signature-pipeline {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* ── Grenzen-Sektion ───────────────────────────────────────────────── */

.methodology-limit-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

/* ── Referenzen ────────────────────────────────────────────────────── */

/* Quellen nach Test gruppiert, mit farbcodierter Überschrift (Essenz teal,
   Kodex gold – dieselben Track-Farben wie in der Kurzfassung). */
.methodology-reference-groups {
  display: grid;
  gap: clamp(26px, 4vw, 40px);
}

.methodology-reference-group {
  --reference-accent: 169, 176, 187;
  display: grid;
  gap: 16px;
}

.methodology-reference-group[data-track='essenz'] {
  --reference-accent: 67, 181, 184;
}

.methodology-reference-group[data-track='kodex'] {
  --reference-accent: 214, 184, 122;
}

.methodology-reference-group__head {
  display: grid;
  gap: 5px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(var(--reference-accent), 0.28);
}

.methodology-reference-group__head span {
  color: rgba(var(--reference-accent), 0.92);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

.methodology-reference-group__head h3 {
  margin: 0;
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-size: clamp(18px, 2vw, 22px);
  font-style: italic;
  font-weight: 400;
  line-height: 1.2;
}

.methodology-reference-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 14px;
}

/* Kartenkante in der Track-Farbe, damit die Zuordnung auch je Karte sichtbar ist. */
.methodology-reference-group .methodology-reference-list a {
  border-top: 2px solid rgba(var(--reference-accent), 0.5);
}

.methodology-reference-list a {
  display: grid;
  gap: 10px;
  min-height: 160px;
  padding: 18px;
  background: transparent;
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
  color: var(--text-aether-body);
  text-decoration: none;
  transition: border-color 0.3s var(--ease-out-expo);
}

.methodology-reference-list a:hover,
.methodology-reference-list a:focus-visible {
  border-color: var(--metal-platinum-strong);
  color: var(--text-aether-primary);
  outline: none;
}

.methodology-reference-list a:focus-visible {
  outline: 2px solid rgba(var(--metal-gold-rgb), 0.78);
  outline-offset: 4px;
  box-shadow: 0 0 0 4px rgba(5, 7, 11, 0.72);
}

.methodology-reference-list strong {
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: 17px;
}

.methodology-reference-list span {
  color: var(--text-aether-muted);
  font-size: 14px;
  line-height: 1.5;
}

/* ── FAQ ───────────────────────────────────────────────────────────── */

.methodology-faq-list {
  display: grid;
  gap: 10px;
}

.methodology-faq-list details {
  padding: 18px 22px;
}

.methodology-faq-list summary {
  color: var(--text-aether-primary);
  cursor: pointer;
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: 17px;
}

.methodology-faq-list p {
  margin-top: 14px;
}

/* ── Footer-CTA (METHODIK-VIS-01 Phase 2a §6.1 B) ──────────────────── */

.methodology-final-cta {
  padding: clamp(64px, 10vw, 110px) 0 clamp(60px, 10vw, 100px);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 22px;
}

.methodology-final-cta h2 {
  margin: 0;
  max-width: 22ch;
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(26px, 3.2vw, 36px);
  line-height: 1.15;
  letter-spacing: 0.005em;
  color: var(--text-aether-primary);
}

.methodology-final-cta p {
  max-width: 52ch;
  margin: 0;
  color: var(--text-aether-body);
  font-size: clamp(15px, 1.4vw, 17px);
  line-height: 1.65;
}

.methodology-final-cta-actions {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  justify-content: center;
  margin-top: 8px;
}

/* ── Responsive ────────────────────────────────────────────────────── */

@media (max-width: 900px) {
  .methodology-content-shell {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .methodology-page-rail-frame {
    position: sticky;
    top: 66px;
    z-index: 6;
    margin: 0 calc(clamp(20px, 5vw, 80px) * -1);
    width: 100vw;
    max-width: 100vw;
    overflow: hidden;
  }

  .methodology-page-rail {
    position: static;
    box-sizing: border-box;
    width: 100vw;
    max-width: 100vw;
    max-height: none;
    padding: 12px clamp(20px, 5vw, 80px);
    overflow-x: auto;
    border-right: 0;
    border-left: 0;
    background:
      linear-gradient(180deg, rgba(8, 11, 17, 0.96), rgba(8, 11, 17, 0.86)),
      var(--surface-card);
  }

  .methodology-page-rail__header {
    display: none;
  }

  .methodology-page-rail ol {
    display: flex;
    min-width: max-content;
  }

  .methodology-page-rail a {
    grid-template-columns: 1fr;
    gap: 5px;
    min-width: 132px;
    min-height: 48px;
  }

  .methodology-hero,
  .methodology-track-grid,
  .methodology-split,
  .kodex-method-layout,
  .signature-method-grid,
  .methodology-reference-list {
    grid-template-columns: 1fr;
  }

  .hexaco-dimension-panel {
    position: relative;
    top: auto;
  }

  .methodology-flow-list,
  .signature-pipeline,
  .methodology-limit-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .methodology-page {
    padding: 0 16px;
  }

  .methodology-page-rail-frame {
    margin: 0 -16px;
  }

  .methodology-page-rail {
    padding-right: 16px;
    padding-left: 16px;
  }

  .methodology-section-heading[data-section-index] {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .methodology-section-heading[data-section-index]::before {
    width: 48px;
    grid-row: auto;
  }

  .methodology-section-heading[data-section-index] > * {
    grid-column: 1;
  }

  .methodology-anchor-nav,
  .methodology-track-detail ul {
    flex-direction: column;
  }

  .methodology-anchor-nav a {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  .hexaco-dimension-list,
  .kodex-method-matrix,
  .methodology-flow-list,
  .signature-pipeline,
  .methodology-limit-list {
    grid-template-columns: 1fr;
  }

  .methodology-final-cta-actions {
    flex-direction: column;
    width: 100%;
    align-items: stretch;
  }
}
/* ── Beispielszene-Demo (METHODIK-VIS-01 Phase 2b §6.3 a) ──────────── */

.methodology-example-scene {
  position: relative;
  margin: 32px 0 0;
  padding: clamp(24px, 4vw, 36px);
  background: var(--surface-card);
  border: var(--engrave-gold);
  box-shadow: var(--engrave-gold-inset);
}

.methodology-example-scene__tag {
  margin: 0 0 18px;
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

.methodology-example-scene__title {
  margin: 0 0 14px;
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(20px, 2.4vw, 24px);
  line-height: 1.25;
  letter-spacing: 0.005em;
  color: var(--text-aether-primary);
}

.methodology-example-scene__prompt {
  margin: 0 0 28px;
  color: var(--text-aether-body);
  font-size: clamp(15px, 1.4vw, 16px);
  line-height: 1.65;
  max-width: 60ch;
}

.methodology-example-scene__layout {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(280px, 0.9fr);
  gap: clamp(20px, 3vw, 36px);
  align-items: start;
}

.methodology-example-scene__options {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.methodology-example-scene__option {
  width: 100%;
  padding: 14px 16px;
  background: transparent;
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
  color: var(--text-aether-body);
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.5;
  text-align: left;
  cursor: pointer;
  transition: border-color 0.3s var(--ease-out-expo), color 0.3s var(--ease-out-expo);
}

.methodology-example-scene__option:hover,
.methodology-example-scene__option:focus-visible {
  border-color: var(--metal-platinum-strong);
  color: var(--text-aether-primary);
  outline: none;
}

.methodology-example-scene__option:focus-visible {
  outline: 2px solid rgba(var(--metal-gold-rgb), 0.78);
  outline-offset: 4px;
  box-shadow: 0 0 0 4px rgba(5, 7, 11, 0.72);
}

.methodology-example-scene__option.is-active {
  border-color: var(--metal-gold-strong);
  box-shadow: var(--engrave-gold-inset);
  color: var(--text-aether-primary);
}

.methodology-example-scene__radar-stage {
  display: grid;
  gap: 14px;
  justify-items: center;
}

.methodology-example-scene__radar {
  width: 100%;
  max-width: 260px;
  aspect-ratio: 1;
  overflow: visible;
}

.methodology-example-scene__caption {
  width: 100%;
  min-height: 110px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: flex-start;
}

.methodology-example-scene__caption-hint,
.methodology-example-scene__caption-line,
.methodology-example-scene__caption-note {
  margin: 0;
  font-size: 13px;
  line-height: 1.55;
}

.methodology-example-scene__caption-hint {
  color: var(--text-aether-muted);
  font-style: italic;
}

.methodology-example-scene__caption-line {
  color: var(--text-aether-body);
}

.methodology-example-scene__caption-line strong {
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-weight: 600;
  letter-spacing: var(--ls-mono-chip, 0.22em);
}

.methodology-example-scene__caption-note {
  color: var(--text-aether-muted);
  font-size: 12px;
}

.methodology-example-scene__reset {
  align-self: flex-start;
  margin-top: 4px;
  padding: 8px 14px;
  background: transparent;
  border: var(--engrave-platinum);
  box-shadow: var(--engrave-platinum-inset);
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: var(--ls-mono-button, 0.28em);
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color 0.3s var(--ease-out-expo), color 0.3s var(--ease-out-expo);
}

.methodology-example-scene__reset:hover,
.methodology-example-scene__reset:focus-visible {
  border-color: var(--metal-platinum-strong);
  color: var(--text-aether-primary);
  outline: none;
}

.methodology-example-scene__reset:focus-visible {
  outline: 2px solid rgba(var(--metal-gold-rgb), 0.78);
  outline-offset: 4px;
  box-shadow: 0 0 0 4px rgba(5, 7, 11, 0.72);
}

@media (max-width: 760px) {
  .methodology-example-scene__layout {
    grid-template-columns: 1fr;
  }

  .methodology-example-scene__radar {
    max-width: 220px;
  }

  .methodology-example-scene__caption {
    min-height: 0;
  }
}

/* ==================================================================
   Methodik 2026: redaktionelle Klarheit statt Dashboard-Tabs
   ================================================================== */

.methodology-page {
  background:
    radial-gradient(ellipse 76% 54% at 8% 22%, rgba(55, 137, 142, 0.065), transparent 64%),
    radial-gradient(ellipse 62% 46% at 96% 55%, rgba(214, 184, 122, 0.045), transparent 68%),
    linear-gradient(180deg, rgba(7, 11, 16, 0.94), rgba(5, 8, 12, 0.98)),
    var(--surface-page);
}

.methodology-hero-eyebrow {
  display: block;
  margin-bottom: 16px;
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

.methodology-contract-list {
  border-top: 1px solid rgba(169, 176, 187, 0.2);
}

.methodology-contract-row {
  --methodology-track-accent: 169, 176, 187;
  position: relative;
  display: grid;
  grid-template-columns: minmax(230px, 0.82fr) minmax(0, 1.18fr);
  gap: 36px;
  padding: 34px 0 38px 22px;
  border-bottom: 1px solid rgba(169, 176, 187, 0.16);
}

.methodology-contract-row[data-track='essenztest'] {
  --methodology-track-accent: 67, 181, 184;
}

.methodology-contract-row[data-track='kodex'] {
  --methodology-track-accent: 214, 184, 122;
}

.methodology-contract-row[data-track='signatur'] {
  --methodology-track-accent: 185, 168, 226;
}

.methodology-contract-row::before {
  content: '';
  position: absolute;
  inset: 30px auto 34px 0;
  width: 2px;
  background: rgba(var(--methodology-track-accent), 0.72);
  box-shadow: 0 0 18px rgba(var(--methodology-track-accent), 0.24);
}

.methodology-contract-row header,
.methodology-contract-row__detail,
.methodology-contract-row__detail dl,
.methodology-contract-row__detail dl > div,
.methodology-contract-row__limits {
  display: grid;
  align-content: start;
}

.methodology-contract-row header {
  gap: 10px;
}

.methodology-contract-row header > span,
.methodology-contract-row__detail dt,
.methodology-contract-row__limits > strong {
  color: rgba(var(--methodology-track-accent), 0.9);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-chip, 0.22em);
  text-transform: uppercase;
}

.methodology-contract-row h3 {
  margin: 0;
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-size: 24px;
  font-style: italic;
  font-weight: 400;
  line-height: 1.2;
}

.methodology-contract-row p,
.methodology-contract-row__detail dd,
.methodology-contract-row__limits li {
  margin: 0;
  color: var(--text-aether-body);
  font-size: 14px;
  line-height: 1.65;
}

.methodology-contract-row__detail {
  gap: 26px;
}

/* Geordnete Vertikale statt gequetschter Doppelspalte: jeder Abschnitt liegt
   voll breit untereinander (Label über Text), damit nichts ragged bricht. */
.methodology-contract-row__detail dl {
  grid-template-columns: 1fr;
  gap: 22px;
  margin: 0;
}

.methodology-contract-row__detail dl > div {
  gap: 8px;
}

.methodology-contract-row__detail dl > div:first-child {
  padding-top: 0;
  border-top: 0;
}

.methodology-contract-row__detail dd {
  margin: 0;
}

.methodology-contract-row__limits {
  grid-template-columns: 1fr;
  gap: 12px;
  padding-top: 18px;
  border-top: 1px solid rgba(var(--methodology-track-accent), 0.18);
}

.methodology-contract-row__limits ul {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.methodology-contract-row__limits li {
  position: relative;
  padding-left: 14px;
}

.methodology-contract-row__limits li::before {
  content: '';
  position: absolute;
  top: 0.72em;
  left: 0;
  width: 5px;
  height: 1px;
  background: rgba(var(--methodology-track-accent), 0.72);
}

.methodology-flow-list {
  margin: 0 0 32px;
}

.methodology-flow-list li {
  min-height: 150px;
  border-color: rgba(67, 181, 184, 0.24);
  background: linear-gradient(145deg, rgba(20, 73, 77, 0.08), transparent 72%);
}

.kodex-axis-overview {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px;
  margin-bottom: 32px;
}

.kodex-axis-overview > article {
  position: relative;
  padding: 0 0 0 20px;
}

.kodex-axis-overview > article::before {
  content: '';
  position: absolute;
  inset: 0 auto 0 0;
  width: 2px;
  background: rgba(214, 184, 122, 0.5);
}

.kodex-axis-overview > article[data-axis='focus']::before {
  background: rgba(164, 192, 202, 0.5);
}

.kodex-axis-overview header {
  min-height: 116px;
  padding-bottom: 18px;
}

.kodex-axis-overview header > span,
.kodex-axis-overview li > span {
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-chip, 0.22em);
  text-transform: uppercase;
}

.kodex-axis-overview h3 {
  margin: 8px 0;
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-size: 24px;
  font-style: italic;
  font-weight: 400;
}

.kodex-axis-overview header p,
.kodex-axis-overview li p {
  margin: 0;
  color: var(--text-aether-body);
  font-size: 14px;
  line-height: 1.58;
}

.kodex-axis-overview ol {
  display: grid;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid rgba(169, 176, 187, 0.16);
}

.kodex-axis-overview li {
  display: grid;
  grid-template-columns: minmax(84px, 0.3fr) minmax(120px, 0.5fr) minmax(0, 1fr);
  gap: 8px 16px;
  align-items: start;
  padding: 15px 0;
  border-bottom: 1px solid rgba(169, 176, 187, 0.12);
}

.kodex-axis-overview li > strong,
.kodex-axis-overview li > span,
.kodex-axis-overview li > p {
  min-width: 0;
}

.kodex-axis-overview li > strong {
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-size: 17px;
  font-style: italic;
  font-weight: 400;
  overflow-wrap: anywhere;
}

.kodex-axis-overview li > span {
  padding-top: 4px;
  color: var(--text-aether-muted);
  letter-spacing: 0.08em;
  /* Lange Fachbegriffe wie „CONFORMITY/TRADITION" dürfen umbrechen statt in
     die Beschreibung zu ragen. */
  overflow-wrap: anywhere;
}

.kodex-matrix-explainer {
  grid-template-columns: minmax(0, 1.42fr) minmax(250px, 0.58fr);
  gap: 22px;
  align-items: stretch;
}

.kodex-method-matrix {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  min-width: 0;
  padding: 1px;
  border: 1px solid rgba(214, 184, 122, 0.22);
  background: rgba(4, 8, 12, 0.36);
}

.kodex-method-matrix__row {
  display: grid;
  grid-template-columns: minmax(106px, 0.72fr) repeat(3, minmax(0, 1fr));
}

.kodex-method-matrix__row + .kodex-method-matrix__row {
  border-top: 1px solid rgba(169, 176, 187, 0.14);
}

.kodex-method-matrix__corner,
.kodex-method-matrix__column-label,
.kodex-method-matrix__row-label {
  display: grid;
  align-content: center;
  gap: 4px;
  min-width: 0;
  padding: 12px;
}

.kodex-method-matrix__corner,
.kodex-method-matrix__row-label {
  border-right: 1px solid rgba(169, 176, 187, 0.14);
}

.kodex-method-matrix__column-label + .kodex-method-matrix__column-label,
.kodex-method-matrix__row > button + button {
  border-left: 1px solid rgba(169, 176, 187, 0.1);
}

.kodex-method-matrix__corner span,
.kodex-method-matrix__column-label span,
.kodex-method-matrix__row-label span,
.kodex-method-matrix button span {
  color: var(--text-aether-muted);
  font-family: var(--font-mono);
  font-size: 8px;
  font-weight: 600;
  letter-spacing: 0.12em;
  line-height: 1.35;
  text-transform: uppercase;
}

.kodex-method-matrix__corner strong,
.kodex-method-matrix__column-label strong,
.kodex-method-matrix__row-label strong {
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-size: 15px;
  font-style: italic;
  font-weight: 400;
}

.kodex-method-matrix__column-label {
  text-align: center;
}

.kodex-method-matrix button {
  display: grid;
  align-content: center;
  gap: 7px;
  min-height: 92px;
  padding: 12px;
  border: 0;
  box-shadow: none;
  background: transparent;
}

.kodex-method-matrix button strong {
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-size: 15px;
  font-style: italic;
  font-weight: 400;
  line-height: 1.25;
}

.kodex-method-matrix button:hover,
.kodex-method-matrix button:focus-visible {
  background: rgba(214, 184, 122, 0.06);
  border-color: transparent;
}

.kodex-method-matrix button.is-active {
  background:
    linear-gradient(145deg, rgba(214, 184, 122, 0.14), rgba(91, 159, 164, 0.07));
  box-shadow: inset 0 0 0 1px rgba(214, 184, 122, 0.42);
}

.kodex-cell-reading {
  display: grid;
  align-content: center;
  min-height: 100%;
  border: 1px solid rgba(214, 184, 122, 0.28);
  background:
    linear-gradient(155deg, rgba(214, 184, 122, 0.08), transparent 58%),
    rgba(8, 11, 16, 0.62);
}

.methodology-evidence-note {
  display: grid;
  grid-template-columns: minmax(150px, 0.3fr) minmax(0, 1fr);
  gap: 22px;
  margin-bottom: 24px;
  padding: 18px 0;
  border-top: 1px solid rgba(214, 184, 122, 0.24);
  border-bottom: 1px solid rgba(214, 184, 122, 0.16);
}

.methodology-evidence-note strong {
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: var(--ls-mono-chip, 0.22em);
  text-transform: uppercase;
}

.methodology-evidence-note p {
  margin: 0;
  color: var(--text-aether-body);
  font-size: 14px;
  line-height: 1.65;
}

@media (max-width: 900px) {
  .methodology-contract-row {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .kodex-axis-overview,
  .kodex-matrix-explainer {
    grid-template-columns: 1fr;
  }

  .kodex-axis-overview header {
    min-height: 0;
  }
}

@media (max-width: 620px) {
  .methodology-contract-row {
    padding: 26px 0 30px 16px;
  }

  .methodology-contract-row__detail dl,
  .methodology-contract-row__limits,
  .methodology-evidence-note {
    grid-template-columns: 1fr;
  }

  .kodex-axis-overview li {
    grid-template-columns: minmax(76px, 0.38fr) minmax(0, 0.62fr);
  }

  .kodex-axis-overview li p {
    grid-column: 1 / -1;
  }

  .kodex-method-matrix {
    overflow: visible;
  }

  .kodex-method-matrix__row {
    grid-template-columns: 56px repeat(3, minmax(0, 1fr));
    min-width: 0;
  }

  .kodex-method-matrix__corner,
  .kodex-method-matrix__column-label,
  .kodex-method-matrix__row-label,
  .kodex-method-matrix button {
    padding: 7px 6px;
  }

  .kodex-method-matrix__corner span,
  .kodex-method-matrix__column-label span,
  .kodex-method-matrix__row-label span {
    font-size: 6px;
    letter-spacing: 0.08em;
    overflow-wrap: anywhere;
  }

  .kodex-method-matrix__corner strong,
  .kodex-method-matrix__column-label strong,
  .kodex-method-matrix__row-label strong,
  .kodex-method-matrix button strong {
    font-size: 12px;
    overflow-wrap: anywhere;
  }

  .kodex-method-matrix button {
    min-height: 104px;
  }

  .kodex-method-matrix button span {
    display: none;
  }
}

/* ══════════════════════════════════════════════════════════════════════
   Klick-Affordanz & Ruhe (2026-07): interaktive Auswahlflächen erkennbar
   machen, Hover ≠ Auswahl trennen, FAQ klar aufklappbar.
   ══════════════════════════════════════════════════════════════════════ */

.methodology-picker {
  display: grid;
  align-content: start;
  gap: 12px;
  min-width: 0;
}

/* Ruhiger Hilfetext statt Label-Optik: signalisiert „hier kannst du wählen". */
.methodology-picker__hint {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--text-aether-muted);
  font-size: 13px;
  font-style: italic;
  line-height: 1.4;
}

.methodology-picker__hint span {
  color: var(--metal-gold);
  font-size: 12px;
  font-style: normal;
}

/* HEXACO-Felder: Hover platin + leichte Füllung (wirkt antippbar),
   Auswahl deutlich in Gold mit Marker. Beides klar unterscheidbar. */
.hexaco-dimension-list button {
  position: relative;
}

.hexaco-dimension-list button:hover,
.hexaco-dimension-list button:focus-visible {
  border-color: var(--metal-platinum-strong);
  background: rgba(169, 176, 187, 0.05);
  color: var(--text-aether-primary);
}

.hexaco-dimension-list button.is-active {
  border-color: var(--metal-gold-strong, rgba(214, 184, 122, 0.62));
  background: linear-gradient(150deg, rgba(214, 184, 122, 0.1), transparent 72%);
  box-shadow: var(--engrave-gold-inset);
  color: var(--text-aether-primary);
}

.hexaco-dimension-list button.is-active::after {
  content: '';
  position: absolute;
  top: 12px;
  right: 12px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--metal-gold);
  box-shadow: 0 0 10px rgba(214, 184, 122, 0.5);
}

/* Kodex-Matrix: aktive Zelle mit Gold-Marker, damit die Auswahl sichtbar ist. */
.kodex-method-matrix button {
  cursor: pointer;
}

.kodex-method-matrix button.is-active::after {
  content: '';
  position: absolute;
  top: 9px;
  right: 9px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--metal-gold);
  box-shadow: 0 0 8px rgba(214, 184, 122, 0.5);
}

/* ── FAQ: eindeutig aufklappbar mit +/− Marker ────────────────────────── */
.methodology-faq-list details {
  transition: border-color 0.25s var(--ease-out-expo);
}

.methodology-faq-list details:hover {
  border-color: var(--metal-platinum-strong);
}

.methodology-faq-list summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  list-style: none;
}

.methodology-faq-list summary::-webkit-details-marker {
  display: none;
}

.methodology-faq-list summary::after {
  content: '+';
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border: 1px solid var(--metal-gold-border, rgba(214, 184, 122, 0.34));
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 16px;
  font-style: normal;
  line-height: 1;
  transition: background 0.25s ease, transform 0.25s ease;
}

.methodology-faq-list details[open] summary::after {
  content: '−';
  background: rgba(214, 184, 122, 0.12);
}

/* ── Kodex-Matrix: Kopf-/Zeilen-Labels von antippbaren Zellen trennen ──
   Kühle (platin) Tönung = fixe Achsen-Beschriftung, warme (gold) Tönung =
   antippbares Feld. So sind Labels und Zellen sofort unterscheidbar. */
.kodex-method-matrix__corner,
.kodex-method-matrix__column-label,
.kodex-method-matrix__row-label {
  background: rgba(169, 176, 187, 0.06);
}

.kodex-method-matrix button {
  background: rgba(214, 184, 122, 0.035);
}

.kodex-method-matrix button:not(.is-active):hover,
.kodex-method-matrix button:not(.is-active):focus-visible {
  background: rgba(214, 184, 122, 0.12);
}

/* Lange Fachbegriffe in Zeilen-/Spaltenlabels dürfen umbrechen, statt über
   die Tabellenlinie in die Nachbarzelle zu ragen. */
.kodex-method-matrix__corner,
.kodex-method-matrix__column-label,
.kodex-method-matrix__row-label {
  min-width: 0;
}

.kodex-method-matrix__corner span,
.kodex-method-matrix__corner strong,
.kodex-method-matrix__column-label span,
.kodex-method-matrix__column-label strong,
.kodex-method-matrix__row-label span,
.kodex-method-matrix__row-label strong,
.kodex-method-matrix button span,
.kodex-method-matrix button strong {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* ── Hero-Signaturzyklus: ruhiges Erst-Highlight (198 Möglichkeiten) ──── */
.methodology-hero-showcase {
  display: grid;
  align-items: center;
  justify-items: center;
  min-width: 0;
}

.methodology-signature-cycle {
  display: grid;
  justify-items: center;
  align-content: center;
  gap: clamp(16px, 2.4vw, 24px);
  width: 100%;
  padding: clamp(16px, 3vw, 32px);
}

.methodology-signature-cycle__count {
  color: var(--metal-gold);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: var(--ls-mono-marker, 0.32em);
  text-transform: uppercase;
}

.methodology-signature-cycle__stage {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  min-height: min(48vw, 240px);
  isolation: isolate;
}

/* Sehr ruhiger Lichtkern hinter dem Artefakt (kein Portal/Altar). */
.methodology-signature-cycle__halo {
  position: absolute;
  inset: 8% 14%;
  z-index: -1;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 42%, rgba(255, 255, 255, 0.06), transparent 62%),
    radial-gradient(circle at 50% 58%, rgba(214, 184, 122, 0.05), transparent 70%);
  filter: blur(18px);
  pointer-events: none;
}

/* Überlagernde Ebenen: alte und neue Signatur blenden weich ineinander,
   statt nacheinander (kann nie hängenbleiben, sanfterer Übergang). */
.methodology-signature-cycle__poster {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
}

.methodology-signature-cycle__name {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 2.6em;
  text-align: center;
}

.methodology-signature-cycle__name strong {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: var(--text-aether-primary);
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(20px, 2.4vw, 26px);
  line-height: 1.2;
}

/* 6. Utility Layer: Helper Classes (Optional) */
/* @import './utilities/helpers.css'; */

/* ── Global Responsiveness (R5 Compliance) ─────────────────────────── */
@media (max-width: 480px) {
  :root {
    --app-container-max-width: 100vw;
  }
}
.footer-arcane {
  --footer-brass-rgb: 216, 189, 122;
  --footer-blue-rgb: 108, 154, 190;
  margin-top: auto;
  width: 100%;
  padding: 1.3rem clamp(1rem, 4vw, 2rem);
  border-top: 1px solid rgba(var(--footer-brass-rgb), 0.14);
  background:
    linear-gradient(90deg, rgba(var(--footer-brass-rgb), 0.055), transparent 28%, rgba(var(--footer-blue-rgb), 0.035) 74%, transparent),
    linear-gradient(180deg, rgba(7, 9, 13, 0.96), rgba(3, 5, 8, 0.98));
  color: rgba(246, 239, 218, 0.7);
  z-index: var(--z-dock);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 -18px 56px rgba(0, 0, 0, 0.28);
}

.footer-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1200px;
  margin: 0 auto;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.footer-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem 1.75rem;
}

.footer-link {
  color: rgba(246, 239, 218, 0.62);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.12em;
  text-decoration: none;
  text-transform: uppercase;
  transition: color 0.18s ease, text-decoration-color 0.18s ease;
}

.footer-link:hover,
.footer-link:focus-visible {
  color: rgb(var(--footer-brass-rgb));
  outline: none;
  text-decoration: underline;
  text-decoration-color: rgba(var(--footer-brass-rgb), 0.5);
  text-underline-offset: 0.28rem;
}

.footer-link:focus-visible {
  outline: 2px solid rgba(var(--footer-brass-rgb), 0.82);
  outline-offset: 5px;
  border-radius: 4px;
  box-shadow: 0 0 0 4px rgba(5, 7, 11, 0.76);
}

.footer-actions {
  display: flex;
  align-items: center;
  gap: 1rem;
}

.lang-toggle {
  min-width: 2.2rem;
  min-height: 2rem;
  padding: 0.32rem 0.58rem;
  border: 1px solid rgba(var(--footer-brass-rgb), 0.16);
  border-radius: 6px;
  background:
    linear-gradient(135deg, rgba(var(--footer-brass-rgb), 0.08), transparent 62%),
    rgba(5, 7, 11, 0.72);
  color: rgba(var(--footer-brass-rgb), 0.84);
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  font-weight: 900;
  transition: border-color 0.18s ease, color 0.18s ease, background 0.18s ease;
}

.lang-toggle:hover,
.lang-toggle:focus-visible {
  border-color: rgba(var(--footer-brass-rgb), 0.34);
  background: rgba(var(--footer-brass-rgb), 0.08);
  color: #fff7e0;
  outline: none;
}

.lang-toggle:focus-visible {
  outline: 2px solid rgba(var(--footer-brass-rgb), 0.82);
  outline-offset: 4px;
  box-shadow: 0 0 0 4px rgba(5, 7, 11, 0.76);
}

.copyright {
  color: rgba(246, 239, 218, 0.46);
  font-size: 0.7rem;
}

@media (max-width: 768px) {
  .footer-content {
    flex-direction: column;
    text-align: center;
  }

  .footer-nav {
    justify-content: center;
    gap: 1rem;
  }

  .footer-actions {
    justify-content: center;
    flex-wrap: wrap;
  }
}
.cookie-banner-wrapper {
  --cookie-brass-rgb: 216, 189, 122;
  --cookie-blue-rgb: 108, 154, 190;
  position: fixed;
  right: max(18px, env(safe-area-inset-right));
  bottom: max(18px, env(safe-area-inset-bottom));
  z-index: var(--z-max, 9999);
  width: min(500px, calc(100vw - 36px));
  animation: cookie-slide-in 420ms cubic-bezier(0.19, 1, 0.22, 1) both;
}

@keyframes cookie-slide-in {
  from {
    opacity: 0;
    transform: translateY(18px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.cookie-banner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: end;
  padding: 18px;
  border: 1px solid rgba(var(--cookie-brass-rgb), 0.17);
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(var(--cookie-brass-rgb), 0.075), transparent 54%),
    linear-gradient(90deg, rgba(var(--cookie-blue-rgb), 0.055), transparent 78%),
    rgba(6, 8, 12, 0.95);
  box-shadow:
    0 24px 70px rgba(0, 0, 0, 0.44),
    inset 0 1px 0 rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(22px) saturate(120%);
}

.cookie-content {
  min-width: 0;
}

.cookie-kicker {
  display: inline-flex;
  margin-bottom: 7px;
  color: rgba(var(--cookie-brass-rgb), 0.84);
  font-family: var(--font-mono, ui-monospace, "SF Mono", Menlo, monospace);
  font-size: 0.64rem;
  font-weight: 850;
  letter-spacing: 0.13em;
  line-height: 1;
  text-transform: uppercase;
}

.cookie-title {
  margin: 0 0 8px;
  color: #fff7e0;
  font-family: var(--font-heading, "Syne", sans-serif);
  font-size: 0.98rem;
  font-weight: 760;
  letter-spacing: 0;
  line-height: 1.2;
}

.cookie-text {
  margin: 0;
  color: rgba(246, 239, 218, 0.68);
  font-size: 0.84rem;
  line-height: 1.48;
}

.privacy-link {
  color: rgba(255, 247, 224, 0.9);
  font-weight: 650;
  text-decoration: underline;
  text-decoration-color: rgba(var(--cookie-brass-rgb), 0.48);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

.privacy-link:hover {
  color: #fff7e0;
  text-decoration-color: rgb(var(--cookie-brass-rgb));
}

.cookie-actions {
  display: grid;
  gap: 10px;
  min-width: 168px;
}

.cookie-button {
  min-height: 40px;
  padding: 0 15px;
  border-radius: 8px;
  font: 850 0.74rem/1 var(--font-mono, ui-monospace, "SF Mono", Menlo, monospace);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition:
    transform 160ms ease,
    border-color 160ms ease,
    background 160ms ease,
    color 160ms ease,
    box-shadow 160ms ease;
}

.cookie-button:hover {
  transform: translateY(-1px);
}

.cookie-button:focus-visible {
  outline: 2px solid rgba(var(--cookie-brass-rgb), 0.68);
  outline-offset: 3px;
}

.cookie-button--primary {
  border: 1px solid rgba(var(--cookie-brass-rgb), 0.72);
  background: linear-gradient(180deg, rgb(var(--cookie-brass-rgb)), #9c7a3c);
  color: #080907;
  box-shadow: 0 10px 28px rgba(var(--cookie-brass-rgb), 0.16);
}

.cookie-button--primary:hover {
  border-color: #fff7e0;
  background: linear-gradient(180deg, #fff0b6, rgb(var(--cookie-brass-rgb)));
  box-shadow: 0 14px 36px rgba(var(--cookie-brass-rgb), 0.24);
}

.cookie-button--secondary {
  border: 1px solid rgba(var(--cookie-brass-rgb), 0.16);
  background: rgba(255, 247, 224, 0.045);
  color: rgba(246, 239, 218, 0.76);
}

.cookie-button--secondary:hover {
  border-color: rgba(var(--cookie-brass-rgb), 0.32);
  background: rgba(var(--cookie-brass-rgb), 0.08);
  color: #fff7e0;
}

.cookie-banner-wrapper--landing {
  width: min(420px, calc(100vw - 36px));
}

.cookie-banner-wrapper--landing .cookie-banner {
  grid-template-columns: 1fr;
  gap: 12px;
  padding: 14px;
}

.cookie-banner-wrapper--landing .cookie-kicker {
  margin-bottom: 5px;
  font-size: 0.58rem;
  letter-spacing: 0.12em;
}

.cookie-banner-wrapper--landing .cookie-title {
  margin-bottom: 6px;
  font-size: 0.9rem;
}

.cookie-banner-wrapper--landing .cookie-text {
  font-size: 0.78rem;
  line-height: 1.38;
}

.cookie-banner-wrapper--landing .cookie-actions {
  grid-template-columns: 1fr 1fr;
  min-width: 0;
}

.cookie-banner-wrapper--landing .cookie-button {
  min-height: 36px;
  padding: 0 10px;
  font-size: 0.66rem;
}

@media (max-width: 720px) {
  .cookie-banner-wrapper {
    right: max(12px, env(safe-area-inset-right));
    bottom: max(12px, env(safe-area-inset-bottom));
    left: max(12px, env(safe-area-inset-left));
    width: auto;
  }

  .cookie-banner {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 14px;
    border-radius: 8px;
  }

  .cookie-actions {
    grid-template-columns: 1fr 1fr;
    min-width: 0;
  }

  .cookie-button {
    width: 100%;
    min-height: 40px;
    padding: 0 10px;
    font-size: 0.68rem;
    white-space: normal;
  }

  .cookie-banner-wrapper--landing {
    right: max(10px, env(safe-area-inset-right));
    bottom: max(10px, env(safe-area-inset-bottom));
    left: max(10px, env(safe-area-inset-left));
  }

  .cookie-banner-wrapper--landing .cookie-banner {
    gap: 10px;
    padding: 12px;
  }

  .cookie-banner-wrapper--landing .cookie-kicker {
    margin-bottom: 4px;
    font-size: 0.56rem;
  }

  .cookie-banner-wrapper--landing .cookie-title {
    margin-bottom: 5px;
    font-size: 0.84rem;
  }

  .cookie-banner-wrapper--landing .cookie-text {
    font-size: 0.74rem;
    line-height: 1.34;
  }

  .cookie-banner-wrapper--landing .cookie-button {
    min-height: 34px;
    font-size: 0.62rem;
  }
}

@media (max-width: 420px) {
  .cookie-banner-wrapper--legal,
  .cookie-banner-wrapper--support {
    right: max(8px, env(safe-area-inset-right));
    bottom: max(8px, env(safe-area-inset-bottom));
    left: max(8px, env(safe-area-inset-left));
  }

  .cookie-banner-wrapper--legal .cookie-banner,
  .cookie-banner-wrapper--support .cookie-banner {
    gap: 8px;
    padding: 10px;
  }

  .cookie-banner-wrapper--legal .cookie-kicker,
  .cookie-banner-wrapper--support .cookie-kicker {
    display: none;
  }

  .cookie-banner-wrapper--legal .cookie-title,
  .cookie-banner-wrapper--support .cookie-title {
    margin-bottom: 4px;
    font-size: 0.86rem;
  }

  .cookie-banner-wrapper--legal .cookie-text,
  .cookie-banner-wrapper--support .cookie-text {
    font-size: 0.74rem;
    line-height: 1.32;
  }

  .cookie-banner-wrapper--legal .cookie-actions,
  .cookie-banner-wrapper--support .cookie-actions {
    gap: 8px;
  }

  .cookie-banner-wrapper--legal .cookie-button,
  .cookie-banner-wrapper--support .cookie-button {
    min-height: 44px;
    padding: 0 8px;
    font-size: 0.62rem;
  }
}
/**
 * App Layout & Shell Styles
 * Centralized core layout rules for Persona Quest
 */

.skip-link {
  position: absolute;
  top: -100px;
  left: 0;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  background: var(--accent-primary);
  color: var(--white);
  padding: 8px 16px;
  z-index: 1000;
  transition: top 0.3s ease;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  border-bottom-right-radius: 8px;
  text-decoration: none;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  transition: none;
}

.skip-link:focus {
  top: 0;
  outline: 2px solid var(--white);
  outline-offset: -4px;
}

.app-container {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  min-height: 100vh;
}

.content-wrapper {
  flex: 1;
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
}

/* Header & Navigation Shell */
.quiz-header {
  position: absolute;
  top: 1rem;
  left: 0;
  right: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 2rem;
  z-index: 300;
  pointer-events: none;
}

/* Abort/Exit Button – always pushed to the right.
   Deckend + gold-gerahmt, damit die dekorative Szenen-Ecke ihn nicht
   optisch überlagert (sie liegt darunter, war nur durch geringe Deckkraft
   schwer abzugrenzen). */
.abort-button {
  pointer-events: auto;
  margin-left: auto;
  background: rgba(var(--bg-slate-rgb), 0.74);
  border: 1px solid rgba(var(--metal-gold-rgb, 216, 189, 122), 0.34);
  color: var(--text-primary);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  font-size: 1.05rem;
  cursor: pointer;
  backdrop-filter: blur(8px);
  transition: var(--transition-smooth);
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  opacity: 0.92;
}

.abort-button:hover {
  background: rgba(var(--danger-rgb), 0.15);
  color: var(--danger);
  border-color: rgba(var(--danger-rgb), 0.4);
  opacity: 1;
  transform: scale(1.08);
}

/* Quiz Back Button (go to previous question) */
.quiz-back-button {
  pointer-events: auto;
  background: rgba(var(--bg-slate-rgb), 0.5);
  border: 1px solid var(--glass-border);
  color: var(--text-muted);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  font-size: 1rem;
  cursor: pointer;
  backdrop-filter: blur(8px);
  transition: var(--transition-smooth);
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  opacity: 0.6;
}

.quiz-back-button:hover {
  background: rgba(255, 255, 255, 0.08);
  color: var(--pure-white);
  border-color: rgba(255, 255, 255, 0.2);
  opacity: 1;
  transform: scale(1.08);
}

/* Path Selection Toggle */
.path-toggle {
  pointer-events: auto;
  display: flex;
  background: rgba(var(--bg-deep-rgb, 10, 10, 15), 0.7);
  border: 1px solid var(--glass-border);
  border-radius: 99px;
  padding: 0.25rem;
  backdrop-filter: blur(8px);
}

.path-option {
  background: transparent;
  border: none;
  color: var(--text-muted);
  padding: 0.4rem 1rem;
  font-size: 0.75rem;
  border-radius: 99px;
  cursor: pointer;
  transition: var(--transition-fast);
  letter-spacing: var(--letter-spacing-story);
}

.path-option.active {
  background: var(--glass-light);
  color: var(--text-primary);
  box-shadow: var(--text-glow-soft);
}

/* Async Component Loaders */
.chunk-loader {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 58px;
  height: 58px;
  z-index: 1000;
}

/* Lazy public routes initially have no document height. Keep the footer out of
   the visual layout until the route exists, otherwise it jumps from the first
   viewport to the end of the page and produces a large layout shift. */
.app-container:has(.route-chunk-pending) > .footer-arcane {
  visibility: hidden;
}

.checkout-route-loader {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 0.65rem;
  padding: 2rem;
  text-align: center;
  background: rgba(5, 7, 11, 0.97);
  color: var(--text-primary);
}

.checkout-route-loader::before,
.checkout-route-loader::after {
  content: '';
  width: min(18rem, 62vw);
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(var(--metal-gold-rgb, 216, 189, 122), 0.5),
    transparent
  );
}

.checkout-route-loader__eyebrow {
  margin-top: 0.55rem;
  color: var(--metal-gold, #d8bd7a);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 700;
  text-transform: uppercase;
}

.checkout-route-loader strong {
  max-width: 22rem;
  font-family: var(--font-display);
  font-size: clamp(1.55rem, 4vw, 2.15rem);
  font-weight: 500;
  line-height: 1.08;
}

.checkout-route-loader > span:not(.checkout-route-loader__eyebrow) {
  color: var(--text-muted);
  font-size: 0.82rem;
}

.checkout-route-loader i {
  width: 3.5rem;
  height: 2px;
  margin: 0.7rem 0 0.55rem;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.08);
}

.checkout-route-loader i::after {
  content: '';
  display: block;
  width: 45%;
  height: 100%;
  background: var(--metal-gold, #d8bd7a);
  animation: checkout-route-progress 0.9s ease-in-out infinite alternate;
}

@keyframes checkout-route-progress {
  from { transform: translateX(0); }
  to { transform: translateX(122%); }
}

/* Ladeanzeige als Orb-Motiv (statt generischem Spinner): der Orb ist das
   verbindende Element durch den ganzen Flow, auch die Wartezeit gehört ihm. */
.loader-orbit {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background:
    radial-gradient(circle at 40% 34%, rgba(255, 247, 224, 0.55), transparent 44%),
    radial-gradient(circle at 62% 66%, color-mix(in srgb, var(--accent-primary) 55%, transparent), transparent 62%),
    radial-gradient(circle at 50% 50%, var(--accent-primary), rgba(6, 8, 12, 0.92) 74%);
  box-shadow: 0 0 34px color-mix(in srgb, var(--accent-primary) 30%, transparent);
  animation: pq-orb-pulse 1.7s ease-in-out infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

@keyframes pq-orb-pulse {
  0%, 100% { transform: scale(0.9); opacity: 0.74; }
  50%      { transform: scale(1.05); opacity: 1; }
}

/* ── Routen-Überblendung ────────────────────────────────────────────────
   Weicher Seitenwechsel statt harter Schnitt: die alte Seite blendet aus
   (.is-out), dann taucht die neue Seite eingeblendet auf (pq-fade-in).
   BEWUSST nur opacity, kein transform: ein transform auf dem Wrapper würde
   zum Containing-Block für position:fixed-Kinder (Hub-BottomNav, Report-Nav)
   und sie während der Animation verspringen lassen. Reduced-Motion-sicher. */
@keyframes pq-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.route-fade {
  /* Layout-transparent: erbt den Flex-Kontext von .content-wrapper, damit
     Seiten-Roots mit flex:1 / height:100% weiterhin die Höhe füllen. */
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
  animation: pq-fade-in 0.26s var(--ease-out-expo, cubic-bezier(0.19, 1, 0.22, 1)) both;
}

.route-fade.is-out {
  animation: none;
  opacity: 0;
  transition: opacity 0.18s ease;
}

.route-fade.is-immediate {
  animation: none;
}

  @media (prefers-reduced-motion: reduce) {
    .loader-orbit { animation: none; }
    .checkout-route-loader i::after { animation: none; }
  .route-fade,
  .route-fade.is-out {
    animation: none;
    opacity: 1;
    transition: none;
  }
}

/* Rule R5: Responsive Guard */
@media (max-width: 768px) {
  .quiz-header {
    padding: 0 1rem;
    top: 0.375rem;
  }

  .path-option {
    padding: 0.3rem 0.6rem;
    font-size: 0.7rem;
  }

  .abort-button {
    width: 44px;
    height: 44px;
  }
}

/* ── Abort Confirmation Modal ── */
.abort-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(var(--bg-deep-rgb, 2, 6, 23), 0.85);
  backdrop-filter: blur(12px);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
}

.abort-modal-content {
  position: relative;
  overflow: hidden;
  background: rgba(8, 12, 16, 0.98);
  border: 1px solid rgba(var(--metal-gold-rgb, 210, 177, 104), 0.34);
  padding: 2rem 2rem 1.4rem;
  border-radius: 6px;
  max-width: 440px;
  width: 100%;
  text-align: center;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.58);
}

.abort-modal-content::before,
.abort-modal-content::after {
  content: '';
  position: absolute;
  top: 12px;
  width: 24px;
  height: 24px;
  border-top: 1px solid rgba(var(--metal-gold-rgb, 210, 177, 104), 0.62);
}

.abort-modal-content::before {
  left: 12px;
  border-left: 1px solid rgba(var(--metal-gold-rgb, 210, 177, 104), 0.62);
}

.abort-modal-content::after {
  right: 12px;
  border-right: 1px solid rgba(var(--metal-gold-rgb, 210, 177, 104), 0.62);
}

.abort-modal-eyebrow {
  display: block;
  margin-bottom: 0.65rem;
  color: rgba(var(--metal-gold-rgb, 210, 177, 104), 0.82);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.abort-modal-content h3 {
  font-family: var(--font-serif);
  font-size: 1.5rem;
  margin-bottom: 0.5rem;
  color: var(--white);
}

.abort-modal-content p {
  color: var(--text-muted);
  font-size: 0.95rem;
  line-height: 1.55;
  margin: 0 auto 1.5rem;
  max-width: 34ch;
}

.modal-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.7rem;
}

.modal-actions--single {
  grid-template-columns: minmax(180px, 0.5fr);
  justify-content: center;
}

.btn-modal-cancel,
.btn-modal-pause,
.btn-modal-confirm {
  min-height: 44px;
  padding: 0.8rem 1rem;
  border-radius: 4px;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
  transition: var(--transition-smooth);
}

.btn-modal-pause {
  background: rgba(var(--metal-gold-rgb, 210, 177, 104), 0.14);
  border: 1px solid rgba(var(--metal-gold-rgb, 210, 177, 104), 0.58);
  color: #fff4d6;
}

.btn-modal-pause:hover,
.btn-modal-pause:focus-visible {
  background: rgba(var(--metal-gold-rgb, 210, 177, 104), 0.24);
  border-color: rgba(var(--metal-gold-rgb, 210, 177, 104), 0.82);
}

.btn-modal-cancel {
  background: var(--glass-light);
  border: 1px solid var(--glass-border);
  color: var(--white);
}

.btn-modal-cancel:hover {
  background: rgba(255, 255, 255, 0.1);
}

.btn-modal-confirm {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  margin-top: 0.85rem;
  padding: 0.5rem 0.7rem;
  background: transparent;
  border: 0;
  color: rgba(240, 149, 149, 0.78);
  font-size: 0.64rem;
  text-decoration: underline;
  text-underline-offset: 0.25em;
}

.btn-modal-confirm:hover,
.btn-modal-confirm:focus-visible {
  color: #ffc0c0;
}

@media (max-width: 480px) {
  .path-toggle {
    scale: 0.9;
    transform-origin: right top;
  }

  .abort-modal-overlay {
    padding: 1rem;
  }

  .abort-modal-content {
    padding: 1.75rem 1rem 1.15rem;
  }

  .modal-actions {
    grid-template-columns: 1fr;
  }
}

.orb-reveal-wrapper {
  position: fixed;
  inset: 0;
  z-index: 100;
}
.pq-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
