/* =====================================================================
   site.css — структурная вёрстка всех блоков.
   Цвета/шрифты/скругления приходят CSS-переменными из темы сайта,
   поэтому один и тот же файл обслуживает все домены и кэшируется навсегда.
   ===================================================================== */

/* ------------------------------------------------------------- сброс */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:auto;--motion-factor:0}
@media screen and (prefers-reduced-motion:no-preference){
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js){--motion-factor:1;scroll-behavior:smooth}
}
@media (prefers-reduced-motion:reduce){
  /* Timing only: imported/page CSS must finish without unhiding controls or resetting transforms. */
  *,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
}
/* A site-level stop also settles authored animation timelines, without
   rewriting their opacity, visibility or functional transforms. */
html:is([data-motion="still"],[data-motion-active="false"],.no-js),
html:is([data-motion="still"],[data-motion-active="false"],.no-js)::before,
html:is([data-motion="still"],[data-motion-active="false"],.no-js)::after,
html:is([data-motion="still"],[data-motion-active="false"],.no-js) *,
html:is([data-motion="still"],[data-motion-active="false"],.no-js) *::before,
html:is([data-motion="still"],[data-motion-active="false"],.no-js) *::after{
  animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;
  transition-duration:.01ms!important;transition-delay:0s!important}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-b);
  font-size:clamp(15px,.6vw + 13.6px,17px);line-height:1.62;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg,video,iframe{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
h1,h2,h3,h4{margin:0;font-family:var(--font-h);line-height:1.08;font-weight:700;letter-spacing:-.02em}
p{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
code{font-family:ui-monospace,"SF Mono",Consolas,monospace;font-size:.92em}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
::selection{background:rgb(var(--accent-rgb)/.3);color:var(--text)}

.skip{position:absolute;left:-9999px;top:0;z-index:200;padding:12px 18px;background:var(--accent);color:#000;border-radius:0 0 10px 0}
.skip:focus{left:0}

/* ------------------------------------------------ характер темы: текстуры */
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none}
[data-texture="none"] body::before{display:none}
[data-texture="grain"] body::before{opacity:.045;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
[data-texture="paper"] body::before{opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)'/%3E%3C/svg%3E")}
[data-texture="grid"] body::before{opacity:.5;
  background-image:linear-gradient(rgb(var(--text-rgb)/.032) 1px,transparent 1px),linear-gradient(90deg,rgb(var(--text-rgb)/.032) 1px,transparent 1px);
  background-size:56px 56px}
[data-texture="mesh"] body::before{opacity:1;
  background:radial-gradient(60vw 50vh at 12% -6%,rgb(var(--accent-rgb)/.20),transparent 62%),
             radial-gradient(52vw 46vh at 96% 8%,rgb(var(--accent2-rgb)/.16),transparent 60%),
             radial-gradient(70vw 60vh at 50% 104%,rgb(var(--accent-rgb)/.10),transparent 62%)}
[data-texture="dots"] body::before{opacity:.42;
  background-image:radial-gradient(rgb(var(--text-rgb)/.13) 1.1px,transparent 1.1px);
  background-size:22px 22px}
[data-texture="lines"] body::before{opacity:.34;
  background-image:repeating-linear-gradient(135deg,rgb(var(--text-rgb)/.05) 0 1px,transparent 1px 9px)}
[data-texture="vignette"] body::before{opacity:1;
  background:radial-gradient(120vw 100vh at 50% 40%,transparent 42%,rgb(0 0 0/.34) 100%)}
/* Развёртка: тонкие горизонтальные полосы, как на ЭЛТ. Шаг 3px — на 2px
   на дисплеях с dpr 1 полосы сливаются в ровную заливку. */
[data-texture="scan"] body::before{opacity:.5;
  background-image:repeating-linear-gradient(180deg,rgb(var(--text-rgb)/.05) 0 1px,transparent 1px 3px)}
[data-texture="blueprint"] body::before{opacity:.6;
  background-image:
    linear-gradient(rgb(var(--accent-rgb)/.07) 1px,transparent 1px),
    linear-gradient(90deg,rgb(var(--accent-rgb)/.07) 1px,transparent 1px),
    linear-gradient(rgb(var(--accent-rgb)/.028) 1px,transparent 1px),
    linear-gradient(90deg,rgb(var(--accent-rgb)/.028) 1px,transparent 1px);
  background-size:96px 96px,96px 96px,16px 16px,16px 16px}
body>*{position:relative;z-index:1}

/* ------------------------------------------------------------ прогресс */
.progress{display:none;position:fixed;top:0;left:0;height:2px;width:0;z-index:120;
  background:linear-gradient(90deg,var(--accent),var(--accent2));box-shadow:0 0 14px rgb(var(--accent-rgb)/.55)}
[data-glow="0"] .progress{box-shadow:none}

/* --------------------------------------------------------------- шапка */
.site-head{position:absolute;top:0;left:0;right:0;z-index:100;padding:14px 18px}
.site-head.is-sticky{position:fixed}
.head-in{display:flex;align-items:center;gap:18px;max-width:var(--maxw);margin:0 auto;
  padding:10px 14px 10px 16px;border-radius:calc(var(--radius) * .8);
  background:rgb(var(--bg-rgb)/.55);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);
   border:1px solid transparent;transition:background calc(.25s * var(--motion-factor)),border-color calc(.25s * var(--motion-factor)),box-shadow calc(.25s * var(--motion-factor))}
.site-head.is-stuck .head-in{background:rgb(var(--bg-rgb)/.86);border-color:var(--line);box-shadow:0 10px 40px rgb(0 0 0/.28)}
.brand{display:flex;align-items:center;gap:10px;flex:0 0 auto;font-family:var(--font-h);font-weight:700}
.brand-logo{width:34px;height:34px;object-fit:contain;border-radius:8px}
.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;
  background:linear-gradient(140deg,var(--accent),var(--accent2));color:#0b0c10;font-weight:800}
.brand-name{font-size:15px;letter-spacing:.01em;white-space:nowrap}
.nav-links{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
.nav-a{padding:7px 11px;border-radius:9px;font-size:13.5px;color:var(--muted);transition:color calc(.18s * var(--motion-factor)),background calc(.18s * var(--motion-factor))}
.nav-a:hover{color:var(--text);background:rgb(var(--text-rgb)/.06)}
.head-right{display:flex;align-items:center;gap:8px;margin-left:auto}
.nav-links + .head-right{margin-left:0}
.nav-toggle{display:none;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);
  flex-direction:column;align-items:center;justify-content:center;gap:4px}
.nav-toggle span{display:block;width:16px;height:1.5px;background:currentColor;transition:transform calc(.2s * var(--motion-factor)),opacity calc(.2s * var(--motion-factor))}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
.mob-nav{display:none;flex-direction:column;gap:2px;max-width:var(--maxw);margin:8px auto 0;padding:12px;
  border-radius:calc(var(--radius) * .8);background:rgb(var(--bg-rgb)/.94);border:1px solid var(--line);backdrop-filter:blur(14px)}
.mob-nav .nav-a{padding:11px 12px;font-size:15px}
.mob-nav .btn{margin-top:6px;justify-content:center}

/* язык */
.lang{position:relative}
.lang-btn{display:flex;align-items:center;gap:6px;padding:7px 10px;border-radius:9px;border:1px solid var(--line);font-size:12.5px;font-weight:600}
.lang-btn svg{width:15px;height:15px;opacity:.7}
.lang-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:158px;padding:6px;z-index:10;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 50px rgb(0 0 0/.35);max-height:60vh;overflow:auto}
.lang-i{display:block;padding:8px 11px;border-radius:8px;font-size:13.5px;color:var(--muted)}
.lang-i:hover{background:rgb(var(--text-rgb)/.06);color:var(--text)}
.lang-i.is-on{color:var(--accent);font-weight:600}

/* --------------------------------------------------------------- секции */
.sec{position:relative}
.sec-in{position:relative;max-width:var(--maxw);margin:0 auto;padding-left:clamp(18px,4vw,40px);padding-right:clamp(18px,4vw,40px)}
.w-narrow .sec-in{max-width:min(760px,var(--maxw))}
.w-normal .sec-in{max-width:min(1080px,var(--maxw))}
.w-wide   .sec-in{max-width:var(--maxw)}
.w-full   .sec-in{max-width:none;padding-left:0;padding-right:0}
.p-none .sec-in{padding-top:0;padding-bottom:0}
.p-sm   .sec-in{padding-top:calc(28px * var(--density));padding-bottom:calc(28px * var(--density))}
.p-md   .sec-in{padding-top:calc(56px * var(--density));padding-bottom:calc(56px * var(--density))}
.p-lg   .sec-in{padding-top:calc(92px * var(--density));padding-bottom:calc(92px * var(--density))}
.p-xl   .sec-in{padding-top:calc(132px * var(--density));padding-bottom:calc(132px * var(--density))}
.a-center{text-align:center}
.a-left{text-align:left}
.bg-soft{background:var(--bg2)}
.bg-panel{background:var(--surface)}
.bg-accent{background:linear-gradient(135deg,rgb(var(--accent-rgb)/.16),rgb(var(--accent2-rgb)/.10))}
.bg-gradient{background:linear-gradient(180deg,var(--bg),var(--bg2) 55%,var(--bg))}
.bg-image{color:#fff}
.bg-custom{background:var(--sec-bg,transparent)}
.sec-bg{position:absolute;inset:0;background-image:var(--sec-img);background-size:cover;background-position:center;z-index:0}
.sec-bg::after{content:"";position:absolute;inset:0;background:rgb(var(--bg-rgb)/var(--sec-dim,.6))}
/* фон «стоит на месте» — эффект глубины. На тач-экранах fixed работает
   рывками и жрёт батарею, поэтому там возвращаем обычный фон. */
.bg-fixed .sec-bg{background-attachment:scroll}
.has-rule{border-top:1px solid var(--line)}

.sec-head{max-width:660px;margin:0 auto calc(44px * var(--density))}
.a-left .sec-head{margin-left:0}
.sec-head--flush{margin-bottom:20px}
.eyebrow{margin-bottom:12px;font-size:11.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}
.sec-title{font-size:calc(clamp(28px,3.4vw,46px) * var(--scale))}
.sec-sub{margin-top:14px;color:var(--muted);font-size:calc(clamp(15px,1.1vw,17.5px) * var(--scale))}
.sec-note{margin-bottom:20px;color:var(--muted);font-size:14.5px}
[data-headings="upper"] .sec-title,[data-headings="upper"] .hero-title{text-transform:uppercase;letter-spacing:-.005em}
[data-headings="tight"] .sec-title,[data-headings="tight"] .hero-title{letter-spacing:-.035em}
[data-headings="wide"] .sec-title,[data-headings="wide"] .hero-title{letter-spacing:.06em;font-weight:600}
[data-headings="wide"] .eyebrow{letter-spacing:.32em}
/* Курсив: настоящий italic только у шрифтов с засечками — у Syne и Space
   Grotesk наклонного начертания нет, браузер синтезирует его сдвигом и
   получается грязно. Поэтому наклон даём мягкий, через skew. */
[data-headings="italic"] .sec-title,[data-headings="italic"] .hero-title{font-style:italic;transform:skewX(-3deg);transform-origin:left bottom}
[data-headings="italic"] .a-center .sec-title{transform-origin:center bottom}

.empty-hint{max-width:560px;margin:0 auto;padding:22px;border:1px dashed var(--line);border-radius:var(--radius);
  color:var(--muted);text-align:center;font-size:14px}

/* --------------------------------------------------------------- кнопки */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 26px;border-radius:var(--radius);font-size:14.5px;font-weight:600;
  border:1px solid transparent;transition:transform calc(.16s * var(--motion-factor)),box-shadow calc(.2s * var(--motion-factor)),background calc(.2s * var(--motion-factor)),color calc(.2s * var(--motion-factor)),border-color calc(.2s * var(--motion-factor));white-space:nowrap}
.btn--sm{padding:9px 16px;font-size:13px}
.btn--primary{background:var(--accent);color:var(--on-accent,#0b0c10);border-color:var(--accent)}
[data-glow="1"] .btn--primary{box-shadow:0 8px 30px rgb(var(--accent-rgb)/.32)}
.btn--primary:hover{filter:brightness(1.08)}
.btn--ghost{background:rgb(var(--text-rgb)/.07);color:var(--text)}
.btn--ghost:hover{background:rgb(var(--text-rgb)/.13)}
.btn--outline{border-color:var(--line);color:var(--text)}
.btn--outline:hover{border-color:var(--accent);color:var(--accent)}
.btn--link{padding:6px 0;color:var(--accent);border-radius:0;text-decoration:underline;text-underline-offset:4px}
[data-buttons="pill"] .btn{border-radius:999px}
[data-buttons="sharp"] .btn{border-radius:2px}
[data-buttons="round"] .btn{border-radius:calc(var(--radius) * .55)}
/* Срезанный угол: clip-path, а не поворот псевдоэлемента — иначе фон кнопки
   пришлось бы дублировать, и градиентная .btn--primary разъехалась бы. */
[data-buttons="cut"] .btn{border-radius:0;clip-path:polygon(11px 0,100% 0,100% calc(100% - 11px),calc(100% - 11px) 100%,0 100%,0 11px)}
[data-buttons="wide"] .btn{border-radius:calc(var(--radius) * .4);padding-left:38px;padding-right:38px;letter-spacing:.14em;text-transform:uppercase;font-size:12.5px}
[data-buttons="wide"] .btn--sm{padding-left:22px;padding-right:22px;font-size:11px}
[data-borders="thick"] .btn{border-width:2px;box-shadow:4px 4px 0 var(--line)}
[data-borders="neon"] .btn--outline{border-color:var(--accent);box-shadow:0 0 0 1px rgb(var(--accent-rgb)/.25) inset}
[data-borders="double"] .btn--outline{border-style:double;border-width:3px}
[data-borders="dashed"] .btn--outline{border-style:dashed}

/* --- характер рамок на карточках -------------------------------------
   Раньше эта ось трогала только кнопки, поэтому «толстые рамки» на
   странице без кнопок были неотличимы от волосяных. Список карточек тот
   же, что у оси глубины. hairline и solid — базовый каскад (1px var(--line)
   уже стоит на компонентах), поэтому правил не требуют. */
[data-borders="thick"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.stat,.step,.faq-i,.team-i,.file,.cmp-card){border-width:2px}
[data-borders="neon"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.team-i,.file,.cmp-card){
  border-color:rgb(var(--accent-rgb)/.45);box-shadow:0 0 0 1px rgb(var(--accent-rgb)/.16) inset,0 0 18px -4px rgb(var(--accent-rgb)/.3)}
[data-borders="double"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.team-i,.file,.cmp-card){border-style:double;border-width:3px}
[data-borders="dashed"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.team-i,.file,.cmp-card){border-style:dashed}
/* «Без рамок, мягкая тень»: граница убирается совсем, форму держит тень и
   слегка приподнятый фон. На тёмных темах одной тени мало — она не видна,
   поэтому подложка обязательна. */
[data-borders="soft"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.stat,.step,.faq-i,.team-i,.file,.cmp-card){
  border-color:transparent;background:var(--surface);box-shadow:0 4px 18px -6px rgb(0 0 0/.3)}
[data-borders="soft"] .btn--outline{border-color:rgb(var(--text-rgb)/.14)}

.row-actions,.hero-actions,.cta-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.a-center .row-actions,.hero--center .hero-actions,.hero--cover .hero-actions,.cta--band .cta-actions{justify-content:center}

/* ----------------------------------------------------------------- hero */
.hero{position:relative;display:grid;align-items:center;min-height:clamp(520px,88vh,940px);overflow:hidden}
.hero--minimal{min-height:auto;padding:clamp(110px,16vh,190px) 0 clamp(40px,7vh,90px)}
.hero-bg{position:absolute;inset:0;background-image:var(--hero-img);background-size:cover;background-position:center;transform:scale(1.04)}
.hero-bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgb(var(--bg-rgb)/calc(var(--hero-dim) * .8)),rgb(var(--bg-rgb)/var(--hero-dim)) 45%,var(--bg))}
.hero-inner{position:relative;width:100%;max-width:var(--maxw);margin:0 auto;padding:clamp(96px,13vh,150px) clamp(18px,4vw,40px) clamp(64px,9vh,110px)}
.hero-copy{max-width:820px}
.hero--center .hero-copy,.hero--cover .hero-copy{margin:0 auto;text-align:center}
.hero-eyebrow{margin-bottom:18px;font-size:11.5px;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:var(--accent)}
.hero-title{font-size:calc(clamp(38px,7.2vw,86px) * var(--scale));line-height:1.02}
.hero-sub{margin-top:22px;max-width:620px;color:var(--muted);font-size:calc(clamp(16px,1.35vw,19.5px) * var(--scale))}
.hero--center .hero-sub,.hero--cover .hero-sub{margin-left:auto;margin-right:auto}
.hero-note{margin-top:16px;font-size:13px;color:var(--muted)}
.hero-split{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px,5vw,72px);align-items:center}
.hero-split .hero-copy{text-align:left}
.hero-media img,.hero-media .m-video{width:100%;border-radius:var(--radius);object-fit:cover}
.hero-media--wide{margin-top:44px}
[data-glow="1"] .hero-media img{box-shadow:0 30px 90px rgb(0 0 0/.45)}
.scroll-hint{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);width:22px;height:34px;
  border:1.5px solid rgb(var(--text-rgb)/.28);border-radius:12px}
