/* Новый вид лины (02.10.2026, владелец: «вкусная, сочная, современная»; меню с золотой плашкой — его выбор).
   Слой ПОВЕРХ app.css / nav.css: только вид (цвет, тень, радиус, отклик), разметка и расположение не меняются.
   Подключён последним в index.html. Откат: убрать строку <link … fresh.css> из index.html.
   ⚠️ Заливки записей --r-* (владелец 25.09) здесь не трогаем. В плотных панелях не менять ширины и вес шрифта:
   панель журнала и поля карточки записи сразу переносятся. Разбор и снимки: материалы/vid-2026-10/README.md */

/* ── 1. Токены ─────────────────────────────────────────────────────────── */
:root{
  --bg:#F3F1EC;--card:#fff;--tint:#FAF9F6;--soft:#EBE7E0;--line:#E6E1D9;--line-w:#F0EDE7;--line-s:#CFC8BD;--dim:#B5AEA4;
  --text:#191714;--muted:#5E5852;--faint:#716A63;
  --accent:#0E7A5F;--accent-h:#0A6650;--ok:#0E7A5F;--soft-ok:#D9EEE6;--ink-ok:#0B5A46;
  --e1:0 1px 2px rgba(25,23,20,.06),0 1px 1px rgba(25,23,20,.03);
  --e2:0 1px 2px rgba(25,23,20,.05),0 10px 28px -10px rgba(25,23,20,.14);
  --e3:0 2px 6px rgba(25,23,20,.07),0 28px 64px -16px rgba(25,23,20,.32);
  --ring:0 0 0 3px rgba(14,122,95,.20);
  --nav-bg:#0F2D25;--nav-line:rgba(255,255,255,.08);--nav-t:rgba(255,255,255,.78);--nav-f:rgba(255,255,255,.56);
  --nav-on:rgba(255,255,255,.11);--nav-hv:rgba(255,255,255,.06);--nav-ic:#7FDDC0;--nav-brand:#F1E6CF;
  --ease:cubic-bezier(.16,1,.3,1)}
:root[data-theme="dark"]{
  --bg:#131519;--card:#1C1F26;--tint:#21252D;--soft:#2A2F39;--line:#30353F;--line-w:#252931;--line-s:#464E5D;
  --accent:#35B592;--accent-h:#4CC9A6;--ok:#35B592;
  --e1:0 1px 2px rgba(0,0,0,.4);
  --e2:0 1px 2px rgba(0,0,0,.35),0 12px 30px -10px rgba(0,0,0,.6);
  --e3:0 2px 6px rgba(0,0,0,.4),0 28px 64px -16px rgba(0,0,0,.8);
  --ring:0 0 0 3px rgba(53,181,146,.28);
  --nav-bg:#0D0F13;--nav-line:rgba(255,255,255,.07);--nav-on:rgba(255,255,255,.09);--nav-ic:#4CC9A6;--nav-brand:#ECEFF4}

/* ── 2. То, что рисует браузер ─────────────────────────────────────────── */
::selection{background:rgba(14,122,95,.22)}
:root[data-theme="dark"] ::selection{background:rgba(53,181,146,.35)}
*{scrollbar-width:thin;scrollbar-color:var(--line-s) transparent}
input,textarea{caret-color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--accent);box-shadow:var(--ring)}
html,body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

