/* V2 мини-приложения ЗАЛЕТАЙ - новый дизайн (холст 25.10). Светлая тема всегда (как v1): цвета Telegram не берём,
   тёмная тема Telegram вид не меняет. Отступ снизу у прокрутки считается от настоящей высоты кнопки + меню + safe-area
   (--padb ставит app.js), а не числом. Классы .empty и .zoom не используются (заняты в v1 - ARCHITECTURE gotchas). */
/* 1.226.8 (Юра: «шрифты нормально сделай… почему у нас везде разные размеры»): единая шкала v2, масштаб v1.
   6 ступеней: заголовок экрана 20 / заголовок блока 15 / основной 13 / вторичный 12 / подпись-метка 11 / кнопка 15; веса 600 / 700 / 800.
   Вне шкалы - не текст: цифры-витрины (счётчики, %, подарок), эмодзи-значки, глифы плиток стилей, нижнее меню (не меняем). */
:root{--fs-title:20px;--fs-head:15px;--fs-body:13px;--fs-sub:12px;--fs-cap:11px;--fs-btn:15px;--fw-reg:500;--fw-semi:700;--fw-bold:800;--bg:#E2E0E9;--ink:#16151A;--ink2:#4A4657;--ink3:#6E6A7C;--line:#EFEDF3;--soft:#F1EFF5;--card:#FFFFFF;--acc:#C2185B;
  --ok:#1E7A45;--bad:#B42318;--grad:linear-gradient(135deg,#FFA41B,#FF4F8B 55%,#A04BFF);--sh:0 2px 10px rgba(30,20,60,.06);
  --padb:160px;--navh:64px;--safe:env(safe-area-inset-bottom,0px);color-scheme:light}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:"Golos Text",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  -webkit-text-size-adjust:100%;text-size-adjust:100%}