.scroll-hint span{position:absolute;left:50%;top:7px;width:3px;height:6px;margin-left:-1.5px;border-radius:2px;
  background:var(--accent)}
@keyframes scrolldot{0%,100%{transform:translateY(0);opacity:1}50%{transform:translateY(9px);opacity:.25}}

/* обратный отсчёт */
.countdown{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.hero--center .countdown,.hero--cover .countdown,.a-center .countdown{justify-content:center}
.cd-cell{min-width:84px;padding:14px 16px;border-radius:calc(var(--radius) * .7);
  background:rgb(var(--text-rgb)/.05);border:1px solid var(--line);text-align:center}
.cd-num{display:block;font-family:var(--font-h);font-size:clamp(24px,3vw,38px);font-weight:800;font-variant-numeric:tabular-nums;line-height:1}
.cd-lab{display:block;margin-top:6px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.countdown--inline{gap:8px}
.countdown--inline .cd-cell{min-width:60px;padding:8px 10px}
.countdown.is-done{font-family:var(--font-h);font-size:clamp(20px,2.6vw,32px);font-weight:800;color:var(--accent)}

/* ------------------------------------------------------------- marquee */
.marquee{padding:16px 0;border-block:1px solid var(--line)}
.mq-track{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 22px}
@keyframes mq{to{transform:translateX(calc(-50% - var(--track-gap,22px) / 2))}}
.mq-i{font-family:var(--font-h);letter-spacing:.06em}
.marquee--line .mq-i{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.2em;text-transform:uppercase}
.marquee--bold .mq-i{font-size:clamp(20px,3vw,34px);font-weight:800;text-transform:uppercase}
.marquee--outline .mq-i{font-size:clamp(22px,3.4vw,40px);font-weight:800;text-transform:uppercase;
  color:transparent;-webkit-text-stroke:1px rgb(var(--text-rgb)/.4)}
.mq-s{color:var(--accent);font-size:12px}

/* --------------------------------------------------------------- stats */
.stats{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.stats--split{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.stat{padding:26px 18px;text-align:center}
.stats--cards .stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.stats--split .stat{border-right:1px solid var(--line);padding:14px}
.stats--split .stat:last-child{border-right:0}
.stat-v{font-family:var(--font-h);font-size:calc(clamp(30px,4vw,52px) * var(--scale));font-weight:800;line-height:1;
  color:var(--accent);font-variant-numeric:tabular-nums}
.stat-fix{font-size:.62em;opacity:.85}
.stat-l{margin-top:10px;font-size:12.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}

/* ------------------------------------------------------------- features */
.feats{display:grid;gap:18px}
.cols-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.cols-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.cols-4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.feat{padding:28px 24px;border-radius:var(--radius);transition:transform calc(.22s * var(--motion-factor)),border-color calc(.22s * var(--motion-factor)),background calc(.22s * var(--motion-factor))}
.feats--cards .feat{background:var(--surface);border:1px solid var(--line)}
.feats--bordered .feat{border:1px solid var(--line)}
.feats--list{grid-template-columns:1fr;gap:0}
.feats--list .feat{display:grid;grid-template-columns:auto 1fr;gap:0 18px;padding:22px 0;border-bottom:1px solid var(--line);border-radius:0}
.feats--list .feat-t{grid-column:2}
.feats--list .feat-x{grid-column:2}
.feats--list .feat-ico{grid-row:span 2}
.feat.is-link:hover{border-color:rgb(var(--accent-rgb)/.5)}
.a-center .feats--cards .feat,.a-center .feats--icons .feat{text-align:center}
.feat-ico{display:inline-grid;place-items:center;width:46px;height:46px;margin-bottom:16px;border-radius:13px;
  background:rgb(var(--accent-rgb)/.12);color:var(--accent)}
.a-center .feats--cards .feat-ico{margin-inline:auto}
.feat-ico svg{width:22px;height:22px}
.feat-img{width:56px;height:56px;object-fit:cover;border-radius:12px;margin-bottom:16px}
.feat-t{font-size:calc(18px * var(--scale));margin-bottom:8px}
.feat-x{color:var(--muted);font-size:14.5px}

/* ---------------------------------------------------------------- steps */
.steps{display:grid;gap:8px;counter-reset:s}
.steps--cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}
.step{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;padding:20px 0;text-align:left;position:relative}
.steps--cards .step{grid-template-columns:1fr;padding:26px 22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.steps--connected .step:not(:last-child)::before{content:"";position:absolute;left:23px;top:56px;bottom:-8px;width:1px;background:var(--line)}
.step-n{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;flex:0 0 auto;
  background:rgb(var(--accent-rgb)/.12);color:var(--accent);font-family:var(--font-h);font-weight:800;font-size:17px}
.step-n svg{width:21px;height:21px}
.step-t{font-size:calc(17.5px * var(--scale));margin-bottom:6px}
.step-x{color:var(--muted);font-size:14.5px}

/* ---------------------------------------------------------------- about */
.about{display:grid;gap:clamp(28px,5vw,64px);align-items:center;text-align:left}
.about--right{grid-template-columns:1fr .92fr}
.about--left{grid-template-columns:.92fr 1fr}
.about--left .about-copy{order:2}
.about--stack{grid-template-columns:1fr}
.about .sec-head{margin-left:0;max-width:none}
.about-media img{width:100%;border-radius:var(--radius);object-fit:cover}
.prose{color:var(--muted);font-size:15.5px}
.prose strong{color:var(--text)}
.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.prose code{padding:2px 6px;border-radius:5px;background:rgb(var(--text-rgb)/.07)}
.prose--columns{columns:2;column-gap:40px}
.prose--note{padding:22px 26px;border-left:3px solid var(--accent);background:rgb(var(--accent-rgb)/.06);border-radius:0 var(--radius) var(--radius) 0}
.ticks{display:grid;gap:10px;margin-top:22px}
.ticks li{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;font-size:14.5px;color:var(--muted);text-align:left}
.ticks svg{width:17px;height:17px;margin-top:3px;color:var(--accent)}

/* ------------------------------------------------------------- timeline */
.tl{display:grid;gap:2px;text-align:left}
.tl--cards{gap:12px}
.tl-i{position:relative;display:grid;grid-template-columns:88px 1fr;gap:18px;padding:18px 0 18px 26px}
.tl--rail .tl-i{border-left:1px solid var(--line)}
.tl--rail .tl-i:first-child{border-image:linear-gradient(180deg,transparent 24px,var(--line) 24px) 1}
.tl--cards .tl-i{padding:18px 22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.tl--compact .tl-i{grid-template-columns:70px 1fr;gap:12px;padding:11px 0 11px 22px}
.tl-dot{position:absolute;left:-5px;top:24px;width:9px;height:9px;border-radius:50%;background:var(--line)}
.tl--cards .tl-dot,.tl--compact .tl-dot{display:none}
.tl-i.is-accent .tl-dot{background:var(--accent);box-shadow:0 0 0 5px rgb(var(--accent-rgb)/.15)}
.tl-time{font-family:var(--font-h);font-weight:700;font-size:15px;color:var(--accent);font-variant-numeric:tabular-nums}
.tl-i.is-accent .tl-title{color:var(--accent)}
.tl-title{display:block;font-weight:600}
.tl-text{display:block;margin-top:4px;color:var(--muted);font-size:14px}

/* -------------------------------------------------------------- gallery */
.gal{display:grid;gap:12px}
.gal--grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.gal--grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.gal--grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.gal--masonry{display:block;columns:3;column-gap:12px}
.gal--masonry.cols-2{columns:2}
.gal--masonry.cols-4{columns:4}
.gal--masonry .gal-i{break-inside:avoid;margin-bottom:12px}
.gal--carousel,.gal--strip{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:10px;
  scrollbar-width:thin}
.gal--carousel .gal-i,.gal--strip .gal-i{flex:0 0 min(78vw,380px);scroll-snap-align:center}
.gal--strip .gal-i{flex-basis:min(60vw,260px)}
.gal-i{position:relative;margin:0;overflow:hidden;border-radius:var(--radius);background:var(--surface);cursor:zoom-in}
.gal-img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform calc(.28s * var(--motion-factor)) cubic-bezier(.2,.7,.3,1)}
.gal--masonry .gal-img{aspect-ratio:auto}
.gal-cap{position:absolute;left:0;right:0;bottom:0;padding:26px 14px 12px;font-size:13px;
  background:linear-gradient(transparent,rgb(0 0 0/.72));color:#fff}

/* лайтбокс */
.lb{position:fixed;inset:0;z-index:300;display:grid;place-items:center;background:rgb(0 0 0/.93);padding:4vh 4vw}
.lb img{max-width:100%;max-height:88vh;object-fit:contain;border-radius:8px}
.lb-btn{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;
  display:grid;place-items:center;background:rgb(255 255 255/.1);color:#fff;font-size:24px}
.lb-prev{left:16px}.lb-next{right:16px}
.lb-close{top:16px;right:16px;transform:none;position:absolute;width:44px;height:44px;border-radius:50%;
  display:grid;place-items:center;background:rgb(255 255 255/.1);color:#fff;font-size:22px}
.lb-cap{position:absolute;left:0;right:0;bottom:14px;text-align:center;color:#fff;font-size:14px;opacity:.85}

/* ---------------------------------------------------------------- video */
.video-wrap{position:relative;border-radius:var(--radius);overflow:hidden;background:#000}
.video--boxed{border:1px solid var(--line);box-shadow:0 24px 70px rgb(0 0 0/.35)}
.m-video{width:100%;aspect-ratio:16/9;border:0;display:block}

/* ------------------------------------------------------------------ faq */
.faq{display:grid;gap:10px;text-align:left}
.faq--twocol{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.faq-i{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}
.faq--accordion .faq-i{background:transparent}
.faq-q{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;
  cursor:pointer;font-weight:600;list-style:none}
.faq-q::-webkit-details-marker{display:none}
.faq-mark{position:relative;flex:0 0 auto;width:16px;height:16px}
.faq-mark::before,.faq-mark::after{content:"";position:absolute;left:0;top:7.5px;width:16px;height:1.5px;background:var(--accent);transition:transform calc(.22s * var(--motion-factor))}
.faq-mark::after{transform:rotate(90deg)}
.faq-i[open] .faq-mark::after{transform:rotate(0)}
.faq-a{padding:0 22px 20px;color:var(--muted);font-size:14.5px}
.faq-i[open]{border-color:rgb(var(--accent-rgb)/.4)}

/* --------------------------------------------------------- testimonials */
.tst{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));text-align:left}
.tst--single{grid-template-columns:1fr;max-width:760px;margin:0 auto;text-align:center}
.tst-i{position:relative;margin:0;padding:30px 26px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}
.tst--quotes .tst-i{background:transparent;border:0;border-left:2px solid var(--accent);border-radius:0;padding:6px 0 6px 24px}
.tst-mark{position:absolute;right:22px;top:20px;width:26px;height:26px;color:var(--accent);opacity:.22}
.tst--quotes .tst-mark,.tst--single .tst-mark{display:none}
.tst-i blockquote{margin:0;font-size:calc(15.5px * var(--scale));color:var(--text)}
.tst--single blockquote{font-family:var(--font-h);font-size:calc(clamp(19px,2.2vw,27px) * var(--scale));line-height:1.4}
.tst-i figcaption{display:flex;align-items:center;gap:12px;margin-top:20px}
.tst--single figcaption{justify-content:center}
.tst-av{width:40px;height:40px;border-radius:50%;object-fit:cover}
.tst-i figcaption b{display:block;font-size:14px}
.tst-i figcaption i{display:block;font-style:normal;font-size:12.5px;color:var(--muted)}

/* -------------------------------------------------------------- pricing */
.price{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));text-align:left}
.price-i{display:flex;flex-direction:column;padding:30px 26px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}
.price-i.is-featured{border-color:var(--accent);position:relative}
[data-glow="1"] .price-i.is-featured{box-shadow:0 16px 60px rgb(var(--accent-rgb)/.16)}
.price-n{font-size:calc(17px * var(--scale))}
.price-v{margin:14px 0 6px;font-family:var(--font-h);font-size:calc(34px * var(--scale));font-weight:800;color:var(--accent)}
.price-p{margin-left:6px;font-size:14px;font-weight:500;color:var(--muted)}
.price-x{color:var(--muted);font-size:14px}
.price-i .ticks{flex:1}
.price-i .btn{margin-top:22px;justify-content:center}

/* ---------------------------------------------------------------- logos */
.logos{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px 34px}
.logos--grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px}
.logos--scroll{min-width:0}
.logos-track{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px 34px;min-width:0;max-width:100%}
.logo-i{display:grid;place-items:center;padding:10px 6px;min-height:44px}
.logos--grid .logo-i{background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--radius) * .7);padding:18px}
.logo-img{max-height:34px;width:auto;object-fit:contain}
.logo-txt{font-family:var(--font-h);font-weight:700;font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);overflow-wrap:anywhere}
.logos.is-gray .logo-i{filter:grayscale(1);opacity:.55;transition:filter calc(.25s * var(--motion-factor)),opacity calc(.25s * var(--motion-factor))}
.logos.is-gray .logo-i:hover{filter:none;opacity:1}

/* ------------------------------------------------------------------ map */
.pmap{position:relative;width:100%;min-width:0;aspect-ratio:16/9;min-height:clamp(180px,32vw,320px);border-radius:var(--radius);overflow:hidden;
  background:var(--surface) center/cover no-repeat;border:1px solid var(--line)}
.pmap-grid{position:absolute;inset:0;opacity:.5;
  background-image:linear-gradient(rgb(var(--text-rgb)/.05) 1px,transparent 1px),linear-gradient(90deg,rgb(var(--text-rgb)/.05) 1px,transparent 1px);
  background-size:44px 44px}
.pin{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:9px;padding:6px 12px 6px 8px;
  border-radius:999px;background:rgb(var(--bg-rgb)/.86);border:1px solid var(--line);backdrop-filter:blur(6px);
  font-size:12.5px;white-space:nowrap;transition:transform calc(.2s * var(--motion-factor)),border-color calc(.2s * var(--motion-factor));text-align:left}
.pin:hover,.pin:focus-visible{border-color:var(--accent);z-index:3}
.pin-dot{width:9px;height:9px;border-radius:50%;background:var(--pin,var(--accent));box-shadow:0 0 0 4px rgb(var(--accent-rgb)/.16);flex:0 0 auto}
.pin-lab b{display:block;font-weight:600}
.pin-lab i{display:block;font-style:normal;font-size:11px;color:var(--muted)}

/* -------------------------------------------------------------- contact */
.cts{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));text-align:left}
.cts--list{grid-template-columns:1fr}
.ct{display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:var(--radius);
  background:var(--surface);border:1px solid var(--line);transition:border-color calc(.2s * var(--motion-factor)),transform calc(.2s * var(--motion-factor))}
a.ct:hover{border-color:var(--accent)}
.ct-ico{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;flex:0 0 auto;
  background:rgb(var(--accent-rgb)/.12);color:var(--accent)}
