/* Сайт BustPlay — на токенах --bp-* (ui.css подключён раньше и объявляет их).
   Палитра сайта: тёмная основа + цветные акценты по секциям (--accent на
   каждой .fp-секции; плеер остаётся монохромным — цвет несёт смысл там). */
:root{
  --c-indigo:#818CF8; --c-violet:#8B5CF6; --c-cyan:#22D3EE; --c-amber:#F3B857;
  --c-green:#34D399; --c-pink:#F472B6; --c-blue:#5B8CFF;
  --grad-brand:linear-gradient(100deg, var(--c-indigo), var(--c-violet) 45%, var(--c-pink));
}
*,*::before,*::after{box-sizing:border-box}
/* scroll-padding — липкая шапка (56px): без него якорь и снап кладут верх секции под шапку. */
html{scroll-behavior:smooth; scroll-padding-top:56px}
/* Аналог fullPage.js своими руками: снап по секциям. proximity, не mandatory —
   высокая секция при mandatory запирает прокрутку (известная ловушка снапа). */
@media (min-width:861px){ html{scroll-snap-type:y proximity} }
body{margin:0; background:#0A0B0D; color:var(--bp-chrome,#E8EBEF);
  font-family:var(--bp-font, ui-sans-serif,-apple-system,"Segoe UI",Arial,sans-serif);
  font-variant-numeric:tabular-nums; -webkit-font-smoothing:antialiased; line-height:1.55}
a{color:inherit}
.wrap{max-width:1040px; margin:0 auto; padding:0 24px}
a:focus-visible,button:focus-visible{outline:2px solid var(--bp-focus); outline-offset:2px}

/* ---------- шапка ---------- */
.top{position:sticky; top:0; z-index:50; backdrop-filter:blur(18px) saturate(140%);
  -webkit-backdrop-filter:blur(18px) saturate(140%);
  background:rgba(10,11,13,.72); border-bottom:1px solid var(--bp-hairline)}
