/* ============================================================
   АКАДЕМИЧЕСКИЙ САЛОН — МОБИЛЬНАЯ РЕДАКЦИЯ
   Загружается последним из app.js и сводит локальные media query
   страниц к одной устойчивой геометрии телефона.
   ============================================================ */

@media screen and (max-width:920px){
  :root{
    --mobile-gutter:clamp(16px,4.7vw,20px);
    --mobile-header-h:calc(58px + env(safe-area-inset-top));
    --mobile-dock-h:calc(58px + env(safe-area-inset-bottom));
    --mobile-bottom-clear:calc(var(--mobile-dock-h) + 12px);
    --tap:48px;
  }

  html{
    max-width:100%;
    overflow-x:clip;
    scroll-padding-top:calc(var(--mobile-header-h) + 12px);
    scroll-padding-bottom:var(--mobile-bottom-clear);
  }
  body{
    width:100%;
    max-width:100%;
    overflow-x:clip;
    padding-bottom:var(--mobile-dock-h);
  }
  body.no-mcta{padding-bottom:0}
  .wrap{
    width:100%;
    max-width:100%;
    padding-left:var(--mobile-gutter);
    padding-right:var(--mobile-gutter);
  }
  main,.chapter,.sheet,.stacked{min-width:0;max-width:100%}
  section[id],[id].chapter{scroll-margin-top:calc(var(--mobile-header-h) + 12px)}

  /* Настольный колонтитул на телефоне не показывается вовсе —
     ниже по файлу стоит .site-header{display:none!important},
     а его работу выполняет .mobile-appbar. Прежние правила
     «сжатой шапки» удалены: они не срабатывали ни разу. */

  input,textarea,select,
  .sdlg input,.sdlg textarea,.nf-form input,.nf-form textarea{
    max-width:100%;
    font-size:16px!important;
  }
  button,a,input,textarea,select{-webkit-tap-highlight-color:rgba(178,59,34,.12)}
  .btn{min-height:50px;white-space:normal;text-align:center}
  .chapter{padding-top:52px}
  .chapter .ch-rule{margin-bottom:24px}
  .h-display{font-size:clamp(31px,9vw,40px);line-height:1.04}
  h2{font-size:clamp(26px,7vw,31px)}
  .lead{font-size:18px;line-height:1.58}

  /* Повторяющиеся десктопные сетки становятся читаемым потоком. */
  .grid-2,.grid-3,.split,.pages,.ws-grid,.proc-grid,.trust-grid,
  .route-grid,.plus-grid{
    grid-template-columns:minmax(0,1fr)!important;
  }
  .grid-2>*,.grid-3>*,.split>*,.pages>*,.ws-grid>*,.proc-grid>*,
  .trust-grid>*,.route-grid>*,.plus-grid>*,
  .dotrow>*,.optrow>*,.ledger>*,.report-sheet>*{min-width:0}
  .price-xl{max-width:100%;overflow-wrap:anywhere}

  .doc-wrap{padding-top:88px;padding-bottom:48px}
  .doc{max-width:100%}
  .doc h1{font-size:clamp(30px,8.5vw,37px)}
  .doc h2{font-size:26px;margin-top:30px}
  .doc p,.doc li{line-height:1.62}
  .doc pre,.doc code,.doc table{
    max-width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  .doc img,.doc video,.doc iframe{max-width:100%;height:auto}
  .doc .btn{width:100%;justify-content:center}

  /* Нижняя навигация — компактная системная полоса. На телефоне печать,
     выступавшая над панелью, спорила с контентом и с браузерным chrome. */
  .mobile-cta.mnav{
    display:grid;
    min-height:var(--mobile-dock-h);
    padding:4px max(6px,env(safe-area-inset-right))
      max(4px,env(safe-area-inset-bottom))
      max(6px,env(safe-area-inset-left));
    border-top-color:color-mix(in srgb,var(--ink) 14%,transparent);
    background:color-mix(in srgb,var(--paper) 98%,transparent);
    box-shadow:0 -8px 24px -22px rgba(34,32,27,.48);
  }
  .mnav .mn-i{
    min-height:50px;
    justify-content:center;
    gap:3px;
    padding:4px 2px;
    border-radius:3px;
    font-size:11px;
    letter-spacing:.01em;
  }
  .mnav .mn-i .mn-ic{height:20px;font-size:17px}
  .mnav .mn-calc .mn-ic{
    width:auto;
    height:20px;
    margin-top:0;
    border:0;
    border-radius:0;
    background:none;
    color:currentColor;
    box-shadow:none;
  }
  .mnav .mn-calc:active .mn-ic{
    transform:none;
    box-shadow:none;
  }
  .site-footer{padding-bottom:calc(var(--mobile-dock-h) + 14px)}

  /* Черновик на телефоне возвращается через общий нижний системный rail.
     Он сменяет приватность и на время показа сам занимает место дока. */

  /* После выбора типа не повторяем вводный экран на каждом шаге. */
  body.conf-step-later main .chapter.conf-chapter{
    padding-top:calc(var(--mobile-header-h) + 12px);
  }
  body.conf-step-later .conf-chapter>.ch-rule,
  body.conf-step-later .conf-chapter .conf-head{
    display:none!important;
  }
  body.conf-step-later .conf-chapter .wprog{
    margin-bottom:16px;
  }
  body.conf-step-later .conf-chapter .ws-title{
    margin-bottom:14px;
    font-size:clamp(23px,6.5vw,27px);
    line-height:1.14;
  }
  .conf-chapter #btnBack{display:none!important}
  body.conf-step-later #discGroup{
    gap:8px;
  }
  body.conf-step-later #discGroup .optrow{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:6px 10px;
    align-items:center;
    min-height:58px;
    padding:11px 13px;
    border-radius:5px;
    font-size:16px;
    line-height:1.3;
  }
  body.conf-step-later #discGroup .optrow .dots{display:none}
  body.conf-step-later #discGroup .optrow .o-val{
    font-size:14px;
    color:var(--ink-soft);
  }
  body.conf-step-later #discGroup .optrow[aria-checked="true"]{
    border-color:var(--wax);
    background:linear-gradient(110deg,var(--wax-soft),var(--sheet) 78%);
    box-shadow:inset 3px 0 0 var(--wax);
  }
  body.conf-step-later #discGroup .optrow[aria-checked="true"] .o-val{
    color:var(--wax-text,var(--wax));
  }
  body.conf-step-later .disc-profile{display:none}

  /* Финальный лист заявки: три понятных раздела вместо длинной ленты полей. */
  body.conf-step-final{
    padding-bottom:calc(76px + env(safe-area-inset-bottom));
  }
  body.conf-step-final .conf-chapter .wprog{
    position:static;
    z-index:auto;
    margin:0 0 13px;
    padding:0;
    background:none;
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
  body.conf-step-final .conf-chapter .ws-title{
    margin-bottom:7px;
  }
  body.conf-step-final .wstep-final{
    display:flex!important;
    flex-direction:column;
  }
  body.conf-step-final .wstep-final>#ws4t{order:0}
  body.conf-step-final .wstep-final>.conf-final-intro{order:1}
  body.conf-step-final .wstep-final>#checkoutFields{display:contents}
  body.conf-step-final .wstep-final .final-contact{order:2}
  body.conf-step-final .wstep-final>.final-files{order:3}
  body.conf-step-final .wstep-final>.final-task{order:4}
  body.conf-step-final .wstep-final .final-more-toggle{order:5}
  body.conf-step-final .wstep-final .final-more-body{order:6}
  body.conf-step-final .wstep-final .wsubmit-note{order:7}
  body.conf-step-final .conf-final-intro{
    display:block;
    margin:0 0 14px;
    padding:0 0 13px;
    border-bottom:1px solid var(--hairline);
  }
  body.conf-step-final .conf-final-intro .caps{
    display:block;
    margin-bottom:5px;
    color:var(--wax-text,var(--wax));
    font-size:11px;
  }
  body.conf-step-final .conf-final-intro p{
    max-width:42ch;
    color:var(--ink-soft);
    font-size:14px;
    line-height:1.45;
  }
  body.conf-step-final .final-section{
    margin:0 0 10px;
    padding:13px 13px 1px;
    border:1px solid var(--hairline);
    border-radius:7px;
    background:color-mix(in srgb,var(--sheet) 78%,transparent);
    box-shadow:0 8px 24px -25px rgba(34,32,27,.5);
  }
  body.conf-step-final .final-section-head{
    display:grid;
    grid-template-columns:27px minmax(0,1fr);
    gap:9px;
    align-items:start;
    margin:0 0 13px;
    padding:0 0 11px;
    border-bottom:1px solid var(--hairline);
  }
  body.conf-step-final .final-section-no{
    display:grid;
    width:27px;
    height:27px;
    place-items:center;
    border:1px solid color-mix(in srgb,var(--wax) 62%,var(--hairline));
    border-radius:50%;
    color:var(--wax-text,var(--wax));
    font:9px/1 var(--mono);
  }
  body.conf-step-final .final-section-head b{
    display:block;
    margin-top:-1px;
    font:500 17px/1.2 var(--serif);
    color:var(--ink);
  }
  body.conf-step-final .final-section-head small{
    display:block;
    margin-top:3px;
    color:var(--ink-faint);
    font-size:12px;
    line-height:1.35;
  }
  body.conf-step-final .wstep-final>.final-section .field,
  body.conf-step-final #ctGuest .field{
    margin-bottom:13px;
  }
  body.conf-step-final .final-section .field>label{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    margin-bottom:7px;
    font-size:11px;
    letter-spacing:.12em;
  }
  body.conf-step-final .field-optional{
    flex:0 0 auto;
    padding:3px 6px;
    border-radius:999px;
    background:var(--paper-2);
    color:var(--ink-faint);
    font:8px/1 var(--sans);
    letter-spacing:.02em;
    text-transform:none;
  }
  body.conf-step-final .final-section input[type=text],
  body.conf-step-final .final-section input[type=email],
  body.conf-step-final .final-section input[type=tel]{
    min-height:48px;
    padding:11px 12px;
    border-radius:5px;
  }
  body.conf-step-final #fDetails{
    min-height:92px;
    padding:11px 12px;
    border-radius:5px;
    line-height:1.45;
  }
  body.conf-step-final .final-task .field:last-child,
  body.conf-step-final .final-files .field:last-child,
  body.conf-step-final .final-contact .field:last-child{
    margin-bottom:12px;
  }
  body.conf-step-final #attAdd{
    min-height:48px;
    justify-content:flex-start;
    padding:10px 12px;
    border-radius:5px;
    background:color-mix(in srgb,var(--paper-2) 72%,transparent);
    font-size:14px;
    line-height:1.3;
    text-align:left;
  }
  body.conf-step-final #attHint,
  body.conf-step-final #ctHint{
    margin:7px 0 0!important;
    color:var(--ink-faint);
    font-size:11.5px;
    line-height:1.4;
  }
  body.conf-step-final .att-item{
    gap:7px;
    padding:8px 9px;
    font-size:14px;
  }
  body.conf-step-final #ctAuthed p{
    margin:0 0 12px;
    padding:10px 11px;
    border-left:3px solid var(--verify);
    border-radius:0 5px 5px 0;
    background:var(--verify-soft);
    color:var(--ink-soft);
    font-size:14px;
    line-height:1.45;
  }
  body.conf-step-final #ctChips{
    display:grid;
    grid-template-columns:repeat(6,minmax(0,1fr));
    gap:6px;
    margin-bottom:8px;
  }
  body.conf-step-final #ctChips .ct-chip{
    grid-column:span 2;
    min-width:0;
    min-height:44px;
    padding:6px 5px;
    font-size:12px;
  }
  body.conf-step-final #ctChips .ct-chip:nth-child(4),
  body.conf-step-final #ctChips .ct-chip:nth-child(5){
    grid-column:span 3;
  }
  body.conf-step-final .consent-row{
    display:grid;
    grid-template-columns:22px minmax(0,1fr);
    gap:9px;
    align-items:start;
    margin:2px 0 11px;
    cursor:pointer;
    color:var(--ink-soft);
    font-size:14px;
    line-height:1.45;
  }
  body.conf-step-final .consent-row input{
    width:22px;
    height:22px;
    margin:0;
    accent-color:var(--wax);
  }
  body.conf-step-final #tgLoginBtn{
    min-height:46px;
    margin:0 0 9px;
    padding:9px 12px;
    font-size:14px;
  }
  body.conf-step-final .contact-or{
    display:flex;
    align-items:center;
    gap:8px;
    margin:0 0 10px;
    color:var(--ink-faint);
    font:8.5px/1 var(--mono);
    letter-spacing:.1em;
    text-transform:uppercase;
  }
  body.conf-step-final .contact-or::before,
  body.conf-step-final .contact-or::after{
    content:"";
    height:1px;
    flex:1;
    background:var(--hairline);
  }
  body.conf-step-final .field-name{display:none}
  body.conf-step-final .final-more-toggle{
    display:grid;
    grid-template-columns:28px minmax(0,1fr) 28px;
    gap:9px;
    align-items:center;
    width:100%;
    min-height:60px;
    margin:2px 0 10px;
    padding:8px 10px;
    border:1px solid var(--hairline);
    border-radius:7px;
    background:transparent;
    color:var(--ink);
    text-align:left;
    cursor:pointer;
  }
  body.conf-step-final .final-more-mark{
    display:grid;
    width:28px;
    height:28px;
    place-items:center;
    border-radius:50%;
    background:var(--wax-soft);
    color:var(--wax-text,var(--wax));
    font:17px/1 var(--serif);
  }
  body.conf-step-final .final-more-toggle b{
    display:block;
    font-size:14px;
    font-weight:500;
  }
  body.conf-step-final .final-more-toggle small{
    display:block;
    margin-top:2px;
    color:var(--ink-faint);
    font-size:12px;
    line-height:1.3;
  }
  body.conf-step-final .final-more-arrow{
    display:grid;
    width:28px;
    height:28px;
    place-items:center;
    color:var(--wax-text,var(--wax));
    font:20px/1 var(--serif);
    transition:transform .18s ease;
  }
  body.conf-step-final .final-more-toggle.open .final-more-arrow{
    transform:rotate(45deg);
  }
  body.conf-step-final .final-more-body[hidden]{display:none!important}
  body.conf-step-final .final-more-body{
    margin:-2px 0 10px;
    padding:10px;
    border:1px solid var(--hairline);
    border-radius:7px;
    background:color-mix(in srgb,var(--sheet) 72%,transparent);
  }
  body.conf-step-final .coupon{
    margin:0 0 7px;
    border-style:solid;
    background:transparent;
  }
  body.conf-step-final .cp-toggle{
    min-height:44px;
    padding:9px 10px;
    font-size:14px;
  }
  body.conf-step-final .cp-body{padding:2px 10px 10px}
  body.conf-step-final .cp-done{
    display:grid;
    grid-template-columns:auto minmax(0,1fr) 34px;
    gap:3px 8px;
    padding:9px 10px;
  }
  body.conf-step-final .cp-done>span[aria-hidden]{grid-row:1/3}
  body.conf-step-final .cp-done .cp-code{
    grid-column:2;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  body.conf-step-final .cp-done .cp-what{grid-column:2}
  body.conf-step-final .cp-done .cp-x{
    grid-column:3;
    grid-row:1/3;
    align-self:center;
  }
  body.conf-step-final .contact-fallbacks{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:7px;
    margin-top:8px;
  }
  body.conf-step-final .contact-fallbacks .btn{
    min-height:44px;
    padding:8px;
    font-size:14px;
  }
  body.conf-step-final .qm-card{
    margin:8px 0 0;
    padding:10px;
    border-left-width:3px;
    background:transparent;
  }
  body.conf-step-final .qm-head{
    display:grid;
    grid-template-columns:18px minmax(0,1fr) auto;
    gap:8px;
    align-items:center;
    flex-wrap:nowrap;
  }
  body.conf-step-final .qm-head svg{margin:0}
  body.conf-step-final .qm-head .qm-t{font-size:14px}
  body.conf-step-final .qm-head .petit{
    font-size:12px;
    line-height:1.35;
  }
  body.conf-step-final .qm-open{
    grid-column:3;
    min-height:40px;
    padding:7px 9px;
    font-size:12px;
  }
  body.conf-step-final .qm-form{margin-top:9px;padding-top:9px}
  body.conf-step-final .wsubmit-note{
    display:flex;
    gap:7px;
    margin:7px 0 12px!important;
    padding:9px 10px;
    border-radius:5px;
    background:var(--verify-soft);
    color:var(--ink-soft);
    font-size:14px;
    line-height:1.4;
  }
  body.conf-step-final .wsubmit-note>span{
    flex:0 0 auto;
    color:var(--verify);
  }
  body.conf-step-final .wnav{display:none}

  /* Конфигуратор: один спокойный лист сметы и одно главное действие. */
  .mobile-cta.conf-mcta{
    display:flex;
    min-height:0;
    padding:8px max(8px,env(safe-area-inset-right))
      max(8px,env(safe-area-inset-bottom))
      max(8px,env(safe-area-inset-left));
    gap:8px;
    border-top:1px solid color-mix(in srgb,var(--ink) 13%,transparent);
    background:color-mix(in srgb,var(--paper) 98%,transparent);
    box-shadow:0 -14px 34px -28px rgba(34,32,27,.68);
  }
  .conf-mcta .mq-panel{
    width:100%;
    max-height:min(54svh,430px);
    overflow:auto;
    overscroll-behavior:contain;
    border:1px solid var(--hairline-strong);
    border-radius:14px;
    padding:16px;
    background:var(--sheet);
    box-shadow:0 18px 46px -30px rgba(34,32,27,.72);
  }
  .conf-mcta .lq-mobile-head{
    align-items:center;
    gap:10px;
    margin:0 0 14px;
  }
  .conf-mcta .lq-mobile-head .lq-head{
    font-size:11px;
    letter-spacing:.16em;
  }
  .conf-mcta .lq-mobile-head .lq-type{
    margin:4px 0 0;
    font:500 18px/1.2 var(--serif);
    color:var(--ink);
  }
  .conf-mcta .lq-step{
    padding:5px 9px;
    border-color:var(--hairline);
    background:transparent;
    font-size:11px;
  }
  .conf-mcta .lq-mobile-price{
    padding:0 0 14px!important;
    border:0!important;
    border-bottom:1px solid var(--hairline)!important;
    border-radius:0!important;
    background:none!important;
  }
  .conf-mcta .lq-mobile-price .lg-total{
    align-items:flex-end;
  }
  .conf-mcta .lq-mobile-price .lg-total b{
    padding-bottom:4px;
    font:500 13px/1.2 var(--sans);
    color:var(--ink-soft);
  }
  .conf-mcta .lq-mobile-price .lg-total .num{
    font-size:clamp(31px,9.5vw,38px);
    line-height:1;
    letter-spacing:.025em;
  }
  .conf-mcta .lq-mobile-price .lq-high{
    display:block;
    margin:6px 0 0;
    padding:0;
    border-radius:0;
    background:none;
    font-size:14px;
    line-height:1.4;
  }
  .conf-mcta .lq-mobile-formula,
  .conf-mcta .lq-mobile-terms{
    margin:0;
    border-bottom:1px solid var(--hairline);
  }
  .conf-mcta .lq-mobile-formula>summary,
  .conf-mcta .lq-mobile-terms>summary{
    display:flex;
    min-height:46px;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    list-style:none;
    cursor:pointer;
    color:var(--ink-soft);
    font:500 12.5px/1.3 var(--sans);
    letter-spacing:0;
    text-transform:none;
  }
  .conf-mcta .lq-mobile-formula>summary::-webkit-details-marker,
  .conf-mcta .lq-mobile-terms>summary::-webkit-details-marker{display:none}
  .conf-mcta .lq-mobile-formula>summary::after,
  .conf-mcta .lq-mobile-terms>summary::after{
    content:"+";
    flex:0 0 auto;
    color:var(--wax-text,var(--wax));
    font:20px/1 var(--serif);
    transition:transform .18s ease;
  }
  .conf-mcta .lq-mobile-formula[open]>summary::after,
  .conf-mcta .lq-mobile-terms[open]>summary::after{transform:rotate(45deg)}
  .conf-mcta .lq-mobile-formula .ledger{
    margin:0;
    padding:0 0 10px;
  }
  .conf-mcta .lq-mobile-formula .ledger .lg-row{
    padding:7px 0;
    font-size:14px;
  }
  .conf-mcta .lq-mobile-info{
    margin:0!important;
    padding:0 0 12px!important;
    border:0!important;
  }
  .conf-mcta .lq-mobile-info .lq-pay{
    margin:0 0 10px;
    padding:0;
    border:0;
    background:none;
    font-size:14px;
    line-height:1.5;
  }
  .conf-mcta .lq-mobile-info .lq-when{
    margin:0;
    padding-top:10px;
    border-top:1px solid var(--hairline);
    font-size:14px;
    line-height:1.5;
    color:var(--ink-soft);
  }
  .conf-mcta .lq-mobile-info .lq-promo,
  .conf-mcta .lq-mobile-info .lq-gift,
  .conf-mcta .lq-mobile-info .lq-plus{
    margin:10px 0 0;
    padding:9px 10px;
    border:0;
    border-radius:4px;
    background:var(--paper-2);
    font-size:11.5px;
    line-height:1.45;
  }
  .conf-mcta .lq-mobile-info .lq-cheaper{
    margin:8px 0 0!important;
    padding-top:8px;
    border-top:1px solid var(--hairline);
  }
  .conf-mcta .lq-mobile-info .lq-cheaper>summary{
    min-height:36px;
    display:flex;
    align-items:center;
  }
  .conf-mcta .mq-bar{
    display:grid;
    grid-template-columns:48px minmax(0,1fr) minmax(116px,.78fr);
    align-items:stretch;
    gap:8px;
    width:100%;
  }
  .conf-mcta .mq-back[hidden]+.mq-total{grid-column:1/3}
  .conf-mcta .mq-back{
    width:48px;
    min-height:52px;
    border-radius:5px;
  }
  .conf-mcta .mq-total{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    justify-content:stretch;
    gap:8px;
    min-width:0;
    min-height:52px;
    padding:6px 10px;
    border-color:var(--hairline);
    border-radius:5px;
    text-align:left;
  }
  .conf-mcta .mq-total-copy{
    display:grid;
    min-width:0;
    gap:2px;
  }
  .conf-mcta .mq-total-copy small{
    color:var(--ink-faint);
    font:8px/1 var(--mono);
    letter-spacing:.12em;
    text-transform:uppercase;
  }
  .conf-mcta .mq-total-copy .num{
    overflow:hidden;
    font-size:16px;
    line-height:1.15;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .conf-mcta .mq-more{
    color:var(--wax-text,var(--wax));
    font:10px/1.2 var(--sans);
    white-space:nowrap;
  }
  .conf-mcta .cart-tab{display:none!important}
  .conf-mcta #mNext{
    min-width:0;
    min-height:52px;
    padding:8px 12px;
    border-radius:5px;
    font-size:16px;
    line-height:1.15;
  }
  body.conf-step-final .conf-mcta .mq-bar{
    grid-template-columns:48px minmax(0,1fr) 132px;
  }
  body.svc-checkout .conf-mcta .mq-bar{
    grid-template-columns:minmax(96px,.58fr) minmax(154px,1fr);
  }
  body.svc-checkout .conf-mcta .mq-total{
    grid-column:auto!important;
  }
  body.conf-step-final .conf-mcta #mNext,
  body.svc-checkout .conf-mcta #mNext{
    font-size:13.5px;
  }
  body.conf-step-final .conf-mcta .mq-total{padding-inline:6px}

  /* Все мобильные листы открываются от нижней кромки. */
  .contact-sheet{align-items:flex-end!important}
  .contact-sheet .cs-card{
    width:100%;
    max-width:100%;
    max-height:min(90svh,760px);
    overflow:auto;
    border-radius:14px 14px 0 0!important;
    padding:24px var(--mobile-gutter) calc(18px + env(safe-area-inset-bottom));
  }
  .sdlg-card,.tour-card,.dossier-dialog,.mledger{
    max-width:calc(100vw - 20px);
    max-height:calc(100svh - var(--mobile-header-h) - 20px);
    overflow:auto;
    overscroll-behavior:contain;
  }
  .cart-drawer{
    width:100%;
    height:min(90dvh,780px);
    max-height:calc(100dvh - 8px);
  }
  html.keyboard-open .mobile-cta{transform:translateY(110%)}

  /* Главная на телефоне не зависит от десктопной 3D-геометрии. */
  .home .pr-track{height:auto!important}
  .home .pr-scene{
    position:relative!important;
    height:auto!important;
    min-height:0!important;
    overflow:visible!important;
  }
  .home .pr-stage{min-height:0!important;height:auto!important}
  /* Мобильный титул: одна ось и одна иерархия вместо набора декоративных
     полос. Дата издания, знак §, вторичная статистика и сториз остаются
     за пределами первого экрана. */
  html[data-pr-flat] .home .pr-copy,
  html:not(.has-js) .home .pr-copy{
    max-width:520px;
    padding-left:var(--mobile-gutter);
    padding-right:var(--mobile-gutter);
  }
  html[data-pr-flat] .home .pr-kicker,
  html:not(.has-js) .home .pr-kicker{
    min-height:28px;
    gap:9px;
    margin-bottom:20px;
    padding:0;
    border:0;
    font-size:11px;
    letter-spacing:.17em;
  }
  html[data-pr-flat] .home .pr-kicker::before,
  html:not(.has-js) .home .pr-kicker::before{
    width:28px;
    height:28px;
    flex-basis:28px;
    font-size:17px;
  }
  html[data-pr-flat] .home .pr-kicker::after,
  html:not(.has-js) .home .pr-kicker::after{display:none!important}
  .home .pr-h{
    font-size:clamp(36px,10.4vw,42px);
    line-height:.96;
    letter-spacing:-.03em;
  }
  .home .pr-h .ln:nth-child(2),
  .home .pr-h .ln:nth-child(3){padding-left:0}
  .home .pr-lead{
    margin-top:20px;
    padding:16px 0 0;
    border-top:1px solid var(--hairline-strong);
    font-size:16px;
    line-height:1.52;
  }
  .home .pr-lead::before{display:none}
  html[data-pr-flat] .home .pr-cta,
  html:not(.has-js) .home .pr-cta{margin-top:20px}
  html[data-pr-flat] .home .pr-note,
  html:not(.has-js) .home .pr-note{display:none!important}
  .home .slot-line--cover{
    justify-content:space-between;
    gap:10px;
    margin-top:16px;
    margin-bottom:0;
    padding:12px 0 0;
    border-top:1px solid var(--hairline);
    border-bottom:0;
  }
  .home .slot-line--cover .sl-k{
    font-size:11px;
    letter-spacing:.14em;
  }
  .home .slot-line--cover .sl-v{font-size:16px}

  /* Переход к содержанию — продолжение листа, а не новая стопка карточек. */
  .home .pr-toc{
    padding:44px var(--mobile-gutter) 56px;
  }
  .home .pr-toccaps{display:none}
  .home .pr-toc h2{
    margin:0 0 8px;
    font-size:31px;
  }
  .home .pr-tocsub{
    max-width:29ch;
    margin:0 auto 24px;
    font-size:16px;
    line-height:1.5;
  }
  .home .pr-first-here{
    margin-bottom:18px;
    padding:14px 4px;
    border-width:1px 0;
    border-radius:0;
    background:transparent;
  }
  .home .pr-first-here .s{line-height:1.45}
  .home .pr-row{padding:12px 4px}
  /* На мобильной главной остаётся одна CTA в hero. Закрытая декоративная
     книга скрыта; по оранжевой кнопке сразу открывается полноэкранный лист. */
  html.has-js[data-pr-flat] body:not(.pr-open) .home .pr-bookwrap{
    display:none!important;
  }
  /* Компактная книжная геометрия остаётся только как no-JS fallback.
     Открытый интерактивный формуляр ниже получает всю ширину. */
  .home .pr-bookwrap{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
    padding-left:0!important;
    padding-right:0!important;
  }
  .home .pr-book{
    min-width:0!important;
    width:min(68vw,232px)!important;
    max-width:232px!important;
    margin:18px auto 0!important;
  }
  .home .pr-cover,.home .pr-cvout{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
  }
  html.has-js[data-pr-flat] .home .pr-cvout{
    height:auto!important;
    aspect-ratio:340/472;
  }
  html.has-js[data-pr-flat] .home .pr-book-trigger{
    width:100%!important;
    height:100%!important;
  }
  .home .pr-first,.home .pr-cvin{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
  }
  .home .pr-cvname,.home .pr-cvsub,.home .pr-cvblind{
    max-width:100%;
    white-space:normal;
    overflow-wrap:normal;
    word-break:normal;
  }
  .home .pr-cvinner{
    width:100%!important;
    padding:0 20px 52px!important;
  }
  .home .pr-cvpara{font-size:40px;margin-bottom:12px}
  .home .pr-cvname{
    font-size:clamp(14px,4.1vw,16px);
    line-height:1.16;
    letter-spacing:.01em;
    white-space:nowrap;
  }
  .home .pr-cvrule{margin-top:14px}
  /* На маленькой обложке служебные строки конкурировали с действием
     и слипались в нечитаемый набор. Оставляем знак, имя и одно действие. */
  .home .pr-cvsub,.home .pr-cvblind{display:none!important}
  .home .pr-book-trigger-label,
  html.has-js[data-pr-flat] .home .pr-book-trigger-label{
    inset:auto 12px 12px!important;
    width:auto!important;
    height:44px!important;
    grid-template-columns:minmax(0,1fr) 22px!important;
    gap:7px!important;
    padding:0 10px!important;
    border:1px solid color-mix(in srgb,var(--wax) 46%,var(--hairline))!important;
    border-radius:4px!important;
    background:color-mix(in srgb,var(--sheet) 94%,transparent)!important;
    box-shadow:0 10px 22px -18px rgba(34,32,27,.65)!important;
    text-shadow:none!important;
    transform:none!important;
  }
  .home .pr-book-trigger-index{display:none!important}
  .home .pr-book-trigger-copy{justify-content:center}
  .home .pr-book-trigger-copy strong{
    color:var(--ink);
    font-family:var(--serif);
    font-size:16px;
    font-weight:600;
  }
  .home .pr-book-trigger-copy small{display:none!important}
  .home .pr-book-trigger-arrow{
    width:22px;
    height:22px;
    color:var(--wax-text,var(--wax));
    font-size:16px;
  }
  .home .pr-pg{min-height:0!important}
  .home .pr-form[data-estimator-flow="1"] .plates button{min-height:50px}
  .home .pr-qnext,.home .pr-qback{min-height:50px}
  .home .pr-book-close{
    width:48px;
    height:48px;
    right:8px!important;
    top:8px!important;
  }
  .home .pr-step-tab{min-width:44px;min-height:44px;padding:8px}
  .home #qFull.plate-more{
    display:inline-flex;
    align-items:center;
    min-height:44px;
    padding:8px 2px;
  }
  .home .pr-formsub,.home .pr-step-help,
  .home .pr-estimate-note{font-size:14px;line-height:1.5}
  .home .pr-trust{font-size:12px;line-height:1.4}

  /* Открытая смета — самостоятельный мобильный экран. Нижний док
     не перехватывает кнопку «Далее», навигация шага остаётся у пальца. */
  body.pr-open{overflow:hidden!important}
  body.pr-open .site-header,
  body.pr-open .mobile-cta.mnav{visibility:hidden!important;pointer-events:none!important}
  body.pr-open .home .pr-bookwrap{
    position:fixed!important;
    inset:0!important;
    z-index:160;
    display:block!important;
    margin:0!important;
    padding:max(8px,env(safe-area-inset-top)) 10px
      max(10px,env(safe-area-inset-bottom))!important;
    overflow-y:auto;
    overscroll-behavior:contain;
    background:var(--paper);
    translate:none!important;
    transform:none!important;
  }
  body.pr-open .home .pr-bshadow{display:none!important}
  body.pr-open .home .pr-book{
    width:min(100%,560px)!important;
    max-width:560px!important;
    margin:0 auto!important;
    transform:none!important;
  }
  body.pr-open .home .pr-form,
  body.pr-open .home .pr-ledger{
    min-height:calc(100svh - max(18px,env(safe-area-inset-top) + env(safe-area-inset-bottom)))!important;
    padding-bottom:18px!important;
  }
  body.pr-open .home .pr-form-meta,
  body.pr-open .home .pr-estimate-head{padding-right:52px}
  body.pr-open .home .pr-qnav{
    position:sticky;
    bottom:0;
    z-index:5;
    margin:16px -2px -4px;
    padding:9px 2px 4px;
    background:linear-gradient(180deg,color-mix(in srgb,var(--sheet) 0%,transparent),var(--sheet) 18%);
  }

  /* Горизонтальные полки ощущаются как намеренный свайп. */
  main.tariffs .cc-grid,
  main.tariffs .eq,
  main.tariffs .tiers,
  .shelf{
    scroll-snap-type:x mandatory;
    overscroll-behavior-inline:contain;
    -webkit-overflow-scrolling:touch;
  }
  main.tariffs .cc,
  main.tariffs .eq>*,
  main.tariffs .tier,
  .shelf>*{scroll-snap-align:start}
  main.tariffs .cc-filters{position:sticky!important;top:var(--mobile-header-h)!important}
  .wprog{top:var(--mobile-header-h)}

  /* Меню — отдельный мобильный экран, а не ещё одна шапка под шапкой. */
  html.menu-lock,
  body.menu-lock{
    overflow:hidden!important;
    overscroll-behavior:none;
  }
  body.menu-lock{
    position:fixed;
    left:0;
    right:0;
    width:100%;
  }
  body.menu-lock .site-header,
  body.menu-lock .mobile-cta{
    visibility:hidden;
    pointer-events:none;
  }
  .toc{
    --toc-left:max(var(--mobile-gutter),env(safe-area-inset-left));
    --toc-right:max(var(--mobile-gutter),env(safe-area-inset-right));
    z-index:220;
    height:100dvh;
    max-height:100dvh;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }
  .toc-inner{
    display:flex;
    flex-direction:column;
    min-height:100%;
    padding:0 var(--toc-right) calc(14px + env(safe-area-inset-bottom)) var(--toc-left);
  }
  .toc .toc-head{
    top:0;
    gap:10px;
    min-height:66px;
    margin:0 calc(var(--toc-right) * -1) 10px calc(var(--toc-left) * -1);
    padding:calc(9px + env(safe-area-inset-top)) var(--toc-right) 9px var(--toc-left);
  }
  .toc .toc-head>div{min-width:0}
  .toc-kicker{
    margin-bottom:3px;
    font-size:11px;
    letter-spacing:.18em;
  }
  .toc-title{
    overflow:hidden;
    font-size:26px;
    line-height:1.05;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .toc-close{
    width:44px;
    height:44px;
    flex-basis:44px;
    border-color:color-mix(in srgb,var(--wax) 34%,var(--hairline));
    background:var(--wax-soft);
    color:var(--wax-text,var(--wax));
  }
  .toc-search{flex:0 0 auto;margin-bottom:9px}
  .toc [data-toc-home][hidden]{display:none!important}
  .toc-search input{
    height:48px;
    padding-left:43px;
    padding-right:14px;
    border-radius:6px;
    box-shadow:none;
  }
  .toc-choices{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:7px;
    margin-bottom:9px;
  }
  .toc-choice{
    min-height:88px;
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-rows:auto minmax(0,1fr);
    align-items:start;
    gap:6px 8px;
    padding:10px 11px;
    border-radius:6px;
  }
  .toc-choice.is-main{
    box-shadow:inset 3px 0 0 var(--wax);
  }
  .tch-no{
    grid-column:1;
    grid-row:1;
    align-self:auto;
    padding:0;
    font-size:11px;
  }
  .tch-copy{
    grid-column:1/-1;
    grid-row:2;
    align-self:end;
  }
  .tch-copy b{
    font-size:16px;
    line-height:1.14;
  }
  .tch-copy small{display:none}
  .tch-go{
    grid-column:2;
    grid-row:1;
    font-size:16px;
    line-height:1;
  }
  .toc-route{
    display:flex;
    align-items:center;
    min-height:48px;
    margin:0 0 9px;
    padding:0 11px;
    border:1px solid var(--hairline);
    border-radius:6px;
    background:color-mix(in srgb,var(--sheet) 72%,transparent);
  }
  .toc-route .tr-head{
    width:100%;
    margin:0;
    padding:0;
    align-items:center;
  }
  .toc-route .tr-head .toc-grp-t{
    margin:0;
    color:var(--ink-soft);
    letter-spacing:.13em;
  }
  .toc-route .tr-head>a{
    min-height:44px;
    display:inline-flex;
    align-items:center;
    color:var(--wax-text,var(--wax));
  }
  .toc-route .tr-steps{display:none}
  .toc-directory{
    flex:0 0 auto;
    margin-bottom:0;
    border-radius:6px;
  }
  .toc-directory>summary{
    min-height:50px;
    padding:7px 11px;
  }
  .toc-directory>summary b{font-size:16px}
  .toc-directory>summary small{font-size:12px}
  .toc-grid{padding:12px 11px}
  .toc-sr .dotrow>span:first-child{
    min-width:0;
    overflow-wrap:anywhere;
  }
  .toc-sr .dots{min-width:12px}
  .toc-footbar{
    flex:0 0 auto;
    margin-top:auto;
    padding:10px 0 0;
  }
  .toc-footbar button{
    width:100%;
    min-height:50px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:10px 13px;
    border-radius:6px;
    background:var(--wax);
    color:#FFFEF9;
    text-align:left;
  }
  .toc-footbar button span{
    color:color-mix(in srgb,#FFFEF9 72%,transparent);
    font-size:12px;
  }
  .toc-footbar button b{
    color:#FFFEF9;
    font-size:16px;
  }

  /* Кабинет и ссылка оплаты: узкие строки становятся двухрядными. */
  .file-line{
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
  }
  .file-line .fl-meta{grid-column:2;white-space:normal!important}
  .file-line>a,.file-line>.link{grid-column:3;grid-row:1/3}
  .ovg{grid-template-columns:minmax(0,1fr)!important}
  #zkMcta{
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:10px;
  }
  #zkMcta .zk-ml{min-width:0}
  #zkMcta .btn{min-width:0;max-width:46vw}
  #zkMctaNote{min-width:0;max-width:100%;overflow-wrap:anywhere}
  .zk-markst{position:static!important;width:max-content;max-width:100%;margin:8px 0 12px}

  .dossier-dialog-content{padding-bottom:84px}

  /* Правила листа согласия жили здесь, но не применялись никогда: их
     перебивает блок `:root.has-consent-bar body .lrail .cookiebar` (0,4,1)
     ниже в этом же файле. Замер с заглушённым `app.js`: вне `.lrail` баннер
     не рисуется вообще — без app.js его не появляется ни на services, ни на
     tariffs, а главная несёт тот же код в сборке. Клэмп абзаца в две строки
     отсюда тем более не должен вернуться: он резал бы многоточием фразу о
     целях обработки. Живая раскладка — один блок, ближе к концу файла. */
}

