/* ═══════════════════════════════════════════════════════════════
   洞锋 Showroom — Responsive CSS
   3-tier: Laptop(1366) / Desktop(1920) / TV(3840+)
   All sizes use clamp(laptop, fluid, tv)
   ═══════════════════════════════════════════════════════════════ */

:root {
  --bg:      #02060e;
  --surface: #0a121c;
  --border:  rgba(52, 200, 255, 0.18);
  --accent:  #0c58c9;
  --accent2: #34c8ff;
  --purple:  #a78bfa;
  --emerald: #34d399;
  --amber:   #fbbf24;
  --danger:  #FF4444;
  --warn:    #FF8C00;
  --mute:    #6b7a8d;
  --text:    #c8dce6;
  --text-hi: #eaf4ff;
  --glow:    0 0 20px rgba(52, 200, 255, 0.18);
  --glow-lg: 0 0 40px rgba(12, 88, 201, 0.24);
  --glow-danger: 0 0 20px rgba(255, 68, 68, 0.25);
  --font-cn: 'PingFang SC', 'Microsoft YaHei', -apple-system, sans-serif;
  --font-mono: 'Courier New', Monaco, 'Lucida Console', monospace;
  --scene-shell-pad-top: clamp(20px, 1.9vw, 32px);
  --scene-header-tag-top: clamp(44px, 3.6vw, 60px);
  --scene-header-title-gap: clamp(34px, 2.8vw, 48px);
}

html[data-theme="welcome"],
html[data-theme="crisis"],
html[data-theme="comparison"],
html[data-theme="architecture"],
html[data-theme="effects"],
html[data-theme="demo"] {
  --accent: #0c58c9;
  --accent2: #34c8ff;
  --page-accent: #34c8ff;
  --page-accent-2: #0c58c9;
  --border: rgba(52, 200, 255, 0.22);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  width: 100%; height: 100%;
  overflow: hidden;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-cn);
  -webkit-font-smoothing: antialiased;
  line-height: 1.5;
}

/* ── Canvas Background ──────────────────────────────────────── */
#bg-canvas {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 0;
  pointer-events: none;
}

/* ── Stage & Scene ──────────────────────────────────────────── */
#app { position: fixed; inset: 0; z-index: 1; }
#stage { position: relative; width: 100%; height: 100%; }

.scene {
  position: absolute; inset: 0;
  display: flex; align-items: flex-start; justify-content: center;
  opacity: 0; pointer-events: none;
  overflow-y: auto; overflow-x: hidden;
  z-index: 0;
  visibility: hidden;
}
.scene.active { opacity: 1; pointer-events: auto; visibility: visible; z-index: 2; }

/* ── Top Header Bar (scene pages only) ──────────────────────── */
#scene-topbar {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: clamp(10px, 1vw, 18px) clamp(20px, 2.2vw, 36px);
  background: rgba(2, 8, 28, 0.5);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(52, 200, 255, 0.16);
  transition: opacity 0.4s, transform 0.4s;
}
#scene-topbar.is-hidden {
  opacity: 0;
  pointer-events: none;
  transform: translateY(-100%);
}
.tb-left {
  display: flex; align-items: center; gap: clamp(10px, 0.8vw, 18px);
  cursor: pointer;
  user-select: none;
  border-radius: 8px;
  padding: 4px 8px 4px 4px;
  margin: -4px -8px -4px -4px;
  transition: background 0.2s, box-shadow 0.2s;
}
.tb-left:hover {
  background: rgba(52, 200, 255, 0.08);
  box-shadow: 0 0 0 1px rgba(52, 200, 255, 0.16);
}
.tb-left:focus-visible {
  outline: 2px solid rgba(52, 200, 255, 0.5);
  outline-offset: 2px;
}
.tb-zju-logo,
.tb-wordmark,
.welcome-zju-logo,
.welcome-wordmark {
  display: block;
}
.tb-zju-logo {
  height: clamp(20px, 1.4vw, 30px);
  width: auto;
  filter: brightness(1.05) drop-shadow(0 0 8px rgba(52, 200, 255, 0.22));
}
.tb-wordmark {
  height: clamp(24px, 1.7vw, 36px);
  width: auto;
  filter: drop-shadow(0 0 10px rgba(52, 200, 255, 0.22));
  transition: transform 0.22s ease, filter 0.22s ease;
}
.tb-left:hover .tb-wordmark {
  transform: translateX(2px);
  filter: drop-shadow(0 0 14px rgba(52, 200, 255, 0.3));
}
.tb-nav {
  position: absolute;
  left: 50%; transform: translateX(-50%);
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: clamp(4px, 0.5vw, 10px);
  max-width: min(96vw, 920px);
}
.tb-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: clamp(8px, 0.7vw, 12px);
}
.tb-tab {
  background: transparent;
  border: 1px solid rgba(52, 200, 255, 0.22);
  color: rgba(168, 188, 232, 0.68);
  padding: clamp(5px, 0.5vw, 10px) clamp(14px, 1.3vw, 28px);
  border-radius: 20px;
  font: 600 clamp(11px, 0.85vw, 17px)/1 var(--font-cn);
  letter-spacing: clamp(1px, 0.1vw, 2px);
  cursor: pointer;
  transition: border-color 0.2s, color 0.2s, background 0.2s;
}
.tb-tab:hover {
  border-color: rgba(12, 88, 201, 0.54);
  color: rgba(226, 244, 255, 0.96);
}
.tb-tab.is-active {
  background: rgba(52, 200, 255, 0.12);
  border-color: rgba(12, 88, 201, 0.66);
  color: rgba(234, 239, 255, 1);
  box-shadow: 0 0 12px rgba(52, 200, 255, 0.22);
}
.tb-action {
  background: linear-gradient(135deg, rgba(52, 200, 255, 0.16), rgba(12, 88, 201, 0.3));
  border: 1px solid rgba(52, 200, 255, 0.36);
  color: rgba(180, 224, 255, 0.96);
  padding: clamp(6px, 0.55vw, 8px) clamp(14px, 1vw, 20px);
  border-radius: 20px;
  font: 600 clamp(11px, 0.83vw, 14px)/1 var(--font-cn);
  letter-spacing: 1.2px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.25s, border-color 0.25s, box-shadow 0.25s, color 0.25s, opacity 0.25s;
}
.tb-action:hover:not(.is-disabled) {
  background: linear-gradient(135deg, rgba(52, 200, 255, 0.24), rgba(12, 88, 201, 0.38));
  border-color: rgba(12, 88, 201, 0.62);
  color: rgba(232, 244, 255, 1);
  box-shadow: 0 0 18px rgba(52, 200, 255, 0.24);
}
.tb-action.is-disabled {
  opacity: 0.28;
  pointer-events: none;
}

/* ── Shared Scene Components ────────────────────────────────── */
.scene-tag {
  display: inline-block;
  font: 600 clamp(10px, 0.8vw, 16px)/1 var(--font-mono);
  letter-spacing: clamp(2px, 0.3vw, 5px);
  text-transform: uppercase;
  color: rgba(96, 165, 250, 0.9);
  border: 1px solid rgba(96, 165, 250, 0.2);
  padding: clamp(4px, 0.4vw, 8px) clamp(12px, 1vw, 22px);
  border-radius: 6px;
  background: rgba(96, 165, 250, 0.06);
  margin-bottom: 0;
}

.scene-title {
  font-size: clamp(30px, 3.6vw, 76px);
  font-weight: 800;
  color: var(--text-hi);
  line-height: 1.15;
  letter-spacing: clamp(1px, 0.12vw, 4px);
  text-shadow: 0 0 40px rgba(96, 165, 250, 0.15), 0 2px 12px rgba(0,0,0,0.5);
}

.scene-header {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  min-height: clamp(118px, 12vw, 176px);
  text-align: center;
  margin-bottom: clamp(18px, 1.6vw, 30px);
  padding-top: calc(var(--scene-header-tag-top) + var(--scene-header-title-gap));
}
.scene-header .scene-tag {
  position: absolute;
  top: var(--scene-header-tag-top);
  left: 50%;
  transform: translateX(-50%);
  max-width: min(100%, 90vw);
}
.scene-header--left {
  align-items: flex-start;
  text-align: left;
}
.scene-header--left .scene-tag {
  left: 0;
  transform: none;
}

