/* Мастерская — витрина проектов. Тёмная тема по умолчанию, светлая — по системе или переключателю. */

/* ---------- токены ---------- */
:root{
  color-scheme:dark;
  --bg:#08090C;
  --bg-2:#0E1015;
  --panel:rgba(255,255,255,.028);
  --panel-2:rgba(255,255,255,.055);
  --line:rgba(255,255,255,.08);
  --line-2:rgba(255,255,255,.15);
  --text:#F2F3F6;
  --text-2:#BCC1CD;
  --muted:#80879A;
  --accent:#C8F560;
  --accent-ink:#0B0D07;
  --accent-text:#C8F560;
  --hl-a:#C8F560;
  --hl-b:#F4FFD6;
  --ok:#B4F03C;
  --bad:#FF6B5E;
  --wait:#80879A;
  --dot-rgb:255,255,255;
  --dot-a:.12;
  --dot-hot:200,245,96;
  --aurora-1:#5B4BFF;
  --aurora-2:#10B7A6;
  --aurora-3:#F2A93B;
  --aurora-op:.2;
  --grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  --grain-op:.055;
  --shadow:0 1px 0 rgba(255,255,255,.035) inset,0 24px 60px -28px rgba(0,0,0,.7);
  --radius:24px;
  --font-display:"Unbounded",ui-sans-serif,system-ui,sans-serif;
  --font-text:"Onest",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Consolas,monospace;
  --ease:cubic-bezier(.2,.75,.12,1);
}
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]){
    color-scheme:light;
    --bg:#F3F3EE; --bg-2:#FFFFFF;
    --panel:rgba(255,255,255,.6); --panel-2:rgba(255,255,255,.95);
    --line:rgba(14,16,22,.09); --line-2:rgba(14,16,22,.18);
    --text:#0E1016; --text-2:#3A404C; --muted:#6A7080;
    --accent-text:#4A7600; --hl-a:#3F6B00; --hl-b:#7DB100;
    --ok:#3E8F00; --bad:#D2382B; --wait:#9AA0AE;
    --dot-rgb:14,16,22; --dot-a:.16; --dot-hot:74,118,0;
    --aurora-op:.13;
    --grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .5 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
    --grain-op:.04;
    --shadow:0 1px 2px rgba(14,16,22,.04),0 22px 50px -28px rgba(14,16,22,.28);
  }
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#F3F3EE; --bg-2:#FFFFFF;
  --panel:rgba(255,255,255,.6); --panel-2:rgba(255,255,255,.95);
  --line:rgba(14,16,22,.09); --line-2:rgba(14,16,22,.18);
  --text:#0E1016; --text-2:#3A404C; --muted:#6A7080;
  --accent-text:#4A7600; --hl-a:#3F6B00; --hl-b:#7DB100;
  --ok:#3E8F00; --bad:#D2382B; --wait:#9AA0AE;
  --dot-rgb:14,16,22; --dot-a:.16; --dot-hot:74,118,0;
  --aurora-op:.13;
  --grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .5 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  --grain-op:.04;
  --shadow:0 1px 2px rgba(14,16,22,.04),0 22px 50px -28px rgba(14,16,22,.28);
}

/* ---------- основа ---------- */
*,*::before,*::after{box-sizing:border-box}
/* hidden прячет всегда — даже кнопку с display:inline-flex («только гостю», «только вошедшему») */
[hidden]{display:none !important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:84px}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font-text);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
::selection{background:var(--accent);color:var(--accent-ink)}
a{color:inherit}
svg{display:block}
h1,h2,h3{text-wrap:balance}
p{text-wrap:pretty}
.wrap{width:min(1200px,100% - 32px);margin-inline:auto}
@media (min-width:720px){.wrap{width:min(1200px,100% - 64px)}}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:8px}
.skip{position:fixed;left:16px;top:-64px;z-index:200;padding:10px 16px;border-radius:12px;background:var(--accent);color:var(--accent-ink);font-weight:600;text-decoration:none;transition:top .2s}
.skip:focus{top:12px}
[hidden]{display:none !important}

/* ---------- фон ---------- */
.backdrop{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.aurora{position:absolute;border-radius:50%;opacity:var(--aurora-op);will-change:transform}
.a1{width:70vmax;height:70vmax;top:-38vmax;left:-22vmax;background:radial-gradient(circle,var(--aurora-1),transparent 64%);animation:drift1 30s ease-in-out infinite alternate}
.a2{width:62vmax;height:62vmax;top:-30vmax;right:-30vmax;background:radial-gradient(circle,var(--aurora-2),transparent 64%);animation:drift2 36s ease-in-out infinite alternate}
.a3{width:48vmax;height:48vmax;top:62vh;left:18vw;background:radial-gradient(circle,var(--aurora-3),transparent 66%);opacity:calc(var(--aurora-op) * .55);animation:drift3 42s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate3d(10vmax,8vmax,0) scale(1.12)}}
@keyframes drift2{to{transform:translate3d(-12vmax,10vmax,0) scale(.92)}}
@keyframes drift3{to{transform:translate3d(-14vmax,-10vmax,0) scale(1.18)}}
.grain{position:absolute;inset:0;background-image:var(--grain);opacity:var(--grain-op)}