@media screen and (max-width:420px){
  .mnav .mn-i{font-size:11px;letter-spacing:0}
  .conf-mcta .mq-bar{
    grid-template-columns:46px minmax(0,1fr) minmax(106px,.74fr);
    gap:6px;
  }
  .conf-mcta .mq-back{width:46px}
  .conf-mcta .mq-more{font-size:12px}
  .conf-mcta #mNext{font-size:16px}
  body.conf-step-final .conf-mcta .mq-bar{
    grid-template-columns:46px minmax(0,1fr) 132px;
  }
  body.svc-checkout .conf-mcta .mq-bar{
    grid-template-columns:minmax(92px,.56fr) minmax(150px,1fr);
  }
  #zkMcta .btn{max-width:44vw;padding-left:12px;padding-right:12px}
  .home .pr-form[data-estimator-flow="1"] .plates,
  .home .pr-form[data-estimator-flow="1"] .plates.cols-3{
    grid-template-columns:minmax(0,1fr)!important;
  }
  .home .pr-form[data-estimator-flow="1"] .plates button{text-align:left}
  .home .pr-form[data-estimator-flow="1"] .pr-type-choices{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  }
  .home .pr-form[data-estimator-flow="1"] .pr-type-choices .pr-choice-secondary,
  .home .pr-form[data-estimator-flow="1"] .pr-type-choices .plate-more{
    grid-column:1/-1;
  }
  .cookiebar h2{font-size:18px}
  .cookiebar .cb-mark{width:29px;height:29px}
  .cookiebar .cb-foot{grid-template-columns:max-content max-content}
  .cookiebar .cb-foot>span{display:none}
}

