/* ============================================================
   Whale Hunter — Apple Dark 2026 design system
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;500;600;700;800;900&family=Inter:wght@400;450;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root {
  /* surfaces */
  --bg:            #07080B;
  --bg-2:          #0B0D12;
  --surface:       rgba(255,255,255,0.035);
  --surface-2:     rgba(255,255,255,0.055);
  --surface-solid: #101319;
  --surface-solid-2:#14171F;
  --glass:         rgba(20,23,31,0.55);
  --glass-strong:  rgba(13,15,20,0.78);

  /* borders / lines */
  --line:          rgba(255,255,255,0.07);
  --line-2:        rgba(255,255,255,0.11);
  --line-strong:   rgba(255,255,255,0.16);

  /* text */
  --fg:            #F4F6FB;
  --fg-2:          #AEB4C4;
  --fg-3:          #767D90;
  --fg-4:          #4D5366;

  /* accent — warm amber / orange (solid, no gradient) */
  --accent:        #FFB224;
  --accent-2:      #FF9D2B;
  --accent-soft:   rgba(255,178,36,0.12);
  --accent-line:   rgba(255,178,36,0.34);
  --accent-grad:   #FFB224;
  --accent-glow:   none;
  --on-accent:     #1A1407;
  --hot:           #FF7A18;

  /* semantic market */
  --up:            #2FD46A;
  --up-soft:       rgba(47,212,106,0.14);
  --up-line:       rgba(47,212,106,0.30);
  --down:          #FF4D45;
  --down-soft:     rgba(255,77,69,0.14);
  --down-line:     rgba(255,77,69,0.30);
  --warn:          #FFB23E;
  --warn-soft:     rgba(255,178,62,0.14);

  /* exchange brand dots */
  --ex-binance:    #F0B90B;
  --ex-bybit:      #F7A600;
  --ex-mexc:       #2354E6;
  --ex-gate:       #2EBD85;
  --ex-kucoin:     #24D6A4;

  /* radii */
  --r-xs: 8px;
  --r-sm: 12px;
  --r-md: 16px;
  --r-lg: 22px;
  --r-xl: 28px;
  --r-pill: 999px;

  /* shadow */
  --shadow-sm: 0 2px 8px rgba(0,0,0,0.4);
  --shadow-md: 0 10px 30px rgba(0,0,0,0.45);
  --shadow-lg: 0 30px 70px rgba(0,0,0,0.55);

  --font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Inter Tight", "Inter", system-ui, sans-serif;
  --font-disp: "Inter Tight", -apple-system, BlinkMacSystemFont, "SF Pro Display", sans-serif;
  --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  --nav-h: 66px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }

body {
  background: var(--bg);
  color: var(--fg);
  font-family: var(--font);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

/* ambient page glow removed — cleaner, more serious */
.page-glow { display: none; }

::selection { background: rgba(255,178,36,0.28); color: #fff; }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.10); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.18); background-clip: padding-box; }

a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }

.tnum { font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1; }
.mono { font-family: var(--mono); }

/* ============================================================ layout */
.app { position: relative; z-index: 1; min-height: 100vh; }
.shell { max-width: 1340px; margin: 0 auto; padding: 0 28px; }
/* широкая рабочая область для страниц с таблицами — используем почти всю ширину окна */
.shell-wide { max-width: 1840px; margin: 0 auto; padding: 0 32px; }
@media(max-width:760px){ .shell-wide{ padding: 0 16px; } }
.up   { color: var(--up); }
.down { color: var(--down); }

/* ============================================================ nav */
.nav {
  position: sticky; top: 0; z-index: 100; height: var(--nav-h);
  display: flex; align-items: center;
  background: rgba(7,8,11,0); border-bottom: 1px solid transparent;
  -webkit-backdrop-filter: blur(22px) saturate(160%);
  backdrop-filter: blur(22px) saturate(160%);
  transition: background .35s ease, border-color .35s ease;
  transform: translateZ(0); -webkit-transform: translateZ(0); backface-visibility: hidden; -webkit-backface-visibility: hidden;
}
.nav.solid {
  background: var(--glass-strong);
  border-bottom: 1px solid var(--line);
}
.nav-inner { display: flex; align-items: center; gap: 30px; width: 100%; }
.brand { display: flex; align-items: center; gap: 11px; font-family: var(--font-disp); font-weight: 800; font-size: 17px; letter-spacing: -0.02em; }
.brand .mark { width: 48px; height: 48px; flex: 0 0 auto; object-fit: contain; }
.brand-name { color: var(--fg); }
.brand-x { color: var(--accent); }
.auth-mark img { display:block; object-fit:contain; }
.nav-links { display: flex; align-items: center; gap: 4px; margin-left: 64px; }
.nav-link {
  position: relative; padding: 8px 14px; border-radius: var(--r-pill);
  font-size: 14px; font-weight: 500; color: var(--fg-3); white-space: nowrap;
  background: transparent; border: 0; transition: color .18s, background .18s;
  display: inline-flex; align-items: center; gap: 6px;
}
.nav-link:hover { color: var(--fg); background: var(--surface); }
.nav-link.active { color: var(--fg); background: var(--surface-2); }
.nav-link .caret { width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-1px); opacity: .6; }
.nav-spacer { flex: 1; }
.nav-login { background:transparent; border:0; color:var(--fg-2); font-size:14px; font-weight:550; padding:9px 14px; border-radius:var(--r-pill); transition:color .15s,background .15s; }
.nav-login:hover { color:var(--fg); background:var(--surface); }
.nav-login.nav-acct { display:flex; align-items:center; gap:8px; padding:5px 12px 5px 6px; border:1px solid var(--line-2); }
.nav-login.nav-acct img, .nav-login.nav-acct .acct-ph { width:26px; height:26px; border-radius:50%; object-fit:cover; flex:none; }
.nav-login.nav-acct .acct-ph { display:grid; place-items:center; font-weight:700; font-size:12px; background:linear-gradient(150deg,#FFD37A,#C77F0C); color:#1a1206; }
.nav-login.nav-acct .acct-nm { font-weight:600; color:var(--fg); }
.nav-cta {
  padding: 9px 16px; border-radius: var(--r-pill); border: 0;
  background: var(--accent-grad); color: var(--on-accent); font-weight: 700; font-size: 13.5px;
  box-shadow: var(--accent-glow); transition: transform .15s, filter .2s;
  display: inline-flex; align-items: center; gap: 7px;
}
.nav-cta:hover { transform: translateY(-1px); filter: brightness(1.1); }
.nav-pill-live {
  display: inline-flex; align-items: center; gap: 7px; padding: 6px 12px;
  border-radius: var(--r-pill); border: 1px solid var(--line-2);
  font-size: 12.5px; color: var(--fg-2); font-weight: 500;
}

/* mobile nav toggle hidden by default */
.nav-burger { display: none; }

/* ============================================================ live dot */
.live-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--up); position: relative; flex: 0 0 auto; }
.live-dot::after { content:""; position:absolute; inset:-4px; border-radius:50%; background: var(--up); opacity:.5; animation: ping 1.8s ease-out infinite; }
@keyframes ping { 0%{ transform: scale(.6); opacity:.6 } 80%,100%{ transform: scale(2.2); opacity:0 } }
.live-dot.accent { background: var(--accent); }
.live-dot.accent::after { background: var(--accent); }

/* ============================================================ cards */
.card {
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-lg); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
.card-pad { padding: 20px; }
.panel {
  background: rgba(255,255,255,0.022);
  border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden;
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
}
.panel-head {
  display: flex; align-items: center; gap: 10px; padding: 15px 18px;
  border-bottom: 1px solid var(--line);
}
.panel-title { font-size: 14.5px; font-weight: 700; letter-spacing: -0.01em; display: flex; align-items: center; gap: 9px; }
.panel-count { color: var(--fg-3); font-weight: 500; font-size: 13px; }
.panel-tools { margin-left: auto; display: flex; align-items: center; gap: 4px; }
.seg {
  display: inline-flex; padding: 3px; gap: 2px; background: rgba(0,0,0,0.35);
  border-radius: var(--r-pill); border: 1px solid var(--line);
}
.seg button {
  border: 0; background: transparent; color: var(--fg-3); font-size: 12px; font-weight: 600;
  padding: 5px 12px; border-radius: var(--r-pill); transition: .16s;
}
.seg button.on { background: var(--surface-2); color: var(--fg); box-shadow: var(--shadow-sm); }
.seg button:hover { color: var(--fg-2); }