/* ---------- шапка ---------- */
.top{position:sticky;top:0;z-index:50;border-bottom:1px solid transparent;transition:background .35s,border-color .35s}
.top.scrolled{background:color-mix(in oklab,var(--bg) 74%,transparent);-webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%);border-bottom-color:var(--line)}
.top-in{width:min(1200px,100% - 32px);margin-inline:auto;height:68px;display:flex;align-items:center;gap:20px}
@media (min-width:720px){.top-in{width:min(1200px,100% - 64px)}}
.brand{display:inline-flex;align-items:center;gap:11px;text-decoration:none;font-family:var(--font-display);font-weight:600;font-size:16.5px;letter-spacing:-.01em;white-space:nowrap}
.mark{width:26px;height:26px;flex:none;transition:transform .6s var(--ease)}
.mark rect{fill:none;stroke:currentColor;stroke-width:2.2}
.mark rect.on{fill:var(--accent);stroke:var(--accent)}
.brand:hover .mark{transform:rotate(90deg)}
.nav{display:flex;gap:2px;margin-left:auto}
.nav a{padding:8px 14px;border-radius:999px;color:var(--text-2);text-decoration:none;font-size:15px;font-weight:500;white-space:nowrap;transition:color .2s,background .2s}
.nav a:hover{color:var(--text);background:var(--panel-2)}
.top-actions{display:flex;gap:8px;align-items:center}
.search-btn{display:flex;align-items:center;gap:10px;height:40px;padding:0 7px 0 13px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--text-2);font:500 14px var(--font-text);cursor:pointer;transition:border-color .2s,color .2s}
.search-btn:hover{border-color:var(--line-2);color:var(--text)}
.search-btn svg,.palette-in svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
kbd{font:500 11px var(--font-mono);padding:3px 7px;border-radius:7px;border:1px solid var(--line-2);background:var(--panel-2);color:var(--muted);white-space:nowrap}
.icon-btn{width:40px;height:40px;border-radius:999px;display:grid;place-items:center;border:1px solid var(--line);background:var(--panel);color:var(--text-2);cursor:pointer;transition:border-color .2s,color .2s,transform .4s var(--ease)}
.icon-btn:hover{border-color:var(--line-2);color:var(--text)}
.icon-btn:active{transform:rotate(-30deg)}
.icon-btn[hidden]{display:none}
.icon-btn.on{color:var(--accent-text);border-color:color-mix(in oklab,var(--accent) 45%,var(--line))}
.icon-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.i-moon{display:none}
:root[data-theme="light"] .i-sun{display:none}
:root[data-theme="light"] .i-moon{display:block}
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]) .i-sun{display:none}
  :root:not([data-theme="dark"]) .i-moon{display:block}
}
/* Шапка по ширине: сначала «Переход» сжимается до значка, потом прячется меню (разделы — в быстром переходе).
   У страницы проекта в меню до четырёх разделов: с ним шапке нужно около 1080 пикселей */
@media (max-width:1100px){
  .search-btn span,.search-btn kbd{display:none}
  .search-btn{width:40px;padding:0;justify-content:center}
}
@media (max-width:1000px){
  .nav{display:none}
  .top-actions{margin-left:auto}
}
/* На телефоне в шапке — только значок: с названием не помещаются вход, тема и «Попробовать» */
@media (max-width:520px){
  .top .brand-name{display:none}
}

/* ---------- первый экран ---------- */
.hero{position:relative;min-height:min(calc(100svh - 68px),900px);display:flex;flex-direction:column;justify-content:center;padding:48px 0 36px;isolation:isolate}
.field{position:absolute;inset:-68px 0 0;width:100%;height:calc(100% + 68px);z-index:-1;-webkit-mask-image:radial-gradient(ellipse 85% 75% at 60% 42%,#000 25%,transparent 78%);mask-image:radial-gradient(ellipse 85% 75% at 60% 42%,#000 25%,transparent 78%)}
.pulse-pill{display:inline-flex;align-items:center;gap:10px;padding:7px 15px 7px 11px;border-radius:999px;border:1px solid var(--line);background:color-mix(in oklab,var(--bg) 60%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:14px;font-weight:500;color:var(--text-2);text-decoration:none;transition:border-color .2s,color .2s;animation:rise .8s var(--ease) both}
.pulse-pill:hover{border-color:var(--line-2);color:var(--text)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--wait);position:relative;flex:none}
.dot[data-state="wait"]{animation:blink 1.1s ease-in-out infinite}
.dot[data-state="ok"]{background:var(--ok);box-shadow:0 0 12px color-mix(in oklab,var(--ok) 70%,transparent)}
.dot[data-state="ok"]::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--ok);opacity:0;animation:ping 2.2s var(--ease) infinite}
.dot[data-state="bad"]{background:var(--bad)}
@keyframes ping{0%{transform:scale(.5);opacity:.85}100%{transform:scale(2.3);opacity:0}}
@keyframes blink{50%{opacity:.35}}