/* ── 3. Кнопки, поля, чипы, переключатели ──────────────────────────────── */
.btn{border-color:var(--line-s);box-shadow:var(--e1);transition:background .15s,border-color .15s,box-shadow .15s,transform .08s}
.btn:hover{background:var(--tint);border-color:var(--dim)}
.btn:active{transform:translateY(1px);box-shadow:none}
.btn.primary,.btn.ok{border-color:transparent;background:var(--accent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.20),0 1px 2px rgba(10,80,62,.35),0 6px 14px -6px rgba(14,122,95,.55)}
.btn.primary:hover,.btn.ok:hover{background:var(--accent-h);border-color:transparent}
.btn.primary:active,.btn.ok:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.18)}
:root[data-theme="dark"] .btn.primary,:root[data-theme="dark"] .btn.ok{color:#06231B;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 6px 16px -6px rgba(53,181,146,.5)}
.btn.lnk,.btn.user,.theme-btn,.btn.okk-ed,.btn.okk-del-q{box-shadow:none}   /* кнопки-ссылки без рамки: тень им не нужна */
.btn.lnk:hover{background:transparent;color:var(--text)}
.btn.danger:hover{background:var(--soft-bad);border-color:var(--bd-bad)}
input,select,textarea{border-color:var(--line-s);transition:border-color .15s,box-shadow .15s}

.chip{transition:background .15s,border-color .15s,color .15s}
button.chip:hover{border-color:var(--dim)}
.chip.on{background:var(--soft-ok);border-color:transparent;color:var(--ink-ok);box-shadow:inset 0 0 0 1.5px var(--accent)}
:root[data-theme="dark"] .chip.on{color:var(--ink-ok)}

/* переключатель: спокойная дорожка и белый «бегунок» вместо жёлтой заливки */
.seg{border:0;background:var(--soft);padding:2px;gap:0;border-radius:10px}   /* ширина как раньше (рамка 1px → отступ 2px): панель журнала не должна переноситься */
.seg button{border:0!important;background:transparent;border-radius:8px;color:var(--muted);padding-top:6px;padding-bottom:6px;transition:background .15s,color .15s,box-shadow .15s}
.seg button:hover{color:var(--text)}
/* тонкая черта между невыбранными пунктами: без неё соседние подписи читались одной фразой («Мастера салона Схема доступов») */
.seg button:not(:first-child):not(.on){background-image:linear-gradient(var(--line-s),var(--line-s));background-size:1px 46%;background-position:left center;background-repeat:no-repeat}
.seg button.on + button{background-image:none}
.seg button.on{background:var(--card);color:var(--text);box-shadow:0 1px 2px rgba(25,23,20,.14),0 0 0 .5px rgba(25,23,20,.06)}
:root[data-theme="dark"] .seg button.on{background:#3A4150}
/* статус записи остаётся цветным: это смысл, а не украшение */
#att.seg button[data-v="1"].on{background:var(--came);color:var(--ink-warn)}

/* ── 4. Шапка и меню ───────────────────────────────────────────────────── */
.top{border-bottom-color:var(--line);box-shadow:0 1px 0 rgba(25,23,20,.02)}
#viewname{font-size:19px;font-weight:800;letter-spacing:-.015em}
.gsearch{background:var(--soft);border-color:transparent;transition:background .15s,box-shadow .15s,border-color .15s}
.gsearch:focus-within{background:var(--card);border-color:var(--accent);box-shadow:var(--ring)}
.gsearch input:focus{box-shadow:none}
.copick{border-color:var(--line-s);box-shadow:var(--e1)}

@media (min-width:701px){
  body.nav-pin .top .brand{display:none}   /* логотип уже стоит в меню: второй рядом с названием раздела лишний */
  .nav{background:var(--nav-bg);border-right:0;box-shadow:1px 0 0 var(--nav-line)}
  .nav-head{border-bottom-color:var(--nav-line)}
  .nav .brand{color:var(--nav-brand)}
  .nav-logo{color:var(--nav-f)}.nav-logo:hover{background:var(--nav-hv);color:#fff}
  /* группы меню — отступом и черточкой с полями, заголовок ярче: блоки читались одним списком (владелец 02.10.2026) */
  .nav-g+.nav-g{position:relative;margin-top:10px;padding-top:10px;border-top:0}
  .nav-g+.nav-g::before{content:"";position:absolute;top:0;left:14px;right:14px;height:1px;background:rgba(255,255,255,.13)}
  .nav-gh{color:var(--nav-t);opacity:.72;padding:4px 14px 6px}
  body.nav-pin .nav-gh{opacity:.72}
  .nav-gh:hover,body.nav-pin .nav-gh:hover{color:#fff;opacity:1}
  .nav-g.closed .nav-gh{padding-bottom:2px}
  .nav .tab{color:var(--nav-t);transition:background .15s,color .15s}
  .nav-ic{color:var(--nav-f)}
  .nav .tab:hover{background:var(--nav-hv);color:#fff}
  .nav .tab.active{background:var(--nav-on);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
  .nav .tab.active .nav-ic,.nav .tab.fav .nav-ic{color:var(--nav-ic)}
  .nav-sub::before{background:var(--nav-line)}
  .nav-s{color:var(--nav-t)}.nav-s:hover{background:var(--nav-hv);color:#fff}
  .nav-s.on{color:#fff}.nav-s.on::before{background:var(--nav-ic)}
  .nav-act i{color:var(--nav-f)}.nav-act i:hover{background:var(--nav-on);color:#fff;box-shadow:none}
  .nav-foot{border-top-color:var(--nav-line)}
  .nav-foot button{color:var(--nav-f)}.nav-foot button:hover{background:var(--nav-hv);color:#fff}
  .nav-hid .tab{color:var(--nav-f)}
  .nav-body{scrollbar-color:rgba(255,255,255,.18) transparent}
  .nav-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18)}
  .nav .tbadge{box-shadow:0 0 0 2px var(--nav-bg)}
}
@media (max-width:700px){
  .navbar{border-top:0;box-shadow:0 -1px 0 var(--line),0 -10px 24px -14px rgba(25,23,20,.25)}
  .navbar button{transition:color .15s}
  .navbar button.active{color:var(--accent);font-weight:700}
  .fab{box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 10px 26px -6px rgba(14,122,95,.6)}
}

/* ── 5. Журнал ─────────────────────────────────────────────────────────── */
.journal{border:0;border-radius:14px;box-shadow:var(--e2)}
.gh{border-bottom-color:var(--line)}
.gh .gn b{font-size:13.5px;font-weight:700;letter-spacing:-.005em}
.gh .av{box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.35)}
.gt{color:var(--muted);font-weight:700}
.cell.half{border-bottom-color:var(--line-w)}
.cell.hour{border-bottom-color:var(--line)}
.cell.off{background:repeating-linear-gradient(135deg,#EAE6DF 0 6px,#DCD6CC 6px 7px)}   /* нерабочее время: темнее, чтобы не путалось с рабочим (04.10, ICE FACE) */
:root[data-theme="dark"] .cell.off{background:repeating-linear-gradient(135deg,#14161A 0 6px,#0F1114 6px 7px)}
.cell:hover{background:rgba(14,122,95,.035)}
.rec{border-radius:7px;box-shadow:inset 0 1px 0 rgba(255,255,255,.38),0 1px 2px rgba(25,23,20,.14);transition:box-shadow .15s,transform .15s var(--ease)}
.rec:hover{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--accent),0 10px 22px -6px rgba(25,23,20,.35);transform:translateY(-1px)}
.rec{font-size:11.5px}
.rec .t{font-size:11px;opacity:.85;font-weight:700}
.rec .room{font-size:10.5px}
.rec .src{background:#1565B8}.rec .src.fm{background:#6A4C99}   /* белое на прежнем голубом давало 2,9:1 */
:root[data-theme="dark"] .rec .t{opacity:.95}
.rec .n{font-size:12px;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 14px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 14px),transparent)}   /* длинное название гаснет у края, а не рубится на полбуквы */
.rec .new,.mitem .new{border:0;background:rgba(25,23,20,.80);color:#fff;padding:1px 5px}
:root[data-theme="dark"] .rec .new,:root[data-theme="dark"] .mitem .new{background:rgba(255,255,255,.90);color:#15171C}
.rec.cancel{opacity:1;color:var(--muted)}
.gt{font-size:11.5px}
.rec.cancel{box-shadow:none}
:root[data-theme="dark"] .rec{box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 1px 3px rgba(0,0,0,.5)}
:root[data-theme="dark"] .rec.cancel{box-shadow:none}
.nowline{border-top-width:1.5px}
.nowline::after{content:"";position:absolute;right:-1px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--bad)}
.grid.mob .nowline::after{display:none}
.legend i{border-radius:3.5px}

/* ── 6. Подсказка, карточка записи, окна ───────────────────────────────── */
.peek{border:0;border-radius:14px;box-shadow:var(--e3);animation:lfPop .16s var(--ease)}
.dd,.co-dd{border-color:var(--line);box-shadow:var(--e3);border-radius:12px}
.side-card{box-shadow:-1px 0 0 var(--line),-24px 0 64px -18px rgba(25,23,20,.32);animation:lfSide .26s var(--ease)}
.ph b{font-size:18px;letter-spacing:-.015em}
.ph .x{border-color:transparent;background:var(--soft);transition:background .15s,color .15s}
.ph .x:hover{background:var(--line);color:var(--text)}
.pf{background:var(--card);box-shadow:0 -10px 24px -18px rgba(25,23,20,.35)}
.guest .av{box-shadow:inset 0 0 0 2px rgba(255,255,255,.3)}
.fld label{font-weight:600;color:var(--muted)}
.tile{border-color:var(--line);box-shadow:var(--e1);transition:border-color .15s,box-shadow .15s,transform .08s}
.tile:hover{border-color:var(--dim)}
.tile:active{transform:translateY(1px)}
.modal{background:rgba(20,18,15,.48);animation:lfFade .18s ease-out}
.modal-card{border-radius:18px;padding:22px;box-shadow:var(--e3);animation:lfPop .22s var(--ease)}
.modal h3{font-size:19px;letter-spacing:-.015em;margin-bottom:8px}
.toast{border-radius:12px;box-shadow:var(--e3);padding:11px 18px;animation:lfRise .24s var(--ease)}
/* 13.10.2026: left:50% сжимал тост до половины экрана, на телефоне длинный текст шёл столбиком в 7 строк; ширина по тексту до 90vw */
.toast{width:max-content;box-sizing:border-box}
/* карточка гостя: цифры без рамок-карточек внутри окна, крупнее и ровнее */
.modal-card .kpi{gap:0;background:var(--tint);border-radius:14px;overflow:hidden}
.modal-card .kpi .card{border:0;border-radius:0;background:transparent;box-shadow:inset -1px 0 0 var(--line);padding:12px 16px}
.modal-card .kpi .card:last-child{box-shadow:none}
.modal-card .kpi .v{font-size:22px;letter-spacing:-.02em}
.modal-card>.card{background:var(--tint);border-color:transparent}
.cl-acts{border-bottom-color:var(--line-w)}
table.plain td,table.plain th{border-bottom-color:var(--line-w)}
tr.hrow:has(+ tr.hnrow) td{border-bottom:0}   /* строка визита и строка заметки под ней давали двойную линию */

/* ── 7. Диалоги ────────────────────────────────────────────────────────── */
.ch-list,.ch-thread{border:0;border-radius:14px;box-shadow:var(--e2)}
.ch-filters{border-bottom-color:var(--line-w)}
.ch-item{padding:9px 12px;border-bottom-color:var(--line-w);transition:background .12s}
.ch-item.sel{background:var(--soft-ok)}
.ch-item.sel:hover{background:var(--soft-ok)}
.ch-av{box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.3)}
.ub{box-shadow:0 2px 6px -1px rgba(14,122,95,.5)}
.ch-acts .btn:not(.primary){box-shadow:none;border-color:var(--line)}
.ch-acts .btn:not(.primary):hover{border-color:var(--dim)}
.ch-who>b{font-size:17px;letter-spacing:-.015em}
.ch-msgs{background:var(--bg);padding:12px 16px;gap:6px}
.bub{border:0;border-radius:16px;padding:8px 12px;box-shadow:var(--e1)}
.msg.out .bub{background:#D3ECE2;box-shadow:none}
:root[data-theme="dark"] .msg.out .bub{background:#17463A}
.ch-day{border:0;background:var(--soft);font-weight:600;padding:2px 12px}
.ch-compose{padding:10px 12px;border-top-color:var(--line-w)}
.ch-compose textarea{border-radius:12px}
.ch-empty{font-size:15px}

/* ── 8. Гости: одна панель с линиями вместо сорока рамок ───────────────── */
.list.glist{gap:0;background:var(--card);border-radius:14px;box-shadow:var(--e2);overflow:hidden}
.glist .ghead{padding:10px 14px;background:var(--tint);border-bottom:1px solid var(--line)}
.glist .item.grow{border:0;border-radius:0;border-bottom:1px solid var(--line-w);transition:background .12s}
.glist .item.grow:last-child{border-bottom:0}
.glist .item.grow:hover{background:var(--tint)}
.g-nm b{font-size:14.5px}
.g-v b{font-size:15.5px;letter-spacing:-.01em}

/* ── 9. Движение ───────────────────────────────────────────────────────── */
@keyframes lfSide{from{transform:translateX(28px);opacity:.4}to{transform:none;opacity:1}}
@keyframes lfPop{from{transform:translateY(6px) scale(.985);opacity:0}to{transform:none;opacity:1}}
@keyframes lfFade{from{opacity:0}to{opacity:1}}
@keyframes lfRise{from{transform:translate(-50%,10px);opacity:0}to{transform:translateX(-50%);opacity:1}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
@media (max-width:700px){.side-card{animation-name:lfPop}}

/* ── 10. По разбору: контраст, тёмная тема, телефон ────────────────────── */
a{color:var(--accent-h)}
.gtag.new{color:var(--ink-ok)}.gtag.reg{color:var(--ink-info)}.gtag.warn{color:var(--ink-warn)}.gtag.bad{color:var(--ink-bad)}
.glist a.wa{opacity:.5;transition:opacity .15s}.glist .item:hover a.wa{opacity:1}
.g-c .faint:only-child{opacity:.4}
.bub{font-size:14px}.bub .meta{font-size:11px}
.ch-lastact{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-s)}
.modal-card .btn.big:not(.primary):not(.ok){min-height:40px;color:var(--muted);box-shadow:none;font-size:14px}
:root[data-theme="dark"] .ub,:root[data-theme="dark"] .ch-seg .cnt:not(.bad),:root[data-theme="dark"] .okk-cseg .n.hot,:root[data-theme="dark"] .chip.st-new,:root[data-theme="dark"] .fab,:root[data-theme="dark"] #wl_n .cnt{color:#06231B}
:root[data-theme="dark"] .tbadge,:root[data-theme="dark"] .seg .cnt.bad{color:#2A0907}
:root[data-theme="dark"] .modal{background:rgba(0,0,0,.62)}
:root[data-theme="dark"] .chip.new{background:var(--soft);border-color:var(--line-s);color:var(--text)}
:root[data-theme="dark"] .g-av.av4{background:#47233A;color:#F2A9D0}
:root[data-theme="dark"] .gtag.bd{background:#47233A;color:#F2A9D0}
:root[data-theme="dark"] .rec:hover{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--accent),0 10px 22px -6px rgba(0,0,0,.7)}
@media (hover:none){.glist .item.grow:hover{background:transparent}.rec:hover{transform:none}}
@media (max-width:700px){
  .glist .item.grow{align-items:start}
  .guest .glinks{gap:10px;font-size:13.5px}
  .grid.mob{margin-bottom:76px}   /* круглая «+» больше не закрывает вечерние записи */
  button.chip{min-height:32px}
  .modal-card .kpi{grid-template-columns:repeat(3,minmax(0,1fr))}   /* три цифры в ряд, без дыры «2 + 1» */
  .modal-card .kpi .card{min-width:0;padding:10px 12px}
  .modal-card .kpi .v{font-size:16px}
}
/* по замерам: пастельные аватарки и подсказка в поле на тёмной теме не дотягивали до 4,5:1 */
.g-av.av0{color:var(--ink-ok)}.g-av.av1{color:var(--ink-warn)}.g-av.av2{color:var(--ink-info)}.g-av.av3{color:#9A4412}
:root[data-theme="dark"] .g-av.av3{color:#FFAA70}
textarea::placeholder{color:var(--faint)}
@media (hover:none){a.wa{position:relative}a.wa::after{content:"";position:absolute;inset:-13px}}   /* значок вотсапа 15×15: палец попадает в область 41×41 */
/* ── Вариант с золотом (Настя, 02.10): золото сайта lina-crm.ru #E9C46A только в меню: логотип, значок и метка выбранного раздела.
   В рабочей области золота нет: там жёлтый занят статусом «пришёл» и записями с Яндекс Карт. */
:root{--nav-brand:#E9C46A;--nav-ic:#E9C46A}
:root[data-theme="dark"]{--nav-brand:#E9C46A;--nav-ic:#E9C46A}
@media (min-width:701px){
  .nav-head{border-bottom-color:rgba(233,196,106,.22)}
  .nav .tab.active{box-shadow:inset 0 0 0 1px rgba(233,196,106,.28)}
  .nav-logo:hover{color:#E9C46A}
}
/* ── Вариант 4 (владелец, 02.10): выбранный раздел меню целиком золотой плашкой, текст и значок тёмно-зелёные */
@media (min-width:701px){
  .nav .tab.active,.nav .tab.active:hover{background:#E9C46A;color:#0F2D25;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 2px 8px -2px rgba(0,0,0,.35)}
  .nav .tab.active .nav-ic,.nav .tab.active.fav .nav-ic{color:#0F2D25}
  .nav .tab.active .tbadge{box-shadow:0 0 0 2px #E9C46A}
  .nav .tab.active .nav-act i{color:rgba(15,45,37,.6)}
  .nav .tab.active .nav-act i:hover{background:rgba(15,45,37,.12);color:#0F2D25}
}
/* телефон: шапка беседы и поле ввода прежней высоты, иначе переписке на айфоне остаётся на 10px меньше */
@media (max-width:700px){.ch-who>b{font-size:15px}.ch-compose{padding:8px 10px}}
/* перетаскивание в меню (разделы и группы, 02.10.2026): черта золотом, зелёная на тёмно-зелёном не видна */
@media (min-width:701px){
  .nav .tab.over,.nav-g.g-over{box-shadow:inset 0 2px 0 #E9C46A}
  .nav .tab.over-b,.nav-g.g-over-b,.nav-gh.over{box-shadow:inset 0 -2px 0 #E9C46A}
  .nav-gh.over{color:#fff;opacity:1}
}

/* «Рассылки» на телефоне (06.10.2026, умная рассылка): пять каналов — полоса прокручивается, заголовок переносится, а не уезжает за экран */
@media (max-width:700px){
  .iris-head>div{min-width:0;max-width:100%}
  .mail-chans{max-width:100%;overflow-x:auto;scrollbar-width:none}
  .mail-chans::-webkit-scrollbar{display:none}
  .iris-title small{display:block;margin:4px 0 0;white-space:normal}
  table.stk.iris-jt td{min-width:0}
  table.stk .iris-clip{max-width:100%!important;display:block!important}
}

/* телефон (07.10.2026, перепроверка демо на айфоне): таблицы, которые на телефоне не складываются в карточки (.an-tbl, «Задачи»
   в «Диалогах», счета в «Финучёте»), уводили вбок всю страницу — теперь листаются внутри своей карточки; поле «Подсказка для ИИ»
   в «Критериях» ОКК было шире экрана */
@media (max-width:700px){
  .tbl:has(> table:not(.stk)){overflow-x:auto}
  table.stk td textarea{width:100%;max-width:100%;box-sizing:border-box}
  .okk-ctbl textarea,.okk-ctbl td:nth-child(1),.okk-ctbl td:nth-child(2){min-width:0}
  .okk-ctbl textarea{width:100%}
}

/* ===== ревью вида 13.10.2026 ===== */
/* экран входа: до входа только карточка входа, без поиска гостя, списка филиалов и переключателя темы в шапке */
body.login-on header.top{display:none}
/* «Смены»: поля времени смены по умолчанию отдельной группой и во всю надпись «10:00 AM» (было «10:00 AN» в обрезанном поле) */
.sh-def{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.sh-def input[type=time]{width:auto;min-width:0;padding:4px 8px}
.sh-dr{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
@media (max-width:700px){.sh-def{flex-basis:100%}}
/* крестик в углу любого окна */
.modal-card{position:relative}
.modal-card .mx{position:absolute;top:10px;right:10px;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:var(--soft,#f1eee8);color:var(--muted);font-size:22px;line-height:30px;cursor:pointer;z-index:6;box-shadow:none}
.modal-card .mx:hover{background:var(--line);color:var(--text)}
.modal-card > h3:first-of-type,.modal-card > .mx + h3{padding-right:40px}
/* заголовок раздела один: на компьютере он в шапке, дубль в теле прячем */
@media (min-width:701px){#main .dup-title{display:none}}
/* заглушка при переходе между разделами */
.skel{padding:4px 0 0}
.skel .sk-bar,.skel .sk-row{border-radius:10px;background:linear-gradient(90deg,var(--line-w,#eee) 0%,var(--soft,#f3f1ec) 40%,var(--line-w,#eee) 80%);background-size:200% 100%;animation:sk-shimmer 1.2s linear infinite}
.skel .sk-bar{height:34px;width:min(520px,60%);margin-bottom:14px}
.skel .sk-row{height:64px;margin-bottom:10px}.skel .sk-row.short{width:70%}
@keyframes sk-shimmer{from{background-position:200% 0}to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.skel .sk-bar,.skel .sk-row{animation:none}}
/* «Персонал»: фильтр и сортировка не сливаются в одну полосу */
.pe-sortlbl{margin-left:10px}
/* узкие разделы (Чек-листы, Телефония, Персонал, Найм…): колонка 760px оставляла пустой половину экрана */
.cn{max-width:1000px}
/* «Финансы»: строка операции открывается кликом, карандаш виден при наведении */
#f_tx tr.f-open{cursor:pointer}
@media (hover:hover){#f_tx tr.f-open .btn[data-edit]{opacity:.22;transition:opacity .15s}#f_tx tr.f-open:hover .btn[data-edit]{opacity:1}}
/* «Услуги»: стрелки порядка не кричат из каждой строки, появляются при наведении; на телефоне их нет */
@media (hover:hover){.svc-tbl td .btn[data-mv]{opacity:.18;transition:opacity .15s}.svc-tbl tr:hover td .btn[data-mv]{opacity:1}}
@media (max-width:700px){.svc-tbl td:has(> .btn[data-mv]){display:none}}
/* «Рассылки»: оценка визита и число оценок на разных строках; одиночная карточка не висит в сетке на четыре */
.card.at .v .sub{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:2px}
.iris-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.iris-sc{max-width:640px}
/* аватарки: тёмные буквы на осветлённой заливке, контраст от 4,5 (было белое на пастели 3,1-4,4) */
/* заливка стоит инлайном из js, поэтому осветляем внутренней тенью: она ложится поверх фона и под буквы */
.ch-av,.gh .av,.mc-h .av,.td-av{box-shadow:inset 0 0 0 60px rgba(255,255,255,.58);color:#1e1b17;text-shadow:none}
:root[data-theme="dark"] .ch-av,:root[data-theme="dark"] .gh .av,:root[data-theme="dark"] .mc-h .av,:root[data-theme="dark"] .td-av{box-shadow:inset 0 0 0 60px rgba(0,0,0,.4);color:#fff}
/* карточки в сетке не тянутся по высоте соседа */
.two,.pu-al{align-items:start}
/* самые мелкие подписи до 11px: тепловая карта «Аналитики ОП», кабинет мастера, чипы мастеров */
.sa-hc span,.sa-hm{font-size:11px}.mcell small{font-size:10.5px}.chip.mch small,.mst .rt .sal-l{font-size:11px}
/* значки в кнопках стоят по центру строки */
.btn > svg,.chip > svg,.card.item > b > svg{vertical-align:-2px;margin-right:4px}
.btn.ic > svg{margin-right:0}
/* «Склад»: на карточке две кнопки, остальные за «…» */
.acc-actions .acc-more[hidden]{display:none}
/* критерии ОКК: ключ программы под названием, серым */
.okk-key{margin-top:3px;font-family:ui-monospace,Menlo,monospace;font-size:10.5px}
/* ===== тёмная тема (ревью 13.10.2026, владелец: «делай всё») ===== */
:root[data-theme="dark"]{
  /* заливки записей журнала тише: те же оттенки, меньше крика (горчичный, оранжевый и ядовито-жёлтый Яндекса) */
  --r-wait:#1d5247;--r-conf:#343c7a;--r-came:#5f4a1c;--r-paid:#6b3d22;--r-no:#6b2a33;--r-site:#1f4a6e;--r-ya:#55511c;--r-fm:#46336b;
  /* золото плашек и бейджей прозрачностью поверх тёмной карточки, а не оливой #3C3117 */
  --came:rgba(233,196,106,.14);
}
:root[data-theme="dark"] .stf-role.owner{background:rgba(233,196,106,.2);color:#F2D98A}
:root[data-theme="dark"] .ch .gl{stroke:rgba(255,255,255,.13)}
:root[data-theme="dark"] input[type=checkbox]{accent-color:var(--accent)}
/* ===== телефон (ревью 13.10.2026) ===== */
@media (max-width:700px){
  /* кнопки и чипы под палец: было 29-32 px при норме 44 */
  .btn.small{min-height:38px}.btn.ic.small{min-width:38px;min-height:38px}
  #main .chip,#main .chips .chip{min-height:36px;padding-top:7px;padding-bottom:7px}
  /* «Звонки»: фильтры в три строки: быстрые периоды (листаются), даты, поиск и Excel */
  #main .cl-bar{flex-wrap:wrap;overflow:visible}
  #main .cl-bar .chips{flex:1 1 100%;overflow-x:auto;scrollbar-width:none;white-space:nowrap}
  #main .cl-bar input[type=date]{flex:1 1 40%;max-width:44%}
  #main .cl-bar #cl_q{flex:1 1 60%;min-width:0}
  #main .seg > button,#main .ch-seg > button,#main .an-seg > button{min-height:38px}
  a.wa{padding:8px;margin:-8px}a.tel{padding:6px 0;margin:-6px 0;display:inline-block}
  .btn.lnk,.btn.lnk.small{min-height:38px;display:inline-flex;align-items:center}
  /* 25.10.2026: правило выше вернуло в карточку записи «Удалить» и «Отменить запись», и «Оплатить» уезжало за край экрана; они под «Ещё…» */
  .pf .btn.pf-x{display:none}
  /* пара дат в одну строку: «—» и вторая дата не падают на новую */
  .bar input[type=date]{flex:1 1 38%;min-width:0;max-width:44%;width:auto}
  .cl-bar select{flex:1 1 45%;min-width:0}
  /* всё, что шире экрана, затеняем справа: видно, что можно листать */
  .x-scroll{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent)}
  /* длинные пояснения свёрнуты до двух строк, по нажатию целиком */
  .mclamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
  .mclamp.open{display:block;-webkit-line-clamp:unset}
  /* нечётная последняя плитка показателей во всю ширину, а не одна на полэкрана */
  .kpi > :last-child:nth-child(odd),.an-allg > :last-child:nth-child(odd),.iris-kpi > :last-child:nth-child(odd),.hr-stats > :last-child:nth-child(odd),.sl-kpi > :last-child:nth-child(odd),.pb-kpi > :last-child:nth-child(odd),.od-kpi > :last-child:nth-child(odd),#main .stats > :last-child:nth-child(odd){grid-column:1 / -1}
  /* в сложенных таблицах кнопки и номера переносятся, а не уезжают за край */
  table.stk td.nw{white-space:normal}
  table.stk td[data-l="Что"],table.stk td[data-l="Комментарий"],table.stk td[data-l="Суть"],table.stk td.fin-accb{grid-column:1 / -1}
  table.stk td.fin-accb{display:flex;flex-wrap:wrap;gap:6px;text-align:left}
}

/* ===== хвост ревью вида 13.10.2026: компактные списки на телефоне (Финансы, ОКК, Услуги) ===== */
/* table.stk2: вместо шести подписей на строку карточка в две строки. Первая: время (.s2-t), имя (.s2-n), сумма или
   рейтинг жирным справа (.s2-v). Вторая серым через точку: всё остальное; подпись остаётся только у .s2-l, где число само
   по себе непонятно («Остаток в кассе: 12 000», «Мастеров: 1»). Комментарий (.s2-c) последним, сверка ОКК (.s2-x) своей
   строкой. Классы ставит разметка (app.js f_tx, okk.js okkRowHtml, services.js svcRow), подписи — labelTable. Компьютер не трогаем. */
@media (max-width:700px){
  #main table.stk.stk2 tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 6px;padding:10px 0 9px}
  #main table.stk.stk2 tr::after{content:"";flex-basis:100%;height:0;order:5}
  #main table.stk.stk2 td{display:block;padding:0;min-height:0;position:static;grid-column:auto;order:6;font-size:12.5px;line-height:1.35;font-weight:400;color:var(--muted);white-space:normal;text-align:left}
  #main table.stk.stk2 td::before{content:"· ";position:static;display:inline;width:auto;font-size:inherit;line-height:inherit;font-weight:400;color:var(--faint)}
  #main table.stk.stk2 td:nth-child(1 of :not(.s2-t,.s2-n,.s2-v,.s2-x,:empty))::before{content:none}
  #main table.stk.stk2 td.s2-l::before{content:"· " attr(data-l) ": "}
  #main table.stk.stk2 td:nth-child(1 of :not(.s2-t,.s2-n,.s2-v,.s2-x,:empty)).s2-l::before{content:attr(data-l) ": "}
  #main table.stk.stk2 td.s2-t{order:1;color:var(--text);font-weight:600;font-size:13px}
  #main table.stk.stk2 td.s2-n{order:2;flex:1 1 0;min-width:0;color:var(--text);font-weight:700;font-size:14px;overflow-wrap:anywhere}
  #main table.stk.stk2 td.s2-v{order:3;margin-left:auto;color:var(--text);font-weight:700;font-size:16px;text-align:right;white-space:nowrap}
  #main table.stk.stk2 td.s2-v.bad{color:var(--ink-bad,var(--bad))}
  #main table.stk.stk2 td.s2-t::before,#main table.stk.stk2 td.s2-n::before,#main table.stk.stk2 td.s2-v::before,#main table.stk.stk2 td.s2-x::before{content:none}
  #main table.stk.stk2 td.s2-c{order:7}
  /* кнопки и ссылки строки (.s2-a) — своей строкой, несколько рядом; .s2-x — одна во всю ширину */
  #main table.stk.stk2 tr::before{content:"";flex-basis:100%;height:0;order:8}
  #main table.stk.stk2 td.s2-a{order:9;margin-top:4px}
  #main table.stk.stk2 td.s2-a::before{content:none}
  #main table.stk.stk2 td.s2-x{order:10;flex-basis:100%;margin-top:4px}
  #main table.stk.stk2 td:empty{display:none}
  /* вложенные строки ячеек (время под датой, телефон под именем) идут в строку мелким */
  #main table.stk.stk2 td.s2-t>div,#main table.stk.stk2 td.s2-n>div{display:inline;margin-left:5px;font-weight:400;font-size:12px;color:var(--muted)}
  /* «Финансы»: карандаш не нужен, строка открывается нажатием; «отменена» остаётся */
  #main table.stk.stk2 td:has(> .btn[data-edit]){display:none}
  /* ОКК: красная черта у проверки с ошибкой — у всей карточки, не у ячейки времени */
  #main table.stk.stk2 tr.has-err{box-shadow:inset 3px 0 0 var(--bad);padding-left:9px}
  #main table.stk.stk2 tr.has-err td:first-child{box-shadow:none}
  /* «Услуги»: комментарий под названием, как на компьютере; стрелки порядка на телефоне скрыты и здесь (правило выше перебивалось #main) */
  #main table.stk.stk2 td.s2-n .svc-cm{margin-top:2px}
  #main table.stk.stk2 td:has(> .btn[data-mv]){display:none}
  /* «Звонки»: шапка таблицы без thead (tr.thr) не показывается; итог звонка и кнопка «Итог» идут в строку с менеджером */
  #main table.stk.stk2 tr.thr{display:none}
  #main table.stk.stk2 td .call-note{display:inline;margin:0 0 0 4px}
  #main table.stk.stk2 td .call-note::before{content:"· "}
  #main table.stk.stk2 td > div:has(> .btn.call-b){display:inline-block;margin-left:4px;vertical-align:middle}
  #main table.stk.stk2 td .btn.small.call-b{min-height:32px;padding:4px 10px}
}

/* ===== хвост ревью вида 13.10.2026: две колонки на широком экране (Касса и чеки, Персонал) ===== */
/* На 1440 содержимое занимало левые 600-800 px, справа пусто. Касса: слева «Ждут чека» (.ks-l), справа настройки,
   маркированные товары, журнал (.ks-r). Персонал: слева «Ближайшие 30 дней» (.pe-l), справа «Команда» (.pe-r).
   Ниже 1100 px одна колонка; в Кассе очередь тогда идёт первой. Обёртки ставят kassa.js и people.js. */
@media (min-width:1100px){
  .cn.med-set.ks,.cn.med-set.md,.cn.pe{max-width:1000px}
  .ks-cols,.pe-cols,.med-cols{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:0 16px;align-items:start}
  .ks-cols>.ks-l,.pe-cols>.pe-l,.med-cols>.med-l{grid-area:1/1}.ks-cols>.ks-r,.pe-cols>.pe-r,.med-cols>.med-r{grid-area:1/2}
  .med-cols{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}   /* слева филиалы и таблица врачей (ей нужна ширина), справа документы, права, журнал */
  .ks-jr .chip{white-space:nowrap}
}
@media (max-width:1099px){
  .ks-cols{display:flex;flex-direction:column}.ks-cols>.ks-l{order:-1}
}

/* неделя журнала на телефоне (хвост ревью 13.10.2026): один день во всю ширину, полоса дней недели сверху, соседний день свайпом */
@media (max-width:700px){
  .wdays{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 0 8px;padding:1px 2px}
  .wdays::-webkit-scrollbar{display:none}
  .wdays .wd{flex:1 0 44px;min-height:44px;padding:4px 4px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font:inherit;line-height:1.1;cursor:pointer;box-shadow:var(--e1)}
  .wdays .wd b{font-size:12.5px;font-weight:700;white-space:nowrap}
  .wdays .wd small{font-size:11px;color:var(--muted);min-height:12px}
  .wdays .wd.off{opacity:.55}
  .wdays .wd.td b{color:var(--accent)}
  .wdays .wd.on{background:var(--accent);border-color:var(--accent);box-shadow:none}
  .wdays .wd.on b,.wdays .wd.on small{color:#fff}
  .jbar.week .wsel{flex:1 1 auto;max-width:none;min-width:0}
  .grid.week.mob .gh .gn b{font-size:13px}
}

/* история гостя: пришёл/не пришёл цветом, оплата второй строкой (15.10.2026, ICE FACE) */
.hst-came,.hst-no{font-weight:600;white-space:nowrap}.hst-came{color:var(--ok)}.hst-no{color:var(--bad)}

/* «Из звонка» под гостем в записи: что гость сказал по телефону (22.10.2026, Наталия ГЧ) */
.callctx{margin-top:6px;padding:6px 9px;border-radius:8px;background:var(--soft-warn);color:var(--ink-warn);font-size:12.5px;line-height:1.4}
.callctx b{display:block;margin-bottom:2px;font-weight:600}

/* «Бот → Вопросы» (25.10.2026, erp/botq.py): вопросы и предложения по боту к звонку, ревизия недели сверху */
.bq-tabs{align-self:flex-start;max-width:100%}
.bq-tabs button{padding:7px 14px;font-size:13px;white-space:nowrap}
.bq-tabs .cnt,.bq-bar .cnt{font-style:normal;display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:#fff;font-size:11px;line-height:18px;margin-left:2px;text-align:center}
.bq-bar .chip:not(.on) .cnt{background:var(--soft);color:var(--muted)}
.bq-bar{flex-direction:row;align-items:center;gap:8px;flex-wrap:wrap;justify-content:space-between;padding:4px 0 8px}
.bq-bar .chips{justify-content:flex-start;flex-wrap:wrap;gap:6px}.bq-bar .chip{padding:5px 10px;font-size:12.5px}
.bq{display:flex;flex-direction:column;gap:7px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--e1)}
.bq.answered{border-left:3px solid var(--accent)}.bq.done,.bq.dropped{opacity:.82}
.bq-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.bq-k{background:var(--soft);color:var(--text)}.bq-k.proposal{background:var(--soft-info);color:var(--ink-info)}.bq-k.fact{background:var(--soft-warn);color:var(--ink-warn)}
.bq-k.revision{background:var(--accent);color:#fff;border-color:transparent}
.bq-s.ans{background:var(--soft-ok);color:var(--ink-ok);border-color:transparent}.bq-s.done{background:var(--accent);color:#fff;border-color:transparent}.bq-s.drop{background:var(--soft);color:var(--muted)}
.bq-t{font-weight:700;font-size:16px;line-height:1.35;word-break:break-word}
.bq-body{line-height:1.5;color:var(--text);word-break:break-word}
.bq-body p{margin:0 0 6px}.bq-body ul{margin:0 0 6px;padding-left:18px}.bq-body li{margin:0 0 3px}
.bq-mh{font-weight:700;font-size:13.5px;margin:10px 0 4px}
.bq-ex{display:flex;flex-direction:column;gap:3px;padding:7px 10px;background:var(--soft);border-radius:8px;word-break:break-word;white-space:pre-wrap}
.bq-prop{padding:8px 10px;border-radius:8px;background:var(--soft-ok);color:var(--ink-ok)}
.bq-prop div{white-space:pre-wrap;word-break:break-word;color:var(--text);font-size:14.5px;line-height:1.5;margin-top:2px}
.bq-opts{display:flex;gap:6px;flex-wrap:wrap}
.bq-opts .btn{min-height:34px}.bq-opts .ghost{background:transparent;border-style:dashed}
.bq-ans{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;background:var(--tint);border:1px solid var(--line-w);word-break:break-word}.bq-ans>div{white-space:pre-wrap;font-size:14px}
.bq-done{color:var(--ink-ok)}.bq-drop{color:var(--muted)}
.bq-notes{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line-w);padding-top:7px}
.bq-note{font-size:13px;line-height:1.4}.bq-note div{white-space:pre-wrap;word-break:break-word}
.bq-in{display:flex;flex-direction:column;gap:6px}
.bq-in textarea,.bq-form input:not([type=checkbox]),.bq-form textarea{width:100%;box-sizing:border-box;font:inherit;font-size:14px}
.bq-in .row,.bq-form .row{display:flex;gap:6px;flex-wrap:wrap}
.bq-acts{display:flex;gap:14px;flex-wrap:wrap;justify-content:flex-end}
.bq-acts a{color:var(--muted)}.bq-acts a:hover{color:var(--accent)}.bq-acts .bq-del:hover{color:var(--bad)}
.bq-rev{border-left:3px solid var(--accent);background:var(--tint);padding:10px 14px}
.bq-hl{margin-left:auto;color:var(--muted)}.bq-hl:hover{color:var(--accent)}
.bq-rd summary{cursor:pointer;display:flex;align-items:baseline;gap:10px;list-style:none}.bq-rd summary::-webkit-details-marker{display:none}
.bq-rv-t{font-weight:700;font-size:14px;min-width:0}.bq-rv-t .muted{font-weight:400;margin-left:6px}.bq-rv-o{margin-left:auto;color:var(--accent);font-weight:600;white-space:nowrap}
.bq-rd[open] .bq-rv-o{visibility:hidden}.bq-rd[open] summary{margin-bottom:8px}.bq-rd>.muted{margin-top:4px}
/* 26.10.2026: вопросы разделами (решения, факты, вопросы), номер для звонка, контекст и пример под «Подробнее» */
.bq-list{display:flex;flex-direction:column;gap:18px}
.bq-sec{display:flex;flex-direction:column;gap:8px}
.bq-sec-h{font-weight:700;font-size:14px;padding:0 2px}
.bq-foot{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap}.bq-foot .bq-acts{margin-left:auto}
.bq-foot.wide>.bq-in,.bq-foot.wide>.bq-ans{flex:1 1 100%}
.bq-n{font-weight:700;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.bq-when{margin-left:auto}
.bq-more summary{cursor:pointer;color:var(--accent);width:max-content;max-width:100%}
.bq-more[open] summary{margin-bottom:6px}.bq-more .bq-ex{margin-top:4px}
/* «Окна бота» (26.10.2026, erp/botwin.py): сколько раз из скольких бот попал в окна менеджера, где ошибся */
.bw{display:flex;flex-direction:column;gap:10px;padding:14px 16px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--e1)}
.bw-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.bw-h>b{font-size:15px}
.bw-p{margin-left:auto}.bw-p button{padding:5px 12px;font-size:12.5px;white-space:nowrap}
.bw-top{display:flex;align-items:flex-end;gap:24px;flex-wrap:wrap}
.bw-big{display:flex;align-items:baseline;gap:8px;font-size:15px;white-space:nowrap}
.bw-big b{font-size:30px;line-height:1;font-variant-numeric:tabular-nums}
.bw-big span{color:var(--muted);font-size:13px}
.bw-big.good b{color:var(--ink-ok)}.bw-big.mid b{color:var(--ink-warn)}.bw-big.bad b{color:var(--ink-bad)}
.bw-days{display:flex;align-items:flex-end;gap:6px;height:64px;flex:1 1 200px;max-width:560px;min-width:0}
.bw-day{flex:1 1 0;min-width:10px;max-width:56px;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:2px}
.bw-day i{display:block;width:100%;border-radius:3px 3px 0 0;background:var(--accent);opacity:.85}
.bw-day i.mid{background:var(--warn)}.bw-day i.bad{background:var(--bad)}
.bw-day span,.bw-day b{font-size:10px;color:var(--muted);line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}.bw-day b{color:var(--text);font-weight:600}
.bw-days.dense{gap:2px}.bw-days.dense span{font-size:9px}
.bw-more{align-self:flex-start;margin:2px 0 4px}
.bw-cos{display:flex;gap:6px 16px;flex-wrap:wrap;color:var(--muted);font-size:13.5px}.bw-cos b{color:var(--text)}
.bw-l summary{cursor:pointer;font-weight:700;font-size:14.5px;width:max-content;max-width:100%}
.bw-l[open] summary{margin-bottom:8px}
.bw-it{display:flex;flex-direction:column;gap:8px;padding:12px 14px;margin-bottom:8px;border-radius:10px;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--bad);word-break:break-word;font-size:14px;line-height:1.45}
.bw-it.ok{border-left-color:var(--accent)}
.bw-it-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
.bw-go{margin-left:auto;white-space:nowrap}
.bw-v{font-weight:700;font-size:14px}.bw-it.busy .bw-v,.bw-it.free .bw-v{color:var(--ink-bad)}.bw-it.ok .bw-v{color:var(--ink-ok)}
/* 26.10.2026, владелец: «текст мелкий, зачем свободное место справа»: на широком переписка слева, разбор справа */
.bw-grid,.bq-grid{display:flex;flex-direction:column;gap:10px}
.bw-dlg,.bw-side,.bq-main,.bq-side{display:flex;flex-direction:column;gap:7px;min-width:0}
.bw-msg{padding:7px 11px;border-radius:12px 12px 12px 4px;background:var(--soft);width:fit-content;max-width:88%;align-self:flex-start}
.bw-msg span{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:1px}
.bw-msg.m{background:var(--soft-ok);align-self:flex-end;border-radius:12px 12px 4px 12px}
.bw-why{color:var(--muted);font-size:13px}
.bw-note{line-height:1.45}
.bw-rv{font-size:14px;line-height:1.5;padding:10px 12px;border-radius:10px;background:var(--soft);border:0}
.bw-rv b{display:block;font-size:13px;margin-bottom:2px}
.bw-rv>span{display:block;font-size:12.5px;opacity:.8;margin-bottom:4px}
.bw-rv.ok{background:var(--soft-ok);color:var(--ink-ok)}
.bw-rv.ask{background:var(--soft-warn);color:var(--ink-warn)}
.bw-it .bq-notes{border-top:0;padding-top:0}.bw-it .bq-note{font-size:14px}
.bw-acts{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:13px}.bw-acts a{width:max-content}
.bot{container-type:inline-size}
@container (min-width:820px){
  .bw-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
  .bq-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(250px,1fr);gap:20px;align-items:start}
  .bq-side .bq-foot{flex-direction:column;align-items:stretch}.bq-side .bq-foot .bq-acts{margin-left:0;justify-content:flex-start}
  .bq-side .bq-opts{flex-direction:column}.bq-side .bq-opts .btn{width:100%;justify-content:center}
}
.bw-askn{background:var(--soft-warn);color:var(--ink-warn);border-color:transparent}
.ch-bwask{background:var(--soft-warn);color:var(--ink-warn)}
.bwa-list{display:flex;flex-direction:column;gap:10px;max-height:62vh;overflow:auto}
.bwa{display:flex;flex-direction:column;gap:5px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;word-break:break-word}
.bwa textarea{width:100%;box-sizing:border-box;font:inherit;font-size:14px}
.bwa .row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.bq-cos{display:flex;gap:6px 14px;flex-wrap:wrap;align-items:center}.bq-cos label{display:flex;align-items:center;gap:5px;cursor:pointer;min-height:28px}
.bq-cos input{width:16px;height:16px;min-height:0;margin:0;flex:none}
.bq-err{color:var(--bad)}
@media (max-width:700px){
  .bq{padding:11px 12px}
  .bw{padding:12px}.bw-p{margin-left:0;width:100%;display:flex}.bw-p button{flex:1}
  .bw-top{gap:12px}.bw-days{flex-basis:100%}
  .bq-rv-t .muted{display:block;margin:2px 0 0}
  .bq-tabs{align-self:stretch}.bq-tabs button{flex:1}
  .bq-bar{flex-wrap:nowrap}.bq-bar .chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;flex:1 1 auto;min-width:0}.bq-bar .chips::-webkit-scrollbar{display:none}
  .bq-bar .chip,.bq-bar .btn{flex:none;white-space:nowrap}
  .bq-opts .btn{flex:1 1 auto;min-height:44px}
  .bq-acts{justify-content:flex-start}.bq-acts a{padding:6px 0}
}

/* ===== ресеч 25.10.2026, шаг 3: первые экраны телефона ===== */
/* Звонки и Обращения (chats.js chFold): на телефоне сверху поиск и «Фильтры», главные чипы одной строкой с прокруткой,
   остальное (.mf) под кнопкой. Диалоги: чипы и выбор канала одной строкой. Компьютер как был. */
.mf-btn,.mf-br{display:none}
.mf-btn svg{flex:none}
.mf-btn .ub{margin-left:2px}
@media (max-width:700px){
  .mf-box:not(.mf-open) .mf{display:none!important}
  .mf-btn{display:inline-flex!important;align-items:center;gap:5px;order:-1;flex:none;min-height:40px}
  .mf-top{order:-5}
  .mf-top.mf-end{margin-left:auto}
  .mf-br{display:block;order:-3;flex-basis:100%;height:0}
  .mf-q{order:-2;flex:1 1 0!important;min-width:0!important;width:auto!important}
  .mf-row{order:0;flex:1 1 100%!important;flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;margin:0 -2px;padding:0 2px 2px}
  .mf-row::-webkit-scrollbar{display:none}
  .mf-row>*{flex:none}
  .mf-row:empty{display:none}
  .mf-n{order:2;flex-basis:100%}
  .mf-hint{display:none}
  .mf-box.mf-open .cl-bar.mf{padding-top:2px}
  /* Диалоги: «Все, Непрочитанные, Мои, Без ответа…» и канал одной строкой */
  .ch-filters #ch_f{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -8px;padding:0 8px 2px}
  .ch-filters #ch_f::-webkit-scrollbar{display:none}
  .ch-filters #ch_f>*{flex:none}
  /* Звонки: пропущенный — красная черта у всей карточки, а не розовые пятна по ячейкам */
  #main table.stk.stk2 tr.tk-over{box-shadow:inset 3px 0 0 var(--bad);padding-left:9px}
  #main table.stk.stk2 tr.tk-over td{background:none}
  /* Обращения: карточка в две строки, этап плашкой справа, номер не нужен */
  #main table.stk.stk2.iq-tbl td.iq-no{display:none}
  #main table.stk.stk2.iq-tbl td.s2-v{font-size:12px;font-weight:600}
  #main table.stk.stk2.iq-tbl td.s2-v>div{display:none}
  #main table.stk.stk2.iq-tbl td .iris-clip{max-width:none;white-space:normal}
  #main table.stk.stk2.iq-tbl td.s2-v .chip.stg{min-height:0;padding:2px 9px;font-size:11.5px;line-height:1.45}
  #main table.stk.stk2.iq-tbl td.iq-t{order:6;flex-basis:100%;color:var(--text);font-size:13.5px}
  #main table.stk.stk2.iq-tbl td.iq-t .iris-clip{display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  #main table.stk.stk2.iq-tbl td.iq-t::before,#main table.stk.stk2.iq-tbl td.iq-src::before{content:none}
  #main table.stk.stk2.iq-tbl td.iq-none{display:none}
  #main table.stk.stk2.iq-tbl td.s2-n>div{display:block;margin-left:0}
}
/* Оплата на телефоне (шаг 3): сначала «Чем платит», скидки ниже одной строкой с прокруткой. Чаще платят без скидки,
   а до кнопки карты было 7 плиток. Порядок только визуальный (order), разметка и компьютер те же. */
@media (max-width:700px){
  .pb.pay-pb>*{order:3}
  .pb.pay-pb>.pay-sum,.pb.pay-pb>.paidbox,.pb.pay-pb>.note,.pb.pay-pb>.hintbox{order:0}
  .pb.pay-pb>.pay-ways,.pb.pay-pb>#paylist,.pb.pay-pb>#left{order:1}
  .pb.pay-pb>#disc_box,.pb.pay-pb>.pay-has{order:2}
  .pay-pb .tiles.disc{display:flex;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  .pay-pb .tiles.disc::-webkit-scrollbar{display:none}
  .pay-pb .tiles.disc .tile{flex:0 0 auto;min-width:84px;max-width:156px;min-height:0;padding:8px 10px}
  .pay-pb .tiles.disc .tile span{white-space:nowrap;-webkit-line-clamp:1}
}
/* Новая запись на телефоне (шаг 3): по порядку работы админа: гость, услуги, время, мастер; «Ждём / Пришёл» внизу
   (у новой записи нужен только гостю, который пришёл без записи). «+ ещё мастер» одной кнопкой, пока второго мастера нет. */
@media (max-width:700px){
  .pb.rec-new>*{order:4}
  .pb.rec-new>#guest,.pb.rec-new>.paidbox,.pb.rec-new>.note{order:0}
  .pb.rec-new>.rf-svc,.pb.rec-new>#promorow,.pb.rec-new>#pcoderow,.pb.rec-new>#dnoterow{order:1}
  .pb.rec-new>.rf-when{order:2}
  .pb.rec-new>.rf-master,.pb.rec-new>#roomrow,.pb.rec-new>#pairnote,.pb.rec-new>#pairrow{order:3}
  .pb.rec-new>#att{order:5}
  #pairrow:not(.has-p)>label,#pairrow:not(.has-p) #phint{display:none}
}
/* Смены на телефоне (шаг 3): имя коротко, «не делает N услуг» серым (это не ошибка, открывается нажатием на имя) и
   на телефоне скрыт; время смены по умолчанию не уезжает за край */
.nm-s{display:none}
.shifts .tag.sh-off{background:var(--tint);color:var(--muted);border-color:var(--line)}
@media (max-width:700px){
  .shifts .nm-f{display:none}.shifts .nm-s{display:inline}
  .shifts .tag.sh-off{display:none}
  .shifts td:first-child,.shifts th:first-child{min-width:92px;max-width:104px}
  .sh-def{white-space:normal;flex-wrap:wrap;row-gap:6px;max-width:100%}
  .sh-def input[type=time]{width:auto;min-width:96px}
}
/* ресеч 25.10.2026, шаг 3f: Оргсхема, Апелляции и Критерии ОКК на телефоне. Партнеры стали карточками stk2 в marketing.js */
@media (max-width:700px){
  .stf-org .node{flex-wrap:wrap;row-gap:2px;padding:8px 10px}
  .stf-org .node>.muted{order:1}.stf-org .node>b{order:0}.stf-org .node .cnt{order:2}
  .stf-org .node .ppl{order:3;flex-basis:100%;margin-left:0}
  .stf-org .d1{margin-left:12px}.stf-org .d2{margin-left:24px}.stf-org .d3{margin-left:36px}.stf-org .d4{margin-left:48px}
  #main table.stk.okk-aptbl td.okk-cm,#main table.stk.okk-aptbl td[data-l="Проверка"]{max-width:none;padding-left:0}
  #main table.stk.okk-aptbl td.okk-cm::before,#main table.stk.okk-aptbl td[data-l="Проверка"]::before{position:static;display:block;width:auto;margin-bottom:2px}
  #main table.stk.okk-aptbl td.okk-cm{color:var(--text);font-size:13.5px}
  #main table.stk.okk-ctbl tr{grid-template-columns:1fr 1fr 1fr;gap:10px;padding:14px 12px;position:relative}
  #main table.stk.okk-ctbl td{padding:0;grid-column:1/-1;min-width:0;width:auto}
  #main table.stk.okk-ctbl td::before{position:static;display:block;width:auto;margin:0 0 4px}
  #main table.stk.okk-ctbl td:nth-child(3),#main table.stk.okk-ctbl td:nth-child(4),#main table.stk.okk-ctbl td:nth-child(5){grid-column:auto;padding-top:0}
  #main table.stk.okk-ctbl td:nth-child(1) input{font-weight:600}
  #main table.stk.okk-ctbl textarea{min-width:0;min-height:76px}
  #main table.stk.okk-ctbl .okk-num{width:100%}
  #main table.stk.okk-ctbl .okk-chk{display:flex;align-items:center;gap:6px;min-height:44px}
  #main table.stk.okk-ctbl td:last-child{position:absolute;top:9px;right:12px;width:auto;min-height:0}   /* «Убрать» справа на строке «Название», а не отдельной строкой с пустотой */
  #main table.stk.okk-ctbl td:last-child::before{content:none}
  #main table.stk.okk-ctbl td:last-child .btn{min-height:0;height:auto;padding:4px 0;line-height:18px}
  #main table.stk2.pt-tbl td.s2-n .btn.lnk{margin-left:6px}
  #main table.stk2.pt-tbl td>div.small{display:inline;margin-left:4px}
}
/* шаг 3h ресеча 25.10.2026: узкая колонка журнала. Гость первой строкой (recLines narrow), длинное обрезается многоточием, а не гаснет:
   на 112 px маска съедала последние 14 px имени, и «Анастасия Ко» читалась как полное имя */
.rec.narrow .n,.rec.narrow .g{display:block;text-overflow:ellipsis;-webkit-mask-image:none;mask-image:none}
.rec.narrow .n.one span:first-child{margin-right:5px}
.rec.narrow .n .new{margin-left:4px;vertical-align:1px}.rec.narrow .g .new{margin-right:4px;vertical-align:1px}
.rec.narrow .g{font-weight:600;opacity:.85}
.brk.mini .bt span:first-child{overflow:hidden;text-overflow:ellipsis}.brk.mini .bt b{font-weight:800}
/* шаг 4 ресеча 25.10.2026: «Сегодня» мастера. Следующий гость карточкой сверху, ближайшая смена в выходной, зарплата за период своей карточкой */
.mnext{margin-bottom:8px;cursor:pointer;border-left:3px solid var(--accent);transition:box-shadow .2s}
.mnext:active{box-shadow:0 0 0 2px var(--accent-soft)}
.mnext .eyebrow{color:var(--accent);margin-bottom:6px}
.mnext-r{display:flex;gap:12px;align-items:flex-start}
.mnext-r .tm{font-weight:800;font-size:20px;line-height:1.1;min-width:58px}.mnext-r .tm small{display:block;color:var(--muted);font-weight:600;font-size:12px;margin-top:2px}
.mnext-r .mi{min-width:0;flex:1}
.mnext .nm{font-weight:800;font-size:17px;line-height:1.25;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.mnext .nm .new{font-size:9px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:1px 5px;border-radius:4px;background:rgba(25,23,20,.80);color:#fff}
:root[data-theme="dark"] .mnext .nm .new{background:rgba(255,255,255,.90);color:#15171C}
.mnext .sv{color:var(--muted);font-size:13.5px;margin-top:2px}.mnext .sv .len{white-space:nowrap}.mnext .sv.c{font-style:italic;margin-top:8px}
.mnext .gnote{display:flex;gap:6px;align-items:flex-start;margin-top:10px;padding:8px 10px;border-radius:8px;background:var(--soft-warn);color:var(--ink-warn);font-size:13px;line-height:1.4;white-space:pre-line;overflow-wrap:anywhere}
.mnext .gnote svg{flex:none;width:14px;height:14px;margin-top:2px}
.mst .mitem.flash{box-shadow:0 0 0 2px var(--accent);transition:box-shadow .3s}
.mnshift{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;margin-top:10px;padding:11px 12px;border-radius:10px;border:1px solid var(--line);background:var(--soft);color:var(--text);font:inherit;font-size:14px;text-align:left;cursor:pointer;min-height:44px}
.mnshift i{font-style:normal;font-size:20px;color:var(--muted);line-height:1}
.mnshift-none{margin-top:8px;flex-basis:100%}
.mshift .mnshift{flex-basis:100%;margin-top:0}
.mpercard .mper{margin-top:6px;border-top:0;padding-top:0}
.mpercard .mper-row+.mper-row{border-top:1px solid var(--line);padding-top:8px}
.mpercard .mper-row>div:first-child>.muted{display:block;margin-top:1px}

/* шаг 5a ресеча 25.10.2026: аллергия и пометки гостя плашкой сразу под именем в карточке записи, медицинское красным */
.galerts{display:flex;flex-direction:column;gap:6px;margin:2px 0 8px}.galerts:empty{display:none}
.galert{display:flex;gap:7px;align-items:flex-start;padding:7px 10px;border-radius:9px;background:var(--soft-warn);color:var(--ink-warn);font-size:13px;line-height:1.35;font-weight:600;overflow-wrap:anywhere}
.galert svg{flex:none;width:15px;height:15px;margin-top:1px}
.galert.bad{background:var(--soft-bad);color:var(--ink-bad);box-shadow:inset 0 0 0 1px var(--bd-bad);font-weight:700}
.galert.bad b{font-weight:800}
.mitem .gnote.bad,.mnext .gnote.bad{background:var(--soft-bad);color:var(--ink-bad);font-weight:700}
.mitem .gnote.bad svg,.mnext .gnote.bad svg{flex:none;width:14px;height:14px;margin-top:2px}

/* шаг 5d ресеча 25.10.2026: подстановки по-русски значками под полем текста, вставка кликом */
.tpl-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 8px}
.tpl-chips .chip{cursor:pointer;font-weight:600}
.tpl-chips .chip:hover{border-color:var(--accent);color:var(--accent)}

/* шаг 5e ресеча 25.10.2026: Склад, «Кончается» сверху одним списком, в карточке крупно «хватит на N дней» */
.stk-low{padding:12px 14px;margin:0 0 12px;box-shadow:inset 3px 0 0 var(--bad,#c0392b)}
.stk-low-h{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.stk-low-h b{font-size:15px}
.stk-low-h .btn{margin-left:auto}
.stk-low-r{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--line)}
.stk-low-t{flex:1;min-width:0}
.stk-low-t b{overflow-wrap:anywhere}
.stk-low-t .warnt{color:var(--ink-warn)}
.stk-low-o{text-align:right;white-space:nowrap}
.stk-low-f{margin-top:6px}
.acc-left{font-size:14px;font-weight:700;margin-top:2px}
@media (max-width:700px){
  .stk-low-r{flex-wrap:wrap;gap:4px 10px}
  .stk-low-t{flex:1 1 100%}
  .stk-low-o{text-align:left;flex:1}
}

/* шаг 5f ресеча 25.10.2026: значок внутри строки текста (iic в app.js) вместо эмодзи */
.iic{display:inline-flex;vertical-align:-0.14em;margin-right:4px;flex:none}
.iic svg{width:1.05em;height:1.05em} .td-fd .iic{margin-right:0}
.mc-empty-i svg{width:34px;height:34px;opacity:.55}

/* шаг 5h ресеча 25.10.2026: легенда цветов журнала под кнопкой «?» (jLegend в app.js), темная тема заметнее */
.jlgd{position:relative;flex:none}
.jlgd>summary{list-style:none;color:var(--muted);font-weight:800;font-size:15px;cursor:pointer;user-select:none}
.jlgd>summary::-webkit-details-marker{display:none}
.jlgd[open]>summary{color:var(--accent);border-color:var(--accent)}
.jbar .jlgd .legend{display:grid;grid-template-columns:12px auto;gap:8px 9px;align-items:center;position:absolute;top:calc(100% + 6px);left:0;z-index:40;margin:0;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--e3);white-space:nowrap;font-size:13px;color:var(--text)}
.jbar .jlgd .legend i{margin:0;width:12px;height:12px}
:root[data-theme="dark"] .jlgd .legend i{outline:1px solid rgba(255,255,255,.22)}
:root[data-theme="dark"] .seg button.on{background:#4B5468;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),0 1px 2px rgba(0,0,0,.4)}
:root[data-theme="dark"] .sa-share i{background:rgba(53,181,146,.55)}
@media (max-width:700px){
  .jbar .jlgd{order:3}.jbar .jlgd>summary{width:34px;min-width:34px}   /* первой строкой после «Сегодня», отдельная строка съедала высоту журнала */
  .jbar .jlgd .legend{left:auto;right:0}
}

/* Окно «СМС гостям без мессенджеров» (25.10.2026, iris.js smsModal) */
.sms-h{margin:16px 0 8px;font-size:14px}
.sms-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.sms-grid label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;color:var(--muted)}
.sms-grid input,.sms-grid select{width:100%;min-width:0}
.sms-bal{justify-content:space-between;align-items:center;margin:8px 0 0;min-height:22px}
.sms-how{margin:8px 0 0;font-size:13px}.sms-how summary{cursor:pointer;color:var(--muted)}
.sms-how ol{margin:6px 0 0;padding-left:20px;line-height:1.5}
.sms-t{margin:0 0 10px}.sms-th{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin:0 0 4px;font-size:13px}
.sms-t textarea{width:100%;min-height:56px;resize:vertical}
.sms-t .hint{word-break:break-word}
.sms-opts{flex-wrap:wrap;gap:14px;align-items:center;margin:4px 0 0}
.sms-opts input[type=number]{width:64px;text-align:center}
.sms-opts .as-chk{display:inline-flex;flex:none;align-items:center;gap:6px;font-size:13px;white-space:nowrap}
.sms-opts .as-chk input[type=checkbox]{width:16px;height:16px;min-height:0;margin:0;flex:none}
.sms-test{gap:8px;align-items:center;flex-wrap:wrap}.sms-test input{flex:1 1 200px;min-width:0}.sms-test .btn{flex:none;white-space:nowrap}
@media (max-width:560px){.sms-grid{grid-template-columns:minmax(0,1fr)}}
/* СМС — канал в «Рассылках» (26.10.2026, mailSms в mailings.js): выключатель и «кому слать» сверху, тексты, сервис, журнал */
.sms-card{max-width:980px}
.sms-ch{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.sms-ch>div{min-width:0}.sms-ch>div>b{font-size:15px}
.sms-ch .muted.small{margin-top:3px;line-height:1.45}
.sms-sub{margin:16px 0 8px;font-size:13px;font-weight:700}
.sms-modes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.sms-mode{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}
.sms-mode:hover{border-color:var(--line-s)}
.sms-mode.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--tint)}
.sms-mode input[type=radio]{margin:2px 0 0;width:16px;height:16px}
.sms-mode>span{display:flex;flex-direction:column;gap:3px;min-width:0;font-size:13.5px;line-height:1.35}
.sms-est{margin-top:6px;font-size:13px;color:var(--text)}.sms-est:empty{display:none}
.sms-est b{font-variant-numeric:tabular-nums;white-space:nowrap}
.sms-warn{margin:10px 0 0;padding:8px 10px;border-radius:8px;background:var(--soft-warn);color:var(--ink-warn);font-size:12.5px;line-height:1.45}
.sms-t .sms-warn{margin:0 0 6px;padding:5px 8px}
.sms-note{margin:10px 0 0;line-height:1.45}
.sms-card .sms-opts{margin:12px 0 0}
.sms-vars{margin:10px 0 12px;line-height:1.9}
.sms-vars code{font-size:12px;padding:1px 6px;border-radius:5px;background:var(--soft);white-space:nowrap}
.sms-t .sms-th .as-chk{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.sms-t .sms-th .as-chk input{width:16px;height:16px;margin:0}
.sms-t .sms-th>span{text-align:right}
.sms-t.off textarea{opacity:.5}
.sms-acc-t{gap:8px;margin:10px 0 0;align-items:center}.sms-acc-t .btn{flex:none}
#sms_acc .sms-grid{margin-top:10px}
.sms-steps{margin:6px 0 0;padding-left:20px;line-height:1.55}
.sms-foot{position:sticky;bottom:12px;z-index:3;max-width:980px;display:flex;justify-content:flex-end;margin:0 0 12px;pointer-events:none}
.sms-foot .btn{pointer-events:auto;box-shadow:var(--e2)}
.sms-card .sms-test{margin:12px 0 0}.sms-card .sms-test input{flex:0 1 260px}
.sms-log{margin-top:12px;overflow-x:auto}
.sms-log td{vertical-align:top}
.sms-lt{min-width:220px;max-width:420px;white-space:normal;word-break:break-word}
@media (max-width:700px){
  .sms-modes{grid-template-columns:minmax(0,1fr)}
  .sms-foot{bottom:calc(76px + env(safe-area-inset-bottom))}.sms-foot .btn{width:100%}
  .sms-t .sms-th{flex-direction:column;align-items:flex-start;gap:2px}.sms-t .sms-th>span{text-align:left}
  .sms-card .sms-test input{flex:1 1 160px}
  /* журнал на телефоне: строка — время, номер, цена; сценарий и статус; текст */
  .sms-log table,.sms-log tbody{display:block}.sms-log tr:first-child{display:none}
  .sms-log tr{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:3px 10px;padding:10px 0;border-top:1px solid var(--line-w)}
  .sms-log td{display:block;padding:0!important;border:0!important;min-width:0}
  .sms-log td:nth-child(1){grid-area:1/1}.sms-log td:nth-child(2){grid-area:1/2}.sms-log td:nth-child(6){grid-area:1/3}
  .sms-log td:nth-child(3){grid-area:2/1/3/3;color:var(--muted);font-size:12.5px;white-space:normal}.sms-log td:nth-child(5){grid-area:2/3}
  .sms-log td.sms-lt{grid-area:3/1/4/4;font-size:13px}
}

/* шаг 6g ресеча 25.10.2026: свои окна вместо confirm()/prompt() браузера (askBox в app.js), поверх окон и панелей */
.askw{position:fixed;inset:0;z-index:130;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(20,18,15,.48);animation:lfFade .15s ease-out}
.askb{width:100%;max-width:420px;padding:20px;background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:18px;box-shadow:var(--e3);animation:lfPop .2s var(--ease)}
.askt{white-space:pre-line;overflow-wrap:anywhere;font-size:15px;line-height:1.45;max-height:min(60vh,520px);overflow:auto}
.aski{margin-top:14px}
.aska{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
.aska .btn{min-width:96px}
.aska .btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}
.aska .btn.danger:hover{background:var(--bad);filter:brightness(.92)}
:root[data-theme="dark"] .aska .btn.danger{color:#2B0D0A}
@media (max-width:700px){
  .askw{align-items:flex-end;padding:0}
  .askb{max-width:none;border-radius:18px 18px 0 0;border-width:1px 0 0;padding:20px 16px calc(16px + env(safe-area-inset-bottom))}
  .aska .btn{flex:1;min-height:46px}
}
/* шаг 6a ресеча 25.10.2026: «Гостю уйдет сообщение о переносе» над кнопками записи, «об отмене» в окне отмены */
.pf:has(.rec-gn:not([hidden])){flex-wrap:wrap}
.rec-gn{flex:0 0 100%;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--accent)}
.rec-gn svg{flex:none}
.gn-b{color:var(--text);font-weight:600}

/* шаг 6f ресеча 25.10.2026: разделы в поиске шапки (navFind в nav.js), под гостями */
.dd .dd-h{cursor:default;padding:7px 12px 4px;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border-top:1px solid var(--line)}
.dd .dd-h:first-child{border-top:0}
.dd .dd-h:hover{background:none}
.dd .dd-nav{display:flex;align-items:center;gap:10px}
.dd .dd-nav svg{flex:none;color:var(--muted)}
.dd .dd-nav:hover svg{color:var(--accent)}

/* шаг 6e ресеча 25.10.2026: «Что нового» после обновления (newsShow в app.js), один раз на человека */
.news{position:fixed;right:20px;bottom:20px;z-index:95;width:340px;max-width:calc(100vw - 32px);padding:14px 16px 16px;background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:16px;box-shadow:var(--e3);animation:lfPop .22s var(--ease)}
.news-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.news-h b{font-size:15px}
.news-x{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;margin-right:-6px;border:0;border-radius:8px;background:none;color:var(--muted);cursor:pointer}
.news-x:hover{background:var(--soft);color:var(--text)}
.news ul{margin:0 0 14px;padding-left:18px;font-size:14px;line-height:1.45}
.news li+li{margin-top:6px}
.news li::marker{color:var(--accent)}
@media (max-width:700px){
  .news{left:12px;right:12px;width:auto;max-width:none;bottom:calc(78px + env(safe-area-inset-bottom))}
  .news-ok{width:100%;min-height:44px}
}

/* пусто из-за среза (ресеч 25.10.2026, шаг 6b): что сейчас отобрано и «Показать все» — sliceEmpty() в app.js */
.slice-e{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:16px 14px;font-size:13px;line-height:1.45}
.slice-e b{font-size:14px;font-weight:600;color:var(--text)}
.slice-e i{font-style:normal;color:var(--text)}
.slice-e .btn{margin-top:4px}
#iq_slice .card{margin:0 0 8px}
#iq_slice .slice-e{padding:2px 0}

/* почему гость в выборке (шаг 6c): строка под телефоном, цвет как у метки фильтра */
.g-why{font-weight:500}.g-why.w-sleeping{color:var(--ink-warn)}.g-why.w-new{color:var(--ink-ok)}.g-why.w-never{color:var(--ink-bad)}

/* ===== без пустых зон: разделы во всю ширину (владелец 26.10.2026, второй раз за день: «одна и та же история… зачем эти
   пустые зоны? это не нужно, сделай максимально все без пустых зон, лучше пусть будет побольше шрифт»).
   Узкой колонки прижатой влево больше нет: таблицы, журнал, дашборды, ряды карточек и статьи «Знаний» во всю ширину.
   Формы и списки строк — колонкой по центру, как Задачи (владелец 26.10 вечером: «было выравнивание по центру, эстетичное…
   ты не в тупую делай, смотри, где как лучше»): у такой строки текст слева, а кнопка или метка справа, на всю ширину их
   разносит, и глаз ездит через пустую середину. Решать по экрану, а не всем разделам одно правило.
   !important — потому что потолки разбросаны по app.css и лениво подгружаемым css разделов (UI_LAZY), они идут после этого файла.
   Новый раздел раскладывает карточки сеткой auto-fill или @container; проверка — scripts/check_wide.py. ===== */
.cn,.an{max-width:none!important}
/* колонкой по центру: Филиалы и Подключения (обертка .cn без второго класса), анкета запуска и переносы (.amo), Отзывы,
   Чек-листы, путь стажера и Стажеры — шириной Задач; Горящие окна и Создание контента шире, у них ряд итогов и чипы */
.cn:is([class="cn"],.amo,.rv,.ck,.tr,.ts){max-width:var(--td-w,1000px)!important;margin-left:auto;margin-right:auto}
.cn:is(.hw,.stu){max-width:1180px!important;margin-left:auto;margin-right:auto}
.sms-card,.sms-foot{max-width:none}
/* ряды карточек: несколько карточек растягиваются на всю строку (auto-fit), а не стоят слева с пустым хвостом.
   body — чтобы перебить лениво подгружаемые cameras.css, hire.css, people.css; на телефоне одна колонка, как было */
@media (min-width:701px){
  body .iris-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}   /* сценарии рассылок одной сеткой: одиночная карточка шириной соседних, а не во всю строку с кнопкой «Править» в полэкрана */
  body .cams-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
  body .hr-grid{grid-template-columns:repeat(auto-fit,minmax(270px,1fr))}
  body .qz-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
  body .pu-list{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}
  body .pu-al{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
  body .hm-ogrid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
  body .fp{grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}
  body .pb-grid:has(>.od-card){grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),1fr))}   /* наружка: щиты с фото; у блогеров и пабликов одиночная карточка во всю строку смотрится хуже */
}
.tel-emptyline{max-width:none}
/* «Ровняем записи между мастерами» в карточке новой записи (26.10.2026, Атырау): подсказка, а не ошибка, кнопки в тон заметки */
.pb .even-hint{margin-top:6px;line-height:1.45}
.even-hint .sug .chip{border-color:currentColor;color:inherit;background:var(--card);font-weight:600}
.even-hint .muted.small{margin-top:6px}
.br-even{display:flex;gap:8px;align-items:center;margin-top:10px;font-weight:600}
/* «Окна для админа» (27.10.2026): «днем до» в одну строку с галочкой, поле времени по размеру, а не во всю карточку */
.br-slot{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px}
.br-slot .br-until{display:inline-flex;align-items:center;gap:8px;margin-top:10px}
.br-slot .br-until[hidden]{display:none}
.br-slot .br-until input{width:auto;height:34px}