/* ============================================================ filter chips */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip {
  padding: 8px 15px; border-radius: var(--r-pill); border: 1px solid var(--line-2);
  background: var(--surface); color: var(--fg-2); font-size: 13px; font-weight: 550;
  transition: .16s; display: inline-flex; align-items: center; gap: 7px;
}
.chip:hover { border-color: var(--line-strong); color: var(--fg); }
.chip.on { background: var(--fg); color: #0a0b0f; border-color: var(--fg); font-weight: 650; }
.chip.accent.on { background: var(--accent-grad); border-color: transparent; color: var(--on-accent); box-shadow: var(--accent-glow); }

/* ============================================================ tables */
/* auto layout = столбцы по содержимому, ничего не обрезается; колонок мало → влезает без скролла */
.tbl { width: 100%; border-collapse: collapse; table-layout: auto; }
.tbl thead th {
  text-align: right; font-size: 10px; font-weight: 600; letter-spacing: 0.04em;
  text-transform: uppercase; color: var(--fg-4); padding: 11px 10px;
  position: sticky; top: 0; background: var(--surface-solid); /* НЕПРОЗРАЧНАЯ шапка */
  z-index: 2; white-space: nowrap;
}
.tbl thead th:first-child { text-align: left; padding-left: 14px; }
.tbl tbody td {
  padding: 0 10px; height: 46px; text-align: right; font-size: 12.5px;
  border-top: 1px solid var(--line); white-space: nowrap;
}
.tbl tbody td:first-child { text-align: left; padding-left: 14px; }
.tbl tbody tr { transition: background .14s; }
.tbl tbody tr:hover { background: rgba(255,255,255,0.035); cursor: pointer; }
/* вертикальный скролл; горизонтального быть не должно (колонок ровно столько, сколько влезает) */
.tbl-scroll { max-height: 520px; overflow-y: auto; overflow-x: hidden; }
.tbl-row-up  { box-shadow: inset 3px 0 0 var(--up-line); }
.tbl-row-down{ box-shadow: inset 3px 0 0 var(--down-line); }
.sym { max-width: 100%; }
/* направление-точка в sym-токене (вместо лого) */
.sym-dot { width: 7px; height: 7px; border-radius: 50%; flex: 0 0 auto; }
.sym-dot.u { background: var(--up); } .sym-dot.d { background: var(--down); }
/* badge не должен обрезаться краем ячейки */
.tbl td .badge { white-space: nowrap; }

/* symbol token */
.sym {
  display: inline-flex; align-items: center; gap: 7px; padding: 4px 12px 4px 5px;
  border-radius: var(--r-pill); font-weight: 650; font-size: 12.5px; letter-spacing: .01em;
  background: var(--surface-2); color: var(--fg); border: 1px solid var(--line);
  transition: box-shadow .3s ease;
}
.sym.up, .sym.down { background: var(--surface-2); color: var(--fg); border-color: var(--line); }
.coin { border-radius: 50%; display: block; background: rgba(255,255,255,0.05); flex: 0 0 auto; }
.coin-fb { border-radius: 50%; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.14); display: inline-block; flex: 0 0 auto; }

/* pct */
.pct { font-weight: 650; font-variant-numeric: tabular-nums; display:inline-flex; align-items:center; gap:3px; justify-content:flex-end; }
.pct .tri { font-size: 9px; }