/* ── Logo Divider ───────────────────────────────────────────── */
.logo-divider {
  width: 1px;
  height: clamp(40px, 3.6vw, 72px);
  background: linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,0.28), rgba(255,255,255,0));
  flex-shrink: 0;
}
.logo-divider--sm {
  height: clamp(18px, 1.3vw, 28px);
}

/* ── Welcome Scene ──────────────────────────────────────────── */
.welcome-content {
  display: flex; flex-direction: column; align-items: center;
  text-align: center;
  padding: clamp(28px, 2.8vw, 56px) clamp(20px, 2vw, 40px);
  width: 100%;
  max-width: min(94vw, 1480px);
  position: relative;
  margin: auto;
}

.welcome-logo-row {
  display: flex;
  align-items: center;
  gap: clamp(16px, 1.5vw, 30px);
  margin-bottom: clamp(8px, 0.7vw, 14px);
}
.welcome-zju-logo {
  height: clamp(38px, 3.4vw, 68px);
  width: auto;
  filter: brightness(1.05) drop-shadow(0 0 10px rgba(255,255,255,0.12));
}
.welcome-wordmark {
  height: clamp(52px, 4.6vw, 96px);
  width: auto;
  filter: drop-shadow(0 0 14px rgba(52, 200, 255, 0.18));
}
.welcome-brand-meta {
  display: inline-flex;
  align-items: center;
  gap: clamp(10px, 0.8vw, 18px);
  font-size: clamp(11px, 0.95vw, 20px);
  letter-spacing: clamp(2px, 0.2vw, 4px);
  color: rgba(180, 200, 220, 0.7);
  white-space: nowrap;
  margin-bottom: clamp(4px, 0.4vw, 8px);
}

.welcome-scan-line {
  width: clamp(240px, 25vw, 500px);
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent), transparent);
  margin: clamp(6px, 0.6vw, 12px) auto clamp(16px, 1.6vw, 32px);
  animation: scan-pulse 3s ease-in-out infinite;
}
@keyframes scan-pulse {
  0%, 100% { opacity: 0.3; transform: scaleX(0.6); }
  50% { opacity: 1; transform: scaleX(1); }
}

.welcome-headline {
  font-size: clamp(42px, 5.5vw, 110px);
  font-weight: 800;
  line-height: 1.12;
  color: #fff;
  letter-spacing: clamp(3px, 0.3vw, 8px);
  background: linear-gradient(135deg, #fff 0%, #60a5fa 50%, #a78bfa 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 4px 24px rgba(96, 165, 250, 0.3));
  margin-bottom: clamp(14px, 1.5vw, 32px);
}

.welcome-sub {
  font-size: clamp(16px, 1.6vw, 32px);
  color: var(--text);
  max-width: clamp(460px, 50vw, 900px);
  margin-bottom: clamp(18px, 1.8vw, 28px);
  letter-spacing: 1px;
}

.welcome-pillars {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(14px, 1.2vw, 24px);
  width: min(100%, 1300px);
  margin-bottom: clamp(22px, 2vw, 38px);
}

.welcome-pillar {
  --pillar-accent: #60a5fa;
  position: relative;
  min-width: 0;
  text-align: left;
  padding: 0 clamp(18px, 1.5vw, 26px) clamp(18px, 1.5vw, 26px);
  border: 1px solid color-mix(in srgb, var(--pillar-accent) 22%, transparent);
  border-radius: 20px;
  background:
    radial-gradient(ellipse at 20% 0%, color-mix(in srgb, var(--pillar-accent) 12%, transparent), transparent 60%),
    linear-gradient(180deg, rgba(12, 18, 30, 0.82), rgba(6, 10, 20, 0.92));
  backdrop-filter: blur(16px);
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, var(--pillar-accent) 8%, transparent),
    0 8px 32px rgba(0, 0, 0, 0.2);
  transition: transform 0.28s ease, border-color 0.28s ease, box-shadow 0.28s ease;
  overflow: hidden;
}

.welcome-pillar-bar {
  height: 3px;
  margin: 0 calc(-1 * clamp(18px, 1.5vw, 26px));
  margin-bottom: clamp(16px, 1.3vw, 22px);
  background: linear-gradient(90deg, var(--pillar-accent), color-mix(in srgb, var(--pillar-accent) 30%, transparent));
  box-shadow: 0 0 16px color-mix(in srgb, var(--pillar-accent) 40%, transparent);
}

.welcome-pillar:hover {
  transform: translateY(-4px);
  border-color: color-mix(in srgb, var(--pillar-accent) 38%, transparent);
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, var(--pillar-accent) 12%, transparent),
    0 12px 40px rgba(0, 0, 0, 0.25),
    0 0 24px color-mix(in srgb, var(--pillar-accent) 14%, transparent);
}

.welcome-pillar-head {
  display: flex;
  align-items: center;
  gap: clamp(8px, 0.7vw, 12px);
  margin-bottom: clamp(10px, 0.8vw, 14px);
}

.welcome-pillar-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: clamp(34px, 2.6vw, 44px);
  height: clamp(34px, 2.6vw, 44px);
  border-radius: 10px;
  background: color-mix(in srgb, var(--pillar-accent) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--pillar-accent) 24%, transparent);
  color: var(--pillar-accent);
  flex-shrink: 0;
}
.welcome-pillar-icon svg {
  width: clamp(16px, 1.3vw, 22px);
  height: clamp(16px, 1.3vw, 22px);
}

.welcome-pillar-title {
  font: 600 clamp(15px, 1.2vw, 24px)/1.2 var(--font-cn);
  letter-spacing: clamp(1px, 0.08vw, 2px);
  color: rgba(240, 248, 255, 0.96);
}

.welcome-pillar-stat-row {
  display: flex;
  align-items: baseline;
  gap: clamp(6px, 0.5vw, 10px);
  margin-bottom: clamp(8px, 0.7vw, 12px);
}

.welcome-pillar-stat {
  font: 800 clamp(28px, 2.6vw, 52px)/1 var(--font-mono);
  background: linear-gradient(135deg, var(--pillar-accent), color-mix(in srgb, var(--pillar-accent) 60%, #fff));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 12px color-mix(in srgb, var(--pillar-accent) 30%, transparent));
}

.welcome-pillar-stat-label {
  font-size: clamp(11px, 0.9vw, 16px);
  color: color-mix(in srgb, var(--pillar-accent) 70%, rgba(200,220,240,0.8));
  letter-spacing: 0.5px;
}

.welcome-pillar-copy {
  font-size: clamp(12px, 0.92vw, 15px);
  line-height: 1.6;
  color: rgba(180, 200, 220, 0.72);
}

.welcome-position {
  font-size: clamp(13px, 1.1vw, 22px);
  color: var(--mute);
  max-width: clamp(480px, 50vw, 900px);
  margin-bottom: clamp(26px, 2.1vw, 42px);
}

.welcome-tap-hint {
  font: 600 clamp(13px, 1vw, 20px)/1 var(--font-mono);
  color: var(--accent);
  opacity: 0.6;
  animation: tap-pulse 2s ease-in-out infinite;
  cursor: pointer;
}
@keyframes tap-pulse {
  0%, 100% { opacity: 0.3; transform: translateY(0); }
  50% { opacity: 0.8; transform: translateY(4px); }
}

/* ── Crisis Scene (01 概念对比) ─────────────────────────────── */
#scene-crisis.scene {
  overflow: hidden !important;
  align-items: stretch;
}

.crisis-content {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: clamp(16px, 1.8vh, 28px);
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  padding: clamp(74px, 7.4vh, 110px) clamp(22px, 2vw, 40px) clamp(18px, 2.4vh, 30px);
  max-width: min(96vw, 1760px);
  margin: 0 auto;
  box-sizing: border-box;
}

.crisis-noise {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}
.crisis-noise::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 20% 30%, rgba(255, 143, 76, 0.09), transparent 40%),
    radial-gradient(ellipse at 80% 30%, rgba(72, 143, 255, 0.14), transparent 40%);
  filter: blur(20px);
}

