/* ============================================================
   БанкетCRM — главная страница
   Собрано из утверждённых прототипов (_прототипы/01, 04, 07, 08).
   Правило: значения не переизобретаются — см. ДИЗАЙН-РЕШЕНИЯ.md.
   ============================================================ */

/* ─── токены ─── */
:root{
  --cream:#FAF9F5;--surface:#fff;--tint:#F5F4EE;--soft:#EDE9DE;
  --ink:#3D3929;--muted:#67665F;--line:#DAD9D4;
  --terra:#C96442;--terra-h:#B05437;--err:#B3261E;
  /* терракота как ТЕКСТ — затемнённая: #C96442 на креме даёт 3.7 при норме AA 4.5.
     Заливка кнопок остаётся --terra: там белый текст ≥14px semibold, для него норма 3.0. */
  --terra-text:#A04A2F;
  --eo:cubic-bezier(0,0,0.2,1);--es:cubic-bezier(0.4,0,0.2,1);
}

/* ─── база ─── */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--cream);color:var(--ink);font-family:'Golos Text',system-ui,sans-serif;
     -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button,input{font-family:inherit}
button{cursor:pointer}
img,svg{display:block;max-width:100%}
a:focus-visible{outline:2px solid var(--terra);outline-offset:3px;border-radius:2px}

.wrap{max-width:1152px;margin:0 auto;padding-left:32px;padding-right:32px}
.wrap-n{max-width:860px;margin:0 auto;padding-left:32px;padding-right:32px}
.sec{padding-top:96px;padding-bottom:96px}
[id]{scroll-margin-top:88px} /* якоря не ныряют под шапку 72px */

/* типографика */
h1{font-family:Spectral,Georgia,serif;font-weight:700;letter-spacing:-.015em;line-height:1.08;
   font-size:clamp(33px,3.7vw,47px);margin:16px 0 18px}
h1 em{font-style:normal;color:var(--terra-text)}
h2{font-family:Spectral,Georgia,serif;font-weight:600;font-size:32px;line-height:1.2;letter-spacing:-.01em;margin-bottom:16px}
h3{font-family:Spectral,Georgia,serif;font-weight:600;font-size:20px;line-height:1.25}
/* Категория продукта. Была ярлыком (12px, капслок, muted) — то есть самым
   мелким и бледным стилем страницы на самой несущей фразе. Теперь обычное
   предложение основным цветом: его читают, а не пропускают как декорацию. */
.ov{font-size:18px;line-height:1.4;color:var(--ink);font-weight:500;margin-bottom:14px}
.k{font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--terra-text);font-weight:600}
.k+h2{margin-top:12px}
.lead{font-size:19px;line-height:1.55;color:var(--muted);max-width:33em}
.sub-p{font-size:17px;line-height:1.65;color:var(--muted);max-width:56ch}

/* ─── кнопки (прототип 3/8) ─── */
.btn{display:inline-block;text-align:center;text-decoration:none;
     border:1px solid transparent;border-radius:8px;font-weight:600;font-size:16px;padding:15px 26px;
     transition:background .3s var(--eo),color .3s var(--eo),border-color .3s var(--eo),transform .12s var(--eo)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:2px solid var(--terra);outline-offset:3px}
