/* klyvra.dev · направление B «Полёт». Движение — только токены --k-* (motion.css) и --b-* (ниже).
   Литералы мс/кривых в правилах — только там, где это записано в DESIGN.md §7 «Отклонения». */

/* ---------- Шрифты: css/fonts.css (data:-URI, см. там) ---------- */
/* метрический фолбэк Onest (числа демо motion-04, 01 §3.5): подмена шрифта без CLS */
@font-face { font-family: "Onest Fallback"; src: local("Roboto"), local("Arial"), local("Liberation Sans"); size-adjust: 102.6%; ascent-override: 94.5%; descent-override: 29.7%; line-gap-override: 0%; }

/* ---------- Токены ---------- */
:root {
  --bg: #0b0a10;            /* oklch(14.9% 0.013 292.4) */
  --surface: #14121b;       /* oklch(18.9% 0.018 294.8) */
  --surface-2: #1c1926;     /* oklch(22.3% 0.025 294.9) */
  --surf-a: rgb(20 18 27 / .9);
  --line: #2b2735;
  --line-strong: #6e6780;   /* границы контролов ≥ 3:1 */
  --text: #eeeaf4;          /* 16,6:1 */
  --muted: #a59fb3;         /* 7,7:1 */
  --accent: #ff5c8a;        /* Росчерк, акцент: 6,7:1 */
  --accent-hi: #ff7aa0;
  --accent-ink: #1a0710;    /* текст на розе 6,6:1 */
  --field: #664ae6;         /* поле «Виртуальный мир» — только графика */
  --focus: #ffd1df;
  /* мир (только шейдер и декор) */
  --w-horizon: #1e1829;
  --w-ground: #0c0b12;
  --w-ground-2: #2a2436;
  --w-line: #4a4358;

  --font: "Onest", "Onest Fallback", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  --gutter: clamp(16px, 4vw, 56px);
  --maxw: 1320px;
  --gap: clamp(12px, 1.6vw, 24px);
  --radius: 22px;
  --bar-h: 64px;
  --s-2: clamp(64px, 7vw, 96px);
  --s-3: clamp(96px, 10vw, 144px);
  --s-4: clamp(128px, 13vw, 192px);

  /* бренд-слой: Росчерк (геометрия штриха — из build-brand демо motion-04, слово 3,655 em; растягивается по ширине слова) */
  --b-sig-dur: var(--k-dur-slow);
  --b-sig-ease: var(--k-ease-display);
  --b-sig-over-l: 0.1em;
  --b-sig-over-r: 0.42em;
  --b-sig-h: 0.505em;
  --b-sig-p-from: -0.0274;
  --b-sig-p-to: 1.1149;
  --b-reveal-x: calc(-24px * var(--k-move));
  --b-reveal-y: calc(1px * var(--k-move));
  --b-list-x: calc(-8px * var(--k-move));
  --b-drum-period: 1800ms;  /* ТЗ заказчика: барабан каждые 1,8 с (не UI-токен — DESIGN §7.4) */
  --b-preview-dur: 2400ms;  /* показ превью сайта (DESIGN §7.5) */
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { background: var(--bg); color: var(--text); font: 400 1.0625rem/1.55 var(--font); -webkit-text-size-adjust: 100%; text-rendering: optimizeLegibility; }
:root[data-motion="full"] { scroll-behavior: smooth; }
body { margin: 0; background: var(--bg); overflow-x: clip; min-height: 100vh; }
img, svg, canvas { display: block; }
img { max-width: 100%; height: auto; }
a { color: inherit; }
h1, h2, h3, p, ul, ol { margin: 0; }
ul, ol { padding: 0; list-style: none; }
em { font-style: normal; }
button { font: inherit; color: inherit; }
.wrap { width: min(100% - 2 * var(--gutter), var(--maxw)); margin-inline: auto; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; border-radius: 6px; }
main:focus { outline: none; }
section, article { scroll-margin-top: calc(var(--bar-h) + 8px); }
.skip { position: fixed; left: 16px; top: -100px; z-index: 50; padding: 12px 16px; background: var(--text); color: var(--bg); border-radius: 10px; font-weight: 600; }
.skip:focus { top: 12px; }
.mono { font-family: var(--mono); font-weight: 500; font-size: .8125rem; letter-spacing: .04em; text-transform: uppercase; line-height: 1.4; }
.nw { white-space: nowrap; }
.dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); flex: none; }
.dot--violet { background: var(--field); }
.arr { display: inline-block; margin-left: .45em; transition: translate var(--k-dur-base) var(--k-ease-standard); }

/* ---------- Мир: фиксированный слой под всей страницей ---------- */
.world { position: fixed; inset: 0 0 auto 0; height: 100lvh; z-index: 0; pointer-events: none; background: var(--bg); }
.world__poster { position: absolute; inset: 0;
  background: var(--bg) image-set(url(../img/world-poster.avif) type("image/avif"), url(../img/world-poster.webp) type("image/webp")) 50% 50% / cover no-repeat; }
@media (max-aspect-ratio: 4/5) {
  .world__poster { background-image: image-set(url(../img/world-poster-m.avif) type("image/avif"), url(../img/world-poster-m.webp) type("image/webp")); }
}
.world__canvas { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; transition: opacity var(--k-dur-crossfade) var(--k-ease-linear); }
.world[data-state="live"] .world__canvas { opacity: 1; }
.world__scrim { position: absolute; inset: 0; will-change: opacity; }
.world__scrim--side { background:
  linear-gradient(90deg, rgb(11 10 16 / .84) 0%, rgb(11 10 16 / .55) 38%, rgb(11 10 16 / 0) 70%),
  linear-gradient(0deg, rgb(11 10 16 / .7) 0%, rgb(11 10 16 / 0) 30%); }
.world__scrim--all { background: var(--bg); opacity: .45; }
@media (max-width: 639px), (max-aspect-ratio: 4/5) {
  .world__scrim--side { background: linear-gradient(180deg, rgb(11 10 16 / .8) 0%, rgb(11 10 16 / .66) 45%, rgb(11 10 16 / .3) 74%, rgb(11 10 16 / 0) 100%); }
}
@media (max-height: 700px) and (max-aspect-ratio: 4/5) {
  .world__scrim--side { background: linear-gradient(180deg, rgb(11 10 16 / .86) 0%, rgb(11 10 16 / .8) 55%, rgb(11 10 16 / .5) 82%, rgb(11 10 16 / .15) 100%); }
}
main, .foot { position: relative; z-index: 1; overflow-x: clip; }

/* ---------- Шапка: вордмарк · прибор пути · навигация; линия маршрута с маркером X+ ---------- */
.bar { position: fixed; inset: 0 0 auto; z-index: 30; height: var(--bar-h);
  background: linear-gradient(180deg, rgb(11 10 16 / .92) 0%, rgb(11 10 16 / .7) 70%, rgb(11 10 16 / 0) 100%); }
.bar { transition: background-color var(--k-dur-medium) var(--k-ease-standard); }
.bar.is-stuck { background: rgb(11 10 16 / .78); -webkit-backdrop-filter: blur(16px) saturate(140%); backdrop-filter: blur(16px) saturate(140%); }
.bar__in { height: 100%; display: flex; align-items: center; gap: clamp(12px, 2.4vw, 32px); }
.wordmark { font-weight: 650; font-size: 1.3125rem; letter-spacing: -.035em; text-decoration: none; padding: 10px 0; margin-right: auto; }
.wordmark span { color: var(--accent); font-weight: 520; }
.bar__read { display: none; gap: 14px; color: var(--muted); margin: 0 auto 0 0; white-space: nowrap; }
.bar__wp { color: var(--text); }
.bar__km { font-variant-numeric: tabular-nums; }
.nav { display: none; gap: clamp(8px, 1.6vw, 28px); font-size: .9375rem; }
.nav a { color: var(--muted); text-decoration: none; padding: 12px 4px; transition: color var(--k-dur-micro) var(--k-ease-linear); }
.nav a:hover, .nav a[aria-current="page"] { color: var(--text); }
.nav a[aria-current="page"] { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 6px; text-decoration-thickness: 1.5px; }
@media (min-width: 720px) { .nav { display: flex; } .wordmark { margin-right: 0; } .bar__read { display: flex; margin-left: 16px; } }
@media (max-width: 899px) { .bar__read { display: none; } .nav { margin-left: auto; } }
.route { position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: rgb(43 39 53 / .9); }
.route__mark { position: absolute; left: 0; top: -1px; width: 32px; height: 3px; border-radius: 2px; background: var(--accent); transform: translateX(0); will-change: transform; }

/* ---------- Кнопки ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; padding: 0 24px; border-radius: 999px;
  font: 560 1rem/1 var(--font); text-decoration: none; cursor: pointer; border: 1px solid var(--line-strong); background: rgb(11 10 16 / .5); color: var(--text);
  transition: background-color var(--k-dur-micro) var(--k-ease-linear), border-color var(--k-dur-micro) var(--k-ease-linear),
              color var(--k-dur-micro) var(--k-ease-linear), scale var(--k-spring-snappy-dur) var(--k-spring-snappy); }
.btn--primary { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.btn--primary:hover { background: var(--accent-hi); border-color: var(--accent-hi); }
.btn--ghost:hover { border-color: var(--text); }
.btn--sm { min-height: 44px; padding: 0 18px; font-size: .9375rem; }
.btn:active { scale: var(--k-press-scale); transition-duration: var(--k-dur-micro); }

/* ---------- Общие заголовки ---------- */
.tag { display: flex; align-items: center; gap: 12px; color: var(--text); margin-bottom: clamp(16px, 2vw, 24px); }
.tag::before { content: ""; width: 22px; height: 1.5px; background: var(--accent); flex: none; }
.h2 { font-size: clamp(2rem, 1rem + 3.4vw, 4.25rem); font-weight: 580; letter-spacing: -.035em; line-height: 1.02; text-wrap: balance; }
.sec-head { margin-bottom: clamp(36px, 5vw, 72px); max-width: 52rem; }
.sec-head--split { max-width: none; display: grid; gap: 20px; align-items: end; }
@media (min-width: 1024px) { .sec-head--split { grid-template-columns: 1.3fr 1fr; gap: 64px; } }
.sec-head__aside { color: var(--muted); max-width: 30em; font-size: 1.0625rem; }
.link-arrow { display: inline-flex; align-items: center; flex-wrap: wrap; min-height: 44px; font-weight: 560; text-decoration: none; border-bottom: 1px solid var(--line-strong); }
.link-arrow:hover { border-color: var(--accent); }
.link-arrow:hover .arr, .eco a:hover .arr { translate: 6px 0; }
.more { margin-top: clamp(28px, 4vw, 48px); }

/* ---------- Hero ---------- */
.hero { min-height: 100svh; display: flex; flex-direction: column; justify-content: center; padding-block: calc(var(--bar-h) + 40px) 56px; }
.eyebrow { display: flex; align-items: center; gap: 10px; color: var(--muted); margin-bottom: clamp(18px, 2.4vw, 32px); }
.eyebrow a { display: inline-flex; align-items: center; min-height: 44px; color: var(--text); text-decoration: none; }
.h1 { font-size: clamp(1.95rem, .4rem + 7.95vw, 7.5rem); font-weight: 620; letter-spacing: -.045em; line-height: .94; }
.h1 .ln { display: block; }
/* EN: первая строка hero («We don’t write code.» ≈ 9,04em) длиннее русской (8,22em) — кегль ограничен шириной колонки, чтобы на 320 «code.» не падало отдельной строкой. RU не затрагивается. */
:root[lang="en"] .hero .h1 { font-size: min(clamp(1.95rem, .4rem + 7.95vw, 7.5rem), calc((100vw - 2 * var(--gutter)) / 9.3)); }
.w { display: inline-block; }
.lede { max-width: 31em; margin-top: clamp(26px, 3.2vw, 44px); color: var(--text); opacity: .86;
  font-size: clamp(1.0625rem, .9rem + .55vw, 1.375rem); line-height: 1.5; text-wrap: pretty; }