.ct-ico svg{width:19px;height:19px}
.ct-b i{display:block;font-style:normal;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.ct-b b{display:block;font-size:15px;font-weight:600;word-break:break-word}

/* ------------------------------------------------------------------ cta */
.cta{display:grid;gap:22px;justify-items:center;text-align:center}
.cta--boxed{padding:clamp(34px,5vw,60px);border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}
.cta--split{grid-template-columns:1fr auto;align-items:center;text-align:left;justify-items:start}
.cta--split .cta-actions{margin-top:0}
.cta .sec-head{margin:0}
.cta-note{font-size:13px;color:var(--muted)}

/* ------------------------------------------------------------ divider */
.divider--line{height:1px;background:var(--line)}
.divider--dots{height:6px;background:radial-gradient(circle,var(--line) 1.5px,transparent 1.6px) 0 0/16px 6px repeat-x}
.divider.sz-sm{margin:20px 0}.divider.sz-md{margin:44px 0}.divider.sz-lg{margin:80px 0}
.divider--space{background:none}

/* -------------------------------------------------------------- embed */
.embed{text-align:left}
.embed :is(h1,h2,h3){margin:1.2em 0 .5em}
.embed p{margin:0 0 1em}
.embed table{width:100%;border-collapse:collapse}
.embed :is(td,th){padding:10px 12px;border:1px solid var(--line);text-align:left}

/* --------------------------------------------------------------- гибрид
   Блок «Готовая страница»: чужая вёрстка со своими стилями плюс розетки,
   в которые сервер подставляет живые части платформы.

   Стили вставленной страницы приходят отдельным <style> и ограничены
   классом .hyb_<uid> — здесь только контейнер и поведение розеток. */
.hyb{text-align:left;position:relative}
/* Full bleed follows the page canvas, not 100vw: sidebar and magazine layouts are offset. */
.sec--hybrid.v-full > .sec-in{max-width:none;padding-inline:0;display:block}
.hyb--full{width:100%;max-width:100%;margin-inline:0}
/* «Только чужой стиль»: гасим наследование от темы, чтобы вставленная
   типографика не смешивалась с нашей. revert, а не initial: initial дал бы
   display:inline и обрушил бы раскладку. Шрифт возвращаем к системному —
   у чужой страницы свой, и она задаст его сама. */
.hyb--isolate{all:revert;font-family:initial;text-align:left}
.hyb--isolate *{font-family:inherit}
/* «Наследовать оформление сайта»: наоборот, раздаём переменные темы внутрь,
   чтобы вставленная вёрстка попала в палитру. */
.hyb--inherit{color:var(--text);font-family:var(--font-b)}
.hyb--inherit :is(h1,h2,h3,h4){font-family:var(--font-h);color:var(--text)}
.hyb--inherit a{color:var(--accent)}
/* Картинки чужой страницы не должны рвать раскладку на телефоне. */
.hyb img,.hyb video,.hyb table{max-width:100%}
.hyb img{height:auto}
/* Розетка: место, куда встала наша часть. Отбивка нужна, потому что чужая
   вёрстка про наши блоки ничего не знает и вплотную к ним прижмётся. */
.hyb-slot{margin:clamp(20px,3vw,40px) 0}
.hyb-slot > .sec-head{margin-bottom:20px}
.hyb-cta{margin:20px 0}
/* Розетка внутри сетки чужой страницы: растягиваем на всю строку, иначе
   донат-блок сожмётся в одну колонку и станет нечитаемым. */
.hyb :is(.hyb-slot){grid-column:1/-1}

/* ----------------------------------------------------------------- team */
.team{display:grid;gap:20px;text-align:left}
.team--list{grid-template-columns:1fr;gap:0}
.team-i{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  transition:transform calc(.22s * var(--motion-factor)),border-color calc(.22s * var(--motion-factor))}
.team-i:hover{border-color:rgb(var(--accent-rgb)/.45)}
.team-media{position:relative;background:var(--bg2)}
.team-img{width:100%;height:100%;object-fit:cover;display:block}
.team-ph{display:grid;place-items:center;aspect-ratio:4/5;font-family:var(--font-h);font-weight:800;
  font-size:44px;color:var(--accent);background:rgb(var(--accent-rgb)/.1)}
.team-i figcaption{padding:18px 20px 20px}
.team-n{display:block;font-size:calc(16.5px * var(--scale))}
.team-r{display:block;margin-top:3px;font-style:normal;font-size:13px;color:var(--accent)}
.team-x{margin-top:10px;color:var(--muted);font-size:14px}
.team-ls{display:flex;gap:8px;margin-top:14px}
.team-l{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;color:var(--muted);
  border:1px solid var(--line);transition:color calc(.2s * var(--motion-factor)),border-color calc(.2s * var(--motion-factor))}
.team-l:hover{color:var(--accent);border-color:var(--accent)}
.team-l svg{width:16px;height:16px}
/* круглые фото: карточка исчезает, остаётся портрет */
.team--circles .team-i{background:none;border:0;text-align:center}
.team--circles .team-i:hover{transform:none}
.team--circles .team-media{width:132px;margin:0 auto;border-radius:50%;overflow:hidden}
.team--circles .team-ph{aspect-ratio:1/1}
.team--circles figcaption{padding:16px 4px 0}
.team--circles .team-ls{justify-content:center}
.team--list .team-i{display:grid;grid-template-columns:88px 1fr;gap:0 20px;align-items:center;
  background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:20px 0}
.team--list .team-i:hover{transform:none}
.team--list .team-media{width:88px;border-radius:14px;overflow:hidden}
.team--list .team-ph{aspect-ratio:1/1;font-size:30px}
.team--list figcaption{padding:0}

/* ----------------------------------------------------------------- tabs */
.tabs{text-align:left}
.tab-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:26px}
.a-center .tabs--line .tab-nav,.a-center .tabs--pills .tab-nav{justify-content:center}
.tab-b{display:inline-flex;align-items:center;gap:9px;padding:11px 18px;border:0;background:none;cursor:pointer;
  font-family:inherit;font-size:14.5px;font-weight:600;color:var(--muted);border-radius:calc(var(--radius) * .6);
  transition:color calc(.2s * var(--motion-factor)),background calc(.2s * var(--motion-factor)),border-color calc(.2s * var(--motion-factor))}
.tab-b:hover{color:var(--text)}
.tab-ico{display:grid;place-items:center;width:18px;height:18px}
.tab-ico svg{width:100%;height:100%}
.tabs--line .tab-nav{gap:0;border-bottom:1px solid var(--line)}
.tabs--line .tab-b{border-radius:0;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs--line .tab-b.on{color:var(--text);border-bottom-color:var(--accent)}
.tabs--pills .tab-b{border:1px solid var(--line)}
.tabs--pills .tab-b.on{color:var(--text);background:rgb(var(--accent-rgb)/.12);border-color:rgb(var(--accent-rgb)/.5)}
.tabs--side{display:grid;grid-template-columns:minmax(180px,240px) 1fr;gap:32px;align-items:start}
.tabs--side .tab-nav{flex-direction:column;margin:0;gap:2px}
.tabs--side .tab-b{width:100%;justify-content:flex-start;border-left:2px solid var(--line);border-radius:0}
.tabs--side .tab-b.on{color:var(--text);border-left-color:var(--accent);background:rgb(var(--accent-rgb)/.07)}
.tab-p{display:grid;gap:24px}
.tab-p[hidden]{display:none}
.tab-media .m-img{width:100%;border-radius:var(--radius);object-fit:cover}
.tab-t{font-size:calc(21px * var(--scale));margin-bottom:12px}

/* ------------------------------------------------------------- compare */
.cmp-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.cmp{width:100%;border-collapse:collapse;text-align:left;font-size:14.5px;min-width:520px}
.cmp :is(th,td){padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
.cmp thead th{font-family:var(--font-h);font-size:15px;font-weight:700;color:var(--text);white-space:nowrap}
.cmp thead th i{display:block;font-style:normal;font-size:12px;font-weight:500;color:var(--muted);margin-top:2px}
.cmp tbody th{font-weight:500;color:var(--muted)}
.cmp td{text-align:center}
.cmp .is-featured{background:rgb(var(--accent-rgb)/.07)}
.cmp thead .is-featured{border-bottom-color:var(--accent)}
.cmp-yes,.cmp-no{display:inline-grid;place-items:center;width:22px;height:22px}
.cmp-yes{color:var(--ok)}
.cmp-no{color:var(--muted);opacity:.5}
.cmp-yes svg,.cmp-no svg{width:100%;height:100%}
.cmp-cards{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));text-align:left}
.cmp-card{padding:26px 22px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}
.cmp-card.is-featured{border-color:var(--accent)}
.cmp-card h3{font-size:calc(18px * var(--scale))}
.cmp-card i{display:block;margin-top:3px;font-style:normal;font-size:13px;color:var(--muted)}
.cmp-card dl{margin:18px 0 0}
.cmp-card dl>div{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-top:1px solid var(--line)}
.cmp-card dt{color:var(--muted);font-size:13.5px}
.cmp-card dd{margin:0;font-weight:600;font-size:13.5px}

/* --------------------------------------------------------------- table */
.dt-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.dt{width:100%;border-collapse:collapse;text-align:left;font-size:14.5px;min-width:480px}
.dt :is(th,td){padding:13px 16px;vertical-align:top}
.dt thead th{font-family:var(--font-h);font-weight:700;color:var(--text);white-space:nowrap}
.dt--lined :is(th,td){border-bottom:1px solid var(--line)}
.dt--striped tbody tr:nth-child(odd){background:var(--bg2)}
.dt--striped :is(th,td):first-child{border-radius:calc(var(--radius) * .4) 0 0 calc(var(--radius) * .4)}
.dt--striped :is(th,td):last-child{border-radius:0 calc(var(--radius) * .4) calc(var(--radius) * .4) 0}
.dt td{color:var(--muted)}
.dt td:first-child{color:var(--text)}

/* --------------------------------------------------------------- goals */
.goals{display:grid;gap:22px;text-align:left}
.goals--cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.goals--cards .goal{padding:24px 22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.goals--single{max-width:640px;margin:0 auto}
.goal.is-done .goal-fill{background:var(--ok)}
.goal-h{display:flex;align-items:flex-start;gap:14px;margin-bottom:14px}
.goal-ico{display:grid;place-items:center;width:40px;height:40px;flex:0 0 auto;border-radius:12px;
  background:rgb(var(--accent-rgb)/.12);color:var(--accent)}
.goal-ico svg{width:20px;height:20px}
.goal-hb{flex:1;min-width:0}
.goal-t{display:block;font-size:calc(16.5px * var(--scale))}
.goal-x{display:block;margin-top:4px;color:var(--muted);font-size:13.5px}
.goal-pct{font-family:var(--font-h);font-weight:800;font-size:calc(20px * var(--scale));color:var(--accent);flex:0 0 auto}
.goal.is-done .goal-pct{color:var(--ok)}
.goal-bar{position:relative;height:10px;border-radius:999px;background:var(--line);overflow:hidden}
.goal-fill{position:absolute;inset:0 auto 0 0;width:var(--p,0%);border-radius:999px;
  background:linear-gradient(90deg,rgb(var(--accent-rgb)/.75),var(--accent));
  transition:width calc(.28s * var(--motion-factor)) cubic-bezier(.2,.7,.3,1)}
.goals--single .goal-bar{height:14px}
.goal-f{display:flex;justify-content:space-between;gap:12px;margin-top:10px;font-size:13.5px}
.goal-f span{font-weight:700}
.goal-f i{font-style:normal;color:var(--muted)}
.goals-note{margin-top:20px;margin-bottom:0}

/* --------------------------------------------------------------- quote */
.qt{margin:0;text-align:left}
.qt--big{text-align:inherit}
/* inline-block, а не block: так кавычка сама следует за text-align и не
   может разъехаться с текстом в композициях, которые выравнивают влево */
.qt-mark{display:inline-block;width:34px;height:34px;margin-bottom:18px;color:var(--accent);opacity:.4}
.qt-mark svg{display:block;width:100%;height:100%}
.qt-t{margin:0;font-family:var(--font-h);font-weight:700;line-height:1.28;
  font-size:calc(clamp(21px,2.9vw,34px) * var(--scale))}
.qt--bordered{border-left:3px solid var(--accent);padding-left:26px;text-align:left}
.qt--bordered .qt-t{font-size:calc(clamp(18px,2.2vw,25px) * var(--scale))}
.qt--bordered .qt-mark{display:none}
.qt--photo{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center;text-align:left}
.qt--photo .qt-t{font-size:calc(clamp(17px,2vw,23px) * var(--scale))}
.qt-ph{width:124px}
.qt-ph .m-img{width:100%;border-radius:50%;object-fit:cover}
.qt-a{margin-top:20px;font-size:14px}
.qt-a b{display:block}
.qt-a i{display:block;margin-top:2px;font-style:normal;color:var(--muted);font-size:13px}

/* -------------------------------------------------------------- banner */
.bnr{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:var(--radius);text-align:left}
.bnr--soft{background:var(--surface);border:1px solid var(--line)}
.bnr--accent{background:rgb(var(--accent-rgb)/.14);border:1px solid rgb(var(--accent-rgb)/.4)}
.bnr--outline{border:1px solid var(--line)}
.bnr--warn{background:rgb(var(--warn-rgb)/.12);border:1px solid rgb(var(--warn-rgb)/.45)}
.bnr-ico{display:grid;place-items:center;width:24px;height:24px;flex:0 0 auto;color:var(--accent)}
.bnr--warn .bnr-ico{color:var(--warn)}
.bnr-ico svg{width:100%;height:100%}
.bnr-b{flex:1;min-width:0}
.bnr-t{display:block;font-size:15px}
.bnr-x{display:block;color:var(--muted);font-size:14px}
.bnr-t+.bnr-x{margin-top:3px}
.bnr .btn{flex:0 0 auto}
.bnr-close{flex:0 0 auto;width:28px;height:28px;border:0;background:none;cursor:pointer;
  color:var(--muted);font-size:20px;line-height:1;border-radius:8px}
.bnr-close:hover{color:var(--text);background:var(--line)}

/* --------------------------------------------------------------- files */
.files{display:grid;gap:10px;text-align:left}
.files--cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px}
.file{display:flex;align-items:center;gap:16px;padding:16px 18px;border-radius:var(--radius);
  background:var(--surface);border:1px solid var(--line);transition:border-color calc(.2s * var(--motion-factor)),transform calc(.2s * var(--motion-factor))}
a.file:hover{border-color:var(--accent)}
.file.is-off{opacity:.6}
.file-ico{display:grid;place-items:center;width:40px;height:40px;flex:0 0 auto;border-radius:11px;
  background:rgb(var(--accent-rgb)/.12);color:var(--accent)}
.file-ico svg{width:20px;height:20px}
.file-b{flex:1;min-width:0}
.file-b b{display:block;font-size:15px}
.file-b i{display:block;margin-top:2px;font-style:normal;font-size:13px;color:var(--muted)}
.file-m{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.file-k{padding:3px 8px;border-radius:6px;background:var(--line);font-size:11px;font-weight:700;letter-spacing:.06em}
.file-s{font-size:12.5px;color:var(--muted);white-space:nowrap}
.file-dl{display:grid;place-items:center;width:20px;height:20px;color:var(--muted)}
.file-dl svg{width:100%;height:100%}
a.file:hover .file-dl{color:var(--accent)}
.files--cards .file{flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:12px}
.files--cards .file-b{flex-basis:auto;order:0;width:100%}

/* ---------------------------------------------------------- до / после */
.ba--side{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ba--side figure{margin:0}
.ba--side .m-img{width:100%;border-radius:var(--radius);object-fit:cover}
.ba--side figcaption{margin-top:10px;font-size:13px;color:var(--muted);text-align:center}
.ba--slider{position:relative;aspect-ratio:var(--ba-ratio,16/9);border-radius:var(--radius);overflow:hidden;
  background:var(--bg2);user-select:none;touch-action:pan-y}
.ba-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
/* обрезаем слой целиком через clip-path, а не сужаем контейнер: обе
   картинки остаются одного размера и кадрируются одинаково, поэтому
   половинки не могут разъехаться */
.ba-clip{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--ba,50%)) 0 0)}
.ba-handle{position:absolute;top:0;bottom:0;left:var(--ba,50%);width:2px;background:#fff;
  box-shadow:0 0 0 1px rgb(0 0 0/.25);pointer-events:none}
