/* Новый вид лины (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}
@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}
  /* пара дат в одну строку: «—» и вторая дата не падают на новую */
  .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)}