/* badge / signal */
.badge {
  display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px;
  border-radius: var(--r-pill); font-size: 11.5px; font-weight: 650; letter-spacing: .01em;
}
.badge.long  { background: var(--up-soft); color: #6ff0a0; border:1px solid var(--up-line); }
.badge.short { background: var(--down-soft); color: #ff8d87; border:1px solid var(--down-line); }
.badge.warn  { background: var(--warn-soft); color: var(--warn); border:1px solid rgba(255,178,62,0.3); }
.badge.pump  { color: var(--up); font-weight: 700; }
.badge.dump  { color: var(--down); font-weight: 700; }

/* exchange dots */
.exdots { display: inline-flex; align-items: center; gap: 5px; }
.exdots .dot { width: 7px; height: 7px; border-radius: 50%; opacity: .9; }
.exdots .pill { margin-left: 3px; font-size: 10.5px; font-weight: 700; color: var(--fg-2); background: var(--surface-2); padding: 2px 7px; border-radius: var(--r-pill); border: 1px solid var(--line); }
.dot.binance{background:var(--ex-binance)} .dot.bybit{background:var(--ex-bybit)} .dot.mexc{background:var(--ex-mexc)} .dot.gate{background:var(--ex-gate)} .dot.kucoin{background:var(--ex-kucoin)}
.dot.off { background: rgba(255,255,255,0.12) !important; }

/* score ring */
.ring { position: relative; width: 34px; height: 34px; display: inline-grid; place-items: center; }
.ring svg { position: absolute; inset: 0; transform: rotate(-90deg); }
.ring .val { font-size: 11.5px; font-weight: 750; font-variant-numeric: tabular-nums; }

/* buttons */
.btn {
  display: inline-flex; align-items: center; justify-content:center; gap: 8px;
  padding: 13px 22px; border-radius: var(--r-pill); border: 1px solid var(--line-2);
  background: var(--surface); color: var(--fg); font-weight: 600; font-size: 15px;
  transition: transform .15s, background .18s, border-color .18s;
}
.btn:hover { transform: translateY(-1px); background: var(--surface-2); border-color: var(--line-strong); }
.btn-primary { background: var(--accent-grad); border: 0; color: var(--on-accent); font-weight: 700; box-shadow: var(--accent-glow); }
.btn-primary:hover { background: var(--accent-grad); border: 0; color: var(--on-accent); filter: brightness(1.06); box-shadow: var(--accent-glow); }
.btn-lg { padding: 16px 28px; font-size: 16px; }

/* sparkline */
.spark { display: block; }

/* ============================================================ mount anim */
.rise { opacity: 0; transform: translateY(14px); animation: rise .55s cubic-bezier(.2,.7,.2,1) forwards; }
@keyframes rise { to { opacity: 1; transform: none; } }
.rise-d1{animation-delay:.05s}.rise-d2{animation-delay:.10s}.rise-d3{animation-delay:.16s}.rise-d4{animation-delay:.22s}.rise-d5{animation-delay:.3s}.rise-d6{animation-delay:.38s}

@media (prefers-reduced-motion: reduce){
  .rise{ animation: none; opacity:1; transform:none; }
  .live-dot::after{ animation:none; }
}

/* number flash */
.flash-up  { animation: fup .6s ease; }
.flash-down{ animation: fdn .6s ease; }
@keyframes fup { 0%{ color: var(--up) } 100%{} }
@keyframes fdn { 0%{ color: var(--down) } 100%{} }

/* ============================================================ HOME */
.hero { padding: 78px 0 40px; position: relative; }
.hero-grid { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 56px; align-items: center; }
.eyebrow {
  display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px; border-radius: var(--r-pill);
  background: var(--surface); border: 1px solid var(--line-2); font-size: 12.5px; color: var(--fg-2); font-weight: 550;
  margin-bottom: 26px;
}
.hero h1 {
  font-family: var(--font-disp); font-weight: 800; font-size: clamp(44px, 5.6vw, 82px);
  line-height: 0.98; letter-spacing: -0.035em; margin: 0 0 24px;
}
.hero h1 .em { color: var(--accent); }
.hero p.sub { font-size: clamp(16px,1.3vw,19px); line-height: 1.55; color: var(--fg-2); max-width: 520px; margin: 0 0 34px; }
.hero-cta { display: flex; gap: 14px; flex-wrap: wrap; }

.stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin-top: 54px; border:1px solid var(--line); border-radius: var(--r-lg); overflow:hidden; background: var(--line); }
.stat { background: var(--bg-2); padding: 22px 24px; }
.stat .n { font-family: var(--font-disp); font-weight: 800; font-size: 34px; letter-spacing: -0.02em; }
.stat .l { font-size: 12.5px; color: var(--fg-3); margin-top: 4px; }

/* bento — 2 равные колонки, плитки заполняют ряды без дыр */
.bento { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.bento .b, .bento .b.wide { grid-column: auto; }
.bento .b.full { grid-column: 1 / -1; }
@media(max-width:780px){ .bento { grid-template-columns: 1fr; } }
.feat { padding: 26px; height: 100%; display:flex; flex-direction:column; gap:12px; position: relative; overflow:hidden; }
.feat .fi { width: 46px; height: 46px; border-radius: 13px; display:grid; place-items:center; background: var(--surface-2); color: var(--fg); border:1px solid var(--line-2); }
.feat h3 { margin: 0; font-size: 19px; font-weight: 700; letter-spacing: -0.02em; }
.feat p { margin: 0; color: var(--fg-2); font-size: 14.5px; line-height: 1.55; }
.feat .idx { position:absolute; top:18px; right:22px; font-family: var(--mono); font-size:12px; color: var(--fg-4); }

.section-head { text-align:center; max-width: 640px; margin: 0 auto 44px; }
.section-head .kicker { color: var(--accent); font-weight: 650; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; }
.section-head h2 { font-family: var(--font-disp); font-weight: 800; font-size: clamp(30px,3.6vw,48px); letter-spacing: -0.03em; margin: 12px 0 14px; line-height: 1.02; }
.section-head p { color: var(--fg-2); font-size: 16px; line-height: 1.55; margin: 0; }

.steps { display:grid; grid-template-columns: repeat(3,1fr); gap: 16px; }
.step { padding: 26px; }
.step .num { font-family: var(--font-disp); font-weight: 800; font-size: 40px; letter-spacing:-0.03em; color: var(--accent); line-height:1; }
.step h4 { margin: 14px 0 8px; font-size: 17px; font-weight: 700; }
.step p { margin:0; color: var(--fg-2); font-size: 14px; line-height: 1.55; }

.cta-band { text-align:center; padding: 70px 40px; position: relative; overflow:hidden; }
.cta-band h2 { font-family: var(--font-disp); font-weight: 800; font-size: clamp(30px,4vw,52px); letter-spacing:-0.03em; margin:0 0 28px; }

/* ===== problem → solution split ===== */
.split { display:grid; grid-template-columns: 1fr 1fr; gap: 1px; border:1px solid var(--line); border-radius: var(--r-lg); overflow:hidden; background: var(--line); }
.split-col { background: var(--bg-2); padding: 34px 32px; }
.split-col h3 { font-family: var(--font-disp); font-size: 20px; font-weight: 700; letter-spacing:-0.02em; margin:0 0 18px; display:flex; align-items:center; gap:10px; }
.split-col.bad h3 { color: var(--fg-2); }
.split-col.good h3 { color: var(--accent); }
.split-li { display:flex; gap:12px; padding:11px 0; border-top:1px solid var(--line); font-size:14.5px; line-height:1.5; color: var(--fg-2); }
.split-li:first-of-type { border-top:0; }
.split-li .mk { flex:0 0 auto; width:18px; height:18px; border-radius:50%; display:grid; place-items:center; font-size:11px; margin-top:1px; }
.split-li.x .mk { background: var(--down-soft); color: var(--down); }
.split-li.v .mk { background: var(--accent-soft); color: var(--accent); }
@media(max-width:780px){ .split{ grid-template-columns:1fr; } }

/* ===== use-cases (numbered scenarios) ===== */
.uc { display:flex; flex-direction:column; }
.uc-row { display:grid; grid-template-columns: 54px 1fr 1fr; gap: 28px; align-items:start; padding: 30px 0; border-top:1px solid var(--line); }
.uc-row:last-child { border-bottom:1px solid var(--line); }
.uc-no { font-family: var(--mono); font-size: 13px; font-weight: 700; color: var(--accent); padding-top: 4px; }
.uc-when .tag { display:inline-block; font-family:var(--mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--fg-3); border:1px solid var(--line-2); border-radius:var(--r-pill); padding:3px 10px; margin-bottom:11px; }
.uc-when h4 { font-family: var(--font-disp); font-size: 19px; font-weight: 700; letter-spacing:-0.02em; margin:0 0 8px; }
.uc-when p { color: var(--fg-2); font-size: 14px; line-height: 1.55; margin:0; }
.uc-then { padding-left: 28px; border-left: 1px solid var(--line); }
.uc-then .tag { display:inline-block; font-family:var(--mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--accent); border:1px solid var(--accent-line); border-radius:var(--r-pill); padding:3px 10px; margin-bottom:11px; }
.uc-then p { color: var(--fg-2); font-size: 14px; line-height: 1.55; margin:0; }
.uc-then b { color: var(--fg); font-weight:600; }
@media(max-width:780px){ .uc-row{ grid-template-columns: 1fr; gap:14px; } .uc-then{ padding-left:0; border-left:0; border-top:1px solid var(--line); padding-top:14px; } .uc-no{ display:none; } }

/* ===== live proof strip ===== */
.proof { display:grid; grid-template-columns: repeat(3,1fr); gap:1px; border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; background:var(--line); }
.proof-cell { background: var(--bg-2); padding: 26px 28px; }
.proof-cell .pk { font-size:12px; color:var(--fg-3); display:flex; align-items:center; gap:8px; }
.proof-cell .pv { font-family: var(--mono); font-weight:700; font-size:30px; letter-spacing:-0.02em; margin-top:8px; color: var(--fg); }
.proof-cell .pv .em { color: var(--accent); }
.proof-cell .ps { font-size:12.5px; color:var(--fg-3); margin-top:4px; }
@media(max-width:780px){ .proof{ grid-template-columns:1fr; } }

/* hero live preview */
.preview-card { padding: 16px; background: rgba(255,255,255,0.025); border:1px solid var(--line); border-radius: var(--r-lg); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); }
.preview-head { display:flex; align-items:center; gap:9px; font-size:12.5px; color:var(--fg-2); padding: 6px 8px 14px; }
.preview-head .live-dot{ position:relative; }
.hp-empty { color: var(--fg-3); font-size:12px; padding:24px; text-align:center; }
.pv-row { display:flex; align-items:center; gap:10px; padding:10px; border-radius: var(--r-sm); margin-bottom: 8px; position:relative; overflow:hidden; }
.pv-row:last-child{ margin-bottom:0; }
.pv-bar { position:absolute; inset:0; border-radius: var(--r-sm); opacity:.16; }
.pv-bar.up{ background: var(--up-soft); border-left: 2px solid var(--up); }
.pv-bar.down{ background: var(--down-soft); border-left: 2px solid var(--down); }
.pv-nm { font-weight:700; font-size:13px; position:relative; z-index:1; }
.pv-sp { flex:1; }
.pv-dots { position:relative; z-index:1; display:inline-flex; gap:3px; }
.pv-dots .dot { width:7px; height:7px; border-radius:50%; }
.pv-pc { position:relative; z-index:1; font-family:var(--mono); font-weight:700; width:66px; text-align:right; }
.pv-sc { position:relative; z-index:1; color: var(--fg-3); font-family:var(--mono); font-size:12px; width: 26px; text-align:right; }

/* footer */
.footer { border-top: 1px solid var(--line); margin-top: 90px; padding: 44px 0 60px; color: var(--fg-3); font-size: 13px; }
.footer-grid { display:flex; justify-content: space-between; gap: 30px; flex-wrap: wrap; }
.footer a:hover { color: var(--fg); }

/* page header */
.page-head { padding: 40px 0 24px; display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.page-head>div:first-child { flex: 1 1 auto; }
.page-head h1, .page-head .page-h1 { font-family: var(--font-disp); font-weight: 800; font-size: clamp(28px,3.4vw,42px); letter-spacing:-0.03em; margin: 0; line-height:1.04; }
.page-head p, .page-head .page-sub { color: var(--fg-2); font-size: 15px; margin: 10px 0 0; max-width: 60ch; line-height:1.5; }
.page-head .row { display:flex; align-items:flex-end; justify-content: space-between; gap: 20px; flex-wrap: wrap; width:100%; }
.page-head .chips { flex: 0 0 auto; }

.legend {
  display:flex; align-items:center; gap: 16px; flex-wrap: wrap; padding: 12px 18px; margin-bottom: 18px;
  font-size: 13px; color: var(--fg-2);
}
.legend .lx { display:inline-flex; align-items:center; gap:6px; }

.two-col { display:grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.three-col { display:grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; }

/* whale specifics */
.whale-grid { display:grid; grid-template-columns: 1.55fr 1fr; gap: 18px; align-items:start; }
.info-callout { display:flex; gap:16px; padding: 20px; }
.info-callout .ic { width:46px; height:46px; border-radius:13px; background: var(--accent-soft); border:1px solid var(--accent-line); color: var(--accent-2); display:grid; place-items:center; flex:0 0 auto; }
.info-callout p { margin:0; font-size:14px; line-height:1.6; color: var(--fg-2); }
.info-callout b { color: var(--fg); }

.sent-list { max-height: 360px; overflow-y: auto; }
.sent-row { display:grid; grid-template-columns: 70px 1fr 116px; gap: 12px; align-items:center; padding: 8px 0; }
.sent-coin { font-family: var(--mono); font-weight: 700; font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sent-bar { height: 8px; border-radius: 999px; background: var(--down); overflow:hidden; position:relative; }
.sent-bar .l { position:absolute; left:0; top:0; bottom:0; background: var(--up); border-radius: 999px 0 0 999px; }
.sent-meta { font-size: 12px; text-align:right; font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; display:flex; align-items:center; justify-content:flex-end; gap:3px; }
.sent-meta b { font-weight: 700; }
.sent-meta .sl { color: var(--fg-4); }
.sent-meta .sent-tilt { font-family: var(--font); font-size: 11px; margin-left: 4px; min-width: 56px; text-align:right; }

.liq-row { display:grid; grid-template-columns: 1fr auto auto auto; align-items:center; gap: 12px; padding: 11px 0; border-top:1px solid var(--line); }
.liq-row:first-child{ border-top:0; }
.liq-row .liq-side { font-family: var(--mono); font-size: 11px; padding: 3px 9px; }
.liq-row .liq-dist { color: var(--warn); font-weight: 700; font-size: 13px; min-width: 48px; text-align:right; }
.liq-row .liq-size { color: var(--fg-3); font-size: 12.5px; min-width: 64px; text-align:right; }

/* drawer */
.drawer-scrim { position: fixed; inset: 0; background: rgba(0,0,0,0.55); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); z-index: 200; opacity:0; animation: fadein .25s forwards; }
@keyframes fadein { to { opacity: 1; } }
.drawer {
  position: fixed; top: 0; right: 0; bottom: 0; width: min(460px, 92vw); z-index: 201;
  background: var(--glass-strong); -webkit-backdrop-filter: blur(26px); backdrop-filter: blur(26px);
  border-left: 1px solid var(--line-2); box-shadow: var(--shadow-lg);
  transform: translateX(100%); animation: slidein .32s cubic-bezier(.2,.8,.2,1) forwards;
  overflow-y: auto; padding: 26px;
}
@keyframes slidein { to { transform: none; } }
.drawer-close { position:absolute; top:20px; right:20px; width:34px; height:34px; border-radius:50%; background: var(--surface-2); border:1px solid var(--line); color: var(--fg-2); display:grid; place-items:center; }
.drawer-close:hover { color: var(--fg); }

.kpi-grid { display:grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.kpi { padding: 16px; border-radius: var(--r-md); background: var(--surface); border:1px solid var(--line); }
.kpi .l { font-size: 12px; color: var(--fg-3); }
.kpi .v { font-family: var(--font-disp); font-weight: 800; font-size: 24px; margin-top: 4px; letter-spacing:-0.02em; }

.wallet-mono { font-family: var(--mono); font-size: 12.5px; color: var(--fg-2); }

/* feed */
.feed-row { display:grid; grid-template-columns: auto 1fr auto auto; gap:12px; align-items:center; padding: 11px 16px; border-top:1px solid var(--line); font-size:13.5px; }
.feed-row:first-child{border-top:0;}

/* tiny util */
.muted { color: var(--fg-3); }
.faint { color: var(--fg-4); }
.tag-dot { width:6px;height:6px;border-radius:50%;display:inline-block; }
.hl-row { background: var(--accent-soft) !important; }

/* ===== ticker tape (signature live strip) ===== */
.ticker {
  position: sticky; top: var(--nav-h); z-index: 90;
  height: 38px; display: flex; align-items: center; overflow: hidden;
  background: rgba(8,9,12,0.85); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px);
  border-bottom: 1px solid var(--line);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
}
.ticker-track { display: flex; align-items: center; gap: 28px; white-space: nowrap; padding-left: 28px; animation: marquee 52s linear infinite; will-change: transform; }
.ticker:hover .ticker-track { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(-50%); } }
.tk { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; }
.tk .nm { color: var(--fg-2); letter-spacing: .02em; }
.tk .pc { font-variant-numeric: tabular-nums; }
.tk.strong .nm { color: var(--accent); text-shadow: 0 0 12px rgba(255,178,36,.6); }

/* ===== nav search / kbd ===== */
.nav-search {
  display: inline-flex; align-items: center; gap: 9px; padding: 7px 11px 7px 13px;
  border-radius: var(--r-pill); border: 1px solid var(--line-2); background: var(--surface);
  color: var(--fg-3); font-size: 13px; font-weight: 500; transition: .16s; margin-right: 4px;
}
.nav-search:hover { color: var(--fg); border-color: var(--line-strong); }
.kbd { font-family: var(--mono); font-size: 10.5px; padding: 2px 6px; border-radius: 6px; border: 1px solid var(--line-2); background: rgba(255,255,255,0.05); color: var(--fg-2); line-height: 1; }

/* ===== command palette ===== */
.cmdk-scrim { position: fixed; inset: 0; z-index: 300; background: rgba(0,0,0,0.5); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px); display: flex; align-items: flex-start; justify-content: center; padding-top: 13vh; opacity: 0; animation: fadein .18s forwards; }
.cmdk { width: min(580px, 92vw); background: var(--glass-strong); border: 1px solid var(--line-2); border-radius: var(--r-lg); box-shadow: var(--shadow-lg); overflow: hidden; transform: translateY(-8px) scale(.985); opacity: 0; animation: pop .22s cubic-bezier(.2,.8,.2,1) forwards; }
@keyframes pop { to { transform: none; opacity: 1; } }
.cmdk-input { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--line); }
.cmdk-input svg { color: var(--fg-3); flex: 0 0 auto; }
.cmdk-input input { flex: 1; background: transparent; border: 0; outline: none; color: var(--fg); font-size: 16px; font-family: inherit; }
.cmdk-input input::placeholder { color: var(--fg-4); }
.cmdk-list { max-height: 372px; overflow-y: auto; padding: 8px; }
.cmdk-group { font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--fg-4); padding: 12px 12px 6px; }
.cmdk-item { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: var(--r-sm); cursor: pointer; color: var(--fg-2); font-size: 14px; }
.cmdk-item .ci { width: 28px; height: 28px; border-radius: 8px; background: var(--surface-2); display: grid; place-items: center; color: var(--fg-3); flex: 0 0 auto; }
.cmdk-item.sel { background: var(--accent-soft); color: var(--fg); }
.cmdk-item.sel .ci { color: var(--accent); }
.cmdk-item .meta { margin-left: auto; font-size: 12px; color: var(--fg-4); }
.cmdk-empty { padding: 30px; text-align: center; color: var(--fg-4); font-size: 14px; }
.cmdk-foot { display: flex; gap: 18px; padding: 10px 16px; border-top: 1px solid var(--line); font-size: 11.5px; color: var(--fg-4); }
.cmdk-foot b { color: var(--fg-3); font-weight: 600; }