.ba-handle::after{content:"";position:absolute;top:50%;left:50%;width:38px;height:38px;transform:translate(-50%,-50%);
  border-radius:50%;background:#fff;box-shadow:0 4px 16px rgb(0 0 0/.35)}
.ba-lab{position:absolute;bottom:14px;padding:5px 11px;border-radius:999px;font-size:12px;font-weight:600;
  background:rgb(0 0 0/.55);color:#fff;backdrop-filter:blur(4px);pointer-events:none}
.ba-lab--a{left:14px}
.ba-lab--z{right:14px}
/* ползунок растянут на всю картинку и невидим: тянуть можно где угодно */
.ba-range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;appearance:none;background:none}
.ba-range::-webkit-slider-thumb{appearance:none;width:44px;height:100%}
.ba-range::-moz-range-thumb{width:44px;height:100%;border:0;opacity:0}
.ba-range:focus-visible+.ba-handle{box-shadow:0 0 0 3px var(--accent)}

/* ----------------------------------------------------------- подписка */
.nl{display:flex;gap:10px;flex-wrap:wrap;max-width:520px}
.a-center .nl{margin-inline:auto}
.nl--boxed{padding:22px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);max-width:560px}
.nl-in{flex:1;min-width:200px;padding:13px 16px;border-radius:calc(var(--radius) * .6);
  background:var(--bg2);border:1px solid var(--line);color:var(--text);font:inherit;font-size:15px}
.nl-in:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgb(var(--accent-rgb)/.2)}
.nl-note{margin-top:14px;margin-bottom:0}

/* ================================================================ ДОНАТЫ */
.dn{max-width:820px;margin:0 auto;text-align:left}
.dn--tabs{padding:8px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}
.dn-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:8px}
.dn-tab{display:flex;align-items:center;gap:9px;padding:9px 14px;border-radius:calc(var(--radius) * .6);
   border:1px solid transparent;font-size:14px;font-weight:600;color:var(--muted);transition:color calc(.18s * var(--motion-factor)),background calc(.18s * var(--motion-factor)),border-color calc(.18s * var(--motion-factor))}
.dn-tab:hover{color:var(--text);background:rgb(var(--text-rgb)/.05)}
.dn-tab.is-on{color:var(--text);background:rgb(var(--text-rgb)/.07);border-color:var(--line)}
.dn-netbar{padding:0 8px 8px}
.dn-nets{display:flex;flex-wrap:wrap;gap:6px}
.dn-net{padding:6px 13px;border-radius:999px;border:1px solid var(--line);font-size:12.5px;font-weight:600;color:var(--muted);transition:color calc(.18s * var(--motion-factor)),background calc(.18s * var(--motion-factor)),border-color calc(.18s * var(--motion-factor))}
.dn-net.is-on{color:var(--on-accent,#0b0c10);background:var(--accent);border-color:var(--accent)}
.dn-body{padding:8px}
.dn-panel{display:grid;gap:14px}
.dn-panel[hidden],.dn-nets[hidden]{display:none}
.dn-note{font-size:13.5px;color:var(--muted)}
.dn-addr-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:14px 16px;
  border-radius:calc(var(--radius) * .6);background:rgb(var(--text-rgb)/.05);border:1px solid var(--line)}
.dn-addr{flex:1 1 260px;min-width:0;font-size:13.5px;word-break:break-all;line-height:1.5}
.dn-a-short{display:none}
.dn-copy{flex:0 0 auto}
.dn-copy svg{width:15px;height:15px}
.dn-copy:not(.is-done) svg + svg,.dn-copy.is-done svg:first-child{display:none}
.dn-copy.mini{padding:5px 11px;border-radius:8px;border:1px solid var(--line);font-size:12px;font-weight:600;color:var(--muted)}
.dn-copy.mini:hover{color:var(--accent);border-color:var(--accent)}
.dn-copy.is-done{background:var(--ok);border-color:var(--ok);color:#04140d}
.dn-memo{display:flex;flex-wrap:wrap;align-items:center;gap:9px;font-size:13px;color:var(--muted)}
.dn-memo code{min-width:0;overflow-wrap:anywhere;padding:3px 8px;border-radius:6px;background:rgb(var(--text-rgb)/.07);color:var(--text)}
.dn-card-n > .dn-memo{flex-basis:100%}
.dn-qr{display:grid;place-items:center;width:170px;height:170px;padding:10px;margin:2px auto 0;
  border-radius:calc(var(--radius) * .6);background:#fff}
.dn-qr svg{width:100%;height:100%}
.dn-qr--sm{width:104px;height:104px;padding:7px;margin:0}
.dn-alert{display:flex;gap:10px;align-items:flex-start;margin-top:16px;padding:13px 16px;
  border-radius:calc(var(--radius) * .6);background:rgb(var(--accent2-rgb)/.1);border:1px solid rgb(var(--accent2-rgb)/.28);
  font-size:13px;color:var(--text);text-align:left}
.dn-alert svg{width:17px;height:17px;flex:0 0 auto;margin-top:2px;color:var(--accent2)}
.dn-warn{padding:9px 13px;border-radius:8px;background:rgb(var(--accent2-rgb)/.14);font-size:12.5px}
.dn-foot{max-width:640px;margin:18px auto 0;font-size:13px;color:var(--muted)}
.dn--grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));max-width:none}
.dn--list{display:grid;gap:12px;max-width:720px}
.dn-card{padding:22px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}
.dn-card-h{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.dn-card-h b{display:block;font-size:15.5px}
.dn-card-h i{display:block;font-style:normal;font-size:12px;color:var(--muted)}
.dn-card-n{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:11px 0;border-top:1px solid var(--line)}
.dn-net-tag{padding:3px 9px;border-radius:6px;background:rgb(var(--accent-rgb)/.13);color:var(--accent);font-size:11px;font-weight:700}
@keyframes donate-in{from{opacity:.45;transform:translateY(5px)}to{opacity:1;transform:none}}
@keyframes donate-confirm{from{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}
@keyframes goal-in{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.cbadge{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;flex:0 0 auto;
  background:var(--cc);color:#fff;font-size:12px;font-weight:800;overflow:hidden}
.cbadge img{width:100%;height:100%;object-fit:cover}
.cbadge--lg{width:42px;height:42px;font-size:17px}

/* лента поддержки */
.sup{display:grid;gap:8px;text-align:left}
.sup--wall{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.sup-i{display:flex;min-width:0;align-items:center;gap:12px;padding:13px 16px;border-radius:calc(var(--radius) * .7);
  background:var(--surface);border:1px solid var(--line)}
.sup-av{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;flex:0 0 auto;
  background:rgb(var(--accent-rgb)/.14);color:var(--accent);font-weight:700;font-size:14px}
.sup-b{flex:1;min-width:0}
.sup-b b{display:block;font-size:14px;font-weight:600}
.sup-b i{display:block;font-style:normal;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sup-amt{font-family:var(--font-h);font-weight:700;color:var(--accent);font-size:14.5px;white-space:nowrap}
.sup-amt em{font-style:normal;font-size:11px;color:var(--muted)}
.sup-t{font-size:11.5px;color:var(--muted);white-space:nowrap}
.sup-demo-note{margin-top:12px;font-size:12px;color:var(--muted);text-align:center;opacity:.8}
.sup--ticker{grid-auto-flow:column;overflow-x:auto}

/* фиат */
.fiat{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));text-align:left}
.fiat--list{grid-template-columns:1fr}
.fiat-i{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:var(--radius);
  background:var(--surface);border:1px solid var(--line);transition:border-color calc(.2s * var(--motion-factor)),transform calc(.2s * var(--motion-factor))}
.fiat-i:hover{border-color:var(--accent)}
.fiat-logo{width:36px;height:36px;object-fit:contain;border-radius:9px}
.fiat-ico{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:rgb(var(--accent-rgb)/.12);color:var(--accent)}
.fiat-ico svg{width:18px;height:18px}
.fiat-b{flex:1;min-width:0}
.fiat-b b{display:block;font-size:14.5px}
.fiat-b i{display:block;font-style:normal;font-size:12.5px;color:var(--muted)}
.fiat-go{color:var(--muted)}
.fiat-go svg{width:16px;height:16px}

/* --------------------------------------------------------------- подвал */
.site-foot{border-top:1px solid var(--line);background:var(--bg2)}
.foot-in{display:grid;grid-template-columns:1fr auto;gap:34px;align-items:start;
  max-width:var(--maxw);margin:0 auto;padding:52px clamp(18px,4vw,40px) 30px}
.foot-brand{display:flex;align-items:center;gap:12px}
.foot-brand b{display:block;font-family:var(--font-h);font-size:16px}
.foot-brand span{display:block;font-size:13px;color:var(--muted)}
.foot-cols{display:flex;flex-wrap:wrap;gap:44px}
.foot-col h4{margin-bottom:12px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.foot-col li{margin-bottom:8px;font-size:14px}
.foot-col a:hover{color:var(--accent)}
.foot-soc{display:flex;flex-wrap:wrap;gap:8px;grid-column:1/-1}
.soc{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;border:1px solid var(--line);
  color:var(--muted);transition:color calc(.2s * var(--motion-factor)),border-color calc(.2s * var(--motion-factor)),transform calc(.2s * var(--motion-factor))}
.soc:hover{color:var(--accent);border-color:var(--accent)}
.soc svg{width:17px;height:17px}
.foot-bot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;
  max-width:var(--maxw);margin:0 auto;padding:18px clamp(18px,4vw,40px) 30px;border-top:1px solid var(--line);
  font-size:12.5px;color:var(--muted)}
.foot-note{opacity:.75}
.to-top{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;border:1px solid var(--line);color:var(--muted)}
.to-top svg{width:16px;height:16px;transform:rotate(-90deg)}
.to-top:hover{color:var(--accent);border-color:var(--accent)}

/* --------------------------------------------------------- появление */
main > .sec.reveal{opacity:1;transform:none;filter:none}

/* --------------------------------------------------------- уведомление */
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);z-index:400;
  padding:12px 22px;border-radius:999px;background:var(--surface);border:1px solid var(--line);
  font-size:13.5px;font-weight:600;box-shadow:0 16px 44px rgb(0 0 0/.35);opacity:0;
  transition:opacity calc(.24s * var(--motion-factor)),transform calc(.24s * var(--motion-factor));pointer-events:none}
.toast.in{opacity:1;transform:translateX(-50%) translateY(0)}

/* =====================================================================
   КОМПОЗИЦИИ — data-layout на <html>

   Пресет цветов меняет палитру. Композиция меняет структуру: форму шапки,
   ритм секций, вид карточек, положение заголовков. Поэтому два сайта на
   одной палитре выглядят по-разному, а не «то же самое другим цветом».

   Всё держится на одном атрибуте: разметка и site.css общие для всех
   сайтов, лишних запросов нет.

   float — базовая композиция, ей отдельные правила не нужны.
   ===================================================================== */

/* --- общий приём: шапка в потоке, а не поверх контента ---------------
   У float шапка абсолютная и накрывает первый экран. У остальных
   композиций она занимает место в потоке — тогда первым блоком может быть
   не только «первый экран», ничего не перекрывается. */
[data-layout="editorial"] .site-head,
[data-layout="panelled"] .site-head,
[data-layout="slab"] .site-head,
[data-layout="compact"] .site-head{position:sticky;padding:0;background:var(--bg);border-bottom:1px solid var(--line)}
[data-layout="editorial"] .site-head.is-sticky,
[data-layout="panelled"] .site-head.is-sticky,
[data-layout="slab"] .site-head.is-sticky,
[data-layout="compact"] .site-head.is-sticky{position:sticky;top:0}
[data-layout="editorial"] .head-in,
[data-layout="panelled"] .head-in,
[data-layout="slab"] .head-in,
[data-layout="compact"] .head-in{
  border-radius:0;background:none;backdrop-filter:none;-webkit-backdrop-filter:none;
  border:0;padding:14px clamp(18px,4vw,40px);box-shadow:none;
}
[data-layout="editorial"] .site-head.is-stuck .head-in,
[data-layout="panelled"] .site-head.is-stuck .head-in,
[data-layout="slab"] .site-head.is-stuck .head-in,
[data-layout="compact"] .site-head.is-stuck .head-in{background:none;border:0;box-shadow:none}
/* шапка больше не висит над первым экраном — лишний отступ убираем */
[data-layout="editorial"] .hero-inner,
[data-layout="panelled"] .hero-inner,
[data-layout="slab"] .hero-inner,
[data-layout="compact"] .hero-inner{padding-top:clamp(28px,5vh,64px)}
[data-layout="editorial"] .hero--minimal,
[data-layout="panelled"] .hero--minimal,
[data-layout="slab"] .hero--minimal,
[data-layout="compact"] .hero--minimal{padding-top:clamp(36px,7vh,88px)}
[data-layout="editorial"] .mob-nav,
[data-layout="panelled"] .mob-nav,
[data-layout="slab"] .mob-nav,
[data-layout="compact"] .mob-nav,
[data-layout="magazine"] .mob-nav,
[data-layout="gallery"] .mob-nav,
[data-layout="terminal"] .mob-nav,
[data-layout="showcase"] .mob-nav{margin:0;border-radius:0;border-left:0;border-right:0}

/* Те же правила «шапка в потоке» для новых композиций. Вынесено отдельным
   блоком, а не дописано в перечисления выше: селекторы там и без того на
   четыре строки, а объединение сделало бы правку одной композиции опасной
   для остальных. */
[data-layout="magazine"] .site-head,
[data-layout="gallery"] .site-head,
[data-layout="terminal"] .site-head,
[data-layout="showcase"] .site-head{position:sticky;padding:0;background:var(--bg);border-bottom:1px solid var(--line)}
[data-layout="magazine"] .site-head.is-sticky,
[data-layout="gallery"] .site-head.is-sticky,
[data-layout="terminal"] .site-head.is-sticky,
[data-layout="showcase"] .site-head.is-sticky{position:sticky;top:0}
[data-layout="magazine"] .head-in,
[data-layout="gallery"] .head-in,
[data-layout="terminal"] .head-in,
[data-layout="showcase"] .head-in{
  border-radius:0;background:none;backdrop-filter:none;-webkit-backdrop-filter:none;
  border:0;padding:14px clamp(18px,4vw,40px);box-shadow:none;
}
[data-layout="magazine"] .site-head.is-stuck .head-in,
[data-layout="gallery"] .site-head.is-stuck .head-in,
[data-layout="terminal"] .site-head.is-stuck .head-in,
[data-layout="showcase"] .site-head.is-stuck .head-in{background:none;border:0;box-shadow:none}
[data-layout="magazine"] .hero-inner,
[data-layout="gallery"] .hero-inner,
[data-layout="terminal"] .hero-inner,
[data-layout="showcase"] .hero-inner{padding-top:clamp(28px,5vh,64px)}

/* ===================================================== ЖУРНАЛ (editorial)
   Заголовки по левому краю, тонкие линейки между секциями, плоские
   карточки. Ощущение печатной страницы. */
[data-layout="editorial"] .sec-head{max-width:820px;margin-left:0;margin-right:0;text-align:left}
[data-layout="editorial"] .a-center .sec-head{margin-left:0}
[data-layout="editorial"] .a-center{text-align:left}
[data-layout="editorial"] .sec-title{font-size:calc(clamp(30px,4vw,54px) * var(--scale));line-height:1.06}
[data-layout="editorial"] .eyebrow{
  display:inline-flex;align-items:center;gap:10px;margin-bottom:16px;letter-spacing:.26em;
}
[data-layout="editorial"] .eyebrow::after{content:"";width:56px;height:1px;background:currentColor;opacity:.5}
[data-layout="editorial"] main > .sec + .sec{border-top:1px solid var(--line)}
/* асимметричный ритм: сверху больше, чем снизу — как отбивка в вёрстке */
[data-layout="editorial"] .p-md .sec-in{padding-top:calc(68px * var(--density));padding-bottom:calc(48px * var(--density))}
[data-layout="editorial"] .p-lg .sec-in{padding-top:calc(104px * var(--density));padding-bottom:calc(76px * var(--density))}
[data-layout="editorial"] .p-xl .sec-in{padding-top:calc(148px * var(--density));padding-bottom:calc(108px * var(--density))}
[data-layout="editorial"] .feat,
[data-layout="editorial"] .tst-i,
[data-layout="editorial"] .ct,
[data-layout="editorial"] .fiat-i{background:none;border:0;border-top:1px solid var(--line);border-radius:0;padding-left:0;padding-right:0}
[data-layout="editorial"] .price-i{border-radius:0}
[data-layout="editorial"] .stat{border-radius:0;background:none;border:0;border-left:2px solid var(--line);padding-left:18px}
[data-layout="editorial"] .gal-img,[data-layout="editorial"] .hero-media img{border-radius:0}

/* ====================================================== ПАНЕЛИ (panelled)
   Каждая секция — заметная карточка на подложке. Читается как дашборд
   или продуктовая страница: всё в рамках, ничего не растекается. */
[data-layout="panelled"] body{background:var(--bg2)}
[data-layout="panelled"] main{padding:clamp(14px,2vw,26px) 0}
[data-layout="panelled"] main > .sec{margin:0 auto clamp(14px,2vw,26px);max-width:calc(var(--maxw) + 2 * clamp(18px,4vw,40px));padding:0 clamp(14px,2vw,26px)}
[data-layout="panelled"] main > .sec > .sec-in{
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
}
[data-layout="panelled"] .has-rule{border-top:0}
[data-layout="panelled"] .p-md .sec-in{padding-top:calc(46px * var(--density));padding-bottom:calc(46px * var(--density))}
[data-layout="panelled"] .p-lg .sec-in{padding-top:calc(70px * var(--density));padding-bottom:calc(70px * var(--density))}
[data-layout="panelled"] .p-xl .sec-in{padding-top:calc(98px * var(--density));padding-bottom:calc(98px * var(--density))}
[data-layout="panelled"] .sec-head{margin-bottom:calc(34px * var(--density))}
[data-layout="panelled"] .feat,
[data-layout="panelled"] .tst-i,
[data-layout="panelled"] .price-i,
[data-layout="panelled"] .ct,
[data-layout="panelled"] .fiat-i,
[data-layout="panelled"] .stat{background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--radius) * .7)}
[data-layout="panelled"] .site-foot{background:var(--bg)}