.drumline { margin-top: 14px; font-size: clamp(1.25rem, 1rem + .9vw, 1.75rem); font-weight: 520; letter-spacing: -.02em; line-height: 1.25; }
.drumline__pre { color: var(--muted); }
.drum { display: none; vertical-align: bottom; position: relative; height: 1.25em; overflow: hidden; perspective: 400px; }
.drum__i { grid-area: 1 / 1; color: var(--text); white-space: nowrap; transform-origin: 50% 50% -.6em; backface-visibility: hidden; }
.drum-all { color: var(--text); }
:root.k-js[data-motion="full"] .drum { display: inline-grid; }
:root.k-js[data-motion="full"] .drum-all { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.drum__i:not(.is-cur) { opacity: 0; transform: translateY(100%) rotateX(-55deg); }
.drum__i.is-out { opacity: 0; transform: translateY(-100%) rotateX(55deg); }
.drum__i.is-cur { opacity: 1; transform: none; }
.drum.is-anim .drum__i.is-cur, .drum.is-anim .drum__i.is-out { transition: transform var(--k-dur-medium) var(--k-ease-standard), opacity var(--k-dur-medium) var(--k-ease-standard); }
@media (max-width: 639px) { .hero { justify-content: flex-start; padding-top: calc(var(--bar-h) + 7svh); } }
@media (max-width: 639px), (max-aspect-ratio: 4/5) {
  .hero { position: relative; }
  .hero .cue { position: absolute; left: 50%; bottom: max(18px, env(safe-area-inset-bottom)); transform: translateX(-50%); padding: 0 16px; border-radius: 999px;
    background: rgb(11 10 16 / .88); border: 1px solid var(--line-strong); color: var(--text); white-space: nowrap; }
}
@media (max-height: 740px) and (max-aspect-ratio: 4/5) { .hero .cue { display: none; } }
.hero__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; margin-top: clamp(30px, 4vw, 52px); }
.cue { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; color: var(--muted); text-decoration: none; }
.cue svg { width: 16px; height: 16px; }
.cue:hover { color: var(--text); }