.crisis-header {
  position: relative;
  z-index: 1;
  text-align: center;
  flex-shrink: 0;
}

.crisis-title {
  margin-top: clamp(8px, 0.8vh, 12px);
  font-size: clamp(26px, 2.8vw, 56px);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: clamp(0.5px, 0.08vw, 2px);
  color: var(--text-hi);
  text-shadow: 0 0 42px rgba(72, 143, 255, 0.16);
}

.crisis-subtitle {
  margin-top: clamp(6px, 0.5vh, 10px);
  font-size: clamp(15px, 1.2vw, 24px);
  color: rgba(180, 200, 220, 0.75);
  letter-spacing: 0.5px;
}

.crisis-metrics {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(8px, 0.8vw, 14px);
  flex-shrink: 0;
}

.crisis-metric {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: clamp(12px, 1vw, 16px);
  border-radius: 16px;
  border: 1px solid rgba(72, 143, 255, 0.14);
  background: linear-gradient(180deg, rgba(10, 18, 28, 0.82), rgba(8, 14, 24, 0.72));
  backdrop-filter: blur(10px);
}
.crisis-metric--danger { border-color: rgba(255, 101, 101, 0.2); }
.crisis-metric--warn { border-color: rgba(255, 171, 61, 0.2); }
.crisis-metric--mute { border-color: rgba(130, 148, 172, 0.14); }

.crisis-metric-top {
  display: flex;
  align-items: center;
  gap: clamp(8px, 0.7vw, 12px);
  margin-bottom: clamp(6px, 0.5vh, 10px);
}

.crisis-metric-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: clamp(28px, 2vw, 36px);
  height: clamp(28px, 2vw, 36px);
  border-radius: 10px;
  font-size: clamp(14px, 1.1vw, 18px);
  flex-shrink: 0;
}
.crisis-metric-icon--danger {
  background: rgba(255, 68, 68, 0.12);
  border: 1px solid rgba(255, 68, 68, 0.2);
  color: #ff7667;
}
.crisis-metric-icon--warn {
  background: rgba(255, 140, 0, 0.1);
  border: 1px solid rgba(255, 140, 0, 0.2);
  color: #ffb24d;
}
.crisis-metric-icon--mute {
  background: rgba(130, 148, 172, 0.08);
  border: 1px solid rgba(130, 148, 172, 0.14);
  color: #acbbcf;
}

.crisis-stat-value {
  font: 800 clamp(28px, 2.8vw, 56px)/1 var(--font-mono);
}
.crisis-metric--danger .crisis-stat-value {
  color: #ff7667;
  text-shadow: 0 0 18px rgba(255, 118, 103, 0.25);
}
.crisis-metric--warn .crisis-stat-value {
  color: #ffb24d;
  text-shadow: 0 0 16px rgba(255, 178, 77, 0.2);
}
.crisis-metric--mute .crisis-stat-value {
  color: #acbbcf;
}

.crisis-metric-label {
  font-size: clamp(14px, 1.1vw, 22px);
  font-weight: 700;
  color: rgba(234, 244, 255, 0.9);
  line-height: 1.3;
  margin-bottom: 4px;
}

.crisis-metric-note {
  font-size: clamp(12px, 0.9vw, 17px);
  line-height: 1.5;
  color: rgba(180, 200, 220, 0.78);
  flex: 1;
}
.crisis-hl {
  font-style: normal;
  font-weight: 600;
  padding: 1px 5px;
  border-radius: 3px;
}
.crisis-hl--danger {
  color: #ff6b6b;
  background: rgba(255, 68, 68, 0.12);
  border-bottom: 1.5px solid rgba(255, 68, 68, 0.45);
}
.crisis-hl--warn {
  color: #ffb347;
  background: rgba(255, 140, 0, 0.12);
  border-bottom: 1.5px solid rgba(255, 140, 0, 0.45);
}
.crisis-hl--mute {
  color: #64d2ff;
  background: rgba(100, 210, 255, 0.14);
  border-bottom: 1.5px solid rgba(100, 210, 255, 0.5);
}

.crisis-metric-ref {
  margin-top: 5px;
  font-size: clamp(10px, 0.75vw, 14px);
  line-height: 1.3;
  color: rgba(96, 165, 250, 0.55);
  font-family: var(--font-mono);
}

.crisis-duel {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 0;
  flex: 1;
  min-height: 0;
  align-items: stretch;
}

.crisis-vs {
  display: flex;
  align-items: center;
  justify-content: center;
  width: clamp(48px, 3.6vw, 68px);
  font: 800 clamp(14px, 1.2vw, 22px)/1 var(--font-mono);
  color: rgba(180, 200, 220, 0.4);
  letter-spacing: 3px;
  flex-shrink: 0;
}

.crisis-panel {
  position: relative;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: clamp(20px, 1.6vw, 28px);
  border-radius: clamp(20px, 1.6vw, 28px);
  overflow: hidden;
  backdrop-filter: blur(14px);
}

.crisis-panel--agent {
  border: 1px solid rgba(255, 143, 76, 0.16);
  background:
    radial-gradient(circle at 16% 12%, rgba(255, 143, 76, 0.08), transparent 36%),
    linear-gradient(160deg, rgba(24, 18, 16, 0.92), rgba(10, 12, 18, 0.88));
}
.crisis-panel--system {
  border: 1px solid rgba(72, 143, 255, 0.28);
  background:
    radial-gradient(circle at 84% 12%, rgba(72, 143, 255, 0.14), transparent 36%),
    linear-gradient(160deg, rgba(10, 22, 44, 0.94), rgba(8, 14, 26, 0.9));
  box-shadow: 0 0 40px rgba(72, 143, 255, 0.06);
}

.crisis-panel-kicker {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  min-height: clamp(28px, 2.2vw, 36px);
  padding: 0 clamp(12px, 1vw, 18px);
  border-radius: 999px;
  font: 700 clamp(11px, 0.88vw, 16px)/1 var(--font-mono);
  letter-spacing: 1px;
  text-transform: uppercase;
}
.crisis-panel--agent .crisis-panel-kicker {
  color: rgba(255, 215, 190, 0.9);
  background: rgba(255, 143, 76, 0.1);
  border: 1px solid rgba(255, 143, 76, 0.14);
}
.crisis-panel--system .crisis-panel-kicker {
  color: rgba(220, 238, 255, 0.96);
  background: rgba(72, 143, 255, 0.12);
  border: 1px solid rgba(72, 143, 255, 0.2);
}

.crisis-panel-title {
  margin-top: clamp(10px, 0.9vh, 14px);
  font-size: clamp(26px, 2.4vw, 48px);
  font-weight: 800;
  line-height: 1.12;
  color: var(--text-hi);
}

.crisis-panel-metaphor {
  margin-top: clamp(8px, 0.7vh, 12px);
  font-size: clamp(16px, 1.3vw, 26px);
  font-weight: 600;
  line-height: 1.4;
}
.crisis-panel--agent .crisis-panel-metaphor { color: rgba(241, 220, 200, 0.88); }
.crisis-panel--system .crisis-panel-metaphor {
  color: rgba(210, 232, 255, 0.92);
  text-shadow: 0 0 14px rgba(72, 143, 255, 0.1);
}

.crisis-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(6px, 0.6vw, 10px);
  margin-top: clamp(10px, 0.9vh, 14px);
  list-style: none;
}
.crisis-chip {
  display: inline-flex;
  align-items: center;
  min-height: clamp(30px, 2.4vw, 40px);
  padding: 0 clamp(12px, 1vw, 18px);
  border-radius: 999px;
  font-size: clamp(12px, 0.95vw, 18px);
  font-weight: 700;
  letter-spacing: 0.3px;
}
.crisis-chip--weak {
  color: rgba(247, 223, 203, 0.88);
  border: 1px solid rgba(255, 143, 76, 0.12);
  background: rgba(255, 143, 76, 0.06);
}
.crisis-chip--strong {
  color: rgba(230, 242, 255, 0.96);
  border: 1px solid rgba(72, 143, 255, 0.2);
  background: linear-gradient(135deg, rgba(72, 143, 255, 0.14), rgba(139, 92, 246, 0.08));
}