body{min-height:100vh;overscroll-behavior-y:none}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer;touch-action:manipulation}
a{color:inherit}
#app{max-width:560px;margin:0 auto;position:relative;min-height:100vh}
.tap{transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,background-color .2s,color .2s,opacity .2s}
.tap:active{transform:scale(.97)}
.wait{opacity:.55;pointer-events:none;transition:opacity .15s}   /* 1.230.1: ждём данные ролика - экран не меняется, кнопка гаснет */
:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.boot{padding:40vh 16px 0;text-align:center;font-weight:500;color:var(--ink2)}
.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.hide{display:none!important}
.mut{color:var(--ink3)}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes sheetUp{from{transform:translateY(105%)}to{transform:none}}
@keyframes dimIn{from{opacity:0}to{opacity:1}}
@keyframes hop{0%,100%{transform:translateY(0)}30%{transform:translateY(-5px)}55%{transform:translateY(0)}70%{transform:translateY(-2px)}}
@keyframes glow{0%{box-shadow:0 0 0 0 rgba(255,79,139,.5)}100%{box-shadow:0 0 0 14px rgba(255,79,139,0)}}
@keyframes wpop{0%{opacity:0;transform:scale(.55)}55%{opacity:1;transform:scale(1.14)}100%{transform:scale(1)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes bellRing{0%,80%,100%{transform:rotate(0)}83%{transform:rotate(16deg)}86%{transform:rotate(-13deg)}89%{transform:rotate(9deg)}92%{transform:rotate(-5deg)}95%{transform:rotate(2deg)}}
@keyframes conf{0%{transform:translateY(-20px) rotate(0);opacity:1}100%{transform:translateY(105vh) rotate(540deg);opacity:.9}}
.fade{animation:fade .3s ease both}
.hop{animation:hop 1.6s .6s ease-in-out 3}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* шапка */
.hd{position:relative;z-index:20;display:flex;align-items:center;gap:8px;padding:10px 16px 8px;background:var(--bg)}
.logo{flex-shrink:0;width:36px;height:36px;border-radius:11px;border:0;background:var(--grad);display:grid;place-items:center}
.hd-t{flex:0 1 auto;min-width:0;font:800 var(--fs-head) "Golos Text",sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hd-r{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:1 1 auto;min-width:0}
.pill{height:44px;padding:0 14px;border-radius:999px;border:0;background:var(--card);font-size:var(--fs-body);font-weight:700;box-shadow:var(--sh);
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cart{flex-shrink:0;position:relative;width:44px;height:44px;border-radius:50%;border:0;background:var(--ink);display:grid;place-items:center}
.cart .tag{position:absolute;top:-4px;right:-6px;height:18px;padding:0 5px;border-radius:999px;background:var(--acc);color:#fff;font-size:var(--fs-cap);font-weight:700;display:flex;align-items:center}
.bell{flex-shrink:0;position:relative;width:44px;height:44px;border-radius:50%;border:0;background:var(--card);display:grid;place-items:center;box-shadow:var(--sh)}
.bell.ringing svg{transform-origin:50% 12%;animation:bellRing 4s 1s ease-in-out infinite}
.badge{position:absolute;top:-3px;right:-4px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;border:2px solid var(--bg);background:var(--acc);color:#fff;font:800 var(--fs-cap) "Golos Text",sans-serif;display:none;place-items:center;animation:wpop .5s .3s both}
.badge.on{display:grid}
@media (max-width:359px){.pill{padding:0 10px;font-size:var(--fs-sub)}.hd{gap:6px;padding:10px 12px 8px}.hd-r{gap:6px}}

/* прокрутка, закреплённые кнопка и меню - сплошная подложка цвета фона с короткой тенью */
#scr{padding:2px 16px var(--padb)}
.dock{position:fixed;left:0;right:0;bottom:calc(var(--navh) + var(--safe));z-index:15;max-width:560px;margin:0 auto;padding:10px 16px;background:var(--bg);
  box-shadow:0 -10px 18px -12px rgba(30,20,60,.35);display:flex;flex-direction:column;gap:8px}
.dock:empty{display:none}
body.nonav .dock{bottom:0;padding-bottom:calc(10px + var(--safe))}
.nav{position:fixed;left:0;right:0;bottom:0;z-index:16;max-width:560px;margin:0 auto;height:calc(var(--navh) + var(--safe));padding:4px 4px var(--safe);background:var(--card);
  border-top:1px solid #E6E3EC;display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
.nav button{border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink3);font-size:10.5px;letter-spacing:-.2px;font-weight:700;min-width:0;padding:0 1px;
  overflow:hidden;white-space:nowrap}
.nav button span.l{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.nav button.on{color:var(--ink);font-weight:700}
.nav button.on:not(.nav-main) svg{color:var(--acc)}
.nav .nav-main{justify-content:flex-end}
.nav .fab{width:52px;height:52px;margin-top:-20px;border-radius:18px;background:var(--grad);display:grid;place-items:center;box-shadow:0 8px 18px rgba(255,79,139,.4)}
body.nonav .nav{display:none}
body.typing .nav,body.typing .dock{display:none}
@media (max-width:359px){.nav button{font-size:9.5px;letter-spacing:-.3px}}

/* общие блоки */
.h1{margin:6px 0 4px;font:800 var(--fs-title)/1.2 "Golos Text",sans-serif;overflow-wrap:anywhere;min-width:0}
.lead-p{margin:0 0 12px;font-size:var(--fs-body);line-height:1.45;color:var(--ink2);font-weight:500}
.card{background:var(--card);border-radius:22px;padding:16px 14px;box-shadow:var(--sh)}
.sec{margin-top:12px}
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px}
.sec-h h2{margin:0;font-size:var(--fs-head);line-height:1.25;font-weight:800;min-width:0}
.sec-h .aside{display:flex;align-items:center;gap:6px;font-size:var(--fs-sub);color:var(--ink2);font-weight:500;flex-shrink:0}
.lbl{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--fs-body);line-height:1.3;font-weight:500;color:var(--ink2)}
.hint{margin:2px 0 8px;font-size:var(--fs-sub);line-height:1.35;color:var(--ink3);font-weight:500}
.note{margin:8px 0 0;font-size:var(--fs-sub);line-height:1.35;color:var(--acc);font-weight:500}
.q{flex-shrink:0;width:44px;height:44px;margin:-12px -12px -12px 0;border:0;background:none;display:grid;place-items:center}
.q span{width:24px;height:24px;border-radius:50%;background:var(--soft);color:var(--ink2);font:700 var(--fs-body) "Golos Text",sans-serif;display:grid;place-items:center}
.btn{width:100%;min-height:54px;border-radius:18px;border:0;background:var(--ink);color:#fff;font:700 var(--fs-head) "Golos Text",sans-serif;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:6px 14px;text-align:center;text-decoration:none}
.btn small{font-size:var(--fs-sub);font-weight:500;color:#CFCBD9}
.btn.big{min-height:60px;border-radius:20px;box-shadow:0 12px 26px rgba(22,21,26,.28)}
.btn.light{background:var(--card);color:var(--ink);box-shadow:var(--sh)}
.btn.soft{background:var(--soft);color:var(--ink);box-shadow:none}
.btn.danger{background:#FFF1F2;color:var(--bad)}
.btn:disabled,.btn[aria-disabled=true]{background:var(--soft);color:var(--ink3);box-shadow:none}
.btn .row{display:flex;align-items:center;gap:12px;max-width:100%;min-width:0}
.btn .row>span:last-child{min-width:0;overflow-wrap:anywhere;text-align:left}
.gico{width:34px;height:34px;border-radius:11px;background:var(--grad);display:grid;place-items:center;flex-shrink:0}
.chip{max-width:100%;min-height:40px;padding:0 12px;border-radius:12px;border:0;background:var(--soft);font:700 var(--fs-body) "Golos Text",sans-serif;color:var(--ink);flex-shrink:0;display:inline-flex;align-items:center;gap:6px}
.chip.dark{background:var(--ink);color:#fff}
.chip.red{background:#FFF1F2;color:var(--bad)}
.chip.wide{width:100%;margin-top:8px;white-space:normal;text-align:left;padding:8px 14px}   /* 1.234.5: «Выбрать из галереи» и «Вставить своё видео» */
.row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.list{background:var(--card);border-radius:22px;padding:4px 14px;box-shadow:var(--sh)}
.li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);min-height:44px}
.li:last-child{border-bottom:0}
.li .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.li b{font-size:var(--fs-body);line-height:1.3}
.li .sub{font-size:var(--fs-sub);line-height:1.35;color:var(--ink3);font-weight:500}
.li .val{flex-shrink:0;font-size:var(--fs-body);font-weight:800}
.skel{background:linear-gradient(90deg,#ECEAF1 0,#F6F5F9 40%,#ECEAF1 80%);background-size:300% 100%;animation:sk 1.4s linear infinite}
@keyframes sk{to{background-position:-200% 0}}
.spin{width:18px;height:18px;border-radius:50%;border:2.5px solid #D5D1DF;border-top-color:var(--acc);animation:spin .8s linear infinite;flex-shrink:0}
.err-line{display:flex;gap:8px;align-items:flex-start;padding:12px;border-radius:14px;background:#FFF1F2;color:var(--bad);font-size:var(--fs-body);font-weight:500;line-height:1.4}

/* сегменты с бегунком */
.seg{position:relative;display:grid;padding:4px;border-radius:14px;background:var(--soft)}
.seg .thumb{position:absolute;top:4px;bottom:4px;left:4px;border-radius:10px;background:var(--ink);box-shadow:0 2px 8px rgba(22,21,26,.2);transition:transform .38s cubic-bezier(.34,1.45,.64,1)}
.seg button{position:relative;z-index:1;min-height:40px;border:0;border-radius:10px;background:transparent;font:700 var(--fs-body) "Golos Text",sans-serif;color:var(--ink2);padding:0 4px;
  display:flex;align-items:center;justify-content:center;gap:3px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .2s}
.seg button.on{color:#fff}
.seg button.off{opacity:.42}
.seg.dark{background:#2A2830}.seg.dark button{color:#CFCBD9}.seg.dark button.on{color:var(--ink)}.seg.dark .thumb{background:#fff}
@media (max-width:359px){.seg button{font-size:var(--fs-sub)}}

/* переключатель */
.sw{flex-shrink:0;width:52px;height:32px;border-radius:999px;border:0;padding:3px;background:#D5D1DF;display:flex;transition:background-color .25s}
.sw i{width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.2);transition:transform .32s cubic-bezier(.34,1.56,.64,1)}
.sw.on{background:var(--ink)}.sw.on i{transform:translateX(20px)}

/* шаги монтажа */
.step{display:flex;align-items:center;gap:10px;margin:22px 0 8px}
.step:first-child{margin-top:4px}
.step .n{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--ink);color:#fff;font:800 var(--fs-body) "Golos Text",sans-serif;display:grid;place-items:center;transition:background-color .3s}
.step .n.dim{background:#8C889B}.step .n.acc{background:var(--acc)}
.step h2{margin:0;flex:1;font-size:var(--fs-head);line-height:1.25;font-weight:800;min-width:0}
.drop{width:100%;min-height:132px;border-radius:22px;border:2px dashed #8C889B;background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:14px;text-align:center}
.drop.glow{animation:glow 1.2s ease-out 2}
.drop .up{width:52px;height:52px;border-radius:16px;background:var(--ink);display:grid;place-items:center}
.drop b{font-size:var(--fs-head)}.drop span{font-size:var(--fs-sub);color:var(--ink3);font-weight:500}
.vcard{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:18px;padding:8px 8px 8px 10px;box-shadow:var(--sh)}
.vcard .th{position:relative;overflow:hidden;width:40px;height:56px;border-radius:10px;background:#2A2531;flex-shrink:0}
.vcard .th img,.vcard .th video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vcard .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.vcard b{font-size:var(--fs-body)}.vcard .s{font-size:var(--fs-sub);color:var(--ink3);font-weight:500}.vcard .s.ok{color:var(--ok);font-weight:500}
.upbox{background:var(--card);border-radius:22px;padding:12px;box-shadow:var(--sh);display:flex;flex-direction:column;gap:8px}
.bar{height:8px;border-radius:4px;background:#EFEDF3;overflow:hidden}
.bar i{display:block;height:100%;width:0;border-radius:4px;background:var(--grad);transition:width .2s linear}
.dim2{transition:opacity .4s}
.dim2.off{opacity:.45}

/* образец + панель справа */
.pvrow{display:flex;justify-content:center;align-items:flex-start;gap:10px;--pvw:min(240px,calc(100vw - 32px - 66px))}
.pv{position:relative;flex-shrink:0;width:var(--pvw);height:calc(var(--pvw) * 1.5);border-radius:26px;overflow:hidden;background:#241F2D url(img/bg2.jpg) center/cover;box-shadow:0 18px 40px rgba(30,20,60,.28)}
.pv>img.main{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .2s}
.pv.busy>img.main{opacity:.75}
.pv .ld{position:absolute;left:50%;top:50%;margin:-14px 0 0 -14px;width:28px;height:28px;border-width:3px;display:none}
.pv.busy .ld{display:block}
.pv .tags{position:absolute;top:10px;left:10px;right:10px;display:flex;justify-content:space-between;gap:6px;pointer-events:none}
.pv .tags span,.pv .chips span{font-size:var(--fs-cap);font-weight:500;color:#fff;background:rgba(0,0,0,.5);padding:6px 10px;border-radius:999px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.pv .chips{position:absolute;top:42px;left:10px;right:10px;display:flex;flex-wrap:wrap;gap:4px;pointer-events:none}
.pv .chips span{color:var(--ink);background:rgba(255,255,255,.88);padding:4px 8px;font-size:var(--fs-cap);animation:fade .3s ease both}
.pv .play{position:absolute;right:10px;bottom:10px;width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.92);display:grid;place-items:center;z-index:3}
.pv .play.busy svg{animation:spin .9s linear infinite}
.pv .views{position:absolute;left:10px;bottom:12px;display:flex;gap:4px;z-index:3}
.pv .views button{min-height:30px;padding:0 9px;border-radius:999px;border:0;background:rgba(0,0,0,.5);color:#fff;font-size:var(--fs-cap);font-weight:700}
.pv .views button.on{background:#fff;color:var(--ink)}
.pv video.clip{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .2s;z-index:2}
.pv video.clip.on{opacity:1}
.pv .tlabel{position:absolute;left:50%;transform:translateX(-50%);bottom:56px;font-size:var(--fs-cap);font-weight:500;color:#fff;background:rgba(0,0,0,.5);padding:4px 8px;border-radius:999px;white-space:nowrap}
.rail{display:grid;grid-template-columns:repeat(var(--rcols,1),52px);grid-template-rows:repeat(var(--rrows,7),1fr);grid-auto-flow:row;height:calc(var(--pvw) * 1.5);gap:2px;flex-shrink:0}
.rail button,.rail a{border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:var(--ink);min-height:0}
.rail .c{--d:min(46px,calc(var(--pvw) * 1.5 / var(--rrows,7) - 18px));position:relative;width:var(--d);height:var(--d);border-radius:50%;border:2.5px solid transparent;background:rgba(255,255,255,.55);
  display:grid;place-items:center;font-size:calc(var(--d) * .44);line-height:1;filter:grayscale(1);opacity:.6;transform:scale(.9);transition:transform .4s cubic-bezier(.34,1.8,.64,1),opacity .25s,filter .25s}
.rail .on .c{background:linear-gradient(#fff,#fff) padding-box,var(--grad) border-box;filter:none;opacity:1;transform:none;box-shadow:0 6px 14px rgba(255,79,139,.28)}
.rail .on .c::after{content:"";position:absolute;right:-4px;top:-4px;width:16px;height:16px;border-radius:50%;background:var(--ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/9px no-repeat;border:2px solid var(--bg);animation:wpop .4s both}
.rail .more .c{background:var(--ink);color:#fff;filter:none;opacity:1;transform:none;font-weight:800}
.rail .t{font-size:var(--fs-cap);font-weight:700;color:var(--ink2);white-space:nowrap}
.rail .on .t{color:var(--ink)}
.pv-tip{margin:8px 2px 0;font-size:var(--fs-sub);line-height:1.4;color:var(--ink2);font-weight:500}

/* стили, цвета */
.hs{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:4px 16px 6px;scroll-snap-type:x proximity}
.hs::-webkit-scrollbar{display:none}
.sty{flex-shrink:0;width:84px;border:0;padding:0;background:none;display:flex;flex-direction:column;align-items:center;gap:6px;scroll-snap-align:start}
.sty .box{width:84px;height:100px;border-radius:18px;background:#241F2D;display:flex;align-items:center;justify-content:center;box-shadow:var(--sh);transition:box-shadow .25s}
.sty .box span{font-size:24px;line-height:1;color:#fff;border-radius:3px}
.sty.on .box{box-shadow:0 0 0 3px var(--bg),0 0 0 5px #FF4F8B}
.sty .nm{font-size:var(--fs-sub);font-weight:500}
.sty.on .nm{font-weight:800}
.cols{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));transition:opacity .25s}
.cols button{height:44px;border:0;background:none;padding:0;display:grid;place-items:center}
.cols i{width:30px;height:30px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.14);transition:box-shadow .2s}
.cols .on i{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--ink)}
@media (max-width:359px){.cols i{width:26px;height:26px}}
.pname{font-size:var(--fs-sub);font-weight:500;margin-top:2px}
.set-card{display:flex;flex-direction:column;gap:18px}
.field{width:100%;min-height:48px;border-radius:14px;border:1.5px solid #D5D1DF;background:#fff;padding:12px 14px;font:500 var(--fs-head) "Golos Text",sans-serif;color:var(--ink)}
textarea.field{resize:none;line-height:1.35}
.field:focus{border-color:var(--ink);outline:none}
.trow{display:flex;align-items:center;justify-content:space-between;margin-top:10px;min-height:44px;gap:10px;font-size:var(--fs-body);font-weight:500}
.opt{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);transition:opacity .25s}
.opt:last-child{border-bottom:0}
.opt.blk{opacity:.55}
.opt .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.opt .nm{display:flex;align-items:center;gap:4px}
.opt .nm b{font-size:var(--fs-body);line-height:1.3}
.opt .q{margin:-12px 0}
.opt .q span{width:22px;height:22px;font-size:12px}
.opt .h{font-size:var(--fs-sub);line-height:1.35;color:var(--ink3);font-weight:500}
.cyc{flex-shrink:0;max-width:150px;min-height:44px;padding:0 12px;border-radius:14px;border:0;background:var(--soft);font:700 var(--fs-sub) "Golos Text",sans-serif;display:flex;align-items:center;gap:4px;text-align:left}
.needcut{flex-shrink:0;font-size:var(--fs-sub);font-weight:500;color:var(--ink3)}
.presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.preset{height:52px;border-radius:16px;border:0;background:#fff;display:flex;align-items:center;gap:8px;padding:0 10px;box-shadow:var(--sh);min-width:0;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.preset .pn{width:24px;height:24px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-size:var(--fs-sub);font-weight:800;background:var(--soft)}
.preset .pt{font-size:var(--fs-sub);font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.preset.emp{background:transparent;border:1.5px dashed #8C889B;box-shadow:none;color:var(--ink2)}
.preset.on{box-shadow:0 0 0 2px var(--ink)}
.preset.target{box-shadow:0 0 0 2px var(--acc)}
.pbtn{grid-column:1/-1;height:44px;padding:0 12px;border-radius:16px;border:0;background:#fff;color:var(--ink);box-shadow:var(--sh);font:700 var(--fs-sub) "Golos Text",sans-serif}

.upsell{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 8px 6px 12px;border-radius:16px;background:#fff;border:0;box-shadow:var(--sh);text-align:left;width:100%}
.upsell i{width:8px;height:8px;border-radius:50%;background:var(--acc);flex-shrink:0}
.upsell span{flex:1;min-width:0;font-size:var(--fs-body);line-height:1.3;font-weight:500}
.upsell em{font-style:normal;height:32px;padding:0 10px;border-radius:10px;background:var(--soft);display:flex;align-items:center;font-size:var(--fs-sub);font-weight:800;flex-shrink:0}
.cta-busy{position:relative;min-height:60px;border-radius:20px;overflow:hidden;background:var(--ink2);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px}
.cta-busy i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--ink);transition:width .2s linear}
.cta-busy b,.cta-busy small{position:relative}.cta-busy b{font-size:var(--fs-head)}.cta-busy small{font-size:var(--fs-sub);font-weight:500;color:#E6E3EC}

/* шторки */
.sh{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;justify-content:flex-end}
.sh .dimbg{position:absolute;inset:0;border:0;padding:0;background:rgba(22,21,26,.5);animation:dimIn .25s ease both}
.sh .card2{position:relative;max-width:560px;width:100%;margin:0 auto;background:#fff;border-radius:28px 28px 0 0;padding:10px 18px calc(18px + var(--safe));display:flex;flex-direction:column;gap:12px;
  box-shadow:0 -12px 40px rgba(0,0,0,.25);animation:sheetUp .45s cubic-bezier(.22,1.25,.36,1) both;max-height:88vh;max-height:88dvh}
.sh .grab{display:flex;justify-content:center}.sh .grab span{width:40px;height:5px;border-radius:3px;background:#D5D1DF}
.sh .top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sh h3{margin:0;font:800 var(--fs-title)/1.2 "Golos Text",sans-serif;min-width:0;overflow-wrap:anywhere}
.x{flex-shrink:0;width:44px;height:44px;border-radius:50%;border:0;background:var(--soft);display:grid;place-items:center}
.sh .body{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;min-height:0;flex:1 1 auto}
.sh .body p,.sh .txt{margin:0;font-size:var(--fs-head);line-height:1.5;font-weight:500;white-space:pre-line;overflow-wrap:anywhere}
.sh .foot{flex-shrink:0;display:flex;flex-direction:column;gap:8px}
.help-pic{display:block;width:100%;border-radius:14px;margin-top:10px}
.zoomer{position:fixed;inset:0;z-index:45;background:rgba(10,8,14,.92);display:grid;place-items:center;animation:dimIn .2s both}
.zoomer img{max-width:94vw;max-height:90vh;border-radius:18px}

/* музыка */
.trk{display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:14px;min-height:56px}
.trk.on{background:#F6F4F9}
.trk .pl{flex-shrink:0;width:44px;height:44px;border-radius:12px;border:0;background:var(--ink);color:#fff;display:grid;place-items:center}
.trk .pl.on{background:var(--acc)}
.trk .grow{flex:1;min-width:0;display:flex;flex-direction:column}
.trk b{font-size:var(--fs-body)}.trk .grow span{font-size:var(--fs-sub);color:var(--ink3);font-weight:500}
.trk .pick{flex-shrink:0;min-height:40px;padding:0 14px;border-radius:12px;border:1.5px solid #D5D1DF;background:#fff;font:700 var(--fs-body) "Golos Text",sans-serif}
.trk .pick.on{background:var(--ink);border-color:var(--ink);color:#fff}
.eq{display:flex;gap:2px;align-items:flex-end;height:16px}.eq i{width:3px;background:#fff;border-radius:2px;animation:eq .8s ease-in-out infinite alternate}
.eq i:nth-child(2){animation-delay:.2s}.eq i:nth-child(3){animation-delay:.4s}
@keyframes eq{from{height:4px}to{height:16px}}

/* монтирую */
.ring{position:relative;width:180px;height:180px;margin:10px auto 0}
.ring svg{position:absolute;inset:0;transform:rotate(-90deg)}
.ring .in{position:absolute;inset:14px;border-radius:50%;overflow:hidden;background:#241F2D url(img/bg2.jpg) center/cover;display:grid;place-items:center}
.ring .pc{font:800 30px "Golos Text",sans-serif;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5)}
.stages{margin-top:14px}
.stg{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:var(--fs-body);font-weight:500;color:var(--ink3);min-height:44px}
.stg:last-child{border-bottom:0}
.stg .d{flex-shrink:0;width:22px;height:22px;border-radius:50%;border:2px solid #D5D1DF}
.stg.ok{color:var(--ink)}.stg.ok .d{border:0;background:var(--ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/12px no-repeat}
.stg.now{color:var(--ink);font-weight:800}.stg.now .d{border-color:var(--acc);border-top-color:transparent;animation:spin .9s linear infinite}
.stg .now-t{margin-left:auto;font-size:var(--fs-cap);font-weight:800;color:var(--acc)}
.center{text-align:center}
.big-h{margin:14px 0 4px;font:800 var(--fs-title)/1.2 "Golos Text",sans-serif;text-align:center;overflow-wrap:anywhere}
.big-p{margin:0;text-align:center;font-size:var(--fs-body);color:var(--ink2);font-weight:500;line-height:1.4}
.info{display:flex;gap:12px;align-items:center;margin-top:12px;padding:12px 14px;border-radius:18px;background:#fff;box-shadow:var(--sh)}
.info .ic{flex-shrink:0;width:40px;height:40px;border-radius:12px;background:var(--soft);display:grid;place-items:center;font-size:20px}
.info .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.info b{font-size:var(--fs-body)}.info span{font-size:var(--fs-sub);color:var(--ink3);font-weight:500;line-height:1.35}
.back{display:flex;align-items:center;gap:8px;margin:2px 0 8px}
.back .bk{flex-shrink:0;width:44px;height:44px;border-radius:50%;border:0;background:#fff;display:grid;place-items:center;box-shadow:var(--sh)}
.back .t{flex:1;min-width:0;font:800 var(--fs-body) "Golos Text",sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.back .tag{flex-shrink:0;font-size:var(--fs-sub);font-weight:700;color:var(--ink2);background:#fff;border-radius:999px;padding:6px 10px}

/* ролик готов, редактор */
.player{position:relative;margin:10px auto 0;width:min(100%,calc(46vh * 9 / 16 + 0px));width:min(100%,calc(46dvh * 9 / 16));border-radius:24px;overflow:hidden;background:#17131D}
.player .vb{position:relative;width:100%;padding-top:177.78%}
.player video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#17131D}
.player .dur{position:absolute;right:10px;top:10px;font-size:var(--fs-cap);font-weight:500;color:#fff;background:rgba(0,0,0,.5);padding:5px 9px;border-radius:999px;z-index:2}
.player .tagl{position:absolute;left:10px;top:10px;font-size:var(--fs-cap);font-weight:500;color:#fff;background:rgba(0,0,0,.5);padding:5px 9px;border-radius:999px;z-index:2}
.stat2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.stat2>div{background:#fff;border-radius:18px;padding:12px;box-shadow:var(--sh);min-width:0}
.stat2 .k{font-size:var(--fs-sub);color:var(--ink3);font-weight:500}.stat2 .v{font:800 var(--fs-title) "Golos Text",sans-serif;margin-top:4px;overflow-wrap:anywhere}
.acts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}
.act{min-height:76px;border-radius:18px;border:0;background:#fff;box-shadow:var(--sh);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font:700 var(--fs-body) "Golos Text",sans-serif;padding:8px 4px;text-align:center;text-decoration:none;color:var(--ink)}
.act small{font-size:var(--fs-cap);font-weight:500;color:var(--ink3)}
.act .e{font-size:20px}
.ai-note{margin:10px 2px 0;font-size:var(--fs-sub);line-height:1.4;color:var(--ink2);font-weight:500}
.linkbtn{margin-top:4px;min-height:44px;padding:0 2px;border:0;background:none;font:700 var(--fs-body) "Golos Text",sans-serif;color:var(--acc);display:flex;align-items:center;gap:6px}
.packs3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.packs3 button{border:0;border-radius:16px;background:var(--soft);padding:10px 4px;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}
.packs3 b{font:800 var(--fs-title) "Golos Text",sans-serif}.packs3 span{font-size:var(--fs-sub);font-weight:500}.packs3 small{font-size:var(--fs-cap);color:var(--ink3);font-weight:500}
.invite-card{position:relative;margin-top:12px;padding:16px 14px;border-radius:22px;background:var(--ink);color:#fff;overflow:hidden}
.invite-card b{font:800 var(--fs-body)/1.25 "Golos Text",sans-serif}.invite-card p{margin:6px 0 10px;font-size:var(--fs-body);line-height:1.4;color:#E6E3EC;font-weight:500}
.invite-card .chip{background:rgba(255,255,255,.16);color:#fff;min-height:44px;border-radius:999px;padding:0 16px}
.confetti{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden}
.confetti i{position:absolute;top:-20px;animation:conf 2.2s cubic-bezier(.3,.6,.5,1) both}

/* мои ролики */
.tabs3{margin:6px 0 12px}
.rolls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.roll{border:0;background:none;padding:0;text-align:left;display:flex;flex-direction:column;gap:6px;min-width:0;text-decoration:none;color:var(--ink)}
.roll .pic{position:relative;width:100%;padding-top:150%;border-radius:18px;overflow:hidden;background:#2A2531 url(img/bg2.jpg) center/cover}
.roll .pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.roll .dur{position:absolute;right:8px;top:8px;font-size:var(--fs-cap);font-weight:500;color:#fff;background:rgba(0,0,0,.55);padding:4px 8px;border-radius:999px}
.roll .cta{position:absolute;left:8px;right:8px;bottom:8px;min-height:36px;border-radius:12px;background:rgba(255,255,255,.94);display:flex;align-items:center;justify-content:center;font-size:var(--fs-sub);font-weight:700}
.roll b{font-size:var(--fs-body)}.roll .m{font-size:var(--fs-sub);color:var(--ink2);font-weight:500}
.roll .m.warn{color:var(--acc)}
.work{display:flex;align-items:center;gap:12px;background:#fff;border-radius:18px;padding:10px 12px;box-shadow:var(--sh);margin-bottom:12px;border:0;width:100%;text-align:left}
.work .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.work b{font-size:var(--fs-body)}.work .s{font-size:var(--fs-sub);color:var(--ink3);font-weight:500}
.keep{margin:0 0 12px;font-size:var(--fs-body);line-height:1.4;color:var(--ink2);font-weight:500}
.emptyst{text-align:center;padding:24px 8px}
.emptyst .art{position:relative;width:150px;height:170px;margin:0 auto 6px}
.emptyst .art span{position:absolute;width:90px;height:140px;border-radius:16px;background:#2A2531 url(img/bg2.jpg) center/cover;box-shadow:0 10px 24px rgba(30,20,60,.2)}
.emptyst .art span:nth-child(1){left:6px;top:20px;transform:rotate(-9deg);opacity:.7}
.emptyst .art span:nth-child(2){right:6px;top:20px;transform:rotate(8deg);opacity:.85}
.emptyst .art span:nth-child(3){left:30px;top:6px;display:grid;place-items:center}
.emptyst h2{margin:8px 0 6px;font:800 var(--fs-head)/1.25 "Golos Text",sans-serif}
.emptyst p{margin:0 0 14px;font-size:var(--fs-body);line-height:1.45;color:var(--ink2);font-weight:500}

.ed-top{position:sticky;top:var(--tgtop,0px);z-index:10;background:var(--bg);padding-bottom:6px}
body.typing .ed-top{position:static}
.ed-v{position:relative;margin:0 auto;width:calc(30vh * 9 / 16);width:calc(30dvh * 9 / 16);max-width:100%;border-radius:20px;overflow:hidden;background:#17131D}
.ed-v .vb{position:relative;padding-top:177.78%}
.ed-v video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ed-v .gone{position:absolute;inset:0;display:grid;place-items:center;background:repeating-linear-gradient(135deg,rgba(58,56,66,.85) 0 8px,rgba(42,40,48,.85) 8px 16px);color:#fff;font-weight:800;font-size:var(--fs-body);z-index:3}
.ph-ov{position:absolute;inset:0;pointer-events:none;display:none;z-index:2}
.ph-ov.on{display:block}
.ph-ov img.full{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ph-ov img.pcard{position:absolute;transform:translate(-50%,-50%);box-shadow:0 6px 16px rgba(0,0,0,.35)}
.ov-note{position:absolute;left:8px;right:8px;bottom:8px;font-size:var(--fs-cap);font-weight:500;color:#fff;background:rgba(0,0,0,.6);padding:6px 8px;border-radius:10px;display:none;z-index:4}
.ov-note.on{display:block}
.frs{margin-top:8px}
.frs .hd2{display:flex;justify-content:space-between;gap:8px;font-size:var(--fs-sub);font-weight:500;color:var(--ink2);margin-bottom:6px}
.strip{display:flex;align-items:center;gap:4px;overflow-x:auto;scrollbar-width:none;padding:3px 2px;scroll-snap-type:x proximity}
.strip::-webkit-scrollbar{display:none}
.fr{flex-shrink:0;min-width:52px;height:44px;padding:0 8px;border-radius:12px;border:2px solid transparent;background:#5A4E66;color:#fff;font:500 var(--fs-sub) "Golos Text",sans-serif;scroll-snap-align:center;position:relative}
.fr:nth-child(4n+1){background:#4E5A66}.fr:nth-child(4n+2){background:#665A4E}.fr:nth-child(4n+3){background:#5E4E66}
.fr.on{border-color:var(--ink);box-shadow:0 0 0 2px #fff inset}
.fr.play{outline:2px solid var(--acc);outline-offset:1px}
.fr.gone{background:repeating-linear-gradient(135deg,#3A3842 0 6px,#2A2830 6px 12px)!important;opacity:.55}
.fr .dot{position:absolute;right:3px;top:3px;width:7px;height:7px;border-radius:50%}
.fr .dot.br{background:#A04BFF}.fr .dot.ph{background:#FF4F8B}
.cutm{flex-shrink:0;width:3px;height:30px;border-radius:2px;background:var(--acc)}
.legend{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px;font-size:var(--fs-cap);font-weight:500;color:var(--ink2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.etabs{margin:10px 0}
.ebox{background:#fff;border-radius:22px;padding:14px;box-shadow:var(--sh);display:flex;flex-direction:column;gap:10px}
.ebox .hh{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ebox .hh b{font-size:var(--fs-body)}.ebox .hh span{font-size:var(--fs-sub);color:var(--ink3);font-weight:500}
.ebox p{margin:0;font-size:var(--fs-body);line-height:1.45;color:var(--ink2);font-weight:500}
.words{display:flex;flex-wrap:wrap;gap:6px}
.wd{min-height:40px;padding:0 12px;border-radius:12px;border:1.5px solid #E6E3EC;background:#fff;font:500 var(--fs-body) "Golos Text",sans-serif;max-width:100%;overflow-wrap:anywhere}
.wd.on{border:2px solid var(--ink)}
.wd.fix{background:#FFF4D6}
.wd.cut{text-decoration:line-through;color:var(--ink3)}
.ask{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:14px;background:#FFF1F2;font-size:var(--fs-body);font-weight:500;color:var(--bad);line-height:1.4}
.ph-row{display:flex;align-items:center;gap:10px;padding:8px;border-radius:14px;background:var(--soft)}
.ph-row img{width:48px;height:64px;border-radius:10px;object-fit:cover;flex-shrink:0;background:#ddd}
.ph-row img.pcard{object-fit:contain;background:#2A2830}
.ph-row .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.ph-row .seg button{min-height:34px;font-size:var(--fs-sub)}
.balt{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:6px}
.balt-it{padding:0;border:3px solid transparent;border-radius:12px;background:#ddd;overflow:hidden;aspect-ratio:9/16}
.balt-it img{width:100%;height:100%;object-fit:cover;display:block}
.balt-it.on{border-color:var(--acc)}
.balt-msg{margin:8px 0 0}
.balt-own{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:var(--soft);border-style:dashed;border-color:#D5D1DF;font:700 var(--fs-sub)/1.2 "Golos Text",sans-serif;color:var(--ink);text-align:center}
.balt-own span{font-size:26px}
.bown video{width:100%;max-height:46vh;border-radius:16px;background:#000;object-fit:contain;display:block}
.bown-t{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:var(--fs-body)}
.bown-strip{position:relative;height:64px;margin-top:8px;border-radius:12px;background:#2A2830 center/100% 100% no-repeat;touch-action:none;overflow:hidden;cursor:grab}
.bown-fr{position:absolute;inset:0;display:flex}.bown-fr canvas{flex:1 1 0;min-width:0;height:100%;object-fit:cover;display:block}
.bown-win{position:absolute;top:0;bottom:0;border:3px solid var(--acc);border-radius:10px;box-shadow:0 0 0 999px rgba(22,21,26,.55);box-sizing:border-box;pointer-events:none}
.bown-bar{height:8px;border-radius:4px;background:var(--soft);overflow:hidden;margin-top:10px}
.bown-bar i{display:block;height:100%;width:0;background:var(--acc);transition:width .2s}
.mini-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mini-cell{position:relative;width:56px;height:56px;border-radius:10px;overflow:hidden;background:#eee}
.mini-cell img{width:100%;height:100%;object-fit:cover}
.mini-cell.off{opacity:.4}
.mini-cell button{position:absolute;right:2px;top:2px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:var(--fs-sub);display:grid;place-items:center}
.mini-add{width:56px;height:56px;border-radius:10px;border:1.5px dashed #8C889B;background:none;font-size:22px}
.save-sub{font-size:var(--fs-sub);font-weight:500;color:#CFCBD9}

/* место и размер картинки */
.place{position:fixed;inset:0;z-index:46;background:rgba(10,8,14,.92);display:flex;align-items:center;justify-content:center;padding:12px}
.place .pc{width:min(100%,420px);background:#fff;border-radius:24px;padding:14px;display:flex;flex-direction:column;gap:10px;max-height:96vh;overflow:auto}
.place h4{margin:0;font:800 var(--fs-head) "Golos Text",sans-serif}
.pl-frame{position:relative;width:min(100%,calc(58vh * 9 / 16));aspect-ratio:9/16;margin:0 auto;border-radius:16px;overflow:hidden;background:#17131D;touch-action:none}
.pl-frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pl-band{position:absolute;left:0;right:0;background:rgba(255,255,255,.14);border:1px dashed rgba(255,255,255,.6);color:#fff;font-size:var(--fs-cap);font-weight:500;display:flex;align-items:flex-start;justify-content:flex-end;padding:2px 6px}
.pl-band.hit{background:rgba(255,79,139,.25);border-color:#FF4F8B}
.pl-guide{position:absolute;background:#FF4F8B;display:none}.pl-guide.on{display:block}
.pl-guide.v{left:50%;top:0;bottom:0;width:1px}.pl-guide.h{top:50%;left:0;right:0;height:1px}
.pl-img,.pl-mate{position:absolute;user-select:none;-webkit-user-drag:none;border-radius:6px}
.pl-mate{opacity:.55;pointer-events:none}
.pl-note{margin:0;font-size:var(--fs-sub);font-weight:500;color:var(--ink2)}
.pl-size{display:flex;align-items:center;gap:10px;font-size:var(--fs-body);font-weight:500}
.pl-size input{flex:1}

/* уникализация */
.fan{position:relative;height:190px;margin:4px 0 6px}
.fan span{position:absolute;left:50%;top:10px;width:100px;height:160px;margin-left:-50px;border-radius:16px;overflow:hidden;background:#2A2531 url(img/bg2.jpg) center/cover;
  box-shadow:0 10px 24px rgba(30,20,60,.25);transition:transform .6s cubic-bezier(.34,1.3,.64,1)}
.fan span em{position:absolute;left:6px;right:6px;bottom:6px;font-style:normal;font-size:var(--fs-cap);font-weight:800;color:#fff;background:rgba(0,0,0,.55);border-radius:8px;padding:3px 4px;text-align:center}
.kicker{font:800 var(--fs-sub) "Golos Text",sans-serif;color:var(--acc);letter-spacing:.3px}
.badge-free{display:flex;align-items:center;gap:8px;margin-top:8px;padding:10px 12px;border-radius:14px;background:#E9F6EE;color:var(--ok);font-size:var(--fs-body);font-weight:800}
.ul-up{width:100%;display:flex;align-items:center;gap:12px;padding:14px;border-radius:18px;border:2px dashed #8C889B;background:#fff;text-align:left}
.ul-up .ic{width:44px;height:44px;border-radius:14px;background:var(--ink);display:grid;place-items:center;flex-shrink:0}
.ul-up .grow{display:flex;flex-direction:column;gap:2px;min-width:0}.ul-up b{font-size:var(--fs-body)}.ul-up span{font-size:var(--fs-sub);color:var(--ink3);font-weight:500}
.or{display:flex;align-items:center;gap:8px;margin:12px 0 8px;font-size:var(--fs-body);font-weight:500;color:var(--ink2)}
.or::before,.or::after{content:"";flex:1;height:1px;background:#D5D1DF}
.linkrow{display:flex;gap:8px}
.linkrow .field{flex:1;min-width:0}
.warn{margin-top:8px;font-size:var(--fs-sub);line-height:1.4;color:var(--ink3);font-weight:500}
.why ul{margin:8px 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.why li{display:flex;gap:8px;font-size:var(--fs-body);line-height:1.4;font-weight:500}
.why li::before{content:"";flex-shrink:0;width:8px;height:8px;margin-top:5px;border-radius:50%;background:var(--grad)}
.why p{margin:0;font-size:var(--fs-sub);line-height:1.45;color:var(--ink2)}
.slots{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:10px}
.slots span{position:relative;padding-top:160%;border-radius:10px;overflow:hidden;background:#ECEAF1}
.slots span.ok{background:#2A2531 url(img/bg2.jpg) center/cover}
.slots em{position:absolute;left:0;right:0;bottom:4px;text-align:center;font-style:normal;font-size:var(--fs-cap);font-weight:800;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.slots span:not(.ok) em{color:var(--ink3);text-shadow:none}

/* баланс, пакеты */
.cnt2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cnt2>div{position:relative;overflow:hidden;border-radius:22px;padding:16px 14px;background:#fff;box-shadow:var(--sh);min-width:0}
.cnt2>div.g{background:var(--ink);color:#fff}
.cnt2 .n{font:800 30px "Golos Text",sans-serif;overflow-wrap:anywhere}
.cnt2 .k{font-size:var(--fs-sub);font-weight:500;color:var(--ink3)}.cnt2 .g .k{color:#CFCBD9}
.packs{display:flex;flex-direction:column;gap:8px}
.pack{position:relative;display:flex;align-items:center;gap:12px;width:100%;padding:14px;border-radius:18px;border:2px solid transparent;background:#fff;box-shadow:var(--sh);text-align:left;animation:fade .3s both}
.pack.on{border-color:var(--ink);box-shadow:0 8px 20px rgba(22,21,26,.1)}
.pack .rd{flex-shrink:0;width:22px;height:22px;border-radius:50%;border:2px solid #D5D1DF;transition:border .2s}
.pack.on .rd{border:7px solid var(--ink)}
.pack .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pack b{font-size:var(--fs-head)}.pack .grow span{font-size:var(--fs-sub);color:var(--ink3);font-weight:500}
.pack .pr{flex-shrink:0;text-align:right;display:flex;flex-direction:column;gap:2px}
.pack .pr b{font:800 var(--fs-head) "Golos Text",sans-serif;white-space:nowrap}.pack .pr span{font-size:var(--fs-cap);font-weight:500;color:var(--ink3);white-space:nowrap}
.pack .pr span.sv{color:var(--acc)}
.pack .hot{position:absolute;top:-10px;right:14px;height:22px;padding:0 9px;border-radius:999px;background:var(--grad);color:#fff;font-size:var(--fs-cap);font-weight:700;display:flex;align-items:center}
.ticks{margin:12px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.ticks li{display:flex;gap:8px;align-items:center;font-size:var(--fs-body);font-weight:500}
.ticks li::before{content:"✓";flex-shrink:0;width:22px;height:22px;border-radius:50%;background:#E9F6EE;color:var(--ok);font-weight:800;display:grid;place-items:center;font-size:var(--fs-sub)}
.refnote{margin-top:10px;display:flex;align-items:center;gap:10px;background:#fff;border-radius:16px;padding:6px 6px 6px 12px}
.refnote span{flex:1;font-size:var(--fs-sub);line-height:1.35;color:var(--ink2);font-weight:500}
.subl{display:flex;justify-content:center;gap:16px;margin-top:4px}
.subl a,.subl button{min-height:44px;display:flex;align-items:center;gap:6px;font-size:var(--fs-body);font-weight:700;color:var(--ink2);text-decoration:underline;border:0;background:none}
.err{padding:10px 12px;border-radius:12px;background:#FFF1F2;color:var(--bad);font-size:var(--fs-body);font-weight:500;margin:8px 0}

/* пригласить */
.inv-hero{position:relative;overflow:hidden;border-radius:24px;padding:18px 16px;background:var(--ink);color:#fff}
.inv-hero::before{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:var(--grad);opacity:.55;filter:blur(8px)}
.inv-hero h1{position:relative;margin:0;font:800 var(--fs-title)/1.25 "Golos Text",sans-serif;overflow-wrap:anywhere}
.inv-hero p{position:relative;margin:8px 0 0;font-size:var(--fs-body);line-height:1.45;color:#E6E3EC;font-weight:500}
.reflink{display:flex;align-items:center;gap:8px;background:#fff;border-radius:16px;padding:6px 6px 6px 12px;box-shadow:var(--sh)}
.reflink span{flex:1;min-width:0;font-size:var(--fs-body);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reflink .chip{min-height:44px}
.reflink .chip.ok{background:var(--ok);color:#fff}
.rtab{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:6px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:var(--fs-body)}
.rtab:last-of-type{border-bottom:0}
.rtab.h{font-size:var(--fs-cap);font-weight:500;color:var(--ink3);padding-top:0}
.rtab b{font-weight:800}
.bubble{margin-top:8px;padding:12px;border-radius:16px 16px 16px 4px;background:var(--soft);font-size:var(--fs-body);line-height:1.45;font-weight:500;overflow-wrap:anywhere}
.bubble span{display:block;margin-top:4px;color:#2B5BD7;font-weight:500}

/* уведомления */
.ntabs{margin:6px 0 12px}
.ncard{display:flex;gap:12px;width:100%;padding:12px;border-radius:18px;border:0;background:#fff;box-shadow:var(--sh);text-align:left;margin-bottom:8px;animation:fade .3s both}
.ncard.new{background:#FFFBFD}
.ncard .cv{flex-shrink:0;width:56px;height:56px;border-radius:14px;background:#2A2531 center/cover}
.ncard .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.ncard .meta{display:flex;align-items:center;gap:6px;font-size:var(--fs-cap);font-weight:500;color:var(--ink3)}
.ntag{padding:2px 7px;border-radius:999px;font-size:var(--fs-cap);font-weight:800}
.ntag.me{background:#FCE4EE;color:#8A1145}.ntag.news{background:#ECEEFF;color:#2B2F8F}
.ncard .dot{width:8px;height:8px;border-radius:50%;background:var(--acc);margin-left:auto}
.ncard b{font-size:var(--fs-body);line-height:1.3;overflow-wrap:anywhere}.ncard.new b{font-weight:800}
.ncard .tx{font-size:var(--fs-sub);color:var(--ink2);font-weight:500;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ncard .ac{align-self:flex-start;margin-top:4px;font-size:var(--fs-sub);font-weight:800;color:var(--acc)}
.ncov{width:100%;max-height:220px;object-fit:cover;border-radius:16px;display:block}
.adm{margin:4px 0 12px;display:flex;gap:8px}
.form{display:flex;flex-direction:column;gap:10px}
.form label{font-size:var(--fs-sub);font-weight:500;color:var(--ink2)}

/* подарок */
.gift{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:16px;background:radial-gradient(120% 80% at 50% 20%,#3B2A4A,#16151A 70%);color:#fff;animation:dimIn .3s both}
.gift .gc{width:min(100%,400px);text-align:center;display:flex;flex-direction:column;gap:10px;max-height:100%;overflow:auto;padding:10px 0}
.gift .num{font:800 64px/1 "Golos Text",sans-serif;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.gift .unit{font-size:var(--fs-head);font-weight:500;color:#E6E3EC}
.gift h1{margin:8px 0 0;font:800 var(--fs-title)/1.25 "Golos Text",sans-serif;overflow-wrap:anywhere}
.gift p{margin:0;font-size:var(--fs-body);line-height:1.5;color:#E6E3EC}
.gift .until{display:inline-block;margin:0 auto;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.12);font-size:var(--fs-sub);font-weight:500}
.gift .x2{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:12px;width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:18px}
.gift .later{min-height:44px;border:0;background:none;color:#CFCBD9;font-weight:500}
.gift .cards{position:relative;height:120px;margin:4px auto 0;width:220px}
.gift .cards span{position:absolute;left:50%;top:0;width:70px;height:110px;margin-left:-35px;border-radius:12px;background:#2A2531 url(img/bg2.jpg) center/cover;box-shadow:0 10px 24px rgba(0,0,0,.4)}
.gtoast{position:fixed;left:12px;right:12px;top:calc(10px + env(safe-area-inset-top,0px));z-index:55;max-width:536px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:10px 10px 10px 14px;border-radius:18px;background:var(--ink);color:#fff;box-shadow:0 12px 30px rgba(0,0,0,.3);animation:fade .3s both}
.gtoast .grow{flex:1;min-width:0;display:flex;flex-direction:column}.gtoast b{font-size:var(--fs-body)}.gtoast span{font-size:var(--fs-sub);color:#CFCBD9}

/* ошибка */
.errbox{text-align:center;padding:30px 8px 10px}
.errbox .ic{width:96px;height:96px;margin:0 auto;border-radius:30px;background:#FFF1F2;display:grid;place-items:center;font-size:44px}
.errbox h1{margin:16px 0 6px;font:800 var(--fs-title)/1.25 "Golos Text",sans-serif}
.errbox p{margin:0;font-size:var(--fs-body);color:var(--ink2);font-weight:500}
.errbox .okline{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:8px 12px;border-radius:999px;background:#E9F6EE;color:var(--ok);font-size:var(--fs-body);font-weight:800}

/* поделиться */
.cards3{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 -16px;padding:8px 16px 16px}
.cards3::-webkit-scrollbar{display:none}
.scard{flex-shrink:0;width:min(264px,78vw);aspect-ratio:9/16;border-radius:24px;border:0;padding:16px;scroll-snap-align:center;display:flex;flex-direction:column;justify-content:space-between;text-align:left;color:#fff;overflow:hidden;position:relative}
.scard.c1{background:var(--grad)}
.scard.c2{background:#17131D url(img/bg2.jpg) center/cover}
.scard.c3{background:#fff;color:var(--ink);box-shadow:var(--sh)}
.scard .big{font:800 44px/1 "Golos Text",sans-serif}
.scard .md{font:800 var(--fs-head)/1.25 "Golos Text",sans-serif}
.scard .sm{font-size:var(--fs-sub);font-weight:500;line-height:1.4}
.dots{display:flex;justify-content:center;gap:6px}
.dots button{width:24px;height:24px;border:0;background:none;display:grid;place-items:center;padding:0}
.dots i{display:block;width:8px;height:8px;border-radius:4px;background:#B9B4C6;transition:width .25s}
.dots .on i{width:24px;background:var(--ink)}

.toast{position:fixed;left:50%;bottom:calc(var(--padb) + 4px);transform:translate(-50%,20px);z-index:70;max-width:calc(100vw - 32px);width:max-content;padding:12px 16px;border-radius:14px;background:var(--ink);color:#fff;font-size:var(--fs-body);font-weight:500;line-height:1.35;opacity:0;pointer-events:none;transition:opacity .2s,transform .25s;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
/* низкий экран (iPhone SE, клавиатура, крупный шрифт): плеер редактора не закрепляется - иначе он съедает экран правки */
@media (max-height:720px){.ed-top{position:static}}

/* 1.226.1 (Виола 25.10): шаг 1 и образец закреплены вверху «Монтажа», настройки прокручиваются под ними - как .lead в v1.
   Высоту образца считает layoutMontage по viewportStableHeight; --stick - высота блока (для прокрутки к разделам). */
.mtop{position:sticky;top:var(--tgtop,0px);z-index:12;margin:0 -16px;padding:8px 16px 10px;background:var(--bg);box-shadow:0 10px 12px -12px rgba(30,20,60,.35);display:flex;flex-direction:column;gap:8px}
body.typing .mtop{position:static;box-shadow:none}
#scr .sec,#scr .msets .step,#scr .msets [id]{scroll-margin-top:calc(var(--stick,0px) + 8px)}
.msets{padding-top:4px}
.msets .step{margin-top:12px}
.s1{width:100%;display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 8px 6px 10px;border-radius:16px;border:0;background:#fff;box-shadow:var(--sh);text-align:left;color:var(--ink)}
.s1 .n{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--ink);color:#fff;font:800 var(--fs-body) "Golos Text",sans-serif;display:grid;place-items:center}
.s1 .n.ok{background:var(--ok)}
.s1 .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.s1 b{font-size:var(--fs-body);line-height:1.25;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s1 .grow>span{font-size:var(--fs-sub);color:var(--ink3);font-weight:500;line-height:1.3}
.s1 .okt{color:var(--ok)!important;font-weight:500!important}
.s1 .bar{height:6px;margin-top:2px}
.s1 .plus{flex-shrink:0;width:36px;height:36px;border-radius:12px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:20px;font-weight:700}
.s1.pick{border:2px dashed #8C889B;box-shadow:none}
.s1.glow{animation:glow 1.2s ease-out 2}
.s1.part{border:2px solid var(--acc);box-shadow:none}
.dnote{display:flex;flex-direction:column;gap:3px;padding:8px 12px;border-radius:14px;background:#fff;box-shadow:var(--sh)}
.dnote b{font-size:var(--fs-body);line-height:1.3}
.dnote span{font-size:var(--fs-sub);line-height:1.35;color:var(--ink2);font-weight:500}
.dnote.warn{background:#FFF7E6}
.dnote.ok b{color:var(--ok)}
.dnote.slow{background:#FFF1F6}
.dnote.slow .btn{min-height:44px;margin-top:4px;border-radius:14px}
.trk{cursor:pointer}
.trk .pick.hint{border-color:var(--acc);color:var(--acc);animation:glow 1.2s ease-out 3}
.cta-busy.up2{min-height:60px;padding:8px 12px;text-align:center}
.cta-busy.up2 b{font-size:var(--fs-body);line-height:1.25}
.cta-busy.up2 small{font-size:var(--fs-cap);line-height:1.3;margin-top:2px}
.btn.slim{min-height:46px;border-radius:14px;font-size:var(--fs-body);padding:4px 10px}
.btn.slim small{color:var(--ink2);font-size:var(--fs-cap)}

/* 1.226.2 (Юра 25.10: «шрифты в v2 увеличенные»): основные размеры - по шкале v1 (замер computed font-size v1/v2 на 390 px).
   Всё в px, как в v1: при крупном системном шрифте v2 растёт так же, как v1, не больше. */
.sec-h h2,.step h2{font-size:var(--fs-body)}
.h1{font-size:var(--fs-title)}
.lead-p{font-size:var(--fs-sub)}
.hint,.opt .h{font-size:var(--fs-cap)}
.opt .nm b{font-size:var(--fs-body)}
.seg button{font-size:var(--fs-sub)}
.sty .nm{font-size:var(--fs-cap)}
.s1 b{font-size:var(--fs-body)}
.li b{font-size:var(--fs-body)}
.cnt2 .n{font-size:28px}
.pack b{font-size:var(--fs-body)}
.btn{font-size:var(--fs-body)}
.btn small{font-size:var(--fs-cap)}
/* нижнее меню (Юра: «Редактиров…», «Уникализац…» обрезаны): подписи целиком на 320-430 px. Шрифт как в v1 (9.5 px, 600),
   колонки по ширине подписи, а не поровну */
.nav{grid-template-columns:repeat(5,auto);justify-content:space-between;padding:4px 6px var(--safe)}
.nav button{font-size:9.5px;font-weight:700;letter-spacing:-.15px;padding:0 2px}
.nav button.on{font-weight:700}
.nav button span.l{overflow:visible;text-overflow:clip}
@media (max-width:359px){.nav{padding:4px 2px var(--safe)}.nav button{font-size:9.5px;letter-spacing:-.25px;padding:0 1px}}
/* кнопка оплаты на «Балансе» - обычной высоты, не закрывает пакеты */
.dock .btn.pay{min-height:48px;border-radius:16px;box-shadow:0 8px 18px rgba(22,21,26,.2);padding:4px 14px}
.dock .subl.pay{margin-top:-4px}
/* 1.226.2 (Юра 25.10, скрин: «Монтаж» под центральной кнопкой обрезан снизу): все 5 подписей - на одной линии внизу
   строки меню, центральная кнопка выступает вверх, а не толкает свою подпись вниз. Меню = --navh (58 px с 1.226.3, как v1) + safe-area-inset-bottom. */
.nav button{justify-content:flex-end;padding-bottom:7px}
.nav .nav-main{overflow:visible;justify-content:flex-end}
.nav .fab{margin-top:0;margin-bottom:1px}
.nav{grid-template-rows:minmax(0,1fr)}
.nav button{min-height:0;height:100%}

/* 1.226.3 (Юра 25.10: «масштаб всего уменьши… по размеру как v1 было»). Эталон - замер v1 на 390x844:
   шапка 46 px (логотип 26, баланс 30, корзина 34), меню 58 px, кнопки выбора 33-35 px, главная кнопка 57 px, текст 15 px.
   Видимые размеры - как в v1; кнопкам меньше 40 px зона касания добавлена невидимо (::after), текст не мельче 11 px. */
:root{--navh:58px}
html,body{font-size:var(--fs-head)}
.hd{padding:7px 16px 5px;gap:8px}
.logo{width:30px;height:30px;border-radius:9px}
.logo svg{width:14px;height:14px}
.pill{height:32px;padding:0 12px;font-size:var(--fs-body)}
.cart,.bell{width:34px;height:34px}
.cart svg,.bell svg{width:17px;height:17px}
.cart .tag{top:-6px;right:-8px;height:16px;font-size:var(--fs-cap)}
.pill,.cart,.bell,.logo{position:relative}
.pill::after,.cart::after,.bell::after,.logo::after{content:"";position:absolute;inset:-5px}
.card{padding:12px 12px;border-radius:18px}
.sec{margin-top:14px}
.btn{min-height:48px;border-radius:15px}
.btn.big{min-height:56px;border-radius:17px;box-shadow:0 8px 20px rgba(22,21,26,.24)}
.dock{padding:8px 16px}
.seg button{min-height:36px}
.sty{width:76px}
.sty .box{width:76px;height:88px;border-radius:15px}
.s1{min-height:44px;padding:4px 8px 4px 10px;border-radius:14px;gap:8px}
.s1 .n{width:22px;height:22px;font-size:var(--fs-sub)}
.s1 .plus{width:30px;height:30px;border-radius:10px;font-size:18px}
.s1 b{font-size:var(--fs-body)}
.s1 .grow>span{font-size:var(--fs-cap)}
.mtop{padding:6px 16px 8px;gap:6px}
.rail{grid-template-columns:repeat(var(--rcols,1),48px)}
.rail .c{--d:min(40px,calc(var(--pvw) * 1.5 / var(--rrows,7) - 16px))}
.rail .t{font-size:9.5px}
.nav .fab{width:46px;height:46px;border-radius:16px}
.nav button svg{width:20px;height:20px}
/* 1.226.4 (Юра 25.10: «кнопка монтажа ещё перекрывала нижнее меню»): центральная кнопка меню - всегда 46x46 (в 1.226.3 она
   сжималась в овал), выступает над меню вверх; на сколько - меряет padb() (--navup), и на столько же выше уходит главная
   кнопка внизу: между ними всегда 8 px. */
.nav .fab{flex-shrink:0}
.dock{padding-bottom:calc(8px + var(--navup,0px))}

/* ── 1.226.6 (Юра 25.10, скрины 390) ─────────────────────────────────────────────────────────────────────── */
/* шаг 1 - одна строка ~40 px: состояние жирным, имя файла / подсказка мелко в той же строке, «Сменить» компактно */
.s1.one{position:relative;min-height:40px;padding:3px 6px 3px 12px;gap:8px;overflow:hidden}
.s1.one .grow{flex-direction:row;align-items:baseline;gap:6px;min-width:0;overflow:hidden}
.s1.one .grow b{flex-shrink:0;font-size:var(--fs-body)}
.s1.one .grow>span{flex:1;min-width:0;font-size:var(--fs-cap);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.s1.one .bar{position:absolute;left:12px;right:12px;bottom:3px;height:3px;margin:0}
.s1.one .plus{width:28px;height:28px;border-radius:9px;font-size:var(--fs-head)}
.chip.sm{min-height:30px;padding:0 10px;border-radius:10px;font-size:var(--fs-sub);position:relative}
.chip.sm::after{content:"";position:absolute;inset:-5px 0}
/* главная кнопка внизу - одна строка ~48 px */
.btn.big.one{min-height:48px;border-radius:15px;font-size:var(--fs-body)}
.btn.big.one .gico{width:26px;height:26px}
.cta-busy.one{min-height:48px}
/* нижнее меню: подписи целиком и не у краёв (отступ от 6 px) на 320-430 px; круг 40 px */
.nav{padding:4px 8px var(--safe)}
.nav button{font-size:9px;letter-spacing:-.2px;padding:0 1px 7px;gap:2px}
.nav button svg{width:18px;height:18px}
.nav .fab{width:40px;height:40px;border-radius:14px}
.nav .fab svg{width:20px;height:20px}
@media (max-width:359px){.nav{padding:4px 6px var(--safe)}.nav button{font-size:8.5px;letter-spacing:-.3px}}
/* «Уникализация» - цветная всегда (как в v1: розово-оранжевый значок) */
.nav [data-go=unique] svg{box-sizing:content-box;padding:3px;border-radius:7px;background:var(--grad);color:#fff;stroke:#fff}
.nav [data-go=unique] span.l{color:var(--ink2)}
/* ↻ на образце - наверху справа, переключатели «Титры / Заголовок / Плашка» внизу ничем не закрыты */
.pv .play{top:8px;right:8px;bottom:auto;width:34px;height:34px}
.pv .play svg{width:17px;height:17px}
.pv .views{left:6px;right:6px;bottom:8px;justify-content:center;flex-wrap:wrap}
.pv .views button{min-height:28px;padding:0 8px;font-size:var(--fs-cap)}
/* «Можно закрыть приложение» - фирменной плашкой */
.info.hot{background:var(--grad);box-shadow:0 10px 22px rgba(255,79,139,.3)}
.info.hot .ic{background:rgba(255,255,255,.22)}
.info.hot b,.info.hot span{color:#fff}
/* «Ролик готов»: «Редактор» - главная из трёх карточек */
.act.main{background:var(--grad);color:#fff;box-shadow:0 10px 22px rgba(255,79,139,.3)}
.act.main small{color:rgba(255,255,255,.92);line-height:1.25;text-align:center}
.act small{line-height:1.25;text-align:center}
.stat2.one{grid-template-columns:1fr}
/* «Поделиться»: сам ролик */
.player.sh1{margin-top:6px}
/* верхняя строка «назад» - ниже шапки Telegram (полноэкранный режим): --tgtop ставит app.js по safe area Telegram */
body{padding-top:var(--tgtop,0px)}
/* 1.235.6: полный экран - полоса под кнопками Telegram закрыта фоном, прокрутка под ней не просвечивает */
body::before{content:"";position:fixed;left:0;right:0;top:0;height:var(--tgtop,0px);background:var(--bg);z-index:25;pointer-events:none}

/* ── 1.226.6: шкала Apple HIG / CapCut / Captions (Юра 25.10, iPhone 17 Pro 402x874: «размеры и масштабы как в топовых
   приложениях»). Эталон 402x874, проверка 375x667, 430x932, 320x568. Этот блок - последний и главный: он перекрывает
   масштаб 1.226.3 («как v1»).
   Текст: основной 15, подписи 12-13, мелкий 11, заголовок экрана 22 (Unbounded - только заголовки экрана).
   Касание от 44, видимо компактно: главная кнопка 44 одной строкой, сегменты 34, кружки панели 42 с подписью 11.
   Меню - как tab bar iOS: 49 + safe-area, 5 равных колонок, иконки 24, подписи 10, без выступающего круга.
   Шапка 44, поля экрана 16, между блоками 12-16, скругление карточек 16. ── */
:root{--navh:49px;--navup:0px}
html,body{font-size:var(--fs-head)}
.hd{min-height:44px;padding:4px 16px 2px;box-sizing:border-box}
.logo{width:32px;height:32px;border-radius:10px}
.pill{height:34px;font-size:var(--fs-body)}
.cart,.bell{width:34px;height:34px}
.h1,.big-h{font-size:var(--fs-title);line-height:1.2}
.sh h3{font-size:var(--fs-title)}
.emptyst h2,.errbox h1,.gift h1,.inv-hero h1{font-size:var(--fs-title)}
.back .t{font:800 var(--fs-head) "Golos Text",sans-serif}
.sec-h h2,.step h2{font-size:var(--fs-head)}
.lbl,.lbl span,.lbl label{font-size:var(--fs-body)}
.hint,.opt .h,.lead-p{font-size:var(--fs-sub)}
.opt .nm b{font-size:var(--fs-head)}
.li b{font-size:var(--fs-head)}
.info b{font-size:var(--fs-head)}.info span{font-size:var(--fs-sub)}
/* цифры и цены - не Unbounded (он только для заголовков экрана) */
.cnt2 .n,.ring .pc,.stat2 .v,.packs3 b,.pack .pr b,.invite-card b,.place h4,.kicker,.step .n,.s1 .n,.scard .big,.scard .md{font-family:"Golos Text",sans-serif}
.cnt2 .n{font-size:28px}
.pack b{font-size:var(--fs-head)}.pack .pr b{font-size:var(--fs-head)}
.card,.stat2>div,.act,.pack,.info,.list{border-radius:16px}
.card{padding:14px 14px}
.sec{margin-top:16px}
#scr{padding-left:16px;padding-right:16px}
/* кнопки */
.btn{min-height:44px;border-radius:14px;font-size:var(--fs-head)}
.btn.big,.btn.big.one{min-height:44px;border-radius:14px;font-size:var(--fs-head);padding:4px 14px;box-shadow:0 6px 16px rgba(22,21,26,.22)}
.btn.big .gico,.btn.big.one .gico{width:24px;height:24px}
.btn .row{gap:8px}
.btn small{display:none}
.dock{padding:8px 16px calc(8px + var(--navup,0px));gap:6px}
.seg button{min-height:34px;font-size:var(--fs-body)}
.chip{min-height:34px;font-size:var(--fs-body)}
.chip.sm{min-height:30px;font-size:var(--fs-sub)}
/* панель справа: кружки 42 с подписью 11 */
.rail{grid-template-columns:repeat(var(--rcols,1),50px)}
.rail .c{--d:min(42px,calc(var(--pvw) * 1.5 / var(--rrows,7) - 17px))}
.rail .t{font-size:var(--fs-cap)}
/* шаг 1 - одна строка */
.s1.one{min-height:44px}
.s1.one .grow b{font-size:var(--fs-head)}
.s1.one .grow>span{font-size:var(--fs-sub)}
/* нижнее меню - tab bar iOS: 5 равных колонок, круг по центру экрана, без выступа */
.nav{grid-template-columns:repeat(5,minmax(0,1fr));justify-content:stretch;height:calc(var(--navh) + var(--safe));
  padding:0 max(6px,env(safe-area-inset-right,0px)) var(--safe) max(6px,env(safe-area-inset-left,0px));grid-template-rows:var(--navh)}
.nav button{justify-content:center;gap:2px;padding:0;font-size:10px;font-weight:700;letter-spacing:0;min-width:0;overflow:hidden;height:var(--navh)}
.nav button span.l{max-width:100%;overflow:hidden;text-overflow:clip;white-space:nowrap}
.nav button svg{width:24px;height:24px}
.nav button.on{color:var(--acc);font-weight:700}
.nav button.on span.l{color:var(--acc)}
.nav .nav-main{justify-content:center}
.nav .fab{width:24px;height:24px;margin:0;border-radius:7px;box-shadow:none}
.nav .fab svg{width:16px;height:16px}
.nav [data-go=unique] svg{width:18px;height:18px}
@media (max-width:359px){.nav button{font-size:10px}}
/* 1.226.6, список Юры: шапка без логотипа и корзины - кнопка-баланс с меткой скидки */
.hd{justify-content:flex-end}
.hd-r{flex:1 1 auto}
.pill{position:relative;display:inline-flex;align-items:center;gap:6px;max-width:100%}
.pill .pt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill .tag{flex-shrink:0;height:20px;padding:0 6px;border-radius:999px;background:var(--acc);color:#fff;font-size:var(--fs-cap);font-weight:700;display:inline-flex;align-items:center}
.pill.hop{animation:hop .6s ease}
/* меню - 4 вкладки */
.nav{grid-template-columns:repeat(4,minmax(0,1fr))}
/* состояние видео - чип на образце (сверху слева); «Титры / Заголовок / Плашка» - маленькие чипы сверху справа */
.pv #step1{position:absolute;left:6px;top:6px;right:auto;z-index:4;max-width:calc(100% - 12px)}
.pv #step1:empty{display:none}
.vchip{position:relative;display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 4px 0 9px;border-radius:999px;border:0;background:rgba(0,0,0,.62);color:#fff;
  font:700 var(--fs-cap) "Golos Text",sans-serif;white-space:nowrap;overflow:hidden;max-width:100%}
.vchip b{font-weight:800}
.vchip button,.vchip .lk{height:20px;padding:0 8px;border-radius:999px;border:0;background:#fff;color:var(--ink);font:700 var(--fs-cap) "Golos Text",sans-serif;display:inline-flex;align-items:center;position:relative}
.vchip button::after{content:"";position:absolute;inset:-10px -4px}
.vchip.ok{background:rgba(30,160,90,.9)}
.vchip .spin{width:12px;height:12px;border-width:2px}
.vchip .bar{position:absolute;left:0;right:0;bottom:0;height:3px;border-radius:0;background:rgba(255,255,255,.25)}
.vchip .bar i{background:#fff}
.pv .views{left:auto;right:6px;top:6px;bottom:auto;flex-direction:column;align-items:flex-end;gap:3px;justify-content:flex-start}
.pv .views button{min-height:22px;padding:0 7px;font-size:var(--fs-cap);border-radius:999px;position:relative}
.pv .views button::after{content:"";position:absolute;inset:-6px -4px}
.pv .play{display:none}
/* описания под настройками скрыты - заголовок и «?» (полный текст - в шторке) */
#scr .msets .hint,#scr .msets .opt .h{display:none}
.btn.glow{animation:glow 1.4s ease-out 2}
/* 1.226.6: «Перейти в чат» заменена на «⬇️ Скачать файл» (Юра) - снова три карточки */
/* 1.226.6 (Юра): «Переделать» - строкой во всю ширину с объяснением (тексты бота WATCH_REDO / WATCH_REDO_LEFT / WATCH_REDO_NONE);
   ниже в ряд «✏️ Редактор» и «⬇️ Скачать файл» */
.redo-row{width:100%;display:flex;align-items:center;gap:12px;margin-top:12px;padding:12px 14px;border:0;border-radius:16px;background:#fff;box-shadow:var(--sh);text-align:left;color:var(--ink)}
.redo-row .e{flex-shrink:0;font-size:22px}
.redo-row .grow{display:flex;flex-direction:column;gap:3px;min-width:0}
.redo-row b{font-size:var(--fs-head)}
.redo-row .grow>span{font-size:var(--fs-sub);line-height:1.35;color:var(--ink2);font-weight:500}
.acts.acts2{grid-template-columns:repeat(2,minmax(0,1fr))}
/* 1.226.6 (Юра: «а где кнопка Баланс, чтобы там и тарифы были»): снова 5 равных вкладок - Монтаж, Уникализация, Ролики,
   Баланс, Пригласить. Подпись 10 px; не влезает в колонку (узкий экран) - fitNav() уменьшает только её, до 8.5 px */
.nav{grid-template-columns:repeat(5,minmax(0,1fr))}
/* ── 1.226.6: настройки под образцом - одна белая карточка-список (CapCut / Captions) ── */
.msets{padding-top:10px}
.dim2.off{opacity:1}                              /* до загрузки не бледним - неактивна только «Смонтировать» */
.slist{background:#fff;border-radius:16px;box-shadow:var(--sh);padding:0 14px}
.srow{display:flex;align-items:center;gap:6px;min-height:48px;padding:6px 0;border-bottom:1px solid #ECEAF1}
.srow:last-child{border-bottom:0}
.srow.col{flex-direction:column;align-items:stretch;gap:6px;padding:10px 0}
.srow-h{display:flex;align-items:center;gap:6px;min-height:28px}
.srow .sn{font-size:var(--fs-head);font-weight:700;color:var(--ink);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.srow .sp{flex:1}
.srow .sv{margin-left:auto;font-size:var(--fs-sub);font-weight:500;color:var(--ink3);white-space:nowrap}
.srow .q{width:32px;height:32px;margin:-6px -4px -6px -4px}
.srow .q span{width:18px;height:18px;font-size:11px;background:#F1EFF5;color:var(--ink3)}
.srow .seg{flex:0 0 auto;width:min(58%,230px);padding:2px;border-radius:10px}
.srow .seg button{min-height:32px;font-size:var(--fs-sub);border-radius:8px;padding:0 2px}
.srow .sval{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 10px;border:0;border-radius:10px;background:var(--soft);font:700 var(--fs-body) "Golos Text",sans-serif;color:var(--ink)}
.srow .sval i{font-style:normal;color:var(--ink3);font-size:var(--fs-head)}
.srow.opt{padding:6px 0}
.srow.opt .cyc{min-height:32px;padding:0 10px;border-radius:10px;font-size:var(--fs-body);max-width:52%}
.srow .sw{width:48px;height:30px}
.srow .needcut{font-size:var(--fs-cap);color:var(--ink3);font-weight:500}
/* лента стилей - плитки 56x56, название под плиткой 11 px, выбранная - цветная рамка */
#styleRow .hs{margin:0 -14px;padding:2px 14px 4px;gap:8px}
#styleRow .sty{width:56px;gap:4px}
#styleRow .sty .box{width:56px;height:56px;border-radius:12px;box-shadow:none;outline:2px solid transparent;outline-offset:1px}
#styleRow .sty.on .box,#styleRow .sty[aria-pressed=true] .box{outline-color:var(--acc)}
#styleRow .sty .box svg{max-width:44px;height:auto}
#styleRow .sty .nm{font-size:var(--fs-cap);color:var(--ink2)}
/* цвета - кружки 28 в одну строку */
.slist .cols{display:flex;gap:6px;justify-content:space-between}
.slist .cols button{height:36px;width:36px;position:relative}
.slist .cols i{width:28px;height:28px}
.slist .cols .on i{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--acc)}
/* 1.242.0: «Свой» цвет - первым в ряду; поверх - прозрачный input type=color (тап открывает палитру телефона) */
.slist .cols{gap:2px}
.slist .cols button{flex:1 1 0;min-width:0;width:auto}
.cols .cust{position:relative;flex:0 0 50px;height:36px;display:grid;place-items:center;cursor:pointer}
.cols .cust .cw{height:28px;box-sizing:border-box;padding:0 8px;border-radius:14px;display:grid;place-items:center;font-size:11.5px;font-weight:800;color:var(--ink);
  border:2.5px solid transparent;background:linear-gradient(#fff,#fff) padding-box,conic-gradient(#ff3b30,#ffcc00,#34c759,#00c7ff,#5856d6,#ff2d92,#ff3b30) border-box;transition:box-shadow .2s}
.cols .cust.on .cw{color:var(--cci);background:linear-gradient(var(--cc),var(--cc)) padding-box,conic-gradient(#ff3b30,#ffcc00,#34c759,#00c7ff,#5856d6,#ff2d92,#ff3b30) border-box;box-shadow:0 0 0 2px #fff,0 0 0 4px var(--acc)}
@media (max-width:359px){.slist .cols i{width:24px;height:24px}.cols .cust{flex-basis:46px}.cols .cust .cw{padding:0 6px;font-size:11px}}
.cols .cust input{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;opacity:0;cursor:pointer;-webkit-appearance:none;appearance:none}
.slist .note{margin:0;font-size:var(--fs-sub);color:var(--ink3)}
/* заголовок: поле - только когда включён */
.tfield{position:relative}
.tfield .field{min-height:60px;font-size:var(--fs-head)}
.tfield .cnt{position:absolute;right:10px;bottom:8px;font-size:var(--fs-cap);color:var(--ink3);font-weight:500}
@media (max-width:359px){.srow .seg{width:56%}.srow .seg button{font-size:var(--fs-cap)}.srow .sn{font-size:var(--fs-body)}}
/* «?» у главной кнопки «Выбрать видео» (там подсказка про разговорные видео) */
.dock .withq{display:flex;align-items:center;gap:8px}
.dock .withq .btn{flex:1}
.dock .withq .q{margin:0;width:44px;height:44px}
.srow .sn{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}   /* узкий экран: название в 2 строки, не «…» */
/* 1.226.6: «Смонтировать» до конца загрузки - процент и «Отменить» на месте кнопки; чип «+ видео» на образце */
.cta-busy.one{display:flex;align-items:center;justify-content:center;gap:10px;min-height:44px;border-radius:14px}
.cta-busy .cta-x{position:relative;z-index:1;height:30px;padding:0 12px;border:0;border-radius:10px;background:rgba(255,255,255,.9);color:var(--ink);font:700 var(--fs-sub) "Golos Text",sans-serif}
.dnote{padding:6px 12px;border-radius:12px}
.dnote b{font-size:var(--fs-body)}
.dnote.warn{background:#FFF7E6}
.dnote.ok{background:var(--grad)}.dnote.ok b{color:#fff}
.vchip.add{padding:0 10px;background:rgba(0,0,0,.62)}
.cta-busy.one{flex-direction:row;padding:0 8px 0 14px}.cta-busy.one b{position:relative;z-index:1;flex:1;text-align:left;font-size:var(--fs-head)}
/* 1.226.6 (Юра): «Анимация» и «Расположение» - сегментом на экране во всю ширину под названием, без шторок */
.srow.col>.seg{width:100%}
.srow.col>.seg button{min-height:32px;font-size:var(--fs-body)}
/* без видео - заметная белая кнопка на образце */
.pv #step1:has(.pv-up){left:50%;top:auto;bottom:44px;transform:translateX(-50%);max-width:none}
.pv-up{height:40px;padding:0 16px;border:0;border-radius:999px;background:#fff;color:var(--ink);font:800 var(--fs-body) "Golos Text",sans-serif;white-space:nowrap;box-shadow:0 8px 20px rgba(0,0,0,.28);position:relative}
.pv-up::after{content:"";position:absolute;inset:-4px}
.btn.grad{background:var(--grad);box-shadow:0 8px 20px rgba(255,79,139,.35)}   /* 1.226.6: видео загружено - «Смонтировать» фирменным цветом */
/* 1.226.6 (Юра: «почему неровно»): переключатели как iOS - дорожка 51x31, кружок 27x27, отступ 2 px, по центру, без выхода за края */
.sw,.srow .sw{box-sizing:border-box;width:51px;height:31px;padding:2px;align-items:center;justify-content:flex-start;margin-left:auto}
.sw i,.srow .sw i{flex:0 0 27px;width:27px;height:27px;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:transform .25s ease}
.sw.on i{transform:translateX(20px)}
/* 1.226.6 (Юра): панель справа - 10 функций, 2 столбика по 5, кнопки меньше, подписи целиком */
.rail{grid-template-columns:repeat(2,52px);gap:1px 2px}
.rail .c{--d:min(36px,calc(var(--pvw) * 1.5 / var(--rrows,5) - 17px))}
.rail .t{font-size:var(--fs-cap);line-height:1.1;white-space:normal;text-align:center;max-width:52px}
.rail .dis .c{opacity:.35;filter:grayscale(1)}.rail .dis .t{color:var(--ink3)}
/* 1.226.6: значок «ролик делается» в шапке - кольцо прогресса фирменным градиентом и «N%» внутри */
.hprog{position:relative;flex-shrink:0;width:34px;height:34px;border:0;padding:0;border-radius:50%;background:#fff;box-shadow:var(--sh);display:grid;place-items:center}
.hprog svg{position:absolute;inset:0;width:34px;height:34px}
.hprog #hpR{transition:stroke-dashoffset .6s}
.hprog b{position:relative;font:800 9.5px "Golos Text",sans-serif;color:var(--ink);letter-spacing:-.2px}
.hprog::after{content:"";position:absolute;inset:-5px}
/* 1.226.7 (Юра: «Пригласить как в v1, с подпрыгивалкой») - то же, что v1 (webapp/app.css, 1.170.0): цветной 🎁 подёргивается
   каждые 2,6 с; у выбранной вкладки - без анимации */
.nav .ngift{font-size:20px;line-height:20px;height:20px;display:inline-block;transform-origin:50% 85%;animation:ngift 2.6s ease-in-out infinite;filter:drop-shadow(0 3px 5px rgba(255,79,139,.35))}
@keyframes ngift{0%,62%,100%{transform:none}66%{transform:translateY(-3px) rotate(-12deg) scale(1.12)}71%{transform:translateY(-3px) rotate(10deg) scale(1.12)}
  76%{transform:translateY(-2px) rotate(-8deg) scale(1.08)}81%{transform:translateY(-1px) rotate(5deg) scale(1.04)}86%{transform:rotate(-2deg)}}
.nav .nav-gift.on .gift{animation:none}
@media (prefers-reduced-motion:reduce){.nav .ngift{animation:none}}
/* 1.226.7 (Юра: «сделай красиво меню тарифов, как первоначально было в v2»): «Баланс» - вид 1.226.0 (значения 1.226.0
   поверх поздних шкал). Из поздних - только кнопка оплаты обычной высоты (.dock .btn.pay), без выбора заранее, без перерисовки и новый текст рефки. */
.bal0{font-size:var(--fs-head)}
.bal0 .h1{margin:6px 0 4px;font:800 var(--fs-title)/1.2 "Golos Text",sans-serif}
.bal0 .sec{margin-top:12px}
.bal0 .cnt2>div{border-radius:22px;padding:16px 14px}
.bal0 .cnt2 .n{font:800 30px "Golos Text",sans-serif}
.bal0 .cnt2 .k{font-size:var(--fs-sub);font-weight:500}
.bal0 .list{border-radius:22px;padding:4px 14px}
.bal0 .li b{font-size:var(--fs-body)}.bal0 .li .val{font-size:var(--fs-body);font-weight:800}
.bal0 .seg{padding:4px;border-radius:14px}
.bal0 .seg button{min-height:40px;font:700 var(--fs-body) "Golos Text",sans-serif;border-radius:10px}
.bal0 .pack{padding:14px;border-radius:18px}
.bal0 .pack b{font-size:var(--fs-head)}.bal0 .pack .grow span{font-size:var(--fs-sub)}
.bal0 .pack .pr b{font:800 var(--fs-head) "Golos Text",sans-serif}.bal0 .pack .pr span{font-size:var(--fs-cap)}
.bal0 .pack .hot{top:-10px;height:22px;font-size:var(--fs-cap)}
.bal0 .ticks{margin:12px 0 0;gap:8px}.bal0 .ticks li{font-size:var(--fs-body)}
.bal0 .refnote{margin-top:10px;border-radius:16px}.bal0 .refnote span{font-size:var(--fs-sub)}
.bal0 .chip{min-height:40px;font:700 var(--fs-body) "Golos Text",sans-serif;border-radius:12px}
/* 1.226.7 (Юра): «Можно закрыть приложение» - узкой полосой под шапкой во всю ширину, фирменный градиент (слева от баланса не влезает) */
.hstrip{margin:0 16px 6px;padding:6px 12px;border-radius:12px;background:var(--grad);color:#fff;font-size:var(--fs-sub);font-weight:500;line-height:1.3;text-align:center}
/* 1.226.8: «Переделать» - одна карточка: заголовок и «?», описание, кнопка */
.redo-card{margin-top:12px;padding:12px 14px;border-radius:16px;background:#fff;box-shadow:var(--sh)}
.redo-card .rc-h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.redo-card .rc-h b{font-size:var(--fs-head)}
.redo-card .rc-h .q{margin:-8px -8px -8px 0}
.redo-card .rc-d{margin:4px 0 10px;font-size:var(--fs-sub);line-height:1.35;color:var(--ink2);font-weight:500}
.redo-card .rc-b{min-height:44px}
/* ── 1.226.8 (Юра: «сделай меню такое же, как было, просто… нормально»): меню 1.226.0 - «Редактор | Уникализация | (круг) Монтаж |
   Баланс | Пригласить», контурные иконки, выбранная - цветом; круг 46x46 градиентом выступает над меню, подпись под ним в одной
   линии с остальными; 5 равных колонок (круг по центру экрана); зазор с главной кнопкой - --navup (1.226.4). Из позднего - только 🎁. ── */
.nav{grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:var(--navh);padding:0 max(6px,env(safe-area-inset-right,0px)) var(--safe) max(6px,env(safe-area-inset-left,0px))}
.nav button{justify-content:flex-end;padding:0 0 7px;gap:3px;color:var(--ink3);font-size:var(--fs-cap);font-weight:700;letter-spacing:-.15px;height:var(--navh);overflow:visible}
.nav button svg{width:22px;height:22px;flex-shrink:0}
.nav button.on{color:var(--ink);font-weight:700}
.nav button.on span.l{color:var(--ink)}
.nav button.on:not(.nav-main) svg{color:var(--acc)}
.nav .nav-main{justify-content:flex-end;overflow:visible}
.nav .fab{flex:0 0 46px;width:46px;height:46px;margin:0;border-radius:16px;background:var(--grad);display:grid;place-items:center;box-shadow:0 8px 18px rgba(255,79,139,.4)}
.nav .fab svg{width:22px;height:22px}
.nav [data-go=unique] svg{box-sizing:border-box;padding:0;border-radius:0;background:none;color:inherit;stroke:currentColor;width:22px;height:22px}
.nav [data-go=unique] span.l{color:inherit}
.nav button.on[data-go=unique] svg{color:var(--acc)}
.nav button span.l{flex-shrink:0;line-height:1.2}
/* 1.226.8: роли шкалы - одинаковые роли одного размера на всех экранах */
.h1,.big-h,.sh h3,.emptyst h2,.errbox h1,.gift h1,.inv-hero h1,.back .t{font-size:var(--fs-title)}
.sec-h h2,.step h2,.srow .sn,.redo-card .rc-h b,#presets .sec-h h2,.li b,.info b,.pack b,.opt .nm b,.invite-card b,.place h4{font-size:var(--fs-head)}
.lead-p,.sh .body p,.ticks li,.toast,.field,.trow span{font-size:var(--fs-body)}
.hint,.rc-d,.redo-card .rc-d,.refnote span,.pack .grow span,.info span,.li .sub,.cnt2 .k,.stat2 .k,.ai-note{font-size:var(--fs-sub)}
.btn,.btn.big,.btn.big.one{font-size:var(--fs-btn)}
.btn small{font-size:var(--fs-sub)}
/* 1.226.8: «⚠️ ВАЖНО ПЕРЕД ЗАГРУЗКОЙ» в шторке «Выбери видео» (montage.BEFORE) */
.before-card{margin-top:10px;padding:12px 14px;border-radius:14px;background:#FFF7E6}
.before-card p{margin:0 0 8px;font-size:var(--fs-body);line-height:1.4;font-weight:500;color:var(--ink)}
.before-card p:last-child{margin:0}
/* ── 1.226.8 (Юра: «как в OLA, чтобы был дизайн»): «Баланс» в оформлении тарифов OLA (webapp_ola 1.226.7): карточки 22 px,
   выбранная - градиентная рамка 2 px и розовая тень, радио - чёрный круг с белой точкой, название - Unbounded 800, цена 17,
   бейдж - тёмный ярлык, рефка - пунктирная строка. Палитра, тексты, цены и состав - ЗАЛЕТАЙ, без изменений. ── */
.bal0 .cnt2>div{border-radius:24px;padding:16px;box-shadow:0 2px 10px rgba(30,20,60,.06)}
.bal0 .list{border-radius:24px;box-shadow:0 2px 10px rgba(30,20,60,.06)}
.bal0 .seg{border-radius:16px}
.bal0 .packs{gap:10px}
.bal0 .pack{padding:14px;border-radius:22px;border:2px solid transparent;background:#fff;box-shadow:0 2px 10px rgba(30,20,60,.06);transition:box-shadow .25s,background .25s}
.bal0 .pack.on{border-color:transparent;background:linear-gradient(#fff,#fff) padding-box,var(--grad) border-box;box-shadow:0 10px 26px rgba(255,79,139,.22)}
.bal0 .pack .rd{position:relative;width:22px;height:22px;border-radius:11px;border:2px solid #8C889B;background:#fff}
.bal0 .pack.on .rd{border:0;background:var(--ink)}
.bal0 .pack.on .rd::after{content:"";position:absolute;left:7px;top:7px;width:8px;height:8px;border-radius:4px;background:#fff}
.bal0 .pack .grow b{font-family:"Golos Text",sans-serif;font-weight:800;font-size:var(--fs-head)}
.bal0 .pack .grow span{font-weight:500;color:var(--ink2)}
.bal0 .pack .pr b{font-family:"Golos Text",sans-serif;font-weight:800;font-size:var(--fs-title)}
.bal0 .pack .pr span{font-size:var(--fs-cap);font-weight:500}
.bal0 .pack .hot{top:-9px;right:14px;height:20px;padding:0 7px;border-radius:7px;background:var(--ink);color:#fff;font-size:var(--fs-cap);font-weight:700}
.bal0 .refnote{border-radius:18px;background:transparent;border:1.5px dashed #C9C5D3;padding:8px 8px 8px 14px}
.bal0 .ticks li{font-weight:500}

/* 1.226.9: в полосе загрузки - объём, скорость и сколько осталось */
.cta-busy.one .ctxt{position:relative;z-index:1;flex:1;min-width:0;display:flex;flex-direction:column;text-align:left;line-height:1.15}
.cta-busy.one .ctxt b{font-size:var(--fs-head)}
.cta-busy.one .ctxt small{font-size:var(--fs-cap);font-weight:500;color:#E6E3EC;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.cta-busy.one .ctxt small:empty{display:none}

/* ── 1.226.9 (Юра: «Баланс так же красиво, как тарифы в OLA, с акцентом на средний»): обе вкладки «Баланса» и шторка
   «На балансе нет роликов». Карточки белые, радиус 28, цена крупно; выбранная - рамка 2.5 px градиентом
   #F59E3C → #EC4F8E → #A855F7 со свечением; средний (30) подсвечен всегда слабее, но заранее НЕ выбран (решение 19);
   бейдж - чёрная пилюля рядом с названием; карточка баланса - тёмный герой; кнопка оплаты - градиент с тенью, высота прежняя.
   Тексты, цены, состав и навигация - без изменений. ── */
.bal0,.sh[data-kind=oor]{--g9:linear-gradient(135deg,#F59E3C,#EC4F8E 52%,#A855F7);--g9s:linear-gradient(135deg,rgba(245,158,60,.5),rgba(236,79,142,.5) 52%,rgba(168,85,247,.5))}
.bal0 .packs,.sh[data-kind=oor] .packs{gap:12px}
.bal0 .pack,.sh[data-kind=oor] .pack{padding:16px 16px 16px 14px;border-radius:28px;border:2.5px solid transparent;background:#fff;box-shadow:0 2px 12px rgba(30,20,60,.07);transition:box-shadow .25s,background .25s}
.bal0 .pack[data-i="1"]:not(.on),.sh[data-kind=oor] .pack[data-i="1"]:not(.on){background:linear-gradient(135deg,#FFF8F1,#FFF2F7 52%,#F9F3FF) padding-box,var(--g9s) border-box;box-shadow:0 6px 18px rgba(236,79,142,.10)}
.bal0 .pack.on,.sh[data-kind=oor] .pack.on{border-color:transparent;background:linear-gradient(#fff,#fff) padding-box,var(--g9) border-box;box-shadow:0 12px 30px rgba(236,79,142,.26),0 4px 14px rgba(168,85,247,.18)}
.sh[data-kind=oor] .pack .rd{position:relative;width:22px;height:22px;border-radius:11px;border:2px solid #8C889B;background:#fff}
.bal0 .pack.on .rd,.sh[data-kind=oor] .pack.on .rd{border:0;background:var(--ink)}
.bal0 .pack.on .rd::after,.sh[data-kind=oor] .pack.on .rd::after{content:"";position:absolute;left:7px;top:7px;width:8px;height:8px;border-radius:4px;background:#fff}
.bal0 .pack .grow .nmr,.sh[data-kind=oor] .pack .grow .nmr{display:flex;align-items:center;flex-wrap:wrap;gap:4px 7px;font-size:inherit;color:inherit;font-weight:inherit}
.bal0 .pack .grow b,.sh[data-kind=oor] .pack .grow b{font-family:"Golos Text",sans-serif;font-weight:800;font-size:var(--fs-head);color:var(--ink)}
.sh[data-kind=oor] .pack .grow>span:not(.nmr){font-weight:500;color:var(--ink2)}
.bal0 .pack .grow .hot,.sh[data-kind=oor] .pack .grow .hot{position:static;height:20px;padding:0 8px;border-radius:999px;background:var(--ink);color:#fff;font:700 var(--fs-cap)/1 "Golos Text",sans-serif;white-space:nowrap;display:inline-flex;align-items:center}
.bal0 .pack .pr,.sh[data-kind=oor] .pack .pr{gap:3px}
.bal0 .pack .pr b,.sh[data-kind=oor] .pack .pr b{font:800 var(--fs-title)/1.1 "Golos Text",sans-serif;color:var(--ink)}
.bal0 .pack .pr span,.sh[data-kind=oor] .pack .pr span{font-size:var(--fs-cap);font-weight:500;color:var(--ink3)}
.bal0 .pack .pr span.sv,.sh[data-kind=oor] .pack .pr span.sv{color:var(--acc)}
.bal0 .cnt2>div.g{border-radius:28px;color:#fff;box-shadow:0 12px 30px rgba(60,20,70,.28);
  background:radial-gradient(120% 90% at 100% 0%,rgba(168,85,247,.55),transparent 60%),radial-gradient(110% 90% at 0% 100%,rgba(190,40,90,.55),transparent 62%),#1A1820}
.bal0 .cnt2>div:not(.g){border-radius:28px}
.bal0 .cnt2 .g .n{font:800 46px/1.05 "Golos Text",sans-serif;letter-spacing:-.01em}
.bal0 .cnt2 .g .k{color:#E2DCEB}
.dock .btn.pay:not(:disabled),.sh[data-kind=oor] .btn.pay:not(:disabled){background:linear-gradient(135deg,#F59E3C,#EC4F8E 52%,#A855F7);color:var(--ink);font:700 var(--fs-btn) "Golos Text",sans-serif;box-shadow:0 10px 24px rgba(236,79,142,.34),0 3px 10px rgba(168,85,247,.22)}

/* 1.226.9: рефка на «Балансе» - заголовок и условия строкой (вариант Б); шторка «нет роликов» - тени карточек не обрезаются */
.refnote.r2 span{display:flex;flex-direction:column;gap:3px}
.refnote.r2 span b{font-weight:800;color:var(--ink);line-height:1.25}
.refnote.r2 span small{font-size:var(--fs-cap);font-weight:500;color:var(--mut, #6B6778);line-height:1.3}
.sh[data-kind=oor] .packs{padding:4px 8px 12px}
.refnote.r2{flex-direction:column;align-items:stretch;gap:10px}
.refnote.r2 span small{white-space:nowrap}
.refnote.r2 > :last-child{align-self:flex-start}

/* 1.226.10: образец на весь экран - тот же блок .pvrow, всё внутри живое */
.pvfs-x{display:none}
body.pvfs{overflow:hidden}
body.pvfs .mtop{position:static;z-index:46;box-shadow:none}
body.pvfs .pvrow{position:fixed;inset:0;z-index:46;margin:0;background:rgba(14,12,20,.96);flex-direction:column;align-items:center;justify-content:center;gap:14px;
  padding:calc(var(--tgtop,0px) + 52px) 12px calc(env(safe-area-inset-bottom,0px) + 14px);--pvw:min(calc(100vw - 24px),calc((100vh - var(--tgtop,0px) - 230px) / 1.5));animation:dimIn .2s both}
body.pvfs .pv{cursor:default}
body.pvfs .rail{height:auto;grid-template-columns:repeat(5,64px);grid-template-rows:repeat(2,auto);grid-auto-flow:row;background:rgba(255,255,255,.95);border-radius:20px;padding:8px 6px;gap:4px}
body.pvfs .rail button,body.pvfs .rail a{min-height:54px}
body.pvfs .pvfs-x{display:grid;place-items:center;position:fixed;top:calc(var(--tgtop,0px) + 10px);right:12px;width:36px;height:36px;border-radius:50%;border:0;background:rgba(255,255,255,.92);color:var(--ink);font-size:16px;font-weight:800;z-index:47}
body.pvfs .pvrow{background:#0E0C14;--fsw:min(calc(100vw - 24px),calc((100vh - var(--tgtop,0px) - 230px) / 1.5))}
body.pvfs .pv{width:var(--fsw)!important;height:calc(var(--fsw) * 1.5)!important}

/* 1.226.10: в полном экране переключатель вида крупнее (Юра: «в полноразмерном сделай покрупнее») */
body.pvfs .pv .views{right:10px;top:10px;gap:6px}   /* место как в обычном виде - справа сверху, только крупнее */
body.pvfs .pv .views button{min-height:34px;padding:0 14px;font-size:var(--fs-body);font-weight:800}

/* ── 1.226.11 (Юра: «столько разных шрифтов… это кринж»; эталон - карточка «ПОНРАВИЛОСЬ? ЗОВИ ДРУЗЕЙ!»): один шрифт
   Golos Text на весь интерфейс (Unbounded убран; плитки «Стиль титров» - картинки-образцы, не тронуты). Веса: текст 400/500,
   кнопки 700, заголовки и цены 800 (tools: scratchpad fontfix/norm.py). Жирный <b> без класса - заголовочный 800, в кнопке - 700. ── */
b,strong{font-weight:800}
button b,button strong,.btn b,.chip b{font-weight:700}

/* ── 1.226.11 (Юра): «Ролик готов» в стиле OLA, как «Баланс» 1.226.9. Тексты, кнопки, действия - те же. ── */
.rs0 .acts2{gap:10px}
.rs0 .act{border-radius:28px;background:#fff;box-shadow:0 2px 12px rgba(30,20,60,.07);font:700 var(--fs-head) "Golos Text",sans-serif;padding:12px 10px;gap:4px}
.rs0 .act small{font-size:var(--fs-sub);font-weight:500;text-transform:none;letter-spacing:0}
.rs0 .act.main{background:linear-gradient(135deg,#F59E3C,#EC4F8E 52%,#A855F7);color:#fff;box-shadow:0 12px 28px rgba(236,79,142,.30),0 4px 12px rgba(168,85,247,.18)}
.rs0 .act.main small{color:rgba(255,255,255,.94)}
.rs0 .redo-card{border-radius:28px;padding:16px;box-shadow:0 2px 12px rgba(30,20,60,.07)}
.rs0 .redo-card .rc-b{border-radius:18px}
.rs0 .info{border-radius:28px;padding:12px 12px 12px 14px;background:#fff;box-shadow:0 2px 12px rgba(30,20,60,.07)}
.rs0 .info b{font-weight:800;color:var(--ink)}
.rs0 .info .chip{border-radius:14px}
.rs0 .card{border-radius:28px;box-shadow:0 2px 12px rgba(30,20,60,.07)}
.rs0 .stat2>div{border-radius:28px;box-shadow:0 2px 12px rgba(30,20,60,.07)}
.rs0 .invite-card{border-radius:28px;padding:18px 16px;box-shadow:0 12px 30px rgba(60,20,70,.28);
  background:radial-gradient(120% 90% at 100% 0%,rgba(168,85,247,.55),transparent 60%),radial-gradient(110% 90% at 0% 100%,rgba(190,40,90,.55),transparent 62%),#1A1820}
.rs0 .invite-card .chip{background:linear-gradient(135deg,#F59E3C,#EC4F8E 52%,#A855F7);color:var(--ink);font-weight:700;box-shadow:0 8px 20px rgba(236,79,142,.35)}
#dock .btn.big[data-go=share]{background:linear-gradient(135deg,#F59E3C,#EC4F8E 52%,#A855F7);color:var(--ink);box-shadow:0 10px 24px rgba(236,79,142,.34),0 3px 10px rgba(168,85,247,.22)}
/* 1.226.11 (Юра 25.10 «тут не исправил чтоли»): рефка на «Балансе» - та же тёмная карточка, что «Зови друзей» на «Ролик готов» */
.bal0 .refnote{border:0;border-radius:28px;padding:16px;gap:12px;color:#fff;box-shadow:0 12px 30px rgba(60,20,70,.28);
  background:radial-gradient(120% 90% at 100% 0%,rgba(168,85,247,.55),transparent 60%),radial-gradient(110% 90% at 0% 100%,rgba(190,40,90,.55),transparent 62%),#1A1820}
.bal0 .refnote span,.bal0 .refnote.r2 span b{color:#fff}
.bal0 .refnote.r2 span small{color:#E6E3EC}
.bal0 .refnote .chip{background:linear-gradient(135deg,#F59E3C,#EC4F8E 52%,#A855F7);color:var(--ink);font-weight:700;min-height:44px;border-radius:999px;padding:0 16px;box-shadow:0 8px 20px rgba(236,79,142,.35)}

/* 1.226.13 (Юра «да»): слово правится на месте - кнопка становится полем той же ширины (не уже 60 px), шрифт 16 px - иначе
   iOS увеличивает страницу при фокусе. Высота как у кнопки - ряд слов не прыгает. */
.wd.wdi{box-sizing:border-box;min-width:60px;height:40px;min-height:40px;padding:0 10px;border:2px solid var(--ink);border-radius:12px;background:#fff;color:var(--ink);font:500 16px "Golos Text",sans-serif;outline:none;-webkit-appearance:none;appearance:none}
.wd.wdi.fix{background:#FFF4D6}
.wd.wdi.cut{text-decoration:line-through;color:var(--ink3)}

/* 1.226.13 (Юра, вариант B подсказки полного экрана, canvas/fs_hint.html .b): значок ⤢ слева внизу образца, над нижней
   панелью Instagram; при первом входе - два «вдоха» и расходящееся кольцо. В полном экране значка нет. */
.pv .fsb{position:absolute;left:10px;bottom:44px;z-index:3;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.9);display:grid;place-items:center;box-shadow:0 4px 12px rgba(0,0,0,.22);pointer-events:none}
.pv .fsb svg{width:16px;height:16px}
.pv .fsb::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(255,255,255,.9);opacity:0}
.pv .fsb.breath{animation:fsbr 1.6s ease var(--fsd,600ms) 2}
.pv .fsb.breath::after{animation:fsring 1.6s ease-out var(--fsd,600ms) 2}
@keyframes fsbr{0%,100%{transform:scale(1)}45%{transform:scale(1.14)}}
@keyframes fsring{0%{opacity:.9;transform:scale(.9)}100%{opacity:0;transform:scale(1.6)}}
@media (prefers-reduced-motion:reduce){.pv .fsb.breath,.pv .fsb.breath::after{animation:none}}
body.pvfs .pv .fsb{display:none}

/* 1.231.0: «Написать в поддержку» - иконка в шапке и шторка */
.sup-tip{background:var(--bg);border-radius:16px;padding:12px 14px;margin-bottom:12px}
.sup-tip b{display:block;font-size:var(--fs-body);margin-bottom:6px}
.sup-tip p{margin:4px 0 0;font-size:var(--fs-sub);line-height:1.4;color:var(--ink2);font-weight:500}
.sup-shots{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.sup-shot{position:relative;width:72px;height:96px;border-radius:12px;overflow:hidden;background:var(--bg)}
.sup-shot img{width:100%;height:100%;object-fit:cover;display:block}
.sup-x{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(22,21,26,.72);color:#fff;display:grid;place-items:center;padding:0}
.sup-x svg{width:12px;height:12px}
.sup-add{width:72px;height:96px;border-radius:12px;border:1.5px dashed #C9C4D6;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font:600 var(--fs-sub) "Golos Text",sans-serif;color:var(--ink2)}
.sup-add span{font-size:20px}

/* 1.235.7: анонс на весь экран (marketing/design/app_popups) - поверх вида «Подарка» */
.ann .ann-hero{position:relative;height:190px;width:300px;margin:4px auto 2px}
.ann .ac{position:absolute;top:0;left:50%;width:116px;height:174px;margin-left:-58px;border-radius:16px;background:#2A2531 url(img/bg2.jpg) center 22%/170% auto;box-shadow:0 10px 24px rgba(0,0,0,.45);filter:saturate(.7) brightness(.8)}
.ann .ac.own{z-index:2;filter:none;margin-left:-58px;background:linear-gradient(160deg,#FFA41B,#FF4F8B 55%,#A04BFF);box-shadow:0 0 0 3px #fff,0 14px 30px rgba(0,0,0,.5);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}
.ann .ac.own i{font-style:normal;font-size:38px}
.ann .ac.own b{width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.88);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:18px;padding-left:4px}
.ann .ac.own em{position:absolute;left:8px;bottom:8px;padding:4px 9px;border-radius:999px;font:700 11px "Golos Text",sans-serif;font-style:normal;background:rgba(22,21,26,.72)}
.ann .ann-badge{display:inline-block;margin:0 auto;padding:6px 12px;border-radius:999px;background:var(--grad);font-size:var(--fs-sub);font-weight:800;letter-spacing:.04em}
.ann p b{color:#fff}
.case .case-hero{display:flex;align-items:center;justify-content:center;margin:0 auto 2px;width:min(100%,330px)}
.case .case-hero img{display:block;max-width:100%;max-height:min(300px,36vh);object-fit:contain}
.ann .ann-list{list-style:none;margin:2px auto 0;padding:0;width:min(100%,300px);text-align:left;display:flex;flex-direction:column;gap:6px;font-size:var(--fs-body);line-height:1.45;color:#E6E3EC}
.ann .ann-list li{display:flex;gap:8px;align-items:flex-start}.ann .ann-list b{color:#fff}

/* 1.236.1 (Юра 28.10, выбор «1а ракета-плей», слово «тёмный фирменный»): логотип слева в шапке + узкий баланс */
.hd-logo{flex:0 0 auto;display:flex;align-items:center;gap:6px;min-width:0;margin-right:auto}
.hd-logo svg{width:26px;height:26px;flex-shrink:0}
.hd-logo b{display:inline-block;font:900 17px/1 "Unbounded","Golos Text",sans-serif;letter-spacing:-.3px;white-space:nowrap;transform:skewX(-8deg);
  padding:.25em 3px .08em 0;margin:-.25em 0 -.08em;background:linear-gradient(100deg,#7A2E14 0%,#9C1C55 50%,#5A2A9C 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.hd .hd-r{flex:0 1 auto}
.pill{gap:4px;padding:0 5px 0 9px;font-weight:800;flex-shrink:0}
/* идёт монтаж (кружок с процентом в шапке) - на телефоне места на всё нет: логотип остаётся, баланс на это время
   уступает место кружку (Юра 28.10 «надпись тоже оставалась… количество роликов превращать в этот кругляшок»), после - снова баланс */
@media (max-width:420px){.hd:has(#hprog:not(.hide)) #pill{display:none}}
.pill .balico{width:17px;height:17px;flex-shrink:0}
.pill:not(:has(.tag)){padding-right:11px}
@media (max-width:359px){.hd-logo{gap:5px}.hd-logo svg{width:21px;height:21px}.hd-logo b{font-size:13px}.pill{padding:0 4px 0 7px}.pill .balico{width:15px;height:15px}}

/* 1.237.2 (Юра 28.10, скрины iPhone): «Ролик готов» - «Редактор», «Скачать файл» и «Переделать» видны сразу, без прокрутки;
   «Баланс» - все пакеты видны при открытии. Высота видео - по экрану (место под шапку, заголовок, кнопки и «Поделиться»). */
.rs0 .center .big-h{margin-top:0}
.rs0 .big-p{font-size:var(--fs-sub)}
.rs0 .player{margin-top:8px;width:min(100%,max(120px,calc((100vh - var(--tgtop,0px) - 300px) * 9 / 16)));width:min(100%,max(120px,calc((100dvh - var(--tgtop,0px) - 300px) * 9 / 16)))}
.rs0 .stat2.one{margin-top:10px}
/* «Баланс»: всё мельче на шаг, бейдж рядом с названием, отступы меньше */
.bal0 .h1{margin:2px 0 0}
.bal0 .sec{margin-top:8px}
.bal0 .cnt2{margin-top:8px!important}
.bal0 .cnt2>div{padding:12px 14px}
.bal0 .cnt2 .g .n,.bal0 .cnt2 .n{font-size:34px;line-height:1.05}
.bal0 .list{padding:0 14px}
.bal0 .li{min-height:40px;padding:8px 0}
.bal0 .seg button{min-height:36px}
.bal0 .packs{gap:8px;margin-top:10px!important}
.bal0 .pack{padding:10px 14px 10px 12px;border-radius:22px}
.bal0 .pack .grow{gap:1px}
.bal0 .pack .grow b{font-size:var(--fs-body)}
.bal0 .pack .grow>span:not(.nmr){font-size:var(--fs-cap)}
.bal0 .pack .pr b{font-size:var(--fs-head)}
@media (max-height:740px){.bal0 .cnt2 .k{font-size:var(--fs-cap);line-height:1.25}.bal0 .pack .grow .hot{height:18px;padding:0 6px}.bal0 .cnt2>div{padding:10px 12px}.bal0 .cnt2 .g .n,.bal0 .cnt2 .n{font-size:28px}.bal0 .li{min-height:36px;padding:6px 0}.bal0 .pack{padding:8px 12px 8px 10px}}
/* четыре кнопки под видео (К3) */
.rs0 .acts4{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}
.rs0 .a4w{position:relative;display:flex;min-width:0}
.rs0 .a4{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;border:0;background:none;padding:0;font:700 var(--fs-sub) "Golos Text",sans-serif;color:var(--ink)}
.rs0 .a4 .ic{width:60px;height:60px;border-radius:20px;background:#fff;display:grid;place-items:center;box-shadow:0 2px 12px rgba(30,20,60,.08)}
.rs0 .a4.main .ic{background:linear-gradient(135deg,#F59E3C,#EC4F8E 52%,#A855F7);box-shadow:0 10px 22px rgba(236,79,142,.32)}
.rs0 .a4 b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.rs0 .a4.off .ic{opacity:.45}
.rs0 .q4{position:absolute;top:-6px;right:calc(50% - 38px);width:22px;height:22px;border-radius:50%;border:0;padding:0;background:#16151A;color:#fff;font:800 12px/22px "Golos Text",sans-serif}
.rs0 .q4::after{content:"";position:absolute;inset:-10px}
@media (max-width:359px){.rs0 .a4 .ic{width:52px;height:52px;border-radius:17px}.rs0 .q4{right:calc(50% - 34px)}}
/* «Баланс»: «Оферта» - справа над кнопкой оплаты, кнопка ниже; «Монтаж» в меню уже (Б2) */
.dock .subl.pay{justify-content:flex-end;margin:0 4px -2px}
.dock .subl.pay a{min-height:22px;font-size:var(--fs-cap);font-weight:600;position:relative}
.dock .subl.pay a::after{content:"";position:absolute;inset:-10px -8px}
.dock .btn.pay{min-height:46px}
.nav .fab{flex:0 0 40px;width:46px;height:40px;border-radius:14px}
/* 1.238.0: иконки набора ЗАЛЕТАЙ вместо эмодзи (01a_icons.js) - градиентная линия без заливки; на тёмном/градиенте - цвет текста */
.icw{display:inline!important;flex:0 1 auto!important;min-width:0!important;gap:0!important;font:inherit!important;color:inherit!important;letter-spacing:inherit!important;text-transform:inherit!important;padding:0!important;margin:0!important;background:none!important;border:0!important}
.icw.nw{display:inline-block!important;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.icn{position:relative!important;display:inline-block!important;width:1.15em!important;height:1.15em!important;vertical-align:-.2em!important;overflow:hidden!important;line-height:1;flex:none!important;margin:0!important;padding:0!important;background:none!important;border:0!important;font-size:inherit!important;color:inherit!important}
.icn svg{display:inline-block;vertical-align:top;width:100%;height:100%;fill:none;stroke:url(#zgI);stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.icn.cur svg{stroke:currentColor}
.icn svg .kc{fill:url(#zgI);stroke:none;font:800 12px "Golos Text",sans-serif}
.icn.cur svg .kc{fill:currentColor}
.icn-t{display:inline-block!important;position:static!important;width:0!important;height:0!important;overflow:hidden!important;opacity:0!important;font-size:0!important;padding:0!important;margin:0!important;vertical-align:top}
.rs0 .a4.busy .ic{animation:a4p 1s ease-in-out infinite}
@keyframes a4p{50%{opacity:.45}}
/* 1.241.2: «Скачать» - прогресс на плитке полного размера: кольцо по краю плитки и процент внутри */
.rs0 .a4.dlp .ic{position:relative;animation:none}
.rs0 .a4 .dlring{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke-width:4}
.rs0 .a4 .dlring .bg{stroke:#ECEAF1}
.rs0 .a4 .dlring .fg{stroke:url(#dlg);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .3s linear}
.rs0 .a4 .dlpc{position:relative;font:800 15px/1 "Golos Text",sans-serif;background:linear-gradient(135deg,#F59E3C,#EC4F8E 52%,#A855F7);-webkit-background-clip:text;background-clip:text;color:transparent}
.rs0 .a4.dlr b{white-space:normal;line-height:1.15;text-align:center}
.rs0 .a4.dlr .ic{box-shadow:0 0 0 2px #EC4F8E,0 2px 12px rgba(30,20,60,.08)}