/* ==================================================== СИММЕТРИЯ (stacked)
   Бренд над меню в две строки, всё по центральной оси, широкий шаг.
   Спокойная представительская подача. */
[data-layout="stacked"] .site-head{padding:0;position:sticky}
[data-layout="stacked"] .site-head.is-sticky{position:sticky;top:0}
[data-layout="stacked"] .head-in{
  flex-direction:column;gap:10px;border-radius:0;padding:18px clamp(18px,4vw,40px) 14px;
  background:rgb(var(--bg-rgb)/.82);border:0;border-bottom:1px solid var(--line);
}
[data-layout="stacked"] .site-head.is-stuck .head-in{background:rgb(var(--bg-rgb)/.95);box-shadow:0 8px 30px rgb(0 0 0/.22)}
[data-layout="stacked"] .brand{flex-direction:column;gap:8px;text-align:center}
[data-layout="stacked"] .brand-name{font-size:19px;letter-spacing:.06em}
[data-layout="stacked"] .nav-links{margin:0;justify-content:center}
[data-layout="stacked"] .head-right{margin:0}
[data-layout="stacked"] .hero-inner{padding-top:clamp(40px,7vh,90px)}
[data-layout="stacked"] .sec-head{max-width:720px;margin-left:auto;margin-right:auto;text-align:center}
[data-layout="stacked"] .a-left .sec-head{margin-left:auto}
[data-layout="stacked"] .eyebrow{display:flex;align-items:center;justify-content:center;gap:14px}
[data-layout="stacked"] .eyebrow::before,
[data-layout="stacked"] .eyebrow::after{content:"";width:40px;height:1px;background:currentColor;opacity:.45}
/* широкий шаг: композиция про воздух */
[data-layout="stacked"] .p-md .sec-in{padding-top:calc(78px * var(--density));padding-bottom:calc(78px * var(--density))}
[data-layout="stacked"] .p-lg .sec-in{padding-top:calc(124px * var(--density));padding-bottom:calc(124px * var(--density))}
[data-layout="stacked"] .p-xl .sec-in{padding-top:calc(172px * var(--density));padding-bottom:calc(172px * var(--density))}
[data-layout="stacked"] .sec-head{margin-bottom:calc(56px * var(--density))}
[data-layout="stacked"] .feats,[data-layout="stacked"] .cts{text-align:center}
[data-layout="stacked"] .feat,[data-layout="stacked"] .ct{align-items:center}

/* ========================================================= ПЛИТА (slab)
   Толстые рамки, смещённые тени, нулевые скругления. Заметная,
   «плакатная» подача. */
[data-layout="slab"] .site-head{border-bottom-width:2px;border-bottom-color:var(--text)}
[data-layout="slab"] .sec-title{letter-spacing:-.01em}
[data-layout="slab"] .sec-head{border-top:3px solid var(--text);padding-top:18px;margin-left:0;text-align:left;max-width:840px}
[data-layout="slab"] .a-center{text-align:left}
[data-layout="slab"] .a-center .sec-head{margin-left:0}
[data-layout="slab"] .p-md .sec-in{padding-top:calc(44px * var(--density));padding-bottom:calc(44px * var(--density))}
[data-layout="slab"] .p-lg .sec-in{padding-top:calc(68px * var(--density));padding-bottom:calc(68px * var(--density))}
[data-layout="slab"] .p-xl .sec-in{padding-top:calc(96px * var(--density));padding-bottom:calc(96px * var(--density))}
[data-layout="slab"] .feat,
[data-layout="slab"] .tst-i,
[data-layout="slab"] .price-i,
[data-layout="slab"] .ct,
[data-layout="slab"] .fiat-i,
[data-layout="slab"] .stat,
[data-layout="slab"] .step,
[data-layout="slab"] .faq-i{
  border-radius:0;border:2px solid var(--line);background:var(--surface);
  box-shadow:6px 6px 0 var(--line);
}
[data-layout="slab"] .gal-img,[data-layout="slab"] .hero-media img{border-radius:0;border:2px solid var(--line)}
[data-layout="slab"] .price-i.is-featured{box-shadow:6px 6px 0 var(--accent);border-color:var(--accent)}
[data-layout="slab"] .eyebrow{letter-spacing:.3em}

/* ====================================================== ПЛОТНО (compact)
   Сжатый ритм, мелкие подзаголовки, больше колонок в сетках. Когда
   контента много и его надо показать без бесконечной прокрутки. */