.crisis-flow {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(6px, 0.5vw, 10px);
  margin-top: clamp(10px, 0.9vh, 16px);
  flex: 1;
  min-height: 0;
  align-content: start;
}

.crisis-step {
  display: inline-flex;
  align-items: center;
  gap: clamp(6px, 0.5vw, 10px);
  padding: clamp(6px, 0.5vw, 10px) clamp(12px, 1vw, 18px);
  border-radius: 12px;
  background: rgba(8, 14, 24, 0.55);
}
.crisis-step--agent { border: 1px solid rgba(255, 143, 76, 0.1); }
.crisis-step--system {
  border: 1px solid rgba(72, 143, 255, 0.16);
  background: linear-gradient(180deg, rgba(10, 22, 42, 0.65), rgba(8, 14, 24, 0.5));
}

.crisis-step-index {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: clamp(24px, 1.6vw, 32px);
  height: clamp(24px, 1.6vw, 32px);
  border-radius: 999px;
  background: rgba(7, 14, 26, 0.9);
  font: 700 clamp(9px, 0.72vw, 13px)/1 var(--font-mono);
  flex-shrink: 0;
}
.crisis-step--agent .crisis-step-index {
  border: 1px solid rgba(255, 143, 76, 0.16);
  color: rgba(247, 219, 196, 0.88);
}
.crisis-step--system .crisis-step-index {
  border: 1px solid rgba(72, 143, 255, 0.22);
  color: rgba(229, 242, 255, 0.96);
  box-shadow: 0 0 10px rgba(72, 143, 255, 0.1);
}

.crisis-step-copy { min-width: 0; }
.crisis-step-name {
  font-size: clamp(13px, 1.05vw, 20px);
  font-weight: 700;
  color: var(--text-hi);
  line-height: 1.2;
}
.crisis-step-desc {
  display: none;
}

.crisis-verdict {
  margin-top: auto;
  padding-top: clamp(10px, 0.9vh, 14px);
  border-top: 1px solid rgba(72, 143, 255, 0.1);
  font-size: clamp(13px, 1.05vw, 20px);
  font-weight: 700;
  line-height: 1.4;
}
.crisis-verdict--agent {
  color: rgba(243, 218, 198, 0.85);
  border-top-color: rgba(255, 143, 76, 0.1);
}
.crisis-verdict--system {
  color: rgba(228, 242, 255, 0.94);
  border-top-color: rgba(72, 143, 255, 0.14);
}

.crisis-footerline {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  font-size: clamp(16px, 1.3vw, 26px);
  font-weight: 700;
  line-height: 1.45;
  padding-top: clamp(10px, 1vh, 14px);
  border-top: 1px solid rgba(72, 143, 255, 0.12);
  color: rgba(227, 241, 255, 0.94);
  text-align: center;
  text-wrap: balance;
  background: linear-gradient(90deg, #488fff, #a78bfa);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 14px rgba(72, 143, 255, 0.25));
}

@media (max-width: 1200px) {
  #scene-crisis.scene { overflow-y: auto !important; }
  .crisis-content { height: auto; min-height: 100%; padding-top: 84px; }
  .crisis-duel { grid-template-columns: 1fr; gap: 14px; }
  .crisis-vs { width: auto; padding: 6px 0; }
}

@media (max-width: 900px) {
  .tb-left {
    gap: 8px;
  }

  .tb-zju-logo {
    height: 18px;
  }

  .tb-wordmark {
    height: 22px;
  }

  .welcome-logo-row {
    gap: 12px;
  }

  .welcome-zju-logo {
    height: 32px;
  }

  .welcome-wordmark {
    height: 44px;
  }

  .welcome-brand-meta {
    justify-content: center;
    white-space: normal;
  }

  .welcome-pillars {
    grid-template-columns: 1fr;
    width: min(100%, 720px);
  }

  .logo-divider {
    height: 32px;
  }

  .crisis-content {
    padding-inline: 16px;
  }

  .crisis-metrics-block {
    gap: 10px;
  }

  .crisis-metrics {
    grid-template-columns: 1fr;
  }

  .crisis-lower-head {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .crisis-flow--agent {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .crisis-flow--system {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* ── Comparison Scene ───────────────────────────────────────── */
/* ── Comparison：单屏无滚动 ─────────────────────────────────── */
#scene-comparison.scene {
  overflow: hidden !important;
  align-items: stretch;
}
#scene-comparison .cmp-shell {
  flex: 1;
  min-height: 0;
  position: relative;
  width: 100%;
  max-width: min(96vw, 1800px);
  margin: 0 auto;
  padding: var(--scene-shell-pad-top) clamp(12px, 1.5vw, 28px) clamp(72px, 8vh, 100px);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  height: 100%;
  max-height: 100vh;
}
#scene-comparison .cmp-content {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  width: 100%;
  align-items: stretch;
}
#scene-comparison .cmp-head {
  flex-shrink: 0;
}
#scene-comparison .cmp-title {
  font-size: clamp(18px, 2.2vw, 44px) !important;
  margin-bottom: clamp(4px, 0.5vw, 10px);
}
#scene-comparison .scene-tag {
  margin-bottom: clamp(4px, 0.5vw, 10px);
}
.cmp-model-banner {
  font-size: clamp(10px, 0.95vw, 14px);
  color: rgba(180, 210, 230, 0.85);
  line-height: 1.45;
  max-width: min(92vw, 1100px);
  margin: 0 auto;
  padding: clamp(6px, 0.6vw, 10px) clamp(10px, 1vw, 16px);
  border: 1px solid rgba(72, 143, 255, 0.25);
  border-radius: 8px;
  background: rgba(72, 143, 255, 0.06);
}

.cmp-content {
  display: flex; flex-direction: column; align-items: center;
  padding: 0 clamp(20px, 2vw, 48px) clamp(60px, 5vw, 100px);
  width: 100%;
  max-width: clamp(900px, 78vw, 1700px);
  margin: auto;
}

.cmp-body {
  display: flex; align-items: flex-start; gap: 0;
  width: 100%;
  margin-bottom: clamp(28px, 2.5vw, 52px);
}

.cmp-side {
  flex: 1; display: flex; flex-direction: column;
  gap: clamp(10px, 1vw, 22px); min-width: 0;
}

.cmp-label {
  font-size: clamp(20px, 1.8vw, 38px);
  font-weight: 700;
  margin-bottom: clamp(10px, 1vw, 20px);
  padding-bottom: clamp(6px, 0.6vw, 14px);
  border-bottom: 1px solid var(--border);
  letter-spacing: 2px;
}
.cmp-label-left  { color: var(--mute); text-align: right; }
.cmp-label-right { color: var(--accent); }
.cmp-left  { text-align: right; padding-right: clamp(12px, 1.2vw, 28px); }
.cmp-right { padding-left: clamp(12px, 1.2vw, 28px); }

.cmp-item {
  display: flex; align-items: center; gap: clamp(8px, 0.8vw, 16px);
  font-size: clamp(15px, 1.3vw, 26px);
  padding: clamp(10px, 1vw, 22px) clamp(14px, 1.3vw, 28px);
  border-radius: clamp(6px, 0.5vw, 12px);
  transition: background 0.2s;
}
.cmp-left .cmp-item {
  justify-content: flex-end;
  color: var(--mute);
  background: rgba(107, 122, 141, 0.06);
  border: 1px solid rgba(107, 122, 141, 0.1);
}
.cmp-right .cmp-item {
  color: var(--text-hi);
  background: rgba(72, 143, 255, 0.08);
  border: 1px solid rgba(72, 143, 255, 0.18);
}
.cmp-right .cmp-item:hover { background: rgba(72, 143, 255, 0.12); box-shadow: var(--glow); }

