/* ============================================================
   CRYPTO VISUALIZATION LAB — hub v3 "Fable remix"
   Giant editorial index + cursor-chasing live previews
   ============================================================ */
:root {
  --void:        #07070a;
  --void-2:      #0c0c12;
  --ink:         #ecebf1;
  --ink-soft:    rgba(236, 235, 241, 0.70);
  --ink-mute:    rgba(236, 235, 241, 0.42);
  --ink-faint:   rgba(236, 235, 241, 0.16);
  --line:        rgba(255, 255, 255, 0.08);
  --line-soft:   rgba(255, 255, 255, 0.045);
  --line-strong: rgba(255, 255, 255, 0.20);
  --glass:       rgba(13, 13, 19, 0.55);

  /* per-theme signatures */
  --c-galaxy:     #f7931a;  --c-galaxy-2:   #ffd86b;
  --c-prix:       #ef4444;  --c-prix-2:     #facc15;
  --c-bubbles:    #34e0a1;  --c-bubbles-2:  #ff5470;
  --c-sentiment:  #00ff88;  --c-sentiment-2:#ff3866;
  --c-matrix:     #00ff66;
  --c-city:       #ff007a;  --c-city-2:     #00f0ff;
  --c-pulse:      #22d3ee;  --c-pulse-2:    #a78bfa;
  --c-ichimoku:   #e0b24a;  --c-ichimoku-2: #36b285;

  --btc: #f7931a;
  --eth: #627eea;

  --f-display: 'Unbounded', 'Helvetica Neue', sans-serif;
  --f-serif:   'Instrument Serif', Georgia, serif;
  --f-body:    'Manrope', -apple-system, system-ui, sans-serif;
  --f-mono:    'JetBrains Mono', 'SFMono-Regular', monospace;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body { background: var(--void); color: var(--ink); }
body {
  font-family: var(--f-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overscroll-behavior-y: none;
  min-height: 100vh;
  overflow-x: hidden;
}
body.no-webgl {
  background:
    radial-gradient(ellipse at 30% 20%, rgba(40,50,70,0.5), transparent 60%),
    radial-gradient(ellipse at 80% 80%, rgba(70,30,60,0.4), transparent 60%),
    var(--void);
}
::selection { background: rgba(122, 162, 247, 0.3); color: #fff; }

/* layers */
#bg-shader { position: fixed; inset: 0; z-index: 0; display: block; }
.grain {
  position: fixed; inset: 0; z-index: 1; pointer-events: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.08 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  opacity: 0.5; mix-blend-mode: overlay;
}
#tint {
  position: fixed; inset: 0; z-index: 1; pointer-events: none;
  opacity: 0; transition: opacity .5s ease;
}
#tint.on { opacity: 1; }

/* custom cursor ring (fine pointers only) */
#cursor {
  position: fixed; left: 0; top: 0; z-index: 90;
  width: 30px; height: 30px; margin: -15px 0 0 -15px;
  border: 1.5px solid rgba(236,235,241,0.9); border-radius: 50%;
  pointer-events: none; mix-blend-mode: difference;
  transition: width .25s ease, height .25s ease, margin .25s ease, opacity .3s;
  opacity: 0;
}
#cursor.live { opacity: 1; }
#cursor.big { width: 58px; height: 58px; margin: -29px 0 0 -29px; }
@media (pointer: coarse) { #cursor { display: none; } }

main { position: relative; z-index: 2; max-width: 1340px; margin: 0 auto; padding: 24px 32px 90px; }

/* ─────────── TOP BAR ─────────── */
.topbar {
  position: sticky; top: 0; z-index: 50;
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  padding: 14px 0; margin-bottom: 6px;
}
.topbar::before {
  content: ''; position: absolute; inset: -24px 0 0; z-index: -1;
  background: linear-gradient(180deg, rgba(7,7,10,0.92) 30%, rgba(7,7,10,0));
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  mask: linear-gradient(180deg, #000 60%, transparent);
  -webkit-mask: linear-gradient(180deg, #000 60%, transparent);
  pointer-events: none;
}
.brand {
  display: flex; align-items: center; gap: 12px;
  font-family: var(--f-mono); font-size: 12px;
  letter-spacing: 0.20em; text-transform: uppercase; color: var(--ink-soft);
}
.brand-dot {
  width: 10px; height: 10px; border-radius: 50%; background: var(--ink);
  box-shadow: 0 0 0 3px rgba(236,235,241,0.06), 0 0 14px rgba(236,235,241,0.4);
  animation: brandPulse 2.4s ease-in-out infinite;
}
@keyframes brandPulse { 0%,100% { transform: scale(1); opacity: .9; } 50% { transform: scale(0.78); opacity: .6; } }
.brand strong { color: var(--ink); font-weight: 600; }

.topbar-right { display: flex; align-items: center; gap: 12px; }
.lang-toggle {
  display: inline-flex; gap: 3px; padding: 5px;
  background: var(--glass); border: 1px solid var(--line); border-radius: 999px;
  backdrop-filter: blur(14px) saturate(140%); -webkit-backdrop-filter: blur(14px) saturate(140%);
}
.lang-toggle button {
  appearance: none; border: 0; background: transparent; cursor: pointer;
  font-family: var(--f-mono); font-size: 11px; font-weight: 600; letter-spacing: 0.08em;
  color: var(--ink-mute); padding: 7px 11px; border-radius: 999px;
  transition: color .2s, background .2s;
}
.lang-toggle button:hover { color: var(--ink-soft); }
.lang-toggle button.on { color: var(--ink); background: rgba(255,255,255,0.10); }

.switch {
  display: flex; align-items: center; gap: 10px; padding: 8px 10px;
  background: var(--glass); border: 1px solid var(--line); border-radius: 999px;
  backdrop-filter: blur(14px) saturate(140%); -webkit-backdrop-filter: blur(14px) saturate(140%);
}
.switch-label {
  font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--ink-mute); padding: 0 6px 0 8px;
}
.swatch {
  appearance: none; border: 0; width: 36px; height: 24px; border-radius: 999px;
  cursor: pointer; position: relative; overflow: hidden;
  transition: transform .25s cubic-bezier(.2,0,.2,1), box-shadow .25s;
}
.swatch::after {
  content: ''; position: absolute; inset: 0; border-radius: inherit;
  border: 1px solid rgba(255,255,255,0.12); transition: border-color .25s;
}
.swatch:hover { transform: translateY(-1px); }
.swatch.is-active::after { border-color: rgba(255,255,255,0.7); }
.swatch.is-active { box-shadow: 0 0 0 2px rgba(255,255,255,0.18), 0 6px 24px rgba(0,0,0,0.5); }
.swatch[data-shader="plasma"]  { background: linear-gradient(135deg, #383846, #1c1c2a 45%, #2a2440 70%, #4a3a5e); }
.swatch[data-shader="voronoi"] { background: radial-gradient(circle at 30% 30%, #5b6478 0%, #1d2030 60%, #0b0c14 100%); }
.swatch[data-shader="nebula"]  { background: radial-gradient(circle at 60% 40%, #6a4a96 0%, #2a1448 50%, #07041a 100%); }

/* ─────────── HERO ─────────── */
.hero { padding: 96px 0 64px; position: relative; }
.hero-eyebrow {
  font-family: var(--f-mono); font-size: 11px; letter-spacing: 0.32em;
  text-transform: uppercase; color: var(--ink-mute); margin-bottom: 30px;
  display: flex; align-items: center; gap: 12px;
}
.hero-eyebrow::before { content: ''; width: 28px; height: 1px; background: var(--ink-faint); }
.hero h1 {
  font-family: var(--f-display); font-weight: 300;
  font-size: clamp(44px, 8.2vw, 124px); line-height: 0.96;
  letter-spacing: -0.035em; color: var(--ink); max-width: 15ch;
}
.hero h1 em {
  font-family: var(--f-serif); font-style: italic; font-weight: 400;
  background: linear-gradient(90deg, #ffd86b, #ff5470 32%, #b347ff 60%, #00f0ff);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.hero-row {
  margin-top: 44px; display: flex; align-items: flex-end; justify-content: space-between;
  gap: 32px; flex-wrap: wrap;
}
.hero-lead { font-size: 17px; line-height: 1.55; color: var(--ink-soft); max-width: 480px; text-wrap: pretty; }
.hero-lead em { font-family: var(--f-serif); font-size: 1.12em; }
.hero-stats { display: flex; gap: 34px; flex-wrap: wrap; }
.stat .num {
  font-family: var(--f-display); font-weight: 400; font-size: 30px; line-height: 1;
  color: var(--ink);
}
.stat .lab {
  font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--ink-mute); margin-top: 8px;
}
.stat .num.live { color: var(--c-bubbles); }
#clock { font-variant-numeric: tabular-nums; }

@media (prefers-reduced-motion: no-preference) {
  .hero-eyebrow, .hero h1, .hero-row { animation: riseIn .9s cubic-bezier(.2,.7,.2,1) both; }
  .hero h1 { animation-delay: .08s; }
  .hero-row { animation-delay: .2s; }
}
@keyframes riseIn { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }

/* ─────────── TICKER ─────────── */
.ticker {
  position: relative; width: 100vw; margin-left: calc(50% - 50vw);
  border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  background: rgba(9, 9, 13, 0.55);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  overflow: hidden; padding: 13px 0;
  -webkit-mask: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
  mask: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.ticker-track { display: flex; width: max-content; animation: marquee var(--dur, 46s) linear infinite; }
.ticker:hover .ticker-track { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(-50%); } }
.ticker-half { display: flex; align-items: center; gap: 30px; padding-right: 30px; }
.ti { display: inline-flex; align-items: baseline; gap: 9px; font-family: var(--f-mono); font-size: 12px; white-space: nowrap; }
.ti b { color: var(--ink); font-weight: 700; letter-spacing: 0.06em; }
.ti .tp { color: var(--ink-soft); }
.ti .tc { font-size: 11px; font-weight: 700; }
.ti .tc.up { color: #0ecb81; }
.ti .tc.dn { color: #f6465d; }
.tsep { color: var(--ink-faint); font-size: 10px; }

/* ─────────── SECTION HEADS ─────────── */
.section-head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 18px; flex-wrap: wrap;
  margin: 72px 0 10px; padding-bottom: 16px; border-bottom: 1px solid var(--line);
}
.section-head h2 {
  font-family: var(--f-mono); font-weight: 500; font-size: 12px;
  letter-spacing: 0.30em; text-transform: uppercase; color: var(--ink-soft);
  display: flex; align-items: baseline; gap: 12px;
}
.section-head h2 .idx { color: var(--ink-faint); letter-spacing: 0.1em; }
.section-head .desc { font-size: 13.5px; color: var(--ink-mute); max-width: 52ch; }

/* ─────────── THE INDEX ─────────── */
.index { position: relative; }
.irow {
  position: relative; text-decoration: none; color: inherit;
  display: grid; grid-template-columns: 64px 1fr auto 52px;
  align-items: center; gap: 26px;
  padding: 26px 10px; border-bottom: 1px solid var(--line);
  isolation: isolate;
  transition: opacity .5s, translate .5s;
}
.irow[data-reveal] { opacity: 0; translate: 0 22px; }
.irow.in { opacity: 1; translate: 0 0; }
.irow::after {
  content: ''; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, color-mix(in oklab, var(--a) 9%, transparent), transparent 70%);
  transform: scaleX(0); transform-origin: left center;
  transition: transform .45s cubic-bezier(.2,0,.2,1);
}
.irow:hover::after { transform: scaleX(1); }
.irow .ridx {
  font-family: var(--f-mono); font-size: 12px; letter-spacing: 0.14em;
  color: var(--ink-mute); transition: color .3s;
}
.irow:hover .ridx { color: var(--a); }
.irow .rmain { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.irow .rt {
  font-family: var(--f-display); font-weight: 300;
  font-size: clamp(26px, 4.4vw, 56px); line-height: 1.02; letter-spacing: -0.025em;
  color: transparent; -webkit-text-stroke: 1px rgba(236,235,241,0.55);
  transition: color .35s, -webkit-text-stroke-color .35s, transform .45s cubic-bezier(.2,0,.2,1);
  width: fit-content;
}
.irow:hover .rt {
  color: var(--a); -webkit-text-stroke-color: transparent;
  transform: translateX(16px);
  text-shadow: 0 0 46px color-mix(in oklab, var(--a) 55%, transparent);
}
.irow .rs { font-size: 13.5px; color: var(--ink-mute); transition: color .3s; max-width: 60ch; }
.irow:hover .rs { color: var(--ink-soft); }
.irow .rtag {
  font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--ink-mute);
  display: inline-flex; align-items: center; gap: 9px; transition: color .3s;
}
.irow .rtag::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%;
  background: var(--a); box-shadow: 0 0 12px var(--a); flex: none;
}
.irow:hover .rtag { color: var(--ink-soft); }
.irow .rgo {
  width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid var(--line); display: flex; align-items: center; justify-content: center;
  font-size: 17px; color: var(--ink-mute);
  transition: transform .4s cubic-bezier(.2,0,.2,1), border-color .3s, color .3s, background .3s;
}
.irow:hover .rgo {
  transform: rotate(-45deg);
  border-color: color-mix(in oklab, var(--a) 55%, var(--line));
  color: var(--a); background: color-mix(in oklab, var(--a) 10%, transparent);
}

/* ─────────── PEEK (cursor-chasing preview) ─────────── */
#peek {
  position: fixed; left: 0; top: 0; z-index: 40;
  pointer-events: none; will-change: transform;
}
.peek-card {
  position: relative; width: 360px; height: 230px;
  border-radius: 18px; overflow: hidden;
  background: #0a0a10;
  border: 1px solid color-mix(in oklab, var(--a, #888) 45%, transparent);
  box-shadow:
    0 40px 90px -20px rgba(0,0,0,0.85),
    0 0 70px -24px color-mix(in oklab, var(--a, #888) 70%, transparent);
  opacity: 0; transform: scale(0.86) rotate(-1.5deg);
  transition: opacity .28s ease, transform .34s cubic-bezier(.2,0,.2,1);
}
#peek.on .peek-card { opacity: 1; transform: scale(1) rotate(0deg); }
.peek-label {
  position: absolute; right: 12px; bottom: 10px; z-index: 9;
  font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--ink);
  padding: 6px 11px; border-radius: 999px;
  background: rgba(7,7,10,0.7); border: 1px solid var(--line);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.pv { position: absolute; inset: 0; opacity: 0; transition: opacity .22s ease; }
.pv.on { opacity: 1; }
@media (max-width: 900px), (pointer: coarse) { #peek { display: none; } }

/* ── preview motifs ── */
/* galaxy */
.pv-galaxy { background: radial-gradient(circle at 50% 70%, rgba(247,147,26,0.10), transparent 65%), #08070c; }
.pv-galaxy .sun {
  position: absolute; left: 50%; top: 54%; width: 62px; height: 62px; border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #fff5d6, var(--c-galaxy) 50%, #b04e00);
  transform: translate(-50%, -50%);
  box-shadow: 0 0 44px 6px rgba(247,147,26,0.45), 0 0 90px rgba(247,147,26,0.25);
}
.pv-galaxy .orbit { position: absolute; left: 50%; top: 54%; width: 180px; height: 180px;
  border-radius: 50%; border: 1px solid rgba(247,147,26,0.20); transform: translate(-50%, -50%); }
.pv-galaxy .orbit.o2 { width: 280px; height: 280px; border-color: rgba(247,147,26,0.10); }
.pv-galaxy .planet {
  position: absolute; left: 50%; top: 54%; width: 12px; height: 12px; margin: -6px 0 0 -6px;
  border-radius: 50%; background: var(--c-galaxy-2); transform-origin: 0 0;
  animation: orbit1 9s linear infinite; box-shadow: 0 0 10px var(--c-galaxy-2);
}
.pv-galaxy .planet.p2 { width: 7px; height: 7px; margin: -3.5px 0 0 -3.5px; background: #ff6b6b;
  box-shadow: 0 0 8px #ff6b6b; animation: orbit2 14s linear infinite reverse; }
@keyframes orbit1 { to { transform: rotate(360deg) translateX(90px) rotate(-360deg); } }
@keyframes orbit2 { to { transform: rotate(360deg) translateX(140px) rotate(-360deg); } }
.pv-galaxy .star { position: absolute; width: 2px; height: 2px; background: #fff; border-radius: 50%;
  opacity: 0.6; animation: twinkle 2.4s ease-in-out infinite; }
@keyframes twinkle { 50% { opacity: 0.1; } }

/* bubbles */
.pv-bubbles { background:
    radial-gradient(circle at 30% 60%, rgba(52,224,161,0.10), transparent 50%),
    radial-gradient(circle at 70% 40%, rgba(255,84,112,0.10), transparent 50%), #08090d; }
.pv-bubbles .b { position: absolute; border-radius: 50%; animation: floaty 7s ease-in-out infinite; }
.pv-bubbles .b::after { content: ''; position: absolute; left: 22%; top: 18%; width: 28%; height: 22%;
  background: radial-gradient(ellipse at 30% 30%, rgba(255,255,255,0.6), transparent 70%);
  border-radius: 50%; filter: blur(1px); }
.pv-bubbles .b.up   { background: radial-gradient(circle at 35% 30%, #92ffd0, #34e0a1 60%, #0d8a5d); box-shadow: 0 0 32px rgba(52,224,161,0.35); }
.pv-bubbles .b.down { background: radial-gradient(circle at 35% 30%, #ffb1be, #ff5470 60%, #8c1f35); box-shadow: 0 0 32px rgba(255,84,112,0.35); }
.pv-bubbles .b.neu  { background: radial-gradient(circle at 35% 30%, #ffffff, #d4d4dc 70%, #66666e); box-shadow: 0 0 20px rgba(255,255,255,0.18); }
.pv-bubbles .b1 { width: 76px; height: 76px; left: 16%; top: 22%; animation-delay: 0s; }
.pv-bubbles .b2 { width: 96px; height: 96px; left: 46%; top: 42%; animation-delay: -2s; }
.pv-bubbles .b3 { width: 48px; height: 48px; left: 76%; top: 22%; animation-delay: -4s; }
.pv-bubbles .b4 { width: 30px; height: 30px; left: 28%; top: 70%; animation-delay: -1s; }
@keyframes floaty { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }

/* grand prix */
.pv-prix {
  background: linear-gradient(180deg, rgba(0,0,0,0.15), rgba(0,0,0,0.4)),
    repeating-linear-gradient(135deg, #f6c843 0 14px, #1a1a22 14px 28px);
}
.pv-prix::before { content: ''; position: absolute; inset: 0;
  background: repeating-linear-gradient(90deg, transparent 0 6px, rgba(255,255,255,0.06) 6px 7px),
    linear-gradient(180deg, transparent 0%, rgba(7,8,11,0.85) 70%); }
.pv-prix .chequer {
  position: absolute; left: 18px; bottom: 16px; width: 64px; height: 64px;
  background-image: linear-gradient(45deg, #f4f4f6 25%, transparent 25%, transparent 75%, #f4f4f6 75%),
    linear-gradient(45deg, #f4f4f6 25%, #0e0f14 25%, #0e0f14 75%, #f4f4f6 75%);
  background-size: 16px 16px; background-position: 0 0, 8px 8px;
  border: 2px solid rgba(255,255,255,0.6); box-shadow: 0 8px 28px rgba(0,0,0,0.6);
  animation: wave 3.2s ease-in-out infinite; transform-origin: left center;
}
@keyframes wave { 0%,100% { transform: skewY(0deg); } 50% { transform: skewY(-4deg) translateY(-2px); } }
.pv-prix .lights { position: absolute; right: 20px; top: 18px; display: flex; gap: 6px; }
.pv-prix .lights span { width: 10px; height: 10px; border-radius: 50%;
  background: rgba(255,80,80,0.25); border: 1px solid rgba(255,80,80,0.4); }
.pv-prix .lights span.on { background: var(--c-prix); box-shadow: 0 0 12px var(--c-prix); }
.pv-prix .speed { position: absolute; right: 18px; bottom: 18px; font-family: var(--f-mono);
  font-size: 11px; font-weight: 700; color: var(--c-prix-2); letter-spacing: 0.1em; text-shadow: 0 0 12px var(--c-prix-2); }

/* neo city */
.pv-city { background: radial-gradient(ellipse at 50% 70%, #2a0833 0%, #0a0218 70%, #000 100%);
  perspective: 360px; overflow: hidden; }
.pv-city .grid-floor { position: absolute; left: -10%; right: -10%; bottom: -10%; height: 70%;
  background-image: linear-gradient(90deg, transparent 49%, var(--c-city) 49%, var(--c-city) 51%, transparent 51%),
    linear-gradient(180deg, transparent 49%, var(--c-city-2) 49%, var(--c-city-2) 51%, transparent 51%);
  background-size: 40px 40px, 40px 40px; transform: rotateX(70deg); transform-origin: 50% 0%;
  animation: cityGrid 4s linear infinite; opacity: 0.55; filter: drop-shadow(0 0 6px var(--c-city)); }
@keyframes cityGrid { from { background-position: 0 0, 0 0; } to { background-position: 0 0, 0 40px; } }
.pv-city .sun { position: absolute; left: 50%; top: 22%; width: 110px; height: 110px; margin-left: -55px;
  border-radius: 50%; background: linear-gradient(180deg, var(--c-city) 0%, #ffb700 100%);
  box-shadow: 0 0 60px rgba(255,0,122,0.5);
  clip-path: polygon(0 0, 100% 0, 100% 30%, 0 30%, 0 38%, 100% 38%, 100% 46%, 0 46%, 0 54%, 100% 54%, 100% 62%, 0 62%, 0 100%, 100% 100%); }
.pv-city .skyline { position: absolute; left: 0; right: 0; top: 32%; height: 26px;
  background: linear-gradient(90deg, transparent 0 8%, #0a0218 8% 12%, transparent 12% 16%,
    #0a0218 16% 22%, transparent 22% 26%, #0a0218 26% 30%, transparent 30% 36%, #0a0218 36% 44%,
    transparent 44% 50%, #0a0218 50% 56%, transparent 56% 62%, #0a0218 62% 70%, transparent 70% 76%,
    #0a0218 76% 84%, transparent 84% 92%, #0a0218 92% 100%); }

/* matrix */
.pv-matrix { background: linear-gradient(180deg, rgba(0,30,10,0.4), #000); overflow: hidden; }
.pv-matrix .col { position: absolute; top: -120%; font-family: 'JetBrains Mono', monospace;
  font-size: 11px; line-height: 1.1; color: var(--c-matrix); text-shadow: 0 0 8px var(--c-matrix);
  white-space: pre; animation: rain linear infinite; opacity: 0.8; }
@keyframes rain { 0% { transform: translateY(0); } 100% { transform: translateY(280%); } }
.pv-matrix::after { content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.5) 0%, transparent 30%, transparent 70%, rgba(0,0,0,0.7) 100%),
    repeating-linear-gradient(0deg, rgba(0,0,0,0) 0px, rgba(0,0,0,0) 2px, rgba(0,0,0,0.30) 3px, rgba(0,0,0,0.30) 4px);
  pointer-events: none; }

/* sentiment */
.pv-sentiment { background: linear-gradient(180deg, rgba(0,255,136,0.05), rgba(255,56,102,0.05)), #07090b; }
.pv-sentiment .stack { position: absolute; left: 24px; right: 24px; top: 50%; transform: translateY(-50%);
  display: flex; flex-direction: column; gap: 11px; }
.pv-sentiment .row { font-family: var(--f-mono); font-size: 9px; letter-spacing: 0.1em;
  color: var(--ink-mute); display: flex; align-items: center; gap: 10px; }
.pv-sentiment .row .label { width: 42px; }
.pv-sentiment .row .bar { flex: 1; height: 6px; background: rgba(255,255,255,0.04);
  border-radius: 999px; overflow: hidden; position: relative; }
.pv-sentiment .row .bar::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0;
  background: linear-gradient(90deg, transparent, var(--c-sentiment)); width: var(--w, 50%);
  box-shadow: 0 0 12px var(--c-sentiment); animation: barWobble 4s ease-in-out infinite; }
.pv-sentiment .row.bear .bar::before { background: linear-gradient(90deg, transparent, var(--c-sentiment-2));
  box-shadow: 0 0 12px var(--c-sentiment-2); }
.pv-sentiment .row .pct { width: 36px; text-align: right; color: var(--ink-soft); font-weight: 700; }
.pv-sentiment .row.bull .pct { color: var(--c-sentiment); }
.pv-sentiment .row.bear .pct { color: var(--c-sentiment-2); }
@keyframes barWobble { 0%,100% { transform: scaleX(1); } 50% { transform: scaleX(0.92); } }

/* pulse */
.pv-pulse { background:
    radial-gradient(circle at 18% 20%, rgba(34,211,238,0.10), transparent 55%),
    radial-gradient(circle at 90% 90%, rgba(167,139,250,0.10), transparent 50%), #08090d; }
.pv-pulse .tapes { position: absolute; inset: 24px; display: flex; flex-direction: column; gap: 12px; justify-content: center; }
.pv-pulse .trow { display: grid; grid-template-columns: 52px 1fr 56px; align-items: center; gap: 12px; }
.pv-pulse .tsym { font-family: var(--f-mono); font-size: 11px; font-weight: 700; color: var(--ink-soft); letter-spacing: 0.04em; }
.pv-pulse .spark { width: 100%; height: 22px; display: block; }
.pv-pulse .spark path { fill: none; stroke-width: 1.8; vector-effect: non-scaling-stroke;
  stroke-dasharray: 200; stroke-dashoffset: 200; animation: drawline 2.4s ease forwards; }
@keyframes drawline { to { stroke-dashoffset: 0; } }
.pv-pulse .tchg { font-family: var(--f-mono); font-size: 11px; font-weight: 700; text-align: right; }
.pv-pulse .up { color: #0ecb81; } .pv-pulse .dn { color: #f6465d; }

/* ichimoku */
.pv-ichimoku { background:
    radial-gradient(circle at 78% 10%, rgba(224,178,74,0.08), transparent 55%),
    linear-gradient(180deg, rgba(20,22,30,0.4), rgba(11,12,16,0.6)), #0a0a0e; }
.pv-ichimoku .kanji { position: absolute; top: 12px; left: 16px; font-family: var(--f-serif);
  font-size: 26px; color: rgba(224,178,74,0.35); letter-spacing: 0.1em; }
.pv-ichimoku svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.pv-ichimoku .price { fill: none; stroke: var(--c-ichimoku); stroke-width: 2.2;
  filter: drop-shadow(0 0 6px rgba(224,178,74,0.6)); stroke-dasharray: 600; stroke-dashoffset: 600;
  animation: drawline 2.8s ease forwards; }
.pv-ichimoku .lag { fill: none; stroke: rgba(91,141,239,0.7); stroke-width: 1.4; stroke-dasharray: 3 4; }

/* ─────────── OPERATOR / CV ─────────── */
.operator {
  margin-top: 110px;
  display: grid; grid-template-columns: 1.1fr 1fr; gap: 56px; align-items: center;
}
.op-copy .op-tag {
  font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.32em;
  text-transform: uppercase; color: var(--ink-mute); margin-bottom: 18px;
  display: flex; align-items: center; gap: 12px;
}
.op-copy .op-tag::before { content: ''; width: 28px; height: 1px; background: var(--ink-faint); }
.op-copy h2 {
  font-family: var(--f-display); font-weight: 300;
  font-size: clamp(34px, 4.6vw, 64px); line-height: 1.0; letter-spacing: -0.03em;
}
.op-copy h2 em {
  font-family: var(--f-serif); font-style: italic; font-weight: 400;
  background: linear-gradient(90deg, #22d3ee, #a78bfa 55%, #ff5470);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.op-copy p { margin-top: 20px; color: var(--ink-soft); font-size: 15.5px; line-height: 1.65; max-width: 480px; text-wrap: pretty; }

.op-card {
  position: relative; border-radius: 22px; overflow: hidden;
  background: rgba(10, 10, 15, 0.62);
  border: 1px solid var(--line);
  backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%);
  padding: 34px 34px 30px;
  transition: transform .4s cubic-bezier(.2,0,.2,1), border-color .4s, box-shadow .4s;
}
.op-card:hover { transform: translateY(-5px); border-color: rgba(167,139,250,0.4);
  box-shadow: 0 40px 80px -30px rgba(0,0,0,0.8), 0 0 70px -30px rgba(167,139,250,0.5); }
.op-card::before {
  content: ''; position: absolute; left: 0; right: 0; top: 0; height: 2px;
  background: linear-gradient(90deg, #22d3ee, #a78bfa 50%, #ff5470);
  opacity: 0.8;
}
.op-card::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at 85% 0%, rgba(167,139,250,0.12), transparent 50%);
}
.op-head { display: flex; align-items: center; gap: 20px; }
.op-ava {
  width: 74px; height: 74px; border-radius: 18px; flex: none;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--f-serif); font-style: italic; font-size: 32px; color: var(--ink);
  background:
    radial-gradient(circle at 30% 25%, rgba(167,139,250,0.35), transparent 60%),
    radial-gradient(circle at 75% 80%, rgba(34,211,238,0.30), transparent 60%),
    #11111a;
  border: 1px solid var(--line-strong);
}
.op-id { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.op-name { font-family: var(--f-display); font-weight: 400; font-size: 21px; letter-spacing: -0.01em; }
.op-role { font-family: var(--f-mono); font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-mute); }
.op-fields { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.op-fields span {
  font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--ink-soft); padding: 7px 13px; border-radius: 999px;
  border: 1px solid var(--line); background: rgba(255,255,255,0.025);
}
.op-foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  margin-top: 26px; padding-top: 22px; border-top: 1px dashed var(--line); }
.op-status { display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-mute); }
.op-status .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--c-bubbles);
  box-shadow: 0 0 10px var(--c-bubbles); animation: brandPulse 2s ease-in-out infinite; }
.op-btn {
  display: inline-flex; align-items: center; gap: 10px; text-decoration: none;
  font-family: var(--f-mono); font-size: 11px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase;
  color: #07070a; background: linear-gradient(90deg, #7dd7ee, #b9a6ff);
  padding: 13px 22px; border-radius: 999px;
  transition: transform .3s cubic-bezier(.2,0,.2,1), box-shadow .3s;
}
.op-btn:hover { transform: translateY(-2px); box-shadow: 0 14px 36px -10px rgba(167,139,250,0.55); }
.op-btn .arrow { transition: transform .3s; }
.op-btn:hover .arrow { transform: translateX(5px); }

/* ─────────── BITCOFFEE ─────────── */
.coffee {
  margin-top: 110px; position: relative; border: 1px solid var(--line); border-radius: 24px;
  overflow: hidden; background: rgba(10, 10, 14, 0.62);
  backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%);
}
.coffee::before { content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle at 12% 0%, rgba(247,147,26,0.10), transparent 42%),
    radial-gradient(circle at 92% 100%, rgba(98,126,234,0.10), transparent 46%); pointer-events: none; }
.coffee-inner { position: relative; padding: 46px 48px; display: grid;
  grid-template-columns: 1fr 1.2fr; gap: 48px; align-items: center; }
.coffee-tag { font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.32em;
  text-transform: uppercase; color: var(--ink-mute); margin-bottom: 16px;
  display: flex; align-items: center; gap: 10px; }
.coffee-tag::before { content: ''; display: inline-block; width: 18px; height: 18px;
  background: no-repeat center/contain url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f7931a' stroke-width='1.5'><path d='M3 8h13v6a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V8Z'/><path d='M16 10h2a2.5 2.5 0 0 1 0 5h-2'/><path d='M6 3c.5 1 .5 2 0 3'/><path d='M9 3c.5 1 .5 2 0 3'/><path d='M12 3c.5 1 .5 2 0 3'/></svg>"); }
.coffee h2 { font-family: var(--f-display); font-weight: 300; font-size: clamp(34px, 4vw, 56px);
  line-height: 1.0; letter-spacing: -0.025em; }
.coffee h2 em { font-family: var(--f-serif); font-style: italic; font-weight: 400;
  background: linear-gradient(90deg, #ffd86b 0%, var(--c-galaxy) 60%, #ff6b00);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.coffee p { margin-top: 18px; color: var(--ink-soft); font-size: 15px; line-height: 1.6; max-width: 440px; }
.coffee p .signature { color: var(--ink-mute); font-family: var(--f-mono); font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase; display: block; margin-top: 14px; }

.addr-list { display: flex; flex-direction: column; gap: 12px; }
.addr { --chip: #fff; position: relative; background: rgba(255,255,255,0.025);
  border: 1px solid var(--line); border-radius: 14px; padding: 16px 18px;
  display: grid; grid-template-columns: 36px 1fr auto; gap: 14px; align-items: center;
  transition: border-color .3s, background .3s; }
.addr:hover { border-color: color-mix(in oklab, var(--chip) 30%, var(--line)); background: rgba(255,255,255,0.04); }
.addr-icon { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center;
  justify-content: center; font-family: var(--f-mono); font-weight: 700; font-size: 14px;
  color: #07070a; background: var(--chip); box-shadow: 0 0 18px color-mix(in oklab, var(--chip) 40%, transparent); }
.addr-info { min-width: 0; }
.addr-label { font-family: var(--f-mono); font-size: 10px; letter-spacing: 0.20em;
  text-transform: uppercase; color: var(--ink-mute); margin-bottom: 4px; }
.addr-label b { color: var(--chip); font-weight: 700; }
.addr-value { font-family: var(--f-mono); font-size: 13px; color: var(--ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; user-select: all; }
.copy-btn { appearance: none; background: rgba(255,255,255,0.04); color: var(--ink);
  border: 1px solid var(--line); border-radius: 10px; padding: 9px 12px; cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px; font-family: var(--f-mono); font-size: 11px;
  letter-spacing: 0.15em; text-transform: uppercase; transition: background .2s, border-color .2s, color .2s, transform .2s; }
.copy-btn:hover { background: rgba(255,255,255,0.07); border-color: var(--line-strong); }
.copy-btn:active { transform: scale(0.96); }
.copy-btn .icon { width: 14px; height: 14px; }
.copy-btn.copied { color: var(--c-bubbles); border-color: rgba(52,224,161,0.35); background: rgba(52,224,161,0.08); }

/* ─────────── FOOTER ─────────── */
footer { margin-top: 70px; padding-top: 22px; border-top: 1px solid var(--line);
  display: flex; justify-content: space-between; align-items: center; font-family: var(--f-mono);
  font-size: 10px; letter-spacing: 0.20em; text-transform: uppercase; color: var(--ink-mute);
  gap: 16px; flex-wrap: wrap; }
footer a { color: var(--ink-soft); text-decoration: none; }
footer a:hover { color: var(--ink); }

/* reveal helper */
[data-reveal] { opacity: 0; translate: 0 22px; transition: opacity .6s ease, translate .6s cubic-bezier(.2,.7,.2,1); }
[data-reveal].in { opacity: 1; translate: 0 0; }

/* ─────────── RESPONSIVE ─────────── */
@media (max-width: 1020px) {
  .operator { grid-template-columns: 1fr; gap: 38px; }
}
@media (max-width: 880px) {
  .coffee-inner { grid-template-columns: 1fr; padding: 34px 26px; gap: 28px; }
}
@media (max-width: 860px) {
  .irow .rt { color: var(--ink); -webkit-text-stroke: 0; }
  .irow:hover .rt { transform: none; }
}
@media (max-width: 720px) {
  main { padding: 18px 18px 70px; }
  .hero { padding: 56px 0 44px; }
  .switch-label { display: none; }
  .irow { grid-template-columns: 40px 1fr 40px; gap: 16px; padding: 22px 4px; }
  .irow .rtag { display: none; }
  .irow .rgo { width: 38px; height: 38px; }
  .section-head { margin-top: 48px; }
  .operator { margin-top: 70px; }
  .coffee { margin-top: 70px; }
  .op-card { padding: 26px 22px 24px; }
  .addr { grid-template-columns: 1fr auto; }
  .addr-icon { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; }
  [data-reveal], .irow[data-reveal] { opacity: 1; translate: none; }
  .ticker-track { animation: none; }
}