/* ===== radar sweep on logomark ===== */
.mark-sweep { transform-box: view-box; transform-origin: 16px 16px; animation: sweep 7s linear infinite; }
@media (prefers-reduced-motion: reduce){ .mark-sweep, .ticker-track { animation: none; } }
@keyframes sweep { to { transform: rotate(360deg); } }

/* responsive */
@media (max-width: 1180px){
  .nav-search { display: none; }
}
@media (max-width: 1080px){
  .hero-grid{ grid-template-columns: 1fr; gap: 40px; }
  .three-col{ grid-template-columns: 1fr; }
  .whale-grid{ grid-template-columns: 1fr; }
}
@media (max-width: 780px){
  .shell{ padding: 0 18px; }
  .nav-links{ display:none; }
  .two-col{ grid-template-columns: 1fr; }
  .bento{ grid-template-columns: 1fr; } .bento .b, .bento .b.wide, .bento .b.full{ grid-column: 1; }
  .stats{ grid-template-columns: 1fr 1fr; }
  .steps{ grid-template-columns: 1fr; }
}

/* ============================================================ live-only supplements
   (наш живой функционал: subscript-цены, in-row spark, detail-drawer сигнала,
    whale PnL chart, sonar в hero). База — стили мокапа выше, тут только то, чего там нет. */
sub { font-size: .72em; vertical-align: -0.15em; }
.spark-empty { display:inline-block; width:58px; height:1px; background: var(--line-2); vertical-align: middle; opacity:.5; }
.muted { color: var(--fg-2); }
.faint { color: var(--fg-4); }

/* footer (mockup home) */
.footer { position:relative; margin-top: 100px; padding: 56px 0 48px; color: var(--fg-3); font-size: 13px;
  border-top: 1px solid var(--line);
  background: radial-gradient(80% 140% at 50% 0%, rgba(255,178,36,.04), transparent 60%); }
.footer-grid { display:flex; justify-content: space-between; gap: 40px; flex-wrap: wrap; }
.footer a{ transition:color .15s; } .footer a:hover { color: var(--fg); }
.footer .ft-col-h{ color:var(--fg); font-weight:600; margin-bottom:14px; font-size:13px; }
.footer .ft-link{ display:block; margin-bottom:9px; color:var(--fg-3); }
.footer .ft-bottom{ display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap;
  margin-top:40px; padding-top:24px; border-top:1px solid var(--line); }
.footer .ft-soc{ display:flex; gap:10px; }
.footer .ft-soc a{ width:34px; height:34px; border-radius:50%; border:1px solid var(--line-2); display:grid; place-items:center; color:var(--fg-3); }
.footer .ft-soc a:hover{ color:var(--fg); border-color:var(--line-strong); background:var(--surface); }
.cta-band { text-align:center; padding: 70px 40px; position: relative; overflow:hidden; }
.cta-band h2 { font-family: var(--font-disp); font-weight: 800; font-size: clamp(30px,4vw,52px); letter-spacing:-0.03em; margin:0 0 28px; }

/* detail drawer (signal) — переиспользуем .drawer/.kpi мокапа */
.d-price { font-family: var(--mono); font-size: 30px; font-weight: 800; letter-spacing:-0.03em; }
.d-pct { font-family: var(--mono); font-size: 16px; font-weight: 700; }
.d-price-row { display:flex; align-items:baseline; justify-content:space-between; margin: 4px 0 4px; }
.d-chart { margin:14px 0 20px; border:1px solid var(--line); border-radius: var(--r-md); padding:10px; background: var(--surface); }
.d-sec-h { font-size: 11px; text-transform:uppercase; letter-spacing:.1em; color: var(--fg-3); margin: 0 0 12px; }
.d-exes { display:flex; flex-wrap:wrap; gap:8px; margin-bottom: 22px; }
.d-ex { display:inline-flex; align-items:center; gap:7px; font-size:12px; color:var(--fg-2); background:var(--surface); border:1px solid var(--line); border-radius:var(--r-pill); padding:6px 12px; }
.d-ex .dot { width:8px; height:8px; border-radius:50%; }
.d-logs, .wd-list { display:flex; flex-direction:column; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--r-md); overflow:hidden; margin-bottom:20px; }
.d-log { display:grid; grid-template-columns:52px 64px 1fr auto auto; align-items:center; gap:10px; padding:10px 13px; background:var(--bg-2); font-family:var(--mono); font-size:11.5px; }
.d-log-k { font-weight:700; } .d-log-ex { color: var(--fg-3); } .d-log-px,.d-log-pct,.d-log-t { text-align:right; } .d-log-t { color: var(--fg-3); }

/* whale profile drawer extras */
.wallet-mono { font-family: var(--mono); font-size: 12.5px; color: var(--fg-2); }
.wd-link { display:block; font-family:var(--mono); font-size:11.5px; color:var(--accent-2); margin:-2px 0 14px; word-break:break-all; }
.wd-link:hover { text-decoration: underline; }
.wd-pos { display:grid; grid-template-columns:auto 1fr auto auto; align-items:center; gap:10px; padding:11px 13px; background:var(--bg-2); font-family:var(--mono); font-size:12px; }
.wd-fill { display:grid; grid-template-columns:46px 60px 1fr auto auto; align-items:center; gap:8px; padding:9px 13px; background:var(--bg-2); font-family:var(--mono); font-size:11.5px; }
.wd-chart { margin-bottom:20px; border:1px solid var(--line); border-radius:var(--r-md); padding:11px; background:var(--surface); }
.wd-chart-lbl { font-size:11px; color:var(--fg-3); text-align:center; margin-top:7px; font-family:var(--mono); }
.wd-wl { font-family:var(--mono); font-size:12px; text-align:center; margin:-8px 0 16px; }
.num { font-family: var(--mono); }

/* empty state */
.empty { padding: 42px 16px; text-align:center; color: var(--fg-4); font-size: 14px; }

/* flash on new rows */
@keyframes rowIn{0%{opacity:0;transform:translateY(-6px)}100%{opacity:1;transform:none}}
tr.flash-up, tr.flash-down { animation: rowIn .5s cubic-bezier(.2,.7,.2,1); }

/* legend exchange dots colors */
.tag-dot.binance{background:var(--ex-binance)}.tag-dot.bybit{background:var(--ex-bybit)}.tag-dot.mexc{background:var(--ex-mexc)}.tag-dot.gate{background:var(--ex-gate)}.tag-dot.kucoin{background:var(--ex-kucoin)}
/* exdots count pill + ring cell centering */
.exdots .pill-n{margin-left:3px;font-size:10.5px;font-weight:700;color:var(--fg-2);background:var(--surface-2);padding:2px 7px;border-radius:var(--r-pill);border:1px solid var(--line)}
.tbl td.ring-td{text-align:center}
/* scroll-reveal */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease,cubic-bezier(.2,.7,.2,1)),transform .6s cubic-bezier(.2,.7,.2,1)}
.reveal.revealed{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}
.disc{color:var(--fg-4);font-size:11.5px;text-align:center;padding:44px 0 4px}

/* ============================================================ HOME v2 — wow / scrollytelling */
/* canvas-фон hero: поток данных, mouse-reactive */
.hx{ position:relative; overflow:hidden; }
.hx-canvas{ position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; }
.hx-fade{ position:absolute; inset:0; z-index:1; pointer-events:none;
  background: radial-gradient(120% 80% at 50% 0%, transparent 40%, var(--bg) 100%); }