.cmp-icon { font-size: clamp(16px, 1.4vw, 28px); flex-shrink: 0; }
.cmp-left .cmp-icon  { color: rgba(107, 122, 141, 0.5); order: 1; }
.cmp-right .cmp-icon { color: var(--accent); }

.cmp-divider {
  display: flex; flex-direction: column; align-items: center;
  justify-content: center;
  padding: 0 clamp(4px, 0.4vw, 10px);
  position: relative;
  width: clamp(36px, 3vw, 70px);
  flex-shrink: 0;
}
.cmp-divider-line {
  width: 2px;
  height: clamp(240px, 22vw, 480px);
  background: linear-gradient(180deg, var(--mute), var(--accent));
  transform-origin: top center; border-radius: 2px;
}
.cmp-vs {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font: 700 clamp(12px, 1vw, 20px)/1 var(--font-mono);
  color: var(--accent); background: var(--bg);
  padding: clamp(6px, 0.5vw, 12px) clamp(8px, 0.7vw, 14px);
  border: 1px solid var(--border); border-radius: 4px;
  letter-spacing: 2px;
}

.cmp-rows {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(4px, 0.55vh, 10px);
  width: 100%;
  margin-bottom: clamp(6px, 1vh, 14px);
}
#scene-comparison .cmp-rows {
  gap: clamp(3px, 0.45vh, 8px);
}
.cmp-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(72px, 9vw, 120px) minmax(0, 1fr);
  align-items: stretch;
  gap: clamp(6px, 0.8vw, 14px);
  width: 100%;
  min-height: 0;
  flex: 1;
}
.cmp-cell--left, .cmp-cell--right {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  min-width: 0;
}
.cmp-problem {
  font-size: clamp(11px, 1.05vw, 16px);
  color: var(--mute);
  text-align: right;
  line-height: 1.35;
  padding: clamp(4px, 0.45vw, 8px) clamp(6px, 0.6vw, 10px);
  background: rgba(107, 122, 141, 0.06);
  border: 1px solid rgba(107, 122, 141, 0.12);
  border-radius: clamp(4px, 0.4vw, 8px);
}
.cmp-metric {
  font-size: clamp(9px, 0.78vw, 12px);
  line-height: 1.3;
  opacity: 0.88;
}
.cmp-metric--left { color: rgba(180, 160, 150, 0.95); text-align: right; }
.cmp-metric--right {
  color: rgba(120, 190, 255, 0.9);
  text-align: left;
}
.cmp-visual {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  aspect-ratio: 1;
  margin: 0 auto;
  border-radius: clamp(6px, 0.55vw, 10px);
  border: 1px solid rgba(72, 143, 255, 0.25);
  background: rgba(8, 14, 24, 0.65);
  box-shadow: 0 0 16px rgba(72, 143, 255, 0.1);
  overflow: hidden;
}
.cmp-canvas {
  display: block;
  width: 100%;
  height: 100%;
}
.cmp-solution {
  font-size: clamp(11px, 1.05vw, 16px);
  color: var(--text-hi);
  text-align: left;
  line-height: 1.35;
  padding: clamp(4px, 0.45vw, 8px) clamp(6px, 0.6vw, 10px);
  background: linear-gradient(135deg, rgba(72, 143, 255, 0.08), rgba(139, 92, 246, 0.06));
  border: 1px solid rgba(139, 92, 246, 0.22);
  border-radius: clamp(4px, 0.4vw, 8px);
  box-shadow: 0 0 12px rgba(72, 143, 255, 0.06);
}
#scene-comparison .cmp-conclusion {
  flex-shrink: 0;
  margin-top: auto;
  padding-top: clamp(4px, 0.6vh, 10px);
}
.cmp-conclusion {
  text-align: center;
  max-width: clamp(520px, 58vw, 1100px);
  margin-left: auto;
  margin-right: auto;
}
.cmp-conclusion p {
  font-size: clamp(12px, 1.25vw, 22px);
  font-weight: 600;
  color: var(--accent);
  text-shadow: 0 0 24px rgba(72, 143, 255, 0.28);
  letter-spacing: 1px;
  line-height: 1.35;
}
html[data-theme="comparison"] .cmp-conclusion p {
  background: linear-gradient(90deg, #488fff, #a78bfa);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: none;
  filter: drop-shadow(0 0 18px rgba(72, 143, 255, 0.35));
}

/* ── Architecture Scene ─────────────────────────────────────── */
.arch-content {
  display: flex; flex-direction: column; align-items: center;
  position: relative;
  min-height: 100%;
  padding: var(--scene-shell-pad-top) clamp(20px, 2vw, 48px) clamp(60px, 5vw, 100px);
  width: 100%;
  max-width: clamp(1000px, 85vw, 1900px);
  margin: 0 auto;
  box-sizing: border-box;
}

.arch-body {
  display: flex; align-items: flex-start;
  gap: clamp(28px, 2.8vw, 68px);
  width: 100%;
}

.arch-sidebar {
  width: clamp(120px, 11vw, 240px);
  flex-shrink: 0;
  padding-top: clamp(20px, 2vw, 44px);
}
.arch-sidebar-label {
  font: 700 clamp(13px, 1.1vw, 22px)/1.2 var(--font-mono);
  color: var(--accent); letter-spacing: 1px;
  margin-bottom: clamp(10px, 1vw, 20px);
  text-transform: uppercase;
}
.arch-pills { display: flex; flex-direction: column; gap: clamp(6px, 0.6vw, 14px); }
.arch-pill {
  display: block;
  font: 600 clamp(13px, 1.1vw, 22px)/1 var(--font-mono);
  color: var(--text);
  border: 1px solid var(--border);
  padding: clamp(8px, 0.7vw, 16px) clamp(12px, 1.1vw, 22px);
  border-radius: 6px; background: rgba(72, 143, 255, 0.05);
  text-align: center;
}
.arch-pill--ai {
  display: flex;
  border-color: rgba(72, 143, 255, 0.2);
  background: rgba(72, 143, 255, 0.04);
  color: var(--accent2);
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  padding: clamp(10px, 0.8vw, 16px) clamp(12px, 1vw, 20px);
  text-align: left;
  font-size: inherit;
}
.arch-pill--highlight {
  border-color: rgba(52, 211, 153, 0.3);
  background: linear-gradient(135deg, rgba(52, 211, 153, 0.08), rgba(72, 143, 255, 0.06));
  box-shadow: 0 0 14px rgba(52, 211, 153, 0.1);
}
.arch-pill-name {
  font: 700 clamp(13px, 1.05vw, 20px)/1.2 var(--font-mono);
  color: var(--text-hi);
}
.arch-pill-vendor {
  font-size: clamp(11px, 0.85vw, 16px);
  color: var(--mute);
}
.arch-pill-stat {
  font: 700 clamp(11px, 0.85vw, 16px)/1 var(--font-mono);
  color: #34d399;
  margin-top: 2px;
}
.arch-sidebar-badge {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  padding: 4px 12px;
  border-radius: 999px;
  border: 1px solid rgba(52, 211, 153, 0.28);
  background: rgba(52, 211, 153, 0.08);
  color: #34d399;
  font: 700 clamp(11px, 0.88vw, 15px)/1 var(--font-mono);
  letter-spacing: 0.5px;
  margin-bottom: clamp(8px, 0.7vw, 14px);
}
.arch-pills--ai {
  gap: clamp(8px, 0.7vw, 14px);
}

.arch-domestic-layer {
  width: 100%;
  margin-top: clamp(16px, 1.4vw, 28px);
  padding: clamp(14px, 1.2vw, 22px) clamp(20px, 1.6vw, 32px);
  border: 1px solid rgba(52, 211, 153, 0.18);
  border-radius: clamp(14px, 1.1vw, 22px);
  background:
    radial-gradient(ellipse at 50% 0%, rgba(52, 211, 153, 0.06), transparent 60%),
    rgba(8, 14, 24, 0.65);
  backdrop-filter: blur(12px);
}
.arch-domestic-label {
  font: 700 clamp(14px, 1.1vw, 22px)/1 var(--font-mono);
  color: #34d399;
  letter-spacing: 1.5px;
  text-align: center;
  margin-bottom: clamp(12px, 1vw, 20px);
  text-transform: uppercase;
}
.arch-domestic-flow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(6px, 0.6vw, 12px);
  flex-wrap: wrap;
}
.arch-domestic-node {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: clamp(10px, 0.8vw, 16px) clamp(14px, 1.1vw, 22px);
  border: 1px solid rgba(52, 211, 153, 0.2);
  border-radius: 14px;
  background: rgba(52, 211, 153, 0.04);
  min-width: clamp(120px, 10vw, 200px);
}
.arch-domestic-title {
  font: 700 clamp(14px, 1.15vw, 22px)/1.2 var(--font-cn);
  color: var(--text-hi);
  margin-bottom: 4px;
}
.arch-domestic-desc {
  font-size: clamp(12px, 0.95vw, 18px);
  color: var(--mute);
}
.arch-domestic-arrow {
  color: rgba(52, 211, 153, 0.5);
  font-size: clamp(14px, 1.1vw, 22px);
  flex-shrink: 0;
}