.pri{background:var(--terra);color:#fff}.pri:hover{background:var(--terra-h)}
.out{background:none;color:var(--terra-text);border-color:var(--terra)}.out:hover{background:var(--terra);color:#fff}
.sm{font-size:14px;padding:9px 17px}
.btn:disabled{opacity:.5;cursor:default;transform:none}
.pri:disabled:hover{background:var(--terra)}
#navbtn{transition:background .45s var(--eo),color .45s var(--eo),border-color .45s var(--eo);transition-delay:.12s}

/* ─── шапка (прототип 8) ─── */
.hdr{position:sticky;top:0;z-index:50;height:72px;background:transparent;border-bottom:1px solid transparent;
     color:var(--ink);transition:background .45s var(--es),border-color .45s var(--es),transform .35s var(--eo)}
.hdr.stuck{background:var(--cream);border-bottom-color:var(--line)}
.hdr .in{height:100%;max-width:1152px;margin:0 auto;padding:0 32px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.mark{font-family:Spectral,Georgia,serif;font-weight:600;font-size:20px;letter-spacing:-.01em;color:var(--ink);text-decoration:none}
/* «CRM» терракотой — так же набран логотип в самом продукте
   (templates/cabinet/base.html), иначе кабинет и сайт разъезжаются */
.mark span{color:var(--terra)}
.nav{display:flex;align-items:center;gap:26px;font-size:14.5px;color:var(--muted)}
.nav a:not(.btn){color:inherit;text-decoration:none;transition:color .3s var(--es)}
.nav a:not(.btn):hover{color:var(--ink)}
#sentinel{height:120px;margin-top:-120px;pointer-events:none}

/* ─── первый экран (прототип 8) ─── */
/* Всё выровнено по верху, а не по центру. Раньше карточка демо (она спаннер
   на обе строки) растягивала грид: текст падал к оптическому центру, и первая
   строка заголовка начиналась примерно на 95px ниже верха демо — в кадр
   сначала входил чужой интерфейс, а потом наш заголовок.
   Вторая строка 1fr, а не auto: излишек высоты спаннера иначе делится между
   обеими строками и отрывает кнопку от лида на сотню пикселей. С 1fr весь
   излишек уходит вниз, а кнопка остаётся прижатой к верху своей строки. */
.hero{display:grid;grid-template-columns:7fr 5fr;grid-template-rows:auto 1fr;gap:0 56px;
      align-items:start;padding-top:64px;padding-bottom:88px}
.hero>div:first-child{grid-column:1;grid-row:1}
.side{grid-column:2;grid-row:1 / span 2}
.cta{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:30px;
     grid-column:1;grid-row:2;align-self:start}
/* Цена — единственное число на первом экране и наше преимущество перед
   категорией, где её прячут за «запросите демо». 16px рядом с кнопкой это
   преимущество не подавали. Пробный месяц строкой ниже: так делают все,
   кто продаёт подписку, и это снимает страх перед кнопкой. */
.price{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.price small{display:block;font-size:13.5px;font-weight:400;color:var(--muted);margin-top:4px}
.demolink{display:inline-flex;align-items:center;gap:7px;font-size:15px;color:var(--terra-text);text-decoration:none;
          border-bottom:1px solid transparent;transition:border-color .3s var(--es)}
.demolink:hover{border-color:var(--terra)}
.demolink svg{flex-shrink:0}

/* ─── живое демо (прототип 2/8) ─── */
.side{display:flex;flex-direction:column;align-items:center}
/* Подпись демо. Была контурной пилюлей с пульсирующей точкой — единственная
   зацикленная анимация страницы обслуживала второстепенную надпись и тянула
   взгляд к чужому интерфейсу раньше, чем человек успевал прочитать, куда попал.
   Теперь просто строка основным цветом: она называет, а не мигает. */
.demo-cap{display:block;text-align:center;font-size:14px;color:var(--ink);
          font-weight:500;margin-bottom:14px;max-width:34ch}
.arch{width:372px;background:var(--surface);border:1px solid var(--line);
      border-radius:98px 98px 12px 12px;padding:34px 22px 22px}
.rname{font-family:Spectral,Georgia,serif;font-size:22px;font-weight:600;text-align:center;line-height:1.1}
.flourish{display:block;margin:5px auto 0;color:var(--terra)}
.step{font-size:12px;color:var(--muted);text-align:center;margin-top:9px}
.ctx{font-size:12.5px;color:var(--muted);text-align:center;margin-top:3px}
#list{margin-top:14px}
.dish{display:flex;justify-content:space-between;align-items:center;padding:12px 10px;margin:0 -10px;
      border-bottom:1px solid var(--soft);border-radius:8px;transition:background .3s var(--es)}
.dish.act{background:var(--tint)}
.nm{font-size:14.5px;line-height:1.3}
.pr{font-size:12.5px;color:var(--muted);margin-top:3px}
.stp{display:flex;align-items:center;gap:9px}
.stp button{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:var(--surface);
            font-size:17px;line-height:1;color:var(--ink);transition:all .2s var(--eo)}
.stp button.plus{border-color:var(--terra);color:var(--terra)}
.stp button:hover{background:var(--tint)}
.stp button.plus:hover{background:var(--terra);color:#fff}
.stp button:active{transform:scale(.93)}
.stp button:disabled{opacity:.3;cursor:default}
.stp button:focus-visible{outline:2px solid var(--terra);outline-offset:3px}
.qty{min-width:20px;text-align:center;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.qty.zero{color:var(--muted);font-weight:400}
.sum{border-top:1px solid var(--line);margin-top:14px;padding-top:14px;display:flex;justify-content:space-between;align-items:flex-end}
.sum .l{font-size:13px;color:var(--muted)}
.sum .v{font-size:27px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1;transition:transform .13s var(--eo)}
.sum .v.bump{transform:scale(1.04)}
.per{font-size:12.5px;color:var(--muted);text-align:right;margin-top:7px;min-height:17px;opacity:0;transition:opacity .3s var(--es)}
.per.on{opacity:1}
.per.warn{color:var(--terra-text)}
.hint{font-size:12.5px;color:var(--muted);text-align:center;margin-top:11px;transition:opacity .3s var(--es)}
.hint.off{opacity:0}

/* ─── появление блоков (прототип 3/8): только при включённом JS ─── */
html.js .rev{opacity:0;transform:translateY(16px);transition:opacity .5s var(--es),transform .5s var(--eo)}
html.js .rev.on{opacity:1;transform:none}

/* ─── лента поводов (прототип 4) ─── */
.marq{overflow:hidden;padding:26px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
      -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
      mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.marq .lane{display:flex;width:max-content;animation:slide 46s linear infinite}
.marq:hover .lane{animation-play-state:paused}
.marq .set{display:flex;flex-shrink:0}
.marq span{font-family:Spectral,Georgia,serif;font-size:22px;color:var(--muted);padding:0 28px;white-space:nowrap;
           display:flex;align-items:center;gap:28px}
.marq span::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--line)}
@keyframes slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ─── «Путь одного банкета»: вводка ─── */
.put-intro{padding-top:96px;padding-bottom:40px}
/* ─── «Путь одного банкета»: sticky-трек (прототип 1) ─── */
.track{position:relative;height:320vh}
/* svh, а не vh: на iOS обычный vh считается по развёрнутому окну, без учёта
   сворачивающейся панели браузера. При overflow:hidden низ сцены — подпись
   кадра и нижние станции — подрезался, пока панель не свернётся. vh оставлен
   строкой выше как запасной для браузеров без svh. */
.stage{position:sticky;top:0;height:100vh;height:100svh;
       display:flex;align-items:center;overflow:hidden}
.scene-wrap{width:100%;max-width:1120px;margin:0 auto;padding:0 32px;display:grid;grid-template-columns:5fr 7fr;gap:56px;align-items:center}

.rail{position:relative;padding-left:28px}
.rail::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--line)}
.rail-fill{position:absolute;left:5px;top:6px;width:1px;background:var(--terra);height:0;transition:height .4s var(--eo)}
.st{position:relative;padding:11px 0;opacity:.32;transition:opacity .4s var(--es)}
.st.on{opacity:1}
.st .dot{position:absolute;left:-28px;top:17px;width:11px;height:11px;border-radius:50%;background:var(--cream);border:1px solid var(--line);transition:all .4s var(--es)}
.st.on .dot{background:var(--terra);border-color:var(--terra);transform:scale(1.12)}
.st .who{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:600}
.st h3{font-size:20px;margin:3px 0 0}
.st p{font-size:14px;line-height:1.5;color:var(--muted);margin-top:5px;max-height:0;overflow:hidden;opacity:0;transition:max-height .4s var(--es),opacity .3s var(--es),margin-top .4s var(--es)}
.st.on p{max-height:80px;opacity:1}

.viewport{position:relative;height:566px;display:flex;align-items:center;justify-content:center}
.frame{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(14px);transition:opacity .4s var(--es),transform .4s var(--eo);pointer-events:none}
.frame.on{opacity:1;transform:translateY(0)}

.phone{width:322px;background:var(--surface);border:1px solid var(--line);border-radius:62px 62px 12px 12px;padding:30px 20px 20px}
.browser{width:100%;max-width:520px;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.bbar{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--tint)}
.bbar i{width:7px;height:7px;border-radius:50%;background:var(--line);display:block}
.bbar span{margin-left:8px;font-size:11px;color:var(--muted)}
.bin{padding:16px}
.cap{position:absolute;left:0;right:0;bottom:-34px;text-align:center;font-size:12px;color:var(--muted)}

/* плейсхолдер под будущий скриншот: крем-фон + подпись, какой кадр встанет */
.js-shot-placeholder{background:var(--cream);border:1px solid var(--soft);border-radius:10px;
  display:flex;align-items:center;justify-content:center;text-align:center;
  padding:18px;font-size:12.5px;line-height:1.5;color:var(--muted)}
.phone .js-shot-placeholder{height:420px}
.browser .js-shot-placeholder{height:280px;margin:0;border:0;border-radius:0;background:var(--cream)}

/* ─── разделители (прототип 7) ─── */
.dcase{padding:30px 0;text-align:center}
.div-wrap{color:var(--line);margin:0 auto}
.div-wrap.mid{color:#C7C5BD}

/* ─── перелом: кино кончилось, дальше работают руками (прототип 11) ─── */
.turn{background:var(--tint);border-top:1px solid var(--line);border-bottom:1px solid var(--line);
      padding-top:84px;padding-bottom:84px}
.turn-grid{display:grid;grid-template-columns:7fr 5fr;gap:56px;align-items:end}
.turn-l{font-size:15px;color:var(--muted)}
.turn-h{font-family:Spectral,Georgia,serif;font-weight:600;font-size:clamp(30px,4vw,46px);
        line-height:1.1;letter-spacing:-.015em;margin-top:10px}
.turn-p{font-size:16px;line-height:1.65;color:var(--muted);max-width:40ch}
.turn-hand{display:inline-flex;align-items:center;gap:9px;margin-top:18px;font-size:14px;
           color:var(--terra-text);font-weight:600}
.turn-hand svg{flex-shrink:0}

/* ─── живые остановки: общее (прототипы 9, 10, 11) ─── */
.stop{padding-top:96px;padding-bottom:96px}
.stop.tinted{background:var(--tint);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.stop-head{max-width:660px}
.stop-head h2{margin-top:12px;font-size:clamp(28px,3.2vw,38px);line-height:1.14}
.browser.wide{max-width:880px}
.mt34{margin:34px auto 0}
/* вывод под экраном: узкая колонка справа — держит диагональ композиции */
.note{margin-top:34px;margin-left:auto;max-width:50ch;font-size:16px;line-height:1.6;color:var(--muted);
      border-left:1px solid var(--terra);padding-left:18px}
.note b{color:var(--ink);font-weight:600}

/* ─── остановка 1: занятость (прототип 9) ─── */
.sw-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
        margin-top:52px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.sw-bar .lbl{font-size:13px;color:var(--muted);padding-bottom:6px}
.seg{display:inline-flex;background:var(--tint);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}
.seg button{font-size:14px;font-weight:500;color:var(--muted);padding:9px 18px;border-radius:7px;
            background:none;border:0;
            transition:background .3s var(--es),color .3s var(--es),box-shadow .3s var(--es)}
.seg button[aria-selected="true"]{background:var(--surface);color:var(--ink);font-weight:600;
            box-shadow:inset 0 0 0 1px var(--line)}
.seg button:hover:not([aria-selected="true"]){color:var(--ink)}
.seg button:focus-visible{outline:2px solid var(--terra);outline-offset:2px}

/* высота коробки едет за активной стороной: рамка кабинета и телефон разной
   высоты, иначе под кабинетом остаётся дыра в пол-экрана */
.stagebox{margin-top:34px;position:relative;overflow:hidden;min-height:320px;
          transition:height .42s var(--eo)}
.pane{position:absolute;inset:0 auto auto 0;width:100%;display:flex;justify-content:center;
      opacity:0;transform:translateY(10px);pointer-events:none;
      transition:opacity .34s var(--es),transform .34s var(--eo)}
.pane.on{opacity:1;transform:none;pointer-events:auto}
/* без JS переключателя нет — показываем обе стороны подряд, это честно */
html:not(.js) .stagebox{height:auto!important;min-height:0}
html:not(.js) .pane{position:static;opacity:1;transform:none;pointer-events:auto;margin-top:22px}

.cab{display:grid;grid-template-columns:1fr 296px}
.cab-cal{padding:22px 24px 24px}
.cab-day{border-left:1px solid var(--line);padding:22px 22px 24px;background:var(--cream)}
.mlabel{font-family:Spectral,Georgia,serif;font-size:19px;font-weight:600;margin-bottom:4px}
.mnote{font-size:12.5px;color:var(--muted);margin-bottom:16px}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:6px}
.cal-dow span{text-align:center;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.03em}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-cell{position:relative;height:56px;border-radius:9px;display:flex;flex-direction:column;
          align-items:center;justify-content:center;gap:5px;font-size:15px;
          background:none;border:0;color:inherit;
          transition:background .22s var(--es),box-shadow .22s var(--es),color .22s var(--es)}
.cal-cell:hover{background:var(--tint)}
.cal-cell:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
.cal-cell.busy{background:var(--tint)}
.cal-cell.sel{box-shadow:inset 0 0 0 1.5px var(--terra);background:var(--surface)}
.cal-cell.sel.busy{background:var(--tint)}
.dots{display:flex;gap:3px;height:5px}
.dots i{width:5px;height:5px;border-radius:50%;background:var(--terra);display:block}

.dtitle{font-family:Spectral,Georgia,serif;font-size:17px;font-weight:600}
.dsub{font-size:12px;color:var(--muted);margin-top:2px;margin-bottom:14px}
.hall{padding:11px 0;border-top:1px solid var(--line)}
.hall:first-of-type{border-top:0}
.hall .n{font-size:14px;font-weight:600;display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.hall .hcap{font-size:12px;color:var(--muted);font-weight:400}
.hall .who{font-size:12.5px;color:var(--terra-text);font-weight:500;margin-top:3px}
.hall .meta{font-size:12px;color:var(--muted);margin-top:2px;font-variant-numeric:tabular-nums}
.hall .free{font-size:12.5px;color:var(--muted);margin-top:3px}
.legend{margin-top:18px;font-size:11.5px;color:var(--muted);display:flex;align-items:center;gap:7px}
.legend i{width:5px;height:5px;border-radius:50%;background:var(--terra);display:block}

.gphone{width:342px;background:var(--surface);border:1px solid var(--line);
        border-radius:62px 62px 12px 12px;padding:34px 20px 22px}
.g-rt{font-family:Spectral,Georgia,serif;font-size:19px;font-weight:600;text-align:center;line-height:1.15}
.g-sub{font-size:12px;color:var(--muted);text-align:center;margin-top:3px;margin-bottom:18px}
/* 44px — нижняя граница тач-цели. Было 42, при том что соседний календарь
   кабинета на телефоне поднят до 48: календарь гостя оставался единственным
   местом, где палец промахивался. */
.g-cal .cal-cell{height:44px;font-size:14px;gap:0}
.g-cal .cal-cell:disabled{color:#B6B4AC;cursor:default}
.g-cal .cal-cell:disabled:hover{background:none}
/* дата, где занято всё: у гостя она не выбирается */
.g-cal .cal-cell.blocked{box-shadow:inset 0 0 0 1px var(--line);color:#B6B4AC;
  background:repeating-linear-gradient(135deg,transparent 0 5px,var(--tint) 5px 10px)}
.g-halls{margin-top:18px;border-top:1px solid var(--line)}
.g-line{font-size:12.5px;color:var(--muted);margin-top:12px}
.g-hall{padding:12px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;
        justify-content:space-between;gap:12px}
.g-hall.off{opacity:.5}
.g-hall .n{font-size:14px;font-weight:600}
.g-hall .c{font-size:12px;color:var(--muted);margin-top:2px}
.g-hall .c.small{color:var(--terra-text)}
.tag{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:99px;padding:5px 12px;white-space:nowrap}
.pick{font-size:13px;font-weight:600;color:#fff;background:var(--terra);border-radius:8px;padding:8px 16px;white-space:nowrap}
.pick.quiet{background:none;color:var(--muted);border:1px solid var(--line)}
.g-none{font-size:13px;color:var(--terra-text);padding:16px 0 4px;line-height:1.5}

/* ─── остановка 2: заявка (прототип 10) ─── */
.obin{padding:20px 22px 22px}
.obin-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}
.obin-h .t{font-family:Spectral,Georgia,serif;font-size:19px;font-weight:600}
.obin-h .c{font-size:12px;color:var(--muted)}
.ord{border-top:1px solid var(--line)}
.ord:last-of-type{border-bottom:1px solid var(--line)}
.ord-btn{width:100%;display:flex;align-items:center;gap:14px;padding:15px 4px;
         background:none;border:0;color:inherit;text-align:left;transition:background .22s var(--es)}
.ord-btn:hover{background:var(--tint)}
.ord-btn:focus-visible{outline:2px solid var(--terra);outline-offset:-2px;border-radius:6px}
.ord-btn .name{flex:1;min-width:0}
.ord-btn .t{display:block;font-size:15px;font-weight:600;line-height:1.3}
.ord-btn .s{display:block;font-size:12.5px;color:var(--muted);margin-top:3px}
.badge{font-size:11.5px;font-weight:600;border-radius:99px;padding:4px 11px;white-space:nowrap;
       border:1px solid var(--line);color:var(--muted)}
.badge.neg{border-color:#E3C4B6;background:#FBF1EC;color:var(--terra-text)}
.ord-sum{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.chev{width:16px;height:16px;flex-shrink:0;color:var(--muted);transition:transform .38s var(--es),color .38s var(--es)}
.ord.on .chev{transform:rotate(90deg);color:var(--terra-text)}
/* раскрытие тем же приёмом, что вопросы: 0fr → 1fr */
.ord-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .38s var(--es)}
.ord.on .ord-body{grid-template-rows:1fr}
.ord-body>div{overflow:hidden}
html:not(.js) .ord-body{grid-template-rows:1fr}
.card{display:grid;grid-template-columns:270px 1fr;gap:26px;padding:4px 4px 22px}
.box{border:1px solid var(--line);border-radius:10px;padding:13px 15px;background:var(--cream)}
.box.acc{border-color:var(--terra);border-width:1.5px;background:var(--surface)}
.box .lbl{font-size:11px;color:var(--muted)}
.conf{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.conf span{font-size:11.5px;font-weight:600;border:1px solid var(--line);border-radius:99px;padding:4px 10px;color:var(--muted)}
/* единственный цвет вне палитры: подтверждение не должно совпадать с занятостью */
.conf span.yes{border-color:#C9D9C6;background:#F1F6F0;color:#3F6B3A}
.card-hint{font-size:11.5px;color:var(--muted);line-height:1.45;margin-top:10px}
.pars{margin-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:11px 14px}
.pars .f{font-size:11px;color:var(--muted)}
.pars .v{font-size:13.5px;margin-top:2px}
.pars .wide-c{grid-column:1 / -1}
.items .row{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.items .row .qq{display:block;color:var(--muted);font-size:12.5px;margin-top:2px}
.items .row b{font-variant-numeric:tabular-nums;font-weight:500}
.items .row.more{color:var(--muted);font-size:12.5px}
.items .row.tot{border-bottom:0;padding-top:13px;font-size:16px;font-weight:600}
.items .row.tot b{font-size:19px;font-family:Spectral,Georgia,serif}
.items .row.small{font-size:13px;color:var(--muted)}
.docbtn{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:8px;
        padding:10px 16px;font-size:14px;font-weight:600;margin-top:16px;background:var(--surface);
        color:inherit;transition:background .3s var(--es),border-color .3s var(--es)}
.docbtn:hover{background:var(--tint);border-color:var(--terra)}
.docbtn:focus-visible{outline:2px solid var(--terra);outline-offset:2px}

/* ─── остановка 3: документ (прототип 10) ─── */
.pdf-grid{display:grid;grid-template-columns:5fr 7fr;gap:64px;align-items:start;margin-top:44px}
.after{font-size:13px;color:var(--muted);margin-top:14px;max-width:34ch;opacity:0;transition:opacity .4s var(--es)}
.after.on{opacity:1}
.sheet{width:100%;max-width:470px;aspect-ratio:1 / 1.414;background:var(--surface);
       border:1px solid var(--line);border-radius:4px;padding:34px 34px 26px;
       display:flex;flex-direction:column;position:relative;overflow:hidden}
.sheet.empty{align-items:center;justify-content:center;background:var(--tint);border-style:dashed}
.sheet .ph{font-size:13px;color:var(--muted);text-align:center;max-width:24ch;line-height:1.5}
.r{opacity:0;transform:translateY(7px);transition:opacity .34s var(--es),transform .34s var(--eo)}
.r.in{opacity:1;transform:none}
/* без JS документ виден целиком: страница должна читаться и так */
html:not(.js) .r{opacity:1;transform:none}
html:not(.js) .sheet{background:var(--surface);border-style:solid}
html:not(.js) .sheet .ph{display:none}
.s-rt{font-family:Spectral,Georgia,serif;font-size:20px;font-weight:600}
.s-doc{font-size:11.5px;color:var(--muted);margin-top:3px}
.s-rule{height:1px;background:var(--line);margin:14px 0}
.s-meta{font-size:12px;line-height:1.65;color:var(--muted)}
.s-meta b{color:var(--ink);font-weight:500}
.s-th{display:flex;justify-content:space-between;font-size:10.5px;letter-spacing:.06em;
      text-transform:uppercase;color:var(--muted);padding:9px 0;border-bottom:1px solid var(--line);margin-top:12px}
.s-row{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;padding:7px 0;border-bottom:1px solid var(--soft)}
.s-row .n{flex:1;min-width:0}
.s-row .qn{width:52px;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}
.s-row .am{width:78px;text-align:right;font-variant-numeric:tabular-nums}
.s-row.dim{color:var(--muted)}
.s-sums{margin-top:auto;padding-top:14px}
.s-sum{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);padding:4px 0}
.s-tot{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--line);
       margin-top:9px;padding-top:11px;font-size:14px;font-weight:600}
.s-tot b{font-family:Spectral,Georgia,serif;font-size:21px;font-variant-numeric:tabular-nums}
.s-note{font-size:10.5px;color:var(--muted);line-height:1.5;margin-top:12px;padding-top:10px;border-top:1px solid var(--soft)}

/* ─── сводка «шесть инструментов» ───
   Названия появляются ПОСЛЕ того, как человек всё потрогал. Поэтому не список
   с иконками, а одна фраза: контраст масштабов вместо карточек. */
.sec-sum{padding-top:88px;padding-bottom:88px}
.sum-lead{font-size:17px;line-height:1.6;color:var(--muted);max-width:46ch}
.sum-list{margin-top:18px;font-family:Spectral,Georgia,serif;font-weight:600;
          font-size:clamp(22px,2.9vw,34px);line-height:1.35;letter-spacing:-.01em;max-width:22ch}
.sum-note{margin-top:22px;font-size:15px;line-height:1.65;color:var(--muted);
          max-width:52ch;margin-left:auto;border-left:1px solid var(--line);padding-left:18px}
@media(max-width:940px){
  .sec-sum{padding-top:56px;padding-bottom:56px}
  .sum-list{max-width:none}
  .sum-note{margin-left:0}
}

/* ─── цена (прототип 12) ───
   Было: карточка в рамке, разделённая пополам. Стало: число-герой в потоке
   страницы и арифметика двумя полосами, где длина и есть деньги. */
.band{background:var(--tint);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.price-grid{display:grid;grid-template-columns:5fr 7fr;gap:72px;align-items:start;margin-top:52px}
.hero-num{font-family:Spectral,Georgia,serif;font-weight:600;
          font-size:clamp(72px,9vw,124px);line-height:.92;letter-spacing:-.03em;
          font-variant-numeric:tabular-nums;white-space:nowrap}
.hero-sub{font-size:17px;color:var(--muted);margin-top:12px}
.hero-inc{margin-top:26px;font-size:15px;line-height:1.7;color:var(--muted);max-width:30ch}
.hero-inc b{color:var(--ink);font-weight:600}
.calc-lbl{font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:600}
.barrow{margin-top:26px}
.barrow:first-of-type{margin-top:18px}
.barrow .top{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.barrow .t{font-size:16px;font-weight:600}
.barrow .t em{display:block;font-style:normal;font-size:13.5px;color:var(--muted);font-weight:400;margin-top:3px}
.barrow .v{font-family:Spectral,Georgia,serif;font-size:26px;font-weight:600;
           font-variant-numeric:tabular-nums;white-space:nowrap}
/* --soft на тонированном фоне почти не виден, полоса «чужих» денег берёт --line */
.line{height:10px;margin-top:12px;background:var(--line);border-radius:2px;transform-origin:left center;
      transform:scaleX(0);transition:transform 1.05s var(--eo)}
.line.us{background:var(--terra)}
html.js .barrow.on .line{transform:scaleX(1)}
html:not(.js) .line{transform:scaleX(1)}
.verdict-l{border-top:1px solid var(--line);margin-top:34px;padding-top:22px;
           font-family:Spectral,Georgia,serif;font-weight:600;font-size:clamp(21px,2.4vw,27px);line-height:1.25}
.calc-note{margin-top:14px;font-size:14px;line-height:1.6;color:var(--muted);max-width:52ch}
.price-cta{margin-top:44px;display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.price-cta .small{font-size:14px;color:var(--muted)}

/* ─── «Рядом с тем, что у вас есть» (прототип 12) ───
   Было: три одинаковые карточки в ряд. Стало: три строки редакционной
   вёрстки — только линии, контраст масштабов, итог справа. */
.rows{margin-top:44px;border-top:1px solid var(--line)}
.crow2{display:grid;grid-template-columns:4fr 8fr;gap:56px;padding:30px 0;border-bottom:1px solid var(--line);
       transition:background .3s var(--es)}
.crow2:hover{background:var(--tint)}
.crow2 .who{font-family:Spectral,Georgia,serif;font-size:clamp(20px,2.2vw,25px);font-weight:600;line-height:1.2}
.crow2 .who em{display:block;font-style:normal;font-family:'Golos Text',system-ui,sans-serif;
               font-size:13px;color:var(--muted);font-weight:500;margin-top:7px;letter-spacing:.02em}
.crow2 .vd{font-size:clamp(17px,1.9vw,20px);line-height:1.4;font-weight:600}
.crow2 .ex{font-size:15.5px;line-height:1.65;color:var(--muted);margin-top:10px;max-width:56ch}
.rows-sum{margin-top:34px;font-family:Spectral,Georgia,serif;font-size:clamp(20px,2.3vw,26px);
          line-height:1.35;font-weight:600;max-width:26ch;margin-left:auto;text-align:right}

/* ─── FAQ (прототип 4) ─── */
.faq{margin-top:8px;border-top:1px solid var(--line)}
.q{border-bottom:1px solid var(--line)}
.q>button{width:100%;background:none;border:0;text-align:left;padding:20px 44px 20px 0;position:relative;
          font-size:17px;font-weight:600;color:var(--ink);min-height:44px;transition:color .3s var(--es)}
.q>button:hover{color:var(--terra-text)}
.q>button:focus-visible{outline:2px solid var(--terra);outline-offset:-2px;border-radius:6px}
.q>button::after{content:"";position:absolute;right:8px;top:50%;width:9px;height:9px;
  border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);
  transform:translateY(-70%) rotate(45deg);transition:transform .35s var(--eo),border-color .3s var(--es)}
.q.open>button::after{transform:translateY(-30%) rotate(-135deg);border-color:var(--terra)}
.a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .38s var(--eo)}
.q.open .a{grid-template-rows:1fr}
.a>div{overflow:hidden}
.a p{padding-bottom:22px;padding-right:44px;font-size:16px;line-height:1.65;color:var(--muted)}
/* без JS вопросы открыты — читается сверху вниз */
html:not(.js) .a{grid-template-rows:1fr}

/* ─── форма заявки (прототип 4) ─── */
.close-sec{background:var(--soft);border-top:1px solid var(--line)}
.close-sec>.wrap-n>p{font-size:16px;line-height:1.65;color:var(--muted);max-width:62ch}
.form{margin-top:26px;display:grid;gap:14px;max-width:460px}
.f label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.f input{width:100%;height:50px;background:var(--surface);border:1px solid var(--line);border-radius:8px;
         padding:0 15px;font-size:16px;color:var(--ink);transition:border-color .25s var(--es),box-shadow .25s var(--es)}
.f input::placeholder{color:#B5B3AC}
.f input:hover{border-color:var(--muted)}
.f input:focus{outline:none;border-color:var(--terra);box-shadow:0 0 0 3px rgba(201,100,66,.14)}
.f.bad input{border-color:var(--err)}
.f .err{font-size:13px;color:var(--err);margin-top:6px;display:none}
.f.bad .err{display:block}
.actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:4px}
/* Ловушка для ботов. Не display:none и не hidden: часть ботов такие поля
   пропускает именно потому, что их прячут очевидным способом. Уводим за край
   экрана — для человека невидимо, для разметки поле обычное. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Согласие на обработку ПДн. Флажок 20px и вся строка кликабельна: на телефоне
   попасть в 13-пиксельный квадрат нельзя, а без согласия форма не отправится —
   значит промах превращается в потерянную заявку. */
.consent{display:flex;gap:10px;align-items:flex-start;cursor:pointer;font-size:14px;line-height:1.45}
.consent input{width:20px;height:20px;flex:none;margin-top:1px;cursor:pointer;accent-color:var(--terra)}
.consent a{color:var(--terra-text);text-decoration:underline;text-underline-offset:2px}
#cerr{display:none;font-size:13px;color:var(--err)}
.form.badconsent #cerr{display:block}

/* Строка мессенджеров. Ссылками, а не кнопками: кнопка обещает равный вес
   с «Оставить заявку», а он не равный — форма ведёт к нам в базу, мессенджер
   в чью-то переписку. */
/* Подпись всегда владеет своей строкой: подпись плюс три ссылки укладываются
   в 460px впритык, и любая правка текста дала бы висячий хвост вида
   «…нам: Telegram» / «WhatsApp MAX». */
.msgr{display:flex;flex-wrap:wrap;align-items:center;gap:0 22px;margin-top:6px;font-size:13px;color:var(--muted)}
.msgr>span{flex:1 1 100%;margin-bottom:2px}
/* 15px × 1.45 ≈ 22px строки + 22px паддинга = 44px тач-зоны, как требует
   наше же правило. Было 20px — промах пальцем стоил бы контакта.
   Цвет --terra-text, а не --terra: это текст, и ему нужен контраст 4.5. */
.msgr a{padding:13px 0;font-size:15px;color:var(--terra-text);text-decoration:underline;text-underline-offset:3px}
.msgr a:hover{color:var(--terra-h)}
.msgr a:hover{text-decoration-thickness:2px}

.form-hint{font-size:13px;color:var(--muted)}
.ferr{font-size:14px;color:var(--err)}
.ferr[hidden]{display:none}
.done{display:none;border:1px solid var(--terra);border-radius:12px;padding:26px;background:var(--surface);max-width:460px;margin-top:26px}
.done.on{display:block;animation:pop .45s var(--eo)}
@keyframes pop{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.done h3{font-size:21px;margin-bottom:8px}
.done p{font-size:15px;line-height:1.6;color:var(--muted)}
.sent .form{display:none}

/* ─── футер ─── */
.foot{border-top:1px solid var(--line);padding-top:48px;padding-bottom:44px}
.foot .cols{display:flex;justify-content:space-between;align-items:flex-start;gap:28px;flex-wrap:wrap}
.foot .fs{font-size:14px;color:var(--muted);margin-top:6px}
.flinks{display:flex;gap:22px;flex-wrap:wrap;font-size:14.5px}
.flinks a{color:var(--muted);text-decoration:none;padding:10px 0;transition:color .3s var(--es)}
.flinks a:hover{color:var(--ink)}
/* Реквизиты: тонкая линия сверху, кегль как у копирайта. Их не читают подряд —
   их ищут глазами, чтобы пробить по ИНН, поэтому строка должна быть спокойной,
   а не выделяться. */
.legal{margin-top:30px;padding-top:20px;border-top:1px solid var(--line);
       font-size:13px;line-height:1.7;color:var(--muted);max-width:62ch}
.copy{margin-top:14px;font-size:13px;color:var(--muted)}

/* ─── планка снизу на телефоне (прототип 5/8) ─── */
.bar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;align-items:center;justify-content:space-between;
     gap:12px;height:62px;padding:0 18px;background:var(--cream);border-top:1px solid var(--line);
     transform:translateY(110%);transition:transform .35s var(--eo)}
.bar.on{transform:none}
.bar .p{font-size:15px;font-weight:600;line-height:1.15}
.bar .p em{display:block;font-style:normal;font-size:12px;color:var(--muted);font-weight:400}
.bar .btn{padding:11px 19px;font-size:15px}

/* ============================================================
   Телефон и планшет
   ============================================================ */
@media(max-width:940px){
  .wrap,.wrap-n{padding-left:22px;padding-right:22px}
  .hdr .in{padding:0 22px}
  .nav a:not(.btn){display:none}
  .sec{padding-top:64px;padding-bottom:64px}
  h1{font-size:33px;margin:12px 0 12px}
  h2{font-size:26px}
  .ov{font-size:11.5px}
  .lead{font-size:17px;line-height:1.5}

  /* hero (прототип 8) */
  .hero{grid-template-columns:1fr;grid-template-rows:none;gap:18px;padding-top:16px;padding-bottom:56px;display:flex;flex-direction:column}
  /* На телефоне кнопка и цена идут ДО демо, а не после него: карточка высокая,
     и за ней они уходили под сгиб — то есть в первом экране не было ни цены,
     ни видимого действия, только мелкая кнопка в шапке. Собственный тест пяти
     секунд (кто, что, действие, цена без прокрутки) на этом и проваливался.
     На десктопе порядок прежний: там всё помещается разом. */
  .hero>div:first-child{order:1}
  .cta{margin-top:22px;order:2}
  .side{order:3;margin-top:26px}
  .demo-cap{margin-bottom:12px;align-self:center}
  .arch{width:100%;max-width:420px;border-radius:12px;padding:22px 18px 18px;
        display:flex;flex-direction:column}
  .ctx{margin-top:2px}
  .dish{padding:10px 10px}

  /* Итог переезжает НАД список блюд.
     На 390×844 строка «Итого» стояла примерно на y 723 при видимой области
     ~660: человек нажимал «+» и не видел результата — единственный интерактив
     первого экрана работал вхолостую на главном устройстве ресторатора.
     Порядок задаётся флексом, а не разметкой: в DOM сумма остаётся после
     списка, поэтому скринридер и клавиатура по-прежнему читают её как итог. */
  /* Порядок задаётся всем элементам карточки явно: у остальных order:0,
     и без этого сумма уезжала выше названия ресторана. */
  .rname{order:-8}
  .flourish{order:-7}
  .step{order:-6}
  .ctx{order:-5}
  .sum{order:-4;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
       margin-top:12px;padding-top:12px;padding-bottom:12px}
  .per{order:-3;margin-top:8px}
  .hint{order:-2;margin-top:8px;margin-bottom:2px}
  #list{order:0;margin-top:4px}

  .put-intro{padding-top:64px;padding-bottom:28px}

  /* перелом и живые остановки */
  .turn{padding-top:56px;padding-bottom:56px}
  .turn-grid{grid-template-columns:1fr;gap:22px;align-items:start}
  .stop{padding-top:64px;padding-bottom:64px}
  .note{margin-left:0;padding-left:14px}
  .sw-bar{flex-direction:column;align-items:flex-start;gap:14px}
  .sw-bar .lbl{display:none}
  .seg{width:100%}
  .seg button{flex:1;padding:11px 8px}
  .cab{grid-template-columns:1fr}
  .cab-day{border-left:0;border-top:1px solid var(--line)}
  .cab-cal,.cab-day{padding:18px 16px}
  .cal-cell{height:48px}
  /* телефон внутри телефона выглядит нелепо — арка распрямляется в карточку */
  .gphone{width:100%;border-radius:12px;padding:20px 16px 16px}
  .obin{padding:16px}
  .card{grid-template-columns:1fr;gap:18px}
  .pars{grid-template-columns:1fr}
  /* имя заявки не должно ломаться в три строки: статус и сумма — строкой ниже */
  .ord-btn{display:grid;grid-template-columns:16px 1fr;grid-template-areas:"c n" ". m";
           column-gap:10px;row-gap:9px;align-items:start}
  .ord-btn .chev{grid-area:c;margin-top:4px}
  .ord-btn .name{grid-area:n}
  .ord-btn .badge{grid-area:m;justify-self:start}
  .ord-btn .ord-sum{grid-area:m;justify-self:end}
  .pdf-grid{grid-template-columns:1fr;gap:32px}
  .sheet{max-width:none;padding:22px 20px 18px;aspect-ratio:auto}

  /* цена и сравнение */
  .price-grid{grid-template-columns:1fr;gap:44px}
  .hero-num{font-size:clamp(56px,17vw,76px)}
  .price-cta{gap:14px}
  .crow2{grid-template-columns:1fr;gap:12px;padding:24px 0}
  .rows-sum{margin-left:0;text-align:left;max-width:34ch}

  .bar{display:flex}
  body{padding-bottom:62px}
  br.d{display:none}
}

/* sticky-сцена (прототип 1) */
@media(max-width:900px){
  .scene-wrap{grid-template-columns:1fr;gap:56px}
  /* высота ровно под кадр: раньше стояло с запасом, и между кадром
     и его подписью зияла дыра в сотню пикселей */
  .viewport{height:300px;order:-1}
  .phone{width:262px;border-radius:50px 50px 11px 11px;padding:24px 16px 16px}
  .viewport .browser{max-width:340px}
  .phone .js-shot-placeholder{height:320px}
  .browser .js-shot-placeholder{height:200px}
  .st{padding:8px 0}
  .st h3{font-size:17px}
  /* описание активной станции возвращено: без него на узком экране в сцене
     оставались три заголовка и полэкрана воздуха, а смысл станции пропадал */
  .st p{font-size:13.5px}
  .st.on p{max-height:70px}
}

/* Высокое узкое окно (планшет книжкой, половина монитора): сцена короче окна,
   и сверху оставалась четверть экрана пустоты. Кадр крупнее — сцена садится
   по высоте, подпись не липнет к станциям. */
@media(min-height:880px) and (max-width:900px){
  .scene-wrap{gap:56px}
  .viewport{height:346px}
  .phone{width:300px;border-radius:58px 58px 12px 12px;padding:28px 18px 18px}
  .phone .js-shot-placeholder{height:390px}
}

/* Низкое окно: контент сцены (кадр + шесть станций) не влезает в 100vh и
   обрезается overflow:hidden — на 820×620 последняя станция уходила за край.
   Поджимаем кадр и станции, чтобы сцена помещалась целиком. */
@media(max-height:760px) and (max-width:900px){
  .st p{display:none}
  .viewport{height:300px}
  .phone{width:190px;border-radius:36px 36px 10px 10px;padding:16px 12px 12px}
  .phone .js-shot-placeholder{height:210px}
  .browser{max-width:290px}
  .browser .js-shot-placeholder{height:150px}
  .scene-wrap{gap:20px}
  .st{padding:5px 0}
  .st h3{font-size:16px}
  .st .who{font-size:10px}
  .cap{bottom:-26px;font-size:11px}
}
/* Совсем низкое окно — сцена распрямляется в обычный список: sticky здесь
   принципиально не работает, лучше честный вертикальный поток. */
@media(max-height:560px){
  .track{height:auto}
  .stage{position:static;height:auto;overflow:visible;padding:48px 0}
  .scene-wrap{display:block}
  .viewport{position:static;height:auto;margin-top:22px;display:block}
  .frame{position:static;opacity:1;transform:none;pointer-events:auto;display:flex;justify-content:center}
  .frame+.frame{margin-top:26px}
  .st{opacity:1}
  .st p{display:block;max-height:none;opacity:1}
  .cap{position:static;margin-top:8px}
}

/* узкий телефон (прототип 4) */
@media(max-width:560px){
  .marq span{font-size:19px;padding:0 20px;gap:20px}
  .q>button{font-size:16px}
  .actions .btn{flex:1 1 100%}
  br.d{display:none}

  /* На узком экране 26px ломают цену на две строки и спорят с заголовком:
     число должно быть заметным, но не вторым H1. */
  .price{font-size:22px}

  /* Кино короче на телефоне: 320vh — это больше трёх экранов пальцем по
     разделу, где нечего нажимать, и стоит он сразу за первым экраном.
     Три станции успевают прочитаться и на 220vh. На десктопе длина
     не меняется: там прокрутка дешевле и ритм сцены выверен. */
  .track{height:220vh}
}

/* ============================================================
   Без JS: страница читается сверху вниз (прототип 1)
   ============================================================ */
html:not(.js) .st{opacity:1}
html:not(.js) .st p{max-height:80px;opacity:1}
html:not(.js) .frame:first-of-type{opacity:1;transform:none}
html:not(.js) .track{height:auto}
html:not(.js) .stage{position:static;height:auto;padding:60px 0}

/* ============================================================
   Меньше движения: всё движение гаснет, демо продолжает считать
   ============================================================ */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important;animation:none!important}
  html.js .rev{opacity:1;transform:none}
  .marq .lane{animation:none;transform:none}
  .st{opacity:1}.st p{max-height:80px;opacity:1}
}

/* ============================================================
   Экраны внутри сцены «Путь одного банкета».
   Схематичные, но с настоящими данными сквозного банкета
   (14 февраля · 45 гостей · 312 500 ₽). При съёмке заменяются
   реальными скриншотами — контейнеры помечены data-shot.
   ============================================================ */
.sc-rt{font-family:Spectral,Georgia,serif;font-size:17px;font-weight:600;text-align:center;line-height:1.2}
.sc-rt.sc-sm{font-size:15px}
.sc-sub{font-size:11px;color:var(--muted);text-align:center;margin-top:3px}
.sc-hall{height:92px;background:var(--soft);border-radius:8px;margin-top:14px;
  display:flex;align-items:center;justify-content:center;text-align:center;
  font-size:11px;color:var(--muted);padding:0 10px}
.sc-btn{margin-top:14px;background:var(--terra);color:#fff;border-radius:8px;
  padding:11px;font-size:13px;font-weight:600;text-align:center}

.sc-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-top:12px}
.sc-cal b{font-size:9.5px;color:var(--muted);text-align:center;padding:2px 0;font-weight:600}
.sc-cal s{text-decoration:none;font-size:11.5px;text-align:center;padding:5px 0;border-radius:6px;color:var(--ink)}
.sc-cal s.off{color:var(--line)}
.sc-cal s.pick{background:var(--terra);color:#fff;font-weight:600}
.sc-halls{margin-top:13px;padding-top:11px;border-top:1px solid var(--soft)}

.sc-list{margin-top:12px}
.sc-row{display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:8px 0;border-bottom:1px solid var(--soft);font-size:12.5px}
.sc-row:last-child{border-bottom:0}
.sc-row em{display:block;font-style:normal;font-size:11px;color:var(--muted);margin-top:2px}
.sc-row em.busy{color:var(--line)}
.sc-row b{color:var(--terra-text);font-weight:600;font-variant-numeric:tabular-nums}
.sc-tot{display:flex;justify-content:space-between;align-items:baseline;
  border-top:1px solid var(--line);margin-top:10px;padding-top:11px}
.sc-tot span{font-size:12px;color:var(--muted)}
.sc-tot b{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}
.sc-per{font-size:10.5px;color:var(--muted);text-align:center;margin-top:5px}

.sc-bin{padding:14px}
.sc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.sc-h2{font-family:Spectral,Georgia,serif;font-size:15px;font-weight:600}
.sc-chip{font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--line);border-radius:99px;padding:3px 9px;font-weight:600}
.sc-ord{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:10px 0;border-bottom:1px solid var(--soft)}
.sc-ord:last-child{border-bottom:0}
.sc-ord .t{font-size:12px;font-weight:600}
.sc-ord .s{font-size:10.5px;color:var(--muted);margin-top:2px}
.sc-ord .a{font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.sc-ord.hi{background:var(--tint);margin:0 -14px;padding:10px 14px}

.sc-narrow{max-width:400px}
.sc-doc{padding:16px;font-size:11.5px;line-height:1.6}
.sc-meta{color:var(--muted);font-size:10.5px;margin:3px 0 12px;padding-bottom:10px;border-bottom:1px solid var(--soft)}
.sc-doc .d{display:flex;justify-content:space-between;gap:10px;padding:2px 0;font-variant-numeric:tabular-nums}
.sc-doc .d.muted{color:var(--muted)}
.sc-doc .d.total{border-top:1px solid var(--line);margin-top:9px;padding-top:9px;font-weight:600}