.hx > .shell{ position:relative; z-index:2; }

/* hero v2 */
.h2-hero{ padding: 90px 0 70px; }
.h2-grid{ display:grid; grid-template-columns: 1.02fr .98fr; gap:56px; align-items:center; }
.h2-l h1{ font-family:var(--font-disp); font-weight:800; font-size:clamp(46px,5.4vw,80px); line-height:.96; letter-spacing:-.04em; margin:22px 0 0; }
.h2-l h1 .em{ color:var(--accent); }
.h2-l .sub{ color:var(--fg-2); font-size:clamp(16px,1.35vw,19px); line-height:1.55; max-width:50ch; margin:22px 0 0; }
.h2-cta{ display:flex; gap:13px; margin-top:32px; flex-wrap:wrap; }
.h2-trust{ display:flex; gap:22px; margin-top:34px; flex-wrap:wrap; color:var(--fg-3); font-size:12.5px; }
.h2-trust b{ font-family:var(--mono); color:var(--fg); font-weight:700; font-size:15px; display:block; }

/* живой мини-терминал в hero (fake dashboard, реальные данные) */
.term{ position:relative; border:1px solid var(--line-2); border-radius:var(--r-lg); overflow:hidden;
  background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.01));
  -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px); box-shadow: var(--shadow-lg);
  will-change: transform; transition: transform .18s ease-out; }
.term-bar{ display:flex; align-items:center; gap:8px; padding:11px 14px; border-bottom:1px solid var(--line); font-size:12px; color:var(--fg-3); }
.term-dot{ width:10px; height:10px; border-radius:50%; background:var(--line-2); }
.term-dot.g{ background:var(--up); } .term-dot.a{ background:var(--accent); } .term-dot.r{ background:var(--down); }
.term-title{ margin-left:6px; font-family:var(--mono); }
.term-live{ margin-left:auto; display:inline-flex; align-items:center; gap:7px; color:var(--up); font-family:var(--mono); font-size:11px; }
.term-body{ padding:10px; display:flex; flex-direction:column; gap:7px; min-height:300px; }
.term-row{ display:grid; grid-template-columns: auto 1fr auto auto; align-items:center; gap:11px; padding:10px 12px; border-radius:var(--r-sm); position:relative; overflow:hidden;
  background: var(--surface); border:1px solid var(--glass-brd); animation: termIn .5s cubic-bezier(.2,.8,.2,1); }
@keyframes termIn{ from{ opacity:0; transform: translateY(-10px) scale(.98); } to{ opacity:1; transform:none; } }
.term-bg{ position:absolute; inset:0; opacity:.12; }
.term-bg.u{ background: linear-gradient(90deg, var(--up), transparent); }
.term-bg.d{ background: linear-gradient(90deg, var(--down), transparent); }
.term-sym{ position:relative; z-index:1; display:inline-flex; align-items:center; gap:7px; font-weight:700; font-size:13px; }
.term-kind{ position:relative; z-index:1; font-family:var(--mono); font-size:10px; letter-spacing:.05em; color:var(--fg-3); text-transform:uppercase; }
.term-pct{ position:relative; z-index:1; font-family:var(--mono); font-weight:700; font-size:13.5px; text-align:right; }
.term-spark{ position:relative; z-index:1; }

/* секция-вопрос: один экран — один смысл */
.qsec{ padding: 110px 0; }
.qsec .qk{ color:var(--accent); font-family:var(--mono); font-size:12.5px; letter-spacing:.08em; text-transform:uppercase; }
.qsec h2{ font-family:var(--font-disp); font-weight:800; font-size:clamp(30px,3.8vw,50px); letter-spacing:-.03em; line-height:1.04; margin:14px 0 0; max-width:18ch; }
.qsec .qlead{ color:var(--fg-2); font-size:17px; line-height:1.6; margin:18px 0 0; max-width:54ch; }

/* путь сигнала: Data → AI → Signal → Result (morphing pipeline) */
.flow{ display:grid; grid-template-columns: repeat(4, 1fr); gap:0; margin-top:54px; border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; background:var(--line); }
.flow-step{ background:var(--bg-2); padding:30px 26px; position:relative; }
.flow-step .fs-i{ width:44px; height:44px; border-radius:12px; display:grid; place-items:center; background:var(--surface-2); border:1px solid var(--line-2); color:var(--accent); margin-bottom:16px; }
.flow-step .fs-i svg{ width:22px; height:22px; }
.flow-step h4{ font-family:var(--font-disp); font-size:17px; font-weight:700; margin:0 0 7px; }
.flow-step p{ color:var(--fg-2); font-size:13.5px; line-height:1.55; margin:0; }
.flow-step .fs-n{ position:absolute; top:18px; right:22px; font-family:var(--mono); font-size:12px; color:var(--fg-4); }
.flow-step:not(:last-child)::after{ content:"→"; position:absolute; right:-11px; top:50%; transform:translateY(-50%); z-index:3;
  width:22px; height:22px; border-radius:50%; background:var(--accent); color:var(--on-accent); display:grid; place-items:center; font-size:13px; font-weight:700; }
@media(max-width:900px){ .flow{ grid-template-columns:1fr 1fr; } .flow-step:not(:last-child)::after{ display:none; } }
@media(max-width:560px){ .flow{ grid-template-columns:1fr; } }