.arch-pipeline {
  flex: 1; display: flex; align-items: flex-start; justify-content: center;
  gap: 0; position: relative;
  padding: clamp(18px, 1.4vw, 28px) 0 clamp(30px, 2vw, 48px);
  flex-wrap: wrap;
}

.arch-node {
  display: flex; flex-direction: column; align-items: center;
  width: clamp(118px, 10vw, 220px);
  text-align: center;
}
.arch-node-circle {
  width: clamp(56px, 5.2vw, 116px);
  height: clamp(56px, 5.2vw, 116px);
  border-radius: 50%;
  border: 2px solid var(--accent);
  background:
    radial-gradient(circle at 35% 30%, rgba(72, 143, 255, 0.18), transparent 42%),
    rgba(139, 92, 246, 0.05);
  display: flex; align-items: center; justify-content: center;
  font: 700 clamp(18px, 1.55vw, 30px)/1 var(--font-mono);
  letter-spacing: 1px;
  color: var(--accent);
  box-shadow: 0 0 20px rgba(72, 143, 255, 0.16);
  margin-bottom: clamp(8px, 0.8vw, 18px);
  transition: transform 0.3s, box-shadow 0.3s;
}
.arch-node:hover .arch-node-circle { transform: scale(1.1); box-shadow: var(--glow-lg); }
.arch-node-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2ch;
}
.arch-node-title {
  font-size: clamp(15px, 1.3vw, 28px);
  font-weight: 700; color: var(--text-hi);
  margin-bottom: clamp(4px, 0.4vw, 10px);
}
.arch-node-desc {
  font-size: clamp(11px, 0.95vw, 19px);
  color: var(--mute); line-height: 1.5;
  max-width: clamp(100px, 9vw, 200px);
}

.arch-conn {
  display: flex; align-items: center;
  width: clamp(28px, 2.8vw, 56px);
  margin-top: clamp(16px, 1.6vw, 36px);
  transform-origin: left center;
}
.arch-conn-track {
  position: relative;
  flex: 1;
  height: 2px;
  align-self: center;
}
.arch-conn-line {
  position: absolute;
  inset: 0;
  border-radius: 1px;
  background: linear-gradient(90deg, var(--accent2), rgba(139, 92, 246, 0.28));
}
.arch-conn-dot {
  position: absolute;
  top: 50%;
  left: 0;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 10px var(--accent);
  animation: arch-particle-flow 2.2s linear infinite;
  pointer-events: none;
  transform: translate(-50%, -50%);
}
.arch-conn-dot--delay { animation-delay: 1.1s; }
@keyframes arch-particle-flow {
  0% { left: 0%; opacity: 0; transform: translate(-50%, -50%) scale(0.55); }
  12% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  88% { opacity: 1; }
  100% { left: 100%; opacity: 0; transform: translate(-50%, -50%) scale(0.55); }
}
.arch-conn-arrow { color: var(--accent); font-size: clamp(14px, 1.2vw, 24px); margin-left: -2px; flex-shrink: 0; }

.arch-feedback {
  position: absolute;
  bottom: clamp(-18px, -1.5vw, -30px);
  left: 50%; transform: translateX(-50%);
  width: 65%;
  height: clamp(40px, 4vw, 80px);
  opacity: 0;
}

/* ── Effects Scene（02 能力对比，单屏） ─────────────────────── */
#scene-effects.scene {
  overflow: hidden !important;
  align-items: stretch;
}
.efx-shell {
  flex: 1;
  min-height: 0;
  position: relative;
  width: 100%;
  max-width: min(96vw, 1680px);
  margin: 0 auto;
  padding: var(--scene-shell-pad-top) clamp(14px, 1.5vw, 32px) clamp(72px, 8vh, 100px);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  height: 100%;
  max-height: 100vh;
}
.efx-head { flex-shrink: 0; }
.efx-title { font-size: clamp(20px, 2.4vw, 48px) !important; }
.efx-main {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 0.9fr);
  gap: clamp(10px, 1.2vw, 20px);
  align-items: stretch;
}
@media (max-width: 1100px) {
  .efx-main { grid-template-columns: 1fr; grid-auto-rows: minmax(0, auto); }
}
.efx-panel {
  background: rgba(10, 18, 28, 0.55);
  border: 1px solid rgba(56, 189, 248, 0.15);
  border-radius: clamp(10px, 0.8vw, 16px);
  padding: clamp(12px, 1vw, 18px);
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.efx-kpi-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom: 10px;
}
.efx-kpi {
  text-align: center;
  padding: clamp(8px, 0.7vw, 12px) 6px;
  background: rgba(0, 0, 0, 0.2);
  border-radius: 10px;
  border: 1px solid rgba(96, 165, 250, 0.12);
}
.efx-kpi-label { font-size: clamp(13px, 1vw, 19px); color: var(--mute); margin-bottom: 4px; }
.efx-kpi-val {
  font: 800 clamp(26px, 2.8vw, 48px)/1 var(--font-mono);
  background: linear-gradient(135deg, #488fff, #a78bfa);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  display: block;
}
.efx-kpi-unit { font-size: clamp(13px, 1vw, 19px); color: rgba(180, 210, 230, 0.7); }
.efx-kpi-sub {
  display: block;
  font-size: clamp(11px, 0.85vw, 15px);
  color: rgba(150, 175, 200, 0.65);
  margin-top: 3px;
}
.efx-kpi-extra {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 8px;
  font-size: clamp(14px, 1.1vw, 20px);
  color: rgba(220, 235, 250, 0.82);
  padding: clamp(6px, 0.5vw, 10px) 0;
  border-top: 1px solid rgba(72, 143, 255, 0.12);
  border-bottom: 1px solid rgba(72, 143, 255, 0.12);
  margin-bottom: 8px;
}
.efx-kpi-extra strong {
  font: 800 clamp(24px, 2.4vw, 40px)/1 var(--font-mono);
  color: #a78bfa;
}
.efx-kpi-extra em { font-style: normal; color: #a78bfa; font-weight: 700; }
.efx-venn-wrap {
  flex: 1;
  min-height: clamp(200px, 26vh, 480px);
  position: relative;
}
.efx-venn-wrap canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.efx-subh {
  font-size: clamp(15px, 1.2vw, 24px);
  color: var(--text-hi);
  margin: 0;
  flex-shrink: 0;
}
.efx-bars-wrap {
  position: relative;
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.efx-bars-wrap::before,
.efx-bars-wrap::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  height: 24px;
  pointer-events: none;
  z-index: 2;
}
.efx-bars-wrap::before {
  top: 0;
  background: linear-gradient(to bottom, rgba(10, 18, 28, 0.75), transparent);
}
.efx-bars-wrap::after {
  bottom: 0;
  background: linear-gradient(to top, rgba(10, 18, 28, 0.75), transparent);
}
.efx-bars-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
  flex-shrink: 0;
}
.efx-bars-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  align-items: center;
}
.efx-legend {
  font-size: clamp(10px, 0.82vw, 14px);
  display: flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}