[data-layout="compact"] .head-in{padding-block:9px}
[data-layout="compact"] .p-sm .sec-in{padding-top:calc(18px * var(--density));padding-bottom:calc(18px * var(--density))}
[data-layout="compact"] .p-md .sec-in{padding-top:calc(34px * var(--density));padding-bottom:calc(34px * var(--density))}
[data-layout="compact"] .p-lg .sec-in{padding-top:calc(54px * var(--density));padding-bottom:calc(54px * var(--density))}
[data-layout="compact"] .p-xl .sec-in{padding-top:calc(76px * var(--density));padding-bottom:calc(76px * var(--density))}
[data-layout="compact"] .sec-head{margin-bottom:calc(26px * var(--density));max-width:760px}
[data-layout="compact"] .sec-title{font-size:calc(clamp(22px,2.4vw,32px) * var(--scale))}
[data-layout="compact"] .sec-sub{margin-top:8px;font-size:calc(clamp(14px,.95vw,15.5px) * var(--scale))}
[data-layout="compact"] .eyebrow{margin-bottom:8px;font-size:10.5px}
[data-layout="compact"] .cols-2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
[data-layout="compact"] .cols-3{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
[data-layout="compact"] .cols-4{grid-template-columns:repeat(auto-fit,minmax(168px,1fr))}
[data-layout="compact"] .stats{grid-template-columns:repeat(auto-fit,minmax(124px,1fr))}
[data-layout="compact"] .tst{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
[data-layout="compact"] .cts{grid-template-columns:repeat(auto-fit,minmax(196px,1fr))}
[data-layout="compact"] .feat,[data-layout="compact"] .ct,[data-layout="compact"] .tst-i{padding:16px}

/* ================================================== РАЗВОРОТ (magazine)
   Заголовок секции слева, содержимое справа — как подпись к статье в
   журнале. Пресет paper объявляет эту композицию с самого начала, но
   правил для неё не было, и paper рисовался как float.

   Две колонки только от 900px: на телефоне подпись сбоку превращается в
   две узкие нечитаемые полосы, поэтому там обычный вертикальный порядок. */
@media (min-width:900px){
  [data-layout="magazine"] .sec-in{display:grid;grid-template-columns:minmax(210px,26%) 1fr;gap:clamp(28px,4vw,64px);align-items:start}
  [data-layout="magazine"] .sec-head{
    grid-column:1;margin:0;max-width:none;text-align:left;
    position:sticky;top:calc(var(--head-h,64px) + 24px);
  }
  /* Всё, что не заголовок, уезжает во вторую колонку. :not() перечисляет
     заголовок и служебные элементы, у которых своя раскладка. */
  [data-layout="magazine"] .sec-in > *:not(.sec-head){grid-column:2}
  [data-layout="magazine"] .a-center{text-align:left}
  [data-layout="magazine"] .a-center .sec-head{margin-left:0}
  /* Первый экран и секции во всю ширину сетке не подчиняются: там она
     ломает композицию, а не помогает. */
  [data-layout="magazine"] .sec--hero .sec-in,
  [data-layout="magazine"] .w-full .sec-in,
  [data-layout="magazine"] .sec--marquee .sec-in,
  [data-layout="magazine"] .sec--divider .sec-in{display:block}
  [data-layout="magazine"] .sec--hero .sec-head{position:static}
}
[data-layout="magazine"] .sec-title{font-size:calc(clamp(24px,2.6vw,38px) * var(--scale));line-height:1.1}
[data-layout="magazine"] .eyebrow{margin-bottom:10px}
[data-layout="magazine"] main > .sec + .sec{border-top:1px solid var(--line)}
[data-layout="magazine"] :is(.feat,.tst-i,.ct,.fiat-i){background:none;border:0;border-top:1px solid var(--line);border-radius:0;padding-left:0;padding-right:0}
[data-layout="magazine"] .cols-3{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}

/* ============================================ БОКОВАЯ ПАНЕЛЬ (sidebar)
   Меню слева колонкой, контент справа. Похоже на документацию и на
   портфолио. Ниже 1100px колонка уезжает наверх и всё становится обычной
   одноколоночной страницей — фиксированная панель на узком экране съедает
   больше места, чем даёт.

   Сдвиг делается padding-left на body, а не margin: у sticky-элементов
   внутри контента margin на предке ломает вычисление top. */
@media (min-width:1100px){
  [data-layout="sidebar"] body{padding-left:var(--side-w,268px)}
  [data-layout="sidebar"] .site-head{
    position:fixed;top:0;left:0;bottom:0;right:auto;width:var(--side-w,268px);
    padding:0;border-bottom:0;border-right:1px solid var(--line);background:var(--bg2);overflow-y:auto;
  }
  [data-layout="sidebar"] .head-in{
    flex-direction:column;align-items:stretch;gap:22px;max-width:none;height:100%;
    padding:26px 22px;border-radius:0;background:none;border:0;box-shadow:none;
    backdrop-filter:none;-webkit-backdrop-filter:none;
  }
  [data-layout="sidebar"] .brand{flex-direction:row}
  [data-layout="sidebar"] .nav-links{flex-direction:column;gap:2px;margin:0}
  [data-layout="sidebar"] .nav-a{padding:9px 12px;border-radius:8px;font-size:14px}
  [data-layout="sidebar"] .nav-a:hover{background:rgb(var(--text-rgb)/.07)}
  /* Язык и кнопка призыва прижимаются к низу панели. */
  [data-layout="sidebar"] .head-right{flex-direction:column;align-items:stretch;gap:10px;margin-top:auto}
  [data-layout="sidebar"] .nav-cta{justify-content:center}
  [data-layout="sidebar"] .nav-toggle{display:none}
  [data-layout="sidebar"] .lang-menu{right:auto;left:0;bottom:calc(100% + 8px);top:auto}
  [data-layout="sidebar"] .hero-inner{padding-top:clamp(40px,6vh,80px)}
  [data-layout="sidebar"] .progress{left:var(--side-w,268px)}
}
[data-layout="sidebar"] .sec-head{margin-left:0;text-align:left;max-width:760px}
[data-layout="sidebar"] .a-center{text-align:left}
[data-layout="sidebar"] .a-center .sec-head{margin-left:0}
[data-layout="sidebar"] main > .sec + .sec{border-top:1px solid var(--line)}

/* ==================================================== ВИТРИНА (gallery)
   Секции во всю ширину, картинки встык, минимум полей. Для визуальных
   проектов, где важно изображение, а не текст вокруг него. */
[data-layout="gallery"] .sec-in{max-width:none;padding-left:clamp(10px,1.6vw,20px);padding-right:clamp(10px,1.6vw,20px)}
[data-layout="gallery"] .w-narrow .sec-in,
[data-layout="gallery"] .w-normal .sec-in{max-width:min(1180px,var(--maxw))}
[data-layout="gallery"] .p-md .sec-in{padding-top:calc(30px * var(--density));padding-bottom:calc(30px * var(--density))}
[data-layout="gallery"] .p-lg .sec-in{padding-top:calc(48px * var(--density));padding-bottom:calc(48px * var(--density))}
[data-layout="gallery"] .p-xl .sec-in{padding-top:calc(72px * var(--density));padding-bottom:calc(72px * var(--density))}
[data-layout="gallery"] .gal{gap:3px}
[data-layout="gallery"] :is(.gal-img,.gal-i,.hero-media img,.m-img){border-radius:0}
[data-layout="gallery"] .sec-head{max-width:none;margin-bottom:calc(24px * var(--density))}
[data-layout="gallery"] .sec-title{font-size:calc(clamp(26px,3vw,40px) * var(--scale))}
/* Подпись под витриной набирается мелко и разряженно: она не должна
   конкурировать с изображением. */
[data-layout="gallery"] .eyebrow{font-size:10.5px;letter-spacing:.3em}
[data-layout="gallery"] :is(.feat,.tst-i,.ct,.fiat-i,.stat){border-radius:0}

/* =================================================== ТЕРМИНАЛ (terminal)
   Моноширинные подписи, рамки-скобки, нулевые скругления. Пресет mono
   объявляет эту композицию, но правил не было — mono выглядел как float.

   Моноширинный шрифт здесь не навязывается основному тексту: читать
   абзацы моноширинным тяжело. Он только на служебных подписях. */
[data-layout="terminal"] :is(.eyebrow,.nav-a,.lang-btn,.stat-l,.foot-bot,.sec-note,.tl-t){
  font-family:var(--font-mono,ui-monospace,"SF Mono",Consolas,monospace)}
[data-layout="terminal"] *:not(.btn){border-radius:0 !important}
[data-layout="terminal"] .sec-head{margin-left:0;text-align:left;max-width:820px}
[data-layout="terminal"] .a-center{text-align:left}
[data-layout="terminal"] .a-center .sec-head{margin-left:0}
/* Скобки вокруг надзаголовка — самая узнаваемая деталь подачи. */
[data-layout="terminal"] .eyebrow::before{content:"[ "}
[data-layout="terminal"] .eyebrow::after{content:" ]"}
[data-layout="terminal"] .sec-title{letter-spacing:-.01em}
[data-layout="terminal"] main > .sec + .sec{border-top:1px dashed var(--line)}
[data-layout="terminal"] .p-md .sec-in{padding-top:calc(42px * var(--density));padding-bottom:calc(42px * var(--density))}
[data-layout="terminal"] .p-lg .sec-in{padding-top:calc(64px * var(--density));padding-bottom:calc(64px * var(--density))}
[data-layout="terminal"] .p-xl .sec-in{padding-top:calc(92px * var(--density));padding-bottom:calc(92px * var(--density))}
[data-layout="terminal"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.stat,.step,.faq-i,.team-i){
  border:1px solid var(--line);background:var(--surface)}
[data-layout="terminal"] .nav-a::before{content:"/ ";opacity:.45}
[data-layout="terminal"] .btn{font-family:var(--font-mono,ui-monospace,Consolas,monospace);letter-spacing:.04em}

/* ==================================================== ПОДИУМ (showcase)
   Огромные отступы, очень крупные заголовки, по одному акценту на экран.
   Дорогая презентационная подача: контента мало, воздуха много. */
[data-layout="showcase"] .p-sm .sec-in{padding-top:calc(56px * var(--density));padding-bottom:calc(56px * var(--density))}
[data-layout="showcase"] .p-md .sec-in{padding-top:calc(110px * var(--density));padding-bottom:calc(110px * var(--density))}
[data-layout="showcase"] .p-lg .sec-in{padding-top:calc(170px * var(--density));padding-bottom:calc(170px * var(--density))}
[data-layout="showcase"] .p-xl .sec-in{padding-top:calc(240px * var(--density));padding-bottom:calc(240px * var(--density))}
[data-layout="showcase"] .sec-head{max-width:900px;margin-bottom:calc(72px * var(--density))}
[data-layout="showcase"] .sec-title{font-size:calc(clamp(34px,5.4vw,78px) * var(--scale));line-height:1.02;letter-spacing:-.028em}
[data-layout="showcase"] .sec-sub{margin-top:22px;font-size:calc(clamp(16px,1.4vw,21px) * var(--scale))}
[data-layout="showcase"] .eyebrow{margin-bottom:22px;letter-spacing:.34em}
[data-layout="showcase"] .hero-title{font-size:calc(clamp(40px,8vw,104px) * var(--scale));line-height:1}
/* Сетки разряжаются: на подиуме элементы не должны стоять плечом к плечу. */
[data-layout="showcase"] .feats{gap:clamp(26px,3.4vw,52px)}
[data-layout="showcase"] .cols-3{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
[data-layout="showcase"] .cols-4{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
[data-layout="showcase"] .stats{gap:clamp(22px,3vw,44px)}
[data-layout="showcase"] :is(.feat,.ct,.tst-i){padding:clamp(24px,2.6vw,40px)}

/* =====================================================================
   ГЛУБИНА — data-shadow на <html>

   Насколько выпуклыми выглядят карточки. Отдельная ось, потому что тень
   меняет впечатление сильнее, чем цвет: одна и та же палитра с плоскими
   и с глубокими тенями читается как разные продукты.

   Список элементов один и тот же во всех вариантах, поэтому он собран в
   :is() — иначе при добавлении нового блока пришлось бы не забыть про пять
   мест, и однажды забылось бы.
   ===================================================================== */
[data-shadow="none"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.stat,.step,.faq-i,.team-i,.file,.cmp-card,.tab-p){box-shadow:none}
[data-shadow="soft"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.stat,.step,.faq-i,.team-i,.file,.cmp-card,.tab-p){box-shadow:0 2px 10px rgb(0 0 0/.10)}
[data-shadow="deep"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.stat,.step,.faq-i,.team-i,.file,.cmp-card,.tab-p){box-shadow:0 18px 44px -12px rgb(0 0 0/.42)}
/* Жёсткое смещение: плоская тень без размытия. Цвет — var(--line), а не
   чёрный: на светлых темах чёрная плашка выглядит грязно. */
[data-shadow="hard"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.stat,.step,.faq-i,.team-i,.file,.cmp-card,.tab-p){box-shadow:5px 5px 0 var(--line)}
/* Внутренняя: карточка «вдавлена». Полезно для тёмных тем, где выпуклость
   читается плохо. Фон приглушаем, иначе inset-тень не видна. */
[data-shadow="inner"] :is(.feat,.tst-i,.price-i,.ct,.fiat-i,.stat,.step,.faq-i,.team-i,.file,.cmp-card,.tab-p){
  box-shadow:inset 0 2px 12px rgb(0 0 0/.28);background:rgb(var(--bg-rgb)/.4)}

/* =====================================================================
   ПРИЁМ НА ЗАГОЛОВКАХ — data-title-fx на <html>

   Самая заметная деталь «характера» темы: одна строка CSS меняет
   впечатление от всей страницы сильнее, чем смена акцентного цвета.
   ===================================================================== */
/* Градиент по тексту. -webkit-background-clip нужен и в Chrome, и в Safari;
   у Firefox работает нестандартный, но поддержанный псевдо-алиас. Если
   background-clip не поддержан, текст останется просто цветным — не
   пропадёт, потому что color задаётся отдельным правилом ниже. */
[data-title-fx="gradient"] :is(.sec-title,.hero-title){
  background:linear-gradient(100deg,var(--text) 8%,var(--accent) 52%,var(--accent2) 96%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  -webkit-text-fill-color:transparent}
@supports not ((background-clip:text) or (-webkit-background-clip:text)){
  [data-title-fx="gradient"] :is(.sec-title,.hero-title){background:none;color:var(--accent);-webkit-text-fill-color:currentColor}
}
/* Подчерк акцентом: короткая толстая линия под заголовком секции. */
[data-title-fx="underline"] .sec-title{position:relative;padding-bottom:16px}
[data-title-fx="underline"] .sec-title::after{
  content:"";position:absolute;left:0;bottom:0;width:64px;height:4px;border-radius:2px;background:var(--accent)}
[data-title-fx="underline"] .a-center .sec-title::after{left:50%;transform:translateX(-50%)}
/* Контурные: заливка убирается, остаётся обводка. -webkit-text-stroke
   поддержан всеми актуальными движками; в @supports-ветке возвращаем
   заливку, иначе заголовок стал бы невидимым. */
@supports ((-webkit-text-stroke:1px black)){
  [data-title-fx="outline"] :is(.sec-title,.hero-title){
    -webkit-text-fill-color:transparent;-webkit-text-stroke:1.4px var(--text)}
  [data-title-fx="outline"] .hero-title{-webkit-text-stroke-width:2px}
}
/* Маркер за текстом: полоса-выделение, как фломастером. box-decoration-break
   обязателен — без него у заголовка в две строки подсветка появится только
   на первой. */
[data-title-fx="mark"] :is(.sec-title,.hero-title){
  display:inline;padding:.06em .3em;box-decoration-break:clone;-webkit-box-decoration-break:clone;
  background:linear-gradient(rgb(var(--accent-rgb)/.28),rgb(var(--accent-rgb)/.28))}
/* Нумерация секций. Счётчик на <main>, инкремент на секции с заголовком:
   если считать все .sec, то секции без заголовка съедали бы номера и
   нумерация шла 1, 3, 6. */
[data-title-fx="counter"] main{counter-reset:sec}
[data-title-fx="counter"] .sec:has(.sec-title){counter-increment:sec}
[data-title-fx="counter"] .sec-title::before{
  content:counter(sec,decimal-leading-zero) " ";
  margin-right:.5em;color:var(--accent);font-size:.5em;font-weight:700;
  vertical-align:super;letter-spacing:.08em;font-variant-numeric:tabular-nums}

/* Optional motion: complete tuples live on each section, not on descendants.
   Local tuples outrank global tuples; parity changes only the slide direction. */
main > .sec{--slide-x:-24px;--item-index:0}
main > .sec:nth-child(even){--slide-x:24px}
:where(html) main > .sec,
.sec[data-anim="soft"]{
  --enter-opacity:0;--enter-transform:translateY(18px);--enter-filter:none;--enter-origin:50% 50%;
  --enter-duration:560ms;--enter-ease:cubic-bezier(.22,.72,.28,1);
  --item-transform:translateY(10px);--item-filter:none;--item-duration:420ms;--item-step:28ms}
:where(html[data-motion="sharp"]) main > .sec,
.sec[data-anim="sharp"]{
  --enter-opacity:0;--enter-transform:translateY(7px);--enter-filter:none;--enter-origin:50% 50%;
  --enter-duration:260ms;--enter-ease:cubic-bezier(.2,.8,.3,1);
  --item-transform:translateY(5px);--item-filter:none;--item-duration:220ms;--item-step:18ms}
:where(html[data-motion="zoom"]) main > .sec,
.sec[data-anim="zoom"]{
  --enter-opacity:0;--enter-transform:scale(.975);--enter-filter:none;--enter-origin:50% 50%;
  --enter-duration:580ms;--enter-ease:cubic-bezier(.22,.72,.28,1);
  --item-transform:scale(.985);--item-filter:none;--item-duration:440ms;--item-step:28ms}
:where(html[data-motion="slide"]) main > .sec,
.sec[data-anim="slide"]{
  --enter-opacity:0;--enter-transform:translateX(var(--slide-x));--enter-filter:none;--enter-origin:50% 50%;
  --enter-duration:600ms;--enter-ease:cubic-bezier(.22,.72,.28,1);
  --item-transform:translateX(calc(var(--slide-x) / 3));--item-filter:none;--item-duration:420ms;--item-step:28ms}
:where(html[data-motion="rise"]) main > .sec,
.sec[data-anim="rise"]{
  --enter-opacity:0;--enter-transform:translateY(32px);--enter-filter:none;--enter-origin:50% 50%;
  --enter-duration:780ms;--enter-ease:cubic-bezier(.16,.84,.24,1);
  --item-transform:translateY(16px);--item-filter:none;--item-duration:560ms;--item-step:30ms}
:where(html[data-motion="blur"]) main > .sec,
.sec[data-anim="blur"]{
  --enter-opacity:0;--enter-transform:translateY(10px);--enter-filter:blur(4px);--enter-origin:50% 50%;
  --enter-duration:640ms;--enter-ease:cubic-bezier(.22,.72,.28,1);
  --item-transform:translateY(6px);--item-filter:blur(2px);--item-duration:460ms;--item-step:28ms}
:where(html[data-motion="flip"]) main > .sec,
.sec[data-anim="flip"]{
  --enter-opacity:0;--enter-transform:perspective(1100px) rotateX(4deg) translateY(18px);--enter-filter:none;--enter-origin:50% 100%;
  --enter-duration:680ms;--enter-ease:cubic-bezier(.22,.72,.28,1);
  --item-transform:perspective(900px) rotateX(3deg) translateY(8px);--item-filter:none;--item-duration:480ms;--item-step:28ms}
:where(html[data-motion="still"]) main > .sec,
.sec[data-anim="still"],.sec[data-reveal="false"]{
  --enter-opacity:1;--enter-transform:none;--enter-filter:none;--enter-origin:50% 50%;
  --enter-duration:0s;--enter-ease:linear;
  --item-transform:none;--item-filter:none;--item-duration:0s;--item-step:0s}

@keyframes platform-item-in{
  from{opacity:var(--enter-opacity);transform:var(--item-transform);filter:var(--item-filter)}
  to{opacity:1;transform:none;filter:none}
}
/* Direct children only: nested cards, imported markup and tab controls do not stagger. */
main > .sec > .sec-in > :is(.feats,.steps,.stats,.tst,.price,.cts,.fiat,.tl,.gal,.faq,.team,.goals,.files,.cmp-cards,.dn--grid,.dn--list,.sup) > :nth-child(2){--item-index:1}
main > .sec > .sec-in > :is(.feats,.steps,.stats,.tst,.price,.cts,.fiat,.tl,.gal,.faq,.team,.goals,.files,.cmp-cards,.dn--grid,.dn--list,.sup) > :nth-child(3){--item-index:2}
main > .sec > .sec-in > :is(.feats,.steps,.stats,.tst,.price,.cts,.fiat,.tl,.gal,.faq,.team,.goals,.files,.cmp-cards,.dn--grid,.dn--list,.sup) > :nth-child(4){--item-index:3}
main > .sec > .sec-in > :is(.feats,.steps,.stats,.tst,.price,.cts,.fiat,.tl,.gal,.faq,.team,.goals,.files,.cmp-cards,.dn--grid,.dn--list,.sup) > :nth-child(5){--item-index:4}
main > .sec > .sec-in > :is(.feats,.steps,.stats,.tst,.price,.cts,.fiat,.tl,.gal,.faq,.team,.goals,.files,.cmp-cards,.dn--grid,.dn--list,.sup) > :nth-child(n+6){--item-index:5}

@media screen and (prefers-reduced-motion:no-preference){
  /* The runtime owns both gates. A failed/late boot must never hide content. */
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) > body > .progress{display:block}
  html[data-motion-active="true"][data-motion-ready]:not([data-motion="still"]):not(.no-js) main > .sec.reveal:not([data-anim="still"]):not([data-reveal="false"]){
    transform-origin:var(--enter-origin);
    transition:opacity var(--enter-duration) var(--enter-ease),transform var(--enter-duration) var(--enter-ease),filter var(--enter-duration) var(--enter-ease)}
  html[data-motion-active="true"][data-motion-ready]:not([data-motion="still"]):not(.no-js) main > .sec.reveal:not(.in):not(:focus-within):not([data-anim="still"]):not([data-reveal="false"]){
    opacity:var(--enter-opacity);transform:var(--enter-transform);filter:var(--enter-filter)}
  /* Entry-scoped marker prevents completed cards replaying when motion is re-enabled. */
  html[data-motion-active="true"][data-motion-ready]:not([data-motion="still"]):not(.no-js) main > .sec.reveal.in[data-entering]:not([data-anim="still"]):not([data-reveal="false"]) > .sec-in > :is(.feats,.steps,.stats,.tst,.price,.cts,.fiat,.tl,.gal,.faq,.team,.goals,.files,.cmp-cards,.dn--grid,.dn--list,.sup) > :not([hidden]){
    animation:platform-item-in var(--item-duration) var(--enter-ease) calc(var(--item-index) * var(--item-step)) backwards}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) .dn-panel:not([hidden]){animation:donate-in 240ms ease-out}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .dn-copy.is-done svg + svg{animation:donate-confirm 200ms ease-out}
  html[data-motion-active="true"][data-motion-ready]:not([data-motion="still"]):not(.no-js) .sec.reveal.in:not([data-anim="still"]):not([data-reveal="false"]) .goal-fill.is-entering{
    transform-origin:left;animation:goal-in 600ms cubic-bezier(.22,.72,.28,1)}
}

/* Neutral states never rewrite functional transforms on controls or imported children. */
main > .sec.reveal.in,
main > .sec[data-anim="still"],main > .sec[data-reveal="false"]{opacity:1!important;transform:none!important;filter:none!important}
.sec:is([data-anim="still"],[data-reveal="false"]) .goal-fill{transition:none;animation:none;transform:none;filter:none}

/* The server marks decorative copies. Static tracks show every original exactly once. */
:is(.mq-track,.logos-track) > [data-motion-copy]{display:none}
.mq-track > .mq-i,.logos-track > .logo-i{min-width:0;max-width:100%;overflow-wrap:anywhere}

@media screen and (prefers-reduced-motion:no-preference) and (min-width:761px) and (hover:hover) and (pointer:fine){
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) :is(.feat.is-link,.team--cards > .team-i):hover{transform:translateY(-3px)}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) :is(a.ct,a.file,.fiat-i,.soc):hover{transform:translateY(-2px)}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .gal-i:hover .gal-img{transform:scale(1.035)}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .pin:hover{transform:translate(-50%,-50%) scale(1.04)}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) :is(.btn,.soc,.to-top,.lang-btn,.dn-tab,.dn-net,.dn-copy):active{transform:scale(.98)}
  html[data-motion-active="true"][data-borders="thick"]:not([data-motion="still"]):not(.no-js) .btn:active{box-shadow:2px 2px 0 var(--line)}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js):is([data-layout="slab"],[data-shadow="hard"]) :is(.feat,.price-i,.ct):hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--line)}
  html[data-motion-active="true"][data-shadow="deep"]:not([data-motion="still"]):not(.no-js) :is(.feat,.price-i,.ct):hover{box-shadow:0 22px 48px -14px rgb(0 0 0/.42)}
}
@media screen and (prefers-reduced-motion:no-preference) and (min-width:761px) and (hover:hover) and (pointer:fine){
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec.bg-fixed:not([data-anim="still"]):not([data-reveal="false"]) .sec-bg{background-attachment:fixed}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) .scroll-hint > span{animation:scrolldot 1.9s ease-in-out infinite}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) :is(.marquee,.logos--scroll):has(> [data-motion-sequence]){
    overflow:hidden;white-space:nowrap;justify-content:flex-start;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
    mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) :is(.mq-track,.logos-track)[data-motion-sequence]{
    display:flex;flex-wrap:nowrap;justify-content:flex-start;width:max-content;max-width:none;flex-shrink:0;
    animation:mq var(--mq-speed,40s) linear infinite}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) .logos-track[data-motion-sequence]{--track-gap:34px}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) .mq-track[data-motion-sequence] > [data-motion-copy]{display:block}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) .logos-track[data-motion-sequence] > [data-motion-copy]{display:grid}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) :is(.mq-track,.logos-track)[data-motion-sequence] > *{flex-shrink:0;max-width:none;white-space:nowrap}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) .marquee.is-rev > .mq-track[data-motion-sequence]{animation-direction:reverse}
  html[data-motion-active="true"]:not([data-motion="still"]):not(.no-js) .sec:not([data-anim="still"]):not([data-reveal="false"]) :is(.marquee,.logos--scroll):is(:hover,:focus-within) > [data-motion-sequence]{animation-play-state:paused}
}