.hero-h{margin:26px 0 0;font-family:var(--font-display);font-weight:700;font-size:clamp(2.3rem,1rem + 5.6vw,5.6rem);line-height:.98;letter-spacing:-.04em}
.hero-h .line{display:block}
/* Длинное слово в заголовке («Видеовстречи») на узком телефоне: шрифт — по ширине экрана */
@media (max-width:400px){.hero-h{font-size:clamp(1.75rem,9.6vw,2.3rem)}}
.hero-h .w{display:inline-block;animation:rise 1s var(--ease) both}
.hero-h .line:nth-child(1) .w:nth-child(1){animation-delay:.08s}
.hero-h .line:nth-child(1) .w:nth-child(2){animation-delay:.16s}
.hero-h .line:nth-child(2) .w:nth-child(1){animation-delay:.26s}
.hero-h .line:nth-child(2) .w:nth-child(2){animation-delay:.34s}
.hero-h .hl{background:linear-gradient(100deg,var(--hl-a) 0%,var(--hl-b) 40%,var(--hl-a) 80%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-h .line:nth-child(2) .w{animation:rise 1s var(--ease) both,sheen 7s linear 1.4s infinite}
.hero-h .line:nth-child(2) .w:nth-child(1){animation-delay:.26s,1.4s}
.hero-h .line:nth-child(2) .w:nth-child(2){animation-delay:.34s,1.4s}
.caret{display:inline-block;width:.075em;height:.78em;margin-left:.08em;vertical-align:-.03em;background:var(--accent-text);border-radius:2px;animation:caret 1.05s steps(1) infinite}
@keyframes rise{from{opacity:0;transform:translateY(.42em);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes sheen{to{background-position:-220% 0}}
@keyframes caret{50%{opacity:0}}
.hero-p{max-width:34em;margin:26px 0 0;font-size:clamp(1.05rem,.94rem + .45vw,1.28rem);line-height:1.55;color:var(--text-2);animation:rise 1s var(--ease) .44s both}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px;animation:rise 1s var(--ease) .54s both}
.hero-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:clamp(44px,9vh,96px);border-top:1px solid var(--line);animation:rise 1s var(--ease) .66s both}
.hero-facts div{padding:18px 16px 0 0}
.hero-facts dt{font:500 11px var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.hero-facts dd{margin:6px 0 0;font:600 clamp(1rem,.88rem + .5vw,1.3rem)/1.2 var(--font-display);letter-spacing:-.01em}
@media (max-width:640px){
  .hero-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero-facts div:nth-child(n+3){border-top:1px solid var(--line);margin-top:16px}
}

/* ---------- кнопки ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:52px;padding:0 24px;border-radius:999px;font:600 16px var(--font-text);text-decoration:none;cursor:pointer;border:0;transition:transform .3s var(--ease),background .25s,border-color .25s,box-shadow .3s}
.btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s var(--ease)}
.btn:hover svg{transform:translateX(3px)}
.btn:active{transform:scale(.98)}
.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 0 0 1px rgba(0,0,0,.08) inset,0 14px 34px -14px color-mix(in oklab,var(--accent) 80%,transparent)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 0 1px rgba(0,0,0,.08) inset,0 20px 40px -14px color-mix(in oklab,var(--accent) 90%,transparent)}
.btn-ghost{background:var(--panel);color:var(--text);border:1px solid var(--line-2)}
.btn-ghost:hover{border-color:var(--text-2);transform:translateY(-2px)}

/* ---------- разделы ---------- */
.section{padding:clamp(72px,10vw,136px) 0}
.sec-head{display:grid;grid-template-columns:auto 1fr;align-items:baseline;column-gap:18px;margin-bottom:clamp(32px,4vw,52px)}
.sec-n{font:500 12px var(--font-mono);letter-spacing:.14em;color:var(--accent-text)}
.sec-head h2{margin:0;font:700 clamp(2.1rem,1.25rem + 3.4vw,3.7rem)/1 var(--font-display);letter-spacing:-.035em}
.sec-head p{grid-column:1 / -1;max-width:40em;margin:16px 0 0;color:var(--text-2);font-size:17.5px}
.noscript{color:var(--text-2)}

/* появление при прокрутке — только если работает скрипт */
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js .reveal.in{opacity:1;transform:none}

/* ---------- карточки ---------- */
.bento{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));grid-auto-rows:minmax(250px,auto)}
.card{--hue-text:var(--hue,var(--accent-text));position:relative;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);overflow:hidden;isolation:isolate;transition:transform .45s var(--ease),border-color .35s}
:root[data-theme="light"] .card{--hue-text:var(--hue-light,var(--hue,var(--accent-text)))}
@media (prefers-color-scheme: light){:root:not([data-theme="dark"]) .card{--hue-text:var(--hue-light,var(--hue,var(--accent-text)))}}
.card:hover{transform:translateY(-4px);border-color:var(--line-2)}
.card .glow{position:absolute;inset:0;z-index:-1;background:radial-gradient(560px circle at var(--mx,50%) var(--my,0%),color-mix(in oklab,var(--hue,var(--accent)) 15%,transparent),transparent 46%);opacity:0;transition:opacity .45s}
.card .rim{position:absolute;inset:0;border-radius:inherit;padding:1px;background:radial-gradient(380px circle at var(--mx,50%) var(--my,0%),color-mix(in oklab,var(--hue,var(--accent)) 75%,transparent),transparent 55%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);opacity:0;transition:opacity .45s;pointer-events:none}
.card:hover .glow,.card:hover .rim{opacity:1}
.eyebrow{font:500 11.5px var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--hue-text)}
.card-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.live{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 10px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);font-size:12.5px;font-weight:500;color:var(--text-2);white-space:nowrap}