.efx-legend::before {
  content: '';
  width: 10px;
  height: 4px;
  border-radius: 2px;
}
.efx-legend--vm { color: rgba(96, 165, 250, 0.85); }
.efx-legend--vm::before { background: linear-gradient(90deg, #488fff, #a78bfa); }
.efx-legend--qw { color: rgba(167, 139, 250, 0.8); }
.efx-legend--qw::before { background: rgba(167, 139, 250, 0.7); }
.efx-legend--cp { color: rgba(251, 191, 36, 0.7); }
.efx-legend--cp::before { background: rgba(251, 191, 36, 0.7); }
.efx-bars {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.efx-bars::-webkit-scrollbar { display: none; }
.efx-bar-row label {
  display: block;
  font-size: clamp(12px, 0.92vw, 17px);
  color: var(--mute);
  margin-bottom: 3px;
}
.efx-bar-pair {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 1px;
}
.efx-bar-track {
  flex: 1;
  height: clamp(6px, 0.5vw, 9px);
  background: rgba(0, 0, 0, 0.3);
  border-radius: 4px;
  overflow: hidden;
}
.efx-bar-track--cp {
  height: clamp(4px, 0.35vw, 6px);
}
.efx-bar-vm {
  display: block;
  height: 100%;
  border-radius: 4px;
  transform-origin: left center;
  transform: scaleX(0);
  background: linear-gradient(90deg, #488fff, #a78bfa);
}
.efx-bar-qw {
  display: block;
  height: 100%;
  border-radius: 4px;
  transform-origin: left center;
  transform: scaleX(0);
  background: rgba(167, 139, 250, 0.65);
}
.efx-bar-track--qw {
  height: clamp(5px, 0.4vw, 7px);
}
.efx-bar-cp {
  display: block;
  height: 100%;
  border-radius: 4px;
  transform-origin: left center;
  transform: scaleX(0);
  background: rgba(251, 191, 36, 0.6);
}
.efx-bar-val--qw { color: rgba(167, 139, 250, 0.8); }
.efx-bar-val {
  font: 700 clamp(11px, 0.88vw, 16px)/1 var(--font-mono);
  min-width: 34px;
  text-align: right;
}
.efx-bar-val--vm { color: rgba(96, 165, 250, 0.85); }
.efx-bar-val--cp { color: rgba(251, 191, 36, 0.6); }
.efx-conclusion-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.efx-conclusion {
  --conc-accent: #60a5fa;
  padding: clamp(10px, 0.8vw, 14px) clamp(10px, 0.9vw, 14px);
  background: rgba(0, 0, 0, 0.2);
  border-radius: 10px;
  border-left: 3px solid var(--conc-accent);
}
.efx-conclusion h4 {
  font-size: clamp(14px, 1.1vw, 20px);
  color: var(--conc-accent);
  margin-bottom: 4px;
  font-weight: 700;
}
.efx-conclusion p { font-size: clamp(12px, 0.95vw, 17px); color: rgba(180, 200, 220, 0.8); line-height: 1.5; }
.efx-sampling {
  display: flex;
  gap: 8px;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid rgba(72, 143, 255, 0.1);
  flex-shrink: 0;
}
.efx-samp-item {
  flex: 1;
  font-size: clamp(11px, 0.88vw, 15px);
  color: rgba(96, 165, 250, 0.75);
  padding: 5px 8px;
  border-radius: 6px;
  background: rgba(96, 165, 250, 0.06);
  border: 1px solid rgba(96, 165, 250, 0.1);
}
.efx-samp-item--qw {
  color: rgba(167, 139, 250, 0.75);
  background: rgba(167, 139, 250, 0.06);
  border-color: rgba(167, 139, 250, 0.1);
}
.efx-samp-item strong {
  font-family: var(--font-mono);
  font-weight: 700;
}
.efx-foot {
  flex-shrink: 0;
  text-align: center;
  font-size: clamp(10px, 0.8vw, 14px);
  color: rgba(120, 140, 160, 0.75);
  margin-top: 8px;
}

/* ── Demo Scene ─────────────────────────────────────────────── */
#scene-demo.scene {
  overflow: hidden !important;
  align-items: stretch;
}
.demo-content {
  --demo-stage-primary: #488fff;
  --demo-stage-secondary: #8b5cf6;
  --demo-stage-primary-soft: rgba(72, 143, 255, 0.14);
  --demo-stage-primary-mid: rgba(72, 143, 255, 0.34);
  --demo-stage-secondary-soft: rgba(139, 92, 246, 0.14);
  --demo-stage-border: rgba(72, 143, 255, 0.24);
  --demo-stage-shadow: rgba(72, 143, 255, 0.18);
  --demo-stage-line: rgba(72, 143, 255, 0.18);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: clamp(12px, 1vw, 20px);
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: var(--scene-shell-pad-top) clamp(14px, 1.4vw, 26px) clamp(56px, 6vh, 80px);
  max-width: min(98vw, 1920px);
  margin: 0 auto;
}
.demo-hero {
  width: 100%;
  max-width: min(84vw, 1180px);
  margin: 0 auto;
}
.demo-head {
  position: relative;
  min-height: clamp(112px, 10vw, 150px);
  margin: 0;
  padding: calc(var(--scene-header-tag-top) + clamp(34px, 2.8vw, 46px)) clamp(6px, 0.6vw, 10px) 0;
  text-align: center;
}
.demo-head .demo-tag {
  position: absolute;
  top: var(--scene-header-tag-top);
  left: 50%;
  transform: translateX(-50%);
}
.demo-title {
  font-size: clamp(24px, 2.4vw, 44px) !important;
  line-height: 1.14;
  letter-spacing: clamp(0.8px, 0.1vw, 2px);
}
.demo-repo-line {
  margin: clamp(8px, 0.7vw, 12px) auto 0;
  font-size: clamp(14px, 1.05vw, 20px);
  color: rgba(196, 232, 248, 0.78);
  letter-spacing: 0.4px;
  max-width: min(76vw, 980px);
}
.demo-pause-btn {
  font: 600 clamp(13px, 1vw, 17px)/1 var(--font-mono);
  color: var(--demo-stage-primary);
  background: var(--demo-stage-primary-soft);
  border: 1px solid var(--demo-stage-primary-mid);
  border-radius: 8px;
  padding: 7px 14px;
  cursor: pointer;
  transition: background 0.2s, box-shadow 0.2s;
}
.demo-pause-btn:hover { background: var(--demo-stage-secondary-soft); box-shadow: 0 0 16px var(--demo-stage-shadow); }
.demo-pause-btn.is-paused { border-color: rgba(167, 139, 250, 0.55); color: #a78bfa; }
.demo-pause-btn--panel {
  padding: 7px 14px;
  font-size: clamp(12px, 0.92vw, 16px);
}

.demo-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(300px, 24vw, 388px);
  gap: clamp(14px, 1.2vw, 24px);
  min-height: 0;
  height: 100%;
  align-items: stretch;
}

.demo-sidebar {
  min-height: 0;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: clamp(10px, 0.8vw, 14px);
}

.demo-canvas-wrap {
  position: relative;
  border: 1px solid var(--border);
  border-radius: clamp(12px, 1vw, 22px);
  background:
    radial-gradient(circle at 18% 18%, rgba(88, 215, 255, 0.1), transparent 34%),
    radial-gradient(circle at 84% 72%, rgba(251, 191, 36, 0.08), transparent 28%),
    rgba(3, 7, 15, 0.72);
  box-shadow: inset 0 0 0 1px rgba(88, 215, 255, 0.06);
  overflow: hidden;
  min-height: clamp(420px, 56vh, 760px);
  height: 100%;
}
#demo-canvas { position: absolute; inset: 0; width: 100%; height: 100%; }

.demo-panel {
  position: relative;
  z-index: 1;
  width: 100%;
  min-height: 0;
  height: 100%;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(15, 24, 40, 0.92), rgba(6, 11, 22, 0.9));
  border: 1px solid var(--demo-stage-border);
  border-radius: clamp(12px, 0.8vw, 18px);
  padding: clamp(10px, 0.8vw, 14px) clamp(14px, 1.1vw, 18px);
  backdrop-filter: blur(18px);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28), 0 0 24px var(--demo-stage-shadow);
  display: flex;
  flex-direction: column;
}
.demo-panel::before {
  content: '';
  position: absolute;
  inset: 0 0 auto 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--demo-stage-primary-mid), transparent);
}
.demo-panel-head {
  position: relative;
  z-index: 2;
  display: flex;
  justify-content: flex-end;
  margin-bottom: clamp(10px, 0.8vw, 14px);
  flex-shrink: 0;
}
.demo-panel-body {
  position: relative;
  min-height: 0;
  height: 100%;
  padding-right: 0;
  overflow: auto;
}
.demo-phase-top {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: 12px;
  margin-bottom: 12px;
}
.demo-phase-index {
  width: clamp(38px, 2.8vw, 48px);
  height: clamp(38px, 2.8vw, 48px);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  border: 1px solid var(--demo-stage-primary-mid);
  background: linear-gradient(180deg, var(--demo-stage-primary-soft), var(--demo-stage-secondary-soft));
  font: 700 clamp(12px, 0.95vw, 15px)/1 var(--font-mono);
  color: rgba(236, 248, 255, 0.98);
  letter-spacing: 1px;
  box-shadow: 0 0 18px var(--demo-stage-shadow);
}
.demo-phase-main {
  min-width: 0;
}
.demo-phase-label {
  font-size: clamp(17px, 1.2vw, 24px);
  font-weight: 700;
  color: var(--text-hi);
  line-height: 1.2;
  margin-bottom: 6px;
}
.demo-phase-role {
  display: inline-flex;
  align-items: center;
  min-height: clamp(24px, 1.8vw, 30px);
  padding: 0 clamp(10px, 0.8vw, 14px);
  border-radius: 999px;
  border: 1px solid var(--demo-stage-primary-mid);
  background: var(--demo-stage-primary-soft);
  font: 600 clamp(11px, 0.88vw, 15px)/1 var(--font-mono);
  color: rgba(232, 246, 255, 0.96);
  letter-spacing: 0.8px;
}
.demo-phase-model {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
  padding: 4px 12px;
  border-radius: 999px;
  border: 1px solid rgba(52, 211, 153, 0.28);
  background: rgba(52, 211, 153, 0.08);
  font: 700 clamp(11px, 0.88vw, 15px)/1 var(--font-mono);
  color: #34d399;
  letter-spacing: 0.5px;
}
.demo-phase-model-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #34d399;
  box-shadow: 0 0 8px rgba(52, 211, 153, 0.5);
  animation: model-pulse 1.5s ease-in-out infinite;
}
@keyframes model-pulse {
  0%, 100% { opacity: 0.5; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.2); }
}
.demo-phase-desc {
  font-size: clamp(13px, 1vw, 18px);
  color: rgba(184, 206, 226, 0.78);
  line-height: 1.65;
  padding-top: 8px;
  border-top: 1px solid var(--demo-stage-line);
}