/* Small/coarse devices get a brief opacity/translation sequence, never a GPU hint. */
@media (max-width:760px),(pointer:coarse){
  html main > .sec:not([data-anim="still"]):not([data-reveal="false"]){
    --enter-opacity:0;--enter-transform:translateY(6px);--enter-filter:none;--enter-origin:50% 50%;
    --enter-duration:260ms;--enter-ease:ease-out;
    --item-transform:translateY(4px);--item-filter:none;--item-duration:200ms;--item-step:16ms}
  html .site-head .head-in,html[data-layout] .site-head.is-stuck .head-in,html .site-head .mob-nav,html .site-head .lang-menu{
    background:var(--bg);backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 4px 14px rgb(0 0 0/.12)}
  html[data-shadow="deep"] :is(.feat,.stat,.step,.tst-i,.price-i,.ct,.fiat-i,.faq-i,.team-i,.goal,.cmp-card,.dn-card,.file,.tab-p),
  html[data-shadow="soft"] :is(.feat,.stat,.step,.tst-i,.price-i,.ct,.fiat-i,.faq-i,.team-i,.goal,.cmp-card,.dn-card,.file,.tab-p){box-shadow:0 4px 14px -6px rgb(0 0 0/.16)}
  html[data-glow="1"] .btn--primary{box-shadow:0 3px 10px rgb(var(--accent-rgb)/.16)}
  html[data-glow="1"] .hero-media img,html .video--boxed{box-shadow:0 6px 18px -6px rgb(0 0 0/.2)}
  html[data-glow="1"] .price-i.is-featured{box-shadow:0 5px 16px rgb(var(--accent-rgb)/.12)}
  .goal-fill{transition:none}
}
@media screen and (prefers-reduced-motion:no-preference) and (max-width:760px),screen and (prefers-reduced-motion:no-preference) and (pointer:coarse){
  html[data-motion-active="true"][data-motion-ready]:not([data-motion="still"]):not(.no-js) .sec.reveal.in:not([data-anim="still"]):not([data-reveal="false"]) .goal-fill.is-entering{animation:donate-in 240ms ease-out}
}

/* ------------------------------------------------------------ адаптив */
@media (max-width:960px){
  .hero-split{grid-template-columns:1fr}
  .hero-split .hero-media{order:-1}
  .about--right,.about--left{grid-template-columns:1fr}
  .about--left .about-copy{order:0}
  .cta--split{grid-template-columns:1fr;justify-items:center;text-align:center}
  .foot-in{grid-template-columns:1fr}
  .prose--columns{columns:1}
  .gal--masonry{columns:2}
  .tabs--side{grid-template-columns:1fr;gap:24px}
  .tabs--side .tab-nav{flex-direction:row;flex-wrap:wrap}
  .tabs--side .tab-b{width:auto;border-left:0;border-bottom:2px solid var(--line)}
  .tabs--side .tab-b.on{border-left-color:transparent;border-bottom-color:var(--accent)}
  .qt--photo{grid-template-columns:1fr;gap:20px;justify-items:center;text-align:center}
}
@media (max-width:760px){
  .team--list .team-i{grid-template-columns:64px 1fr;gap:0 14px}
  .team--list .team-media{width:64px}
  .ba--side{grid-template-columns:1fr}
  .bnr{flex-wrap:wrap}
  .bnr .btn{width:100%;justify-content:center}
  .file{flex-wrap:wrap;gap:12px}
  .file-b{flex-basis:100%;order:2}
  .nav-links{display:none}
  .nav-toggle{display:flex}
  .mob-nav{display:none}
  .mob-nav.is-open{display:flex}
  .head-right{margin-left:auto}
  .tl-i{grid-template-columns:1fr;gap:4px;padding-left:22px}
  .stats--split .stat{border-right:0;border-bottom:1px solid var(--line)}
  .foot-cols{gap:26px}
  .gal--masonry{columns:1}
  .lb-btn{width:40px;height:40px}
}
@media (max-width:420px){
  .cd-cell{min-width:66px;padding:11px 10px}
  .btn{padding:12px 20px}
}

/* =====================================================================
   СВОЙ КОД — CSS-only клики и переключения внутри .embed

   Скрипты из вставки вырезаются. Интерактив даёт разметка:
     details/summary          — гармошка
     .x-hide + checkbox       — показать/скрыть
     .x-tabs + radio          — вкладки
   Плюс :hover / transition / @keyframes из <style> вставки (область
   ограничена id блока, соседние секции не задеваются).
   ===================================================================== */
.embed details > summary{
  cursor:pointer;list-style:none;font-weight:650;
  padding:12px 0;border-bottom:1px solid var(--line);
}
.embed details > summary::-webkit-details-marker{display:none}
.embed details > summary::after{content:"+";float:right;opacity:.55}
.embed details[open] > summary::after{content:"–"}
.embed details > *:not(summary){padding:12px 0 4px}

/* Checkbox/radio helpers are shared by both rendered import wrappers. */
:is(.embed,.hyb) .x-hide{position:relative}
:is(.embed,.hyb) .x-hide > input[type="checkbox"],
:is(.embed,.hyb) .x-hide > input[type="radio"]{
  position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);
}
:is(.embed,.hyb) .x-hide > label{cursor:pointer;display:inline-flex;align-items:center;gap:8px}
:is(.embed,.hyb) .x-hide > input:not(:checked) ~ .x-hide-body{display:none}
:is(.embed,.hyb) .x-hide > input:checked + label .x-when-off{display:none}
:is(.embed,.hyb) .x-hide > input:not(:checked) + label .x-when-on{display:none}

:is(.embed,.hyb) .x-tabs{position:relative}
:is(.embed,.hyb) .x-tabs > input[type="radio"]{
  position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);
}
:is(.embed,.hyb) .x-tab-bar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
:is(.embed,.hyb) .x-tab-bar > label{
  cursor:pointer;padding:8px 14px;border:1px solid var(--line);border-radius:var(--radius);
  transition:background calc(.15s * var(--motion-factor)),color calc(.15s * var(--motion-factor)),border-color calc(.15s * var(--motion-factor));
}
:is(.embed,.hyb) .x-tabs > input:nth-of-type(1):checked ~ .x-tab-bar > label:nth-of-type(1),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(2):checked ~ .x-tab-bar > label:nth-of-type(2),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(3):checked ~ .x-tab-bar > label:nth-of-type(3),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(4):checked ~ .x-tab-bar > label:nth-of-type(4),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(5):checked ~ .x-tab-bar > label:nth-of-type(5),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(6):checked ~ .x-tab-bar > label:nth-of-type(6),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(7):checked ~ .x-tab-bar > label:nth-of-type(7),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(8):checked ~ .x-tab-bar > label:nth-of-type(8),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(9):checked ~ .x-tab-bar > label:nth-of-type(9),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(10):checked ~ .x-tab-bar > label:nth-of-type(10),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(11):checked ~ .x-tab-bar > label:nth-of-type(11),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(12):checked ~ .x-tab-bar > label:nth-of-type(12){
  background:var(--accent);color:var(--bg);border-color:var(--accent);
}
:is(.embed,.hyb) .x-tab-panes > .x-tab-p{display:none;padding:8px 0 4px}
:is(.embed,.hyb) .x-tabs > input:nth-of-type(1):checked ~ .x-tab-panes > .x-tab-p:nth-child(1),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(2):checked ~ .x-tab-panes > .x-tab-p:nth-child(2),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(3):checked ~ .x-tab-panes > .x-tab-p:nth-child(3),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(4):checked ~ .x-tab-panes > .x-tab-p:nth-child(4),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(5):checked ~ .x-tab-panes > .x-tab-p:nth-child(5),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(6):checked ~ .x-tab-panes > .x-tab-p:nth-child(6),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(7):checked ~ .x-tab-panes > .x-tab-p:nth-child(7),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(8):checked ~ .x-tab-panes > .x-tab-p:nth-child(8),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(9):checked ~ .x-tab-panes > .x-tab-p:nth-child(9),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(10):checked ~ .x-tab-panes > .x-tab-p:nth-child(10),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(11):checked ~ .x-tab-panes > .x-tab-p:nth-child(11),
:is(.embed,.hyb) .x-tabs > input:nth-of-type(12):checked ~ .x-tab-panes > .x-tab-p:nth-child(12){display:block}

.embed button{
  font:inherit;cursor:pointer;color:inherit;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:8px 14px;
}
.embed button:hover{border-color:var(--accent)}

@media (prefers-reduced-motion:reduce){
  /* Finish imported entrance animations without changing hidden controls or panes. */
  :is(.embed,.hyb),:is(.embed,.hyb)::before,:is(.embed,.hyb)::after,
  :is(.embed,.hyb) *,:is(.embed,.hyb) *::before,:is(.embed,.hyb) *::after{
    animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;transition-delay:0s!important;
  }
}

/* Curated identities refine their default composition without defeating
   explicitly selected layout axes or template-scoped author CSS. */
:where([data-theme="harbor"],[data-theme="canvas"],[data-theme="mono"],[data-theme="forest"],[data-theme="paper"],[data-theme="ember"],[data-theme="clean"],[data-theme="velvet"],[data-theme="pulse"],[data-theme="dune"])[data-glow="0"] .brand-mark{
  background:var(--accent);color:var(--on-accent);border-radius:var(--radius)}
:where([data-theme="harbor"],[data-theme="canvas"],[data-theme="mono"],[data-theme="forest"],[data-theme="paper"],[data-theme="ember"],[data-theme="clean"],[data-theme="velvet"],[data-theme="pulse"],[data-theme="dune"])[data-glow="0"] .progress{background:var(--accent)}
[data-theme="harbor"][data-layout="sidebar"] .hero-title{font-size:calc(clamp(36px,5.4vw,74px) * var(--scale));line-height:1.08}
[data-theme="harbor"][data-layout="sidebar"] .hero-eyebrow{letter-spacing:.12em}
[data-theme="harbor"][data-layout="sidebar"] .nav-a{border-radius:0;border-bottom:1px solid var(--line)}
[data-theme="harbor"][data-layout="sidebar"] .dt th{background:var(--bg2)}
[data-theme="canvas"][data-layout="gallery"] .head-in{padding-block:22px}
[data-theme="canvas"][data-layout="gallery"] .hero-title{font-size:calc(clamp(40px,7.5vw,104px) * var(--scale));line-height:.98}
[data-theme="canvas"][data-layout="gallery"] .gal{gap:clamp(12px,3vw,44px)}
[data-theme="canvas"][data-layout="gallery"] .gal-cap{padding:14px 0;font-size:13px;text-align:left}
[data-theme="mono"][data-layout="compact"] .hero-title{font-size:calc(clamp(40px,7vw,96px) * var(--scale));line-height:1}
[data-theme="mono"][data-layout="compact"] .hero-eyebrow{font-family:var(--font-mono);letter-spacing:.06em}
[data-theme="mono"][data-layout="compact"] .hero-media{border-bottom:4px solid var(--accent);padding-bottom:12px}
[data-theme="mono"][data-layout="compact"] .stat-v{font-family:var(--font-h);font-variant-numeric:tabular-nums}
[data-theme="forest"][data-layout="stacked"] .brand-name{font-size:26px;font-weight:400;letter-spacing:.02em}
[data-theme="forest"][data-layout="stacked"] :is(.hero-title,.sec-title){font-weight:400;line-height:1.1}
[data-theme="forest"][data-layout="stacked"] .hero-media{padding:10px;border:1px solid var(--line)}
[data-theme="forest"][data-layout="stacked"] .hero-eyebrow{letter-spacing:.16em}
[data-theme="paper"][data-layout="magazine"] .brand-name{font-size:26px;font-weight:400}
[data-theme="paper"][data-layout="magazine"] :is(.hero-title,.sec-title){font-weight:400;line-height:1.07}
[data-theme="paper"][data-layout="magazine"] .qt-t{font-family:var(--font-h);font-weight:400}
[data-theme="paper"][data-layout="magazine"] .hero-media{border-bottom:1px solid var(--accent);padding-bottom:18px}
[data-theme="ember"][data-layout="editorial"] .hero-title{font-size:calc(clamp(38px,6vw,84px) * var(--scale));line-height:1.03}
[data-theme="ember"][data-layout="editorial"] .hero-media img{aspect-ratio:4/5;object-fit:cover}
[data-theme="ember"][data-layout="editorial"] .brand-name{font-size:22px;letter-spacing:-.04em}
[data-theme="clean"][data-layout="panelled"] .hero-title{font-size:calc(clamp(36px,5.4vw,74px) * var(--scale));line-height:1.06}
[data-theme="clean"][data-layout="panelled"] .hero-media{background:var(--bg2);padding:clamp(10px,2vw,24px);border-radius:var(--radius)}
[data-theme="clean"][data-layout="panelled"] .hero-eyebrow{letter-spacing:.06em}
[data-theme="velvet"][data-layout="float"] :is(.hero-title,.sec-title){font-weight:400;line-height:1.05;letter-spacing:-.04em}
[data-theme="velvet"][data-layout="float"] .hero-title{font-size:calc(clamp(40px,6.8vw,94px) * var(--scale))}
[data-theme="velvet"][data-layout="float"] .head-in{border-bottom:1px solid var(--line);border-radius:0}
[data-theme="velvet"][data-layout="float"] .hero-sub{max-width:42ch}
[data-theme="velvet"][data-layout="float"] .qt-t{font-family:var(--font-h);font-weight:400;font-style:italic}
[data-theme="pulse"][data-layout="showcase"] .hero-title{font-size:calc(clamp(40px,7.4vw,104px) * var(--scale));line-height:.98}
[data-theme="pulse"][data-layout="showcase"] .hero-eyebrow{letter-spacing:.1em}
[data-theme="pulse"][data-layout="showcase"] .p-lg .sec-in{padding-block:calc(104px * var(--density))}
[data-theme="pulse"][data-layout="showcase"] .p-xl .sec-in{padding-block:calc(140px * var(--density))}
[data-theme="pulse"][data-layout="showcase"] .brand-name{font-size:24px;letter-spacing:-.04em}
[data-theme="dune"][data-layout="editorial"] .hero-title{font-size:calc(clamp(38px,6.3vw,88px) * var(--scale));font-weight:500;line-height:1.04}
[data-theme="dune"][data-layout="editorial"] .hero-media img{aspect-ratio:6/5;object-fit:cover}
[data-theme="dune"][data-layout="editorial"] .eyebrow{font-family:var(--font-mono);letter-spacing:.08em}
[data-theme="dune"][data-layout="editorial"] .sec-title{font-weight:500}
@media(min-width:900px){
  [data-theme="ember"][data-layout="editorial"] .hero-split{grid-template-columns:1fr 1.08fr;gap:6vw}
  [data-theme="ember"][data-layout="editorial"] .hero-split .hero-media{order:-1}
  [data-theme="dune"][data-layout="editorial"] .hero-split{grid-template-columns:.9fr 1.2fr;gap:7vw}
}

/* Collection materials inherit the palette instead of forcing dark cards on
   light themes. Imported content keeps its own inner styling. */
.sec{--collection-edge:rgb(var(--text-rgb)/.13);--collection-light:rgb(var(--text-rgb)/.035)}
.sec[data-finish="silk"]{--surface:color-mix(in srgb,var(--bg2) 92%,var(--text) 8%);--line:rgb(var(--text-rgb)/.12)}
.sec[data-finish="silk"] > .sec-in{background:linear-gradient(145deg,rgb(var(--accent-rgb)/.06),transparent 55%)}
.sec[data-finish="etched"] > .sec-in{border-block:1px solid var(--line);background:linear-gradient(90deg,transparent 49.9%,rgb(var(--text-rgb)/.025) 50%,transparent 50.1%)}
.sec[data-finish="etched"] .sec-head{padding-block-end:24px;border-block-end:1px solid var(--line)}
.sec[data-finish="etched"] :is(.eyebrow,.stat-l,.tl-time,.dn-net-tag){font-family:var(--font-mono);letter-spacing:.08em}
.sec[data-finish="etched"] :is(.feat,.price-i,.faq-i,.dn-card,.dn--tabs,.goal,.tst-i,.cmp-card,.file,.ct,.fiat-i){border-radius:3px;box-shadow:none}
.sec[data-finish="spotlight"] > .sec-in{background:radial-gradient(ellipse at 85% 0,rgb(var(--accent-rgb)/.12),transparent 58%),radial-gradient(ellipse at 0 100%,rgb(var(--accent2-rgb)/.07),transparent 48%)}
.sec[data-finish="spotlight"] :is(.sec-title,.hero-title){text-wrap:balance}
.sec[data-finish="silk"] :is(.feat,.price-i,.faq-i,.dn-card,.dn--tabs,.goal,.tst-i,.cmp-card,.file,.ct,.fiat-i){box-shadow:0 1px 0 rgb(var(--text-rgb)/.08) inset,0 12px 32px -22px rgb(0 0 0/.36)}
.sec[data-finish="spotlight"] :is(.feat,.price-i,.dn-card,.dn--tabs,.goal,.cmp-card){border-color:rgb(var(--accent-rgb)/.25)}