/* ---------- Росчерк: штрих = маска слова (10 §3.1). 2 раза на страницу: «движение» и «разгоним». ---------- */
@property --p { syntax: "<number>"; inherits: false; initial-value: 2; }
@property --m { syntax: "<number>"; inherits: false; initial-value: 2; }
.key { position: relative; display: inline-block; white-space: nowrap; }
.key__w { display: inline-block;
  -webkit-mask-image: linear-gradient(90deg, #000 calc(var(--p) * 100% - .3em), transparent calc(var(--p) * 100%));
  mask-image: linear-gradient(90deg, #000 calc(var(--p) * 100% - .3em), transparent calc(var(--p) * 100%)); }
.sig { position: absolute; left: calc(-1 * var(--b-sig-over-l)); top: .8em; width: calc(100% + var(--b-sig-over-l) + var(--b-sig-over-r));
  height: var(--b-sig-h); overflow: visible; pointer-events: none; }
.sig__ink { fill: var(--accent); }
.sig__trim { stroke-dasharray: 1 2; stroke-dashoffset: 0; }
@keyframes k-sig-draw { from { stroke-dashoffset: 1; } }
@keyframes k-sig-mask { from { --p: var(--b-sig-p-from); } to { --p: var(--b-sig-p-to); } }
/* смаз скорости на «движение» (ТЗ заказчика) — тот же бросок, кончается вместе со штрихом */
@keyframes k-smear { from { transform: translateX(-.22em) skewX(-14deg) scaleX(1.08); filter: blur(5px); } }
@keyframes k-word { from { opacity: 0; transform: translate3d(-.36em, .06em, 0); } }
@keyframes k-fade { from { opacity: 0; } }
@keyframes k-mask { from { --m: -.15; } to { --m: 1.15; } }

/* Интро hero — только со скриптом режима и при полном движении: без JS и при reduce h1 стоит с первого кадра */
:root[data-motion="full"] .hero .w { animation: k-word var(--k-dur-page) var(--k-ease-display) both; animation-delay: calc(var(--k-dur-micro) + var(--i) * var(--k-stagger-lines)); }
:root[data-motion="full"] .hero { --sig-at: calc(var(--k-dur-micro) + 6 * var(--k-stagger-lines)); }
:root[data-motion="full"] .key--hero .key__w { animation: k-sig-mask var(--b-sig-dur) var(--b-sig-ease) both, k-smear var(--b-sig-dur) var(--b-sig-ease) both; animation-delay: var(--sig-at); }
:root[data-motion="full"] .key--hero .sig__trim { animation: k-sig-draw var(--b-sig-dur) var(--b-sig-ease) both; animation-delay: var(--sig-at); }
:root[data-motion="full"] .hero .w--dot { animation: k-fade var(--k-dur-base) var(--k-ease-linear) both; animation-delay: calc(var(--sig-at) + var(--k-dur-long)); }
:root[data-motion="full"] .hero .lede { -webkit-mask-image: linear-gradient(90deg, #000 calc(var(--m) * 100% - 12%), transparent calc(var(--m) * 100%));
  mask-image: linear-gradient(90deg, #000 calc(var(--m) * 100% - 12%), transparent calc(var(--m) * 100%));
  animation: k-mask var(--k-dur-cinematic) var(--k-ease-standard) both; animation-delay: calc(var(--sig-at) + var(--k-dur-base)); }
:root[data-motion="full"] .hero .drumline, :root[data-motion="full"] .hero .hero__foot, :root[data-motion="full"] .hero .eyebrow {
  animation: k-word var(--k-dur-page) var(--k-ease-display) both; animation-delay: calc(var(--sig-at) + var(--k-dur-page)); }
:root[data-motion="full"] .hero .eyebrow { animation-delay: 0s; }
:root.k-intro-done .hero *, :root.k-intro-done .hero { animation: none !important; }
:root.k-intro-done .hero .lede { -webkit-mask-image: none; mask-image: none; }

/* CTA: тот же Росчерк один раз при входе секции */
:root[data-motion="full"].k-js .cta:not(.is-in) .key--cta .key__w { --p: var(--b-sig-p-from); }
:root[data-motion="full"].k-js .cta:not(.is-in) .key--cta .sig__trim { stroke-dashoffset: 1; }
:root[data-motion="full"] .cta.is-in .key--cta .key__w { animation: k-sig-mask var(--b-sig-dur) var(--b-sig-ease) both; animation-delay: var(--k-dur-medium); }
:root[data-motion="full"] .cta.is-in .key--cta .sig__trim { animation: k-sig-draw var(--b-sig-dur) var(--b-sig-ease) both; animation-delay: var(--k-dur-medium); }
:root.k-late-done .key--cta .key__w, :root.k-late-done .key--cta .sig__trim { animation: none; }

/* ---------- О студии: абзац всплывает по строкам при скролле, ключевые слова — роза ---------- */
.about { min-height: 92svh; display: flex; flex-direction: column; justify-content: center; padding-block: clamp(96px, 16vh, 200px); }
.about .tag { margin-bottom: clamp(24px, 3vw, 40px); }
.about__text { font-size: clamp(1.5rem, .85rem + 2.3vw, 3.15rem); font-weight: 470; line-height: 1.2; letter-spacing: -.022em; max-width: 20em; text-wrap: pretty; }
.kw { color: var(--accent); }
.kw .pn { color: var(--text); }
[data-lines].is-split .wd { display: inline-block; will-change: transform, opacity; }
[data-lines].is-split .kw { color: var(--text); transition: color var(--k-dur-base) var(--k-ease-standard); }
[data-lines].is-split .kw.is-lit { color: var(--accent); }

/* ---------- Направления: созвездие, не сетка равных коробок ---------- */
.dirs { padding-block: var(--s-3) var(--s-2); }
.constellation { display: grid; gap: var(--gap); align-items: start; }
.dir { position: relative; display: flex; flex-direction: column; gap: clamp(18px, 2vw, 24px); padding: 10px;
  background: var(--surf-a); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 30px 80px -40px rgb(0 0 0 / .9);
  transition: border-color var(--k-dur-micro) var(--k-ease-linear); }
.dir:hover { border-color: #3d3749; }
.dir__stage { position: relative; border-radius: 12px; overflow: hidden; background: #100e16; border: 1px solid #221e2c; }
.dir__txt { padding: 0 clamp(10px, 1.4vw, 18px) clamp(14px, 1.6vw, 20px); }
.dir h3 { font-size: clamp(1.375rem, 1.1rem + .7vw, 1.75rem); font-weight: 600; letter-spacing: -.02em; line-height: 1.12; margin-bottom: 10px; }
.dir p:not(.dir__n):not(.mono) { color: var(--muted); max-width: 36em; }
@media (min-width: 640px) {
  .constellation { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .dir--app { grid-column: 1 / span 3; grid-row: 1 / span 2; align-self: stretch; }
  .dir--saas { grid-column: 4 / span 3; grid-row: 1; }
  .dir--auto { grid-column: 4 / span 3; grid-row: 2; }
  .dir--web { grid-column: 1 / span 3; grid-row: 3 / span 2; align-self: stretch; }
  .dir--game { grid-column: 4 / span 3; grid-row: 3; }
  .dir--world { grid-column: 4 / span 3; grid-row: 4; }
}
@media (min-width: 1024px) {
  .constellation { grid-template-columns: repeat(12, minmax(0, 1fr)); row-gap: calc(var(--gap) * 1.5); }
  .dir--app { grid-column: 1 / span 5; grid-row: 1 / span 2; }
  .dir--saas { grid-column: 7 / span 6; grid-row: 1; margin-top: 88px; }
  .dir--auto { grid-column: 6 / span 7; grid-row: 2; }
  .dir--web { grid-column: 2 / span 4; grid-row: 3 / span 2; }
  .dir--game { grid-column: 7 / span 5; grid-row: 3; margin-top: 56px; }
  .dir--world { grid-column: 8 / span 5; grid-row: 4; }
}
.dir--app .dir__stage, .dir--web .dir__stage { flex: 1; }

/* 01 · телефон, наклон за курсором (3D-параллакс) */
.stage-app { min-height: 380px; display: grid; place-items: center; perspective: 1000px;
  background: radial-gradient(60% 55% at 55% 58%, rgb(255 92 138 / .10), rgb(255 92 138 / 0) 70%), #100e16; }
@media (min-width: 1024px) { .stage-app { min-height: 470px; } }
.phone3d { position: relative; transform-style: preserve-3d; --rx: 9deg; --ry: -20deg;
  transform: rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(-2deg); will-change: transform; }
.phone3d__body { width: 178px; height: 360px; border-radius: 34px; padding: 7px; background: #0b0a10; border: 1.5px solid #3b3548;
  box-shadow: 0 50px 70px -30px rgb(0 0 0 / .85), inset 0 0 0 1px #1d1a25; }
@media (min-width: 1024px) { .phone3d__body { width: 236px; height: 480px; } .phone3d__screen { padding: 14px 16px; gap: 12px; } .ui-ring { width: 108px; height: 108px; } .phone3d__card { right: -84px; font-size: 12px; } }
.phone3d__screen { height: 100%; border-radius: 27px; overflow: hidden; background: linear-gradient(180deg, #17141f, #0f0d15);
  padding: 12px 14px; display: flex; flex-direction: column; gap: 10px; font-family: var(--mono); }
.ui-top { display: flex; justify-content: space-between; align-items: center; font-size: 9px; color: var(--muted); }
.ui-isl { width: 54px; height: 15px; border-radius: 10px; background: #000; }
.ui-h { font: 600 19px/1 var(--font); letter-spacing: -.02em; margin-top: 8px; }
.ui-ring { position: relative; width: 92px; height: 92px; margin: 8px auto 6px; }
.ui-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.ui-ring circle { fill: none; stroke-width: 9; }
.ui-ring .r0 { stroke: #262130; }
.ui-ring .r1 { stroke: var(--accent); stroke-linecap: round; stroke-dasharray: .87 1; }
.ui-ring b { position: absolute; inset: 0; display: grid; place-items: center; font: 650 24px/1 var(--font); letter-spacing: -.03em; }
.ui-row { display: grid; grid-template-columns: 26px 1fr 22px; gap: 9px; align-items: center; padding: 8px; border-radius: 12px; background: #1c1926; }
.ui-row i { width: 26px; height: 26px; border-radius: 50%; background: #2e2839; }
.ui-row:first-of-type i { background: var(--accent); opacity: .8; }
.ui-row span { height: 7px; border-radius: 4px; background: #3a3447; }
.ui-row em { height: 7px; border-radius: 4px; background: #2e2839; }
.ui-bars { flex: 1; min-height: 40px; display: flex; align-items: flex-end; gap: 6px; padding: 10px 8px 4px; border-radius: 12px; background: #16131f; }
.ui-bars i { flex: 1; height: calc(var(--h) * 100%); border-radius: 3px; background: #3a3447; }
.ui-bars i:nth-child(6) { background: var(--accent); }
.ui-tab { margin-top: auto; display: flex; justify-content: space-around; padding-top: 8px; border-top: 1px solid #221e2c; }
.ui-tab i { width: 18px; height: 4px; border-radius: 2px; background: #3a3447; }
.ui-tab i.on { background: var(--accent); }
.phone3d__card { position: absolute; right: -58px; top: 50%; transform: translateZ(70px); padding: 10px 14px; border-radius: 12px;
  background: rgb(28 25 38 / .96); border: 1px solid #3b3548; font: 500 11px/1.2 var(--mono); letter-spacing: .04em; text-transform: uppercase; color: var(--text);
  box-shadow: 0 20px 40px -18px rgb(0 0 0 / .9); white-space: nowrap; }
.phone3d__card::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 8px; border-radius: 50%; background: var(--accent); vertical-align: 1px; }

/* 02 · схема модулей собирается из линий */
.stage-saas { display: grid; place-items: center; padding: clamp(16px, 2.4vw, 28px) clamp(10px, 2vw, 24px); min-height: 230px; }
.schema { width: min(100%, 420px); height: auto; overflow: visible; }
.schema__wires path { fill: none; stroke: var(--line-strong); stroke-width: 1.6; stroke-dasharray: 1 1; stroke-dashoffset: 0; }
.schema__blocks rect { fill: #1c1926; stroke: #4a4358; stroke-width: 1.2; }
.schema__blocks rect.hot { stroke: var(--accent); }
.schema__blocks text { fill: var(--text); font: 500 16px var(--mono); text-anchor: middle; dominant-baseline: middle; letter-spacing: .02em; }
.schema__blocks g { transform-box: fill-box; transform-origin: 50% 50%; }
:root.k-js[data-motion="full"] .dir--saas:not(.is-built) .schema__wires path { stroke-dashoffset: 1; }
:root.k-js[data-motion="full"] .dir--saas:not(.is-built) .schema__blocks g { opacity: 0; transform: translateX(-8px); }
.dir--saas.is-built .schema__wires path { transition: stroke-dashoffset var(--k-dur-slow) var(--k-ease-display) calc(var(--o) * 120ms + 120ms), stroke var(--k-dur-base) var(--k-ease-standard); }
.dir--saas.is-built .schema__blocks g { transition: opacity var(--k-dur-medium) var(--k-ease-enter) calc(var(--o) * 120ms), transform var(--k-dur-medium) var(--k-ease-enter) calc(var(--o) * 120ms); }
.dir--saas.is-hot .schema__wires path { stroke: var(--accent); }
.dir--saas.is-hot .schema__blocks rect { stroke: #8a8299; }

/* 03 · импульс по цепочке шагов */
.stage-auto { padding: clamp(30px, 3vw, 48px) clamp(14px, 2.4vw, 36px) clamp(18px, 2vw, 28px); }
@media (min-width: 1024px) { .chain__node i { width: 18px; height: 18px; } .chain__node b { font-size: .8125rem; } }
.chain { position: relative; display: flex; justify-content: space-between; }
.chain__wire { position: absolute; left: 7px; right: 7px; top: 7px; height: 1.5px; background: var(--line-strong); }
.chain__pulse { position: absolute; left: 7px; right: 7px; top: 3px; height: 10px; container-type: inline-size; pointer-events: none; }
.chain__fill { position: absolute; left: 7px; right: 7px; top: 6.5px; height: 2.5px; border-radius: 2px; background: var(--accent); transform-origin: 0 50%; transform: scaleX(1); }
.dir--auto.is-armed:not(.is-run) .chain__fill { transform: scaleX(0); }
@keyframes k-fill { from { transform: scaleX(0); } }
.dir--auto.is-run .chain__fill { animation: k-fill var(--k-dur-cinematic) var(--k-ease-linear) both; }
.chain__pulse::before { content: ""; position: absolute; left: -120px; top: 2.5px; width: 120px; height: 5px; border-radius: 3px; filter: blur(1.5px);
  background: linear-gradient(90deg, rgb(255 92 138 / 0), var(--accent)); opacity: 0; }
.chain__pulse::after { content: ""; position: absolute; left: -7px; top: -2px; width: 14px; height: 14px; border-radius: 50%; background: #ffd1df;
  box-shadow: 0 0 0 4px rgb(255 92 138 / .45), 0 0 18px 6px rgb(255 92 138 / .55); opacity: 0; }
.chain__node { position: relative; display: flex; flex-direction: column; align-items: center; gap: 12px; width: 14px; }
.chain__node i { width: 14px; height: 14px; border-radius: 50%; background: #100e16; border: 1.5px solid var(--line-strong); }
.chain__node b { font: 500 .75rem/1 var(--mono); letter-spacing: .03em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.chain__node:nth-child(4) { align-items: flex-start; }
.chain__node:last-child { align-items: flex-end; }
.chain__node.is-lit i, .dir--auto:not(.is-armed) .chain__node i { border-color: var(--accent); background: radial-gradient(circle, var(--accent) 0 3px, #100e16 3.5px); }
.chain__node.is-lit b, .dir--auto:not(.is-armed) .chain__node b { color: var(--text); }
@media (max-width: 419px) { .chain__node b { font-size: .625rem; letter-spacing: .02em; } }
.chain__log { display: grid; gap: 6px; margin: 26px 0 0; padding: 14px 0 0; list-style: none; border-top: 1px dashed #2b2735; color: var(--muted); font-size: .75rem; text-transform: none; letter-spacing: .01em; }
.chain__log li:last-child { color: var(--text); }
.chain__log span { color: var(--accent); margin-right: 8px; }
@keyframes k-pulse-run { from { transform: translateX(0); opacity: 1; } 92% { opacity: 1; } to { transform: translateX(100cqw); opacity: 0; } }
.dir--auto.is-run .chain__pulse::before, .dir--auto.is-run .chain__pulse::after { animation: k-pulse-run var(--k-dur-cinematic) var(--k-ease-linear) both; }

/* 04 · превью сайта прокручивается внутри карточки */
.stage-web { min-height: 330px; padding: 16px; display: flex; background: radial-gradient(70% 60% at 50% 100%, rgb(102 74 230 / .10), rgb(102 74 230 / 0) 70%), #100e16; }
.browser { flex: 1; display: flex; flex-direction: column; border-radius: 12px; border: 1px solid #332e3f; background: #0b0a10; overflow: hidden; min-height: 300px; }
.browser__bar { display: flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border-bottom: 1px solid #221e2c; background: #14121b; flex: none; }
.browser__bar i { width: 8px; height: 8px; border-radius: 50%; background: #3a3447; }
.browser__bar span { margin-left: 10px; font-size: .6875rem; color: var(--muted); text-transform: none; }
.browser__view { position: relative; flex: 1; overflow: hidden; }
.mock { position: absolute; left: 0; right: 0; top: 0; padding: 12px 14px; display: flex; flex-direction: column; gap: 12px; will-change: transform;
  transition: transform var(--k-dur-slow) var(--k-ease-standard); }
.dir--web.is-show .mock { transform: translateY(calc(-100% + var(--view-h, 300px))); transition: transform var(--b-preview-dur) var(--k-ease-standard); }
.mk-nav { display: flex; align-items: center; gap: 8px; font: 650 11px/1 var(--font); letter-spacing: -.02em; }
.mk-nav b span { color: var(--accent); font-weight: 520; }
.mk-nav i { width: 26px; height: 4px; border-radius: 2px; background: #3a3447; margin-left: auto; }
.mk-nav i + i { margin-left: 0; }
.mk-nav em { width: 34px; height: 14px; border-radius: 7px; background: var(--accent); }
.mk-hero { position: relative; height: 150px; margin: 0 -14px; overflow: hidden; }
.mk-land { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; }
.mk-h1 { position: relative; padding: 14px 14px 0; font: 640 18px/0.98 var(--font); letter-spacing: -.04em; color: var(--text); }
.mk-h1 u { text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 2.5px; text-underline-offset: 3px; }
.mk-p { font: 470 11px/1.3 var(--font); color: var(--text); letter-spacing: -.01em; }
.mk-p b { color: var(--accent); font-weight: 470; }
.mk-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.mk-cards span { display: flex; align-items: center; gap: 6px; padding: 10px 8px; border-radius: 7px; background: #1c1926; border: 1px solid #2b2735; font: 600 9.5px/1 var(--font); color: var(--text); }
.mk-cards i { width: 8px; height: 8px; border-radius: 2px; background: var(--accent); }
.mk-cards span:nth-child(2) i { background: var(--field); } .mk-cards span:nth-child(3) i { background: #eeeaf4; } .mk-cards span:nth-child(4) i { background: #a59fb3; }
.mk-world { position: relative; height: 70px; border-radius: 8px; overflow: hidden; background: #0e0c14; }
.mk-world svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.mk-world span { position: absolute; left: 10px; top: 8px; font: 600 10px/1 var(--font); color: var(--text); }
.mk-phones { display: flex; justify-content: center; gap: 10px; padding: 4px 0; }
.mk-phones i { width: 48px; aspect-ratio: 9 / 19.4; border-radius: 8px; border: 1.5px solid #3b3548; background: #14121b center top / cover no-repeat;
  background-image: image-set(url(../img/tono-discover.avif) type("image/avif"), url(../img/tono-discover.webp) type("image/webp")); transform: rotate(-4deg); }
.mk-phones i.b { background-image: image-set(url(../img/gs-today.avif) type("image/avif"), url(../img/gs-today.webp) type("image/webp")); transform: translateY(8px); }
.mk-phones i.c { background-image: image-set(url(../img/ridelink-onair.avif) type("image/avif"), url(../img/ridelink-onair.webp) type("image/webp")); transform: rotate(4deg); }
:lang(en) .mk-phones i { background-image: image-set(url(../img/tono-discover-en.avif) type("image/avif"), url(../img/tono-discover-en.webp) type("image/webp")); }
:lang(en) .mk-phones i.b { background-image: image-set(url(../img/gs-today-en.avif) type("image/avif"), url(../img/gs-today-en.webp) type("image/webp")); }
:lang(en) .mk-phones i.c { background-image: image-set(url(../img/ridelink-onair-en.avif) type("image/avif"), url(../img/ridelink-onair-en.webp) type("image/webp")); }
.mk-cta { padding: 12px; border-radius: 8px; background: #1c1926; }
.mk-cta p { font: 640 13px/1 var(--font); letter-spacing: -.03em; color: var(--text); margin-bottom: 10px; }
.mk-cta b { display: inline-block; padding: 6px 10px; border-radius: 999px; background: var(--accent); color: var(--accent-ink); font: 600 9px/1 var(--font); }
.mk-foot { display: flex; gap: 8px; padding: 2px 0 6px; }
.mk-foot i { width: 30px; height: 4px; border-radius: 2px; background: #2b2735; }

/* 05 · пиксели */
.stage-game { height: 220px; display: grid; place-items: center;
  background-color: #100e16;
  background-image: linear-gradient(#1a1722 1px, transparent 1px), linear-gradient(90deg, #1a1722 1px, transparent 1px);
  background-size: 12px 12px; background-position: -1px -1px; }
.sprite { width: 160px; height: auto; }
.stage-game__hud { position: absolute; left: 12px; right: 12px; top: 10px; display: flex; justify-content: space-between; color: var(--muted); font-size: .6875rem; }
.stage-game__hud span:last-child { color: var(--accent); letter-spacing: .2em; }
.pixels { position: absolute; inset: -90px; width: calc(100% + 180px); height: calc(100% + 180px); pointer-events: none; z-index: 3; }

/* 06 · вход в мир */
.dir--world { text-decoration: none; display: grid; grid-template-columns: 1fr auto; gap: 8px 18px; align-items: center; padding: clamp(22px, 2.4vw, 30px);
  background: rgb(20 18 27 / .72); border-color: rgb(102 74 230 / .55); }
.dir--world__h { font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2.125rem); font-weight: 600; letter-spacing: -.025em; line-height: 1.1; }
.dir--world__t { grid-column: 1; color: var(--muted); }
.dir--world__go { grid-column: 2; grid-row: 1 / span 2; width: 52px; height: 52px; border-radius: 50%; border: 1px solid var(--field); display: grid; place-items: center; color: var(--text);
  transition: background-color var(--k-dur-micro) var(--k-ease-linear); }
.dir--world__go svg { width: 18px; height: 18px; }
.dir--world:hover { border-color: var(--field); }
.dir--world:hover .dir--world__go { background: rgb(102 74 230 / .35); }

/* ---------- Виртуальный мир: страница раскрывается в ландшафт ---------- */
.world-sec { position: relative; height: 210svh; }
.world-sec__pin { position: sticky; top: 0; height: 100svh; display: flex; align-items: flex-end; padding-bottom: clamp(56px, 12vh, 120px); }
@media (max-width: 639px), (max-aspect-ratio: 4/5) {
  /* подложка — только под блоком текста (ревью №1, P0-2): выше текста долина открыта полностью */
  .world-sec__in::before { content: ""; position: absolute; z-index: -1; inset: -88px calc(-1 * var(--gutter)) calc(-1 * clamp(56px, 12vh, 120px)); pointer-events: none;
    background: linear-gradient(180deg, rgb(11 10 16 / 0) 0, rgb(11 10 16 / .86) 80px, rgb(11 10 16 / .9) 100%); }
}
:root[data-motion="reduce"] .world-sec, :root.k-static .world-sec, :root:not(.k-js) .world-sec { height: auto; }
:root[data-motion="reduce"] .world-sec__pin, :root.k-static .world-sec__pin, :root:not(.k-js) .world-sec__pin { position: relative; height: auto; min-height: 88svh; }
.world-sec__in { position: relative; z-index: 0; display: grid; gap: clamp(16px, 2vw, 24px); }
.world-sec__h { max-width: 12em; }
.world-sec__text { max-width: 26em; font-size: clamp(1.1875rem, .9rem + 1.05vw, 1.75rem); line-height: 1.38; letter-spacing: -.012em; text-wrap: pretty; }
.chip { display: inline-flex; align-items: center; gap: 10px; justify-self: start; min-height: 36px; padding: 0 14px; border-radius: 999px; border: 1px solid rgb(102 74 230 / .7); color: var(--text); background: rgb(11 10 16 / .55); }

/* ---------- Продукты: парящие устройства ---------- */
.products { padding-block: var(--s-4) var(--s-2); }
.fleet { display: grid; gap: clamp(28px, 3vw, 40px) var(--gap); }
.prod { display: grid; grid-template-columns: minmax(0, 42%) 1fr; gap: 18px; align-items: center; }
.prod__dev { position: relative; height: 270px; display: grid; place-items: center; perspective: 1100px; transform-style: preserve-3d; }
.dev { --ry: -14deg; --rx: 6deg; --rz: -2deg; position: relative; width: 124px; aspect-ratio: 9 / 19.4; padding: 5px; border-radius: 22px; background: #0b0a10; border: 1.5px solid #3b3548;
  box-shadow: 0 40px 60px -30px rgb(0 0 0 / .9), inset 0 0 0 1px #1d1a25;
  transform: rotateY(calc(var(--ry) + var(--ty, 0deg))) rotateX(calc(var(--rx) + var(--tx, 0deg))) rotateZ(var(--rz)); will-change: transform; }
.dev img { width: 100%; height: 100%; object-fit: cover; object-position: top; border-radius: 17px; background: #14121b; }
.prod:nth-child(2) .dev { --ry: 12deg; --rz: 2deg; }
.prod:nth-child(3) .dev { --ry: -8deg; --rz: -1deg; --rx: 8deg; }
.prod:nth-child(4) .dev { --ry: 15deg; --rz: 2.5deg; }
.watch { position: absolute; right: 2%; bottom: 8%; width: 74px; aspect-ratio: 480 / 585; padding: 5px; border-radius: 22px; background: #0b0a10; border: 1.5px solid #3b3548;
  transform: translateZ(60px) rotateY(calc(-10deg + var(--ty, 0deg))) rotateZ(-4deg); box-shadow: 0 24px 40px -18px rgb(0 0 0 / .9); }
.watch img { border-radius: 17px; width: 100%; height: 100%; object-fit: cover; }
.prod__txt h3 { font-size: clamp(1.375rem, 1.1rem + .7vw, 1.75rem); font-weight: 600; letter-spacing: -.02em; margin: 10px 0 6px; }
.prod__txt p:not(.status) { color: var(--muted); }
.status { display: inline-flex; align-items: center; gap: 9px; color: var(--text); }
@media (min-width: 640px) {
  .fleet { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .prod { grid-template-columns: 1fr; }
  .prod__dev { height: 360px; }
  .dev { width: 160px; }
  .watch { width: 88px; right: 12%; }
}
@media (min-width: 1024px) {
  .fleet { grid-template-columns: repeat(4, minmax(0, 1fr)); padding-bottom: 100px; }
  .prod:nth-child(2) { transform: translateY(72px); }
  .prod:nth-child(3) { transform: translateY(24px); }
  .prod:nth-child(4) { transform: translateY(100px); }
  .prod__dev { height: 440px; }
  .dev { width: 196px; }
  .watch { width: 96px; right: 0; }
}
.prod__txt { padding: 14px 16px 16px; border-radius: 16px; background: var(--surf-a); border: 1px solid var(--line); }
@media (max-width: 639px) { .prod__txt { padding: 14px; } }
@media (max-width: 479px) { .prod { grid-template-columns: 34% 1fr; gap: 12px; } .prod .dev { width: 104px; } .prod .watch { width: 58px; } .prod__dev { height: 240px; } .status { white-space: nowrap; font-size: .75rem; } }

/* доска Tidekeepers 5×7 — кодом */
.dev--board { background: #0b0a10; }
.board { height: 100%; border-radius: 17px; overflow: hidden; background: linear-gradient(180deg, #16131f, #100e16); padding: 12% 8% 8%; display: flex; flex-direction: column; justify-content: space-between; gap: 4%; font-family: var(--mono); }
.board__top, .board__heroes, .board__tide { display: flex; justify-content: space-between; align-items: center; font-size: clamp(7px, .62vw, 9px); color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.board__grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 3px; }
.board__grid .c { aspect-ratio: 1; border-radius: 3px; background: #1d1a26; display: grid; place-items: center; position: relative; }
.board__grid .c.is-tide { background: #221d3d; box-shadow: inset 0 0 0 1px rgb(102 74 230 / .45); }
.board__grid .c s { display: block; width: 52%; height: 52%; text-decoration: none; }
.board__grid .c--a s { background: var(--accent); transform: rotate(45deg) scale(.82); border-radius: 2px; }
.board__grid .c--b s { background: var(--field); border-radius: 50%; }
.board__grid .c--c s { background: #eeeaf4; border-radius: 2px; transform: scale(.75); }
.board__grid .c--d s { width: 0; height: 0; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 10px solid #a59fb3; }
.board__grid .c--hero { background: #2c2236; box-shadow: inset 0 0 0 1.5px var(--accent); }
.board__grid .c--hero b { font: 700 clamp(8px, .7vw, 11px)/1 var(--font); color: var(--text); }
.board__meter { flex: 1; height: 4px; margin-left: 8px; border-radius: 2px; background: #2b2735; overflow: hidden; }
.board__meter i { display: block; width: 62%; height: 100%; background: var(--field); }
.board__go { align-self: stretch; text-align: center; padding: 6% 0; border-radius: 999px; background: var(--accent); color: var(--accent-ink); font: 600 clamp(8px, .7vw, 11px)/1 var(--font); }
.board__heroes span { padding: 3px 6px; border-radius: 4px; background: #1d1a26; color: var(--text); }

/* ---------- Клиенты ---------- */
.clients { padding-block: var(--s-3) var(--s-2); }
.route-list { border-top: 1px solid var(--line-strong); max-width: 64rem; }
.route-list li { position: relative; display: grid; gap: 6px 32px; padding: clamp(20px, 2.6vw, 32px) 0 clamp(20px, 2.6vw, 32px) 36px; border-bottom: 1px solid var(--line); }
.route-list li::before { content: ""; position: absolute; left: 4px; top: calc(clamp(20px, 2.6vw, 32px) + .62em); width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid var(--accent); background: var(--bg); }
.route-list li::after { content: ""; position: absolute; left: 8px; top: calc(clamp(20px, 2.6vw, 32px) + .62em + 11px); bottom: calc(-1 * clamp(20px, 2.6vw, 32px) - .62em + 2px); width: 1.5px; background: rgb(255 92 138 / .35); }
.route-list li:last-child::after { display: none; }
.route-list h3 { font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2.25rem); font-weight: 600; letter-spacing: -.03em; line-height: 1.1; }
.route-list p { color: var(--text); max-width: 34em; font-size: 1.0625rem; }
@media (min-width: 900px) { .route-list li { grid-template-columns: minmax(0, 26rem) minmax(0, 1fr); align-items: baseline; } }
.route-list h3 { min-width: 0; }

/* ---------- Экосистема: три точки на одной линии горизонта ---------- */
.eco { padding-block: var(--s-3) var(--s-2); }
.eco__list { border-top: 1px solid var(--line-strong); max-width: 52rem; }
.eco__list li { border-bottom: 1px solid var(--line); }
.eco__list li > a, .eco__list li.is-here { display: grid; grid-template-columns: 1fr; gap: 4px 24px; align-items: baseline; padding: clamp(18px, 2.4vw, 28px) 0; text-decoration: none; }
@media (min-width: 720px) { .eco__list li > a, .eco__list li.is-here { grid-template-columns: minmax(0, 17rem) minmax(0, 1fr) 8rem; } .eco__m { justify-content: flex-end; } }
.eco__d { font-size: clamp(1.75rem, 1rem + 2.6vw, 3.25rem); font-weight: 600; letter-spacing: -.04em; line-height: 1.05; }
.eco__d b { font-weight: 520; color: var(--muted); }
.is-here .eco__d b { color: var(--accent); }
.eco__t { color: var(--text); font-size: 1.125rem; }
.eco__m { color: var(--muted); display: inline-flex; align-items: center; }
.is-here .eco__m { color: var(--accent); }
.eco a:hover .eco__d b { color: var(--text); }

/* ---------- CTA ---------- */
.cta { min-height: 100svh; display: flex; flex-direction: column; justify-content: center; padding-block: clamp(96px, 14vh, 160px); }
.cta__h { font-size: clamp(2.6rem, .7rem + 6.6vw, 7.75rem); font-weight: 620; letter-spacing: -.045em; line-height: .96; }
.cta__h .ln { display: block; }
.cta__row { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 20px; margin-top: clamp(36px, 5vw, 64px); }
.magnet { display: inline-flex; text-decoration: none; border-radius: 999px; background: var(--accent); color: var(--accent-ink); will-change: transform;
  transition: background-color var(--k-dur-micro) var(--k-ease-linear); }
.magnet:hover { background: var(--accent-hi); }
.magnet__in { display: inline-flex; align-items: center; gap: 14px; min-height: 68px; padding: 0 28px 0 32px; font: 600 clamp(1.125rem, 1rem + .6vw, 1.5rem)/1 var(--font); letter-spacing: -.01em; will-change: transform; }
.magnet__arr { position: relative; width: 22px; height: 22px; overflow: hidden; flex: none; }
.magnet__arr > span { position: absolute; inset: 0; transition: transform var(--k-dur-base) var(--k-ease-standard); }
.magnet__arr svg { width: 22px; height: 22px; }
.magnet__arr .a2 { transform: translateX(-120%); }
.magnet:hover .a1, .magnet:focus-visible .a1 { transform: translateX(120%); }
.magnet:hover .a2, .magnet:focus-visible .a2 { transform: translateX(5px); }
@media (max-width: 639px) { .cta { justify-content: flex-start; padding-top: calc(var(--bar-h) + 9svh); } }
.cta__note { margin-top: 22px; color: var(--muted); max-width: 32em; }
@media (max-width: 479px) { .magnet__in { min-height: 60px; padding: 0 20px 0 22px; gap: 10px; } }

/* ---------- Подвал ---------- */
.foot { border-top: 1px solid var(--line); background: rgb(11 10 16 / .92); color: var(--muted); font-size: .9375rem; }
.foot__in { display: flex; flex-wrap: wrap; gap: 12px 32px; align-items: center; justify-content: space-between; padding-block: 28px 36px; }
.foot__nav { display: flex; flex-wrap: wrap; gap: 4px 22px; }
.foot__nav a { color: var(--text); text-decoration: none; padding: 12px 0; display: inline-block; }
.foot__nav a:hover { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 5px; }
.motion-pref { display: inline-flex; align-items: center; gap: 12px; }
.motion-pref__l { color: var(--muted); font: 500 .8125rem/1 var(--mono); letter-spacing: .04em; text-transform: uppercase; }
:root:not(.k-js) .motion-pref { display: none; }
@media (max-width: 479px) { .motion-pref { flex-direction: column; align-items: flex-start; gap: 8px; } .seg button { padding: 0 10px; white-space: nowrap; } }
.seg { display: inline-flex; gap: 4px; padding: 4px; border: 1px solid var(--line-strong); border-radius: 999px; }
.seg button { min-height: 44px; padding: 0 14px; border: 0; border-radius: 999px; background: transparent; color: var(--muted); font: 500 .875rem/1 var(--font); cursor: pointer;
  transition: background-color var(--k-dur-micro) var(--k-ease-linear), color var(--k-dur-micro) var(--k-ease-linear); }
.seg button[aria-pressed="true"] { background: var(--surface-2); color: var(--text); }
.seg button:hover { color: var(--text); }
@media (max-width: 400px) { .seg button { padding: 0 10px; font-size: .8125rem; } }

/* ---------- Пауза фона (WCAG 2.2.2): в шапке — всегда видна и не перекрывает контент ---------- */
.pause { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-width: 44px; min-height: 44px; padding: 0 16px; border-radius: 999px;
  border: 1px solid var(--line-strong); background: rgb(11 10 16 / .5); color: var(--text); font: 500 .875rem/1 var(--font); cursor: pointer;
  transition: border-color var(--k-dur-micro) var(--k-ease-linear); }
.pause[hidden] { display: none; }
.pause:hover { border-color: var(--text); }
.pause__i { width: 14px; height: 14px; fill: currentColor; }
.pause__i--g, .pause.is-paused .pause__i--p { display: none; }
.pause.is-paused .pause__i--g { display: block; }
.pause { padding: 0; width: 44px; } .pause__t { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }

/* ---------- Тост ---------- */
.toast-region { position: fixed; left: var(--gutter); bottom: 20px; z-index: 40; pointer-events: none; }
.toast { display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 18px; border-radius: 14px; background: var(--surface-2); border: 1px solid var(--line-strong); color: var(--text); }
.toast::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--accent); }

/* ---------- Вход секций (revealSection / listEnter): только со скриптом ---------- */
[data-reveal].is-in { transition: opacity var(--k-dur-long) var(--k-ease-enter), translate var(--k-dur-long) var(--k-ease-enter), border-color var(--k-dur-micro) var(--k-ease-linear); }
:root.k-js [data-reveal]:not(.is-in) { opacity: 0; translate: var(--b-reveal-x) var(--b-reveal-y); }
.route-list li[data-reveal].is-in, .eco__list li[data-reveal].is-in { transition-delay: calc(var(--n, 0) * var(--k-stagger-step)); }
/* устройства: вход объекта по дуге X+ с перелётом 3 % (overshoot.subtle) — кривая прихода 500 мс (10 §3.3) */
:root.k-js [data-fleet]:not(.is-in) .dev, :root.k-js [data-fleet]:not(.is-in) .watch { opacity: 0; translate: calc(-40px * var(--k-move)) calc(14px * var(--k-move)); }
[data-fleet].is-in .dev, [data-fleet].is-in .watch { transition: opacity var(--k-dur-page) var(--k-ease-linear), translate var(--k-dur-page) cubic-bezier(.16, .644, .3, 1.03);
  transition-delay: calc(var(--k, 0) * 90ms); }

/* reduce: перемещения — 0 (токены), сдвиги карточек и наклоны стоят */
:root[data-motion="reduce"] [data-reveal].is-in { transition-property: opacity; transition-timing-function: var(--k-ease-linear); transition-delay: 0s; }
:root[data-motion="reduce"] .phone3d { transform: rotateX(9deg) rotateY(-20deg) rotateZ(-2deg) !important; }
:root[data-motion="reduce"] .mock { transition: none !important; }

/* ===================== Работы ===================== */
.whero { min-height: 74svh; display: flex; flex-direction: column; justify-content: flex-end; padding-block: calc(var(--bar-h) + 64px) clamp(48px, 7vw, 96px); }
.h1--works { font-size: clamp(3.25rem, 1rem + 9vw, 10rem); }
.lede--static { opacity: 1; color: var(--text); }
.toc { display: flex; flex-wrap: wrap; gap: 8px; margin-top: clamp(28px, 4vw, 44px); }
.toc a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: 999px; border: 1px solid var(--line-strong); text-decoration: none; background: rgb(11 10 16 / .55);
  transition: border-color var(--k-dur-micro) var(--k-ease-linear); }
.toc a:hover { border-color: var(--accent); }
.case { display: grid; gap: clamp(28px, 4vw, 64px); align-items: center; padding-block: clamp(48px, 6vw, 96px); }
@media (min-width: 1024px) {
  .case { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
  .case--flip .case__media { order: 2; }
  .case { align-items: start; }
  .case__txt { position: sticky; top: calc(var(--bar-h) + 24px); }
  .case__media { position: sticky; top: calc(var(--bar-h) + 24px); }
}
.case__txt { padding: clamp(22px, 3vw, 40px); border-radius: var(--radius); background: var(--surf-a); border: 1px solid var(--line); }
.case__txt .h2 { margin: 14px 0 12px; }
.h2__sub { display: block; font-size: .42em; letter-spacing: -.01em; color: var(--muted); font-weight: 500; margin-top: .4em; }
.case__lead { font-size: clamp(1.125rem, 1rem + .5vw, 1.375rem); line-height: 1.4; margin-bottom: 22px; }
.facts { display: grid; gap: 12px; }
.facts li { position: relative; padding-left: 26px; color: var(--muted); }
.facts li::before { content: ""; position: absolute; left: 0; top: 12px; width: 14px; height: 2px; background: var(--accent); }
.vt { color: var(--text); font-size: .8125rem; }
.stack { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.stack span { padding: 6px 10px; border-radius: 8px; border: 1px solid var(--line-strong); color: var(--text); font-size: .75rem; }
.note { margin-top: 22px; color: var(--muted); text-transform: none; font-size: .75rem; letter-spacing: .01em; }
.case__media { position: relative; height: clamp(360px, 44vw, 520px); perspective: 1400px; transform-style: preserve-3d; display: grid; place-items: center; }
.case__media .dev { position: absolute; width: clamp(128px, 19vw, 250px); }
.case__media--trio .dev--a { --ry: 18deg; --rz: 3deg; left: 0; top: 14%; }
.case__media--trio .dev--b { --ry: -6deg; --rz: -1deg; left: 50%; top: 2%; margin-left: calc(clamp(128px, 19vw, 250px) / -2); z-index: 2; }
.case__media--trio .dev--c { --ry: -20deg; --rz: -3deg; right: 0; top: 20%; }
.case__media--gs .dev--a { --ry: 14deg; --rz: 2deg; left: 10%; top: 8%; }
.case__media--gs .dev--b { --ry: -12deg; --rz: -2deg; right: 12%; top: 14%; }
.case__media--gs .watch--big { position: absolute; width: clamp(90px, 13vw, 150px); left: 42%; bottom: 6%; right: auto; z-index: 3; }
.case__media--duo .dev--a { --ry: 16deg; --rz: 2deg; left: 16%; top: 6%; }
.case__media--duo .dev--b { --ry: -14deg; --rz: -2deg; right: 16%; top: 14%; }
.case__media--board .dev--a { --ry: -14deg; --rz: -2deg; position: relative; width: clamp(180px, 26vw, 280px); }
.case__media--board .board__top, .case__media--board .board__heroes, .case__media--board .board__tide { font-size: clamp(8px, .8vw, 11px); }
.case__media--board .board__grid .c--hero b { font-size: clamp(10px, 1vw, 14px); }
.case__media--board .board__grid .c--d s { border-left-width: 9px; border-right-width: 9px; border-bottom-width: 15px; }
.cases { padding-block: var(--s-3) var(--s-2); }
.ccards { display: grid; gap: var(--gap); }
@media (min-width: 900px) { .ccards { grid-template-columns: 1fr 1fr; align-items: stretch; } }
.ccard { padding: 10px 10px clamp(18px, 2vw, 26px); border-radius: var(--radius); background: var(--surf-a); border: 1px solid var(--line); }
.ccard__vis { height: 200px; border-radius: 12px; background: #100e16; border: 1px solid #221e2c; margin-bottom: 22px; position: relative; overflow: hidden; }
.ccard__k, .ccard h3, .ccard .facts { margin-inline: clamp(10px, 1.4vw, 16px); }
.ccard__k { color: var(--accent); margin-bottom: 10px; }
.ccard h3 { font-size: clamp(1.375rem, 1.1rem + .7vw, 1.75rem); font-weight: 600; letter-spacing: -.02em; line-height: 1.15; margin-bottom: 18px; }
.lay { position: absolute; inset: 22px 22px 22px 22px; }
.lay__plan { position: absolute; inset: 0 0 34px 0; display: grid; grid-template-rows: repeat(4, 1fr); gap: 4px; }
.lay__plan span { position: relative; display: flex; align-items: center; padding-left: 10px; border-radius: 3px; overflow: hidden; font: 500 10px/1 var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: .04em;
  background: repeating-linear-gradient(90deg, #1c1926 0 26px, #201c2b 26px 27px); border: 1px solid #2b2735; }
.lay__plan span::after { content: ""; position: absolute; inset: 0; background: rgb(255 92 138 / .16); border-right: 2px solid var(--accent); transform-origin: 0 50%; transform: scaleX(calc(.55 + var(--i) * .15)); }
.lay__roll { position: absolute; left: calc(55% + 2px); top: -6px; width: 30px; height: 30px; border-radius: 50%; border: 2px solid var(--text); background: #1c1926; box-shadow: inset 0 0 0 5px #2b2735; }
.lay__roll i { position: absolute; inset: 8px; border-radius: 50%; border: 1.5px solid var(--accent); }
.lay__chip { position: absolute; right: 0; bottom: 0; padding: 6px 10px; border-radius: 999px; background: var(--accent); color: var(--accent-ink); font-size: .6875rem; }
:root.k-js[data-motion="full"] .ccard:not(.is-in) .lay__plan span::after { transform: scaleX(0); }
.ccard.is-in .lay__plan span::after { transition: transform var(--k-dur-cinematic) var(--k-ease-display) calc(var(--i) * 120ms + var(--k-dur-medium)); }
.sw { position: absolute; inset: 20px; display: grid; grid-template-rows: 1fr auto auto; gap: 10px; }
.sw__row { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; }
.sw__row i { border-radius: 6px; background: var(--c); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .06); }
.sw__row i:first-child { outline: 2px solid var(--accent); outline-offset: 2px; }
.sw__url, .sw__301 { display: flex; flex-wrap: wrap; gap: 6px; font-size: .6875rem; text-transform: none; letter-spacing: 0; }
.sw__url span { padding: 4px 8px; border-radius: 6px; background: #1c1926; border: 1px solid #2b2735; color: var(--text); }
.sw__url span:first-child { border-color: var(--accent); }
.sw__301 s { color: var(--muted); }
.sw__301 b { color: var(--accent); font-weight: 600; }
.sw__301 span { color: var(--text); }

/* режим снятия постера (?poster=…): только мир */
.k-poster main, .k-poster .bar, .k-poster .foot, .k-poster .pause, .k-poster .world__scrim { visibility: hidden; }

/* режим рендера ?shot: лента целиком — без липкого пролёта и параллакса (иначе склейка дублирует участки) */
.k-shot .world-sec { height: auto; }
.k-shot .world-sec__pin { position: relative; min-height: 100svh; height: auto; }

/* =====================================================================
   Этап 3: страницы продуктов, подписи продуктов, форма брифа, язык, 404
   ===================================================================== */
/* акценты продуктов — только графика (текст остаётся в системе .dev), DESIGN §10 */
:root { --tono: #f2703a; --tono-cream: #ecd3c3; --tono-cream-2: #c99d86; --gs: #57d4d4; --gs-amber: #f2b95a; --rl: #ffa51f; --rl-deep: #f07c0a; }
body[data-page="tono"] { --p-accent: var(--tono); }
body[data-page="groundswell"] { --p-accent: var(--gs); }
body[data-page="ridelink"] { --p-accent: var(--rl); }
body[data-page="tidekeepers"] { --p-accent: var(--field); }

/* ---------- язык ---------- */
.lang { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-width: 44px; min-height: 44px; padding: 0 10px; border-radius: 999px;
  font: 500 .8125rem/1 var(--mono); letter-spacing: .04em; text-decoration: none; color: var(--muted); transition: color var(--k-dur-micro) var(--k-ease-linear); }
.lang__cur { color: var(--text); }
.lang__sep { opacity: .5; }
.lang:hover .lang__other { color: var(--text); }
@media (max-width: 479px) { .lang__cur, .lang__sep { display: none; } .lang { padding: 0; } .wordmark { font-size: 1.125rem; } .bar__in { gap: 6px; } .bar .btn--sm { padding: 0 14px; font-size: .875rem; } }

/* ---------- hero продукта ---------- */
.phero { min-height: 100svh; display: grid; align-items: center; gap: clamp(28px, 4vw, 56px); padding-block: calc(var(--bar-h) + 40px) var(--s-2); }
@media (min-width: 1024px) { .phero { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.crumbs a { display: inline-flex; align-items: center; min-height: 44px; color: var(--text); text-decoration: none; }
.crumbs span { opacity: .6; }
.h1--product { font-size: clamp(3rem, .6rem + 6.4vw, 7rem); line-height: .92; }
.h1--long { font-size: clamp(2.6rem, .4rem + 5.2vw, 5.5rem); }
.phero__promise { margin-top: clamp(18px, 2.4vw, 28px); max-width: 22em; font-size: clamp(1.25rem, 1rem + 1.1vw, 1.875rem); line-height: 1.25; letter-spacing: -.02em; font-weight: 480; text-wrap: pretty; }
.phero .status { margin-top: 22px; }
.phero__sig { position: relative; min-height: clamp(360px, 52vw, 640px); display: grid; place-items: center; }
.phero__replay { position: absolute; right: 0; bottom: 0; }

/* ---------- ключевые идеи ---------- */
.ideas { padding-block: var(--s-3) var(--s-2); }
.idea { display: grid; gap: clamp(24px, 4vw, 64px); align-items: center; padding-block: clamp(32px, 5vw, 72px); }
@media (min-width: 900px) { .idea { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .idea--flip .idea__vis { order: 2; } }
.idea__vis { position: relative; min-height: clamp(320px, 40vw, 520px); display: grid; place-items: center; perspective: 1300px; }
.idea__vis .dev { position: relative; width: clamp(180px, 21vw, 280px); }
.idea__vis .dev + .dev { position: absolute; width: clamp(150px, 17vw, 230px); transform: translate(52%, 12%) rotateY(-14deg) rotateZ(3deg); }
.idea__vis .dev:first-child:not(:only-child) { transform: translateX(-22%) rotateY(10deg) rotateZ(-2deg); }
.idea__txt { padding: clamp(22px, 3vw, 36px); border-radius: var(--radius); background: var(--surf-a); border: 1px solid var(--line); }
.idea__k { color: var(--text); display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.idea__k::before { content: ""; width: 22px; height: 2px; background: var(--p-accent, var(--accent)); }
.idea h3 { font-size: clamp(1.625rem, 1.1rem + 1.6vw, 2.5rem); font-weight: 600; letter-spacing: -.03em; line-height: 1.08; margin-bottom: 14px; text-wrap: balance; }
.idea p:not(.idea__k) { color: var(--muted); font-size: 1.0625rem; max-width: 34em; }
.idea p + p { margin-top: 10px; }
.photo { width: 100%; border-radius: 18px; overflow: hidden; border: 1px solid var(--line); }
.photo img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- как сделано / статус ---------- */
.made { padding-block: var(--s-3) var(--s-2); }
.made__grid { display: grid; gap: var(--gap); margin-top: clamp(28px, 4vw, 48px); }
@media (min-width: 900px) { .made__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.made__col { padding: clamp(22px, 3vw, 36px); border-radius: var(--radius); background: var(--surf-a); border: 1px solid var(--line); }
.made__col h3 { font-size: 1.25rem; font-weight: 600; margin-bottom: 18px; }
.made__col .stack { margin-top: 0; }
.next { padding-block: var(--s-2); }
.next .route-list { margin-top: clamp(28px, 4vw, 48px); }
.route-list li.is-done::before { background: var(--accent); }
.route-list li.is-now::before { background: var(--accent); box-shadow: 0 0 0 5px rgb(255 92 138 / .22); }
.route-list .rl-k { display: block; margin-bottom: 6px; color: var(--muted); }

/* ---------- другие продукты ---------- */
.others { padding-block: var(--s-2) 0; }
.others__list { display: grid; gap: var(--gap); }
@media (min-width: 720px) { .others__list { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.other { display: grid; grid-template-columns: 64px 1fr auto; gap: 16px; align-items: center; padding: 14px 18px 14px 14px; border-radius: 18px; text-decoration: none;
  background: var(--surf-a); border: 1px solid var(--line); transition: border-color var(--k-dur-micro) var(--k-ease-linear); }
.other:hover { border-color: var(--line-strong); }
.other:hover .arr { translate: 6px 0; }
.other__dev.dev { --ry: 0deg; --rx: 0deg; --rz: 0deg; width: 64px; padding: 3px; border-radius: 12px; box-shadow: none; transform: none; }
.other__dev.dev img { border-radius: 9px; }
.other__dev .board { padding: 10% 7%; border-radius: 9px; gap: 3px; }
.other__dev .board__top, .other__dev .board__tide, .other__dev .board__heroes, .other__dev .board__go { display: none; }
.other__dev .board__grid { gap: 1.5px; }
.other__t { display: grid; gap: 4px; }
.other__t b { font-size: 1.25rem; font-weight: 600; letter-spacing: -.02em; }
.other__t span { color: var(--muted); font-size: .9375rem; line-height: 1.35; }

/* ---------- ссылки продуктов на главной ---------- */
.prod { position: relative; }
.prod__a { text-decoration: none; display: inline-flex; align-items: baseline; }
.prod__a::after { content: ""; position: absolute; inset: 0; border-radius: 16px; }
.prod__a .arr { font-size: .8em; color: var(--muted); }
.prod:hover .prod__a .arr { translate: 6px 0; color: var(--text); }
.prod:focus-within .prod__txt { outline: 2px solid var(--focus); outline-offset: 3px; }
.prod__a:focus-visible { outline: none; }
.more--case { margin-top: 22px; }

/* =============== подпись TONO: волна дня + кольцо резонанса =============== */
.wave { position: relative; width: min(100%, 560px); aspect-ratio: 5 / 4; }
.wave__label { position: absolute; left: 0; top: 0; color: var(--text); }
.wave__card { position: absolute; left: 6%; top: 12%; width: 46%; aspect-ratio: 3 / 4.2; border-radius: 22px; overflow: hidden;
  background: linear-gradient(170deg, var(--tono-cream) 0%, var(--tono-cream-2) 100%); box-shadow: 0 30px 60px -28px rgb(0 0 0 / .9);
  transform-origin: 50% 120%; transform: translateX(calc(var(--i) * 34%)) rotate(calc(var(--i) * 5deg - 4deg)); }
.wave__card b { position: absolute; inset: 0; display: grid; place-items: center; font: 400 clamp(4rem, 9vw, 7.5rem)/1 Georgia, "Times New Roman", serif; color: #fff7f2; text-shadow: 0 2px 30px rgb(120 60 40 / .35); }
.wave__card:nth-child(3) { background: linear-gradient(170deg, #e7c9d0, #b98e9c); }
.wave__card:nth-child(4) { background: linear-gradient(170deg, #d9cfe6, #a495ba); }
.wave__card:nth-child(5) { background: linear-gradient(170deg, #f0dcc2, #cfa780); }
.wave__card.is-front { z-index: 4; }
.wave__meta { position: absolute; left: 0; right: 0; bottom: 0; padding: 12px 14px; background: linear-gradient(0deg, rgb(20 14 12 / .82), rgb(20 14 12 / 0)); color: #fff; font: 600 .9375rem/1.2 var(--font); }
.wave__meta small { display: block; font: 500 .6875rem/1.3 var(--mono); letter-spacing: .04em; text-transform: uppercase; opacity: .85; }
.res { position: absolute; right: 2%; bottom: 4%; z-index: 6; width: clamp(130px, 17vw, 190px); aspect-ratio: 1; border-radius: 50%; display: grid; place-items: center;
  background: rgb(20 18 27 / .94); border: 1px solid var(--line); box-shadow: 0 30px 60px -24px rgb(0 0 0 / .9); }
.res svg { position: absolute; inset: 10%; width: 80%; height: 80%; transform: rotate(-90deg); overflow: visible; }
.res circle { fill: none; stroke-width: 7; }
.res .r0 { stroke: #2b2735; }
.res .r1 { stroke: var(--tono); stroke-linecap: round; stroke-dasharray: .87 1; }
.res__n { position: relative; text-align: center; font: 650 clamp(2rem, 3.4vw, 2.75rem)/1 var(--font); letter-spacing: -.04em; }
.res__n small { display: block; margin-top: 6px; font: 500 .625rem/1.2 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
:root.k-js[data-motion="full"] .wave.is-armed:not(.is-play) .wave__card { transform: translateX(0) rotate(-4deg); opacity: 0; }
:root.k-js[data-motion="full"] .wave.is-armed:not(.is-play) .res { opacity: 0; transform: translateX(-24px); }
:root.k-js[data-motion="full"] .wave.is-armed:not(.is-play) .res .r1 { stroke-dasharray: 0 1; }
.wave.is-play .wave__card { transition: transform var(--k-dur-cinematic) var(--k-ease-display) calc(var(--i) * 140ms), opacity var(--k-dur-medium) var(--k-ease-linear) calc(var(--i) * 140ms); }
.wave.is-play .res { transition: opacity var(--k-dur-medium) var(--k-ease-linear) 650ms, transform var(--k-dur-page) var(--k-ease-display) 650ms; }
.wave.is-play .res .r1 { transition: stroke-dasharray 1400ms var(--k-ease-display) 800ms; }
@media (hover: hover) and (pointer: fine) {
  :root[data-motion="full"] .wave:hover .wave__card { transform: translateX(calc(var(--i) * 40%)) rotate(calc(var(--i) * 7deg - 5deg)); }
}

/* =============== подпись Groundswell: вердикт + кривая прилива =============== */
.verdict { width: min(100%, 560px); padding: clamp(16px, 2vw, 24px); border-radius: 24px; background: #0c1418; border: 1px solid #1d2b31; box-shadow: 0 40px 80px -40px rgb(0 0 0 / .9); }
.verdict__top { display: flex; justify-content: space-between; align-items: center; color: #9fb6bd; margin-bottom: 14px; }
.verdict__top b { color: #e3e9ec; font: 650 1rem/1 var(--font); letter-spacing: -.01em; text-transform: none; }
.spot { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; align-items: center; padding: 14px 16px; border-radius: 14px; background: #111c21; border: 1px solid #1d2b31; }
.spot + .spot { margin-top: 8px; }
.spot__n { font: 600 1.0625rem/1.2 var(--font); color: #e3e9ec; }
.spot__w { grid-column: 1; font: 500 .75rem/1.3 var(--mono); color: #9fb6bd; }
.vchip { grid-row: 1 / span 2; grid-column: 2; position: relative; display: inline-grid; min-width: 9.6em; height: 32px; border-radius: 8px; overflow: hidden; font: 600 .75rem/32px var(--mono); letter-spacing: .06em; text-align: center; }
.vchip span { grid-area: 1 / 1; padding: 0 10px; }
.vchip--go { background: var(--gs); color: #06181a; }
.vchip--care { background: var(--gs-amber); color: #1f1404; }
.vchip--no { background: #1d2b31; color: #c4d2d6; }
.tide { margin-top: 16px; padding: 14px 16px 10px; border-radius: 14px; background: #111c21; border: 1px solid #1d2b31; }
.tide__h { display: flex; justify-content: space-between; color: #9fb6bd; font: 500 .75rem/1 var(--mono); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 8px; }
.tide__h b { color: var(--gs); font-weight: 500; }
.tide svg { width: 100%; height: auto; overflow: visible; }
.tide .t-band { fill: rgb(87 212 212 / .14); }
.tide .t-line { fill: none; stroke: var(--gs); stroke-width: 2.4; stroke-linecap: round; }
.tide .t-grid { stroke: #1d2b31; stroke-width: 1; }
.tide .t-dot { fill: #e3e9ec; }
.tide .t-lbl { fill: #9fb6bd; font: 500 10px var(--mono); }
:root.k-js[data-motion="full"] .verdict.is-armed:not(.is-play) .spot { opacity: 0; transform: translateX(-16px); }
:root.k-js[data-motion="full"] .verdict.is-armed:not(.is-play) .vchip span { transform: translateY(100%); }
:root.k-js[data-motion="full"] .verdict.is-armed:not(.is-play) .t-line { stroke-dashoffset: 1; }
:root.k-js[data-motion="full"] .verdict.is-armed:not(.is-play) .t-band, :root.k-js[data-motion="full"] .verdict.is-armed:not(.is-play) .t-dot { opacity: 0; }
.verdict .t-line { stroke-dasharray: 1 1; }
.verdict.is-play .spot { transition: opacity var(--k-dur-long) var(--k-ease-enter) calc(var(--i) * 120ms), transform var(--k-dur-long) var(--k-ease-enter) calc(var(--i) * 120ms); }
.verdict.is-play .vchip span { transition: transform var(--k-dur-medium) var(--k-ease-standard) calc(500ms + var(--i) * 260ms); }
.verdict.is-play .t-line { transition: stroke-dashoffset 1400ms var(--k-ease-standard) 400ms; }
.verdict.is-play .t-band { transition: opacity var(--k-dur-long) var(--k-ease-linear) 1500ms; }
.verdict.is-play .t-dot { transition: opacity var(--k-dur-short) var(--k-ease-linear) 1700ms; }

/* =============== подпись RideLink: лампа «НА СВЯЗИ» + линия связи с голосом =============== */
.link { position: relative; width: min(100%, 600px); aspect-ratio: 6 / 4.6; }
.link__ph { position: absolute; top: 6%; width: 34%; aspect-ratio: 9 / 18.5; border-radius: 28px; background: #141210; border: 1.5px solid #3b3530;
  box-shadow: 0 40px 70px -30px rgb(0 0 0 / .9); padding: 18% 10% 0; display: grid; justify-items: center; align-content: start; gap: 12px; }
.link__ph--a { left: 0; transform: rotate(-4deg); }
.link__ph--b { right: 0; transform: rotate(4deg); }
.lamp { position: relative; width: 62%; aspect-ratio: 1; border-radius: 50%; display: grid; place-items: center;
  background: radial-gradient(circle at 40% 35%, #ffd27a, var(--rl) 45%, var(--rl-deep)); border: 1.5px solid var(--rl); }
.lamp svg { width: 44%; height: 44%; fill: none; stroke: #2a1600; stroke-width: 2.2; stroke-linecap: round; }
.lamp::after { content: ""; position: absolute; inset: -18%; border-radius: 50%; background: radial-gradient(circle, rgb(255 165 31 / .45), rgb(255 165 31 / 0) 65%); }
.link__ph b { font: 800 clamp(.875rem, 1.6vw, 1.125rem)/1 var(--font); letter-spacing: .02em; color: #f3ece6; text-transform: uppercase; text-align: center; }
.link__ph small { font: 500 .6875rem/1.2 var(--mono); color: #b7aca2; }
/* финальный кадр — лампы горят; погашены только во взводе перед проигрышем (JS + полное движение) */
:root.k-js[data-motion="full"] .link.is-armed:not(.is-on) .lamp { background: #241f1a; border-color: #3b3530; }
:root.k-js[data-motion="full"] .link.is-armed:not(.is-on) .lamp svg { stroke: #6b6158; }
:root.k-js[data-motion="full"] .link.is-armed:not(.is-on) .lamp::after { opacity: 0; }
:root.k-js[data-motion="full"] .link.is-armed:not(.is-on) .link__ph b { color: #8d8178; }
:root.k-js[data-motion="full"] .link.is-armed:not(.is-on) .ln-on { stroke-dashoffset: 1; }
.link .lamp, .link .lamp svg, .link .lamp::after, .link__ph b { transition: background var(--k-dur-medium) var(--k-ease-standard), opacity var(--k-dur-long) var(--k-ease-standard), color var(--k-dur-medium) var(--k-ease-standard), stroke var(--k-dur-medium) var(--k-ease-standard); }
.link__ph--b .lamp, .link__ph--b .lamp::after, .link__ph--b b { transition-delay: 220ms; }
.link__line { position: absolute; left: 30%; right: 30%; top: 34%; height: 80px; overflow: visible; }
.link__line .ln-base { stroke: #3b3530; stroke-width: 1.5; stroke-dasharray: 4 6; fill: none; }
.link__line .ln-on { stroke: var(--rl); stroke-width: 2; fill: none; stroke-dasharray: 1 1; stroke-dashoffset: 0; }
.link.is-on .ln-on { transition: stroke-dashoffset var(--k-dur-slow) var(--k-ease-display) 120ms; }
.link__line .voice { fill: none; stroke: #ffd9a0; stroke-width: 2.2; stroke-linecap: round; opacity: 0; }
@keyframes k-voice { 0% { transform: translateX(-30%); opacity: 0; } 15% { opacity: 1; } 85% { opacity: 1; } 100% { transform: translateX(30%); opacity: 0; } }
.link.is-talk .voice { animation: k-voice 1600ms var(--k-ease-linear) 3; }
.link.is-talk .voice:nth-of-type(2) { animation-delay: 400ms; }
.link__tag { position: absolute; left: 50%; bottom: 2%; transform: translateX(-50%); white-space: nowrap; color: var(--text); padding: 8px 14px; border-radius: 999px; background: rgb(11 10 16 / .8); border: 1px solid var(--line-strong); }

/* =============== подпись Tidekeepers: слияние на доске дня =============== */
.merge { width: min(100%, 420px); padding: clamp(16px, 2vw, 22px); border-radius: 26px; background: linear-gradient(180deg, #16131f, #100e16); border: 1px solid #2b2735; box-shadow: 0 40px 80px -40px rgb(0 0 0 / .9); }
.merge__top { display: flex; justify-content: space-between; color: var(--muted); margin-bottom: 14px; }
.merge__grid { position: relative; display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.merge__grid .c { aspect-ratio: 1; border-radius: 8px; background: #1d1a26; }
.merge__grid .c.is-tide { background: #221d3d; box-shadow: inset 0 0 0 1px rgb(102 74 230 / .5); }
.mt { position: absolute; left: 0; top: 0; width: calc((100% - 24px) / 5); aspect-ratio: 1; display: grid; place-items: center;
  transform: translate(calc(var(--x) * (100% + 6px)), calc(var(--y) * (100% + 6px))); }
.mt i { display: block; width: 54%; height: 54%; }
.mt--a i { background: var(--accent); transform: rotate(45deg) scale(.82); border-radius: 3px; }
.mt--b i { background: var(--field); border-radius: 50%; }
.mt--c i { background: #eeeaf4; border-radius: 3px; transform: scale(.78); }
.mt--hero { border-radius: 8px; background: #2c2236; box-shadow: inset 0 0 0 1.5px var(--accent); }
.mt--hero b { font: 700 clamp(.875rem, 2vw, 1.125rem)/1 var(--font); }
.mt--up { z-index: 3; }
.mt--up i { width: 66%; height: 66%; background: radial-gradient(circle at 40% 35%, #ffd1df, var(--accent) 60%); transform: rotate(45deg); border-radius: 5px; box-shadow: 0 0 22px rgb(255 92 138 / .6); }
.merge__tide { margin-top: 14px; display: flex; align-items: center; gap: 10px; color: var(--muted); }
.merge__meter { flex: 1; height: 6px; border-radius: 3px; background: #2b2735; overflow: hidden; }
.merge__meter i { display: block; height: 100%; width: 74%; background: var(--field); transform-origin: 0 50%; }
/* финал (без JS / reduce): слито, плитка улучшена */
.mt--m { opacity: 0; }
:root.k-js[data-motion="full"] .merge.is-armed:not(.is-play) .mt--m { opacity: 1; }
:root.k-js[data-motion="full"] .merge.is-armed:not(.is-play) .mt--up { opacity: 0; transform: translate(calc(var(--x) * (100% + 6px)), calc(var(--y) * (100% + 6px))) scale(.4); }
:root.k-js[data-motion="full"] .merge.is-armed:not(.is-play) .merge__meter i { transform: scaleX(.6); }
@keyframes k-slide { 0% { opacity: 1; transform: translate(calc(var(--x) * (100% + 6px)), calc(var(--y) * (100% + 6px))); }
  70% { opacity: 1; transform: translate(calc(var(--tx) * (100% + 6px)), calc(var(--ty) * (100% + 6px))) scale(.9); }
  100% { opacity: 0; transform: translate(calc(var(--tx) * (100% + 6px)), calc(var(--ty) * (100% + 6px))) scale(.6); } }
@keyframes k-up { 0% { opacity: 0; transform: translate(calc(var(--x) * (100% + 6px)), calc(var(--y) * (100% + 6px))) scale(.4); }
  70% { opacity: 1; transform: translate(calc(var(--x) * (100% + 6px)), calc(var(--y) * (100% + 6px))) scale(1.03); }
  100% { opacity: 1; transform: translate(calc(var(--x) * (100% + 6px)), calc(var(--y) * (100% + 6px))) scale(1); } }
.merge.is-play .mt--m { animation: k-slide var(--k-dur-page) var(--k-ease-standard) 300ms both; }
.merge.is-play .mt--up { animation: k-up var(--k-dur-page) var(--k-ease-display) 650ms both; }
.merge.is-play .merge__meter i { transition: transform var(--k-dur-cinematic) var(--k-ease-standard) 1000ms; }

/* =============== форма брифа =============== */
.cta { min-height: auto; }
.cta__grid { display: grid; gap: clamp(36px, 5vw, 72px); align-items: start; }
@media (min-width: 1024px) { .cta__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); } .cta__grid .cta__h { font-size: clamp(2.6rem, .6rem + 4.4vw, 5.75rem); } }
.cta__lead { margin-top: clamp(20px, 2.6vw, 32px); color: var(--text); max-width: 26em; font-size: 1.125rem; }
.cta__mail { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-top: 26px; color: var(--muted); }
.mail-link { display: inline-flex; align-items: center; min-height: 44px; color: var(--text); font-weight: 600; text-decoration-color: var(--accent); text-underline-offset: 5px; }
.brief { display: grid; gap: 18px; padding: clamp(20px, 2.6vw, 32px); border-radius: var(--radius); background: rgb(20 18 27 / .94); border: 1px solid var(--line); }
.field { display: grid; gap: 8px; }
.field label, .opts legend { font: 600 .9375rem/1.3 var(--font); color: var(--text); }
.field input, .field textarea { width: 100%; min-height: 48px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line-strong); background: #0e0c14; color: var(--text);
  font: 400 1rem/1.4 var(--font); transition: border-color var(--k-dur-micro) var(--k-ease-linear); }
.field textarea { resize: vertical; min-height: 116px; }
.field input:hover, .field textarea:hover { border-color: #8a8299; }
.field input:focus-visible, .field textarea:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-color: var(--text); }
.field__hint { color: var(--muted); font-size: .875rem; }
.field__err { color: #ff8fae; font-size: .875rem; font-weight: 500; }
.field__err:empty { display: none; }
.field [aria-invalid="true"] { border-color: #ff8fae; }
.opts { border: 0; padding: 0; margin: 0; min-width: 0; }
.opts legend { margin-bottom: 10px; padding: 0; }
.opts__row { display: flex; flex-wrap: wrap; gap: 8px; }
.opt { position: relative; display: inline-flex; }
.opt input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.opt span { display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: 999px; border: 1px solid var(--line-strong); color: var(--text); font-size: .9375rem; cursor: pointer;
  transition: background-color var(--k-dur-micro) var(--k-ease-linear), border-color var(--k-dur-micro) var(--k-ease-linear), color var(--k-dur-micro) var(--k-ease-linear); }
.opt:hover span { border-color: var(--text); }
.opt input:checked + span { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.opt input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 3px; }
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.brief__row { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: 4px; }
.brief .magnet { border: 0; cursor: pointer; font: inherit; }
.brief .magnet[disabled] { opacity: .7; cursor: progress; }
.brief__consent { color: var(--muted); font-size: .875rem; max-width: 40em; }
.brief__summary { padding: 14px 16px; border-radius: 12px; border: 1px solid #ff8fae; background: rgb(255 92 138 / .08); color: var(--text); }
.brief__summary ul { margin-top: 6px; padding-left: 18px; list-style: disc; }
.brief__summary a { color: var(--text); }
.brief__state:empty { display: none; }
.brief__state { padding: 16px; border-radius: 14px; border: 1px solid var(--line-strong); background: #0e0c14; }
.brief__state h3 { font-size: 1.25rem; font-weight: 600; margin-bottom: 6px; }
.brief__state p { color: var(--text); }
.brief__state .btn { margin-top: 12px; }
.brief__state.is-ok { border-color: var(--accent); }
.brief__state.is-err { border-color: #ff8fae; }
.brief.is-done > :not(.brief__state) { display: none; }
.sig-loader { width: 64px; height: 12px; overflow: visible; }
.sig-loader path { stroke: var(--accent-ink); stroke-width: 70; stroke-linecap: round; fill: none; stroke-dasharray: .3 .7; animation: k-run var(--k-dur-spinner) var(--k-ease-linear) infinite; }
@keyframes k-run { to { stroke-dashoffset: -1; } }

/* =============== 404 / результат отправки =============== */
.lost { min-height: 100svh; display: flex; flex-direction: column; justify-content: center; padding-block: calc(var(--bar-h) + 40px) var(--s-2); }
.lost .h1 { font-size: clamp(3rem, 1rem + 8vw, 8rem); }
.lost__lead { margin-top: 22px; max-width: 30em; font-size: clamp(1.125rem, 1rem + .5vw, 1.375rem); }
.lost__go { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }

/* ---------- визуалы идей, нарисованные кодом ---------- */
.idea__vis .watch--solo { position: relative; right: auto; bottom: auto; width: clamp(150px, 18vw, 220px); transform: rotateY(-12deg) rotateZ(-3deg); }
.idea__vis--photo { min-height: 0; }
.idea__vis .dev--board { width: clamp(190px, 22vw, 270px); }
.tones { width: min(100%, 440px); display: grid; gap: 10px; }
.tones__h { color: var(--text); margin-bottom: 4px; }
.tone { display: grid; grid-template-columns: 1fr 1.2fr; gap: 4px 16px; align-items: center; padding: 16px 18px; border-radius: 16px; background: #141210; border: 1px solid #2f2a25; }
.tone b { font: 600 1.0625rem/1.2 var(--font); color: #f3ece6; }
.tone small { grid-column: 1; color: #b7aca2; font-size: .75rem; text-transform: none; letter-spacing: 0; }
.tone__g { grid-row: 1 / span 2; grid-column: 2; position: relative; height: 54px; display: flex; gap: 6%; align-items: stretch; }
.tone__g i { position: relative; width: var(--w); }
.tone__g i::after { content: ""; position: absolute; left: 0; right: 0; top: var(--y); height: 4px; border-radius: 2px; background: var(--rl); }
.heroes { display: grid; grid-template-columns: repeat(2, minmax(0, 150px)); gap: 12px; }
.hcard { aspect-ratio: 3 / 3.6; border-radius: 20px; display: grid; place-items: center; align-content: center; gap: 12px; background: linear-gradient(180deg, #1d1828, #13111a); border: 1px solid #2b2735; }
.hcard b { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 16px; background: #2c2236; box-shadow: inset 0 0 0 2px var(--accent); font: 700 1.75rem/1 var(--font); }
.hcard span { font: 600 1.0625rem/1 var(--font); }
.hcard--boss b { box-shadow: inset 0 0 0 2px var(--field); background: #1f1a3a; }
.tidebox { position: relative; width: min(100%, 420px); aspect-ratio: 4 / 3; border-radius: 24px; overflow: hidden; background:
  linear-gradient(#1d1a26 0 0) 0 0 / 100% 100%, repeating-linear-gradient(90deg, transparent 0 calc(20% - 4px), #100e16 calc(20% - 4px) 20%), repeating-linear-gradient(0deg, transparent 0 calc(25% - 4px), #100e16 calc(25% - 4px) 25%);
  background-blend-mode: normal; border: 1px solid #2b2735; }
.tidebox::before { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(90deg, transparent 0 calc(20% - 4px), #100e16 calc(20% - 4px) 20%), repeating-linear-gradient(0deg, transparent 0 calc(25% - 4px), #100e16 calc(25% - 4px) 25%); }
.tidebox__w { position: absolute; left: -10%; right: -10%; bottom: 0; height: 46%; background: rgb(102 74 230 / .55); border-top: 2px solid #9d8cff; border-radius: 40% 60% 0 0 / 14px 18px 0 0; }
.tidebox__w--2 { height: 38%; background: rgb(102 74 230 / .35); border-top-color: rgb(157 140 255 / .6); left: -20%; }
.tidebox p { position: absolute; left: 16px; top: 14px; color: var(--text); }
.lighthouse { width: min(100%, 400px); padding: 26px; border-radius: 24px; background: linear-gradient(180deg, #1d1828, #13111a); border: 1px solid #2b2735; display: grid; gap: 12px; }
.lighthouse__h { font: 650 2rem/1 var(--font); letter-spacing: -.03em; margin-bottom: 6px; }
.lighthouse__row { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; border-radius: 12px; background: #100e16; border: 1px solid #2b2735; color: var(--text); }
.lighthouse__row b { padding: 4px 10px; border-radius: 999px; font-weight: 600; }
.lighthouse__row.is-yes b { background: var(--accent); color: var(--accent-ink); }
.lighthouse__row.is-no b { background: #2b2735; color: var(--text); }
.lighthouse__m { color: var(--muted); text-transform: none; letter-spacing: 0; font-size: .8125rem; }
.phero .cue { color: var(--text); }
@media (max-width: 639px) {
  .wave { aspect-ratio: 1 / 1.02; }
  .wave__card { width: 50%; top: 13%; left: 4%; transform: translateX(calc(var(--i) * 14%)) rotate(calc(var(--i) * 4deg - 3deg)); }
  .res { width: 112px; right: 0; bottom: 0; }
  .res__n { font-size: 1.75rem; }
  .wave__meta { padding-right: 30px; }
}

/* =============== QA-приёмка: исправления =============== */
/* P1-1: пока WebGL не перехватил кадр, постер медленно «въезжает» (один раз, ~14 с, без цикла) — нет мёртвой паузы */
/* дрейф — только когда мир точно будет (tier ≥ 1, state=boot ставит скрипт сразу после первой отрисовки); на tier 0 постер стоит —
   слабому GPU полноэкранная анимация дорога. Дрейф возвращается в исходную точку, лишний слой после него не остаётся. */
@keyframes k-poster-drift { 0% { transform: none; } 55% { transform: scale(1.045) translate3d(-1%, .6%, 0); } 100% { transform: none; } }
:root[data-motion="full"] .world:is([data-state="boot"], [data-state="live"]) .world__poster { animation: k-poster-drift 16s cubic-bezier(.45, 0, .55, 1) 1; transform-origin: 62% 58%; }
:root.k-shot .world__poster, :root.k-poster .world__poster { animation: none; }

/* P1-5: CLS — цифры приборов фиксированной ширины */
.bar__km { display: inline-block; min-width: 9ch; }
@media (min-width: 1280px) { .bar__wp { display: inline-block; min-width: 23ch; } }   /* смена участка не сдвигает километры; на 900–1279 места нет */
.res__n [data-count] { display: inline-block; min-width: 2ch; text-align: right; font-variant-numeric: tabular-nums; }

/* P2-2: переносы */
h2, h3, .h2 { text-wrap: balance; }
.lede, p { text-wrap: pretty; }

/* P2-3: тач-цели в подвале */
.foot__nav a { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.seg button { min-width: 44px; }

/* P2-4: сводка ошибок и поля не уходят под фиксированную шапку */
html { scroll-padding-top: 80px; }
.brief__summary, .brief .field, .brief .opts, .brief__state { scroll-margin-top: 96px; }

/* P2-5: без backdrop-filter стеклянная шапка — почти сплошная */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) { .bar.is-stuck { background: rgb(11 10 16 / .92); } }

/* P2-14: подпись карточки TONO на светлом фоне — плотнее подложка, полная непрозрачность текста */
.wave__meta { padding-top: 28px; background: linear-gradient(0deg, rgb(20 14 12 / .94) 0%, rgb(20 14 12 / .8) 58%, rgb(20 14 12 / 0) 100%); }
.wave__meta small { opacity: 1; color: #fff; }

/* P2-11: меню на телефоне */
.menu-btn { display: none; place-items: center; flex: none; width: 44px; height: 44px; padding: 0; border-radius: 999px; border: 1px solid var(--line-strong);
  background: rgb(11 10 16 / .5); color: var(--text); cursor: pointer; transition: border-color var(--k-dur-micro) var(--k-ease-linear); }
.menu-btn:hover { border-color: var(--text); }
.menu-btn svg { width: 20px; height: 20px; }
@media (max-width: 719px) { :root.k-js .bar .menu-btn { display: grid; } :root.k-js .bar .lang { display: none; } }   /* без JS — прежняя шапка с RU/EN */
.sheet { position: fixed; inset: 0; z-index: 40; display: flex; flex-direction: column; overflow-y: auto; overscroll-behavior: contain;
  background: var(--bg); opacity: 0; transform: translateY(-8px);
  transition: opacity var(--k-dur-base) var(--k-ease-standard), transform var(--k-dur-base) var(--k-ease-standard); }
.sheet[hidden] { display: none; }
.sheet.is-open { opacity: 1; transform: none; }
:root[data-motion="reduce"] .sheet { transition: none; transform: none; }
.sheet__top { height: var(--bar-h); flex: none; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgb(43 39 53 / .9); }
.sheet__top .wordmark { margin: 0; }
.menu-btn--close { display: grid; }
.sheet__nav { display: flex; flex-direction: column; padding-top: 20px; }
.sheet__nav a { display: flex; align-items: center; min-height: 64px; color: var(--text); text-decoration: none; border-bottom: 1px solid var(--line);
  font: 580 clamp(1.75rem, 8vw, 2.5rem)/1.1 var(--font); letter-spacing: -.03em; }
.sheet__nav a[aria-current="page"] { color: var(--accent); }
.sheet__foot { margin-top: auto; display: flex; gap: 12px; align-items: center; justify-content: space-between; padding-top: 32px; padding-bottom: max(28px, env(safe-area-inset-bottom)); }
.sheet .lang { min-height: 48px; padding: 0 18px; border: 1px solid var(--line-strong); }
.sheet .lang__cur, .sheet .lang__sep { display: inline; }
:root.k-menu { overflow: hidden; }
@media (min-width: 720px) { .sheet { display: none !important; } }

/* P1-2: в WebKit смаз «движения» — шлейф из text-shadow вместо filter: blur (анимированный blur + живой WebGL = падение процесса) */
@keyframes k-smear-wk { from { transform: translateX(-.22em) skewX(-14deg) scaleX(1.08);
  text-shadow: -.1em 0 .02em color-mix(in srgb, currentColor 40%, transparent), -.22em 0 .04em color-mix(in srgb, currentColor 18%, transparent); } }
:root.k-wk[data-motion="full"] .key--hero .key__w { animation-name: k-sig-mask, k-smear-wk; }
/* P1-5: место под «Паузу» занято с первого кадра (режим движения известен до отрисовки) — шапка не прыгает, когда скрипт её покажет */
:root.k-js[data-motion="full"]:not(.k-shot):not(.k-poster) .pause[hidden] { display: inline-flex; visibility: hidden; }