.demo-progress {
  display: flex;
  flex-direction: column;
  gap: clamp(6px, 0.55vw, 10px);
  margin-top: 0;
  padding: 0;
  flex-shrink: 0;
}
.demo-step {
  display: flex; align-items: center; gap: clamp(6px, 0.5vw, 10px);
  width: 100%;
  justify-content: flex-start;
  font: 600 clamp(12px, 0.92vw, 16px)/1.2 var(--font-mono);
  color: rgba(166, 190, 214, 0.58);
  padding: clamp(9px, 0.7vw, 13px) clamp(12px, 1vw, 16px);
  border: 1px solid rgba(107, 122, 141, 0.1);
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(10, 18, 28, 0.6), var(--step-primary-soft));
  transition: all 0.3s;
  cursor: pointer;
  font-family: inherit;
  opacity: 0.78;
}
.demo-step:hover {
  border-color: var(--step-primary-mid);
  color: rgba(220, 236, 252, 0.92);
  opacity: 0.92;
}
.demo-step.is-active {
  color: rgba(242, 250, 255, 0.98);
  border-color: var(--step-primary-mid);
  background: linear-gradient(135deg, var(--step-primary-soft), var(--step-secondary-soft));
  box-shadow: 0 0 24px var(--step-glow);
  opacity: 1;
}
.demo-step.is-done {
  color: var(--step-text);
  border-color: var(--step-primary-mid);
  background: linear-gradient(135deg, rgba(10, 18, 28, 0.46), var(--step-primary-soft));
  opacity: 0.54;
}

.demo-step-dot {
  width: clamp(6px, 0.5vw, 12px); height: clamp(6px, 0.5vw, 12px);
  border-radius: 50%;
  background: var(--step-dot-dim);
  transition: background 0.3s, box-shadow 0.3s;
  flex-shrink: 0;
}
.demo-step.is-active .demo-step-dot { background: var(--step-primary); box-shadow: 0 0 10px var(--step-glow); }
.demo-step.is-done .demo-step-dot { background: var(--step-primary); box-shadow: 0 0 8px var(--step-glow); }
.demo-step span {
  display: block;
  white-space: normal;
  text-align: left;
}

/* ── Mobile ─────────────────────────────────────────────────── */
@media (max-width: 768px) {
  :root {
    --scene-shell-pad-top: 18px;
    --scene-header-tag-top: 12px;
    --scene-header-title-gap: 32px;
  }
  #scene-crisis.scene { overflow-y: auto !important; }
  .crisis-content { gap: 14px; padding: 86px 14px 20px; }
  .crisis-duel { grid-template-columns: 1fr; gap: 12px; }
  .crisis-vs { width: auto; padding: 4px 0; }
  .cmp-body { flex-direction: column; gap: 16px; }
  .cmp-left, .cmp-right { text-align: left; padding: 0; }
  .cmp-left .cmp-item { justify-content: flex-start; }
  .cmp-left .cmp-icon { order: 0; }
  .cmp-divider { flex-direction: row; width: 100%; padding: 6px 0; }
  .cmp-divider-line { width: 100%; height: 2px; }
  .cmp-row {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .cmp-problem { text-align: left; }
  .cmp-visual { max-height: 160px; width: min(100%, 200px); }
  .arch-body { flex-direction: column; align-items: center; }
  .arch-sidebar { width: 100%; padding-top: 0; }
  .arch-pills { flex-direction: row; flex-wrap: wrap; }
  .arch-pipeline { flex-wrap: wrap; justify-content: center; gap: 6px; }
  .demo-head { text-align: center; }
  .demo-repo-line { text-align: center; }
  .demo-panel {
    justify-self: stretch;
    width: 100%;
    min-height: 0;
    max-height: none;
    margin-top: 0;
  }
  .demo-panel-head {
    position: static;
    margin-bottom: 10px;
  }
  .demo-panel-body {
    height: auto;
    padding-right: 0;
  }
  .demo-canvas-wrap { min-height: 320px; }
  .demo-hero { max-width: 100%; }
  .demo-head {
    min-height: 108px;
    padding-top: calc(var(--scene-header-tag-top) + 34px);
  }
  .demo-layout {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .demo-sidebar {
    grid-template-rows: auto auto;
  }
  .demo-progress {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #scene-topbar {
    padding: 10px 12px;
    gap: 8px;
  }
  .tb-nav {
    position: static;
    transform: none;
    order: 3;
    width: 100%;
    max-width: none;
    justify-content: flex-start;
    overflow-x: auto;
    flex-wrap: nowrap;
    padding-bottom: 2px;
  }
  .tb-actions {
    gap: 8px;
  }
  .tb-action {
    padding: 6px 12px;
    font-size: 11px;
  }
  .tb-tab {
    flex: 0 0 auto;
  }
}