.top .wrap{display:flex; align-items:center; gap:28px; height:56px}
.mark{font-size:15px; font-weight:650; letter-spacing:-.01em; text-decoration:none}
.mark b{width:6px; height:6px; border-radius:50%; background:var(--bp-played,#fff);
  display:inline-block; margin-right:8px; vertical-align:2px}
.top nav{display:flex; gap:20px; margin-left:auto}
.top nav a{font-size:13px; color:var(--bp-chrome-dim); text-decoration:none; transition:color 140ms}
.top nav a:hover,.top nav a[aria-current]{color:var(--bp-chrome)}
.top nav a[aria-current]{color:var(--c-indigo)}

/* ---------- секции ---------- */
main section{padding:64px 0; border-top:1px solid rgba(255,255,255,.06)}
.fp{position:relative; overflow:hidden}
@media (min-width:861px){
  .fp{min-height:100vh; display:flex; align-items:center; scroll-snap-align:start;
    padding:96px 0 64px}
  .fp > .wrap{width:100%}
}
/* Цветное свечение секции из её --accent. */
.fp::before{content:""; position:absolute; inset:-20% -10%; pointer-events:none; z-index:-1;
  background:
    radial-gradient(46% 42% at 82% 12%, color-mix(in srgb, var(--accent, #8B5CF6) 26%, transparent), transparent 70%),
    radial-gradient(38% 45% at 8% 88%, color-mix(in srgb, var(--accent, #8B5CF6) 14%, transparent), transparent 70%)}
.grad{background:var(--grad-brand); -webkit-background-clip:text; background-clip:text; color:transparent}
h2{position:relative}
.fp h2::after{content:""; display:block; width:44px; height:3px; border-radius:2px;
  margin-top:10px; background:var(--accent, var(--c-indigo))}
.hero h1{position:relative}

/* Появление контента секции (reveal — навешивает site.js).
   Скрытое начальное состояние — только под html.js-reveal: без JS страница видна целиком. */
@media (min-width:861px){
  .js-reveal .fp .wrap > *{opacity:0; transform:translateY(18px);
    transition:opacity 600ms cubic-bezier(.2,.8,.2,1), transform 600ms cubic-bezier(.2,.8,.2,1)}
  .js-reveal .fp.in .wrap > *{opacity:1; transform:none}
  .js-reveal .fp.in .wrap > *:nth-child(2){transition-delay:80ms}
  .js-reveal .fp.in .wrap > *:nth-child(3){transition-delay:160ms}
  .js-reveal .fp.in .wrap > *:nth-child(4){transition-delay:240ms}
  .js-reveal .fp.in .wrap > *:nth-child(5){transition-delay:320ms}
}

/* Точки-навигация fullpage. */
.fp-dots{position:fixed; right:18px; top:50%; translate:0 -50%; z-index:60;
  display:flex; flex-direction:column; gap:12px}
.fp-dots a{width:10px; height:10px; border-radius:50%; background:var(--bp-track);
  border:1px solid var(--bp-hairline-str); transition:background 200ms, transform 200ms}
.fp-dots a:hover{transform:scale(1.35)}
.fp-dots a.on{background:var(--dot-color, #fff); transform:scale(1.25);
  box-shadow:0 0 12px color-mix(in srgb, var(--dot-color, #fff) 60%, transparent)}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%)}
@media (max-width:860px){.fp-dots{display:none}}
h1{font-size:clamp(28px,4.6vw,44px); font-weight:650; letter-spacing:-.02em; line-height:1.15; margin:0 0 14px}
h2{font-size:22px; font-weight:650; letter-spacing:-.015em; margin:0 0 8px}
h3{font-size:19px; font-weight:650; letter-spacing:-.01em; margin:0 0 10px}
.lead{font-size:14px; color:var(--bp-chrome-dim); margin:0 0 28px; max-width:64ch}
.lead.small{font-size:12.5px; margin-top:14px}

/* ---------- hero ---------- */
.hero{padding:72px 0 40px; text-align:center; border-top:none !important}
@media (min-width:861px){.hero{padding-top:72px}}
.hero h1{margin:0 auto 14px; max-width:21ch}
.hero h1 em{font-style:normal; color:var(--bp-chrome-dim)}
.hero-lead{font-size:15px; color:var(--bp-chrome-dim); max-width:58ch; margin:0 auto 24px}
.chips{display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-bottom:36px}
.chip{font-size:12.5px; background:rgba(255,255,255,.06);
  border:1px solid var(--bp-hairline); border-radius:999px; padding:7px 14px}
.chip b{font-weight:600; background:var(--grad-brand); -webkit-background-clip:text;
  background-clip:text; color:transparent}
.chip:nth-child(1){border-color:color-mix(in srgb, var(--c-indigo) 45%, transparent)}
.chip:nth-child(2){border-color:color-mix(in srgb, var(--c-cyan) 45%, transparent)}
.chip:nth-child(3){border-color:color-mix(in srgb, var(--c-amber) 45%, transparent)}
.chip:nth-child(4){border-color:color-mix(in srgb, var(--c-green) 45%, transparent)}
#hero-player{width:min(880px, 96vh); max-width:100%; aspect-ratio:16/9; margin:0 auto;
  box-shadow:0 48px 110px -34px rgba(0,0,0,.92), 0 0 0 1px rgba(255,255,255,.08),
    0 0 90px -20px color-mix(in srgb, var(--c-violet) 45%, transparent)}
.hero-note{font-size:12px; color:var(--bp-chrome-mute); margin-top:14px}

/* ---------- УТП-слайдер ---------- */
.fp-usp{transition:--accent 400ms}
.usp{border:1px solid color-mix(in srgb, var(--accent, var(--c-indigo)) 35%, var(--bp-hairline));
  border-radius:18px; overflow:hidden; background:rgba(255,255,255,.03);
  box-shadow:0 30px 90px -40px color-mix(in srgb, var(--accent, var(--c-indigo)) 50%, transparent);
  transition:border-color 400ms, box-shadow 400ms}
@media (min-width:861px){.fp-usp .usp-stage{min-height:340px; padding:44px 48px 48px}}
.usp-tabs{display:grid; grid-template-columns:repeat(4,1fr); border-bottom:1px solid var(--bp-hairline)}
.usp-tabs button{font:inherit; font-size:13px; color:var(--bp-chrome-dim); background:none; border:0;
  padding:14px 10px 12px; cursor:pointer; position:relative; transition:color 160ms}
.usp-tabs button[aria-selected="true"]{color:var(--accent, var(--bp-chrome))}
.usp-progress{position:absolute; left:14px; right:14px; bottom:0; height:2px;
  background:var(--bp-track); border-radius:2px; overflow:hidden; display:block}
.usp-progress span{display:block; height:100%; width:0; background:var(--accent, #fff)}
.usp-tabs button[aria-selected="true"] .usp-progress span{animation:usp-fill var(--usp-interval,7s) linear forwards}
@keyframes usp-fill{to{width:100%}}
/* Слайды — grid-стек в одной ячейке, скрытие видимостью, а НЕ display:
   toggle display менял высоту сцены, и proximity-снап пере-выравнивал
   страницу — клик по табу дёргал прокрутку. Геометрия обязана быть статичной. */
.usp-stage{position:relative; padding:34px 38px 38px; min-height:280px; display:grid}
.usp-stage .usp-slide{grid-area:1/1}
.usp-stage .usp-slide[hidden]{display:block; visibility:hidden; pointer-events:none}
.usp-slide{animation:usp-in 420ms cubic-bezier(.2,.8,.2,1)}
@keyframes usp-in{from{opacity:0; transform:translateY(10px)}to{opacity:1; transform:none}}
.usp-kicker{font-size:12px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--accent, var(--bp-chrome-mute)); margin:0 0 6px; font-weight:600}
.usp-text{font-size:14px; color:var(--bp-chrome-dim); max-width:62ch; margin:0 0 16px}
.usp-points{margin:0; padding:0; list-style:none; display:grid; gap:8px}
.usp-points li{font-size:13px; padding-left:18px; position:relative}
.usp-points li::before{content:""; position:absolute; left:0; top:.55em; width:6px; height:6px;
  border-radius:50%; background:var(--accent, #fff);
  box-shadow:0 0 8px color-mix(in srgb, var(--accent, #fff) 70%, transparent)}

/* ---------- анимация кода ---------- */
.install-grid{display:grid; grid-template-columns:1fr 1.2fr; gap:36px; align-items:center}
@media (max-width:820px){.install-grid{grid-template-columns:1fr}}
.btn-primary{display:inline-block; font-size:14px; font-weight:600; text-decoration:none;
  color:#fff; background:var(--grad-brand); border-radius:11px; padding:12px 22px;
  box-shadow:0 10px 30px -12px color-mix(in srgb, var(--c-violet) 70%, transparent);
  transition:transform 140ms, box-shadow 140ms}
.btn-primary:hover{transform:translateY(-1px);
  box-shadow:0 14px 36px -12px color-mix(in srgb, var(--c-violet) 85%, transparent)}
.typewriter{border:1px solid color-mix(in srgb, var(--c-cyan) 30%, var(--bp-hairline));
  border-radius:14px; overflow:hidden; background:rgba(14,17,21,.8);
  box-shadow:0 30px 80px -40px color-mix(in srgb, var(--c-cyan) 45%, transparent)}
.tw-bar{display:flex; align-items:center; gap:7px; padding:10px 14px;
  border-bottom:1px solid var(--bp-hairline); font-size:12px; color:var(--bp-chrome-mute)}
.tw-bar i{width:10px; height:10px; border-radius:50%; background:var(--bp-track)}
.tw-bar i:nth-child(1){background:#FF5F57}.tw-bar i:nth-child(2){background:#FEBC2E}
.tw-bar i:nth-child(3){background:#28C840}
.tw-bar span{margin-left:6px}
.tw-screen{margin:0; padding:18px; min-height:320px; overflow-x:auto; font-size:12.5px; line-height:1.65;
  font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace; white-space:pre}
.tw-caret{display:inline-block; width:7px; height:1.1em; vertical-align:-2px;
  background:var(--c-cyan); animation:tw-blink 1s steps(1) infinite}
@keyframes tw-blink{50%{opacity:0}}
.tw-screen .s{color:var(--c-green)}.tw-screen .c{color:var(--bp-chrome-mute)}

/* ---------- живой конструктор плеера ---------- */
.shot-code{margin:16px 0 0; padding:12px 14px; font-size:11.5px; line-height:1.6; overflow-x:auto;
  font-family:ui-monospace,Menlo,Consolas,monospace; color:var(--bp-chrome-dim);
  border:1px solid color-mix(in srgb, var(--accent, #fff) 30%, var(--bp-hairline));
  border-radius:10px; background:rgba(14,17,21,.66)}
.shot-player{aspect-ratio:16/9; box-shadow:0 32px 80px -30px rgba(0,0,0,.9),
  0 0 0 1px rgba(255,255,255,.08),
  0 0 70px -18px color-mix(in srgb, var(--accent, #fff) 40%, transparent);
  transition:box-shadow 400ms}
.pg-grid{display:grid; grid-template-columns:280px 1fr; gap:32px; align-items:start; margin-top:20px}
@media (max-width:860px){.pg-grid{grid-template-columns:1fr}}
/* min-width:0 обязателен: intrinsic-ширина видео (1920) иначе раздувает 1fr-колонку. */
.pg-stage{min-width:0}
.pg-stage video{width:100%}
.pg-controls{display:flex; flex-direction:column; gap:16px}
.pg-controls fieldset{margin:0; padding:0; border:0}
.pg-controls legend{font-size:11px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--bp-chrome-mute); margin-bottom:8px}
.pg-seg{display:flex; flex-wrap:wrap; gap:6px}
.pg-opt input,.pg-swatch input{position:absolute; opacity:0; width:1px; height:1px}
.pg-opt span{display:inline-block; padding:5px 12px; font-size:12.5px; border-radius:999px;
  border:1px solid var(--bp-hairline-str); color:var(--bp-chrome-dim); cursor:pointer;
  transition:color 140ms, border-color 140ms, background 140ms}
.pg-opt input:checked + span{color:var(--bp-chrome);
  border-color:color-mix(in srgb, var(--accent, #fff) 55%, transparent);
  background:color-mix(in srgb, var(--accent, #fff) 14%, transparent)}
.pg-opt input:focus-visible + span{outline:2px solid var(--bp-focus); outline-offset:2px}
.pg-swatches{display:flex; gap:8px; flex-wrap:wrap}
.pg-swatch{position:relative}
.pg-swatch span{display:block; width:24px; height:24px; border-radius:50%; cursor:pointer;
  background:var(--sw, #E8EBEF); border:2px solid transparent;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18); transition:transform 140ms}
.pg-swatch-none span{background:linear-gradient(135deg,#E8EBEF 49%, #30343B 51%)}
.pg-swatch span:hover{transform:scale(1.12)}
.pg-swatch input:checked + span{border-color:var(--bp-chrome); transform:scale(1.12)}
.pg-swatch input:focus-visible + span{outline:2px solid var(--bp-focus); outline-offset:2px}
.pg-text{width:100%; padding:7px 11px; font-size:13px; color:var(--bp-chrome);
  background:rgba(14,17,21,.66); border:1px solid var(--bp-hairline-str); border-radius:8px}
.pg-text:focus-visible{outline:2px solid var(--bp-focus); outline-offset:1px}
.pg-check{display:flex; align-items:center; gap:8px; padding:4px 0; font-size:13px;
  color:var(--bp-chrome-dim); cursor:pointer}
.pg-check input{accent-color:var(--accent, #F3B857)}
.pg-check:hover{color:var(--bp-chrome)}

/* ---------- сравнение ---------- */
.table-scroll{overflow-x:auto}
table.cmp{width:100%; border-collapse:collapse; font-size:13px}
table.cmp th{padding:10px 12px; font-weight:500; color:var(--bp-chrome-dim); text-align:left}
table.cmp th:nth-child(2){color:var(--c-blue); font-weight:600}
table.cmp td:nth-child(2) b{color:var(--c-blue)}
table.cmp td{padding:10px 12px; border-top:1px solid var(--bp-hairline)}

/* ---------- FAQ ---------- */
#faq details{border-bottom:1px solid var(--bp-hairline)}
#faq summary{cursor:pointer; padding:16px 4px; font-size:14px; font-weight:550; list-style:none;
  display:flex; justify-content:space-between; align-items:center; gap:16px}
#faq summary::-webkit-details-marker{display:none}
#faq summary::after{content:"+"; color:var(--bp-chrome-mute); font-size:18px; flex:none}
#faq details[open] summary::after{content:"–"}
#faq details p{margin:0 0 16px; padding:0 4px; font-size:13px; color:var(--bp-chrome-dim); max-width:70ch}

/* ---------- документация ---------- */
.docs{padding:48px 0 72px}
.docs .wrap{max-width:820px}
.docs h1{font-size:28px}
.docs h2{margin-top:38px}
.docs pre{padding:16px; overflow-x:auto; font-size:12.5px; line-height:1.6; border-radius:12px;
  border:1px solid var(--bp-hairline); background:rgba(14,17,21,.66);
  font-family:ui-monospace,Menlo,Consolas,monospace}
.docs code{font-family:ui-monospace,Menlo,Consolas,monospace; font-size:.92em}
.docs p code,.docs li code{background:rgba(255,255,255,.07); border-radius:5px; padding:1px 5px}
.docs blockquote{margin:0 0 16px; padding:10px 16px; border-inline-start:2px solid var(--bp-hairline-str);
  color:var(--bp-chrome-dim); font-size:13.5px}
.docs ul{padding-left:22px}
.docs li{margin:6px 0; font-size:14px}
.crumbs{font-size:12.5px; color:var(--bp-chrome-dim); margin-bottom:22px}
.crumbs a{color:var(--bp-chrome-dim)} .crumbs a:hover{color:var(--bp-chrome)}

/* ---------- футер ---------- */
footer{padding:40px 0 56px; border-top:1px solid rgba(255,255,255,.06);
  font-size:12.5px; color:var(--bp-chrome-mute)}
footer .wrap{display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap}
footer a{color:var(--bp-chrome-mute)} footer a:hover{color:var(--bp-chrome)}

@media (max-width:640px){
  .top .wrap{gap:14px}
  /* Меню не прячем — горизонтальная прокрутка адаптивнее скрытия. */
  .top nav{overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; gap:14px}
  .top nav::-webkit-scrollbar{display:none}
  .top nav a{white-space:nowrap}
  .hero{padding-top:48px}main section{padding:48px 0}
  .usp-tabs{grid-template-columns:repeat(2,1fr)}
  .usp-stage{padding:24px 20px 28px; min-height:0}
  h1{font-size:30px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto; scroll-snap-type:none !important}
  .usp-slide{animation:none}
  .usp-tabs button[aria-selected="true"] .usp-progress span{animation:none; width:100%}
  .tw-caret{animation:none}
  .fp .wrap > *{opacity:1 !important; transform:none !important; transition:none !important}
}