/* Wallet compositions use one address/QR source and retain the existing
   selection controls. Coin color is ornamental, never body-text contrast. */
.dn{width:100%;container:donation / inline-size}
.dn-requisites{display:grid;align-content:start;gap:14px;min-width:0}
.dn-code{display:grid;justify-items:center;align-content:center;gap:12px;margin:0;min-width:0}
.dn-code figcaption{max-width:24ch;font-size:11px;letter-spacing:.025em;color:var(--muted);text-align:center}
.dn[data-presentation="classic"] .dn-code figcaption{display:none}
.dn-card-n > .dn-note{flex-basis:100%}
.dn[data-presentation]:not([data-presentation="classic"]){--wallet-radius:clamp(16px,2vw,28px)}
.dn[data-presentation]:not([data-presentation="classic"]).dn--tabs{max-width:960px;padding:clamp(12px,2.5vw,24px);border-radius:var(--wallet-radius);background:linear-gradient(135deg,var(--collection-light),transparent 60%),var(--surface);box-shadow:0 1px 0 rgb(var(--text-rgb)/.08) inset,0 24px 60px -42px rgb(0 0 0/.45)}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-tabs{padding:0 0 18px;gap:8px;border-block-end:1px solid var(--line)}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-tab{min-height:48px;padding:10px 16px;border:1px solid var(--line);border-radius:12px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-tab.is-on{background:var(--bg);border-color:rgb(var(--accent-rgb)/.55);box-shadow:0 2px 8px rgb(0 0 0/.06)}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-netbar{padding:18px 0 0}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-net{min-height:38px;padding-inline:15px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-body{padding:22px 0 0}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-panel{gap:24px;align-items:start}
.dn-identity{display:flex;align-items:center;gap:16px;min-width:0}
.dn-identity > div{min-width:0}
.dn-identity b{display:block;font-family:var(--font-h);font-size:clamp(24px,3.2vw,36px);line-height:1.15;overflow-wrap:anywhere}
.dn-identity > div > span{display:block;margin-block-start:7px;font:11px var(--font-mono);letter-spacing:.16em;color:var(--muted)}
.dn-identity .cbadge{width:56px;height:56px;font-size:24px;box-shadow:0 0 0 6px color-mix(in srgb,var(--coin) 12%,transparent),0 2px 0 rgb(255 255 255/.25) inset}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-net-tag{display:inline-block;border:1px solid var(--line);background:var(--bg2);color:var(--text);font-size:11px;padding:5px 10px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-addr-row{background:var(--bg);padding:16px;gap:16px;border-radius:12px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-addr{font-family:var(--font-mono);font-size:13px;line-height:1.8;user-select:all}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-memo{padding:12px 14px;border-inline-start:2px solid var(--accent2);background:rgb(var(--accent2-rgb)/.06);border-radius:4px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-copy{min-height:40px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-code{padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--bg2)}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-qr{flex-shrink:0;box-shadow:0 4px 16px rgb(0 0 0/.08);border-radius:10px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-alert{margin-block-start:24px;border:0;border-block-start:1px solid var(--line);border-radius:0;background:none;padding:18px 0 0;font-size:12px;color:var(--muted)}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-card{padding:clamp(18px,2.4vw,28px);border-radius:var(--wallet-radius);background:linear-gradient(145deg,color-mix(in srgb,var(--coin) 7%,transparent),transparent 65%),var(--surface)}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-card-h{gap:16px;margin-block-end:22px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-card-h b{font-family:var(--font-h);font-size:21px;line-height:1.2}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-card-h i{font-family:var(--font-mono);letter-spacing:.12em;margin-block-start:6px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-card-n{gap:14px;padding-block:20px}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-card-n > .dn-addr{flex-basis:100%;padding:12px;background:var(--bg);border-radius:8px;border:1px solid var(--line)}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-card-n .dn-code{margin-inline:auto;width:100%}
.dn[data-presentation]:not([data-presentation="classic"]) .dn-qr--sm{width:136px;height:136px;padding:10px}

/* Explicit compositions outrank the shared non-classic treatment above. */
.dn[data-donate][data-presentation="orbit"] .dn-identity{flex-direction:column;text-align:center;padding-block:16px 4px;gap:28px}
.dn[data-presentation="orbit"] .dn-identity b{font-size:24px;text-wrap:balance}
.dn[data-presentation="orbit"] .dn-identity .cbadge{width:88px;height:88px;font-size:36px;border:1px solid rgb(255 255 255/.35);box-shadow:0 0 0 9px color-mix(in srgb,var(--coin) 12%,transparent),0 0 0 10px color-mix(in srgb,var(--coin) 24%,transparent),0 0 0 22px color-mix(in srgb,var(--coin) 5%,transparent),0 10px 24px -12px var(--coin)}
.dn[data-donate][data-presentation="orbit"] .dn-card-h{flex-direction:column;text-align:center;padding-block:16px}
.dn[data-presentation="orbit"] .dn-card-h .cbadge{width:64px;height:64px;font-size:25px;box-shadow:0 0 0 8px color-mix(in srgb,var(--coin) 10%,transparent)}
.dn[data-donate][data-presentation="orbit"] .dn-code{border-radius:24px;background:linear-gradient(140deg,color-mix(in srgb,var(--coin) 7%,transparent),transparent),var(--bg2)}
.dn[data-donate][data-presentation="ticket"].dn--tabs,.dn[data-donate][data-presentation="ticket"] .dn-card{border-radius:6px;box-shadow:6px 6px 0 var(--line)}
.dn[data-donate][data-presentation="ticket"] .dn-tabs{border-block-end-style:dashed}
.dn[data-presentation="ticket"] .dn-identity{border-block-end:1px dashed var(--line);padding-block-end:22px}
.dn[data-presentation="ticket"] .dn-identity b{font-size:24px}
.dn[data-donate][data-presentation="ticket"] .dn-code{border-style:dashed;border-radius:4px;background:none}
.dn[data-presentation="ticket"] .dn-card-n{border-block-start-style:dashed}
.dn[data-donate][data-presentation="ticket"] :is(.dn-tab,.dn-addr-row,.dn-memo){border-radius:4px}
@container donation (min-width:640px){
  .dn[data-presentation]:not([data-presentation="classic"]) .dn-panel:has(.dn-code){grid-template-columns:minmax(0,1fr) 220px;column-gap:32px}
  .dn[data-presentation]:not([data-presentation="classic"]) .dn-panel > .dn-identity{grid-column:1;grid-row:1}
  .dn[data-presentation]:not([data-presentation="classic"]) .dn-panel > .dn-requisites{grid-column:1;grid-row:2}
  .dn[data-presentation]:not([data-presentation="classic"]) .dn-panel > .dn-code{grid-column:2;grid-row:1 / span 2;align-self:stretch}
}
@container donation (min-width:840px){
  .dn[data-donate][data-presentation="orbit"] .dn-panel:has(.dn-code){grid-template-columns:160px minmax(0,1fr) 220px;gap:24px}
  .dn[data-donate][data-presentation="orbit"] .dn-panel:has(.dn-code) > .dn-identity{grid-column:1;grid-row:1;align-self:center}
  .dn[data-donate][data-presentation="orbit"] .dn-panel:has(.dn-code) > .dn-requisites{grid-column:2;grid-row:1;align-self:center}
  .dn[data-donate][data-presentation="orbit"] .dn-panel > .dn-code{grid-column:3;grid-row:1}
}

/* Each family keeps its own silhouette; detail is not a universal card skin. */
.sec-head :is(.sec-title,.sec-sub),.hero-copy :is(.hero-title,.hero-sub){text-wrap:pretty}
.sec-head .sec-title,.hero-copy .hero-title{text-wrap:balance}
.hero-actions .btn,.row-actions .btn,.cta-actions .btn{min-height:48px}
.hero-media{isolation:isolate}
.hero-media img,.about-media img,.tab-media img{box-shadow:0 1px 0 var(--collection-edge),0 24px 50px -36px rgb(0 0 0/.4)}
.hero-note,.hero-eyebrow,.sec .eyebrow{line-height:1.6}
.stats--cards .stat{padding-block:32px;background-image:linear-gradient(150deg,var(--collection-light),transparent)}
.stats--cards .stat-l{padding-block-start:14px;margin-block-start:18px;border-block-start:1px solid var(--line)}
.feats--cards .feat-ico{border:1px solid rgb(var(--accent-rgb)/.18);box-shadow:0 1px 0 rgb(var(--text-rgb)/.06) inset}
.feats--bordered .feat{border-block-start:2px solid rgb(var(--accent-rgb)/.5)}
.steps--cards .step-n{border:1px solid rgb(var(--accent-rgb)/.22);border-radius:12px}
.steps--connected .step-n{box-shadow:0 0 0 5px var(--bg)}
.tl--cards .tl-time{font-size:12px;letter-spacing:.08em;padding-block-start:4px}
.tl--rail .tl-i.is-accent{background:linear-gradient(90deg,rgb(var(--accent-rgb)/.05),transparent)}
.about-copy .ticks{padding-block-start:20px;border-block-start:1px solid var(--line)}
.gal-cap{padding:40px 18px 18px;line-height:1.5}
.video--boxed{padding:5px;background:var(--bg2);border-radius:calc(var(--radius) + 5px)}
.video--boxed .m-video{border-radius:var(--radius)}
.faq-q{min-height:64px;padding-block:20px}
.faq-mark{width:24px;height:24px;border:1px solid var(--line);border-radius:50%}
.faq-mark::before,.faq-mark::after{width:10px;left:6px;top:10px}
.faq-a{line-height:1.8}
.faq-i[open] .faq-q{color:var(--accent)}
.tst--cards .tst-i figcaption{padding-block-start:20px;border-block-start:1px solid var(--line)}
.tst--single .tst-i{padding:clamp(26px,5vw,58px);background-image:radial-gradient(ellipse at top,rgb(var(--accent-rgb)/.06),transparent)}
.price-i.is-featured{background-image:linear-gradient(155deg,rgb(var(--accent-rgb)/.08),transparent 60%)}
.price-i .price-v{padding-block:12px;margin-block:12px;border-block-end:1px solid var(--line)}
.logos--grid .logo-i{min-height:82px;background-image:linear-gradient(135deg,var(--collection-light),transparent)}
.pmap{box-shadow:0 0 0 5px var(--surface)}
.cts--list .ct{padding-block:22px;border-inline-start:2px solid rgb(var(--accent-rgb)/.3)}
.cta--boxed{background-image:radial-gradient(ellipse at top right,rgb(var(--accent-rgb)/.09),transparent 65%)}
.divider--line{background:linear-gradient(90deg,transparent,var(--line) 18%,var(--line) 82%,transparent)}
.prose{line-height:1.85}
.prose :is(h2,h3){color:var(--text);margin-block:1.5em .6em}
.team--cards .team-r{font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.tabs--pills .tab-nav{gap:8px}
.tabs--pills .tab-b{min-height:44px}
.cmp thead th,.dt thead th{background:var(--bg2);padding-block:20px}
.cmp tbody tr:last-child :is(td,th),.dt tbody tr:last-child :is(td,th){border-block-end-color:transparent}
.cmp-card.is-featured{border-block-start:3px solid var(--accent)}
.goals--cards .goal{background-image:linear-gradient(145deg,var(--collection-light),transparent)}
.goal-pct{font-variant-numeric:tabular-nums;letter-spacing:-.04em}
.goal-bar{height:8px;box-shadow:0 1px 2px rgb(0 0 0/.06) inset}
.goal-f{padding-block-start:8px;font-family:var(--font-mono);font-size:12px}
.qt--bordered{border-inline-start-width:2px;padding-block:12px;background:linear-gradient(90deg,rgb(var(--accent-rgb)/.035),transparent)}
.bnr{padding-block:20px}
.files--cards .file{padding:24px}
.files--cards .file-m{width:100%;padding-block-start:14px;border-block-start:1px solid var(--line);justify-content:space-between}
.ba--side figcaption{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em}
.nl--boxed{padding:clamp(18px,3vw,32px);background-image:linear-gradient(135deg,var(--collection-light),transparent)}
.sup--wall .sup-i{flex-wrap:wrap;align-content:start;padding:20px}
.sup--wall .sup-b{flex-basis:calc(100% - 48px)}
.sup--wall .sup-b i{white-space:normal}
.sup--wall .sup-amt{margin-inline-start:46px}
.fiat-i{min-height:84px}
.fiat-go{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;border:1px solid var(--line);border-radius:50%}

@media screen and (prefers-reduced-motion:no-preference){
  html[data-motion-active="true"] .sec:not([data-anim="still"]):not([data-reveal="false"]) .dn-panel:not([hidden]) .dn-identity .cbadge{animation:coin-settle .65s cubic-bezier(.2,.7,.3,1) both}
  html[data-motion-active="true"] .sec:not([data-anim="still"]):not([data-reveal="false"]) .faq-i[open] .faq-a{animation:donate-in .24s ease-out}
}
@keyframes coin-settle{from{opacity:.5;transform:translateY(8px) rotate(-8deg) scale(.94)}to{opacity:1;transform:none}}
@media (hover:hover) and (pointer:fine){
  .sec :is(.dn-tab,.fiat-go,.file-dl,.feat-ico,.ct-ico){transition:transform calc(.24s * var(--motion-factor)) cubic-bezier(.2,.7,.3,1),background calc(.24s * var(--motion-factor)),border-color calc(.24s * var(--motion-factor))}
  .sec :is(.fiat-i,.file):hover :is(.fiat-go,.file-dl){transform:translateX(calc(3px * var(--motion-factor)))}
  .sec :is(.feat,.ct):hover :is(.feat-ico,.ct-ico){transform:translateY(calc(-3px * var(--motion-factor)))}
  .dn-tab:hover{transform:translateY(calc(-2px * var(--motion-factor)))}
}
@media (max-width:640px){
  .dn[data-presentation]:not([data-presentation="classic"]) .dn-code{padding:16px;justify-self:stretch}
  .dn[data-presentation]:not([data-presentation="classic"]) .dn-addr-row .dn-copy{width:100%}
  .dn[data-presentation]:not([data-presentation="classic"]) .dn-tab{flex:1 1 auto;justify-content:center;padding-inline:10px;font-size:13px}
  .dn[data-donate][data-presentation="orbit"] .dn-identity{padding-block:28px 12px}
  .dn[data-donate][data-presentation="ticket"].dn--tabs,.dn[data-donate][data-presentation="ticket"] .dn-card{box-shadow:3px 3px 0 var(--line)}
  .stats--cards .stat{padding:24px 16px}
  .goal-f{flex-wrap:wrap}
}
@media (forced-colors:active){
  .dn[data-presentation] :is(.dn-card,.dn-code,.dn-tab,.dn-net,.dn-addr-row),.dn[data-presentation].dn--tabs{border:1px solid CanvasText;box-shadow:none}
  .dn .dn-tab.is-on,.dn .dn-net.is-on{outline:2px solid Highlight;outline-offset:-3px}
  .dn-qr{forced-color-adjust:none}
}

/* --------------------------------------------------------------- печать */
@media print{
  *,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
  .site-head,.progress,.scroll-hint,.to-top,.lang,.nav-toggle,.toast{display:none!important}
  body{background:#fff;color:#000}
  .sec-in{padding:12px 0}
  main > .sec.reveal{opacity:1!important;transform:none!important;filter:none!important;animation:none;transition:none}
}
