@font-face{font-family:Golos;font-weight:400 900;font-display:swap;src:url(fonts/golos-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Golos;font-weight:400 900;font-display:swap;src:url(fonts/golos-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Golos;font-weight:400 900;font-display:swap;src:url(fonts/golos-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --bg:#0E0F0E; --ink:#EDECE7; --mute:#A3A59F; --mute2:#8C8E88; --line:#2A2C29; --paper:#161816; --field:#1D1F1C;
  --card:#1C1E1B; --card-ink:#F2F1EC; --card-mute:#9D9E98; --card-edge:rgba(255,255,255,.09); --pin:#E8603F; --skel:#4B4D49;
  /* «инверсия»: кнопки и выбранные плитки — светлые на тёмном */
  --inv:#EDECE7; --inv-ink:#101110; --inv-mute:#5A5C57;
  --ease-out:cubic-bezier(0.23,1,0.32,1); --ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --ease-drawer:cubic-bezier(0.32,0.72,0,1); --ease-card:cubic-bezier(0.22,1,0.36,1); --ease-pop:cubic-bezier(0.34,1.56,0.64,1);
  --gut:20px; color-scheme:dark;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body{background:var(--bg);color:var(--ink);font:400 18px/1.5 Golos,system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
::selection{background:var(--ink);color:var(--bg)}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2.5px solid var(--ink);outline-offset:3px;border-radius:12px}
img{display:block;max-width:100%}
svg{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
svg.fill{fill:currentColor;stroke:none}
.num{font-variant-numeric:tabular-nums lining-nums}
.nw{white-space:nowrap}
h1,h2{text-wrap:balance}
p{text-wrap:pretty}
.wrap{max-width:1180px;margin:0 auto;padding:0 var(--gut)}

/* шапка */
.top{display:flex;justify-content:space-between;align-items:center;min-height:64px;font-size:15px;font-weight:500;color:var(--mute2)}
.toplink{display:inline-flex;align-items:center;min-height:48px;color:var(--mute2);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:4px;transition:color .2s,text-decoration-color .2s}
.toplink:hover{color:var(--ink);text-decoration-color:currentColor}
/* языки: капсула и светлая «таблетка», которая переезжает под выбранный код */
.langs{position:relative;display:flex;padding:3px;border-radius:999px;background:#151714;box-shadow:inset 0 0 0 1px var(--line)}
.lang{position:relative;z-index:1;display:grid;place-items:center;min-width:44px;height:36px;padding:0 10px;border-radius:999px;
  font-size:13px;font-weight:600;letter-spacing:.05em;color:var(--mute2);transition:color .35s var(--ease-out)}
.lang[aria-current="page"],.lang.to{color:var(--inv-ink)}
.langs.moving .lang[aria-current="page"]{color:var(--mute2)}
.langs-pill{position:absolute;z-index:0;top:3px;bottom:3px;left:0;width:var(--pw,0);translate:var(--px,0) 0;border-radius:999px;background:var(--inv);
  box-shadow:0 6px 14px -8px rgba(0,0,0,.8);transition:translate .5s var(--ease-drawer),width .5s var(--ease-drawer)}
.langs-pill.still{transition:none}
html:not(.js) .langs-pill{display:none}
html:not(.js) .lang[aria-current="page"]{background:var(--inv)}
@media (hover:hover) and (pointer:fine){.lang:not([aria-current]):not(.to):hover{color:var(--ink)}}
.foot-langs{display:flex;flex-wrap:wrap;gap:0 18px}
.top>span{white-space:nowrap}
@media (max-width:399px){.top{font-size:14px;gap:10px}.lang{min-width:38px;padding:0 8px;font-size:12.5px}}
@media (max-width:359px){.top{font-size:13px;gap:8px}.lang{min-width:33px;height:34px;padding:0 6px;font-size:12px}}

/* первый экран */
.hero{display:flex;flex-direction:column;gap:24px;padding:8px 0 64px}
.hero-a{display:flex;flex-direction:column;gap:14px}
.h1{font-size:32px;line-height:1.14;font-weight:600;letter-spacing:-.02em}
.w{display:inline-block;clip-path:inset(-.3em -.25em 0 -.25em);vertical-align:top;padding-bottom:.1em;margin-bottom:-.1em}
.h1 .w>span{display:inline-block;animation:word-up .85s var(--ease-out) both;animation-delay:calc(var(--i) * 45ms + 80ms)}
.rv .w>span{display:inline-block;transition:transform .8s var(--ease-out);transition-delay:calc(var(--i) * 35ms)}
.js .rv:not(.in) .w>span{transform:translateY(108%)}
@keyframes word-up{from{transform:translateY(108%)}to{transform:none}}
.lead{font-size:17px;color:var(--mute);animation:fade-up .7s var(--ease-out) .45s both}
/* пункты — наклейки, брошенные в зону под лидом: у каждой свой наклон и сдвиг */
.pts{list-style:none;display:flex;flex-direction:column;align-items:flex-start;gap:16px;padding:4px 0 6px;font-size:15px;font-weight:500}
.pts li{display:flex;align-items:center;gap:8px;white-space:nowrap;padding:7px 14px 7px 8px;border-radius:999px;
  background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1px rgba(237,236,231,.16),0 8px 18px -10px rgba(0,0,0,.9);
  rotate:var(--r);translate:var(--x,0) var(--y,0);animation:drop-chip .6s var(--ease-pop) both;animation-delay:calc(.55s + var(--n) * 110ms)}
.pts li:nth-child(1){--n:0;--r:-3deg}
.pts li:nth-child(2){--n:1;--r:3deg;--x:30px}
.pts li:nth-child(3){--n:2;--r:-1.5deg;--x:10px}
@media (max-width:359px){.pts li:nth-child(2){--x:14px}.pts li:nth-child(3){--x:4px}}
@keyframes drop-chip{from{opacity:0;transform:translateY(-14px) scale(1.12) rotate(-6deg)}to{opacity:1;transform:none}}
.pts svg{flex:none;width:20px;height:20px;padding:4px;border-radius:50%;background:var(--inv);fill:none;stroke:var(--inv-ink);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}
@media (prefers-reduced-motion:reduce){.pts li{animation:none}}
@keyframes fade-up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.hero-b{display:flex;justify-content:center;padding:6px 0 4px}
.scene{perspective:1000px}
.tilt{transition:transform .6s var(--ease-out)}
/* 3D только пока курсор над первым экраном: в покое карточка плоская и буквы чёткие */
.tilt.tilting{transform-style:preserve-3d;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
.hero-b{position:relative}
/* тёплое пятно света под карточкой, как от настольной лампы */
.hero-b::before{content:"";position:absolute;left:50%;top:50%;width:min(720px,150vw);aspect-ratio:1.5;transform:translate(-50%,-50%);pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,236,200,.075),rgba(255,236,200,.025) 55%,transparent);animation:fade-in 1.4s var(--ease-out) .3s both}
@keyframes fade-in{from{opacity:0}}
.card{position:relative;overflow:hidden;width:min(340px,calc(100vw - 2 * var(--gut)));min-height:calc(min(340px,calc(100vw - 2 * var(--gut))) / 1.6);gap:10px;border-radius:22px;
  background:linear-gradient(155deg,#272a26 0%,var(--card) 42%,#141613 100%);color:var(--card-ink);
  padding:22px 24px;display:flex;flex-direction:column;justify-content:space-between;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 0 0 1px var(--card-edge),0 2px 4px rgba(0,0,0,.5),0 40px 60px -28px rgba(0,0,0,.95)}
.hero .card{transform:rotate(-1.5deg);animation:deal 1.15s var(--ease-card) .2s both}
@keyframes deal{
  from{opacity:0;transform:translateY(70px) rotateX(32deg) rotateY(-18deg) rotateZ(-7deg) scale(.92)}
  45%{opacity:1}
  to{opacity:1;transform:rotate(-1.5deg)}
}
/* один блик по ламинированной карточке */
.card::after{content:"";position:absolute;inset:-40% auto -40% -60%;width:45%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.13) 45%,rgba(255,255,255,.22) 50%,rgba(255,255,255,.13) 55%,transparent);
  transform:translateX(-30%) skewX(-12deg);opacity:0}
.hero .card::after{animation:sheen 8s var(--ease-in-out) 1.05s infinite both}
.js .hero:not(.live) .card::after{animation-play-state:paused}
@keyframes sheen{0%{opacity:0;transform:translateX(-30%) skewX(-12deg)}3%{opacity:1}15%{opacity:1}17.5%,100%{opacity:0;transform:translateX(420%) skewX(-12deg)}}
.card-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.big{font-size:54px;font-weight:600;letter-spacing:-.045em;line-height:1}
.once{font-size:14px;color:var(--card-mute)}
.card-lines{display:flex;flex-direction:column;gap:3px;font-size:15px;line-height:1.4}
/* барабан цифр */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.odo-v{display:inline-flex;align-items:baseline}
.odo{display:inline-block;height:1.02em;overflow:hidden;vertical-align:bottom;line-height:1.02}
.odo-s{display:flex;flex-direction:column;transform:translateY(calc((20 + var(--d)) * -1.02em));
  transition:transform 1.9s cubic-bezier(.3,.55,.12,1);transition-delay:calc(var(--k) * 160ms)}
.odo-s span{display:block;height:1.02em}
.js .ex-scene:not(.roll) .odo-s{transform:translateY(0);transition:none}
/* в первом экране цена читается сразу: один короткий оборот, пока карточка выезжает, без JS */
.hero .odo-s{animation:odo-turn .45s cubic-bezier(.3,.55,.12,1) both;animation-delay:calc(.25s + var(--k) * 25ms)}
@keyframes odo-turn{from{transform:translateY(calc((10 + var(--d)) * -1.02em))}}
.ex-scene .odo-s{transition-duration:1.5s;transition-delay:calc(.5s + var(--i,0) * 120ms + var(--k) * 110ms)}
/* полоса «половина + половина» */
.split{display:flex;gap:5px;margin:4px 0 5px;max-width:200px}
.split i{flex:1;height:4px;border-radius:2px;background:rgba(242,241,236,.18);position:relative;overflow:hidden}
.split i::after{content:"";position:absolute;inset:0;background:var(--card-ink);transform-origin:left;transform:scaleX(1);transition:transform .7s cubic-bezier(.65,0,.35,1)}
.split i:nth-child(2)::after{transition-delay:.75s}
.js .hero:not(.roll) .split i::after{transform:scaleX(0);transition:none}
.hero.roll .split i:nth-child(1)::after{transition-delay:1.1s}
.hero.roll .split i:nth-child(2)::after{transition-delay:1.9s}
/* мягкий свет за курсором на тёмных карточках */
.card::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s;
  background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.09),transparent 60%)}
.card.lit::before{opacity:1}

.hero-c{display:flex;flex-direction:column;gap:14px;animation:nudge-up .6s var(--ease-out) .1s both}
@keyframes nudge-up{from{transform:translateY(14px)}to{transform:none}}
.cta{display:flex;flex-direction:column;gap:10px}
.btn{translate:var(--bx,0) var(--by,0);display:flex;align-items:center;justify-content:center;gap:10px;min-height:58px;padding:0 24px;border-radius:999px;font-weight:600;font-size:18px;
  transition:transform .16s var(--ease-out),translate .35s var(--ease-out),background-color .2s,box-shadow .2s}
.btn svg{width:22px;height:22px}
.btn:active{transform:scale(.97)}
.btn-dark{background:var(--inv);color:var(--inv-ink);box-shadow:0 10px 24px -14px rgba(0,0,0,.8)}
.btn-line{box-shadow:inset 0 0 0 1.5px rgba(237,236,231,.42)}
@media (hover:hover) and (pointer:fine){
  .btn-dark:hover{background:#fff;transform:translateY(-2px);box-shadow:0 16px 34px -14px rgba(255,240,215,.22)}
  .btn-line:hover{background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1.5px var(--ink);transform:translateY(-2px)}
  .btn:active{transform:scale(.97)}
}
.tel{display:flex;align-items:center;justify-content:center;min-height:48px;font-weight:600;font-size:17px}
.save{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:15px;font-weight:500;color:var(--ink);align-self:flex-start;
  text-decoration:underline;text-decoration-color:rgba(237,236,231,.3);text-underline-offset:4px;transition:text-decoration-color .2s}
.save:hover{text-decoration-color:currentColor}
.save svg{width:18px;height:18px}
.save .ok{display:none}
.save.saved .ok{display:block;animation:pop .45s var(--ease-pop) both}
.save.saved svg:not(.ok){display:none}
@keyframes pop{from{transform:scale(.3);opacity:0}to{transform:none;opacity:1}}

/* почему + демо поиска */
.why{display:flex;flex-direction:column;gap:28px;padding:40px 0 56px}
.why-text{font-size:26px;line-height:1.22;font-weight:600;letter-spacing:-.015em}
.demo{position:relative;background:var(--paper);border-radius:22px;padding:16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 0 0 1px rgba(255,255,255,.05),0 24px 48px -30px rgba(0,0,0,.9);max-width:460px;width:100%}
.demo-label{position:absolute;top:-11px;right:18px;background:var(--inv);color:var(--inv-ink);font-size:12px;font-weight:600;padding:3px 10px;border-radius:99px}
.q{display:flex;align-items:center;gap:10px;height:50px;padding:0 16px;border-radius:99px;background:var(--field);box-shadow:inset 0 0 0 1px var(--line);font-size:16px}
.q svg{color:var(--mute2)}
.typed{display:inline-flex;align-items:center}
.caret{width:2px;height:20px;background:var(--ink);margin-left:2px}
.js .demo.play .caret{animation:blink 1s steps(1) 1.4s 4}
@keyframes blink{50%{opacity:0}}
.results{list-style:none;position:relative;height:calc(3 * 64px + 2 * 8px);margin-top:12px}
.res{position:absolute;left:0;right:0;top:0;height:64px;display:flex;align-items:center;gap:12px;padding:0 14px;border-radius:14px;background:var(--field);
  box-shadow:inset 0 0 0 1px var(--line);transform:translateY(calc(var(--slot) * 72px)) scale(var(--sc,1));
  transition:transform .75s var(--ease-in-out),box-shadow .4s,opacity .45s var(--ease-out)}
.res svg{width:22px;height:22px;color:var(--skel);transition:color .4s}
.sk{flex:1;display:flex;flex-direction:column;gap:7px}
.sk i{display:block;height:9px;border-radius:5px;background:#30322F}
.sk i.thin{height:7px;background:#272926}
.you{flex:1;display:flex;flex-direction:column;line-height:1.25;min-width:0}
.you b{font-weight:600;font-size:16px}
.you span{font-size:13px;color:var(--mute)}
.chips{display:flex;gap:6px}
.chips span{font-size:12px;font-weight:600;padding:5px 9px;border-radius:99px;background:var(--bg)}
/* финальное состояние (без JS и после проигрыша): ваш салон появился в выдаче */
.r-a{--slot:0}.r-you{--slot:1;box-shadow:inset 0 0 0 2px var(--ink)}.r-you svg{color:var(--pin)}.r-b{--slot:2}
/* с JS сцена ждёт появления на экране: печать запроса → результаты → ваш салон появляется между ними */
.js .demo:not(.play) .ch,.js .demo:not(.play) .res{opacity:0}
.js .demo:not(.done) .r-you{opacity:0;--sc:.94}
.js .demo:not(.done) .r-b{--slot:1}
.js .demo.done .r-b{transition:transform .55s var(--ease-out),box-shadow .4s,opacity .45s}
.js .demo.done .r-you{transition:transform .5s var(--ease-out) .3s,opacity .3s var(--ease-out) .3s,box-shadow .4s}
.js .demo .ch:not(.on){display:none}
.js .demo.play:not(.done) .res{transition-delay:1.75s}
.js .demo.play:not(.done) .r-b{transition-delay:1.83s}
.js .demo.reset .res,.js .demo.reset .typed{opacity:0;transition:opacity .35s var(--ease-out)!important}

/* работы */
.works{padding:40px 0 56px}
.h2{font-size:26px;line-height:1.2;font-weight:600;letter-spacing:-.015em;margin-bottom:28px}
.car{position:relative;margin:0 calc(-1 * var(--gut));overflow-x:clip;-webkit-mask-image:linear-gradient(90deg,transparent,#000 14%,#000 86%,transparent);mask-image:linear-gradient(90deg,transparent,#000 14%,#000 86%,transparent)}
.track{--slide:min(78vw,300px);position:relative;list-style:none;display:flex;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;
  scrollbar-width:none;padding:16px calc(50% - var(--slide) / 2) 12px;outline-offset:-3px}
.track::-webkit-scrollbar{display:none}
.slide{flex:0 0 var(--slide);scroll-snap-align:center;scroll-snap-stop:always}
.slide-in{position:relative;z-index:1;display:flex;justify-content:center}
.slide.cur .slide-in{z-index:3}
.slide a{display:flex;flex-direction:column;align-items:center;text-align:center;gap:22px;padding:0 6px}
.slide .work-text{align-items:center;max-width:30ch}
/* барабан: телефоны стоят по кругу, центральный смотрит на нас, соседние уходят назад внешним краем
   (0% — телефон справа, 100% — слева; сдвиг к центру и в глубину по окружности) */
@supports (animation-timeline: view()){
  .slide{view-timeline:--cv inline}
  .slide-in{animation:cover linear both;animation-timeline:view(inline)}
  @keyframes cover{
    0%{transform:perspective(1100px) translateX(-64%) translateZ(-320px) rotateY(64deg)}
    25%{transform:perspective(1100px) translateX(-22%) translateZ(-90px) rotateY(32deg)}
    50%{transform:none}
    75%{transform:perspective(1100px) translateX(22%) translateZ(-90px) rotateY(-32deg)}
    100%{transform:perspective(1100px) translateX(64%) translateZ(-320px) rotateY(-64deg)}
  }
  /* боковые телефоны притушены тенью поверх экрана, по стеклу едет блик */
  .slide .screen::after{animation:shade linear both;animation-timeline:--cv}
  @keyframes shade{0%,100%{opacity:.92}25%,75%{opacity:.42}50%{opacity:0}}
  .slide .screen::before{animation:glare linear both;animation-timeline:--cv}
  @keyframes glare{from{background-position:100% 0}to{background-position:0 0}
  }
  .slide .work-text{animation:caption linear both;animation-timeline:view(inline)}
  @keyframes caption{0%,32%{opacity:0;transform:translateY(10px)}50%{opacity:1;transform:none}68%,100%{opacity:0;transform:translateY(10px)}}
}
.car-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:6px}
html:not(.js) .car-nav{display:none}
.arr{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:0;background:transparent;color:var(--ink);cursor:pointer;
  box-shadow:inset 0 0 0 1.5px var(--line);transition:background-color .2s,box-shadow .2s,transform .16s var(--ease-out)}
.arr:active{transform:scale(.94)}
.dots{display:flex;align-items:center;gap:4px}
.dot{width:28px;height:28px;border:0;background:transparent;cursor:pointer;display:grid;place-items:center;padding:0}
.dot::before{content:"";width:24px;height:8px;border-radius:99px;background:#3C3E3A;transform:scaleX(.333);transition:transform .35s var(--ease-out),background-color .35s}
.dot[aria-current="true"]::before{transform:none;background:var(--ink)}
@media (hover:hover) and (pointer:fine){.arr:hover{background:var(--field);box-shadow:inset 0 0 0 1.5px var(--ink)}}
.phone{--pw:210px;position:relative;display:block;width:var(--pw);aspect-ratio:1/2.0978;padding:calc(var(--pw) * .01);border-radius:calc(var(--pw) * .1616);
  background:linear-gradient(135deg,#3b3b3e 0%,#1f1f21 22%,#161617 50%,#232325 78%,#3e3e41 100%);
  --ph-shadow:0 0 0 1px rgba(255,255,255,.07),0 2px 4px rgba(0,0,0,.5),0 30px 40px -24px rgba(0,0,0,.95);box-shadow:var(--ph-shadow)}
.bezel{display:block;height:100%;padding:calc(var(--pw) * .02);border-radius:calc(var(--pw) * .1516);background:#050506}
.pbtn{position:absolute;width:calc(var(--pw) * .0085);border-radius:calc(var(--pw) * .005);background:linear-gradient(90deg,#1c1c1e,#38383b,#1c1c1e)}
.pbtn.l1,.pbtn.l2,.pbtn.l3{left:calc(var(--pw) * -.0055)}
.pbtn.l1{top:calc(var(--pw) * .282);height:calc(var(--pw) * .081)}
.pbtn.l2{top:calc(var(--pw) * .411);height:calc(var(--pw) * .148)}
.pbtn.l3{top:calc(var(--pw) * .588);height:calc(var(--pw) * .148)}
.pbtn.r1{right:calc(var(--pw) * -.0055);top:calc(var(--pw) * .49);height:calc(var(--pw) * .234)}
/* объём: телефон и его предки живут в одном 3D-пространстве барабана; грани — две тонкие плоскости вдоль боков */
.slide-in,.slide a,.phone{transform-style:preserve-3d}
/* телефоны в 3D (phones3d.js): холст поверх ряда; DOM-телефон остаётся местом и зоной клика, CSS-торец не нужен */
.gl-cv{position:absolute;left:0;z-index:4;pointer-events:none;transition:opacity .9s var(--ease-out);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
/* маска карусели обрезала бы холст по рамке блока (задние телефоны кольца выглядывают выше) — в 3D края растворяет сам холст */
.car.gl{-webkit-mask-image:none;mask-image:none}
/* задние телефоны кольца выглядывают над передним — место под ними, чтобы не налезали на заголовок */
.gl3 .works .h2{margin-bottom:calc(28px + 30vw)}
@media (min-width:900px){.gl3 .works .h2{margin-bottom:150px}}
/* 3D проявляется поверх CSS-телефонов, когда у экранов есть картинки, а CSS-телефоны в это время тают — без чёрной паузы и рывка */
.gl-cv{opacity:0}
.car.gl .gl-cv{opacity:1}
.js .car:not(.in) .gl-cv{opacity:0}
.car.gl .phone{opacity:0} /* не visibility:hidden — иначе клик по боковому телефону проходит мимо и он не выезжает в центр */
.car.gl .rim{display:none}
.rim{--th:calc(var(--pw) * .1);position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}
/* у переднего края цвет как у рамки — торец не отрывается от корпуса; посередине блик скруглённого металла; к задней кромке темнее */
.seg{position:absolute;left:0;top:0;width:calc(var(--th) + 2px);border:solid transparent;border-width:0 1px;background-clip:padding-box;transform-origin:0 0;backface-visibility:visible;
  background:linear-gradient(90deg,rgba(255,255,255,.03) 0,rgba(255,255,255,.08) 38%,rgba(255,255,255,0) 64%,rgba(0,0,0,.35) 100%),
    linear-gradient(180deg,hsl(240 2% var(--l0)),hsl(240 2% var(--l1)))}
.eb{position:absolute;left:24%;width:44%;border-radius:calc(var(--pw) * .008);background:linear-gradient(90deg,hsl(240 2% 14%),hsl(240 2% 30%) 50%,hsl(240 2% 14%));box-shadow:0 0 0 .5px rgba(0,0,0,.55)}
.slide .screen::before{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;mix-blend-mode:screen;
  background:linear-gradient(112deg,transparent 38%,rgba(255,255,255,.13) 47%,rgba(255,255,255,.05) 52%,transparent 60%) 50% 0/260% 100% no-repeat}
.slide .screen::after{content:"";position:absolute;inset:0;z-index:6;pointer-events:none;background:#060607;opacity:0}
.screen{position:relative;display:block;height:100%;overflow:hidden;border-radius:calc(var(--pw) * .1316);background:var(--bar);container-type:inline-size;isolation:isolate}
.home{position:absolute;left:50%;bottom:2cqw;z-index:3;width:34cqw;height:1.3cqw;border-radius:1cqw;transform:translateX(-50%);
  background:rgba(0,0,0,.6);box-shadow:0 0 0 .35cqw rgba(255,255,255,.35)}
.sbar::after{content:"";position:absolute;left:0;right:0;top:100%;height:3cqw;background:linear-gradient(var(--bar),transparent);pointer-events:none}
.sbar{position:absolute;inset:0 0 auto 0;height:calc(13.7cqw + 1px);z-index:2;background:var(--bar);color:var(--bar-ink);display:flex;align-items:center;justify-content:space-between;padding:0 8cqw}
.time{font-size:4.3cqw;font-weight:600}
.island{position:absolute;left:50%;top:3cqw;width:24cqw;height:8.6cqw;border-radius:9cqw;background:#000;transform:translateX(-50%)}
.sicons{width:19.6cqw;height:3.3cqw;stroke:none}
.feed{position:absolute;inset:13.7cqw 0 0 0;overflow:hidden}
.feed img{width:calc(100% + 1px);max-width:none;height:auto}
.feed .clip{display:block;width:100%;height:100%;object-fit:cover;object-position:top;background:var(--bar)}
html:not(.js) .slide.clone{display:none}
.work-text{display:flex;flex-direction:column;gap:6px}
.dom{display:flex;align-items:center;gap:8px;font-size:24px;font-weight:600;letter-spacing:-.02em}
.dom svg{width:18px;height:18px;color:var(--mute2);transition:transform .25s var(--ease-out)}
.desc{font-size:16px;line-height:1.45;color:#C2C3BD}
.tag{font-size:14px;color:var(--mute2)}
@media (hover:hover) and (pointer:fine){.work a:hover .dom svg{transform:translate(2px,-2px)}}
/* вход телефонов и прокрутка настоящего сайта внутри экрана */
/* вход карусели: телефоны въезжают справа и раскладываются */
.js .car:not(.in) .track{opacity:0;transform:translateX(80px)}
.car .track{transition:opacity .7s var(--ease-out),transform 1.1s var(--ease-card)}
.js .car:not(.in) .car-nav{opacity:0}
.car .car-nav{transition:opacity .6s var(--ease-out) .5s}
.work{--stag:0}
.work.play .feed img{animation:browse 18s cubic-bezier(.45,0,.55,1) calc(.9s + var(--i) * var(--stag) * 2.2s) infinite both}
.work:not(.live) .feed img{animation-play-state:paused}
@keyframes browse{0%,8%{transform:translateY(0)}46%,56%{transform:translateY(calc(-100% + 210cqw))}92%,100%{transform:translateY(0)}}
.phone{transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out),opacity .9s var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .work.cur a:hover .phone{transform:translateY(-8px);box-shadow:0 0 0 1px rgba(255,255,255,.09),0 2px 4px rgba(0,0,0,.5),0 44px 50px -26px rgba(0,0,0,.95)}
}

/* остальные цены */
.extras{padding:40px 0 56px}
.ex-scene{perspective:1100px;display:flex;justify-content:center}
.ex-card{width:100%;max-width:560px;aspect-ratio:auto;gap:16px;padding:24px 22px;transform:none;
  transition:transform 1s var(--ease-card),opacity .5s var(--ease-out)}
.js .ex-scene:not(.in) .ex-card{opacity:0;transform:translateY(60px) rotateX(24deg) rotateY(10deg) scale(.95)}
.line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;align-items:baseline;font-size:15px;line-height:1.4;
  transition:opacity .5s var(--ease-out),transform .5s var(--ease-out);transition-delay:calc(.35s + var(--i) * 60ms)}
.ex-note{font-size:13px;color:var(--card-mute);padding-top:4px;transition:opacity .5s var(--ease-out);transition-delay:calc(.35s + var(--i) * 60ms)}
.js .ex-scene:not(.in) .line,.js .ex-scene:not(.in) .ex-note{opacity:0;transform:translateY(10px)}
.price{margin-left:auto;font-size:20px;font-weight:600;letter-spacing:-.02em;white-space:nowrap}
.price2{display:flex;flex-direction:column;align-items:flex-end;gap:6px;text-align:right}
.pr{display:flex;flex-direction:column;align-items:flex-end;line-height:1.05}
.pr small{margin-top:3px;max-width:7.5em;white-space:normal;text-align:right;line-height:1.25;font-size:12px;font-weight:500;letter-spacing:0;color:var(--card-mute)}
.slots{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:13px}
.slots i{width:11px;height:11px;border-radius:50%;background:var(--card-ink);transition:transform .45s var(--ease-pop);transition-delay:calc(.75s + var(--j) * 90ms)}
.slots i.taken{background:transparent;box-shadow:inset 0 0 0 1.5px var(--card-mute)}
.slots em{font-style:normal;color:var(--card-mute);margin-left:4px}
.js .ex-scene:not(.in) .slots i{transform:scale(0)}
@supports (animation-timeline: view()){
@media (min-width:900px){
  .ex-card{transform:rotate(1deg)}
  .ex-float{animation:ex-float linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
  @keyframes ex-float{from{transform:translateY(36px) rotate(1.8deg)}to{transform:translateY(-36px) rotate(-1.4deg)}}
}
}
.ex-tilt{transition:transform .6s var(--ease-out)}
.ex-tilt.tilting{transform-style:preserve-3d;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
.ex-card::after{animation:sheen 9s var(--ease-in-out) 2.4s infinite both}
.js .ex-scene:not(.live) .ex-card::after{animation-play-state:paused}

/* вопросы: рваные листки вокруг цены. Ответ — на обороте; отвеченный листок выпрямляется и прихватывается скотчем: сомнение закрыто */
.scraps{display:flex;flex-direction:column;align-items:flex-start;padding-top:18px}
.scrap{--w:min(80vw,300px);position:relative;display:block;width:var(--w);padding:0;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;
  perspective:900px;rotate:var(--r,0deg);translate:var(--tx,0) 0;transition:rotate .6s var(--ease-card),translate .6s var(--ease-card),scale .25s var(--ease-out);-webkit-tap-highlight-color:transparent}
.scrap:nth-child(1){--r:-3.5deg}
.scrap:nth-child(2){--r:4deg;align-self:flex-end;margin-top:14px}
.scrap:nth-child(3){--r:-2deg;--tx:5%;margin-top:14px}
.scrap-in{display:grid;transform-style:preserve-3d;transition:transform .7s var(--ease-card)}
.scrap-f,.scrap-b{display:block;grid-area:1/1;backface-visibility:hidden;-webkit-backface-visibility:hidden;filter:drop-shadow(0 12px 14px rgba(0,0,0,.55)) drop-shadow(0 2px 2px rgba(0,0,0,.4))}
.scrap-b{transform:rotateY(180deg)}
.paper{display:flex;flex-direction:column;justify-content:space-between;gap:10px;height:100%;padding:13px 18px 28px;clip-path:var(--clip);
  background-color:#EAE6DA;background-image:repeating-linear-gradient(transparent 0 23px,rgba(64,96,150,.22) 23px 24px);background-position:0 13px;
  color:#1F2433;font-size:15px;line-height:24px;font-weight:500}
.scrap-q{font-size:16px;font-weight:650}
.scrap-a{color:#2B2E37}
.scrap-hint{display:inline-flex;align-items:center;gap:5px;align-self:flex-end;font-size:12px;line-height:24px;font-weight:600;color:#6A6D77}
.scrap-hint svg{width:13px;height:13px;stroke-width:2.2}
/* скотч появляется, когда на вопрос ответили */
.scrap::before{content:"";position:absolute;z-index:2;left:50%;top:-10px;width:78px;height:22px;translate:-50% 0;rotate:-5deg;
  background:rgba(232,228,208,.42);box-shadow:0 1px 2px rgba(0,0,0,.3);clip-path:polygon(3% 0,97% 5%,100% 52%,96% 100%,2% 95%,0 46%);
  opacity:0;scale:1.5;transition:opacity .25s,scale .35s var(--ease-pop);pointer-events:none}
.scrap[aria-expanded="true"]{rotate:var(--r2,0deg)}
.scrap[aria-expanded="true"] .scrap-in{transform:rotateY(180deg)}
.scrap[aria-expanded="true"]::before{opacity:1;scale:1;transition-delay:.5s}
.scrap:active{scale:.98}
@media (hover:hover) and (pointer:fine){.scrap:hover{scale:1.03}}
/* листки падают на стол вслед за карточкой */
.js .scrap{animation:scrap-drop .8s var(--ease-card) backwards;animation-delay:calc(1.2s + var(--n) * 150ms)}
@keyframes scrap-drop{from{opacity:0;translate:0 -40px;rotate:calc(var(--r,0deg) * 3)}}
/* без JS ответ виден сразу под вопросом */
html:not(.js) .scrap{cursor:default}
html:not(.js) .scrap-in{display:block}
html:not(.js) .scrap-b{transform:none}
html:not(.js) .scrap-hint{display:none}

/* связаться */
.contact{display:flex;flex-direction:column;gap:28px;padding:40px 0 56px}
.contact-a{display:flex;flex-direction:column;gap:14px}
.contact .h2{margin-bottom:0}
.contact-sub{color:var(--mute);max-width:52ch}
.qr-block{display:none}

.foot{display:flex;flex-direction:column;gap:6px;padding:28px 0 120px;border-top:1px solid var(--line);color:var(--mute2);font-size:14px}
.foot .toplink{min-height:36px}

/* плавающая кнопка: появляется, когда кнопка первого экрана ушла с экрана */
.fab{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));padding:0 22px;z-index:10;display:flex;align-items:center;justify-content:center;gap:10px;
  min-height:56px;border-radius:999px;background:var(--inv);color:var(--inv-ink);font-weight:600;font-size:17px;box-shadow:0 18px 36px -14px rgba(0,0,0,.9);
  transform:translateY(calc(100% + 40px));transition:transform .34s var(--ease-drawer)}
.fab svg{width:22px;height:22px}
.fab.show svg{animation:wiggle .7s ease-in-out .35s both}
@keyframes wiggle{0%,100%{transform:none}20%{transform:rotate(-14deg) scale(1.08)}45%{transform:rotate(11deg) scale(1.08)}70%{transform:rotate(-6deg)}85%{transform:rotate(3deg)}}
.fab.show{transform:none}
.fab.show:active{transform:scale(.97);transition-duration:.16s}
html:not(.js) .fab{display:none}

@media (min-width:900px){
  :root{--gut:48px}
  body{font-size:19px}
  .top{min-height:84px;font-size:16px}
  .hero{display:grid;grid-template-columns:6fr 5fr;grid-template-rows:auto auto;gap:36px 80px;align-items:center;padding:56px 0 180px}
  .hero-a{grid-column:1;grid-row:1;gap:24px;align-self:end}
  .hero-b{grid-column:2;grid-row:1/3}
  .hero-c{grid-column:1;grid-row:2;align-self:start}
  .h1{font-size:56px;line-height:1.06}
  .lead{font-size:19px;max-width:30em}
  .pts{font-size:16px;flex-direction:row;flex-wrap:wrap;max-width:520px;gap:20px 14px}
  .pts li:nth-child(1){--r:-4deg;--x:0;--y:2px}
  .pts li:nth-child(2){--r:3.5deg;--x:6px;--y:-2px}
  .pts li:nth-child(3){--r:-1.5deg;--x:58px;--y:1px}
  .hero .card{width:440px;min-height:240px;padding:30px 32px}
  .big{font-size:76px}
  .card-lines{font-size:17px}
  .cta{flex-direction:row;flex-wrap:wrap;align-items:center;gap:14px}
  .cta .btn{flex:0 1 auto}
  .why{display:grid;grid-template-columns:1fr 460px;gap:80px;align-items:center;padding:80px 0 104px}
  .why-text{font-size:40px;line-height:1.14}
  .h2{font-size:38px;margin-bottom:44px}
  .works,.extras{padding:64px 0 96px}
  .car{margin:0}
  .track{--slide:360px;padding-top:24px}
  .phone{--pw:250px}
  .work{--stag:1}
  .desc{max-width:30ch}
  .ex-card{padding:32px 36px;gap:18px}
  .line{font-size:17px}
  .price{font-size:24px}
  .scraps{grid-column:2;grid-row:1/3;align-self:stretch;position:relative;z-index:2;padding:0;pointer-events:none}
  .scrap{--w:228px;position:absolute;margin:0!important;pointer-events:auto}
  .scrap:nth-child(1){--r:6deg;right:-40px;top:-50px}
  .scrap:nth-child(2){--r:-7deg;left:-120px;bottom:-172px}
  .scrap:nth-child(3){--r:4deg;--tx:0;right:-30px;bottom:-150px}
  .contact{display:grid;grid-template-columns:1fr auto;align-items:center;gap:64px;padding:64px 0 96px}
  .qr-block{display:flex;align-items:center;gap:18px;padding:26px;background:var(--paper);border-radius:22px;max-width:400px}
  .qr-block{box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 0 0 1px rgba(255,255,255,.05)}
  /* QR остаётся тёмным на светлом: инвертированный код читают не все камеры */
  .qr{flex:none;line-height:0;padding:10px;border-radius:14px;background:var(--inv)}
  .qr svg{display:block;width:auto;height:auto}
  .qr svg{overflow:visible;stroke:none}
  .qr path{fill:var(--inv-ink);stroke:none}
  .qr path.qd{fill:none;stroke:var(--inv-ink);stroke-width:1.04;stroke-linecap:round} /* соседние точки касаются — код читается надёжнее, в том числе слабыми сканерами */
  .qr-block{gap:22px}
  /* QR собирается из плиток: разлетелись с поворотом → слетаются на место по очереди */
  .qp{transform-box:fill-box;transform-origin:center;transition:transform .9s var(--ease-card),opacity .45s var(--ease-out);transition-delay:calc(var(--q) * 22ms)}
  .js .qr-block:not(.in) .qp{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--r)) scale(.5)}
  /* «глазки» и карточка прилетают последними: глазки — щелчком, карточка — с поворотом */
  .qe,.ql{transform-box:fill-box;transform-origin:center;transition:transform .7s var(--ease-pop),opacity .3s var(--ease-out);transition-delay:calc(var(--q) * 22ms)}
  .js .qr-block:not(.in) .qe{opacity:0;transform:scale(.2)}
  .js .qr-block:not(.in) .ql{opacity:0;transform:scale(.3) rotate(-25deg)}
  .ql-card{fill:var(--card)}
  .ql text{fill:var(--card-ink);font-family:Golos,sans-serif;letter-spacing:-.04em}
  .qr-side{display:flex;flex-direction:column;gap:14px;min-width:0}
  .qr-block p{font-size:15px;color:var(--mute);line-height:1.4}
  .qr-c{display:block}.qr-c[hidden]{display:none}
  /* переключатель канала: как у языков — светлая «таблетка» переезжает под выбранный */
  .qr-tabs{position:relative;display:flex;align-self:flex-start;padding:3px;border-radius:999px;background:#151714;box-shadow:inset 0 0 0 1px var(--line)}
  .qr-tab{position:relative;z-index:1;height:34px;padding:0 13px;border:0;border-radius:999px;background:none;color:var(--mute2);font:600 13px/1 Golos,system-ui,sans-serif;cursor:pointer;transition:color .35s var(--ease-out)}
  .qr-tab[aria-pressed="true"]{color:var(--inv-ink)}
  .qr-pill{position:absolute;top:3px;bottom:3px;left:0;width:var(--pw,0);translate:var(--px,0) 0;border-radius:999px;background:var(--inv);transition:translate .45s var(--ease-drawer),width .45s var(--ease-drawer)}
  html:not(.js) .qr-tabs{display:none}
  @media (hover:hover) and (pointer:fine){.qr-tab:not([aria-pressed="true"]):hover{color:var(--ink)}}
  .foot{flex-direction:row;flex-wrap:wrap;gap:8px 32px;padding:32px 0 48px;align-items:center}
  .fab{right:32px;bottom:32px;padding:0 26px}
}
/* узкая колонка (900–1099): наклейки встают столбиком — лесенкой, как на телефоне */
@media (min-width:900px) and (max-width:1099px){
  .pts{flex-direction:column;align-items:flex-start;gap:20px}
  .pts li:nth-child(2){--x:44px;--y:0}
  .pts li:nth-child(3){--x:14px;--y:0}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:1ms!important;animation-delay:0s!important;transition-duration:200ms!important;transition-delay:0s!important}
  .w>span,.h1 .w>span,.hero .card,.hero .card::after,.work.play .feed img,.tilt,.caret{animation:none!important}
  .js .rv:not(.in) .w>span{transform:none}
  .fab{transform:none;opacity:0;visibility:hidden;transition:opacity .2s,visibility 0s .2s}
  .fab.show{opacity:1;visibility:visible;transition:opacity .2s,visibility 0s}
  .js .work:not(.in) .phone,.js .ex-scene:not(.in) .ex-card,.js .car:not(.in) .track{transform:none}
  .slide-in,.slide .work-text,.ex-float,.ex-card::after,.hero .odo-s,.fab.show svg,.save.saved .ok,.scrap{animation:none!important}
  .js .ex-scene:not(.roll) .odo-s{transform:translateY(calc((20 + var(--d)) * -1.02em))}
  .js .hero:not(.roll) .split i::after{transform:none}
  .slide-in{opacity:1}
  .js .qr-block:not(.in) .qp,.js .qr-block:not(.in) .qe,.js .qr-block:not(.in) .ql{opacity:1;transform:none}
}