/* проект — во всю ширину; раскладка внутри зависит от ширины самой карточки */
.card-feature{grid-column:1 / -1;container-type:inline-size}
.feat{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);height:100%}
.feat-body{padding:clamp(24px,3vw,40px);display:flex;flex-direction:column;gap:16px;min-width:0}
.feat-title{margin:6px 0 0;font:700 clamp(1.75rem,1.1rem + 2vw,2.7rem)/1.02 var(--font-display);letter-spacing:-.035em}
.feat-title a{text-decoration:none}
.feat-title a::after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit}
.feat-tag{margin:0;font-size:17px;font-weight:500;line-height:1.45}
.feat-text{margin:0;color:var(--text-2);font-size:15.5px;line-height:1.6}
.stats{list-style:none;padding:0;margin:4px 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.stats li{padding:14px 8px 12px 0;min-width:0}
.stats b{display:block;font:700 clamp(1.45rem,1.05rem + 1.1vw,2.05rem)/1 var(--font-display);letter-spacing:-.03em;color:var(--hue-text);font-variant-numeric:tabular-nums}
.stats span{display:block;margin-top:6px;font-size:12.5px;line-height:1.25;color:var(--muted)}
.tags{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}
.tags li{padding:5px 11px;border-radius:999px;border:1px solid var(--line);font-size:12.5px;font-weight:500;color:var(--text-2)}
.feat-foot{margin-top:auto;display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-top:6px}
.btn-project{position:relative;z-index:2;background:var(--hue,var(--accent));color:#140C00;box-shadow:0 14px 34px -16px var(--hue,var(--accent))}
.btn-project:hover{transform:translateY(-2px)}
.btn-project[aria-disabled="true"]{opacity:.5;pointer-events:none}
.url{font:500 13px var(--font-mono);color:var(--muted);overflow-wrap:anywhere}
.feat-visual{position:relative;display:flex;padding:clamp(18px,2.4vw,30px) clamp(18px,2.4vw,30px) clamp(18px,2.4vw,30px) 0;min-width:0}

/* терминал — всегда тёмный */
.term{flex:1;display:flex;flex-direction:column;min-height:380px;border-radius:18px;background:#0A0B0F;border:1px solid rgba(255,255,255,.09);box-shadow:0 40px 80px -36px rgba(0,0,0,.75),0 0 0 1px rgba(0,0,0,.25);overflow:hidden;transform:perspective(1400px) rotateY(-7deg) rotateX(2deg);transform-origin:left center;transition:transform .7s var(--ease)}
.card-feature:hover .term{transform:perspective(1400px) rotateY(-2deg) rotateX(0)}
.term-bar{display:flex;align-items:center;gap:7px;padding:12px 15px;border-bottom:1px solid rgba(255,255,255,.06);background:rgba(255,255,255,.025)}
.term-bar i{width:11px;height:11px;border-radius:50%;background:#2B2E37}
.term-bar span{margin-left:8px;font:500 12px var(--font-mono);color:#7E8494}
.term-body{flex:1;padding:16px 18px 18px;font:400 13px/1.75 var(--font-mono);color:#DADEE6;white-space:pre-wrap;word-break:break-word;overflow:hidden}
.term-body .ln{transition:opacity .4s}
.term-body .pr{color:var(--hue,#F2A93B)}
.term-body .out{color:#97A0B2}
.term-body .em{color:#C8F560}
.term-body .cur{display:inline-block;width:.62em;height:1.15em;vertical-align:-.22em;background:#DADEE6;animation:caret 1s steps(1) infinite}

/* следующий проект */
.card-soon{padding:28px;display:flex;flex-direction:column;gap:14px;background:transparent;border:1px dashed var(--line-2);box-shadow:none}
.card-soon::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 35%,color-mix(in oklab,var(--accent) 9%,transparent) 50%,transparent 65%);background-size:260% 100%;animation:sweep 5s linear infinite}
@keyframes sweep{from{background-position:130% 0}to{background-position:-130% 0}}
.loader{width:40px;height:40px}
.loader rect{fill:none;stroke:var(--line-2);stroke-width:2.2;animation:lit 2.4s var(--ease) infinite}
.loader rect:nth-child(2){animation-delay:.6s}
.loader rect:nth-child(4){animation-delay:1.2s}
.loader rect:nth-child(3){animation-delay:1.8s}
@keyframes lit{0%,100%{fill:transparent;stroke:var(--line-2)}12%,30%{fill:var(--accent);stroke:var(--accent)}45%{fill:transparent;stroke:var(--line-2)}}
.card-soon p{margin:0;color:var(--text-2);font-size:15.5px}
.card-soon .card-h{margin-top:auto}

/* ---------- страница проекта ---------- */
/* Слова-акценты заголовка — цветом проекта (--hue и --hue-light ставит app.js на body) */
body[data-project] .hero-h .hl{--hl-a:var(--hue,#C8F560);--hl-b:color-mix(in oklab,var(--hue,#C8F560) 45%,#fff)}
:root[data-theme="light"] body[data-project] .hero-h .hl{--hl-a:var(--hue-light,var(--hue));--hl-b:var(--hue)}
@media (prefers-color-scheme: light){:root:not([data-theme="dark"]) body[data-project] .hero-h .hl{--hl-a:var(--hue-light,var(--hue));--hl-b:var(--hue)}}
/* Шаги без программы рядом — в ряд карточками */
.steps-list.wide{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr))}
.steps-list.wide li{flex-direction:column}
@media (max-width:980px){.steps-list.wide{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.steps-list.wide{grid-template-columns:1fr}}
/* «Ещё проекты» внизу страницы проекта */
.others{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.ocard{display:flex;flex-direction:column;gap:10px;padding:26px 24px 24px;text-decoration:none;color:var(--text)}
.ocard .card-h{margin:0;font:600 clamp(1.25rem,1rem + .8vw,1.55rem)/1.2 var(--font-display);letter-spacing:-.02em}
.ocard p{margin:0;color:var(--text-2);font-size:15.5px;line-height:1.55}
.ocard-go{margin-top:auto;padding-top:6px;font-weight:600;font-size:15px;color:var(--hue-text)}
.ocard.soon{background:transparent;border-style:dashed;box-shadow:none}
.ocard.soon:hover{transform:none}
/* Кнопки под «Одним аккаунтом» на главной */
.acc-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(28px,4vw,44px)}

/* окно звонка в карточке «Звонков»: то же окно, что у терминала, внутри — участники встречи */
.callv{flex:1;display:flex;flex-direction:column;min-height:380px;border-radius:18px;background:#0A0B0F;border:1px solid rgba(255,255,255,.09);box-shadow:0 40px 80px -36px rgba(0,0,0,.75),0 0 0 1px rgba(0,0,0,.25);overflow:hidden;transform:perspective(1400px) rotateY(-7deg) rotateX(2deg);transform-origin:left center;transition:transform .7s var(--ease)}
.card-feature:hover .callv{transform:perspective(1400px) rotateY(-2deg) rotateX(0)}
.callv-grid{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 10px 0}
.callv-tile{position:relative;display:grid;place-items:center;min-height:96px;border-radius:12px;background:linear-gradient(160deg,#1A1D25,#111319);border:1px solid rgba(255,255,255,.06);transition:border-color .35s,box-shadow .35s}
.callv-tile b{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:color-mix(in oklab,var(--hue,#10B7A6) 24%,#1A1D25);color:#E8EBF1;font:600 19px var(--font-display)}
.callv-tile span{position:absolute;left:10px;bottom:8px;font:500 12px var(--font-text);color:#AEB4C2}
.callv-tile.talk{border-color:var(--hue,#10B7A6);box-shadow:0 0 0 2px color-mix(in oklab,var(--hue,#10B7A6) 50%,transparent) inset,0 0 26px -8px var(--hue,#10B7A6)}
.callv-tile.talk b{box-shadow:0 0 0 4px color-mix(in oklab,var(--hue,#10B7A6) 35%,transparent)}
.callv-bar{display:flex;justify-content:center;gap:12px;padding:12px 0 14px}
.callv-bar i{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#1E2129;color:#DADEE6}
.callv-bar i svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.callv-bar i.end{background:#E5484D;color:#fff}

/* игровой стол в карточке «Крысиных бегов»: то же окно, внутри — стол на шесть мест и круг из 24 клеток */
.tablev{flex:1;display:flex;flex-direction:column;min-height:380px;border-radius:18px;background:#0A0B0F;border:1px solid rgba(255,255,255,.09);box-shadow:0 40px 80px -36px rgba(0,0,0,.75),0 0 0 1px rgba(0,0,0,.25);overflow:hidden;transform:perspective(1400px) rotateY(-7deg) rotateX(2deg);transform-origin:left center;transition:transform .7s var(--ease)}
.card-feature:hover .tablev{transform:perspective(1400px) rotateY(-2deg) rotateX(0)}
.tablev-felt{position:relative;flex:1;margin:22px 26px 26px;min-height:270px;border-radius:50%;background:radial-gradient(ellipse at 50% 42%,#1E2A22,#121815 72%);border:1px solid rgba(255,255,255,.07)}
.tablev-track i{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:4px;background:rgba(255,255,255,.09);transition:background .3s,box-shadow .3s}
.tablev-track i.pay{background:color-mix(in oklab,var(--hue,#F2C14E) 40%,transparent)}
.tablev-track i.on{background:var(--hue,#F2C14E);box-shadow:0 0 14px var(--hue,#F2C14E)}
.tablev-seat{position:absolute;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;display:grid;place-items:center;background:#1E2129;border:2px solid rgba(255,255,255,.12);font:600 15px var(--font-display);color:#E8EBF1;transition:border-color .3s,box-shadow .3s}
.tablev-seat.turn{border-color:var(--hue,#F2C14E);box-shadow:0 0 18px -2px var(--hue,#F2C14E)}
.tablev-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;white-space:nowrap}
.tablev-center span{display:block;font:500 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:#7E8494}
.tablev-center b{display:block;margin-top:6px;font:700 24px var(--font-display);letter-spacing:-.02em;color:var(--hue,#F2C14E)}

/* сценка в карточке курса языков: то же окно, внутри — разговор с учителем.
   Иероглифы и пиньинь — цветом тона, как в самом курсе (окно всегда тёмное — цвета тёмной темы курса) */
.chatv{--t1:#FF7A63;--t2:#4FCA9B;--t3:#74A8FF;--t4:#C595F5;--t5:#9B9184;flex:1;display:flex;flex-direction:column;min-height:380px;border-radius:18px;background:#0A0B0F;border:1px solid rgba(255,255,255,.09);box-shadow:0 40px 80px -36px rgba(0,0,0,.75),0 0 0 1px rgba(0,0,0,.25);overflow:hidden;transform:perspective(1400px) rotateY(-7deg) rotateX(2deg);transform-origin:left center;transition:transform .7s var(--ease)}
.card-feature:hover .chatv{transform:perspective(1400px) rotateY(-2deg) rotateX(0)}
.chatv .term-bar span,.chatv-done{white-space:nowrap}
.chatv-done{margin-left:auto;font:600 11px var(--font-mono);font-style:normal;letter-spacing:.08em;text-transform:uppercase;color:var(--t2);opacity:0;transition:opacity .4s}
.chatv.done .chatv-done{opacity:1}
.chatv-goals{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.06)}
.chatv-goals span{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 6px;border-radius:999px;border:1px solid rgba(255,255,255,.1);font:500 11.5px/1.2 var(--font-text);color:#8B91A0;transition:color .3s,border-color .3s,background-color .3s}
.chatv-goals span::before{content:"";display:grid;place-items:center;width:14px;height:14px;box-sizing:border-box;border-radius:50%;border:1.5px solid currentColor;font:700 9px/1 var(--font-text)}
.chatv-goals span.ok{color:var(--t2);border-color:color-mix(in oklab,var(--t2) 40%,transparent);background:color-mix(in oklab,var(--t2) 9%,transparent)}
.chatv-goals span.ok::before{content:"✓";color:#0A0B0F;background:var(--t2);border-color:var(--t2)}
.chatv-log{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:flex-end;gap:10px;padding:12px 14px;overflow:hidden;transition:opacity .45s}
.chatv-msg{display:flex;align-items:flex-end;gap:8px;max-width:94%;animation:chatv-in .45s var(--ease) both}
.chatv-msg.me{align-self:flex-end}
@keyframes chatv-in{from{opacity:0;transform:translateY(10px)}}
.chatv-ava{flex:none;width:32px;height:32px;border-radius:50%;object-fit:cover;background:#2A2622}
.chatv-bub{min-width:0;padding:7px 12px 9px;border-radius:14px 14px 14px 5px;background:#16181F;border:1px solid rgba(255,255,255,.07)}
.chatv-msg.me .chatv-bub{border-radius:14px 14px 5px 14px;background:#1B1E26;border-color:color-mix(in oklab,var(--hue,#F0563A) 50%,transparent)}
.chatv-zh{display:flex;flex-wrap:wrap;align-items:flex-end;color:#E8EBF1;font:500 20px/1.2 "PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC",sans-serif}
.chatv-zh>span{display:inline-flex;align-items:flex-end}
.chatv-zh b{display:inline-flex;flex-direction:column;align-items:center;min-width:1.05em;font-weight:500}
.chatv-zh small{font:500 10px/1.4 var(--font-text)}
.chatv .t1{color:var(--t1)}
.chatv .t2{color:var(--t2)}
.chatv .t3{color:var(--t3)}
.chatv .t4{color:var(--t4)}
.chatv .t5{color:var(--t5)}
.chatv-ru{margin:3px 0 0;font:400 12.5px/1.4 var(--font-text);color:#8B91A0}
.chatv-bub.help{background:color-mix(in oklab,var(--hue,#F0563A) 9%,#16181F);border-color:color-mix(in oklab,var(--hue,#F0563A) 32%,transparent)}
.chatv-help{margin:0;font:500 13px/1.45 var(--font-text);color:#DADEE6}
.chatv-teach{display:flex;flex-wrap:wrap;align-items:flex-end;gap:2px 8px;margin:6px 0 0}
.chatv-en{color:#E8EBF1;font:500 15.5px/1.4 var(--font-text)}
.chatv-pron{padding-bottom:2px;font:400 11.5px var(--font-mono);color:#A9B0BE}
.chatv-tr{padding-bottom:3px;font:400 12.5px var(--font-text);color:#8B91A0}
.chatv-say{display:flex;align-items:center;gap:10px;padding:10px 12px 12px;border-top:1px solid rgba(255,255,255,.06)}
.chatv-say i{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--hue,#F0563A);color:#140C00}
.chatv-say i svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.chatv-say i.rec{animation:chatv-rec 1s ease-in-out infinite}
@keyframes chatv-rec{50%{box-shadow:0 0 0 7px color-mix(in oklab,var(--hue,#F0563A) 30%,transparent)}}
.chatv-say span{flex:1;min-width:0;padding:9px 14px;border-radius:999px;background:#16181F;border:1px solid rgba(255,255,255,.07);font:400 13px var(--font-text);color:#6F7585;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

@container (max-width:820px){
  .tablev{transform:none;min-height:300px}
  .card-feature:hover .tablev{transform:none}
  .feat{grid-template-columns:1fr}
  .feat-visual{padding:0 clamp(18px,4cqi,32px) clamp(18px,4cqi,32px)}
  .term{transform:none;min-height:280px}
  .card-feature:hover .term{transform:none}
  .callv{transform:none;min-height:280px}
  .card-feature:hover .callv{transform:none}
  .chatv{transform:none;min-height:340px}
  .card-feature:hover .chatv{transform:none}
}
@container (max-width:520px){
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stats li:nth-child(n+3){border-top:1px solid var(--line)}
  .term-body{font-size:11.5px}
  .chatv-zh{font-size:18px}
  .chatv-en{font-size:14.5px}
  .chatv-log{padding:10px 12px}
  .chatv-goals{gap:5px;padding:9px 10px}
  .chatv-goals span{gap:5px;padding:3px 8px 3px 5px;font-size:11px}
}

/* быстрый переход */
.card-quick{padding:28px;display:flex;flex-direction:column;align-items:flex-start;gap:14px;text-align:left;font:inherit;color:inherit;cursor:pointer}
.card-quick .keys{display:flex;gap:10px;margin:6px 0 auto}
.cap{display:grid;place-items:center;min-width:58px;height:58px;padding:0 14px;border-radius:14px;font:600 17px var(--font-mono);color:var(--text);background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line-2);box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 5px 0 var(--line),0 10px 24px -12px rgba(0,0,0,.6);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.card-quick:hover .cap{transform:translateY(3px);box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 2px 0 var(--line),0 6px 16px -10px rgba(0,0,0,.6)}
.card-quick:hover .cap + .cap{transition-delay:.06s}
.quick-p{color:var(--text-2);font-size:15px;line-height:1.5}

/* ---------- связь ---------- */
.contact{padding-top:0}
.contact-card{position:relative;overflow:hidden;border-radius:32px;padding:clamp(36px,6vw,80px) clamp(24px,5vw,72px);text-align:center;background:radial-gradient(70% 120% at 50% 0%,color-mix(in oklab,var(--accent) 14%,transparent),transparent 70%),var(--panel);border:1px solid var(--line)}
.contact-card h2{margin:0;font:700 clamp(2rem,1.2rem + 3.2vw,3.5rem)/1.04 var(--font-display);letter-spacing:-.035em}
.contact-card p{margin:16px auto 0;max-width:30em;color:var(--text-2);font-size:17.5px}
.contact-links{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:30px}

/* ---------- кнопка в шапке ---------- */
.btn-sm{height:40px;padding:0 18px;font-size:14.5px}
.top-cta{white-space:nowrap}
.more{position:relative;z-index:2;font-weight:600;font-size:15px;color:var(--text-2);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:4px}
.more:hover{color:var(--text);text-decoration-color:currentColor}
@media (max-width:420px){.search-btn{display:none}.top-cta{padding:0 14px}}

/* ---------- страница проекта ---------- */
.landing .sec-n{color:var(--hue-text,var(--accent-text))}
.landing{--hue-text:var(--hue,var(--accent-text))}
:root[data-theme="light"] .landing{--hue-text:var(--hue-light,var(--hue,var(--accent-text)))}
@media (prefers-color-scheme: light){:root:not([data-theme="dark"]) .landing{--hue-text:var(--hue-light,var(--hue,var(--accent-text)))}}
.feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}
.fcard{padding:26px 24px 24px}
.fcard-ico{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;margin-bottom:18px;color:var(--hue-text);background:color-mix(in oklab,var(--hue,var(--accent)) 14%,transparent);border:1px solid color-mix(in oklab,var(--hue,var(--accent)) 30%,transparent)}
.fcard-ico svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.fcard h3{margin:0 0 8px;font:600 18.5px/1.25 var(--font-display);letter-spacing:-.015em}
.fcard p{margin:0;color:var(--text-2);font-size:15.5px;line-height:1.55}
.land-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:clamp(24px,4vw,56px);margin-top:clamp(48px,6vw,80px)}
.land-h{margin:0 0 18px;font:600 clamp(1.25rem,1rem + .8vw,1.6rem)/1.2 var(--font-display);letter-spacing:-.02em}
.steps-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.steps-list li{display:flex;gap:16px;align-items:flex-start;padding:16px 18px;border-radius:18px;background:var(--panel);border:1px solid var(--line)}
.st-n{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font:700 15px var(--font-display);color:#140C00;background:var(--hue,var(--accent))}
.steps-list b{display:block;font-size:16.5px;font-weight:600;margin-top:5px}
.steps-list p{margin:4px 0 0;color:var(--text-2);font-size:15px;line-height:1.5}
.program{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.program li{display:grid;grid-template-columns:minmax(120px,170px) 1fr;gap:6px 18px;padding:15px 0;border-bottom:1px solid var(--line)}
.program b{font:600 14.5px var(--font-display);letter-spacing:-.01em;color:var(--hue-text)}
.program span{color:var(--text-2);font-size:15px;line-height:1.5}
@media (max-width:520px){.program li{grid-template-columns:1fr}}
.land-cta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;margin-top:clamp(36px,5vw,56px)}
.land-note{color:var(--muted);font-size:14.5px}

/* ---------- тарифы ---------- */
.price-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px;align-items:stretch}
.pcard{padding:28px 26px 26px;display:flex;flex-direction:column;gap:10px;overflow:visible}
.pcard.best{border-color:color-mix(in oklab,var(--hue,var(--accent)) 70%,transparent);box-shadow:0 0 0 1px color-mix(in oklab,var(--hue,var(--accent)) 55%,transparent) inset,var(--shadow)}
.pcard.trial{background:radial-gradient(120% 90% at 0% 0%,color-mix(in oklab,var(--accent) 12%,transparent),transparent 60%),var(--panel)}
.pcard-tag{position:absolute;top:-11px;right:22px;padding:4px 11px;border-radius:999px;font:700 11px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:#140C00;background:var(--hue,var(--accent))}
.pcard-t{margin:2px 0 0;font:600 20px/1.2 var(--font-display);letter-spacing:-.02em}
.pcard-p{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:6px 0 4px}
.pcard-p b{font:800 clamp(2rem,1.5rem + 1.6vw,2.6rem)/1 var(--font-display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.pcard-p span{color:var(--muted);font-size:14.5px}
.pcard-list{list-style:none;margin:6px 0 18px;padding:0;display:flex;flex-direction:column;gap:9px}
.pcard-list li{display:flex;gap:10px;align-items:flex-start;color:var(--text-2);font-size:15px;line-height:1.45}
.pcard-list svg{flex:none;margin-top:2px;fill:none;stroke:var(--ok);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.pcard .btn{margin-top:auto;align-self:stretch}
.price-note{color:var(--muted);align-self:center}
.pay-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:22px;color:var(--muted);font-size:14.5px}
.brand-badge{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:7px;border:1px solid var(--line-2);background:var(--panel-2);color:var(--text);font:800 12px var(--font-display);letter-spacing:.04em}

/* ---------- вопросы ---------- */
.faq{display:flex;flex-direction:column;gap:10px;max-width:860px}
.faq-item{border-radius:18px;background:var(--panel);border:1px solid var(--line);transition:border-color .25s}
.faq-item[open]{border-color:var(--line-2)}
.faq-item summary{display:flex;align-items:center;gap:16px;padding:18px 22px;cursor:pointer;list-style:none;font-weight:600;font-size:17px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary i{position:relative;flex:none;width:22px;height:22px;margin-left:auto;border-radius:50%;border:1px solid var(--line-2)}
.faq-item summary i::before,.faq-item summary i::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:2px;margin:-1px 0 0 -5px;border-radius:2px;background:var(--text-2);transition:transform .3s var(--ease)}
.faq-item summary i::after{transform:rotate(90deg)}
.faq-item[open] summary i::after{transform:rotate(0)}
.faq-item p{margin:0;padding:0 22px 20px;color:var(--text-2);font-size:16px;line-height:1.6;max-width:68ch}

/* ---------- подвал ---------- */
.foot{border-top:1px solid var(--line);padding:30px 0 calc(30px + env(safe-area-inset-bottom))}
.foot-in{display:flex;align-items:center;gap:18px 28px;flex-wrap:wrap}
.foot .brand{font-size:15px}
.foot .mark{width:22px;height:22px}
.foot-links{display:flex;flex-wrap:wrap;gap:6px 18px;margin-left:auto}
.foot-links a{color:var(--muted);font-size:14px;text-decoration:none}
.foot-links a:hover{color:var(--text)}
.foot-copy{margin:0;font-size:14px;color:var(--muted)}
@media (max-width:640px){.foot-links{margin-left:0;width:100%;order:3}}

/* ---------- быстрый переход ---------- */
.palette{position:fixed;inset:0;z-index:100;display:grid;justify-items:center;align-items:start;padding-top:min(16vh,150px)}
.palette-scrim{position:absolute;inset:0;background:color-mix(in oklab,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fade .2s ease both}
.palette-box{position:relative;width:min(600px,100% - 32px);border-radius:20px;background:var(--bg-2);border:1px solid var(--line-2);box-shadow:0 50px 120px -40px rgba(0,0,0,.75);overflow:hidden;animation:pop .26s var(--ease) both}
.palette-in{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);color:var(--muted)}
.palette-in input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font:500 17px var(--font-text)}
.palette-in input::placeholder{color:var(--muted)}
.palette-list{list-style:none;margin:0;padding:8px;max-height:min(60vh,420px);overflow:auto}
.palette-list li{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;cursor:pointer;color:var(--text-2);font-size:15.5px}
.palette-list li[aria-selected="true"]{background:var(--panel-2);color:var(--text);box-shadow:0 0 0 1px var(--line) inset}
.palette-list .ic{width:30px;height:30px;flex:none;border-radius:9px;display:grid;place-items:center;background:var(--panel-2);border:1px solid var(--line);color:var(--accent-text)}
.palette-list .ic svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.palette-list .k{margin-left:auto;font:500 11.5px var(--font-mono);color:var(--muted);white-space:nowrap}
.palette-empty{padding:18px;text-align:center;color:var(--muted);cursor:default !important}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:translateY(-8px) scale(.98)}}

/* ---------- страница 404 ---------- */
.nf{min-height:calc(100vh - 68px);display:grid;place-items:center;text-align:center;padding:40px 0}
.nf b{display:block;font:800 clamp(5rem,3rem + 12vw,12rem)/.9 var(--font-display);letter-spacing:-.06em;background:linear-gradient(100deg,var(--hl-a),var(--hl-b),var(--hl-a));background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:sheen 7s linear infinite}
.nf h1{margin:18px 0 8px;font:600 clamp(1.4rem,1rem + 1.6vw,2rem) var(--font-display);letter-spacing:-.02em}
.nf p{margin:0 0 28px;color:var(--text-2)}

/* ---------- меньше движения ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  .js .reveal{opacity:1;transform:none}
  .term,.callv,.tablev,.chatv{transform:none}
}

/* ---------- документы: оферта, политика ---------- */
.doc{max-width:780px;padding:48px 0 96px}
.doc h1{margin:18px 0 6px;font:700 clamp(1.7rem,1.2rem + 2vw,2.6rem)/1.1 var(--font-display);letter-spacing:-.03em}
.doc h2{margin:34px 0 10px;font:600 19px/1.3 var(--font-display);letter-spacing:-.01em}
.doc p{margin:0 0 12px;color:var(--text-2);line-height:1.7}
.doc a{color:var(--accent-text)}
.doc-meta{color:var(--muted) !important;font-size:14px}
.doc-note{padding:14px 18px;border-radius:14px;border:1px dashed var(--line-2);background:var(--panel);font-size:14.5px}