/* примеры сигналов — карточки разного размера (bento) */
.ex-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:16px; margin-top:48px; }
.ex-card{ border:1px solid var(--line); border-radius:var(--r-lg); padding:22px; background:rgba(255,255,255,.02); position:relative; overflow:hidden; }
.ex-card.tall{ grid-row: span 2; }
.ex-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.ex-badge{ font-family:var(--mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; padding:4px 10px; border-radius:var(--r-pill); border:1px solid var(--line-2); color:var(--fg-2); }
.ex-card h4{ font-size:16px; font-weight:700; margin:0 0 6px; }
.ex-card p{ color:var(--fg-2); font-size:13.5px; line-height:1.55; margin:0; }
@media(max-width:880px){ .ex-grid{ grid-template-columns:1fr; } .ex-card.tall{ grid-row:auto; } }

/* сценарий использования — крупный */
.scn{ display:grid; grid-template-columns: 1fr 1fr; gap:40px; align-items:center; }
.scn-vis{ border:1px solid var(--line); border-radius:var(--r-lg); padding:20px; background:rgba(255,255,255,.02); }
@media(max-width:860px){ .scn{ grid-template-columns:1fr; gap:24px; } }

/* reveal: контент ВИДЕН по умолчанию (fallback). Прячем только когда JS готов (html.js),
   чтобы при любой ошибке/без JS секции не пропадали. */
.rv{ transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
html.js .rv{ opacity:0; transform:translateY(28px); }
html.qa .rv{ opacity:1 !important; transform:none !important; }
html.js .rv.in{ opacity:1; transform:none; }
html.js .rv.l{ transform:translateX(-28px); } html.js .rv.l.in{ transform:none; }
html.js .rv.r{ transform:translateX(28px); } html.js .rv.r.in{ transform:none; }
@media (prefers-reduced-motion:reduce){ html.js .rv{ opacity:1; transform:none; transition:none; } .term-row{ animation:none; } }

/* count-up числа */
.cup{ font-variant-numeric: tabular-nums; }

/* ============================================================ HERO v5 — split, density-first (Linear/Apple tokens) */
.hero2{ position:relative; min-height:min(82vh,760px); display:flex; align-items:center; overflow:hidden; padding:64px 0;
  background:
    radial-gradient(55% 55% at 76% 48%, rgba(255,178,36,.07), transparent 70%),
    radial-gradient(rgba(255,255,255,.03) 1px, transparent 1px) 0 0 / 36px 36px,
    var(--bg); }
.hero2 .shell{ max-width:1240px; }
.hero2::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background: radial-gradient(45% 55% at 12% 40%, rgba(255,178,36,.035), transparent 60%); }
.hero2-canvas{ position:absolute; top:0; right:-4%; width:64%; height:100%; z-index:1; }
.hero2-grid{ position:relative; z-index:3; display:grid; grid-template-columns: minmax(0,560px) 1fr; gap:48px; align-items:center; width:100%; }
.hero2-l{ max-width:560px; }
.hero2-badge{ display:inline-flex; align-items:center; gap:8px; padding:7px 14px; border-radius:var(--r-pill);
  background:var(--surface); border:1px solid var(--line-2); font-size:12.5px; color:var(--fg-2); font-weight:550; letter-spacing:.01em; }
.hero2-h1{ font-family:var(--font-disp); font-weight:800; font-size:clamp(44px,5vw,80px); line-height:.95; letter-spacing:-.045em; margin:20px 0 0; }
.hero2-h1 .em{ color:var(--accent); }
.hero2-sub{ color:var(--fg-2); font-size:clamp(16px,1.25vw,18px); line-height:1.55; max-width:48ch; margin:20px 0 0; }
.hero2-cta{ display:flex; gap:12px; margin-top:28px; flex-wrap:wrap; }
/* метрики — плотная строка с разделителями (Linear) */
.hero2-metrics{ display:flex; gap:0; margin-top:36px; border:1px solid var(--line); border-radius:14px; overflow:hidden; background:rgba(255,255,255,.018); width:fit-content; }
.hero2-metrics .m{ padding:14px 22px; border-right:1px solid var(--line); }
.hero2-metrics .m:last-child{ border-right:0; }
.hero2-metrics .m b{ font-family:var(--mono); font-weight:700; font-size:22px; display:block; color:var(--fg); letter-spacing:-.01em; }
.hero2-metrics .m b i{ font-style:normal; font-size:.55em; color:var(--fg-2); }
.hero2-metrics .m span{ font-size:11.5px; color:var(--fg-3); margin-top:2px; display:block; }
/* правый слот для 3D-сцены */
.hero2-r{ position:relative; height:560px; }
.hero2-hint{ position:absolute; left:50%; bottom:22px; transform:translateX(-50%); z-index:3; }
.hero2-hint .ar{ display:block; width:14px; height:14px; border-right:1.5px solid var(--fg-4); border-bottom:1.5px solid var(--fg-4); transform:rotate(45deg); animation:chev 1.7s ease-in-out infinite; }
@keyframes chev{ 0%,100%{ opacity:.25; transform:rotate(45deg) translateY(-2px) } 50%{ opacity:.9; transform:rotate(45deg) translateY(2px) } }
/* живые датапоинты — в ПРАВОЙ части, поверх сцены, как телеметрия */
.dp{ position:absolute; z-index:3; font-family:var(--mono); font-size:11px; line-height:1.45; color:var(--fg-3); pointer-events:none; white-space:pre;
  background:rgba(11,13,18,.5); border:1px solid var(--line); border-radius:8px; padding:7px 10px; -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
.dp b{ color:var(--accent); font-weight:600; } .dp .g{ color:var(--up); } .dp .r{ color:var(--down); }
.dp1{ top:14%; right:30% } .dp2{ top:24%; right:5% } .dp3{ top:56%; right:34% }
.dp4{ bottom:16%; right:8% } .dp5{ top:42%; right:2% } .dp6{ bottom:26%; right:30% }
@media(max-width:980px){
  .hero2-canvas{ width:100%; opacity:.5; }
  .hero2-grid{ grid-template-columns:1fr; }
  .hero2-r{ display:none; } .dp{ display:none } .hero2-h1{ font-size:40px }
}
/* стаггер-появление hero */
.rva{ opacity:0; transform:translateY(20px); transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
.rva.in{ opacity:1; transform:none; }
.rva.d1{ transition-delay:.06s } .rva.d2{ transition-delay:.14s } .rva.d3{ transition-delay:.22s } .rva.d4{ transition-delay:.30s } .rva.d5{ transition-delay:.38s }
@media (prefers-reduced-motion:reduce){ .rva{ opacity:1; transform:none } }

/* ============================================================ BENTO — Apple-радиусы, плотно, без пустот */
.abento{ display:grid; grid-template-columns: repeat(4,1fr); grid-auto-rows: 224px; gap:14px; margin-top:40px; }
.ab{ position:relative; border-radius:18px; padding:22px; overflow:hidden; display:flex; flex-direction:column; gap:12px;
  background:rgba(255,255,255,.022); border:1px solid var(--line);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  transition: transform .35s cubic-bezier(.2,.8,.2,1), border-color .35s, background .35s; }
.ab:hover{ transform:translateY(-5px); border-color:var(--line-strong); background:rgba(255,255,255,.04); }
.ab-2x2{ grid-column: span 2; grid-row: span 2; }
.ab-2x{ grid-column: span 2; }
.ab-wide{ grid-column: span 2; }
.ab-dark{ background: radial-gradient(130% 120% at 85% 5%, rgba(255,178,36,.10), transparent 55%), rgba(255,255,255,.018); }
.ab-accent{ background: radial-gradient(130% 130% at 50% 0%, rgba(255,178,36,.18), transparent 62%), rgba(20,17,10,.5); border-color:var(--accent-line); }
.ab-ico{ width:44px; height:44px; border-radius:13px; display:grid; place-items:center; background:var(--surface-2); color:var(--accent); transition:transform .35s cubic-bezier(.34,1.4,.5,1), background .35s; }
.ab-ico svg{ width:22px; height:22px; }
.ab:hover .ab-ico{ transform:scale(1.1) rotate(-4deg); background:rgba(255,178,36,.16); }
.ab-chip .cx-d{ width:7px; height:7px; border-radius:50%; display:inline-block; margin-right:6px; vertical-align:middle; }
.ab-kicker{ font-family:var(--mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--accent); }
.ab-title{ font-family:var(--font-disp); font-weight:700; font-size:18px; letter-spacing:-.02em; line-height:1.15; }
.ab-2x2 .ab-title{ font-size:26px; }
.ab-2x2 .ab-text{ font-size:14.5px; max-width:42ch; }
.ab-text{ color:var(--fg-2); font-size:13px; line-height:1.5; }
.ab-body{ display:flex; flex-direction:column; gap:6px; }
.ab-big{ font-family:var(--font-disp); font-weight:800; font-size:44px; letter-spacing:-.03em; line-height:1; color:var(--accent); margin-top:auto; }
.ab-big i{ font-style:normal; font-size:.5em; color:var(--fg-2); }
.ab-vis{ margin-top:auto; }
/* большая карточка: визуал прижат к низу, без вертикального провала */
.ab-2x2{ justify-content:flex-start; }
.ab-2x2 .ab-ico{ position:absolute; top:22px; right:22px; }
/* визуалы карточек */
.ab-exch{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.ab-chip{ font-family:var(--mono); font-size:11px; padding:5px 11px; border-radius:var(--r-pill); border:1px solid var(--line-2); color:var(--fg-2); background:var(--surface); }
.ab-stat{ width:100%; margin-top:8px; font-size:13px; color:var(--fg-3); }
.ab-stat b{ font-family:var(--font-disp); font-size:30px; font-weight:800; color:var(--accent); margin-right:8px; letter-spacing:-.02em; }
.ab-score{ display:flex; justify-content:center; align-items:center; }
.ab-dots{ display:flex; align-items:center; gap:7px; }
.ab-dots .d{ width:12px; height:12px; border-radius:50%; background:var(--line-2); }
.ab-dots .d.on{ background:var(--accent); box-shadow:0 0 10px rgba(255,178,36,.5); }
.ab-dots b{ font-family:var(--mono); font-weight:700; color:var(--fg); margin-left:6px; font-size:15px; }
.ab-types{ display:flex; gap:8px; }
.ab-types .t{ font-family:var(--mono); font-weight:700; font-size:13px; padding:8px 12px; border-radius:10px; border:1px solid var(--line-2); }
.ab-types .t.pa{ color:var(--accent); } .ab-types .t.pd{ color:var(--up); } .ab-types .t.fu{ color:var(--down); }
.ab-whale{ display:flex; flex-direction:column; gap:8px; }
.wv-row{ display:grid; grid-template-columns:42px 86px 1fr; align-items:center; gap:10px; font-family:var(--mono); font-size:12px; }
.wv-c{ font-weight:700; color:var(--fg); } .wv-s{ font-size:11px; }
.wv-bar{ height:6px; border-radius:6px; background:var(--line-2); overflow:hidden; }
.wv-bar i{ display:block; height:100%; border-radius:6px; }
@media(max-width:1000px){ .abento{ grid-template-columns:repeat(2,1fr); } .ab-2x2{ grid-column:span 2; grid-row:span 2 } .ab-2x,.ab-wide{ grid-column:span 2 } }
@media(max-width:600px){ .abento{ grid-template-columns:1fr; grid-auto-rows:auto; } .ab,.ab-2x2,.ab-2x,.ab-wide{ grid-column:auto; grid-row:auto; min-height:170px; } }

/* ============================================================ HOW IT WORKS */
.hiw-hero{ padding:72px 0 0; }
.hiw-h1{ font-family:var(--font-disp); font-weight:800; font-size:clamp(40px,4.6vw,72px); line-height:.96; letter-spacing:-.04em; margin:20px 0 0; }
.hiw-h1 .em{ color:var(--accent); }
.hiw-h2{ font-family:var(--font-disp); font-weight:800; font-size:clamp(28px,3.2vw,42px); letter-spacing:-.03em; margin:12px 0 0; line-height:1.04; }
.hiw-lead{ color:var(--fg-2); font-size:clamp(16px,1.3vw,18px); line-height:1.55; max-width:52ch; margin:20px 0 0; }
/* конвейер — вертикальные шаги с соединительной линией */
.hiw-flow{ margin-top:48px; display:flex; flex-direction:column; }
.hiw-step{ display:grid; grid-template-columns:auto 52px 1fr; gap:20px; align-items:start; padding:26px 0; border-top:1px solid var(--line); position:relative; }
.hiw-step:last-child{ border-bottom:1px solid var(--line); }
.hiw-n{ font-family:var(--mono); font-size:13px; font-weight:700; color:var(--accent); padding-top:9px; }
.hiw-ico{ width:48px; height:48px; border-radius:13px; display:grid; place-items:center; background:var(--surface-2); color:var(--accent); border:1px solid var(--line-2); }
.hiw-ico svg{ width:24px; height:24px; }
.hiw-tx h4{ font-family:var(--font-disp); font-size:20px; font-weight:700; letter-spacing:-.02em; margin:6px 0 0; }
.hiw-tx p{ color:var(--fg-2); font-size:14.5px; line-height:1.55; margin:8px 0 0; max-width:64ch; }
/* типы сигналов — 3 карточки */
.hiw-types{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:32px; }
.hiw-type{ border:1px solid var(--line); border-radius:18px; padding:24px; background:rgba(255,255,255,.022); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); transition:border-color .3s, transform .3s; }
.hiw-type:hover{ border-color:var(--line-strong); transform:translateY(-4px); }
.hiw-type-h{ display:flex; align-items:center; gap:10px; }
.hiw-type-ic{ width:36px; height:36px; border-radius:10px; display:grid; place-items:center; background:var(--surface-2); }
.hiw-type-ic svg{ width:19px; height:19px; }
.hiw-type-h h4{ font-family:var(--font-disp); font-size:17px; font-weight:700; letter-spacing:-.01em; margin:0; flex:1; }
.hiw-type-tag{ font-family:var(--mono); font-size:11px; font-weight:600; padding:3px 9px; border-radius:var(--r-pill); border:1px solid; }
.hiw-what{ color:var(--fg); font-size:14px; line-height:1.5; margin:16px 0 0; }
.hiw-how{ margin-top:14px; padding-top:14px; border-top:1px solid var(--line); color:var(--fg-2); font-size:13px; line-height:1.5; }
.hiw-how-k{ display:block; font-family:var(--mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--fg-3); margin-bottom:6px; }
@media(max-width:880px){ .hiw-types{ grid-template-columns:1fr; } }
/* как читать терминал — 4 мини-карточки */
.hiw-read{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:32px; }
.hiw-rc{ border:1px solid var(--line); border-radius:18px; padding:22px; background:rgba(255,255,255,.022); transition:border-color .3s, transform .3s; }
.hiw-rc:hover{ border-color:var(--line-strong); transform:translateY(-4px); }
.hiw-rc-v{ height:80px; display:flex; align-items:center; justify-content:center; margin-bottom:14px; }
.hiw-rc-v svg{ max-height:80px; }
.hiw-on{ gap:6px; } .hiw-on .dot{ width:11px; height:11px; border-radius:50%; } .hiw-on b{ font-family:var(--mono); font-weight:700; color:var(--fg); margin-left:8px; }
.hiw-rc h4{ font-family:var(--font-disp); font-size:16px; font-weight:700; margin:0 0 6px; }
.hiw-rc p{ color:var(--fg-2); font-size:13px; line-height:1.5; margin:0; }
@media(max-width:980px){ .hiw-read{ grid-template-columns:1fr 1fr; } }
@media(max-width:560px){ .hiw-read{ grid-template-columns:1fr; } }
.hiw-cta{ text-align:center; padding:56px 40px; border:1px solid var(--line); border-radius:22px;
  background:radial-gradient(120% 160% at 50% 0%, rgba(255,178,36,.08), transparent 60%), rgba(255,255,255,.02); }
.hiw-cta .hero2-cta{ justify-content:center; }

/* ============================================================ PRICING */
.price{ display:grid; grid-template-columns: repeat(4,1fr); gap:16px; margin-top:48px; align-items:start; }
.price-card{ border:1px solid var(--line); border-radius:var(--r-lg); background:rgba(255,255,255,.02); padding:24px 22px; position:relative; transition:border-color .25s, transform .25s, background .25s; }
.price-card:hover{ border-color:var(--line-2); transform:translateY(-3px); background:rgba(255,255,255,.035); }
.price-card.best{ border-color:var(--accent-line); padding-top:38px; background:radial-gradient(120% 80% at 50% 0%, rgba(255,178,36,.10), transparent 60%), rgba(255,255,255,.02); }
.price-tag{ position:absolute; top:14px; right:18px; font-family:var(--mono); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--on-accent); background:var(--accent); padding:3px 9px; border-radius:var(--r-pill); }
.price-card .pp-term{ font-size:14px; color:var(--fg-2); font-weight:600; }
.price-card .pp-amt{ font-family:var(--font-disp); font-weight:800; font-size:40px; letter-spacing:-.02em; margin:10px 0 2px; }
.price-card .pp-amt small{ font-size:16px; color:var(--fg-3); font-weight:600; }
.price-card .pp-mo{ font-family:var(--mono); font-size:12px; color:var(--fg-3); }
.price-card .pp-save{ display:inline-block; margin-top:10px; font-size:11.5px; color:var(--up); font-weight:600; }
.price-card .pp-btn{ display:block; text-align:center; margin-top:20px; padding:11px; border-radius:var(--r-pill); border:1px solid var(--line-2); color:var(--fg); font-weight:600; font-size:14px; transition:.2s; }
.price-card .pp-btn:hover{ border-color:var(--line-strong); background:var(--surface-2); }
.price-card.best .pp-btn{ background:var(--accent); color:var(--on-accent); border:0; font-weight:700; }
.price-foot{ text-align:center; color:var(--fg-4); font-size:12.5px; margin-top:22px; }
@media(max-width:900px){ .price{ grid-template-columns:1fr 1fr; } }
@media(max-width:520px){ .price{ grid-template-columns:1fr; } }

/* ============================================================ SCROLLYTELLING «Как рождается сигнал» */
.story{ position:relative; }
.story-grid{ display:grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items:start; }
/* левая колонка — длинная, правая прилипает */
.story-steps{ display:flex; flex-direction:column; }
.story-step{ min-height: 78vh; display:flex; flex-direction:column; justify-content:center; }
.story-step .ss-n{ font-family:var(--mono); font-size:13px; color:var(--accent); letter-spacing:.1em; }
.story-step h3{ font-family:var(--font-disp); font-weight:800; font-size:clamp(28px,3.2vw,42px); letter-spacing:-.03em; margin:14px 0 0; line-height:1.05;
  opacity:.32; transition:opacity .4s ease; }
.story-step.active h3{ opacity:1; }
.story-step p{ color:var(--fg-2); font-size:16px; line-height:1.6; margin:16px 0 0; max-width:46ch; opacity:.32; transition:opacity .4s ease; }
.story-step.active p{ opacity:1; }
.story-sticky{ position:sticky; top:calc(var(--nav-h) + 40px); height:70vh; display:flex; align-items:center; justify-content:center; }
.story-stage{ width:100%; height:100%; border:1px solid var(--line-2); border-radius:var(--r-lg); position:relative; overflow:hidden;
  background: radial-gradient(120% 100% at 50% 0%, rgba(255,178,36,.05), transparent 60%), var(--bg-2); }
.story-stage canvas{ position:absolute; inset:0; width:100%; height:100%; }
.story-pill{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); text-align:center; z-index:2; transition:opacity .4s ease, transform .4s ease; }
.story-pill .sp-big{ font-family:var(--font-disp); font-weight:800; font-size:46px; letter-spacing:-.03em; }
.story-pill .sp-sub{ font-family:var(--mono); font-size:13px; color:var(--fg-3); margin-top:8px; }
@media(max-width:900px){ .story-grid{ grid-template-columns:1fr; gap:0; } .story-sticky{ position:relative; top:0; height:300px; margin-bottom:20px; } .story-step{ min-height:auto; padding:30px 0; } }

/* интерактивные карточки-примеры (hover раскрывает разбор) */
.iex{ display:grid; grid-template-columns: repeat(3,1fr); gap:16px; margin-top:48px; }
.iex-card{ border:1px solid var(--line); border-radius:var(--r-lg); background:rgba(255,255,255,.02); overflow:hidden; cursor:default;
  transition: border-color .25s ease, transform .25s ease, box-shadow .25s ease; position:relative; }
.iex-card:hover{ border-color:var(--accent-line); transform:translateY(-4px); box-shadow: var(--shadow-md); }
.iex-top{ padding:22px 22px 16px; }
.iex-top .ic-badge{ font-family:var(--mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; padding:4px 10px; border-radius:var(--r-pill); border:1px solid var(--line-2); color:var(--fg-2); }
.iex-card h4{ font-size:17px; font-weight:700; margin:14px 0 6px; }
.iex-card .iex-lead{ color:var(--fg-2); font-size:13.5px; line-height:1.5; margin:0; }
.iex-reveal{ max-height:0; overflow:hidden; transition:max-height .35s cubic-bezier(.2,.8,.2,1); border-top:1px solid transparent; }
.iex-card:hover .iex-reveal{ max-height:240px; border-top-color:var(--line); }
.iex-detail{ padding:16px 22px 22px; }
.iex-detail .row{ display:flex; justify-content:space-between; font-family:var(--mono); font-size:12.5px; padding:5px 0; color:var(--fg-2); }
.iex-detail .row b{ color:var(--fg); }
.iex-hint{ position:absolute; bottom:12px; right:16px; font-size:11px; color:var(--fg-4); font-family:var(--mono); transition:opacity .2s; }
.iex-card:hover .iex-hint{ opacity:0; }
@media(max-width:880px){ .iex{ grid-template-columns:1fr; } }

/* bento-grid преимуществ (разный размер) */
.adv{ display:grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: minmax(160px,auto); gap:16px; margin-top:48px; }
.adv-card{ border:1px solid var(--line); border-radius:var(--r-lg); background:rgba(255,255,255,.02); padding:24px; position:relative; overflow:hidden;
  transition: border-color .25s ease, background .25s ease; }
.adv-card:hover{ border-color:var(--line-2); background:rgba(255,255,255,.035); }
.adv-card.w2{ grid-column: span 2; } .adv-card.h2{ grid-row: span 2; }
.adv-card .av-i{ width:42px; height:42px; border-radius:12px; display:grid; place-items:center; background:var(--surface-2); border:1px solid var(--line-2); color:var(--accent); margin-bottom:16px; }
.adv-card .av-i svg{ width:21px; height:21px; }
.adv-card h4{ font-family:var(--font-disp); font-size:18px; font-weight:700; margin:0 0 8px; letter-spacing:-.01em; }
.adv-card p{ color:var(--fg-2); font-size:13.5px; line-height:1.55; margin:0; }
.adv-card .av-big{ font-family:var(--font-disp); font-weight:800; font-size:42px; letter-spacing:-.02em; line-height:1; }
@media(max-width:1000px){ .adv{ grid-template-columns:1fr 1fr; } .adv-card.w2{ grid-column:span 2; } .adv-card.h2{ grid-row:auto; } }
@media(max-width:600px){ .adv{ grid-template-columns:1fr; } .adv-card.w2{ grid-column:auto; } }

/* ============================================================ лоадер пока грузится сессия */
.auth-loading{ min-height:calc(100vh - var(--nav-h)); display:grid; place-items:center; }
.auth-spin{ width:34px; height:34px; border-radius:50%; border:3px solid var(--line-2); border-top-color:var(--accent); animation:authspin .8s linear infinite; }
@keyframes authspin{ to{ transform:rotate(360deg); } }

/* ============================================================ ГЕЙТ терминала (демо-таблицы под заглушкой) */
.gate-wrap{ position:relative; height:calc(100vh - var(--nav-h)); overflow:hidden; }
/* фейковое превью терминала — РЕАЛЬНЫЕ данные не грузятся, цифры выдуманы */
.gate-demo{ filter:blur(4px) saturate(.85); opacity:.5; pointer-events:none; user-select:none; height:100%; overflow:hidden; }
.gate-ov{ position:absolute; inset:0; z-index:5; display:grid; place-items:center; padding:24px;
  background: radial-gradient(110% 70% at 50% 42%, rgba(5,6,9,.72), rgba(5,6,9,.92) 78%); }
.gate-card{ max-width:460px; width:100%; text-align:center; border:1px solid var(--line); border-radius:var(--r-lg);
  background: linear-gradient(180deg, rgba(22,25,33,.96), rgba(9,11,15,.98)); backdrop-filter: blur(22px);
  box-shadow: 0 40px 130px rgba(0,0,0,.75); padding: 44px 38px; animation: gatePop .5s cubic-bezier(.16,1,.3,1); }
@keyframes gatePop{ from{opacity:0;transform:translateY(20px) scale(.97)} to{opacity:1;transform:none} }
.gate-card h2{ font-family:var(--font-disp); font-weight:800; font-size:clamp(26px,3.2vw,36px); letter-spacing:-.03em; margin:0 0 14px; line-height:1.05; }
.gate-card p{ color:var(--fg-2); font-size:15px; line-height:1.55; margin:0 0 28px; }
.gate-card .btn-primary{ width:100%; justify-content:center; gap:10px; }
.gate-card .btn-primary[disabled]{ opacity:.6; pointer-events:none; }
.gate-link{ display:inline-block; margin-top:18px; font-size:13.5px; color:var(--fg-3); transition:color .2s; }
.gate-link:hover{ color:var(--accent); }

/* ============================================================ модалка входа (шапка) */
.auth-modal{ position:fixed; inset:0; z-index:300; display:grid; place-items:center; padding:24px; }
.auth-scrim{ position:absolute; inset:0; background:rgba(4,5,8,.72); backdrop-filter:blur(6px); animation:authFade .25s ease; }
@keyframes authFade{ from{opacity:0} to{opacity:1} }
.auth-box{ position:relative; max-width:400px; width:100%; text-align:center; border:1px solid var(--line); border-radius:var(--r-lg);
  background: linear-gradient(180deg, rgba(22,25,33,.96), rgba(10,12,16,.98)); box-shadow:0 50px 140px rgba(0,0,0,.7);
  padding: 38px 34px 30px; animation: authPop .4s cubic-bezier(.16,1,.3,1); }
@keyframes authPop{ from{opacity:0;transform:translateY(16px) scale(.96)} to{opacity:1;transform:none} }
.auth-x{ position:absolute; top:14px; right:14px; width:30px; height:30px; border:0; border-radius:8px; background:transparent; color:var(--fg-3); font-size:15px; cursor:pointer; transition:background .2s,color .2s; }
.auth-x:hover{ background:var(--surface); color:var(--fg); }
.auth-mark{ display:inline-grid; place-items:center; margin-bottom:18px; }
.auth-box h3{ font-family:var(--font-disp); font-weight:800; font-size:23px; letter-spacing:-.02em; margin:0 0 10px; }
.auth-box p{ color:var(--fg-2); font-size:14.5px; line-height:1.5; margin:0 0 24px; }
.auth-box .btn-primary{ width:100%; justify-content:center; gap:10px; }
.auth-fine{ margin-top:18px; font-size:11.5px; color:var(--fg-4,#5a6172); line-height:1.5; }

/* ============================================================ модалка оплаты (чекаут) */
.pay-box{ max-width:420px; text-align:left; padding:34px 30px 26px; }
.pay-box .auth-mark{ display:flex; justify-content:center; width:100%; margin-bottom:16px; }
.pay-box h3{ text-align:center; margin-bottom:22px; }
.pay-spin{ display:block; width:22px; height:22px; margin:0 auto; border-radius:50%;
  border:2.5px solid rgba(255,255,255,.12); border-top-color:var(--accent); animation:bs .8s linear infinite; }

/* плашка выбранного плана: имя слева, цена справа, ровно на одной линии */
.pay-plan-row{ margin:0 0 14px; }
.pay-plan{ display:flex; align-items:center; justify-content:space-between; gap:16px;
  width:100%; padding:16px 20px; border:1px solid var(--accent-line);
  border-radius:var(--r-md); background:var(--accent-soft); box-sizing:border-box; }
.pay-plan .pp-dur{ font-family:var(--font-disp); font-weight:700; font-size:15px; color:var(--fg);
  letter-spacing:-.01em; line-height:1; }
.pay-plan .pp-price{ display:inline-flex; align-items:baseline; font-family:var(--font-disp);
  font-weight:800; font-size:30px; color:var(--accent); letter-spacing:-.02em; line-height:1; }
.pay-plan .pp-price .cur{ font-size:16px; font-weight:700; margin-right:3px; color:var(--accent-2); }

.pay-providers{ display:flex; flex-direction:column; gap:10px; }
.pay-prov{ display:flex; align-items:center; gap:14px; width:100%; padding:14px 16px; cursor:pointer;
  border:1px solid var(--line-2); border-radius:var(--r-md); background:var(--surface);
  color:var(--fg); text-align:left; box-sizing:border-box;
  transition:border-color .2s, background .2s, transform .15s; }
.pay-prov:hover{ border-color:var(--accent-line); background:var(--surface-2); }
.pay-prov:active{ transform:scale(.99); }
.pay-prov:disabled{ opacity:.5; pointer-events:none; }
.pay-prov.loading .pp-go{ animation:bs .8s linear infinite; }
.pay-prov .pp-ic{ flex:0 0 40px; width:40px; height:40px; display:grid; place-items:center; border-radius:11px;
  background:var(--accent-soft); border:1px solid var(--accent-line); color:var(--accent); }
.pay-prov .pp-ic svg{ width:19px; height:19px; }
.pay-prov .pp-txt{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:3px; }
.pay-prov .pp-txt b{ font-size:14.5px; font-weight:600; line-height:1.15; }
.pay-prov .pp-txt small{ font-size:12px; color:var(--fg-3); line-height:1.2; }
.pay-prov .pp-go{ flex:0 0 18px; width:18px; height:18px; color:var(--fg-3); transition:color .2s, transform .2s; }
.pay-prov .pp-go svg{ width:18px; height:18px; }
.pay-prov:hover .pp-go{ color:var(--accent); transform:translateX(2px); }
.pay-empty{ font-size:13px; color:var(--fg-3); text-align:center; padding:14px 4px; line-height:1.5; }
.pay-box .auth-fine{ margin-top:16px; text-align:center; }

/* подписка в личном кабинете */
.sub-badge.active{ background:rgba(47,212,106,.14); color:var(--up); border:1px solid rgba(47,212,106,.32); }
.sub-plans{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; margin-top:var(--s-6,22px); }
.sub-plan{ display:flex; flex-direction:column; align-items:center; gap:4px; padding:14px 10px; cursor:pointer;
  border:1px solid var(--line-2); border-radius:var(--r-md,14px); background:var(--surface); color:var(--fg);
  transition:border-color .2s, background .2s, transform .15s; }
.sub-plan:hover{ border-color:var(--accent-line); background:var(--surface-2); }
.sub-plan:active{ transform:scale(.98); }
.sub-plan.feat{ border-color:var(--accent-line); background:var(--accent-soft); }
.sub-plan .sp-dur{ font-size:13px; color:var(--fg-2); }
.sub-plan .sp-price{ font-family:var(--font-disp); font-weight:800; font-size:22px; color:var(--accent); letter-spacing:-.02em; }
.sub-plan .sp-price .cur{ font-size:13px; color:var(--accent-2); margin-right:1px; }

/* история платежей */
.ph-list{ display:flex; flex-direction:column; }
.ph-row{ display:grid; grid-template-columns:1.3fr .7fr 1fr 1fr .8fr; gap:10px; align-items:center;
  padding:11px 2px; border-bottom:1px solid var(--line); font-size:13px; }
.ph-row:last-child{ border-bottom:0; }
.ph-plan{ font-weight:600; color:var(--fg); }
.ph-amt{ font-family:var(--font-mono,monospace); color:var(--fg); }
.ph-prov{ color:var(--fg-3); text-transform:capitalize; }
.ph-date{ color:var(--fg-3); }
.ph-st{ justify-self:end; font-size:11.5px; font-weight:600; padding:3px 9px; border-radius:7px; }
.ph-st.ok{ background:rgba(47,212,106,.14); color:var(--up); }
.ph-st.wait{ background:rgba(255,178,36,.14); color:var(--accent); }
.ph-st.err{ background:rgba(255,90,77,.14); color:var(--down,#FF5A4D); }

/* тост возврата с платёжки */
.pay-toast{ position:fixed; left:50%; bottom:28px; transform:translate(-50%,140%); z-index:400;
  max-width:440px; width:calc(100% - 40px); padding:16px 20px; border-radius:var(--r-md,14px);
  border:1px solid var(--line-2); background:var(--glass-strong); backdrop-filter:blur(14px);
  box-shadow:0 30px 90px rgba(0,0,0,.6); display:flex; flex-direction:column; gap:4px;
  transition:transform .45s cubic-bezier(.16,1,.3,1); }
.pay-toast.in{ transform:translate(-50%,0); }
.pay-toast b{ font-family:var(--font-disp); font-weight:700; font-size:15px; }
.pay-toast span{ font-size:13px; color:var(--fg-2); line-height:1.5; }
.pay-toast.ok{ border-left:3px solid var(--up); }
.pay-toast.cancel{ border-left:3px solid var(--accent); }
@media (max-width:560px){ .sub-plans{ grid-template-columns:1fr 1fr; } .ph-row{ grid-template-columns:1fr 1fr; row-gap:4px; } .ph-prov,.ph-date{ display:none; } }