@media screen and (max-width:340px){
  .mnav .mn-i{font-size:11px}
  .home .pr-note{
    margin-top:9px!important;
    padding-left:0!important;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:11px!important;
  }
  .conf-mcta .mq-bar{
    grid-template-columns:44px minmax(0,1fr) minmax(96px,.7fr);
    gap:5px;
  }
  .conf-mcta .mq-more{display:none}
  body.conf-step-final .conf-mcta .mq-bar{
    grid-template-columns:44px minmax(0,1fr) 128px;
  }
  body.svc-checkout .conf-mcta .mq-bar{
    grid-template-columns:minmax(88px,.54fr) minmax(146px,1fr);
  }
}

/* RELEASE 97 · геометрия mobile appbar */
@media screen and (min-width:621px) and (max-width:920px){
  body .mobile-appbar__brand{
    min-height:44px;
  }
}

@media screen and (max-width:350px){
  body .mobile-appbar{
    grid-template-columns:44px minmax(0,1fr) 44px;
  }

  body .mobile-appbar--root{
    grid-template-columns:minmax(0,1fr) 44px;
  }
}

@media screen and (max-width:380px) and (max-height:620px){
  /* На коротких телефонах не отдаём главный CTA под нижнюю навигацию. */
  .home .pr-scope{display:none!important}
  .home .pr-lead{margin-top:14px;padding-top:12px}
  .home .pr-cta{margin-top:14px!important}
  .rv-hero{padding-top:calc(var(--mobile-header-h) + 18px)!important}
  .rv-hero .h-display{font-size:44px!important;line-height:.98!important}
  .rv-hero .rv-lead{font-size:16px!important;line-height:1.45!important}
  .rv-cover-actions{margin-top:16px!important}
  .rv-cover-note{display:none!important}
}

@media screen and (max-width:920px) and (max-height:700px){
  .contact-sheet .cs-card{max-height:94svh}
  .sdlg-card,.tour-card,.dossier-dialog,.mledger{max-height:94svh}
  .home .pr-h{font-size:35px}
  .home .pr-lead{font-size:16px;line-height:1.5}
  .home .pr-cta{margin-top:18px!important}
  .home .pr-note{margin-top:10px!important}
}

/* ============================================================
   PRODUCTION MOBILE CHROME · ФИНАЛЬНЫЙ СЛОЙ
   mobile.css подключается после chrome.css, поэтому геометрия
   фирменной шапки и пяти пунктов дока закреплена здесь повторно.
   ============================================================ */
@media screen and (max-width:920px){
  :root{
    --mobile-header-h:calc(58px + env(safe-area-inset-top));
    --mobile-dock-h:calc(74px + env(safe-area-inset-bottom));
    --mobile-bottom-clear:calc(var(--mobile-dock-h) + 14px);
  }

  html{
    scroll-padding-top:calc(var(--mobile-header-h) + 12px);
    scroll-padding-bottom:var(--mobile-bottom-clear);
  }
  body{padding-bottom:calc(var(--mobile-dock-h) + 16px)}
  body.no-mcta,
  body.is-admin-route{padding-bottom:0}

  /* Колонтитул рабочего стола здесь не участвует: он скрыт
     целиком, всё делает .mobile-appbar ниже по файлу. */
  .mobile-cta.mnav{
    display:grid;
    min-height:var(--mobile-dock-h);
    grid-template-columns:repeat(5,minmax(0,1fr));
    align-items:stretch;
    gap:2px;
    padding:6px max(8px,env(safe-area-inset-right))
      max(5px,env(safe-area-inset-bottom))
      max(8px,env(safe-area-inset-left));
    background:color-mix(in srgb,var(--paper) 96%,transparent);
    border-top:1px solid color-mix(in srgb,var(--ink) 14%,transparent);
    box-shadow:0 -12px 34px -26px color-mix(in srgb,var(--ink) 52%,transparent);
    -webkit-backdrop-filter:blur(18px) saturate(1.1);
    backdrop-filter:blur(18px) saturate(1.1);
  }
  :root[data-theme="dark"] .mobile-cta.mnav{
    background:color-mix(in srgb,var(--paper) 97%,transparent);
    border-top-color:color-mix(in srgb,var(--ink) 18%,transparent);
    box-shadow:0 -12px 36px -25px rgba(0,0,0,.78);
  }
  .mnav .mn-i{
    position:relative;
    display:flex;
    min-width:0;
    min-height:54px;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:4px;
    padding:5px 2px 4px;
    border-radius:4px;
    color:var(--ink-soft);
    font-size:11px;
    font-weight:520;
    letter-spacing:0;
  }
  .mnav .mn-i::before{
    position:absolute;
    top:-7px;
    left:50%;
    width:24px;
    height:2px;
    border-radius:2px;
    background:var(--wax);
    content:"";
    opacity:0;
    transform:translateX(-50%);
  }
  .mnav .mn-i[aria-current="page"]{color:var(--ink)}
  .mnav .mn-i[aria-current="page"]::before{opacity:1}
  .mnav .mn-i[aria-current="page"]::after{display:none}
  .mnav .mn-i .mn-ic{
    display:inline-flex;
    width:22px;
    height:22px;
    flex:0 0 22px;
    align-items:center;
    justify-content:center;
    margin:0;
    color:currentColor;
    background:none;
    border:0;
    border-radius:0;
    box-shadow:none;
    font:500 16px/1 var(--serif);
  }
  .mnav .mn-i .mn-ic svg{width:18px;height:18px}
  .mnav .mn-l{
    display:block;
    overflow:hidden;
    width:100%;
    text-align:center;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .mnav .mn-calc{
    z-index:1;
    color:var(--wax-text,var(--wax));
  }
  .mnav .mn-calc .mn-ic{
    position:relative;
    width:48px;
    height:48px;
    flex-basis:48px;
    margin-top:-20px;
    color:#FFFEF9;
    background:var(--wax);
    border:2px solid var(--paper);
    border-radius:50%;
    box-shadow:0 8px 22px color-mix(in srgb,var(--wax-deep) 30%,transparent),
      inset 0 0 0 3px rgba(255,255,255,.08);
  }
  .mnav .mn-calc .mn-ic svg{width:20px;height:20px}
  .mnav .mn-calc:active{background:none}
  .mnav .mn-calc:active .mn-ic{
    transform:translateY(1px) scale(.97);
    box-shadow:0 5px 14px color-mix(in srgb,var(--wax-deep) 28%,transparent),
      inset 0 0 0 3px rgba(255,255,255,.08);
  }
  .mnav .mn-calc[aria-current="page"]::before{display:none}
  .mnav .mn-badge{
    top:1px;
    right:calc(50% - 24px);
    border-color:var(--paper);
  }
  .site-footer{padding-bottom:calc(var(--mobile-dock-h) + 14px)}
  body.no-mcta .site-footer{padding-bottom:calc(14px + env(safe-area-inset-bottom))}

  .mnav .mn-i:focus-visible{
    outline:2px solid var(--wax);
    outline-offset:3px;
  }
}

@media screen and (max-width:350px){
  .mnav .mn-i{font-size:11px}
}

@media(prefers-reduced-motion:reduce){
  .mnav .mn-i,
  .mnav .mn-i::before,
  .mnav .mn-calc .mn-ic{
    transition:none!important;
  }
}

/* Production footer follows the same compact editorial grid as the
   approved mobile concept. This final layer also owns safe-area space. */
@media screen and (max-width:920px){
  .site-footer{
    margin-top:56px;
    padding:0 0 calc(var(--mobile-dock-h) + 18px);
    color:#D4CCBD;
    background:#1D1C18;
    box-shadow:none;
  }
  :root[data-theme="dark"] .site-footer{color:#D4CCBD;background:#151512}
  body.no-mcta .site-footer{
    padding-bottom:calc(18px + env(safe-area-inset-bottom));
  }
  .site-footer::before,
  .site-footer::after{display:none;content:none}
  .site-footer>.pf-footer{
    padding-left:max(var(--mobile-gutter),env(safe-area-inset-left));
    padding-right:max(var(--mobile-gutter),env(safe-area-inset-right));
  }
  .pf-footer__main{
    grid-template-columns:1fr 1fr;
    gap:32px 24px;
    padding:42px 0 36px;
  }
  .pf-footer__brand{grid-column:1/-1}
  .pf-footer__brand .brand{margin-bottom:18px}
  .pf-footer__brand h2{font-size:21px}
  .pf-footer__actions>a,
  .pf-footer__actions>button{min-height:44px}
  .site-footer .pf-footer__channels a{
    min-height:44px;
    font-size:12px;
  }
  .site-footer .pf-footer__nav>a{
    display:flex;
    min-height:44px;
    align-items:center;
  }
  .pf-footer__nav:last-child{
    grid-column:1/-1;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:9px 16px;
  }
  .pf-footer__nav:last-child>strong{grid-column:1/-1}
  .pf-footer__legal>summary{min-height:52px}
  .pf-footer__legal-body{
    grid-template-columns:1fr;
    padding-bottom:24px;
  }
  .site-footer .pf-footer__legal-body nav a,
  .pf-footer__legal-body nav button{
    display:inline-flex;
    min-height:44px;
    align-items:center;
  }
  .site-footer .pf-footer__fns{min-height:44px}
  .pf-footer__bottom{
    grid-template-columns:1fr;
    gap:12px;
    padding:17px 0 8px;
  }
  .pf-footer__bottom>span:nth-child(2){display:none}
  .pf-footer__settings{justify-content:flex-start}

  .toc-appearance{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
    margin:0 0 14px;
  }
  .toc-appearance .toc-theme-row{
    min-width:0;
    padding:5px 5px 5px 10px;
  }
  .toc-appearance .toc-theme-row .ttr-lbl{font-size:12px}
  .toc-appearance .theme-toggle,
  .toc-appearance .calm-toggle{
    width:38px;
    height:38px;
    min-height:38px;
  }
}

@media screen and (max-width:560px){
  .pf-footer__nav:last-child{grid-template-columns:1fr 1fr}
  .pf-footer__legal>summary{grid-template-columns:1fr 24px}
  .pf-footer__legal>summary small{display:none}
  .pf-footer__settings{
    display:grid;
    grid-template-columns:1fr 44px;
    gap:6px 10px;
    width:100%;
  }
  .pf-footer__settings>span[data-calm-label]{margin-left:0}
  .pf-footer__settings .theme-toggle,
  .pf-footer__settings .calm-toggle{
    width:44px;
    height:44px;
  }
  .pf-footer__settings .fc-top{
    grid-column:1/-1;
    width:fit-content;
    min-height:44px;
    margin:2px 0 0;
  }
}

/* Мобильный footer финального концепта. */
@media screen and (max-width:920px){
  .site-footer,
  :root[data-theme="dark"] .site-footer,
  body.no-mcta .site-footer{
    margin-top:0;
    padding:0;
    color:#D4CCBD;
    background:#1D1C18;
  }
  .site-footer__main{
    grid-template-columns:1fr 1fr;
    gap:clamp(34px,5vw,72px);
    padding:44px max(18px,env(safe-area-inset-left)) 38px;
  }
  .site-footer__brand{grid-column:1/-1}
  .site-footer__bottom{
    flex-wrap:wrap;
    justify-content:flex-start;
    /* Клиренс дока уже даёт body (padding-bottom:70px) — прежний
       calc(--mobile-dock-h + 24 + safe) добавлял его второй раз
       и оставлял под подвалом 94px чистой пустоты. */
    padding:20px max(18px,env(safe-area-inset-left)) calc(24px + env(safe-area-inset-bottom));
  }
  .site-footer__bottom .theme-toggle{
    display:flex;
    min-height:44px;
    align-items:center;
  }
}
@media screen and (max-width:620px){
  .site-footer__main{
    grid-template-columns:1fr;
    padding-inline:max(16px,env(safe-area-inset-left));
  }
  .site-footer nav,
  .site-footer__brand{grid-column:auto}
  .site-footer nav:nth-of-type(2){display:none}
  .site-footer__bottom{
    align-items:flex-start;
    flex-direction:column;
    gap:8px;
    padding-inline:max(16px,env(safe-area-inset-left));
  }
}

/* Верхняя app-панель финального мобильного концепта. */
@media screen and (max-width:920px){
  :root{--mobile-appbar-h:62px}
  .site-header{display:none!important}
  .mobile-appbar{
    position:fixed;
    z-index:100;
    inset:0 0 auto;
    display:grid;
    height:calc(var(--mobile-appbar-h) + env(safe-area-inset-top));
    grid-template-columns:44px minmax(0,1fr) 44px 44px 44px;
    gap:4px;
    align-items:end;
    padding:env(safe-area-inset-top) max(10px,env(safe-area-inset-right)) 7px max(10px,env(safe-area-inset-left));
    background:rgba(243,238,228,.94);
    border-bottom:1px solid var(--hairline);
    -webkit-backdrop-filter:blur(18px) saturate(1.1);
    backdrop-filter:blur(18px) saturate(1.1);
  }
  :root[data-theme="dark"] .mobile-appbar{background:rgba(23,23,20,.94)}
  .mobile-appbar__back,
  .mobile-appbar__help,
  .mobile-appbar__theme,
  .mobile-appbar__menu{
    display:grid;
    width:44px;
    height:44px;
    min-height:44px;
    place-items:center;
    padding:0;
    color:var(--ink);
    background:transparent;
    border:0;
    border-radius:50%;
    font-size:19px;
  }
  .mobile-appbar__back{
    pointer-events:none;
    opacity:0;
  }
  .mobile-appbar__back.is-visible{
    pointer-events:auto;
    opacity:1;
  }
  .mobile-appbar__brand{
    display:flex;
    min-width:0;
    /* Знак 34px и две строки подписи давали 34px в высоту — ниже пола
       размера цели. Полосе это ничего не стоит: строка аппбара и так
       44px по кнопкам, а её высоту задаёт --mobile-appbar-h (62px),
       не содержимое. */
    min-height:44px;
    align-items:center;
    gap:8px;
    color:var(--ink);
    text-decoration:none;
  }
  .mobile-appbar__brand img{
    width:34px;
    height:34px;
    flex:0 0 34px;
    border-radius:50%;
  }
  .mobile-appbar__brand>span{
    display:grid;
    min-width:0;
    gap:1px;
  }
  .mobile-appbar__brand strong{
    overflow:hidden;
    color:var(--ink);
    font:520 14px/1.2 var(--serif);
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .mobile-appbar__brand small{
    overflow:hidden;
    color:var(--ink-soft);
    font:550 9px/1.2 var(--mono);
    letter-spacing:.05em;
    text-overflow:ellipsis;
    text-transform:uppercase;
    white-space:nowrap;
  }
  .mobile-appbar__help{
    color:var(--wax-text,var(--wax));
    background:var(--wax-soft);
    font:550 15px/1 var(--serif);
  }
  .mobile-appbar__theme{
    color:var(--ink);
    background:transparent;
    border:1px solid var(--hairline);
    font:500 15px/1 var(--serif);
  }
  .mobile-appbar__menu{position:relative}
  .mobile-appbar__menu i,
  .mobile-appbar__menu i::before,
  .mobile-appbar__menu i::after{
    display:block;
    width:17px;
    height:1px;
    background:var(--ink);
    content:"";
  }
  .mobile-appbar__menu i::before{transform:translateY(-5px)}
  .mobile-appbar__menu i::after{transform:translateY(4px)}
  .mobile-appbar--root{
    grid-template-columns:minmax(0,1fr) 44px 44px 44px;
  }
  .mobile-appbar--root .mobile-appbar__back{display:none}
  body:not(.is-task-route):not(.is-admin-route)>main{
    padding-top:calc(var(--mobile-appbar-h) + env(safe-area-inset-top));
  }
}
/* В полном концепте на планшетной ступени высоту lockup задаёт сам знак
   34px; пол 44px включается только на телефонной ступени <=620px. */
@media screen and (min-width:621px) and (max-width:920px){
  .mobile-appbar__brand{min-height:0}
}
/* Кнопки аппбара остаются 44px и на узком экране: эталон здесь
   тоже не мельчит (style.css §max-width:400px), а размер цели
   меньше 44px нарушает DESIGN-STANDARDS. Место отыгрываем
   зазором, отступом и знаком, а не кнопками. */
@media screen and (max-width:400px){
  .mobile-appbar{
    grid-template-columns:44px minmax(0,1fr) 44px 44px 44px;
    gap:2px;
    padding-inline:max(6px,env(safe-area-inset-left));
  }
  .mobile-appbar--root{
    grid-template-columns:minmax(0,1fr) 44px 44px 44px;
  }
  .mobile-appbar__brand{gap:6px}
  .mobile-appbar__brand img{width:28px;height:28px;flex-basis:28px}
}
@media screen and (max-width:350px){
  .mobile-appbar{grid-template-columns:44px minmax(0,1fr) 44px 44px}
  .mobile-appbar__help{display:none}
  .mobile-appbar__brand{
    justify-content:center;
    gap:0;
  }
  /* В колонке 44px текстовый lockup сжимался до нескольких пикселей и
     оставлял рядом со знаком обломок буквы. Текст остаётся доступным именем
     ссылки, но визуально работает как стандартный visually-hidden. */
  .mobile-appbar__brand>span{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    overflow:hidden;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
    white-space:nowrap;
    border:0;
  }
}

/* Пульт шапки на телефоне: один размер и одна толщина линии у значков. */
@media screen and (max-width:920px){
  .mobile-appbar{
    border-bottom-color:color-mix(in srgb,var(--hairline-strong) 68%,transparent);
    box-shadow:0 12px 34px -28px color-mix(in srgb,var(--ink) 42%,transparent);
  }

  .mobile-appbar__help,
  .mobile-appbar__theme,
  .mobile-appbar__menu,
  .mobile-appbar__back{
    border:1px solid color-mix(in srgb,var(--hairline-strong) 72%,transparent);
    color:var(--ink-soft);
    background:color-mix(in srgb,var(--sheet) 62%,transparent);
  }

  .mobile-appbar__help{
    color:var(--wax-text,var(--wax));
    background:var(--wax-soft);
  }

  .mobile-appbar .ha-ico--search{
    position:relative;
    display:block;
    width:18px;
    height:18px;
  }

  .mobile-appbar .ha-ico--search::before{
    position:absolute;
    top:2px;
    left:2px;
    width:9px;
    height:9px;
    border:1.45px solid currentColor;
    border-radius:50%;
    content:"";
  }

  .mobile-appbar .ha-ico--search::after{
    position:absolute;
    right:2px;
    bottom:3px;
    width:6px;
    height:1.45px;
    border-radius:2px;
    background:currentColor;
    content:"";
    transform:rotate(45deg);
    transform-origin:right center;
  }
}

/* Нижний dock финального мобильного концепта. */
@media screen and (max-width:920px){
  .mobile-dock.mobile-cta{
    /* Dock copy is functional navigation, not decorative quiet text.
       Keep its palette independent from page-level --ink-faint/--wax so
       both translucent light and dark bars retain WCAG AA contrast. */
    --dock-muted:#706A60;
    --dock-active:var(--wax);
    --dock-seal:#A63F29;
    position:fixed;
    z-index:95;
    inset:auto 0 0;
    display:grid;
    min-height:calc(var(--mobile-dock-h) + env(safe-area-inset-bottom));
    grid-template-columns:repeat(5,1fr);
    align-items:start;
    padding:8px max(8px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(8px,env(safe-area-inset-left));
    background:rgba(255,253,248,.96);
    border-top:1px solid var(--hairline);
    box-shadow:0 -12px 34px rgba(47,37,22,.08);
    -webkit-backdrop-filter:blur(18px) saturate(1.12);
    backdrop-filter:blur(18px) saturate(1.12);
  }
  :root[data-theme="dark"] .mobile-dock.mobile-cta{
    --dock-muted:#A9A093;
    --dock-active:#FF7657;
    --dock-seal:#B9432D;
    border-top-color:rgba(255,118,87,.24);
    background:rgba(12,11,10,.96);
    box-shadow:0 -14px 36px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.035);
  }
  .mobile-dock.mobile-cta>a{
    position:relative;
    display:grid;
    min-width:0;
    min-height:54px;
    place-items:center;
    align-content:center;
    gap:5px;
    padding:0;
    color:var(--dock-muted);
    background:transparent;
    border:0;
    border-radius:0;
    text-decoration:none;
  }
  .mobile-dock.mobile-cta>a::before{
    position:absolute;
    top:-9px;
    left:50%;
    display:block;
    width:24px;
    height:2px;
    background:var(--dock-active);
    content:"";
    opacity:0;
    transform:translateX(-50%);
  }
  .mobile-dock.mobile-cta>a.is-current{color:var(--ink)}
  .mobile-dock.mobile-cta>a.is-current::before{opacity:1}
  .mobile-dock.mobile-cta small{
    display:block;
    overflow:hidden;
    max-width:100%;
    color:inherit;
    font-size:11px;
    font-weight:520;
    text-align:center;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  /* Через .mn-i — иначе старое .mnav .mn-i .mn-ic (0-3-0) перебивало это
     правило и рисовало иконки в боксе 22×22 inline-flex, тогда как их
     ::before/::after посчитаны под 20×20 block: вся геометрия ехала. */
  .mobile-dock .mn-i .dock-icon{
    position:relative;
    display:block;
    width:22px;
    height:22px;
    color:currentColor;
    background:transparent;
  }
  .mobile-dock .dock-icon--home::before{
    position:absolute;
    inset:6px 3px 2px;
    border:1.5px solid currentColor;
    border-top:0;
    border-radius:2px;
    content:"";
  }
  .mobile-dock .dock-icon--home::after{
    position:absolute;
    top:3px;
    left:5px;
    width:10px;
    height:10px;
    border-top:1.5px solid currentColor;
    border-left:1.5px solid currentColor;
    content:"";
    transform:rotate(45deg);
  }
  .mobile-dock .dock-icon--services::before,
  .mobile-dock .dock-icon--services::after{
    position:absolute;
    left:3px;
    width:14px;
    height:5px;
    border:1.5px solid currentColor;
    border-radius:1px;
    content:"";
  }
  .mobile-dock .dock-icon--services::before{top:3px}
  .mobile-dock .dock-icon--services::after{bottom:3px}
  .mobile-dock .dock-icon--library::before{
    position:absolute;
    inset:2px 4px 2px 2px;
    border:1.5px solid currentColor;
    border-radius:1px 3px 3px 1px;
    content:"";
  }
  .mobile-dock .dock-icon--library::after{
    position:absolute;
    top:3px;
    bottom:3px;
    left:7px;
    width:1px;
    background:currentColor;
    content:"";
  }
  .mobile-dock .dock-icon--profile::before{
    position:absolute;
    top:2px;
    left:7px;
    width:7px;
    height:7px;
    border:1.5px solid currentColor;
    border-radius:50%;
    content:"";
  }
  .mobile-dock .dock-icon--profile::after{
    position:absolute;
    right:3px;
    bottom:2px;
    left:3px;
    height:8px;
    border:1.5px solid currentColor;
    border-radius:9px 9px 3px 3px;
    content:"";
  }
  /* Правило 8: пока висит выбор о данных, нижний слой один — баннер.
     Док возвращается сразу после ответа. */
  :root.has-consent-bar .mobile-dock{
    transform:translateY(100%);
    pointer-events:none;
    visibility:hidden;
  }
  /* Скрытый док больше не резервирует свои 59px под consent-rail.
     В iOS Safari visual viewport уже поднимает fixed-слой над плавающей
     адресной строкой; повторный подъём через --floor ставил карточку прямо
     поверх вторичной кнопки hero. */
  :root.has-consent-bar .lrail{
    bottom:max(8px,env(safe-area-inset-bottom));
    transform:none;
  }
  :root.has-consent-bar body .lrail .cookiebar{
    display:block;
    max-height:none;
    overflow:visible;
    padding:12px 14px;
  }
  :root.has-consent-bar .lrail .cookiebar .cb-head{
    display:none;
    margin:0;
  }
  /* Решение о данных должно читаться целиком: двухстрочный clamp обрывал
     фразу до объяснения, что отказ не мешает оформлению заявки. */
  :root.has-consent-bar .lrail .cookiebar>p{
    display:block;
    overflow:visible;
    -webkit-line-clamp:unset;
    margin-bottom:8px;
    font-size:12px;
    line-height:1.35;
  }
  :root.has-consent-bar .lrail .cookiebar .cb-actions{
    gap:8px;
  }
  :root.has-consent-bar .lrail .cookiebar .cb-actions .btn{
    min-height:46px;
    padding:8px 10px;
  }
  :root.has-consent-bar .lrail .cookiebar .cb-foot{
    gap:8px 10px;
    margin-top:7px;
    padding-top:7px;
  }
  :root.has-consent-bar .lrail .cookiebar .cb-foot>span{display:none}
  .mobile-dock.mobile-cta>.mobile-dock__primary{
    margin-top:-23px;
    /* Печать намеренно выступает над баром — ссылка не должна её срезать.
       Старый слой (.mnav .mn-calc) ставил overflow:hidden, из-за чего
       круг «АС» показывался половиной. */
    overflow:visible;
    color:var(--dock-active);
  }
  .mobile-dock.mobile-cta>.mobile-dock__primary::before{display:none}
  .mobile-dock .mn-ic.mobile-dock__seal{
    display:grid;
    /* Подъём задаёт ТОЛЬКО ссылка (-23px выше). Старое правило
       .mnav .mn-calc .mn-ic давало ещё -20px, и подъёмы складывались в 43px. */
    margin-top:0;
    width:52px;
    height:52px;
    place-items:center;
    color:#FFF9F0;
    background:var(--dock-seal);
    border:1px solid color-mix(in srgb,var(--dock-seal) 76%,#fff);
    border-radius:50%;
    box-shadow:0 8px 22px rgba(131,43,27,.26),inset 0 0 0 4px rgba(255,255,255,.08);
    font:550 13px/1 var(--serif);
  }
  .mobile-dock .mobile-dock__primary small{
    color:var(--dock-active);
    font-weight:600;
  }
  .mobile-dock .mn-badge{
    position:absolute;
    top:1px;
    right:calc(50% - 22px);
  }
}
@media screen and (max-width:390px){
  .mobile-dock.mobile-cta small{font-size:11px}
  .mobile-dock .mn-ic.mobile-dock__seal{width:48px;height:48px}
}

/* ------------------------------------------------------------
   Светлая сцена, настройки данных и системное подтверждение.
   Этот файл подключён последним: здесь собрана итоговая геометрия
   одинаковая для главной и остальных страниц.
   ------------------------------------------------------------ */
@media screen and (max-width:920px){
  .mobile-appbar{
    background:color-mix(in srgb,var(--paper) 94%,transparent);
  }
}

@media screen and (min-width:921px){
  :root.has-consent-bar .lrail{
    bottom:14px;
    width:min(1030px,calc(100vw - 40px));
  }

  :root.has-consent-bar body .lrail .cookiebar{
    display:grid;
    grid-template-columns:minmax(190px,.66fr) minmax(310px,1.24fr) minmax(340px,1fr);
    grid-template-areas:
      "head copy actions"
      "head foot actions";
    column-gap:22px;
    row-gap:6px;
    align-items:center;
    padding:12px 13px;
    border-color:color-mix(in srgb,var(--hairline-strong) 78%,transparent);
    background:color-mix(in srgb,var(--sheet) 94%,var(--paper));
    box-shadow:0 14px 42px color-mix(in srgb,var(--ink) 12%,transparent);
  }

  :root.has-consent-bar body .lrail .cookiebar .cb-head{
    grid-area:head;
    margin:0;
  }

  :root.has-consent-bar body .lrail .cookiebar .cb-kicker{
    display:block;
    margin-bottom:3px;
    color:var(--wax-text,var(--wax));
    font-size:9px;
  }

  :root.has-consent-bar body .lrail .cookiebar h2{
    font-size:18px;
    line-height:1.12;
  }

  :root.has-consent-bar body .lrail .cookiebar>p{
    grid-area:copy;
    margin:0;
    font-size:12.5px;
    line-height:1.42;
  }

  :root.has-consent-bar body .lrail .cookiebar .cb-actions{
    grid-area:actions;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
  }

  :root.has-consent-bar body .lrail .cookiebar .cb-actions .btn{
    min-height:44px;
    padding:8px 11px;
    font-size:12px;
  }

  :root.has-consent-bar body .lrail .cookiebar .cb-foot{
    grid-area:foot;
    display:flex;
    gap:13px;
    margin:0;
    padding:0;
    border:0;
  }

  :root.has-consent-bar body .lrail .cookiebar .cb-more{
    font-size:11px;
  }

  :root.has-consent-bar body .lrail .cookiebar .cb-foot>span{
    display:inline-flex;
    margin-left:auto;
    font-size:9px;
  }
}

@media screen and (max-width:920px){
  :root.has-consent-bar .lrail{
    right:10px;
    bottom:max(10px,env(safe-area-inset-bottom));
    left:10px;
    width:auto;
  }

  :root.has-consent-bar body .lrail .cookiebar{
    display:grid;
    max-height:none;
    padding:10px 12px 8px;
    overflow:visible;
    border-radius:10px;
    background:color-mix(in srgb,var(--sheet) 96%,var(--paper));
    box-shadow:0 14px 44px color-mix(in srgb,var(--ink) 16%,transparent);
  }

  /* Вариант B этапа 1: на телефоне лист занимал 219 px — 26% экрана на 390×844
     и 33% на 375×667. Кегли трогать нельзя (юридический текст уже поднят до
     14px), поэтому компактность берётся структурой. Заголовок «Вы решаете, что
     сохранять» дублирует смысл абзаца и уходит из раскладки, но остаётся в
     доступности: `role="region" aria-labelledby="cb-title"` берёт имя именно
     из него, и `display:none` оставил бы регион безымянным. Приём тот же, что
     у живых регионов рельсов в extras.css. На десктопе заголовок виден. */
  :root.has-consent-bar .lrail .cookiebar .cb-head{
    /* `display` объявлен здесь намеренно. Ранний блок этого же файла
       (`:root.has-consent-bar .lrail .cookiebar .cb-head`, специфичность та же
       0,4,1) ставит `display:none`, а sr-only его не отменяет — свойство просто
       не объявлено. Замер это и показал: вычисленный стиль был `display:none`,
       то есть ровно то, что запрещает соседний тест. Имя региона тогда держится
       только на том, что `aria-labelledby` ссылается на узел напрямую, и
       спецификация разрешает брать текст из скрытого узла. Опираться на эту
       тонкость незачем: возвращаем поток и оставляем настоящий sr-only. */
    display:block;
    position:absolute;
    width:1px;
    height:1px;
    margin:-1px;
    padding:0;
    overflow:hidden;
    clip:rect(0 0 0 0);
    white-space:nowrap;
    border:0;
  }

  :root.has-consent-bar .lrail .cookiebar>p{
    display:block;
    margin-bottom:6px;
    overflow:visible;
    font-size:14px;
    line-height:1.36;
  }

  :root.has-consent-bar .lrail .cookiebar .cb-actions{
    grid-template-columns:1fr 1fr;
    gap:7px;
  }

  /* padding 7→5 при min-height 44: кнопка была 51 px из-за собственного
     наполнения, а не из-за тач-цели. Цель остаётся 44. */
  :root.has-consent-bar .lrail .cookiebar .cb-actions .btn{
    min-height:44px;
    padding:5px 8px;
    font-size:14px;
  }

  /* Линия над подвалом делит лист, в котором осталось три элемента. Отступ и
     линия уходят вместе; ссылки остаются целями 44 px и стоят в одну строку. */
  :root.has-consent-bar .lrail .cookiebar .cb-foot{
    gap:0 14px;
    flex-wrap:nowrap;
    margin-top:4px;
    padding-top:0;
    border-top:0;
  }

  :root.has-consent-bar .lrail .cookiebar .cb-more{
    display:inline-flex;
    min-height:44px;
    align-items:center;
    font-size:12px;
  }
}

body .cookieprefs .cp-card{
  width:min(100%,590px);
  border-top-width:1px;
  border-radius:10px;
  background:color-mix(in srgb,var(--sheet) 96%,var(--paper));
}

body .cookieprefs .cp-card::before{
  position:absolute;
  top:0;
  right:58px;
  left:0;
  height:2px;
  background:linear-gradient(90deg,var(--wax),color-mix(in srgb,var(--wax) 12%,transparent));
  content:"";
}

body .cookieprefs .cp-x{
  top:10px;
  right:10px;
  width:38px;
  height:38px;
  border:1px solid var(--hairline);
  font-size:20px;
}

body .cookieprefs .cp-card h2{
  font-size:30px;
}

body .cookieprefs .cp-item{
  padding-block:13px;
}

body .cookieprefs .cp-none{
  padding:9px 11px;
  border:1px solid var(--hairline);
  border-radius:7px;
  background:color-mix(in srgb,var(--paper) 60%,transparent);
}

/* purgecss start ignore */
/* Подтверждение выбора: маленькая завершённая строка в правом нижнем
   углу. Знак — галочка, крестик остаётся отдельной доступной целью. */
body .mrail{
  right:clamp(16px,2vw,28px);
  width:min(390px,calc(100vw - 24px));
}

body .mnote--echo{
  display:grid;
  min-height:54px;
  grid-template-columns:30px minmax(0,1fr) 38px;
  align-items:center;
  gap:9px;
  padding:7px 7px 7px 10px;
  border:1px solid color-mix(in srgb,var(--hairline-strong) 82%,transparent);
  border-left-width:1px;
  border-radius:9px;
  background:color-mix(in srgb,var(--sheet) 96%,var(--paper));
  box-shadow:0 14px 38px color-mix(in srgb,var(--ink) 15%,transparent);
}

body .mnote--echo .mn-ic{
  display:grid;
  width:28px;
  height:28px;
  place-items:center;
  border:1px solid color-mix(in srgb,var(--wax) 42%,var(--hairline));
  border-radius:50%;
  color:var(--wax-text,var(--wax));
  background:var(--wax-soft);
  font:650 13px/1 var(--sans);
}

body .mnote--echo.is-verify .mn-ic{
  color:var(--wax-text,var(--wax));
}

body .mnote--echo .mn-msg{
  padding:5px 0;
  color:var(--ink);
  font-size:12.5px;
  line-height:1.38;
}

body .mnote--echo .mn-lead{
  position:absolute;
  right:8px;
  bottom:3px;
  left:47px;
  height:1px;
  opacity:.55;
}

body .mnote--echo .mn-x{
  width:38px;
  height:38px;
  min-width:38px;
  flex-basis:38px;
  font-size:17px;
}

@media screen and (max-width:620px){
  body .mrail{
    right:10px;
    left:10px;
    width:auto;
  }

  body .cookieprefs .cp-card h2{
    font-size:26px;
  }

  body .cookieprefs .cp-actions{
    grid-template-columns:1fr;
  }
}

/* ------------------------------------------------------------
   Финальная связка первого экрана и нижнего системного слота.
   ------------------------------------------------------------ */

/* Фирменная типографическая связка первого экрана:
   редакционный маркер, ясное обещание и тёплый акцент без плашек. */
.home-case .case-hero__copy{
  position:relative;
}

.home-case .case-hero__accolade{
  display:grid;
  margin:0 0 24px;
  grid-template-columns:38px minmax(0,1fr);
  align-items:center;
  gap:12px;
  color:var(--ink-soft);
  font:500 11px/1.35 var(--sans);
  letter-spacing:0;
  text-transform:none;
  white-space:normal;
}

.home-case .case-hero__accolade::before{
  width:38px;
  height:1px;
  background:linear-gradient(90deg,var(--wax) 0 76%,color-mix(in srgb,var(--wax) 12%,transparent) 76%);
  content:"";
}

.home-case .case-hero__accolade-line{
  display:flex;
  min-width:0;
  align-items:baseline;
  flex-wrap:wrap;
  gap:5px 8px;
}

.home-case .case-hero__accolade-name{
  color:var(--ink);
  font:650 8.5px/1.3 var(--mono);
  letter-spacing:.14em;
  text-transform:uppercase;
}

.home-case .case-hero__accolade-separator{
  color:var(--wax-text,var(--wax));
}

.home-case .case-hero__accolade-promise{
  color:var(--ink-soft);
}

.home-case .case-hero__accolade a{
  position:relative;
  display:inline-block;
  padding-inline:2px;
  color:var(--wax-text,var(--wax));
  font:italic 570 17px/1 var(--serif);
  letter-spacing:-.025em;
  text-decoration:none;
  text-transform:none;
  transition:color .2s ease,transform .24s cubic-bezier(.22,1,.36,1);
}

.home-case .case-hero__accolade a::after{
  position:absolute;
  right:0;
  bottom:-4px;
  left:0;
  height:2px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--wax) 18%,transparent),var(--wax) 18% 88%,transparent);
  content:"";
  opacity:.72;
  transform:scaleX(.62);
  transform-origin:left;
  animation:case-happy-underline 4.8s cubic-bezier(.22,1,.36,1) infinite;
}

.home-case .case-hero__accolade a:hover{
  color:var(--wax-deep);
  transform:translateY(-1px);
}

.home-case .case-hero h1,
html.has-js .home-case .case-hero__inner:not([data-route-visible="true"]) .case-hero h1{
  letter-spacing:-.052em;
  line-height:1.02;
}

.home-case .case-hero__lead,
html.has-js .home-case .case-hero__inner:not([data-route-visible="true"]) .case-hero__lead{
  margin-top:24px;
  line-height:1.62;
}

/* Форма — компактная редакторская карточка, не панель из «пилюль».
   Этот блок намеренно финальный: он сводит прежние каскадные варианты
   к одной геометрии для открытого и закрытого состояния. */
.home-case .case-prompt,
html.has-js .home-case .case-hero__inner:not([data-route-visible="true"]) .case-prompt{
  max-width:720px;
  overflow:hidden;
  border:1px solid var(--case-line-strong);
  border-radius:3px;
  background:var(--case-sheet);
  box-shadow:4px 4px 0 var(--paper-2),4px 4px 0 1px var(--case-line);
}

.home-case .case-prompt:focus-within{
  border-color:var(--case-line-strong);
  box-shadow:4px 4px 0 var(--paper-2),4px 4px 0 1px var(--case-line);
}

.home-case .case-prompt__toggle{
  display:grid;
  min-height:68px;
  padding:11px 15px 11px 17px;
  grid-template-columns:30px minmax(0,1fr) 34px;
  align-items:center;
  gap:13px;
}

.home-case .case-prompt__folio{
  color:var(--wax-text,var(--wax));
  font:650 9px/1 var(--mono);
  letter-spacing:.12em;
}

.home-case .case-prompt__toggle>span{
  display:grid;
  min-width:0;
  gap:5px;
}

.home-case .case-prompt__toggle small{
  color:var(--ink-faint);
  font:650 8px/1.15 var(--mono);
  letter-spacing:.17em;
  text-transform:uppercase;
}

.home-case .case-prompt__toggle strong{
  min-width:0;
  overflow:hidden;
  color:var(--ink);
  font:650 16px/1.15 var(--sans);
  letter-spacing:-.018em;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.home-case .case-prompt__toggle i{
  width:34px;
  height:34px;
  flex-basis:34px;
  border:0;
  border-left:1px solid var(--case-line-strong);
  border-radius:0;
  background:transparent!important;
}

.home-case .case-prompt__toggle i::before,
.home-case .case-prompt__toggle i::after{
  left:calc(50% + 3px);
  width:9px;
}

.home-case .case-prompt__body{
  padding:11px 15px 13px;
}

.home-case .case-prompt__body>label{
  position:absolute!important;
  width:1px;
  height:1px;
  margin:-1px;
  padding:0;
  overflow:hidden;
  border:0;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
}

.home-case .case-prompt__field{
  display:grid;
  overflow:hidden;
  grid-template-columns:minmax(0,1fr) 224px;
  border:1px solid var(--case-line-strong);
  border-radius:2px;
  background:var(--paper);
  transition:border-color .18s ease,box-shadow .18s ease;
}

.home-case .case-prompt__field:focus-within{
  border-color:var(--wax);
  box-shadow:inset 0 -2px 0 var(--wax);
}

.home-case .case-prompt textarea{
  min-height:52px;
  height:52px;
  padding:12px 14px;
  border:0!important;
  border-radius:0;
  background:transparent;
  box-shadow:none!important;
  font-size:13px;
  line-height:1.35;
}

.home-case .case-prompt__field .button{
  min-width:224px;
  max-width:224px;
  min-height:52px;
  padding-inline:15px;
  border:0;
  border-left:1px solid color-mix(in srgb,var(--sheet) 38%,transparent);
  border-radius:0;
  font-size:12px;
  line-height:1.2;
  white-space:nowrap;
}

.home-case .case-prompt__presets{
  display:flex;
  align-items:center;
  gap:0;
  margin-top:7px;
}

.home-case .case-prompt__presets button{
  position:relative;
  width:auto;
  min-width:0;
  min-height:34px;
  padding:7px 13px;
  overflow:visible;
  border:0!important;
  border-radius:0;
  color:var(--ink-soft);
  background:transparent!important;
  font-size:10.5px;
  text-overflow:clip;
  white-space:nowrap;
}

.home-case .case-prompt__presets button+button::before{
  position:absolute;
  top:50%;
  left:0;
  width:2px;
  height:2px;
  border-radius:50%;
  background:var(--hairline-strong);
  content:"";
  transform:translate(-1px,-50%);
}

.home-case .case-prompt__presets button::after{
  position:absolute;
  right:13px;
  bottom:4px;
  left:13px;
  height:1px;
  background:var(--wax);
  content:"";
  opacity:0;
  transform:scaleX(.35);
  transition:opacity .16s ease,transform .22s ease;
}

.home-case .case-prompt__presets button:hover,
.home-case .case-prompt__presets button[aria-pressed="true"]{
  color:var(--wax-text,var(--wax));
  background:transparent!important;
}

.home-case .case-prompt__presets button:hover::after,
.home-case .case-prompt__presets button[aria-pressed="true"]::after{
  opacity:1;
  transform:scaleX(1);
}

@media screen and (max-width:620px){
  .home-case .case-prompt__toggle{
    min-height:64px;
    padding:10px 11px 10px 13px;
    grid-template-columns:24px minmax(0,1fr) 30px;
    gap:10px;
  }

  .home-case .case-prompt__toggle>span{
    display:grid;
    gap:4px;
  }

  .home-case .case-prompt__toggle strong{
    font-size:16px;
  }

  .home-case .case-prompt__toggle i{
    width:30px;
    height:30px;
    flex-basis:30px;
  }

  .home-case .case-prompt__body{
    padding:10px 11px 12px;
  }

  .home-case .case-prompt__field{
    grid-template-columns:1fr;
  }

  .home-case .case-prompt textarea{
    min-height:62px;
    height:62px;
    font-size:16px;
  }

  .home-case .case-prompt__field .button{
    width:100%;
    min-width:0;
    max-width:none;
    min-height:46px;
    border-top:1px solid color-mix(in srgb,var(--sheet) 38%,transparent);
    border-left:0;
  }

  .home-case .case-prompt__presets{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:0 12px;
  }

  .home-case .case-prompt__presets button{
    min-height:38px;
    padding:8px 3px 6px;
    border-bottom:1px solid var(--case-line)!important;
    text-align:left;
  }

  .home-case .case-prompt__presets button+button::before{
    display:none;
  }

  .home-case .case-prompt__presets button::after{
    right:3px;
    bottom:-1px;
    left:3px;
  }
}

body .resume-card.is-consent-waiting{
  display:none!important;
}

/* Сохранённый прогресс занимает ровно тот же rail, что и приватность.
   Поэтому два нижних сообщения физически не могут спорить друг с другом. */
body .resume-card.is-rail-resume{
  position:relative;
  isolation:isolate;
  display:grid;
  width:min(820px,100%);
  max-width:820px;
  min-height:72px;
  margin-inline:auto;
  padding:10px 10px 10px 18px;
  overflow:visible;
  grid-template-columns:8px minmax(0,1fr) 158px;
  align-items:center;
  gap:14px;
  opacity:0;
  border:1px solid var(--hairline-strong);
  border-radius:3px;
  background:
    linear-gradient(96deg,color-mix(in srgb,var(--wax) 3.5%,var(--sheet)),var(--sheet) 42%),
    var(--sheet);
  box-shadow:4px 4px 0 var(--paper-2),4px 4px 0 1px var(--hairline);
  transform:translateY(10px);
  transition:opacity .32s ease,transform .42s cubic-bezier(.22,1,.36,1);
}

body .resume-card.is-rail-resume::before{
  position:absolute;
  top:-1px;
  left:18px;
  width:86px;
  height:2px;
  background:linear-gradient(90deg,var(--wax),color-mix(in srgb,var(--wax) 8%,transparent));
  content:"";
}

body .resume-card.is-rail-resume.is-visible{
  opacity:1;
  transform:none;
}

body .resume-card.is-rail-resume::after{
  display:none;
}

body .resume-card__folio{
  position:relative;
  width:7px;
  height:34px;
  border-left:1px solid var(--wax);
}

body .resume-card__folio::after{
  position:absolute;
  top:0;
  left:-3px;
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--wax);
  content:"";
}

body .resume-card__copy{
  display:grid;
  min-width:0;
  gap:6px;
}

body .resume-card__kicker{
  color:var(--ink-faint);
  font:650 8px/1 var(--mono);
  letter-spacing:.18em;
  text-transform:uppercase;
}

body .resume-card.is-rail-resume .resume-card__message{
  display:flex;
  min-width:0;
  align-items:baseline;
  gap:10px;
  margin:0;
  overflow:hidden;
  color:var(--ink-soft);
  font-size:10.5px;
  line-height:1.25;
  text-overflow:ellipsis;
  white-space:nowrap;
}

body .resume-card.is-rail-resume .resume-card__message strong{
  color:var(--ink);
  font:650 15px/1.18 var(--sans);
  letter-spacing:-.02em;
}

body .resume-card__detail{
  color:var(--ink-soft);
  font:500 10.5px/1.2 var(--sans);
  opacity:1;
  transition:opacity .32s ease;
}

body .resume-card__action{
  display:inline-flex!important;
  min-height:44px;
  align-items:center;
  justify-content:center;
  gap:12px;
  padding:10px 16px;
  border:1px solid var(--wax)!important;
  border-radius:2px;
  color:#fffaf3!important;
  background:var(--wax)!important;
  box-shadow:none!important;
  font-size:11.5px;
  font-weight:650;
  letter-spacing:.005em;
  line-height:1.2;
  text-decoration:none;
  white-space:nowrap;
}

body .resume-card__action:hover,
body .resume-card__action:focus-visible{
  border-color:var(--wax-deep)!important;
  background:var(--wax-deep)!important;
}

body .resume-card__typed{
  display:inline;
}

body .resume-card__typed.is-typing::after{
  display:inline-block;
  width:1px;
  height:.9em;
  margin-left:3px;
  background:var(--wax);
  content:"";
  vertical-align:-.08em;
  animation:resume-typing-caret .72s steps(1,end) infinite;
}

body .resume-card.is-typing-copy .resume-card__detail{
  opacity:0;
}

@keyframes resume-typing-caret{
  0%,46%{opacity:1}
  47%,100%{opacity:0}
}

@media screen and (min-width:921px){
  :root.has-resume-rail .lrail{
    right:auto;
    bottom:14px;
    left:50%;
    width:min(1030px,calc(100vw - 40px));
    align-items:center;
    transform:translateX(-50%);
  }
}

@media screen and (max-width:920px){
  :root.has-resume-rail .mobile-dock{
    pointer-events:none;
    visibility:hidden;
    transform:translateY(100%);
  }

  :root.has-resume-rail .lrail{
    right:10px;
    bottom:max(10px,env(safe-area-inset-bottom));
    left:10px;
    width:auto;
    transform:none;
  }

  body .resume-card.is-rail-resume{
    width:100%;
    max-width:none;
    min-height:0;
    padding:9px 8px 9px 11px;
    grid-template-columns:7px minmax(0,1fr) 44px;
    gap:8px;
    border-radius:3px;
  }

  body .resume-card__folio{
    width:6px;
    height:30px;
  }

  body .resume-card.is-rail-resume .resume-card__message{
    display:grid;
    gap:2px;
    font-size:11px;
    white-space:normal;
  }

  body .resume-card.is-rail-resume .resume-card__message strong{
    font-size:14px;
  }

  body .resume-card__kicker{
    display:none;
  }

  body .resume-card__detail{
    font-size:11px;
  }

  body .resume-card__action{
    width:44px;
    min-height:44px;
    padding:0;
    font-size:16px;
  }

  body .resume-card__action-label{
    position:absolute!important;
    width:1px;
    height:1px;
    margin:-1px;
    padding:0;
    overflow:hidden;
    border:0;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
    white-space:nowrap;
  }
}

@media(prefers-reduced-motion:reduce){
  body .resume-card.is-rail-resume{
    transition:none;
  }

  body .resume-card__typed.is-typing::after{
    animation:none;
  }
}

@media(max-width:920px){
  /* Пока человек выбирает настройки приватности, у экрана может быть только
     одна нижняя панель. Иначе док заявки физически перекрывает обе кнопки. */
  :root.has-consent-bar .concept-task-bar{
    visibility:hidden;
    pointer-events:none;
    transform:translateY(calc(100% + 24px));
  }

  body .lrail .cookiebar.is-confirmed{
    display:grid;
    width:min(100%,520px);
    align-self:flex-end;
    padding:10px 11px;
    grid-template-columns:minmax(0,1fr) 42px;
    grid-template-areas:
      "head actions"
      "copy actions";
    column-gap:10px;
    row-gap:3px;
    border-radius:2px;
    box-shadow:3px 3px 0 var(--paper-2),3px 3px 0 1px var(--hairline);
  }

  body .lrail .cookiebar.is-confirmed .cb-head{
    grid-area:head;
    margin:0;
  }

  body .lrail .cookiebar.is-confirmed h2{
    font-size:18px;
  }

  body .lrail .cookiebar.is-confirmed>p{
    grid-area:copy;
    margin:0;
    font-size:14px;
    line-height:1.32;
  }

  body .lrail .cookiebar.is-confirmed .cb-actions{
    display:block;
    grid-area:actions;
  }

  body .lrail .cookiebar.is-confirmed .cb-confirmation{
    width:42px;
    min-height:42px;
    padding:0;
    border:0;
    font-size:0;
  }

  body .lrail .cookiebar.is-confirmed .cb-confirmation>span{
    width:26px;
    height:26px;
    font-size:14px;
  }
}

/* Свёрнутый ввод не должен оставлять под собой половину пустого экрана.
   При раскрытии правило перестаёт действовать: увеличенная форма сохраняет
   уже выверенный минимальный отступ до следующего раздела. */
@media screen and (min-width:921px){
  html.has-js .home-case .case-hero__inner{
    transition:min-height .38s cubic-bezier(.22,1,.36,1),padding-bottom .3s ease;
  }

  html.has-js .home-case .case-hero__inner:not([data-route-visible="true"]):has(.case-prompt[data-prompt-expanded="false"]){
    min-height:410px;
    padding-bottom:18px;
  }

  html.has-js .home-case .case-hero:has(.case-prompt[data-prompt-expanded="false"]) + .case-ecosystem{
    padding-top:64px;
  }
}

@media(prefers-reduced-motion:reduce){
  html.has-js .home-case .case-hero__inner{
    transition:none;
  }
}
/* purgecss end ignore */

/* Мобильное продолжение стеклянной шапки. Цвет не задан отдельной
   плашкой: аппбар размывает именно ту секцию, над которой находится. */
@media screen and (max-width:920px){
  body .mobile-appbar,
  body .mobile-appbar--root{
    border-bottom-color:color-mix(in srgb,var(--hairline-strong) 58%,transparent);
    background:color-mix(in srgb,var(--paper) 46%,transparent)!important;
    box-shadow:
      inset 0 1px 0 color-mix(in srgb,var(--sheen,#fff) 30%,transparent),
      0 14px 36px -32px color-mix(in srgb,var(--ink) 48%,transparent);
    -webkit-backdrop-filter:blur(20px) saturate(1.28);
    backdrop-filter:blur(20px) saturate(1.28);
  }

  @supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
    body .mobile-appbar,
    body .mobile-appbar--root{
      background:color-mix(in srgb,var(--paper) 14%,transparent)!important;
    }
  }

  body .mobile-appbar__help,
  body .mobile-appbar__menu,
  body .mobile-appbar__back{
    border-radius:10px;
  }

  body .mobile-appbar__help:hover,
  body .mobile-appbar__menu:hover,
  body .mobile-appbar__back:hover{
    background:color-mix(in srgb,var(--sheet) 36%,transparent);
  }
}

/* ==========================================================================
   RELEASE 82 · мобильная шапка и компактный footer-аккордеон
   ========================================================================== */
@media screen and (max-width:920px){
  body .mobile-appbar,
  body .mobile-appbar--root{
    grid-template-columns:44px minmax(0,1fr) 44px 44px;
    gap:2px;
    padding-right:max(10px,env(safe-area-inset-right));
    padding-left:max(10px,env(safe-area-inset-left));
  }

  body .mobile-appbar--root{
    grid-template-columns:minmax(0,1fr) 44px 44px;
  }

  body .mobile-appbar__help,
  body .mobile-appbar__menu,
  body .mobile-appbar__back{
    width:44px;
    min-width:44px;
    min-height:44px;
  }

  body .mobile-appbar__menu{
    justify-content:center;
    gap:0;
  }

  body .mobile-appbar__menu>span{
    position:absolute!important;
    width:1px;
    height:1px;
    margin:-1px;
    overflow:hidden;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
    white-space:nowrap;
  }

  body .mobile-appbar__menu::after{display:none}
  body .mobile-appbar__menu i,
  body .mobile-appbar__menu i::before,
  body .mobile-appbar__menu i::after{width:18px}

  :root[data-theme="dark"] body .mobile-appbar,
  :root[data-theme="dark"] body .mobile-appbar--root{
    background:color-mix(in srgb,var(--paper) 14%,transparent)!important;
  }

  body .site-footer__main{
    display:block;
    padding:32px max(18px,env(safe-area-inset-left)) 14px;
  }

  body .site-footer__brand{
    display:grid;
    grid-template-columns:42px minmax(0,1fr);
    gap:13px;
    margin-bottom:20px;
  }

  body .site-footer__brand .brand__mark{
    width:42px;
    height:42px;
    flex-basis:42px;
  }

  body .site-footer__brand strong{font-size:16px}
  body .site-footer__brand p{
    max-width:30ch;
    margin-top:5px;
    font-size:14px;
  }

  body .site-footer__brand-actions{
    grid-column:1/-1;
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    margin-top:4px;
  }

  body .site-footer__brand-actions a{
    min-height:44px;
    justify-content:center;
    padding:8px 10px;
    border:1px solid #4a443b;
    border-radius:3px;
    font-size:12px;
    text-align:center;
  }

  body .site-footer__brand-actions a:first-child{
    color:#fff8ef;
    border-color:var(--wax-cta,var(--wax));
    background:var(--wax-cta,var(--wax));
  }

  body .site-footer__group{
    display:block!important;
    border-top:1px solid #36332d;
  }

  body .site-footer__group:last-child{border-bottom:1px solid #36332d}

  body .site-footer__group>summary{
    display:flex;
    min-height:48px;
    align-items:center;
    color:#f0e9dc;
    cursor:pointer;
    font:520 14px/1.2 var(--serif);
  }

  body .site-footer__group>summary i{
    position:relative;
    display:block;
    width:16px;
    height:16px;
  }

  body .site-footer__group>summary i::before,
  body .site-footer__group>summary i::after{
    position:absolute;
    top:7px;
    left:3px;
    width:10px;
    height:1px;
    background:#bdb3a4;
    content:"";
    transition:transform .18s ease;
  }

  body .site-footer__group>summary i::after{transform:rotate(90deg)}
  body .site-footer__group[open]>summary i::after{transform:rotate(0)}

  body .site-footer__links{
    display:grid!important;
    padding:0 0 8px;
  }

  body .site-footer__group:not([open])>.site-footer__links{display:none!important}

  body .site-footer__links a,
  body.home-flow-page .site-footer__links a{
    display:flex;
    min-height:44px;
    align-items:center;
    color:#b4ab9d;
    font-size:14px;
  }

  body .site-footer__bottom{
    display:grid;
    min-height:0;
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px 14px;
    align-items:center;
    padding:16px max(18px,env(safe-area-inset-left)) 18px;
    font-size:12px;
    line-height:1.45;
    letter-spacing:.02em;
    text-transform:none;
  }

  body .site-footer__copyright,
  body .site-footer__promise{
    grid-column:1/-1;
  }

  body .site-footer__promise{color:#c8beae}

  body .site-footer__legal{
    display:flex;
    min-width:0;
    flex-wrap:wrap;
    gap:0 14px;
  }

  body .site-footer__legal a{
    display:inline-flex;
    min-height:44px;
    align-items:center;
  }

  body .site-footer__bottom .theme-toggle{
    display:inline-flex;
    width:44px;
    min-width:44px;
    min-height:44px;
    align-items:center;
    justify-content:center;
    padding:0;
    color:#d2c8b9;
    border:1px solid #403b34;
    border-radius:50%;
  }
}

@media screen and (max-width:360px){
  body .site-footer__brand-actions{grid-template-columns:1fr}
  body .site-footer__bottom{grid-template-columns:1fr}
  body .site-footer__bottom .theme-toggle{justify-content:flex-start}
}

/* RELEASE 82 · плашка приватности не перекрывает форму и футер.
   Высоту рельса измеряет app.js; запас используется лишь пока открыт выбор. */
@media screen and (max-width:920px){
  :root.has-consent-bar body,
  :root.has-consent-bar body.home-flow-page{
    padding-bottom:calc(var(--lrail-h,220px) + 22px + env(safe-area-inset-bottom))!important;
  }

  :root.has-consent-bar body .lrail .cookiebar{
    background:var(--sheet);
    border-color:var(--hairline-strong);
    box-shadow:0 18px 50px rgba(30,22,16,.24);
  }

  :root[data-theme="dark"].has-consent-bar body .lrail .cookiebar{
    background:#1d1914;
    border-color:#4b4338;
    box-shadow:0 22px 58px rgba(0,0,0,.58);
  }

  :root.has-consent-bar body .lrail .cookiebar .cb-actions .btn-wax{
    color:var(--ink);
    background:color-mix(in srgb,var(--sheet) 76%,var(--wax) 24%);
    border-color:color-mix(in srgb,var(--hairline-strong) 70%,var(--wax));
  }
}

/* RELEASE 97 · финальная геометрия mobile appbar */
@media screen and (min-width:621px) and (max-width:920px){
  body .mobile-appbar__brand{min-height:44px}
}

@media screen and (max-width:350px){
  body .mobile-appbar{grid-template-columns:44px minmax(0,1fr) 44px}
  body .mobile-appbar--root{grid-template-columns:minmax(0,1fr) 44px}
}

/* ОТТИСК В МОБИЛЬНОЙ ШАПКЕ
   Знак несёт кремовый диск и белое кольцо `0 0 0 2px rgba(255,253,248,.9)`
   (polish15-chrome.css:1494). На бумажном фоне десктопа это паспарту, но
   мобильная шапка — стекло: `blur(20px) saturate(1.28)` поверх страницы.
   Белое кольцо ярче всего, что есть на стекле, поэтому знак читался наклейкой
   с белым ореолом, а край диска упирался в нижнюю линию шапки.
   На стекле оставляем сам оттиск: сургучный волосок вместо белого кольца,
   диск чуть прозрачнее фона шапки и мягкая тень прижима. */
@media screen and (max-width:920px){
  body .mobile-appbar__brand .brand__mark{
    background:color-mix(in srgb,var(--paper) 88%,transparent);
    box-shadow:
      0 0 0 1px color-mix(in srgb,var(--wax) 30%,transparent),
      0 3px 9px rgba(78,43,29,.2);
    transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s ease;
  }

  /* Нажатие — оттиск прижимается к бумаге. */
  body .mobile-appbar__brand:active .brand__mark{
    transform:scale(.94);
    box-shadow:
      0 0 0 1px color-mix(in srgb,var(--wax) 44%,transparent),
      0 1px 4px rgba(78,43,29,.24);
  }

  /* Появление — знак ставят один раз, как печать: поворот и лёгкий отскок. */
  @media (prefers-reduced-motion:no-preference){
    body .mobile-appbar__brand .brand__mark{
      animation:seal-set .58s cubic-bezier(.22,1,.36,1) both;
    }
    @keyframes seal-set{
      from{transform:scale(.84) rotate(-10deg);opacity:0}
      62%{transform:scale(1.04) rotate(3deg);opacity:1}
      to{transform:none;opacity:1}
    }
  }
}
