/* «Добрые события детям CRM» v3 — общий стиль экранов (crm02, 08.09.2026).
   Палитра от логотипа: нежно-фиолетовый #7E5A9C, фон #F8F5FB, текст #2B2A29. */
:root{
  --bg:#F8F5FB;--card:#FFFFFF;--line:#E8E1F0;--line2:#F2EDF6;--txt:#2B2A29;--mut:#7D7590;--mut2:#A9A2B8;
  --acc:#7E5A9C;--acc2:#65467F;--accbg:#EFE7F4;--acc3:#CDB8DA;--red:#C24444;--redbg:#FBE9E9;--yel:#a87908;--yelbg:#FFF4D6;
  --grn:#3C8032;--grnbg:#E3F5E1;--grn2:#1E6E46;--grn2bg:#CDEBD8;--blu:#3B74B8;--blubg:#DEEBFB;--org:#C4702B;--orgbg:#FFE9D6;--teal:#0F766E;--tealbg:#E8F7F3;
  --sb:224px;--r:14px;
  --hover:#FBF9FD;--ink3:#5B5470;--shadow:rgba(43,42,41,.05);--shadow2:rgba(126,90,156,.10);--ovl:rgba(43,42,41,.45);
  --acc-ink:#FFFFFF;--dark-ink:#FFFFFF;
  --glow1:rgba(126,90,156,.10);--glow2:rgba(196,112,43,.06);
  color-scheme:light;
}
/* ── тёмная тема: та же карта переменных, второй набор значений (crm03a) ──
   ставится атрибутом html[data-theme=dark] (скрипт crm_theme.js до отрисовки);
   «системная» — по prefers-color-scheme, если атрибут не задан явно */
html[data-theme=dark]{
  --bg:#14111A;--card:#1E1A26;--line:#2E2839;--line2:#272130;--txt:#ECE8F2;--mut:#A79FB8;--mut2:#7E7690;
  --acc:#B392D0;--acc2:#D9C3EA;--accbg:#2A2136;--acc3:#4A3A5C;--red:#F08A8A;--redbg:#3A1A1C;--yel:#F2C74B;--yelbg:#3A2E0C;
  --grn:#8FD98A;--grnbg:#1C3320;--grn2:#6FCF97;--grn2bg:#183A2A;--blu:#8AB8F0;--blubg:#16283D;--org:#F0A468;--orgbg:#3A2414;--teal:#5EEAD4;--tealbg:#0F2A28;
  --hover:#231E2D;--ink3:#C5BED3;--shadow:rgba(0,0,0,.35);--shadow2:rgba(0,0,0,.45);--ovl:rgba(0,0,0,.6);
  --acc-ink:#1E1A26;--dark-ink:#FFFFFF;--glow1:rgba(126,90,156,.30);--glow2:rgba(196,112,43,.10);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){html:not([data-theme=light]):not([data-theme=dark]){
  --bg:#14111A;--card:#1E1A26;--line:#2E2839;--line2:#272130;--txt:#ECE8F2;--mut:#A79FB8;--mut2:#7E7690;
  --acc:#B392D0;--acc2:#D9C3EA;--accbg:#2A2136;--acc3:#4A3A5C;--red:#F08A8A;--redbg:#3A1A1C;--yel:#F2C74B;--yelbg:#3A2E0C;
  --grn:#8FD98A;--grnbg:#1C3320;--grn2:#6FCF97;--grn2bg:#183A2A;--blu:#8AB8F0;--blubg:#16283D;--org:#F0A468;--orgbg:#3A2414;--teal:#5EEAD4;--tealbg:#0F2A28;
  --hover:#231E2D;--ink3:#C5BED3;--shadow:rgba(0,0,0,.35);--shadow2:rgba(0,0,0,.45);--ovl:rgba(0,0,0,.6);
  --acc-ink:#1E1A26;--dark-ink:#FFFFFF;--glow1:rgba(126,90,156,.30);--glow2:rgba(196,112,43,.10);
  color-scheme:dark;
}}
html[data-big] body{zoom:1.15}
html[data-switching] *{transition:none!important}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--txt);font-family:"Golos Text","Segoe UI",system-ui,Arial,sans-serif;font-size:13px;line-height:1.35}
a{color:var(--acc);text-decoration:none}a:hover{color:var(--acc2)}
button{font-family:inherit}
h1,h2,h3{font-family:Manrope,"Segoe UI",sans-serif;letter-spacing:-.01em;margin:0}
.hidden{display:none!important}

/* ── каркас ─────────────────────────────────────────────── */
.app{display:flex;min-height:100vh}
.sb{width:var(--sb);flex-shrink:0;background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:14px 12px;gap:1px;position:sticky;top:0;height:100vh;overflow:auto}
.sb .logo{display:flex;align-items:center;gap:10px;padding:2px 10px 12px}
.sb .logo img{width:34px;height:37px;object-fit:contain}
.sb .logo b{font-family:Manrope,sans-serif;font-weight:800;font-size:12.5px;line-height:1.15;display:block}
.sb .logo small{color:var(--mut);font-size:12px;font-weight:700;letter-spacing:.06em;margin-left:4px}
.nav{display:flex;align-items:center;gap:10px;padding:7px 12px;border-radius:10px;color:var(--ink3);font-size:13.5px;font-weight:500;white-space:nowrap}
.nav:hover{background:var(--bg);color:var(--txt)}
.nav.on{background:var(--accbg);color:var(--txt);font-weight:600}
.nav.soon{color:var(--mut2);cursor:default}.nav.soon:hover{background:none;color:var(--mut2)}
.nav svg{flex-shrink:0;width:18px;height:18px}
.nav .bd{margin-left:auto;background:var(--accbg);color:var(--acc);font-size:12px;font-weight:700;padding:1px 6px;border-radius:999px}
.nav .bd.soon{background:var(--bg);color:var(--mut2)}
.sb .sep{height:1px;background:var(--line);margin:6px 12px}
.sb .me{margin-top:auto;display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;background:var(--bg)}
.sb .me .av{width:28px;height:28px;border-radius:50%;background:var(--acc);color:var(--acc-ink);font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center}
.sb .me b{font-weight:600;font-size:13px;display:block}.sb .me small{color:var(--mut);font-size:12px}
.sb .me a{margin-left:auto;font-size:12px;color:var(--mut)}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;padding:14px 24px;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap;position:sticky;top:0;z-index:5}
.top h1{font-size:20px;font-weight:800;white-space:nowrap}
.top .sub{color:var(--mut);font-size:13px;white-space:nowrap}
.top .grow{flex:1}
.burger{display:none;border:1px solid var(--line);background:var(--card);border-radius:10px;width:36px;height:36px;align-items:center;justify-content:center;cursor:pointer}
.content{padding:12px 24px 40px;display:flex;flex-direction:column;gap:10px}
.search{display:flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--line);border-radius:10px;color:var(--mut);font-size:13px;background:var(--card);min-width:220px;position:relative}
.search input{border:none;outline:none;font:inherit;color:var(--txt);flex:1;min-width:0;background:transparent}
.search kbd{font-size:12px;border:1px solid var(--line);border-radius:6px;padding:0 5px;color:var(--mut);font-family:inherit}
.search .drop{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--e3);z-index:30;overflow:hidden;max-height:340px;overflow-y:auto}
.search .drop a{display:flex;gap:8px;align-items:center;padding:8px 12px;color:var(--txt);border-bottom:1px solid var(--line2)}
.search .drop a:hover{background:var(--bg)}.search .drop a small{color:var(--mut);margin-left:auto;white-space:nowrap}

/* ── кнопки, чипы, пилюли ────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:var(--card);font-weight:600;font-size:12.5px;color:var(--txt);cursor:pointer;transition:background-color var(--t1) var(--ease),border-color var(--t1) var(--ease),color var(--t1) var(--ease),box-shadow var(--t1) var(--ease),transform var(--t1) var(--ease)}
.btn:hover{border-color:var(--acc3);box-shadow:var(--e1)}
.btn.pri{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}.btn.pri:hover{background:var(--acc2)}
.btn.danger{color:var(--red);border-color:#F3D3D3}.btn.danger:hover{background:var(--redbg)}
.btn.mini{padding:4px 9px;font-size:12px;border-radius:10px}
.btn.ghost{border-color:transparent;background:transparent;color:var(--acc)}.btn.ghost:hover{background:var(--accbg);box-shadow:none}
.btn:disabled{opacity:.5;cursor:default;box-shadow:none}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink3);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;user-select:none;transition:background-color var(--t1) var(--ease),border-color var(--t1) var(--ease),color var(--t1) var(--ease),transform var(--t1) var(--ease)}
.chip:hover{border-color:var(--acc3)}
.chip.on{background:var(--txt);color:var(--bg);border-color:var(--txt)}
.chip.pt.on{background:var(--accbg);border-color:var(--acc3);color:var(--txt);font-weight:600}
.chip .dot{width:7px;height:7px;border-radius:50%;background:var(--red);display:inline-block}
.chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vsep{width:1px;height:20px;background:var(--line);margin:0 4px}
.pill{display:inline-block;font-size:12px;font-weight:600;padding:2px 7px;border-radius:999px;white-space:nowrap}
.pill.nsh,.pill.school{background:var(--grnbg);color:var(--grn)}.pill.ssh{background:var(--grn2bg);color:var(--grn2)}
.pill.ds,.pill.kinder{background:var(--blubg);color:var(--blu)}.pill.lg,.pill.camp{background:var(--orgbg);color:var(--org)}
.pill.private_school{background:var(--grnbg);color:var(--grn)}.pill.private_kinder{background:var(--blubg);color:var(--blu)}
.st{display:inline-block;padding:2px 7px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}
.st.work{background:var(--grnbg);color:var(--grn)}.st.quiet{background:var(--yelbg);color:var(--yel)}
.st.booked{background:var(--grn2bg);color:var(--grn2)}.st.done{background:var(--tealbg);color:var(--teal)}
.st.planned{background:var(--blubg);color:var(--blu)}.st.none{background:var(--redbg);color:var(--red)}
.st.na{background:var(--bg);color:var(--mut2)}
/* задача 9 (21.09, редизайн панели «Направления», вариант Б — одобрено Яковом): плитка одного
   направления. Общая для карточки учреждения (крупная, кликабельная → окно со сделками) и
   карточки сделки, блок «Школа в сезоне» (компактный вариант .compact, без клика — там просто
   контекст, у сделки и так одно направление). */
.dirtiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.dirtile{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--card);text-align:left;cursor:pointer;transition:border-color .12s,background .12s;font-family:inherit}
.dirtile:hover{border-color:var(--acc3);background:var(--accbg)}
.dirtile.na{cursor:default;opacity:.62}
.dirtile.na:hover{border-color:var(--line);background:var(--card)}
.dirtile .dt-code{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dirtile .dt-sub{font-size:12px;color:var(--mut);line-height:1.35;overflow-wrap:anywhere}
.dirtile .dt-foot{font-size:12px;color:var(--mut2)}
.dirtiles.compact{grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:6px}
.dirtiles.compact .dirtile{padding:7px 9px;gap:2px;cursor:default}
.dirtiles.compact .dirtile.linkable{cursor:pointer}
.dirtiles.compact .dirtile.linkable:hover{border-color:var(--acc3);background:var(--accbg)}
.dirtiles.compact .dt-sub{font-size:12px}
@media (max-width:520px){.dirtiles{grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}}
.tag{display:inline-block;font-size:12px;font-weight:600;padding:1px 7px;border-radius:6px;background:var(--accbg);color:var(--acc2);white-space:nowrap}
.tag.y{background:var(--yelbg);color:var(--yel)}.tag.r{background:var(--redbg);color:var(--red)}.tag.g{background:var(--tealbg);color:var(--teal)}.tag.b{background:var(--blubg);color:var(--blu)}.tag.o{background:var(--orgbg);color:var(--org)}
.tags{display:flex;gap:4px;flex-wrap:wrap}
.tag .x{margin-left:4px;cursor:pointer;opacity:.6}.tag .x:hover{opacity:1}
.tag .auto{font-size:7px;margin-right:3px;opacity:.7;vertical-align:1px}
.av{width:24px;height:24px;border-radius:50%;background:var(--accbg);color:var(--acc);font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;line-height:1}
.mut{color:var(--mut)}.mut2{color:var(--mut2)}.red{color:var(--red)}.grn{color:var(--grn)}.yel{color:var(--yel)}
.b{font-weight:600}
select,input[type=text],input[type=search],textarea{border:1px solid var(--line);border-radius:10px;padding:7px 9px;font:13px "Golos Text","Segoe UI",sans-serif;color:var(--txt);background:var(--card)}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--acc3);box-shadow:0 0 0 3px rgba(126,90,156,.12)}
textarea{width:100%;min-height:70px;resize:vertical}

/* ── сводка, таблица, карточки ───────────────────────────── */
.stats{display:flex;gap:10px;flex-wrap:wrap}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px;display:flex;flex-direction:column;gap:2px;min-width:150px;cursor:pointer;transition:border-color var(--t1) var(--ease),box-shadow var(--t2) var(--ease),transform var(--t2) var(--ease);}
.stat:hover{border-color:var(--acc3);box-shadow:var(--e3);transform:translateY(-1px)}
.stat.on{outline:2px solid var(--acc);outline-offset:-1px}
.stat .n{font-family:Manrope,sans-serif;font-weight:800;font-size:20px}
.stat .l{font-size:12px;font-weight:600}.stat .s{font-size:12px;color:var(--mut)}
.box{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--e2);}
.box.flush{padding:0;overflow:hidden}
.bh{font-family:Manrope,sans-serif;font-weight:700;font-size:13.5px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bh .n{color:var(--mut);font-weight:600;font-size:12px}
.bh .act{margin-left:auto;color:var(--acc);font-weight:600;font-size:12px;font-family:"Golos Text",sans-serif;cursor:pointer}
.bh .act:hover{color:var(--acc2)}
.kv{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:4px 0;border-bottom:1px solid var(--line2)}
.kv:last-child{border-bottom:none}.kv span{color:var(--mut)}.kv b{font-weight:600;text-align:right;min-width:0;overflow-wrap:anywhere}
.th{display:grid;gap:10px;font-size:11.5px;color:var(--mut);padding:8px 12px;border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.04em;user-select:none}
.th span{cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.th span.on{color:var(--acc)}
.tr{display:grid;gap:10px;font-size:13px;padding:9px 12px;border-bottom:1px solid var(--line2);align-items:center;}
.tr>*{min-width:0}.tr .el{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr:hover{background:var(--hover)}.tr.sel{background:var(--accbg)}
.tr.click{cursor:pointer}
.tr .nm{display:flex;flex-direction:column;gap:3px;min-width:0}
.tr .nm b{font-weight:600;line-height:1.25}
.tr input[type=checkbox]{width:15px;height:15px;accent-color:var(--acc);cursor:pointer}
.empty{color:var(--mut);padding:26px;text-align:center}
.seg{display:inline-flex;gap:2px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:2px}
.seg span{padding:5px 12px;border-radius:6px;color:var(--mut);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer}
.seg span.on{background:var(--accbg);color:var(--txt);font-weight:600}
.ev{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line2);}
.ev:last-child{border-bottom:none}
.ev .ic{width:28px;height:28px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--accbg);color:var(--acc);font-size:13px}
.ev .ic.call{background:var(--grnbg);color:var(--grn)}.ev .ic.log{background:var(--yelbg);color:var(--yel)}.ev .ic.sys{background:var(--bg);color:var(--mut)}
.ev .tx{display:flex;flex-direction:column;gap:3px;font-size:13px;min-width:0;flex:1}
.ev .tx .t{white-space:pre-wrap;overflow-wrap:anywhere}.ev .m{color:var(--mut);font-size:12px}
.note{padding:10px 12px;border-radius:10px;background:var(--bg);font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere;position:relative}
.note .m{color:var(--mut);font-size:12px;margin-top:4px}
.note .del{position:absolute;right:8px;top:6px;color:var(--mut2);cursor:pointer;font-size:14px}.note .del:hover{color:var(--red)}
.two{display:grid;grid-template-columns:280px minmax(0,1fr) 320px;gap:12px;align-items:start}
.col{display:flex;flex-direction:column;gap:10px;min-width:0}

/* ── панель действий, диалоги, тосты ─────────────────────── */
.abar{position:fixed;left:50%;transform:translateX(-50%);bottom:16px;background:var(--txt);color:var(--bg);border-radius:14px;padding:10px 14px;display:none;gap:10px;align-items:center;flex-wrap:wrap;box-shadow:var(--e3);z-index:40;max-width:96vw}
.abar.show{display:flex}
/* pleer_v2 (02.10): плеер записи звонка — CRM.playRecording (crm_v3.js) */
.cplay{position:fixed;left:0;right:0;margin:0 auto;bottom:16px;width:420px;max-width:calc(100vw - 32px);background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:16px;box-shadow:var(--e3);padding:12px 14px 10px;display:none;flex-direction:column;gap:8px;z-index:80;box-sizing:border-box}
.cplay.show{display:flex;animation:up .2s ease both}
.cplay .cp-top{display:flex;align-items:center;gap:8px}
.cplay .cp-lbl{flex:1;min-width:0;font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cplay .cp-x{border:0;background:none;color:var(--mut);font-size:16px;line-height:1;width:32px;height:32px;border-radius:10px;cursor:pointer;flex-shrink:0}
.cplay .cp-x:hover{background:var(--hover);color:var(--txt)}
.cplay .cp-seek{-webkit-appearance:none;appearance:none;width:100%;height:28px;margin:0;background:transparent;cursor:pointer;touch-action:none;--p:0%}
.cplay .cp-seek:disabled{cursor:default;opacity:.5}
.cplay .cp-seek::-webkit-slider-runnable-track{height:8px;border-radius:999px;background:linear-gradient(to right,var(--acc) var(--p),var(--line) var(--p))}
.cplay .cp-seek::-moz-range-track{height:8px;border-radius:999px;background:var(--line)}
.cplay .cp-seek::-moz-range-progress{height:8px;border-radius:999px;background:var(--acc)}
.cplay .cp-seek::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;margin-top:-6px;border-radius:50%;background:var(--acc);border:3px solid var(--card);box-shadow:0 1px 4px rgba(0,0,0,.3)}
.cplay .cp-seek::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--acc);border:3px solid var(--card);box-shadow:0 1px 4px rgba(0,0,0,.3)}
.cplay .cp-seek:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:8px}
.cplay .cp-row{display:flex;align-items:center;gap:6px}
.cplay .cp-b,.cplay .cp-r{border:1px solid var(--line);background:var(--card);color:var(--txt);border-radius:10px;height:34px;padding:0 9px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.cplay .cp-b:hover,.cplay .cp-r:hover{background:var(--hover)}
.cplay .cp-play{width:44px;height:44px;border-radius:50%;border:0;background:var(--acc);color:var(--acc-ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.cplay .cp-play svg{width:20px;height:20px}
.cplay .cp-t{font-variant-numeric:tabular-nums;font-size:12.5px;color:var(--mut);margin-left:4px;white-space:nowrap}
.cplay .cp-rates{margin-left:auto;display:inline-flex;gap:3px}
.cplay .cp-r{height:28px;padding:0 7px;font-size:12px}
.cplay .cp-r.on{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}
.cplay .cp-note{font-size:12px;color:var(--red);line-height:1.35}
@media (max-width:600px){
  .cplay{bottom:0;width:100%;max-width:none;border-radius:16px 16px 0 0;border-bottom:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
  .cplay .cp-row{flex-wrap:wrap}
}
.abar select{border:none;border-radius:10px;padding:7px 9px;font-weight:600}
.abar .btn{border-color:rgba(127,127,127,.35);background:rgba(127,127,127,.15);color:var(--bg)}
.abar .btn.pri{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}
.abar .btn.danger{background:rgba(194,68,68,.25);border-color:rgba(194,68,68,.5);color:var(--bg)}
.ovl{position:fixed;inset:0;background:var(--ovl);display:none;align-items:flex-start;justify-content:center;padding:40px 12px;overflow:auto;z-index:50}
.ovl.show{display:flex}
.dlg{background:var(--card);border-radius:14px;max-width:560px;width:100%;padding:18px 20px;box-shadow:var(--e3);display:flex;flex-direction:column;gap:10px;animation:up .25s ease both}
.dlg h2{font-size:16px;font-weight:800}
.field{display:flex;flex-direction:column;gap:3px}.field label{font-size:12px;color:var(--mut);font-weight:600}
.field input,.field select,.field textarea{width:100%}
.dfoot{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:6px}
.toast{position:fixed;bottom:70px;left:50%;transform:translateX(-50%);background:var(--txt);color:var(--bg);border-radius:10px;padding:10px 16px;font-size:13px;display:none;max-width:680px;z-index:99;white-space:pre-line;box-shadow:var(--e3)}
.toast.show{display:block;animation:up .25s ease both}.toast.err{background:var(--red);color:var(--dark-ink)}
.toast .toastundo{margin-left:10px;text-decoration:underline;cursor:pointer;font-weight:700;white-space:nowrap}
.hint{font-size:12px;color:var(--mut)}
.load{color:var(--mut);padding:28px;text-align:center}
.menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--e3);z-index:30;min-width:220px;overflow:hidden;display:none}
.menu.show{display:block}.menu div{padding:9px 14px;cursor:pointer;font-size:13px}.menu div:hover{background:var(--bg)}.menu div.danger{color:var(--red)}
.rel{position:relative}
@keyframes up{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.box,.stat,.tr,.ev,.dlg,.toast{animation:none}}

/* ── мобильная версия ────────────────────────────────────── */
@media (max-width:1100px){.two{grid-template-columns:minmax(0,1fr) 320px}.two .col:first-child{grid-column:1/-1;order:2}.two .col:nth-child(2){order:1}.two .col:nth-child(3){order:3;grid-column:1/-1}}
@media (max-width:860px){
  .sb{position:fixed;left:0;top:0;bottom:0;z-index:60;transform:translateX(-105%);transition:transform .2s ease;box-shadow:var(--e3)}
  .sb.open{transform:none}
  .sbback.show{display:block;position:fixed;inset:0;z-index:59;background:rgba(20,14,30,.32);cursor:pointer;-webkit-tap-highlight-color:transparent}   /* put_v2 */
  .burger{display:inline-flex}
  .top{padding:10px 12px;gap:8px}.top h1{font-size:17px}.top .sub{display:none}
  .content{padding:10px 12px 90px}
  .search{min-width:0;width:100%}
  .two{grid-template-columns:1fr}.two .col{grid-column:auto!important}.two .col:first-child{order:1!important}.two .col:nth-child(2){order:0!important}.two .col:nth-child(3){order:2!important}
  .stat{min-width:calc(50% - 5px);flex:1}
  .th{display:none}
  .tr{display:flex;flex-wrap:wrap;gap:6px 14px;padding:12px;align-items:center}
  .tr>.nm,.tr>.full{flex-basis:100%}
  .tr>[data-l]::before{content:attr(data-l) " ";font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;margin-right:4px}
  .tr>[data-l]:empty,.tr>.mhide{display:none}
  .tr .el{white-space:normal}
  .dlg{padding:14px}
}

/* ── crm03a: каркас — фон с «освещением», меню профиля, подсказки, «всё живо» ─ */
html[data-atm] .main{background:
  radial-gradient(900px 520px at 12% -12%, var(--glow1), transparent 60%),
  radial-gradient(700px 480px at 100% 110%, var(--glow2), transparent 60%), var(--bg)}
.sb .me{cursor:pointer;position:relative;user-select:none}
.sb .me:hover{background:var(--accbg)}
.sb .me .chev{margin-left:auto;color:var(--mut);font-size:12px}
.pmenu{position:fixed;left:12px;bottom:70px;width:300px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--e3);z-index:70;display:none;flex-direction:column;padding:10px 12px;gap:6px;animation:up .2s ease both}
.pmenu.show{display:flex}
.pmenu .ph{display:flex;align-items:center;gap:10px;padding:4px 4px 8px;border-bottom:1px solid var(--line)}
.pmenu .ph .av{width:38px;height:38px;border-radius:50%;background:var(--acc);color:var(--acc-ink);font-family:Manrope,sans-serif;font-weight:800;font-size:15px;display:flex;align-items:center;justify-content:center}
.pmenu .ph b{display:block;font-size:14px}.pmenu .ph small{color:var(--mut);font-size:12px}
.pmenu .lbl{font-size:12px;font-weight:600;color:var(--txt);padding:6px 4px 2px}
.tseg{display:flex;gap:6px}
.tseg div{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;height:36px;border-radius:10px;font-size:12.5px;font-weight:600;background:var(--accbg);color:var(--txt);cursor:pointer;border:1px solid transparent}
.tseg div:hover{border-color:var(--acc3)}
.tseg div.on{background:var(--acc);color:var(--acc-ink)}
.tseg svg{width:15px;height:15px}
.prow{display:flex;align-items:center;gap:10px;padding:8px 4px;border-top:1px solid var(--line2);cursor:pointer}
.prow .pi{width:30px;height:30px;border-radius:10px;background:var(--accbg);display:flex;align-items:center;justify-content:center;color:var(--acc);flex-shrink:0}
.prow .pi svg{width:15px;height:15px}
.prow .pt{flex:1;min-width:0}.prow .pt b{font-size:13px;display:block}.prow .pt small{color:var(--mut);font-size:12px;line-height:1.3;display:block}
.tog{width:34px;height:20px;border-radius:999px;background:var(--line);position:relative;flex-shrink:0;transition:background .15s}
.tog::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.tog.on{background:var(--acc)}.tog.on::after{left:16px}
.pmenu a.prow{color:var(--txt)}
/* menu_fin: поле прямо в меню профиля */
.pmenu .pedit{font-size:12px;font-weight:700;color:var(--acc2)}
.pmenu .pform{border-top:1px solid var(--line2);padding:8px 4px;display:flex;flex-direction:column;gap:6px}
.pmenu .pform input,.pmenu .pform textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;font-size:13px;background:var(--card);color:var(--txt)}
.pmenu .pform textarea{min-height:76px;resize:vertical}
.pmenu .pfb{display:flex;justify-content:flex-end;gap:6px}
.pmenu .pdone{color:var(--grn);font-weight:700;font-size:13px;padding:6px 0}
.pmenu .perr{color:var(--red);font-size:12px}
.hintbar{display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:10px;background:var(--accbg);border:1px dashed var(--acc3);font-size:12.5px;}
.hintbar svg{width:16px;height:16px;color:var(--acc);flex-shrink:0}
.hintbar .ht{flex:1;min-width:0;line-height:1.4}
.hintbar .ha{display:flex;gap:12px;white-space:nowrap}
.hintbar .ha span{cursor:pointer;color:var(--acc);font-weight:600}.hintbar .ha span.m{color:var(--mut);font-weight:500}
.sysbar{display:none;align-items:center;gap:10px;padding:9px 24px;background:var(--redbg);color:var(--red);font-size:12.5px;font-weight:600;border-bottom:1px solid var(--line)}
.sysbar.show{display:flex}.sysbar .x{margin-left:auto;cursor:pointer;opacity:.7}.sysbar a{color:inherit;text-decoration:underline}
.sysbar svg{width:16px;height:16px;flex-shrink:0}
.nav.hide{display:none}
.tip{font-size:12px;color:var(--mut)}

/* ── настройки: левая колонка разделов + содержимое ─────────────────────── */
.set{display:grid;grid-template-columns:210px minmax(0,1fr);gap:0;flex:1;min-height:0}
.set .snav{border-right:1px solid var(--line);background:var(--card);padding:12px 8px;display:flex;flex-direction:column;gap:1px}
.set .snav a{display:block;padding:7px 10px;border-radius:10px;font-size:13px;color:var(--ink3)}
.set .snav a:hover{background:var(--bg);color:var(--txt)}.set .snav a.on{background:var(--accbg);color:var(--txt);font-weight:600}
.set .sbody{padding:14px 24px 40px;display:flex;flex-direction:column;gap:10px;min-width:0}
.set h2{font-size:17px;font-weight:800}
.frow{display:grid;grid-template-columns:minmax(0,1fr) 150px minmax(0,1.1fr);gap:12px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line2)}
.frow:last-child{border-bottom:none}
.frow .fl{font-size:13px}.frow .fh{font-size:12px;color:var(--mut);line-height:1.35}
.frow input[type=text],.frow input[type=number],.frow select{width:100%}
.frow .who{font-size:12px;color:var(--mut2);margin-top:2px}
.frow.wide{grid-template-columns:1fr;gap:6px;align-items:start}   /* «Ссылка для ЛПР»: многострочные настройки (текст ЛПР, программы) */
.frow.changed .fl::after{content:" ●";color:var(--acc);font-size:9px;vertical-align:middle}
.pcard{border-left:4px solid var(--acc)}
.pcard .kv b{overflow-wrap:anywhere}
.matrix{display:grid;gap:0;overflow-x:auto}
.matrix .mh{display:grid;gap:8px;font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;padding:8px 12px;border-bottom:1px solid var(--line);text-align:center}
.matrix .mh span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.matrix .mh span:first-child{text-align:left}
.matrix .mr{display:grid;gap:8px;padding:7px 12px;border-bottom:1px solid var(--line2);align-items:center;font-size:12.5px}
.matrix .mr>div{display:flex;justify-content:center}
.chk{width:16px;height:16px;border-radius:6px;border:1.5px solid var(--mut2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--acc-ink)}
.chk.on{background:var(--acc);border-color:var(--acc)}.chk.lock{opacity:.55;cursor:default}
.chk svg{width:11px;height:11px}
@media (max-width:860px){.set{grid-template-columns:1fr}.set .snav{flex-direction:row;flex-wrap:wrap;border-right:none;border-bottom:1px solid var(--line)}.frow{grid-template-columns:1fr}.sysbar{padding:8px 12px}.pmenu{left:8px;right:8px;width:auto;bottom:12px}}

/* ── вход (crm_login.html) ───────────────────────────────────────────────── */
.lg-wrap{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:56px 16px 40px;overflow:hidden;background:
  var(--lg-pattern), radial-gradient(900px 620px at 18% -10%, var(--lg-g1), transparent 60%), radial-gradient(700px 520px at 92% 8%, var(--lg-g2), transparent 60%), radial-gradient(800px 600px at 80% 110%, var(--lg-g3), transparent 60%), var(--lg-base);
  background-size:520px 520px,auto,auto,auto,auto}
:root{--lg-base:linear-gradient(180deg,#F3EDF8 0%,#F8F5FB 55%,#FBF7F3 100%);--lg-g1:rgba(126,90,156,.22);--lg-g2:rgba(59,116,184,.14);--lg-g3:rgba(196,112,43,.14);--lg-card:rgba(255,255,255,.82);--lg-line:rgba(126,90,156,.16);--lg-field:#FFFFFF}
html[data-theme=dark]{--lg-base:linear-gradient(180deg,#1B1526 0%,#14111A 60%,#120F17 100%);--lg-g1:rgba(126,90,156,.55);--lg-g2:rgba(59,116,184,.28);--lg-g3:rgba(196,112,43,.16);--lg-card:rgba(30,26,38,.78);--lg-line:rgba(255,255,255,.08);--lg-field:rgba(255,255,255,.05)}
@media (prefers-color-scheme:dark){html:not([data-theme=light]):not([data-theme=dark]){--lg-base:linear-gradient(180deg,#1B1526 0%,#14111A 60%,#120F17 100%);--lg-g1:rgba(126,90,156,.55);--lg-g2:rgba(59,116,184,.28);--lg-g3:rgba(196,112,43,.16);--lg-card:rgba(30,26,38,.78);--lg-line:rgba(255,255,255,.08);--lg-field:rgba(255,255,255,.05)}}
.lg-theme{position:absolute;top:18px;right:20px;display:inline-flex;gap:2px;padding:4px;border-radius:999px;background:var(--accbg);backdrop-filter:blur(6px)}
.lg-theme span{width:40px;height:34px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink3);cursor:pointer}
.lg-theme span.on{background:var(--acc);color:var(--acc-ink);box-shadow:0 4px 12px rgba(0,0,0,.2)}
.lg-theme svg{width:17px;height:17px}
.lg-head{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;margin-top:10px}
.lg-head img{width:84px;height:91px;object-fit:contain;filter:drop-shadow(0 10px 24px rgba(126,90,156,.3))}
.lg-head h1{font-size:28px;font-weight:800;margin-top:4px}.lg-head h1 span{color:var(--acc)}
.lg-head p{color:var(--mut);font-size:14.5px;margin:0}
.lg-chips{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:8px}
.lg-chips div{display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:14px;background:var(--lg-card);border:1px solid var(--lg-line);backdrop-filter:blur(8px);font-size:12.5px}
.lg-chips b{display:block;font-size:13px}.lg-chips small{color:var(--mut);font-size:12px}
.lg-chips svg{width:18px;height:18px;color:var(--acc)}
.lg-card{width:440px;max-width:100%;margin-top:26px;padding:26px 28px 22px;border-radius:20px;background:var(--lg-card);border:1px solid var(--lg-line);backdrop-filter:blur(14px);box-shadow:0 24px 60px var(--shadow2);display:flex;flex-direction:column;gap:14px;animation:up .5s ease both}
.lg-card h2{font-size:22px;font-weight:800;text-align:center}
.lg-card label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:600}
.lg-card .fi{display:flex;align-items:center;gap:10px;height:46px;padding:0 14px;border-radius:14px;background:var(--lg-field);border:1.5px solid var(--line)}
.lg-card .fi:focus-within{border-color:var(--acc3);box-shadow:0 0 0 3px rgba(126,90,156,.12)}
.lg-card .fi svg{width:17px;height:17px;color:var(--mut);flex-shrink:0}
.lg-card .fi input{flex:1;border:none;outline:none;background:transparent;font:14.5px "Golos Text","Segoe UI",sans-serif;color:var(--txt);min-width:0}
.lg-card .fi .eye{cursor:pointer}
.lg-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--mut);gap:10px;flex-wrap:wrap}
.lg-row label{flex-direction:row;align-items:center;gap:8px;font-weight:500;cursor:pointer}
.lg-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--acc)}
.lg-btn{height:48px;border-radius:14px;background:var(--acc);color:var(--acc-ink);font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center;gap:8px;border:none;cursor:pointer;box-shadow:0 10px 24px rgba(126,90,156,.28);width:100%;font-family:inherit}
.lg-btn svg{width:18px;height:18px;flex-shrink:0}
.lg-btn:hover{background:var(--acc2)}
.lg-err{background:var(--redbg);color:var(--red);border-radius:10px;padding:10px 12px;font-size:13px}
.lg-foot{color:var(--mut);font-size:12px;text-align:center;line-height:1.4}
.lg-bottom{margin-top:auto;padding-top:26px;color:var(--mut);font-size:12px;text-align:center}
@media (max-width:520px){.lg-wrap{padding:48px 12px 30px}.lg-head h1{font-size:23px}.lg-card{padding:20px 18px;margin-top:18px}.lg-theme{top:12px;right:12px}}

/* ── crm03b: воронка (доска), карточка сделки, задачи, мой день ─────────────── */
.fbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fbar select{border:1px solid var(--line);border-radius:10px;padding:7px 9px;background:var(--card);color:var(--txt);font-size:12.5px}
.fbar .chip.on{background:var(--txt);color:var(--bg);border-color:var(--txt)}
/* voronka1809 (18.09, просьба Якова «чуть увеличить и сделать приятнее»): колонки 300px, карточки
   просторнее, название крупнее, задача — отдельной строкой со значком и датой. */
.vboard{display:flex;gap:14px;overflow-x:auto;padding:2px 2px 10px;align-items:flex-start}
/* voronka2 (20.09, просьба Якова «Продажа» без прокрутки на экране): было flex:0 0 300px жёстко —
   6 колонок продажи (после разделения «Передать в сопровождение») уже не помещались. Теперь
   колонка тянется вместе с экраном (flex-grow), но не уже 176px и не шире 320px — при 6-10
   колонках (вкладка «Все») упирается в минимум и включает горизонтальную прокрутку доски. */
.vcol{flex:1 1 176px;min-width:176px;max-width:320px;background:var(--bg);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;max-height:calc(100vh - 175px)}
/* 17.09 (просьба Якова): «Бронь» — фон колонки зелёный, карточки внутри без изменений */
.vcol.green{background:var(--grnbg);border-color:var(--grn2bg)}
/* bugs_0210a: полка «Закрыто и не реализовано» — серая, по умолчанию свёрнута в узкую колонку */
.vcol.closed{opacity:.72;flex:0 0 150px;min-width:150px;border-style:dashed}
.vcol.closed .vhead{cursor:pointer}
.vcol.closed:not(.on) .vcards{display:none}
.vcol.closed:not(.on){max-height:none}
.vcol.closed.on{opacity:1;flex:1 1 176px;min-width:176px;max-width:320px}
.vcol.closed .vcard.v4{filter:grayscale(.5)}
/* kontrol (03.10, Яков: «колонки сворачиваются при раскрытии»): закрытая полка — узкая, раскрытая — как обычная колонка (320 на ПК, 82vw на телефоне);
   раньше .vboard-vor .vcol (320) перебивал узкую закрытую, а раскрытая сжималась до 176 */
.vboard-vor .vcol.closed:not(.on){flex:0 0 272px;min-width:272px;max-width:272px}
@media (min-width:861px){.vboard-vor .vcol.closed.on{flex:0 0 320px;min-width:320px;max-width:320px}}
@media (max-width:860px){.vboard-vor .vcol.closed.on,.vcol.closed.on{flex:0 0 82vw;min-width:82vw;max-width:82vw}}
.vcol.green .vhead{background:var(--grnbg)}
.vhead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);font-family:Manrope,sans-serif;font-weight:800;font-size:14px;position:sticky;top:0;background:var(--bg);border-radius:14px 14px 0 0;z-index:1}
.vhead b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vhead .n{color:var(--mut);font-weight:700;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:12px;flex-shrink:0;font-variant-numeric:tabular-nums}
.vcards{display:flex;flex-direction:column;gap:9px;padding:9px;overflow-y:auto}
/* 17.09 (просьба Якова): ползунки доски (сам ряд колонок + список карточек внутри колонки) —
   тонкие, без стрелок-кнопок, невидимые в покое, тонкая полоска появляется только при наведении/
   скролле; функцию горизонтального скролла доски не убирал (иначе колонки за краем экрана
   станут недоступны) — только спрятал её вид. */
.vboard,.vcards{scrollbar-width:thin;scrollbar-color:transparent transparent}
.vboard:hover,.vcards:hover{scrollbar-color:var(--line) transparent}
.vboard::-webkit-scrollbar,.vcards::-webkit-scrollbar{width:6px;height:6px}
.vboard::-webkit-scrollbar-track,.vcards::-webkit-scrollbar-track{background:transparent}
.vboard::-webkit-scrollbar-thumb,.vcards::-webkit-scrollbar-thumb{background:transparent;border-radius:999px}
.vboard:hover::-webkit-scrollbar-thumb,.vcards:hover::-webkit-scrollbar-thumb{background:var(--line)}
.vboard::-webkit-scrollbar-thumb:hover,.vcards::-webkit-scrollbar-thumb:hover{background:var(--mut)}
.vboard::-webkit-scrollbar-button,.vcards::-webkit-scrollbar-button{display:none;width:0;height:0}
.vcard{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:11px 12px 10px;cursor:pointer;display:flex;flex-direction:column;gap:5px;transition:box-shadow .12s,border-color .12s,transform .12s;box-shadow:var(--e2)}
.vcard:hover{box-shadow:var(--e3);border-color:var(--acc3);transform:translateY(-1px)}
.vtop{display:flex;align-items:center;gap:8px;font-size:13.5px;min-width:0}
.vtop b{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Manrope,sans-serif;letter-spacing:-.01em}
.vsub{color:var(--mut);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px;min-width:0}
.vsub .vdays{margin-left:auto;flex-shrink:0;font-size:12px;font-weight:600;color:var(--mut2);background:var(--bg);border-radius:999px;padding:1px 7px;font-variant-numeric:tabular-nums}
.vsub .vdays.long{color:var(--yel);background:var(--yelbg)}
.vsub .vdays.stale{color:var(--red);background:var(--redbg)}
.vprog{color:var(--txt);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.85}
.vtask{display:flex;align-items:center;gap:6px;margin-top:3px;padding:5px 8px;border-radius:10px;background:var(--accbg);color:var(--acc2);font-size:12px;font-weight:600;min-width:0}
.vtask svg{width:13px;height:13px;flex-shrink:0}
.vtask .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.vtask .d{flex-shrink:0;font-weight:700;font-variant-numeric:tabular-nums}
.vtask.r{background:var(--redbg);color:var(--red)}
.vtask.today{background:var(--yelbg);color:var(--yel)}
.vtask.none{background:var(--bg);color:var(--mut2);font-weight:500}
.vtask .src{flex-shrink:0;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.7}
/* 17.09 (просьба Якова, баг): плашка задачи — раньше не переносилась и не обрезалась; длинный
   комментарий менеджера растягивал карточку и всю колонку вбок (скролл, обрезанный текст).
   Теперь — одна строка с многоточием, как у названия/менеджера выше; текст целиком — по клику
   на карточку (открывает /crm/deal/<id>, там задача уже показывается полностью, без обрезания). */
.vcard .tag{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:860px){.vcol{flex:0 0 82vw;min-width:82vw;max-height:none}.fbar{width:100%}.fbar select{flex:1;min-width:110px}}

/* crm07: «Сопровождение v2» — роли на карточке, полоска прогресса */
.vroles{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;font-weight:600}
.vroles span{display:inline-flex;align-items:center;gap:4px}
.vroles .call{color:var(--acc)}.vroles .trip{color:var(--org)}
.vpbar{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--mut)}
.vpbar i{flex:1;height:4px;border-radius:999px;background:var(--line);overflow:hidden;display:block}
.vpbar i b{display:block;height:100%;background:var(--acc3)}

/* ── crm06: календарь (неделя/день, показы+встречи) ──────────────────────── */
/* Неделя: 7 одинаковых колонок (12.09, Яков: «недельный вид оставь одинаковым» — узкие Сб/Вс
   резали текст карточек до «С…»). Узкие выходные — только в виде «Месяц» (.mgrid ниже). */
.calgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;align-items:start;overflow:hidden;min-width:0;max-width:100%}
.calgrid.mode-day{grid-template-columns:minmax(0,420px)}
.calcol{display:flex;flex-direction:column;gap:6px;min-width:0;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:8px;max-height:calc(100vh - 232px);overflow-y:auto}
.calcol.today{border-color:var(--acc);box-shadow:0 0 0 2px var(--acc3)}
.calcol.weekend{background:var(--card)}
.calhd{padding:2px 2px 7px;border-bottom:2px solid var(--line);font-family:Manrope,sans-serif;cursor:pointer}
.calhd.today{border-bottom-color:var(--acc)}
.chd-top{display:flex;align-items:baseline;gap:5px;white-space:nowrap;margin-bottom:5px}
.chd-wd{font-weight:700;font-size:12px;color:var(--mut)}
.chd-num{font-weight:800;font-size:16px}
.calhd.today .chd-wd,.calhd.today .chd-num{color:var(--acc)}
.calhd .n{color:var(--mut);font-weight:600;font-size:12px;margin-left:auto}
.calempty{color:var(--mut2);font-size:12px;text-align:center;padding:14px 0}
.vcard.ev-show{background:var(--grnbg);border-color:var(--grn2bg)}
.vcard.ev-show.done{opacity:.55}
.vcard.ev-show.pre{border-style:dashed;border-color:var(--yel);background:var(--yelbg)}  /* предварительная дата (слой «Пред. даты») */
.mchip.pre{outline:1px dashed var(--yel);outline-offset:-1px;background:var(--yelbg);color:var(--yel)}
.vcard.ev-meet{background:var(--accbg);border-color:var(--acc3);border-left:3px solid var(--acc)}
.vcard .catime{font-size:12px;font-weight:700;color:var(--txt);display:flex;align-items:center;gap:6px}
/* в колонке недели название школы — до 2 строк, а не «СОШ № 12 …» (12.09) */
.calcol .vtop b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere;line-height:1.3}
/* телефон: дни — горизонтальная лента внутри .calgrid. Скролл должен быть у самой ленты, а не у
   всей страницы: для этого у .calgrid стоят min-width:0/max-width:100% (выше), а колонка .calwrap
   на ≤860px — minmax(0,1fr), не 1fr (1fr = minmax(auto,1fr): трек растягивался до 7×78vw и
   страница уезжала вбок на 2189px — баг найден 12.09 скриншотом 390px, чиним по слову Якова). */
@media (max-width:900px){.calgrid{display:flex;overflow-x:auto;padding-bottom:8px}.calgrid .calcol{flex:0 0 78vw;min-width:78vw;max-height:none}}

/* карточка сделки */
.stagebar{display:flex;flex-direction:column;gap:0}
.sstep{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13px;color:var(--mut);position:relative}
.sstep .dot{width:9px;height:9px;border-radius:50%;border:2px solid var(--line);background:var(--card);flex-shrink:0}
.sstep.done{color:var(--txt)}.sstep.done .dot{background:var(--grn);border-color:var(--grn)}
.sstep.cur{color:var(--txt);font-weight:700}.sstep.cur .dot{background:var(--acc);border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg)}
.sstep .d{margin-left:auto;color:var(--mut);font-size:12px;font-weight:400}
.sgroup{font-size:11px;color:var(--mut2);text-transform:uppercase;letter-spacing:.05em;margin:8px 0 2px}
.missbox{background:var(--yelbg);color:var(--yel);border-radius:10px;padding:8px 10px;font-size:12.5px;display:flex;flex-direction:column;gap:4px}
.missbox b{font-weight:700}
.feed-row{display:flex;gap:8px;padding:8px 0;border-bottom:1px solid var(--line2);font-size:13px}
.feed-row:last-child{border-bottom:none}
.feed-row .fi{width:26px;height:26px;border-radius:50%;background:var(--accbg);color:var(--acc);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px}
.feed-row .ft{flex:1;min-width:0}.feed-row .ft small{color:var(--mut);display:block;font-size:12px;margin-top:2px}
.showrow{display:grid;grid-template-columns:90px 90px 1fr 90px;gap:8px;padding:7px 0;border-bottom:1px solid var(--line2);font-size:12.5px;align-items:center}
.showrow:last-child{border-bottom:none}

/* задачи / мой день */
.ttable .th,.ttable .tr{grid-template-columns:1.6fr 1fr 110px 90px 100px}
.tstat{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.tstat .box{flex:1;min-width:100px;text-align:center;padding:12px 8px;gap:2px}
.tstat .box b{font-size:22px;font-family:Manrope,sans-serif}
.tstat .box small{color:var(--mut);font-size:12px}
.daysec{display:flex;flex-direction:column;gap:6px}
.dayrow{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.dayrow.overdue{border-color:var(--redbg);background:var(--redbg)}
.dayrow .dt{flex:1;min-width:0}.dayrow .dt b{display:block;font-size:13px}.dayrow .dt small{color:var(--mut);font-size:12px}
@media (max-width:860px){.ttable .th,.ttable .tr{grid-template-columns:1fr}.showrow{grid-template-columns:1fr 1fr}}

/* дубли учреждений */
.dtable .th,.dtable .tr{grid-template-columns:1.3fr 1.3fr 1fr 190px}
@media (max-width:860px){.dtable .th{display:none}.dtable .tr{grid-template-columns:1fr}}

/* finuchet_ux2009 (20.09, Яков «расходы ужасно сделаны, сравни с тем что было») — расходы и
   выплаты финучёта настоящей таблицей (дата/кто/тип/категория/откуда/сумма/комментарий), как
   было в старом /fin, вместо строк без даты и автора */
.exptable .th,.exptable .tr{grid-template-columns:66px 92px 84px minmax(0,1fr) 76px 88px minmax(0,1.3fr) 26px}
.paytable .th,.paytable .tr{grid-template-columns:66px minmax(0,1fr) 76px 88px minmax(0,1.3fr) 26px}
@media (max-width:860px){.exptable .th,.paytable .th{display:none}.exptable .tr,.paytable .tr{grid-template-columns:1fr}}

/* мой день — команда (crm03b-fix, 09.09.2026) */
.teamgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}
.mtask{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--acc)}
.mtask svg{flex-shrink:0}
.mtask.late{color:var(--red)}
.meettable .th,.meettable .tr{grid-template-columns:60px 1fr 130px 1fr}
.stucktable .th,.stucktable .tr{grid-template-columns:1.4fr 140px 110px 70px}
.esctable .th,.esctable .tr{grid-template-columns:1fr 140px}
@media (max-width:860px){.meettable .th,.stucktable .th,.esctable .th{display:none}.meettable .tr,.stucktable .tr,.esctable .tr{grid-template-columns:1fr}}

/* «Направление в учреждении» — список мероприятий с N/M (crm03b-fix, 09.09.2026, по макету NapravlenieShkoly.dc.html) */
.stat4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.stat4>div{background:var(--card);padding:12px 16px;display:flex;flex-direction:column;gap:3px}
.stat4 .n{font-family:Manrope,sans-serif;font-weight:800;font-size:21px}
.stat4 .l{color:var(--mut);font-size:12px}
@media (max-width:860px){.stat4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.showchip{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--ink3);background:var(--bg);border-radius:6px;padding:2px 7px;white-space:nowrap}
.showchip b{color:var(--txt)}
.stg{font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap;display:inline-block}
.stg.work{background:var(--yelbg);color:var(--yel)}.stg.booked{background:var(--grn2bg);color:var(--grn2)}
.stg.done{background:var(--grnbg);color:var(--grn)}.stg.lost{background:var(--redbg);color:var(--red)}
.stg.quiet{background:var(--redbg);color:var(--red)}
.naptable .th,.naptable .tr{grid-template-columns:56px 92px minmax(0,1fr) 176px 100px 150px 90px 30px}
.naptable .tr.past{opacity:.55}.naptable .tr.lostrow{opacity:.5}
.naptable .tr>.go{text-align:right;color:var(--acc);font-weight:600}
@media (max-width:860px){.naptable .tr{grid-template-columns:1fr}.naptable .tr>.go{display:none}}

/* карточка сделки — редизайн по одобренному макету Sdelka.dc.html (crm03b-fix, 09.09.2026) */
.dealtop{display:flex;flex-direction:column;gap:10px;padding:14px 24px 12px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.crumb{display:flex;align-items:center;gap:6px;color:var(--mut);font-size:12.5px;flex-wrap:wrap}
.crumb b{color:var(--txt);font-weight:600}
.dealrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dealacts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto}
.dealttl{font-family:Manrope,sans-serif;font-weight:800;font-size:19px;letter-spacing:-.01em}
.dealsub{color:var(--mut);font-size:12.5px;white-space:nowrap}
.dealtags{display:flex;gap:4px;flex-wrap:wrap}
@media (min-width:1101px){.two.deal{grid-template-columns:300px minmax(0,1fr) 380px}}
.stagebar.h{display:flex;flex-direction:row;align-items:center;gap:16px;flex-wrap:wrap;padding-top:2px}
.stagebar.h .sstep{padding:0;font-size:12px;color:var(--mut2);gap:6px}
.stagebar.h .sstep .dot{width:8px;height:8px}
.stagebar.h .sstep.done{color:var(--mut)}
.stagebar.h .sstep.cur{color:var(--txt)}
.stagebar.h .sgroup{margin:0;font-size:12px;color:var(--mut2);text-transform:none;letter-spacing:0}
.avt{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}
.avt.c0{background:var(--grnbg);color:var(--grn)}.avt.c1{background:var(--accbg);color:var(--acc)}
.ctcrow{display:flex;align-items:center;gap:10px}
.ctcrow .nm{display:flex;flex-direction:column;min-width:0;flex:1;gap:1px}
.ctcrow .nm b{font-weight:600;font-size:13px}
.ctcrow .nm small{color:var(--mut);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* fix21b (21.09, жалоба Якова «в звонках строчки съехали»): .iconbtn был display:flex — блочный
   элемент, а в ленте карточки учреждения (crm_uchr_card.html::renderFeed) кнопка «плэй» стоит
   прямо внутри текста строки звонка (mainHtml+recBtn+rechkaHtml в одном <div class="t">). Блочная
   кнопка посреди строчного контента рвёт поток на анонимные блоки — текст/кнопка/бейдж уезжают
   каждый на свою строку. display:inline-flex даёт те же width/height/центрирование иконки (внутренняя
   раскладка flex не меняется), но сам элемент становится строчным и не ломает соседний текст.
   На все прежние места (.rk-acts — сам flex-контейнер, ячейки .tr/data-l в zvonki/finuchet/kpi/staff,
   где .iconbtn стоит один) это не влияет: у flex-детей и grid-детей внешний display всегда
   блокируется браузером само по себе (item blockification), inline-flex vs flex там неразличимы. */
.iconbtn{width:28px;height:28px;border-radius:10px;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;color:var(--acc);background:var(--card);vertical-align:middle}
.iconbtn:hover{border-color:var(--acc3);background:var(--accbg)}
.iconbtn.tealc{color:var(--teal)}.iconbtn.tealc:hover{background:var(--tealbg)}
.plantiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.plantile{display:flex;flex-direction:column;gap:2px;min-width:0}
.plantile small{color:var(--mut);font-size:12px}
.plantile b{font-family:Manrope,sans-serif;font-weight:800;font-size:20px;overflow-wrap:anywhere}
.plansum{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;background:var(--bg);font-size:12.5px;flex-wrap:wrap}
.plansum b{margin-left:auto;font-size:14px}
.showgrp{display:grid;grid-template-columns:96px minmax(0,1fr) 100px 92px;gap:8px;font-size:13px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line2)}
.showgrp:last-child{border-bottom:none}
.showgrp .tchips{display:flex;gap:4px;flex-wrap:wrap}
.timechip{background:var(--bg);border-radius:6px;padding:2px 7px;font-size:12px;font-weight:600;white-space:nowrap}
.ticketbox{background:var(--tealbg);border-color:var(--teal)}
.ticketbox .bh{color:var(--teal)}
.ticketbox .bh .u{font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:600;font-family:"Golos Text",sans-serif;color:var(--teal);opacity:.85}
.ticketbox p{color:var(--teal);font-size:13px;margin:0}
.evc{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line2)}
.evc:last-child{border-bottom:none}
.evc .ic{width:28px;height:28px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px}
.evc .ic.out{background:var(--accbg);color:var(--acc)}.evc .ic.in{background:var(--tealbg);color:var(--teal)}
.evc .ic.sys{background:var(--bg);color:var(--mut)}.evc .ic.miss{background:var(--redbg);color:var(--red)}.evc .ic.fact{background:var(--grnbg);color:var(--grn)}
.evc .tx{display:flex;flex-direction:column;gap:3px;font-size:13px;min-width:0;flex:1}
.evc .tx .m{color:var(--mut);font-size:12px}
.evc .rec{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--acc);font-weight:600}
.evc .bar{flex:1;height:3px;border-radius:999px;background:var(--line);overflow:hidden;min-width:60px}
.evc .bar span{display:block;height:100%;background:var(--acc)}
.evc .bub{border-radius:0 10px 10px 10px;padding:7px 10px;font-size:12.5px;background:var(--bg);display:inline-block;max-width:100%}
.evc .bub.me{border-radius:10px 0 10px 10px;background:var(--accbg)}
.nexttask{display:flex;gap:10px;align-items:flex-start}
.nexttask .ic{width:32px;height:32px;border-radius:10px;background:var(--accbg);color:var(--acc);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nexttask .tx{display:flex;flex-direction:column;gap:2px}
.nexttask .tx b{font-weight:600}
.nexttask .tx small{color:var(--mut);font-size:12px}
.feedtabs{margin-left:auto;display:flex;gap:2px;background:var(--bg);border-radius:10px;padding:2px}
.feedtabs span{padding:3px 8px;border-radius:6px;font-weight:600;font-size:12px;color:var(--mut);cursor:pointer}
.feedtabs span.on{background:var(--card);color:var(--txt);box-shadow:var(--e1)}
/* .nmbadge — номер N/M мероприятия (не .nm: та занята под «имя» в .tr/.ctcrow, не путать) */
.nmbadge{display:inline-flex;align-items:center;font-family:Manrope,sans-serif;font-weight:800;font-size:13px;padding:3px 9px;border-radius:999px;background:var(--accbg);color:var(--acc);white-space:nowrap;text-decoration:none}
.nmbadge:hover{background:var(--acc);color:var(--acc-ink)}
.nmbadge.lost{background:var(--redbg);color:var(--red)}
.nmbadge.mut{background:var(--bg);color:var(--mut2)}
/* — уменьшенная версия для строки таблицы (страница «Направление в учреждении») — */
.tr .nmbadge{font-size:12px;padding:2px 8px}
@media (max-width:860px){.dealttl{white-space:normal}.showgrp{grid-template-columns:1fr 1fr}.showgrp span:last-child{text-align:left!important}.plantiles{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ── «Карточки» (11.09): поля слева, «Сейчас» и лента в центре — общий стиль карточек сделки и учреждения ── */
.card2{display:grid;grid-template-columns:392px minmax(0,1fr);grid-template-rows:auto 1fr;grid-template-areas:"fields now" "fields feed";gap:0 14px;align-items:start}
.card2 .fields{grid-area:fields}.card2 .now{grid-area:now}.card2 .feedcol{grid-area:feed}
.card2 .pseg{display:none;grid-area:tabs}
.fields{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--e2);overflow:hidden;}
.fh{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px solid var(--line);font-size:12px;color:var(--mut);flex-wrap:wrap}
.fh .lgd{display:inline-flex;align-items:center;gap:5px}
.fh .dotr{width:6px;height:6px;border-radius:50%;background:var(--red);display:inline-block}
.grp2{border-bottom:1px solid var(--line)}.grp2:last-child{border-bottom:none}
.gh{display:flex;align-items:center;gap:8px;padding:9px 16px 6px;font-family:Manrope,sans-serif;font-weight:700;font-size:13px;cursor:pointer;user-select:none}
.gh:hover{background:var(--hover)}
.gh .chev{color:var(--mut2);font-size:12px;width:12px;flex-shrink:0}
.gh .cnt{margin-left:auto;font-family:"Golos Text",sans-serif;font-weight:500;font-size:12px;color:var(--mut);text-align:right}
.gh .cnt.warn{color:var(--yel)}.gh .cnt.ok{color:var(--grn)}
.fr{display:grid;grid-template-columns:138px minmax(0,1fr);gap:6px;padding:5px 16px;align-items:baseline;border-top:1px solid var(--line2)}
.fr.dir{grid-template-columns:44px minmax(0,1fr);align-items:center}
.fr .l{color:var(--mut);font-size:12px;position:relative;line-height:1.35}
.fr .l.req::before{content:"";position:absolute;left:-10px;top:6px;width:6px;height:6px;border-radius:50%;background:var(--red)}
.fr .v{font-weight:600;font-size:12.5px;line-height:1.35;min-width:0;overflow-wrap:anywhere}
.fr .v.ed{border-bottom:1px dashed var(--acc3);cursor:text}.fr .v.ed:hover{background:var(--accbg)}
.fr .v.emp{color:var(--mut2);font-weight:500}.fr .v.emp.ed{border-bottom:1px dashed var(--acc3)}
.fr .v.calc{color:var(--ink3)}
.fr .v .mut{font-weight:400}
.fr .v .amo{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--mut2);border:1px solid var(--line);border-radius:6px;padding:0 4px;margin-left:5px;vertical-align:middle;text-transform:lowercase}
.fr .v .own{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--teal);border:1px solid var(--teal);border-radius:6px;padding:0 4px;margin-left:5px;vertical-align:middle;text-transform:lowercase}
.fr .v .sg{display:inline-flex;gap:2px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:2px;vertical-align:middle;flex-wrap:wrap}
.fr .v .sg span{padding:2px 7px;border-radius:6px;color:var(--mut);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer}
.fr .v .sg span:hover{color:var(--txt)}
.fr .v .sg span.on{background:var(--accbg);color:var(--txt);font-weight:600}
.fr.warn .v{color:var(--yel)}
.fr.hl{background:var(--yelbg);animation:none}
.fr .v .tagline{display:block;font-weight:500;font-size:12px;color:var(--mut);margin-top:2px}
.fr .v .ib{display:inline-flex;width:24px;height:24px;border-radius:6px;border:1px solid var(--line);align-items:center;justify-content:center;font-size:12px;margin-left:4px;vertical-align:middle;background:var(--card);cursor:pointer;color:var(--acc);text-decoration:none}
.fr .v .ib:hover{border-color:var(--acc3);background:var(--accbg)}
.fr .v .btn.mini{vertical-align:middle;margin-left:6px}
.fr .v input,.fr .v select,.fr .v textarea{width:100%;font-size:12.5px;padding:4px 6px}
.fr .v textarea{min-height:56px}
.fr .v .edrow{display:flex;gap:6px;align-items:flex-start}
.fr .v .edrow .btn{flex-shrink:0}
/* «Спектакли» (12.09): подсказка-каталог под полем «Программа» — карточками с афишей, не строгий
   выбор; .hidden (уже есть в общем CSS) скрывает панель, пока нет совпадений */
.pfsug{margin-top:6px;display:flex;flex-direction:column;gap:4px;max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--card);box-shadow:var(--e3);padding:5px}
.pfsugit{display:flex;gap:8px;align-items:center;padding:5px 7px;border-radius:10px;cursor:pointer}
.pfsugit:hover{background:var(--bg)}
.pfsugit img,.pfsugph{width:34px;height:44px;border-radius:6px;object-fit:cover;flex-shrink:0;background:linear-gradient(145deg,var(--accbg),var(--acc3))}
.pfsugtx{display:flex;flex-direction:column;gap:1px;min-width:0}
.pfsugtx b{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfsugtx small{color:var(--mut);font-size:12px}
.pfsugown{font-size:12px;color:var(--mut2);padding:4px 7px 2px}

/* ── «Спектакли» (12.09): каталог программ — карточки с афишами, макет одобрен Яковом
   (Artifact 70aa8f51…) — токены и .pfcard/.pfposter/.pfname/.pftags/.pfpartner/.pfmeta/.pfover
   перенесены из макета без изменений; остальное — довёрстка под реальные функции (описание,
   файлы, счётчик «проведено», архив, вид строками) по правилу «не урезать старый функционал». */
.pfgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.pfcard{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--e2);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}
.pfcard:hover{transform:translateY(-2px);box-shadow:var(--e3);border-color:var(--acc3)}
.pfcard.arch{opacity:.55;filter:grayscale(.35)}
.pfposter{position:relative;aspect-ratio:3/4;display:flex;align-items:flex-end;padding:10px;overflow:hidden;color:#fff}
.pfposter img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--line2)}
.pfspark{position:absolute;width:46px;height:46px;top:10px;right:10px;opacity:.35}
.pft{position:relative;font-family:Manrope,sans-serif;font-weight:800;font-size:13px;line-height:1.2;text-shadow:0 2px 10px rgba(0,0,0,.35);text-wrap:balance}
.pfbody{padding:9px 11px 11px;display:flex;flex-direction:column;gap:5px;flex:1}
.pfname{font-weight:600;font-size:12.5px;line-height:1.3}
.pftags{display:flex;gap:4px;flex-wrap:wrap;align-items:center}
.pfpartner{font-size:12px;font-weight:600;color:var(--acc2);background:var(--accbg);padding:1px 7px;border-radius:6px;white-space:nowrap}
.pfmeta{color:var(--mut);font-size:12px}
.pfdesc{color:var(--mut);font-size:12px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pfdesc.empty{color:var(--mut2);font-style:italic}
.pfextra{display:flex;gap:8px;align-items:center;color:var(--mut2);font-size:12px;border-top:1px solid var(--line2);padding-top:5px;margin-top:auto}
.pfover{align-items:center;justify-content:center;text-align:center;gap:4px;color:var(--mut);padding:18px 10px;font-weight:600;cursor:default}
.pfover:hover{transform:none;box-shadow:var(--e1);border-color:var(--line)}
.pfover small{font-weight:400;font-size:12px}
/* вид «строками» — тот же .pfcard, горизонтальная раскладка (ширина превью фиксирована) */
.pfcard.pfsm{flex-direction:row;align-items:center}
.pfcard.pfsm .pfposter{width:58px;aspect-ratio:1/1;padding:0;flex-shrink:0}
.pfcard.pfsm .pft{display:none}
.pfcard.pfsm .pfbody{flex-direction:row;align-items:center;gap:10px;padding:8px 12px}
.pfcard.pfsm .pfname{flex-shrink:0}
.pfcard.pfsm .pfdesc{-webkit-line-clamp:1;flex:1}
.pfcard.pfsm .pfextra{border-top:none;padding-top:0;margin-top:0;flex-shrink:0}
.pfrows{display:flex;flex-direction:column;gap:8px}
summary.pfarch{cursor:pointer;font-weight:700;font-size:13px;color:var(--ink3);padding:6px 2px;font-family:Manrope,sans-serif}
/* карточка-подробности (диалог): афиша крупнее + галерея файлов со звездой-обложкой */
.pfdcov{position:relative;aspect-ratio:16/6;min-height:90px;border-radius:10px;overflow:hidden;display:flex;align-items:flex-end;padding:14px;color:#fff}
.pfdcov img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--line2)}
.pfthumbs{display:flex;gap:7px;flex-wrap:wrap}
.pfthumb{position:relative;display:inline-block;line-height:0}
.pfthumb img{height:84px;border-radius:10px;border:1px solid var(--line);display:block;object-fit:cover}
.pfthumb.cover img{outline:3px solid var(--org);outline-offset:1px}
.pfthumb .pick{position:absolute;top:3px;right:3px;width:22px;height:22px;border-radius:10px;background:var(--card);box-shadow:var(--e1);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--mut2)}
.pfthumb .pick svg{width:13px;height:13px}
.pfthumb.cover .pick{color:var(--org)}
.pffile{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:10px;padding:3px 8px;font-size:12px;color:var(--acc2);background:var(--bg);max-width:220px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.pffile svg{flex-shrink:0;width:12px;height:12px}
.pffile .x{margin-left:2px;color:var(--mut2);cursor:pointer}
.pffile .x:hover{color:var(--red)}
.pfupload{border:1.5px dashed var(--acc3);border-radius:10px;padding:14px;text-align:center;color:var(--mut);font-size:12px;background:var(--accbg)}
.pfupload input{margin-top:8px}
.pfdocrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pfdocrow .ic{width:34px;height:34px;border-radius:10px;background:var(--accbg);color:var(--acc);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pfdocrow .ic svg{width:16px;height:16px}
.pfdocrow .nm{flex:1;min-width:200px}
@media (max-width:1100px){.pfgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:860px){
  .pfgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pfcard.pfsm .pfbody{flex-wrap:wrap}
  .pfcard.pfsm .pfdesc{display:none}
}

.grp2 .add{padding:4px 16px 9px;font-size:12px;color:var(--acc);font-weight:600;cursor:pointer}
.grp2 .add:hover{color:var(--acc2)}
.grp2 .inl{padding:6px 16px 10px;display:flex;flex-direction:column;gap:6px}
.grp2.closed .fr,.grp2.closed .add,.grp2.closed .inl{display:none}
.now{background:var(--card);border:1px solid var(--acc3);border-left:4px solid var(--acc);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--e2);}
.now .t{display:flex;align-items:center;gap:10px;font-family:Manrope,sans-serif;font-weight:800;font-size:13.5px;flex-wrap:wrap}
.now .t .k{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--acc);background:var(--accbg);padding:2px 7px;border-radius:999px;font-family:"Golos Text",sans-serif;font-weight:700}
.now .t .more{margin-left:auto;font-family:"Golos Text",sans-serif;font-weight:500;font-size:12px;color:var(--mut)}
.now .task{display:flex;gap:10px;align-items:flex-start}
.now .task .ic{width:34px;height:34px;border-radius:10px;background:var(--accbg);color:var(--acc);display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.now .task .tt{font-weight:700;font-size:13.5px}
.now .task .tm{color:var(--mut);font-size:12px;margin-top:2px}
.now .acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.now .after{color:var(--mut);font-size:12px}
.now .lines{display:flex;flex-direction:column;gap:6px}
.now input[type=text],.now input[type=date],.now textarea{max-width:420px}
.feedcol{display:flex;flex-direction:column;min-width:0}
.ctx{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:12px}
.ctx .ct{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 12px;display:flex;flex-direction:column;gap:5px;min-width:0;font-size:12.5px;}
.ctx .ct .ch{font-family:Manrope,sans-serif;font-weight:700;font-size:12px;color:var(--mut);display:flex;align-items:center;gap:6px}
.ctx .ct .ch a{margin-left:auto;font-family:"Golos Text",sans-serif;font-weight:600;font-size:12px}
.ctx .ct .cr{display:flex;align-items:center;gap:6px;flex-wrap:wrap;line-height:1.35}
.ctx .ct .cr .mut{font-size:12px}
/* задача 16 (21.09, «вернуть табличку при передаче/сопровождение/факт»): .wide растягивает
   плитку на всю ширину сетки .ctx — под таблицу сравнения нужно больше места, чем 200px. */
.ctx .ct.wide{grid-column:1/-1}
.cmp-t{width:100%;border-collapse:collapse;margin-top:2px;font-size:12.5px}
.cmp-t th,.cmp-t td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--line2)}
.cmp-t th{font-weight:600;color:var(--mut);font-size:12px}
.cmp-t th:first-child,.cmp-t td:first-child{padding-left:0;color:var(--mut)}
.cmp-t tr:last-child td{border-bottom:none}
.cmp-t td.mut2{color:var(--mut2)}
@media (max-width:640px){.cmp-t{display:block;overflow-x:auto;white-space:nowrap}}
.fhead{display:flex;align-items:center;gap:10px;padding:14px 2px 6px;flex-wrap:wrap}
.fhead .ttl{font-family:Manrope,sans-serif;font-weight:800;font-size:14px}
.fhead .grow{flex:1}
.fhead .seg span{padding:4px 9px;font-size:12px}
.fhead input.fsearch{max-width:180px;padding:5px 9px;font-size:12px}
.flist{display:flex;flex-direction:column;padding:0 2px}
.fi{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line2);}
.fi:last-child{border-bottom:none}
.fi .ic{width:28px;height:28px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--accbg);color:var(--acc);font-size:13px}
.fi .ic.call{background:var(--grnbg);color:var(--grn)}.fi .ic.sys{background:var(--bg);color:var(--mut)}.fi .ic.max{background:var(--tealbg);color:var(--teal)}
.fi .ic.warn{background:var(--yelbg);color:var(--yel)}.fi .ic.miss{background:var(--redbg);color:var(--red)}.fi .ic.fact{background:var(--grnbg);color:var(--grn)}
.fi .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fi .tx .t{font-size:13px;line-height:1.4;overflow-wrap:anywhere;white-space:pre-wrap}
.fi .tx .m{color:var(--mut);font-size:12px}
.fi .tx .bub{background:var(--card);border:1px solid var(--line);border-radius:0 10px 10px 10px;padding:8px 10px;font-size:13px;line-height:1.4;display:inline-block;max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere}
.fi .tx .bub.me{background:var(--accbg);border-color:var(--acc3);border-radius:10px 0 10px 10px}
.fi .tx .t a{font-weight:600}
.daysep{text-align:center;color:var(--mut2);font-size:11px;padding:8px 0 2px;letter-spacing:.04em;text-transform:uppercase}
.composer{position:sticky;bottom:0;z-index:4;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 72px 10px 12px;display:flex;flex-direction:column;gap:8px;margin-top:10px;box-shadow:0 -4px 16px var(--shadow)}   /* справа место под колокольчик уведомлений */
.dealsub{white-space:normal;min-width:0}
.composer .tabs{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.composer .tabs .tb{padding:4px 10px;border-radius:999px;font-size:12px;color:var(--mut);border:1px solid var(--line);background:var(--card);cursor:pointer;user-select:none}
.composer .tabs .tb:hover{border-color:var(--acc3)}
.composer .tabs .tb.on{background:var(--txt);color:var(--bg);border-color:var(--txt)}
.composer .tabs .tb.soon{color:var(--mut2);border-style:dashed;cursor:default}
.composer .in{display:flex;gap:8px;align-items:flex-end}
.composer .in textarea{flex:1;min-height:44px;resize:vertical}
.composer .extra{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.composer .extra input,.composer .extra select{max-width:200px}
.composer .hint2{color:var(--mut2);font-size:12px}
.need{display:flex;align-items:center;gap:10px;background:var(--yelbg);color:var(--yel);padding:8px 14px;font-size:12.5px;border-radius:10px;flex-wrap:wrap;}
.need b{font-weight:700}.need .lnk{color:var(--yel);text-decoration:underline dotted;cursor:pointer;font-weight:600}
.need .grow{flex:1}
.need input{max-width:220px;padding:4px 8px;font-size:12px}
.stagebar.h .sstep.cur .d{font-size:12px}
@media (max-width:1100px){.card2{grid-template-columns:340px minmax(0,1fr)}.fr{grid-template-columns:120px minmax(0,1fr)}}
@media (max-width:860px){
  .card2{grid-template-columns:1fr;grid-template-rows:auto auto auto 1fr;grid-template-areas:"now" "tabs" "fields" "feed";gap:10px 0}
  .card2 .pseg{display:flex;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:3px}
  .card2 .pseg span{flex:1;text-align:center;padding:9px;border-radius:10px;font-weight:600;font-size:13px;color:var(--mut);cursor:pointer;min-height:44px;display:flex;align-items:center;justify-content:center}
  .card2 .pseg span.on{background:var(--accbg);color:var(--txt)}
  .card2[data-tab=feed] .fields{display:none}.card2[data-tab=fields] .feedcol{display:none}
  .fr{grid-template-columns:112px minmax(0,1fr);padding:7px 14px}.fr .l.req::before{left:-9px}
  .gh{padding:10px 14px 6px}.fh{padding:8px 14px}
  .ctx{grid-template-columns:1fr 1fr}
  .composer{padding:8px 64px 8px 10px;border-radius:10px}
  .now{padding:10px 12px}
}
.pstage{display:none;flex-direction:column;gap:5px;font-size:12px;color:var(--mut)}
.pstage b{color:var(--txt)}
.pbar{height:5px;border-radius:99px;background:var(--line2);overflow:hidden}.pbar i{display:block;height:100%;background:var(--acc);border-radius:99px}
@media (max-width:860px){
  .dealtop{position:static;padding:10px 12px 10px}.stagebar.h{display:none}.pstage{display:flex}
  .hintbar{flex-wrap:wrap}.hintbar .ha{width:100%;justify-content:flex-end}
}
@media (max-width:520px){.ctx{grid-template-columns:1fr}}

/* ── «Ссылка для ЛПР» (11.09): «Обратная связь школ» — таблица оценок и заявок ─────────── */
.ostable{overflow-x:auto}
.ostable .th,.ostable .tr{grid-template-columns:76px 1.4fr 1fr 80px 1.1fr 1.1fr 110px 1.3fr 1fr;min-width:1080px}
.ostable .tr{align-items:start}.ostable .tr>span{min-width:0;overflow-wrap:anywhere}
.ostable .lowrow{background:var(--redbg)}
.reqtable .th,.reqtable .tr{grid-template-columns:1fr 150px 210px}
@media (max-width:860px){.ostable .th,.reqtable .th{display:none}.ostable .tr,.reqtable .tr{min-width:0;grid-template-columns:1fr}}

/* ── Календарь — вид «Месяц» (kalmes, 12.09.2026): сетка недель + карточка показа «подробнее» ──
   Макет одобрен Яковом 12.09 (сверено со скрином действующего календаря). Финансы показа видно
   всем (не только руководству) — ответ Якова. */
.calwrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;align-items:start;margin-top:10px}
/* Месяц: Сб/Вс уже будних (12.09, Яков: «выходные поменьше, но чтобы мероприятия там нормально
   отображались») — .6fr, а чип в выходной ячейке переносится на 2–3 строки (время + название),
   вместо обрезания до «11:00 …». */
.mwd-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) repeat(2,minmax(0,.6fr));gap:1px;margin-bottom:1px}
.mwd{padding:3px 8px;font-size:11px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.04em}
.mgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) repeat(2,minmax(0,.6fr));grid-auto-rows:1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.mcell{background:var(--card);min-height:96px;padding:5px 6px;display:flex;flex-direction:column;gap:3px;position:relative;box-sizing:border-box;cursor:pointer}
.mcell.weekend{background:var(--hover)}
.mcell.out{background:var(--bg)}
.mcell.out .mnum{color:var(--mut2)}
.mcell.today{box-shadow:inset 0 0 0 2px var(--acc)}
.mcell.sel{background:var(--accbg);box-shadow:inset 0 0 0 2px var(--acc3)}
.mnum{display:flex;align-items:center;gap:5px;font-family:Manrope,sans-serif;font-weight:700;font-size:12px}
.mcell.today .mnum{color:var(--acc)}
.mdot{width:7px;height:7px;border-radius:50%;background:var(--yel);margin-left:auto;flex-shrink:0}
.mchips{display:flex;flex-direction:column;gap:2px;overflow:hidden}
.mchip{font-size:12px;font-weight:600;padding:1.5px 5px;border-radius:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5;cursor:pointer}
.mchip.done{opacity:.5}
.mcell.weekend .mchip{white-space:normal;line-height:1.35;padding:2px 5px}
.mcell.weekend .mchip-t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-weight:500}  /* название до 2 строк: «СОШ № 1…» в одну строку путало бы школу */
.mchip.nsh{background:var(--grnbg);color:var(--grn)}.mchip.ssh{background:var(--grn2bg);color:var(--grn2)}
.mchip.ds{background:var(--blubg);color:var(--blu)}.mchip.lg{background:var(--orgbg);color:var(--org)}
.mchip.meet{background:var(--accbg);color:var(--acc2)}
.mmore{font-size:12px;color:var(--mut);font-weight:600;padding:0 5px}
.dlist{display:flex;flex-direction:column;gap:2px}
.dl-item{display:flex;gap:8px;align-items:flex-start;padding:7px 2px;border-bottom:1px solid var(--line2);font-size:12.5px;cursor:pointer}
.dl-item:last-child{border-bottom:none}
.dl-t{font-weight:700;font-size:12px;color:var(--txt);min-width:36px;flex-shrink:0;padding-top:1px;white-space:nowrap}
.dl-b{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.dl-b .nm{font-weight:600;font-size:12.5px;display:flex;align-items:center;gap:6px}
.dl-sub{color:var(--mut);font-size:12px}
.backln{color:var(--mut);font-size:12px;font-weight:500;display:flex;align-items:center;gap:4px;cursor:pointer;margin-bottom:2px}
.backln:hover{color:var(--txt)}
.nwait{color:var(--yel);font-weight:700}
.pill.stage{background:var(--accbg);color:var(--acc2)}
/* soprov3 (8б): отметки сопровождения в сетке календаря ○ / ✓ / ! */
.escm{display:inline-block;font-weight:800;font-size:12px;line-height:1;margin-left:3px;vertical-align:middle}
.escm.ok{color:var(--grn)}.escm.wait{color:var(--mut2)}.escm.miss{color:var(--red)}
.vcard.over{border-color:var(--red)}
.escwrap{margin-bottom:8px}
/* kalendar_fakt (24.09): общая форма факта (была inline в crm_kalendar.html) + отметка «проведено» в сетке */
.escm.done{color:var(--grn)}
.ffg{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
.fcalc{background:var(--accbg);border-radius:10px;padding:8px 10px;font-size:12.5px;line-height:1.5}
.fcalc b{font-weight:800}.fcalc .man{color:var(--org);font-weight:700}
.fchk{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}.fchk input{width:16px;height:16px;margin:0}
.dlg .fsub{font-size:12.5px;color:var(--mut);margin-top:-6px}
@media (max-width:560px){.ffg{grid-template-columns:1fr 1fr;gap:6px 8px}}
.pill.meet{background:var(--accbg);color:var(--acc2)}
.mkpi{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.mkpi .t{background:var(--bg);border-radius:10px;padding:6px 9px;display:flex;flex-direction:column;gap:1px}
.mkpi .t .tl{font-size:12px;color:var(--mut)}
.mkpi .t .tv{font-family:Manrope,sans-serif;font-weight:800;font-size:14.5px}
.lprline{display:flex;align-items:center;gap:6px;font-size:12px;padding:5px 8px;border-radius:10px;font-weight:600}
.lprline.yel{background:var(--yelbg);color:var(--yel)}
.lprline.grn{background:var(--grnbg);color:var(--grn)}
.lprline.red{background:var(--redbg);color:var(--red)}
.lprline a{margin-left:auto;font-weight:700;text-decoration:underline;font-size:12px}
.finblk{background:var(--accbg);border:1px dashed var(--acc3);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:1px}
.finblk .fh{display:flex;align-items:center;gap:6px;font-family:Manrope,sans-serif;font-weight:700;font-size:11px;color:var(--acc2);text-transform:uppercase;letter-spacing:.03em;margin-bottom:3px;padding:0;border-bottom:none}
.finblk .frow{display:flex;justify-content:space-between;gap:8px;font-size:12px;padding:1.5px 0;border-bottom:none}
.finblk .frow span{color:var(--mut)}
.finblk .frow b{font-weight:700;text-align:right}
.finblk .frow.tot{border-top:1px solid var(--acc3);margin-top:3px;padding-top:4px}
.finblk .fnote{color:var(--mut2);font-size:12px;margin-top:4px;line-height:1.4}
/* «не вижу ни заметок» (Яков, 12.09) — компактная лента в панели показа/встречи календаря;
   .mfeed .fh скоуплен (как .finblk .fh выше), не трогает уже занятый бывший .fh (урок 12.09). */
.mfeed{display:flex;flex-direction:column;gap:6px;margin-top:2px}
.mfeed .fh{font-family:Manrope,sans-serif;font-weight:700;font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.03em;padding:0;border-bottom:none;margin:2px 0}
.mfeed .mnote{background:var(--bg);border-radius:10px;padding:7px 9px;font-size:12.5px;line-height:1.4;overflow-wrap:anywhere}
.mfeed .mnote .m{color:var(--mut);font-size:12px;margin-top:3px}
@media (max-width:860px){
  .calwrap{grid-template-columns:minmax(0,1fr)}  /* не 1fr — см. комментарий у .calgrid (скролл вбок) */
  .calwrap>div{min-width:0}
  .mcell{min-height:64px;padding:4px 5px}
  .mchip{font-size:12px}
  .mwd{font-size:12px;padding:2px 4px}
  /* «Месяц» — третья вкладка в #modeSeg — на узком экране сдвигала «›» на свою строку */
  #modeSeg span{padding:5px 8px;font-size:12px}
  /* название показа/встречи в чипе месяца не влезает — обрезалось до «11:…», похоже на баг;
     оставляем время, полная карточка — по тапу */
  .mchip-t{display:none}
}

/* «Календарь v2» (15.09.2026, по ответу Якова): подсветка выбранной карточки, значки плотности
   (факт не внесён / бригада не собрана), заметка дня и «день для ВК» в шапке/списке,
   поиск+фильтр по направлению в .fbar. Без новых цветов — те же токены статуса, что и везде. */
.vcard.selected,.dl-item.selected{box-shadow:0 0 0 2px var(--acc);border-color:var(--acc)}
.mchip.selected{box-shadow:0 0 0 2px var(--acc) inset}
.vstatus{display:inline-flex;align-items:center;gap:3px;margin-left:auto}
.sico{width:13px;height:13px;vertical-align:-2px}
.emeta.warn{color:var(--red)}
.emeta.van{color:var(--yel)}
.ibtn2{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;border-radius:6px;background:transparent;color:var(--mut2);cursor:pointer;padding:0;flex:none}
.ibtn2:hover{background:var(--hover);color:var(--acc)}
/* .has — «у дня уже есть заметка»; --mut/--acc сами по себе слишком близки по тону (проверено
   на скрине 15.09) — различаем не только цветом иконки, но и заливкой-«пилюлей», как везде в
   дизайне отмечается активное состояние (ср. .chip.on) */
.ibtn2.has{background:var(--accbg);color:var(--acc2)}
.chip.dir{padding:5px 9px;font-size:12px}
.fsearch{border:1px solid var(--line);border-radius:10px;padding:7px 10px;background:var(--card);color:var(--txt);font-size:12.5px;min-width:0;max-width:220px}
#fJump{border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:var(--card);color:var(--txt);font-size:12px;font-family:inherit}
@media (max-width:860px){
  /* поиск — первым элементом .fbar в разметке и на телефоне (без order — на скрине 15.09
     order:1 без пары order:-1 у соседей увело его в конец панели, а не в начало); свой
     max-width:220px (десктоп) тоже снимаем — иначе flex-basis:100% на него не действует */
  .fsearch{flex:1 1 100%;max-width:none}
  .chip.dir{padding:4px 7px;font-size:12px}
}

/* «Календарь v2, доработка» (15.09.2026 вечером, вторая ОС Якова после живого теста):
   1) пометка дня (цвет+подпись) — пилюля в шапке недели/дня, цветная полоса на плитке месяца;
   2) комментарии дня стали историей (диалог со списком), а не одной перезаписываемой заметкой;
   3) сам календарь крупнее — сетка месяца тянется по высоте экрана, шрифт чуть больше. */
/* «Календарь v2, доработка» — третий заход (15.09, ОС Якова по присланным скринам ещё до деплоя):
   «в недельном виде заметки по датам выглядит некрасиво, пусть будет на подобии календарного вида,
   чтобы немелкий квадратик цветной был, а все число выделено и пометка сразу с надписью» + «иконки
   выглядят не очень» + «в каждую дату можно провалиться, как в текущем календаре». Первая версия
   (компактный безымянный квадратик-кнопка) не прижилась — здесь пометка и день недели/число
   разведены по разным строкам (.chd-top / .dayinfo), у каждой — вся ширина колонки, конкурировать
   за место больше не с чем. .dayinfo — строка «инфо дня»: с пометкой — цветная плашка на всю
   ширину с текстом подписи и белыми иконками комментариев/ВК в правом углу (та же идея, что .dmark
   в месяце, + инструменты внутри той же плашки); без пометки — обычная строка с той же тройкой
   инструментов (пометить/комментарии/ВК), просто без фона.*/
.dayinfo{display:flex;align-items:center;gap:3px;min-height:24px;border-radius:6px}
.dayinfo.marked{padding:2px 3px 2px 7px;color:#fff;cursor:pointer}
.dayinfo .dilabel{flex:1;min-width:0;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dayinfo .dilabel .ico{width:12px;height:12px;vertical-align:-2px}
.dayinfo .ditools{display:inline-flex;align-items:center;gap:1px;flex:none;margin-left:auto}
.dayinfo .ibtn2{width:22px;height:22px}
.dayinfo.marked .ibtn2{color:#fff}
.dayinfo.marked .ibtn2:hover{background:rgba(255,255,255,.25);color:#fff}
.dayinfo.marked .ibtn2.has{background:rgba(255,255,255,.32);color:#fff}
.ibtn2 .cnt{font-size:11px;font-weight:800;margin-left:1px}
.markswatches{display:flex;gap:8px;margin:4px 0 10px}
.markswatches .sw{width:28px;height:28px;border-radius:50%;border:none;cursor:pointer;padding:0}
.markswatches .sw.on{box-shadow:0 0 0 3px var(--txt)}
.dmark{margin:1px 0 2px;padding:1px 5px;border-radius:6px;color:#fff;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;line-height:1.5}
.dmark .ico{width:11px;height:11px;vertical-align:-1px}
.dcmt{display:inline-flex;align-items:center;gap:2px;margin-left:auto;color:var(--mut);font-size:12px;font-weight:700;cursor:pointer}
.dcmt .ico{width:12px;height:12px}
.dcmt:hover{color:var(--acc)}
.clist{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.cmrow{display:flex;gap:6px;align-items:flex-start;background:var(--bg);border-radius:10px;padding:6px 8px}
.cmtxt{flex:1;min-width:0;font-size:12.5px;line-height:1.4;overflow-wrap:anywhere}
.cmtxt .m{color:var(--mut);font-size:12px;margin-top:2px}
.cmdel{flex:none;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;border-radius:6px;background:transparent;color:var(--mut2);cursor:pointer;padding:0}
.cmdel:hover{background:var(--redbg);color:var(--red)}
/* «сам календарь очень мелкий» (Яков, 15.09) — сетка месяца тянется по высоте окна вместо
   фиксированной высоты; .vcard/.vtop/.vsub — общие классы с Воронкой/Сопровождением/Передачей,
   поэтому крупнее их шрифт только ВНУТРИ календаря (через .calcol), не везде */
.calcol{max-height:calc(100vh - 212px)}
.calempty{font-size:12.5px}
.calcol .vcard .catime{font-size:12.5px}
.calcol .vtop{font-size:13.5px}
.calcol .vsub{font-size:12.5px}
.mgrid{height:calc(100vh - 268px);min-height:660px}
.mcell{min-height:110px;padding:6px 7px}
.mnum{font-size:13.5px}
.mwd{font-size:12.5px;padding:4px 8px}
.mchip{font-size:12px;padding:2px 6px}
.dlist{gap:3px}
.dl-item{font-size:13px;padding:8px 2px}
.dl-t{font-size:12px;min-width:40px}
.dl-b .nm{font-size:13px}
.dl-sub{font-size:12px}
@media (max-width:860px){
  .mgrid{height:auto;min-height:0}  /* десктопный calc(100vh - …) телефону не подходит — сетка обратно по контенту */
  .mcell{min-height:74px}
  .mchip{font-size:12px}
  /* .dayinfo/.dilabel уже truncate по контейнеру (flex:1;min-width:0;text-overflow:ellipsis) —
     отдельное мобильное правило тут больше не нужно (раньше было под .markpill, класс удалён) */
}

/* ===== Производство v2 (crm06b, 12.09.2026): бригады дня, неделя, люди и машины ===== */
.seg a.prd-link{padding:5px 12px;border-radius:6px;color:var(--mut);font-size:12.5px;font-weight:500;white-space:nowrap;text-decoration:none}
.seg a.prd-link:hover{color:var(--acc)}
.prd-msub{display:none;color:var(--mut);font-size:13px;margin-bottom:10px}
.prd-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start}
.prd-main{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:14px;min-width:0}
.prd-aside{display:flex;flex-direction:column;gap:14px;min-width:0}
.prd-brig{gap:0}
.prd-brig .bh{margin-bottom:8px}
.prd-show{display:grid;grid-template-columns:52px minmax(0,1fr);gap:8px;align-items:start;padding:6px 0}
.prd-show .prd-t{font-family:Manrope,sans-serif;font-weight:800;font-size:13.5px;padding-top:9px;font-variant-numeric:tabular-nums}
.prd-show .prd-b{background:var(--grnbg);border:1px solid rgba(30,110,70,.32);border-radius:10px;padding:9px 12px;font-size:12.5px;line-height:1.4;min-width:0}
.prd-show .prd-b b{font-size:13.5px;display:block}
.prd-show .prd-b .mut{font-size:12px}
.prd-acts{display:flex;gap:12px;margin-top:6px}
.prd-acts .act{color:var(--acc);font-weight:600;font-size:12px;cursor:pointer}
.prd-side.warn{border-color:rgba(194,68,68,.35)}
.prd-un{border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:12.5px;display:flex;flex-direction:column;gap:6px;line-height:1.4}
.prd-un b{font-size:13px}
.prd-un .btn{align-self:stretch;justify-content:center;margin-top:2px}
.prd-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-left:4px;vertical-align:middle}
.chip.prd-today{box-shadow:inset 0 0 0 1px var(--acc)}
/* неделя */
.prd-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.prd-wd{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:10px;min-width:0;display:flex;flex-direction:column;gap:6px;cursor:pointer;}
.prd-wd:hover{border-color:var(--acc)}
.prd-wd.today{border-color:var(--acc);box-shadow:inset 0 0 0 1px var(--acc)}
.prd-wh{font-family:Manrope,sans-serif;font-weight:800;font-size:13px;display:flex;gap:6px;align-items:baseline}
.prd-wb{background:var(--bg);border:1px solid var(--line2);border-radius:10px;padding:6px 8px;font-size:12px;line-height:1.35;min-width:0}
.prd-wb.un{background:var(--redbg);border-color:rgba(194,68,68,.35)}
.prd-wb b{font-size:12px}
.prd-wl{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.prd-wb .prd-warn{font-size:12px}
/* люди и машины */
.prd-resgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.prd-res{display:flex;flex-direction:column}
.prd-r{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 0;border-top:1px solid var(--line2);font-size:13px;min-width:0}
.prd-r:first-child{border-top:none}
.prd-r>b{font-weight:600}
/* диалог сборки */
.dlg.prd-dlg{max-width:820px}
.prd-dhead{font-size:13px;line-height:1.45;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.prd-dhead b{font-family:Manrope,sans-serif;font-weight:800;font-size:14px}
.prd-dcols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.prd-dcols>div{display:flex;flex-direction:column;gap:6px;min-width:0}
.prd-h{font-family:Manrope,sans-serif;font-weight:700;font-size:12.5px;color:var(--mut);margin-top:6px;text-transform:uppercase;letter-spacing:.03em}
.prd-h:first-child{margin-top:0}
.prd-role{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px;align-items:center;font-size:13px}
.prd-role select{width:100%}
.prd-p{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:10px;font-size:13px;cursor:pointer;min-height:44px;background:var(--card)}
.prd-p input[type=checkbox],.prd-p input[type=radio]{width:18px;height:18px;margin:0;flex:none;accent-color:var(--acc)}
.prd-p .av{width:24px;height:24px;border-radius:50%;background:var(--accbg);color:var(--acc);font-weight:800;font-size:12px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.prd-p b{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prd-p .tag{margin-left:auto}
.prd-p.free{border-color:rgba(30,110,70,.32)}
.prd-p.after,.prd-p.until{border-color:rgba(168,121,8,.38)}
.prd-p.busy,.prd-p.na{opacity:.6;cursor:not-allowed;background:var(--bg)}
.prd-p:has(input:checked){border-color:var(--acc);background:var(--accbg)}
@media (max-width:1100px){.prd-grid{grid-template-columns:minmax(0,1fr)}.prd-week{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:860px){
  .prd-main{grid-template-columns:minmax(0,1fr)}
  .prd-show{grid-template-columns:44px minmax(0,1fr)}
  .prd-week{display:flex;overflow-x:auto;padding-bottom:8px;-webkit-overflow-scrolling:touch}
  .prd-week .prd-wd{flex:0 0 78vw;min-width:78vw}
  .prd-resgrid{grid-template-columns:minmax(0,1fr)}
  .dlg.prd-dlg{max-width:none}
  .prd-dcols{grid-template-columns:minmax(0,1fr)}
  .prd-role{grid-template-columns:minmax(0,1fr)}
  #modeSeg{flex-wrap:wrap;max-width:100%}
  #prdWeek,#prdPoints{flex-wrap:nowrap;overflow-x:auto;max-width:100%;padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  #prdWeek .chip,#prdPoints .chip{flex:none}
  .prd-msub{display:block}
  .prd-p{flex-wrap:wrap}
  .prd-p b{flex:1 1 30%;white-space:normal;overflow:visible}
  .prd-p .tag{white-space:normal;max-width:100%}
  #modeSeg span,#modeSeg a{padding:5px 7px;font-size:12px}
}
.prd-dlg .dfoot{flex-wrap:wrap;gap:8px}
.prd-dlg .dfoot>.mut{flex-basis:100%;margin-right:0!important}
[hidden]{display:none!important}
/* fix_audit1809 (18.09): три экрана с жёсткой шириной колонок ломались на телефоне (Встречи,
   Финучёт → Сделки, Настройки → Деньги → Менеджеры) — общие классы вместо inline-сеток */
.sidegrid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:12px;align-items:start}
.sidegrid.w300{grid-template-columns:minmax(0,1fr) 300px}
.sidegrid.mt{margin-top:10px}
.tiles6{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.drow{display:grid;grid-template-columns:56px minmax(0,1fr) 92px 90px 54px 118px 122px;gap:10px;align-items:center;padding:7px 12px;border-bottom:1px solid var(--line2)}
.drow.d3{grid-template-columns:56px minmax(0,1fr) auto}
/* finuchet_sdelki2009 (20.09, Яков «дата блок, следующая дата следующий блок» + «нужен факт»
   вместо «впереди» для просроченных + доля учреждения рядом с «наша») */
.day{border:1px solid var(--line);border-radius:14px;overflow:hidden}
.day+.day{margin-top:10px}
.dh{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:9px 12px;background:var(--bg);border-bottom:1px solid var(--line)}
.dh .dd{font-family:Manrope,sans-serif;font-weight:700;font-size:13px}
.dh .dow{font-weight:600;font-size:12px}
.dh .cnt{margin-left:auto;font-weight:600;font-size:12px}
.devents .drow{border-radius:0}
.devents .drow:last-child{border-bottom:none}
.warnf{display:inline-flex;align-items:center;gap:4px;color:var(--red);font-weight:700;font-size:12px;white-space:nowrap}
.warnf svg{flex-shrink:0}
.warnf.sm{background:var(--redbg);padding:3px 9px;border-radius:999px}
/* .moneyc — своя стопка строк (вал/наша/учреждению), без наследуемого от .el
   nowrap+ellipsis: при узкой колонке это обрезало текст СЛЕВА (правое выравнивание +
   overflow:hidden), например «наша 23 200 ₽» превращалось в «ша 23 200 ₽» */
.moneyc{display:flex;flex-direction:column;align-items:flex-end;gap:0;text-align:right;overflow:visible!important;white-space:normal!important}
.moneyc b,.moneyc small{overflow:visible;text-overflow:clip;white-space:nowrap}
.moneyc b{font-size:13.5px}
.moneyc small{color:var(--mut);font-size:12px;line-height:1.35}
.moneyc small.mut2{color:var(--mut2)}
@media (max-width:1100px){.tiles6{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:860px){
  .sidegrid,.sidegrid.w300{grid-template-columns:minmax(0,1fr)}
  .sidegrid>*{min-width:0}
  .seg{max-width:100%;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.seg::-webkit-scrollbar{display:none}
  .tiles6{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .drow,.drow.d3{display:flex;flex-wrap:wrap;gap:3px 10px;padding:9px 12px;align-items:baseline}
  .drow>.el:first-child{flex:0 0 auto;font-size:12px}
  .drow>b.el{flex:1 1 55%;min-width:0;white-space:normal}
  .drow>.tag,.drow>.warnf{margin-left:auto}
  .drow>.el.mut+.el,.drow>.el.mut+.el+.el{font-size:12.5px}
  .drow>b[style*="text-align:right"],.drow>span[style*="text-align:right"]{text-align:left!important}
  .drow>.sub{flex-basis:100%}
  .drow>.moneyc{flex:1 1 55%;align-items:flex-start;text-align:left}
  .dh{gap:6px 9px}
  .dh .cnt{margin-left:0;flex-basis:100%}
  .prd-r .prd-acts{flex-basis:100%;margin-left:0!important;margin-top:2px}
  .escsearch{width:100%;margin:0 0 6px}
}
.escsearch{margin:4px 12px 6px;width:calc(100% - 24px)}
.mcgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.mcgrid input,.mcgrid select{width:100%;min-width:0;box-sizing:border-box}
/* stroke-иконки вместо эмодзи (CRM.ico) */
.ico{width:16px;height:16px;vertical-align:-3px;flex:none}
.btn .ico,.chip .ico,.menu .ico{margin-right:4px}
/* crm_amo_2col (18.09): две колонки CRM · amo в карточках сделки и учреждения */
.card2:has(.fields.twocol){grid-template-columns:470px minmax(0,1fr)}
@media (max-width:1100px){.card2:has(.fields.twocol){grid-template-columns:400px minmax(0,1fr)}}
.fields.twocol .fr{grid-template-columns:112px minmax(0,1.5fr) minmax(0,1fr)}
/* ploshchadki (19.09): площадка в карточке сделки (подбор), сборный показ в календаре */
.stdot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none;vertical-align:0}.stdot.g{background:var(--grn)}.stdot.u{background:#C9B57A}.stdot.r{background:var(--red)}
.pickinfo{display:flex;gap:6px;flex-wrap:wrap}.pickinfo .pl{font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--bg);color:var(--ink3);border:1px solid var(--line)}
.vplist{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto}
.pickrow{border:1px solid var(--line);border-radius:14px;overflow:hidden}.pickrow.dim{opacity:.6}
.pk-t{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:9px 12px;font-size:13.5px;background:var(--bg)}.pk-t b{font-family:Manrope,sans-serif;font-weight:800}
.pk-t .cap{margin-left:auto;font-size:12px;font-weight:700;color:var(--ink3);background:var(--card);padding:2px 8px;border-radius:999px;white-space:nowrap}
.pk-g{display:flex;align-items:center;gap:10px;padding:7px 12px;border-top:1px solid var(--line2);font-size:13px}.pk-g .nb-ic{width:26px;height:26px;border-radius:10px;background:var(--bg);color:var(--acc);display:inline-flex;align-items:center;justify-content:center;flex:none}.pk-g .nb-tx{flex:1;min-width:0;display:flex;flex-direction:column}.pk-g .nb-tx b{font-weight:600}.pk-g .nb-tx small{font-size:12px;color:var(--mut)}
.pk-f{display:flex;align-items:center;gap:8px;padding:6px 12px 8px;border-top:1px solid var(--line2);font-size:12.5px}
.pk-new{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:6px 12px 10px;background:var(--accbg)}.pk-new input{border:1px solid var(--line);border-radius:10px;padding:6px 8px;font:13px "Golos Text",sans-serif;background:var(--card);color:var(--txt)}
.mchip.ven{background:var(--grn2bg,var(--tealbg));color:var(--grn2,var(--teal));font-weight:600}.mchip .xn{font-weight:800;opacity:.85;margin-left:1px}
.vcard.ven{border-color:var(--grn2,var(--teal))}.vcard.ven .pill{background:var(--grn2bg,var(--tealbg));color:var(--grn2,var(--teal))}
.venkv{background:var(--grn2bg,var(--tealbg));border-radius:10px;padding:4px 10px;margin:4px 0}.venkv .kv{border-color:transparent}.venkv a{color:var(--txt)}
@media (max-width:700px){.pk-g{flex-wrap:wrap}.pk-g .nb-tx{flex-basis:calc(100% - 36px)}}
/* finuchet4 (19.09): ожидаемый водопад — три колонки */
.expgrid{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-top:6px}
.expcol{background:var(--bg);border-radius:10px;padding:8px 12px}.exph{font-weight:700;font-size:12.5px;margin-bottom:4px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.expcol .kv{padding:3px 0;font-size:12.5px}.expcol .kv b{text-align:right;white-space:nowrap}
/* kartochki_v2 (19.09): плашка «где мы», «Что нужно сейчас», кнопки действий, «Дата и показы», типы задач */
.kindpill{font-family:Manrope,sans-serif;font-weight:800;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:5px 9px;border-radius:10px;white-space:nowrap;align-self:center}
.kindpill.deal{background:var(--accbg);color:var(--acc2)}.kindpill.inst{background:var(--tealbg);color:var(--teal)}
.dealttl .instlink{color:var(--acc);font-weight:700}
.card2 .now.v2{background:none;border:0;padding:0;box-shadow:none;display:flex;flex-direction:column;gap:10px;animation:none}
.needbox{background:var(--card);border:1px solid var(--acc3);border-radius:14px;box-shadow:var(--e2);overflow:hidden;}
.needbox.dates,.needbox.deals{border-color:var(--line)}
.nb-h{padding:10px 14px 7px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:700;font-size:14px}.nb-h .u{font-size:12px;color:var(--mut2);font-weight:500}.nb-h .act{margin-left:auto;font-size:12px;color:var(--acc);font-weight:600;cursor:pointer;text-decoration:none}
.nb-h .n{display:inline-flex;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--bg);color:var(--mut);font-size:12px;font-weight:700;align-items:center;justify-content:center}.nb-h .n.r{background:var(--redbg);color:var(--red)}
.nb-row{display:flex;align-items:center;gap:10px;padding:8px 14px;border-top:1px solid var(--line2);min-height:46px}
.nb-row .nb-ic{width:28px;height:28px;border-radius:10px;background:var(--bg);color:var(--acc);display:inline-flex;align-items:center;justify-content:center;flex:none;font-weight:700}.nb-row .nb-ic .ico{width:15px;height:15px;vertical-align:0}
.nb-row.over .nb-ic{background:var(--redbg);color:var(--red)}.nb-row.off{opacity:.6}.nb-row.date{background:var(--accbg)}
.nb-row .nb-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.nb-row .nb-tx b{font-size:13.5px;font-weight:600;overflow-wrap:anywhere}.nb-row .nb-tx small{font-size:12px;color:var(--mut);overflow-wrap:anywhere}
.nb-row .nb-acts{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end;flex:none}.nb-row .src{font-family:Manrope,sans-serif;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--acc);background:var(--accbg);padding:1px 5px;border-radius:6px}
/* zadachi_v2a (02.10): у задачи 4 кнопки — текст не сжимаем в столбик; не влезло — кнопки строкой ниже, справа */ .nb-row{flex-wrap:wrap}.nb-row .nb-tx{flex:1 1 200px}.nb-row .nb-acts{flex:0 1 auto;margin-left:auto}
.nb-empty{padding:8px 14px 12px;font-size:12.5px;color:var(--mut2);border-top:1px solid var(--line2)}
/* kalendar_akcii (19.09) — «Что нужно сейчас» в панели показа календаря свёрнут по умолчанию
   (панель стала длиннее — деньги/ответственные/показы теперь тоже вверху). Только для новой
   модификации .nb-collapsible — остальные места (карточка сделки, учреждение) используют голый
   .needbox/.nb-h как раньше, без сворачивания. */
.needbox.nb-collapsible{margin:8px 0}
.needbox.nb-collapsible .nb-h{cursor:pointer;user-select:none}
.needbox.nb-collapsible .nb-chev{margin-left:auto;font-size:12px;color:var(--mut2);transition:transform .2s ease}
.needbox.nb-collapsible .nb-rows{display:none}
.needbox.nb-collapsible.nb-open .nb-rows{display:block}
.needbox.nb-collapsible.nb-open .nb-chev{transform:rotate(180deg)}
/* kartochki_v2 (19.09) — дата+показы одной строкой вместо разбросанных «Показ(ы)»-строки и
   плитки «Показов» (Яков, Q2: «сразу дату и показы чтобы без лишнего») */
.shdate{font-family:Manrope,sans-serif;font-weight:700;font-size:15px;padding:6px 0 2px}
.shtimes{font-weight:500;font-size:12.5px;color:var(--mut);line-height:1.6;margin-top:2px}
.nb-stage{padding:8px 14px 10px;border-top:1px solid var(--line2);display:flex;flex-direction:column;gap:6px;background:var(--bg)}.nb-stage .nb-k{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--acc)}
.nb-stage .acts{display:flex;gap:6px;flex-wrap:wrap}.nb-stage .after{font-size:12px;color:var(--mut2)}
.nb-sub{border-top:1px solid var(--line2)}.nb-subh{padding:8px 14px 2px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mut2)}
.actbar{display:flex;gap:6px;flex-wrap:wrap}.actbar .btn{display:inline-flex;align-items:center;gap:6px}.actbar .btn .ico{width:14px;height:14px}.actbar .btn.danger{color:var(--red);margin-left:auto}
.ttype{font-family:Manrope,sans-serif;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--acc2);background:var(--accbg);padding:1px 5px;border-radius:6px}.ttype.imp{color:var(--red);background:var(--redbg)}
.ttypes{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}.tt{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);font-size:12.5px;cursor:pointer;background:var(--card)}.tt .ico{width:13px;height:13px}.tt.on{background:var(--accbg);border-color:var(--acc3);color:var(--acc2);font-weight:600}.tt.imp{color:var(--red)}
@media (max-width:860px){.card2:has(.fields.twocol){grid-template-columns:minmax(0,1fr)}}   /* фикс crm_amo_2col: на телефоне колонка полей вылезала за экран */
#detBox .nb-row{flex-wrap:wrap}#detBox .nb-row .nb-tx{flex-basis:calc(100% - 40px)}#detBox .nb-row .nb-acts{margin-left:38px;justify-content:flex-start}#detBox .actbar .btn{font-size:12px;padding:6px 10px}
@media (max-width:700px){.nb-row{flex-wrap:wrap}.nb-row .nb-tx{flex-basis:calc(100% - 40px)}.nb-row .nb-acts{margin-left:38px;justify-content:flex-start}.actbar .btn.danger{margin-left:0}}
.fields.twocol .fr.dir{grid-template-columns:44px minmax(0,1fr)}
.fr .a{font-size:12px;color:var(--mut);min-width:0;overflow-wrap:anywhere;border-left:1px dashed var(--line);padding-left:8px;line-height:1.35;align-self:stretch}
.fr.ov{background:var(--yelbg)}
.fr .ovtag{display:block;font-size:12px;color:var(--yel);font-weight:600}
.fr .take{display:block;font-size:12px;color:var(--acc);font-weight:600;cursor:pointer}
.fh .fh2{margin-left:auto}
@media (max-width:700px){.fields.twocol .fr{grid-template-columns:minmax(0,1fr)}.fr .a{border-left:0;padding-left:0}.fr .a::before{content:"amo: ";color:var(--mut2)}.fr .a:empty{display:none}}


/* ── confirmv2 (19.09): чек-лист подтверждения информации звонком (podtverzhdenie_maket_1909 v2) ── */
.ckg{border-top:1px solid var(--line);padding-top:8px;margin-top:4px;display:flex;flex-direction:column;gap:8px}
.ckg:first-of-type{border-top:0;padding-top:0;margin-top:0}
.ckh{font-family:Manrope,sans-serif;font-weight:700;font-size:12.5px;color:var(--acc2)}
.ck{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center;font-size:12.5px;padding:4px 0}
.ck .ckn{font-weight:600}
.ck .ckv{color:var(--mut);grid-column:1}
.ck .cka{display:flex;gap:6px;grid-column:2;grid-row:1/3;align-self:center}
.ckprog{height:4px;border-radius:999px;background:var(--line);overflow:hidden;display:flex;align-items:center;position:relative}
.ckprog i{display:block;height:100%;background:var(--acc3)}
.diffl{display:flex;flex-direction:column;gap:6px}
.diffr{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line2);font-size:13px}
.diffr:last-child{border-bottom:none}
.diffr .dn{font-weight:600}
.diffr .dv{color:var(--mut)}
.diffr .dv .diffwas{text-decoration:line-through;opacity:.7}
.diffr .dv .diffnow{color:var(--red);font-weight:600}
.chattxt{white-space:pre-wrap;background:var(--bg);border-radius:10px;padding:10px 12px;font-size:12.5px;font-family:inherit}

/* voronka2 (20.09) — доработка Воронки: перетаскивание доски мышью только во вкладке «Все»,
   видимая граница между зонами продажи/сопровождения, суммы в шапках колонок, новые поля
   карточки (деньги/доходимость/время показа), поиск текстом в фильтрах. */
.vboard.draggable{cursor:grab}
.vboard.draggable.dragging{cursor:grabbing;user-select:none}
/* тонкая цветная полоса между «Передать в сопровождение» (конец продажи) и «Назначить
   сопровождающего» (начало сопровождения) — видна только во вкладке «Все» (см. JS) */
.vzone-div{flex:0 0 3px;align-self:stretch;min-height:120px;background:var(--acc3);border-radius:3px;margin:0 3px}
/* сумма в шапке колонки — второй строкой (has-sum включает перенос), чтобы не теснить длинные
   подписи вроде «Передать в сопровождение» на узкой колонке */
.vhead.has-sum{flex-wrap:wrap;row-gap:3px}
.vsum{flex:1 0 100%;font-size:12px;font-weight:700;color:var(--acc2)}
.vtimes{font-size:12px;font-weight:600;color:var(--acc2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vmeta{display:flex;gap:6px;flex-wrap:wrap}
.vstat{font-size:12px;font-weight:600;color:var(--mut);background:var(--bg);border-radius:6px;padding:2px 7px;font-variant-numeric:tabular-nums;white-space:nowrap}
/* заголовок группы карточек одной даты показа внутри колонки (сделка = одна дата показа) */
.vdate{font-size:11px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.03em;padding:6px 2px 0;margin-top:2px;border-top:1px solid var(--line2)}
.vdate:first-child{border-top:none;margin-top:0;padding-top:0}

/* voronka3 (21.09, редизайн доски по просьбе Якова "не ещё одно уплотнение — нужен именно
   редизайн"): voronka2b/2c ужимали карточку по плотности amoCRM (58-92px) — Якову всё равно не
   понравилось, проблема была не в плотности, а в самой раскладке. Ниже — противоположный ход:
   карточка просторнее (макет "Вариант А", согласован в артефакте после исследования реальных
   amoCRM/Pipedrive/Bitrix24/HubSpot), 4 смысловые зоны, колонки шире. #board — общий id с
   Сопровождением/Передачей (те же .vcard/.vtop/.vsub/.vtask/.vmeta), поэтому НЕ трогаем базовые
   правила выше — только свой класс .vboard-vor на #board в crm_voronka.html. Ничего из полей
   карточки не убрано (все 11 — см. cardHtml() в шаблоне), включая amo_stage-метку (.tag.y).
   Главная жалоба Якова — обрезанные названия учреждений — правится тут же: .vtop b у Воронки
   больше не .vtop{white-space:nowrap;ellipsis} из базового правила, а переносится на 2+ строки.
   .vzone-div (граница продажа/сопровождение) и .vhead/.vcol (шапка колонки, sticky-скролл
   карточек внутри) — не трогаем структурно, эти механизмы уже проверены в проде. */
.vboard.vboard-vor{gap:16px}
.vboard-vor .vhead{padding:13px 15px;font-size:14.5px}
.vboard-vor .vcards{gap:12px;padding:10px}
.vboard-vor .vcard{padding:12px 13px 11px;gap:8px;border-radius:14px}
.vboard-vor .vtop{align-items:flex-start;gap:8px}
.vboard-vor .vtop b{white-space:normal;overflow:visible;text-overflow:clip;font-size:14px;line-height:1.32}
.vboard-vor .vtop .pill{border-radius:6px;font-size:12px;padding:3px 7px;margin-top:1px;flex-shrink:0}
.vboard-vor .vsub{white-space:normal;flex-wrap:wrap;align-items:center;gap:5px 12px;font-size:12.5px}
.vboard-vor .vsub .vmgr{display:flex;align-items:center;gap:6px;min-width:0}
.vboard-vor .vsub .vmgr b{color:var(--txt);font-weight:600}
.vboard-vor .vsub .av{width:19px;height:19px;font-size:9px;line-height:19px;flex-shrink:0}
.vboard-vor .vsub .vwt{display:flex;align-items:center;gap:4px;color:var(--acc2);font-weight:600}
.vboard-vor .vsub .vwt svg{width:14px;height:14px;flex-shrink:0}
.vboard-vor .vsub .vdays{padding:2px 8px}
.vboard-vor .vprog{display:flex;align-items:flex-start;gap:5px;font-size:12.5px;line-height:1.35;white-space:normal;overflow:visible;text-overflow:clip;opacity:.9}
.vboard-vor .vprog svg{width:14px;height:14px;flex-shrink:0;color:var(--mut2);margin-top:1px}
.vboard-vor .vcard .vdivider{height:1px;background:var(--line2);margin:1px 0}
.vboard-vor .vfigs{display:flex;flex-direction:column;gap:6px}
.vboard-vor .vfig-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.vboard-vor .vmoney{display:flex;align-items:center;gap:6px;font:800 15px Manrope,sans-serif;color:var(--txt);font-variant-numeric:tabular-nums;white-space:nowrap}
.vboard-vor .vmoney svg{width:15px;height:15px;color:var(--acc);flex-shrink:0}
.vboard-vor .vpayout{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--mut2);white-space:nowrap;flex-shrink:0}
.vboard-vor .vpayout svg{width:12px;height:12px;flex-shrink:0}
.vboard-vor .vpayout b{color:var(--mut);font-weight:600;font-variant-numeric:tabular-nums}
.vboard-vor .vpayout.dash b{color:var(--mut2);font-weight:500}
.vboard-vor .vfig-sub{display:flex;align-items:center;gap:12px}
.vboard-vor .vattend{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.vboard-vor .vattend-pct{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;flex-shrink:0}
.vboard-vor .vattend-pct.g{color:var(--grn)}.vboard-vor .vattend-pct.y{color:var(--yel)}.vboard-vor .vattend-pct.r{color:var(--red)}
.vboard-vor .vattend-bar{flex:1;height:5px;border-radius:999px;background:var(--line2);overflow:hidden;min-width:36px}
.vboard-vor .vattend-bar i{display:block;height:100%;border-radius:999px}
.vboard-vor .vattend-bar i.g{background:var(--grn)}.vboard-vor .vattend-bar i.y{background:var(--yel)}.vboard-vor .vattend-bar i.r{background:var(--red)}
.vboard-vor .vtix{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--mut);flex-shrink:0}
.vboard-vor .vtix svg{width:13px;height:13px;color:var(--mut2);flex-shrink:0}
.vboard-vor .vtix b{color:var(--txt);font-weight:700;font-variant-numeric:tabular-nums}
.vboard-vor .vtask{margin-top:0;font-size:12px;padding:6px 9px}
.vboard-vor .vtask svg{width:14px;height:14px}
/* колонки шире — вторая идея Якова из исходной просьбы, только на десктопе: на мобиле уже есть
   проверенное 82vw-правило (crm03b, строка выше) — не переопределяем его, ниже 861px там своя
   ширина под экран, здесь дублировать/переопределять нечего. */
@media (min-width:861px){
  .vboard-vor .vcol{flex:0 0 300px;min-width:300px;max-width:300px}
}
/* расшифровка счётчика «Переносы» (Список) — «было → стало», новый класс, больше нигде не
   используется (безопасно вне #board); перенос строки, а НЕ обрезание — иначе теряется как раз
   самое важное (новое время), которое Яков и просил показывать */
.vresch{display:block;font-size:12px;color:var(--acc2);font-weight:600;margin-top:2px;white-space:normal;line-height:1.35}
.fbar input[type=text],#vq{border:1px solid var(--line);border-radius:10px;padding:7px 9px;background:var(--card);color:var(--txt);font-size:12.5px;min-width:190px}
@media (max-width:860px){#vq{flex:1;min-width:110px}}

/* backlog2109p: окно «Задача» (задача 6 бэклога, макет одобрен Яковом 23.09 «с макетами согласен»).
   Только карточка учреждения (templates/crm_uchr_card.html, #dTask). Разметка:
   .ovl.tovl > .dlg.tdlg > .tgrab / .thead / .tbody / .dfoot.tfoot. Все правила — внутри .tovl/.tdlg,
   чтобы не задеть другие окна (.tx/.tk/.tl в других местах crm_v3.css — свои, контекстные).
   Цвета — только токены, тёмная тема работает сама. */
.ovl.tovl{align-items:center;padding:24px 12px;animation:tdlgFade .2s ease both}
.dlg.tdlg{max-width:540px;padding:0;gap:0;border-radius:20px;border:1px solid var(--line);overflow:hidden;
  box-shadow:0 24px 64px rgba(43,42,41,.18),0 2px 6px var(--shadow2);animation:tdlgIn .28s cubic-bezier(.2,.8,.2,1) both;max-height:100%}
.tdlg .tgrab{display:none}
/* шапка: иконка-плитка, заголовок, учреждение, крестик */
.tdlg .thead{display:flex;align-items:center;gap:12px;padding:18px 20px 14px;
  background:radial-gradient(420px 120px at 0% 0%,var(--glow1),transparent 70%),var(--card)}
.tdlg .thead .tic{width:40px;height:40px;border-radius:14px;background:var(--accbg);border:1px solid var(--acc3);color:var(--acc);display:flex;align-items:center;justify-content:center;flex:none}
.tdlg .thead .tic svg{width:20px;height:20px}
.tdlg .thead .tt0{flex:1;min-width:0}
.tdlg .thead h2{font-size:18px;font-weight:800;line-height:1.2;margin:0}
.tdlg .thead .tsub{font-size:12.5px;color:var(--mut);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tdlg .tx{width:34px;height:34px;border-radius:10px;border:0;background:transparent;color:var(--mut);display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;padding:0;transition:background .12s,color .12s}
.tdlg .tx:hover{background:var(--bg);color:var(--txt)}
.tdlg .tx svg{width:18px;height:18px}
/* тело */
.tdlg .tbody{padding:4px 20px 16px;display:flex;flex-direction:column;gap:16px;overflow:auto;min-height:0}
.tdlg .tf{gap:7px}
.tdlg .tf>.tlab{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.tdlg .tf .tl{font-size:12px;color:var(--mut);font-weight:600;letter-spacing:.01em}
.tdlg .tf>label{letter-spacing:.01em}
.tdlg .tf .tval{font-size:12px;color:var(--acc);font-weight:600;white-space:nowrap}
.tdlg .tf .tval.none{color:var(--mut2);font-weight:500}
/* «Что сделать» */
.tdlg textarea#tText{min-height:84px;border-radius:14px;padding:11px 13px;font-size:14px;line-height:1.45;background:var(--bg);border-color:var(--line);resize:vertical;transition:border-color .12s,box-shadow .12s,background .12s}
.tdlg textarea#tText::placeholder{color:var(--mut2)}
.tdlg textarea#tText:focus{background:var(--card);border-color:var(--acc3);box-shadow:0 0 0 4px rgba(126,90,156,.12)}
.tdlg textarea#tText.terr{border-color:var(--red);box-shadow:0 0 0 4px var(--redbg);animation:tdlgShake .3s ease}
/* «Тип» — 4 плитки с иконками (радиогруппа; значение пишется в скрытый #tKind) */
.tdlg .tkinds{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.tdlg .tk{--c:var(--acc);--cb:var(--accbg);position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 6px 10px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--ink3);font:500 12.5px "Golos Text","Segoe UI",sans-serif;cursor:pointer;transition:border-color .14s,background .14s,box-shadow .14s,transform .14s}
.tdlg .tk[data-k=call]{--c:var(--grn);--cb:var(--grnbg)}
.tdlg .tk[data-k=msg]{--c:var(--blu);--cb:var(--blubg)}
.tdlg .tk[data-k=important]{--c:var(--red);--cb:var(--redbg)}
.tdlg .tk .ki{width:34px;height:34px;border-radius:50%;background:var(--cb);color:var(--c);display:flex;align-items:center;justify-content:center;flex:none;transition:background .14s,color .14s,transform .2s}
.tdlg .tk .ki svg{width:17px;height:17px}
.tdlg .tk:hover{border-color:var(--acc3);transform:translateY(-1px);box-shadow:0 4px 12px var(--shadow2)}
.tdlg .tk.on{border-color:var(--c);background:var(--cb);color:var(--txt);font-weight:600;box-shadow:inset 0 0 0 1px var(--c)}
.tdlg .tk.on .ki{background:var(--c);color:var(--card);transform:scale(1.06)}
.tdlg .tk .kc{position:absolute;top:6px;right:6px;width:16px;height:16px;border-radius:50%;background:var(--c);color:var(--card);display:none;align-items:center;justify-content:center}
.tdlg .tk .kc svg{width:10px;height:10px;stroke-width:3}
.tdlg .tk.on .kc{display:flex}
/* «Срок» — быстрые кнопки + своя дата (внутри — тот же input type=date #tDue, прозрачный поверх кнопки) */
.tdlg .tdue{display:flex;flex-wrap:wrap;gap:6px}
.tdlg .tq{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink3);font:500 12.5px "Golos Text","Segoe UI",sans-serif;cursor:pointer;white-space:nowrap;transition:background-color var(--t1) var(--ease),border-color var(--t1) var(--ease),color var(--t1) var(--ease);position:relative}
.tdlg .tq.tpick{color:var(--mut);font-weight:600}
.tdlg .tq:hover{border-color:var(--acc3)}
.tdlg .tq.on{background:var(--accbg);border-color:var(--acc3);color:var(--txt);font-weight:600;box-shadow:inset 0 0 0 1px var(--acc3)}
.tdlg .tq svg{width:15px;height:15px;color:var(--acc)}
.tdlg .tq.tpick input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0;margin:0}
.tdlg .tq.tpick input::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;cursor:pointer}
.tdlg .tq.tpick:focus-within{outline:2px solid var(--acc);outline-offset:2px}
/* «Кому» — кружок-инициалы и отметка «ответственный» поверх того же select #tWho */
.tdlg .twho{position:relative;display:flex;align-items:center}
.tdlg .twho .tav{position:absolute;left:8px;width:28px;height:28px;border-radius:50%;background:var(--accbg);color:var(--acc);font:800 11px Manrope,sans-serif;display:flex;align-items:center;justify-content:center;pointer-events:none}
.tdlg .twho .tchev{position:absolute;right:12px;width:16px;height:16px;color:var(--mut);pointer-events:none}
.tdlg select#tWho{appearance:none;-webkit-appearance:none;height:44px;padding:0 38px 0 46px;border-radius:14px;font-size:14px;font-weight:500;cursor:pointer;background:var(--card);text-overflow:ellipsis}
.tdlg .twho.hasme select#tWho{padding-right:140px}
.tdlg select#tWho:hover{border-color:var(--acc3)}
.tdlg .twho .tme{position:absolute;right:36px;font-size:12px;color:var(--mut);background:var(--bg);border-radius:999px;padding:2px 8px;pointer-events:none}
/* подсказка */
.tdlg .thint{display:flex;gap:9px;align-items:flex-start;background:var(--bg);border-radius:10px;padding:9px 12px;font-size:12px;line-height:1.45;color:var(--mut)}
.tdlg .thint svg{width:15px;height:15px;flex:none;color:var(--acc);margin-top:1px}
/* подвал: итог слева (только компьютер), кнопки справа */
.tdlg .dfoot.tfoot{margin:0;padding:12px 20px 16px;border-top:1px solid var(--line2);background:var(--card);align-items:center;flex-wrap:nowrap}
.tdlg .tsum{flex:1;min-width:0;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tdlg .tsum b{color:var(--txt);font-weight:600}
.tdlg .tsum .tst{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tdlg .tsum svg{width:14px;height:14px;flex:none}
.tdlg .tfoot .btn{height:40px;padding:0 16px;border-radius:10px;font-size:13px}
.tdlg .tfoot .btn.pri{padding:0 20px;box-shadow:0 6px 16px var(--shadow2)}
.tdlg .tfoot .btn.pri svg{width:16px;height:16px}
.tdlg .tfoot .btn.pri:active{transform:translateY(1px)}
.tdlg :focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.tdlg select:focus-visible,.tdlg textarea:focus-visible,.tdlg .tq.tpick input:focus-visible{outline:none}
@keyframes tdlgFade{from{opacity:0}to{opacity:1}}
@keyframes tdlgIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
@keyframes tdlgSheet{from{transform:translateY(100%)}to{transform:none}}
@keyframes tdlgShake{0%,100%{transform:none}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
/* телефон: окно выезжает снизу (bottom sheet), кнопки крупные */
@media (max-width:600px){
  .ovl.tovl{align-items:flex-end;padding:0}
  .dlg.tdlg{max-width:none;border-radius:20px 20px 0 0;border-bottom:0;max-height:94%;animation:tdlgSheet .3s cubic-bezier(.2,.8,.2,1) both}
  .tdlg .tgrab{display:block;width:40px;height:4px;border-radius:2px;background:var(--line);margin:8px auto 0;flex:none}
  .tdlg .thead{padding:10px 16px 12px}
  .tdlg .tbody{padding:2px 16px 14px;gap:14px}
  .tdlg .tkinds{grid-template-columns:1fr 1fr}
  .tdlg .tk{flex-direction:row;justify-content:flex-start;padding:7px 30px 7px 10px;min-height:48px;gap:9px;text-align:left}
  .tdlg .tk .ki{width:30px;height:30px}
  .tdlg .tk .kc{top:50%;margin-top:-8px;right:10px}
  .tdlg .tq{height:40px;padding:0 14px}
  .tdlg .dfoot.tfoot{padding:10px 16px calc(14px + env(safe-area-inset-bottom));gap:8px}
  .tdlg .tsum{display:none}
  .tdlg .tfoot .btn{height:48px;justify-content:center;font-size:14px}
  .tdlg .tfoot .btn:not(.pri){flex:1}
  .tdlg .tfoot .btn.pri{flex:2}
}
@media (prefers-reduced-motion:reduce){
  .ovl.tovl,.dlg.tdlg,.tdlg textarea#tText.terr{animation:none}
  .tdlg .tk,.tdlg .tk .ki,.tdlg .tq{transition:none}
  .tdlg .tk:hover{transform:none}
}
/* конец backlog2109p */
/* zadachi_vremya (28.09.2026): «Срок» со временем + занятость дня справа; окно «Перенести» */
.dlg.tdlg.twide{max-width:900px}
.tdlg .tcols{display:grid;grid-template-columns:minmax(0,1fr) 300px;min-height:0;flex:1}
.tdlg .tcols>.tbody{min-width:0}
.tdlg .ttime{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tdlg .ttime input[type=time]{width:auto;height:34px;border-radius:999px;padding:0 12px;font:500 13px "Golos Text","Segoe UI",sans-serif;border:1px solid var(--line);background:var(--card);color:var(--txt)}
.tdlg .ttime select{width:auto;height:34px;border-radius:999px;padding:0 28px 0 12px;font:500 13px "Golos Text","Segoe UI",sans-serif;border:1px solid var(--line);background:var(--card);color:var(--txt)}
.tdlg .ttime input:disabled,.tdlg .ttime select:disabled{opacity:.45}
.tdlg .tclash{display:flex;gap:9px;align-items:flex-start;background:var(--yelbg);color:var(--yel);border-radius:10px;padding:9px 12px;font-size:12px;line-height:1.45}
.tdlg .tclash svg{width:15px;height:15px;flex:none;margin-top:1px}
.tdlg .tday{border-left:1px solid var(--line2);background:var(--bg);display:flex;flex-direction:column;min-width:0;min-height:0}
.tdlg .tday .tdh{padding:14px 14px 8px;display:flex;flex-direction:column;gap:1px}
.tdlg .tday .tdh b{font:800 14px Manrope,sans-serif}
.tdlg .tday .tdh span{font-size:12px;color:var(--mut)}
.tdlg .tday .tdall{margin:0 12px 8px;padding:7px 10px;border:1px dashed var(--line);border-radius:10px;font-size:12px;color:var(--mut);display:flex;flex-direction:column;gap:2px}
.tdlg .tday .tdall b{color:var(--txt);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tdlg .tday .tdtl{position:relative;overflow-y:auto;flex:1;min-height:300px;max-height:440px;margin:0 6px 10px 0}
.tdlg .tday .tdg{position:relative;margin-top:10px}
.tdlg .tday .tdr{height:24px;display:flex;align-items:flex-start;font-size:11px;color:var(--mut2);font-variant-numeric:tabular-nums}
.tdlg .tday .tdr .h{width:44px;text-align:right;padding-right:8px;transform:translateY(-7px)}
.tdlg .tday .tdr .ln{flex:1;border-top:1px solid var(--line);height:100%}
.tdlg .tday .tdr.half .ln{border-top-style:dotted;border-top-color:var(--line2)}
.tdlg .tday .tds{position:absolute;left:52px;right:6px;border-radius:7px;padding:2px 7px;font-size:11.5px;line-height:1.2;overflow:hidden;border:1px solid transparent;color:var(--txt)}
.tdlg .tday .tds small{display:block;opacity:.85;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tdlg .tday .tds.b-task{background:var(--yelbg);color:var(--yel)}
.tdlg .tday .tds.b-call{background:var(--grnbg);color:var(--grn)}
.tdlg .tday .tds.b-meeting{background:var(--blubg);color:var(--blu)}
.tdlg .tday .tds.b-show{background:var(--tealbg);color:var(--teal)}
.tdlg .tday .tds.b-new{background:var(--accbg);color:var(--acc);border:2px dashed var(--acc);font-weight:600;z-index:2}
.tdlg .tday .tds.b-new.clash{border-color:var(--red);color:var(--red);background:var(--redbg)}
.tdlg .tday .tdhit{position:absolute;left:52px;right:6px;top:0;cursor:copy}
.tdlg .tday .tdhit:hover{background:rgba(126,90,156,.07);border-radius:6px}
.tdlg .tday .tdnow{position:absolute;left:44px;right:0;border-top:2px solid var(--red);z-index:3}
.tdlg .tday .tdlg2{display:flex;gap:9px;flex-wrap:wrap;padding:0 14px 12px;font-size:11px;color:var(--mut)}
.tdlg .tday .tdlg2 i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.tdlg .tday .tdempty{padding:8px 14px;font-size:12px;color:var(--mut2)}
.dlg.tdlg.tmove{max-width:780px}
@media (max-width:860px){.dlg.tdlg.twide{max-width:560px}.tdlg .tcols{display:block;overflow:auto;min-height:0}.tdlg .tcols>.tbody{overflow:visible}.tdlg .tday{border-left:0;border-top:1px solid var(--line2)}.tdlg .tday .tdtl{min-height:200px;max-height:260px;overflow:visible;margin-right:0}}
@media (max-width:600px){.tdlg .tday .tdtl{max-height:none}}
/* конец zadachi_vremya */
/* vstrechi_zametki (28.09): «Встреча» в окне задачи, стрелки дня, перетаскивание, общие заметки */
.tdlg .tkinds.k5{grid-template-columns:repeat(5,minmax(0,1fr))}
.tdlg .tk[data-k=meeting]{--c:var(--blu);--cb:var(--blubg)}
.tdlg .tq:disabled{opacity:.4;cursor:not-allowed}
.tdlg .tmeet{display:flex;flex-direction:column;gap:12px;padding:12px;border:1px solid var(--blubg);background:color-mix(in srgb,var(--blubg) 45%,transparent);border-radius:14px}
.tdlg .tmeet select,.tdlg .tmeet input[type=text]{width:100%}
.tdlg .tmeet .tgrid2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.tdlg .tmeet .chips{display:flex;flex-wrap:wrap;gap:6px}
.tdlg .tmeet .chip{border:1px solid var(--line);background:var(--card);color:var(--txt);border-radius:999px;padding:4px 11px;font-size:12.5px;cursor:pointer}
.tdlg .tmeet .chip.on{border-color:var(--acc);background:var(--accbg);color:var(--acc);font-weight:600}
.tdlg .tmmore{align-self:flex-start;border:0;background:none;color:var(--acc);font-weight:600;font-size:12.5px;cursor:pointer;padding:0}
.tdlg .tmres{display:flex;flex-direction:column;gap:2px;margin-top:4px}
.tdlg .tmres .tmr{text-align:left;border:1px solid var(--line2);background:var(--card);color:var(--txt);border-radius:8px;padding:6px 9px;font-size:13px;cursor:pointer}
.tdlg .tmres .tmr:hover{border-color:var(--acc)}
.tdlg .tday .tdh.tdhn{flex-direction:row;align-items:center;gap:6px}
.tdlg .tday .tdhc{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;text-align:center}
.tdlg .tday .tdhc b{font:800 14px Manrope,sans-serif}.tdlg .tday .tdhc span{font-size:12px;color:var(--mut)}
.tdlg .tday .tdnav{flex:none;width:30px;height:30px;border-radius:9px;border:1px solid var(--line);background:var(--card);color:var(--txt);font:700 16px/1 inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.tdlg .tday .tdnav:hover{border-color:var(--acc);color:var(--acc)}
.tdlg .tday .tdnav svg{width:15px;height:15px}
.tdlg .tday .tdcal input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.tdlg .tday .tds.mv{cursor:grab;user-select:none;touch-action:none;z-index:1}
.tdlg .tday .tds.mv:hover{box-shadow:0 0 0 1px currentColor}
.tdlg .tday .tds.drag,.gf-ev.drag{cursor:grabbing;opacity:.92;box-shadow:0 8px 20px var(--shadow2);z-index:6}
.tdlg .tday .tds.drag::after,.gf-ev.drag::after{content:attr(data-t);position:absolute;right:4px;top:2px;background:var(--txt);color:var(--card);border-radius:5px;padding:0 5px;font-size:11px;font-weight:700}
.gf-ev[data-k=task],.gf-ev[data-k=meeting]{user-select:none}
.nrole{border-radius:6px;padding:0 6px;font-size:11px;font-weight:600;background:var(--accbg);color:var(--acc)}
.nrole.escort{background:var(--grnbg);color:var(--grn)}.nrole.inst{background:var(--blubg);color:var(--blu)}
.nedited{cursor:pointer;text-decoration:underline dotted}
.nold{font-size:12px;color:var(--mut);background:var(--bg);border-radius:8px;padding:4px 9px;margin-top:4px}
.nedbox{display:flex;flex-direction:column;gap:6px}.nedbox textarea{width:100%;min-height:64px}.nedacts{display:flex;gap:6px}
.c3nadd{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.c3nadd textarea{width:100%}.c3nadd .btn{align-self:flex-start}
.c3n{padding:7px 0;border-top:1px solid var(--line2);font-size:13px}.c3nh{font-size:11.5px;color:var(--mut);display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.c3role{border-radius:6px;padding:0 6px;font-size:11px;font-weight:600;background:var(--accbg);color:var(--acc)}.c3role.escort{background:var(--grnbg);color:var(--grn)}.c3role.inst{background:var(--blubg);color:var(--blu)}
.c3ned{border:0;background:none;color:var(--acc);cursor:pointer;font-size:13px;padding:0 2px}
.c3nt{margin-top:2px;white-space:pre-wrap}.c3nold{font-size:11px;color:var(--mut);text-decoration:underline dotted;margin-top:2px}
.c3nedit{display:flex;flex-direction:column;gap:5px;margin-top:4px}.c3nedit textarea{width:100%}
.c3nmore{border:0;background:none;color:var(--acc);font-weight:600;cursor:pointer;padding:6px 0;font-size:12.5px}
@media (max-width:860px){.tdlg .tkinds.k5{grid-template-columns:1fr 1fr}}
/* конец vstrechi_zametki */
/* zadachi_v2 (02.10.2026, макет «Задачи v2», экраны В и Г): «Изменить задачу» в том же окне, просмотр, окно «Что сделано?» */
.tdlg .thead .tsub{display:flex;align-items:baseline;gap:8px;min-width:0}
.tdlg .thead .tsub>span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.tdlg .thead .topen{flex:none;color:var(--acc);font-weight:600;text-decoration:none;cursor:pointer}
.tdlg .thead .topen:hover{text-decoration:underline}
.tdlg .twas{display:inline-block;margin-left:6px;font-size:11.5px;font-weight:600;color:var(--yel);background:var(--yelbg);border-radius:6px;padding:1px 7px;letter-spacing:0;vertical-align:1px}
.tdlg .tk.off,.tdlg .tk:disabled{opacity:.38;cursor:not-allowed;transform:none;box-shadow:none}
.tdlg .tk.off:hover,.tdlg .tk:disabled:hover{border-color:var(--line);transform:none;box-shadow:none}
.tdlg .tronote{display:flex;gap:9px;align-items:center;flex-wrap:wrap;background:var(--accbg);border:1px solid var(--acc3);border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.45;color:var(--txt)}
.tdlg .tronote>svg{width:16px;height:16px;flex:none;color:var(--acc)}
.tdlg .tronote>span{flex:1;min-width:180px}
.tdlg.t5ro .tf,.tdlg.t5ro .tday .tdhn,.tdlg.t5ro .tday .tdhit{pointer-events:none}
.tdlg.t5ro .tf .tq:not(.on),.tdlg.t5ro .tf .tk:not(.on){opacity:.5}
.tdlg.t5ro textarea#tText{background:var(--bg);border-color:var(--line2)}
.tdlg .tfoot a.btn{text-decoration:none;display:inline-flex;align-items:center}
.tdlg .tfoot .btn[hidden]{display:none}
/* «Что сделано?» — маленькое окно */
.dlg.tdlg.tdone{max-width:500px}
.tdlg.tdone .tdq .tq{padding:0 12px}
.tdlg.tdone .thead .tic-ok{background:var(--grnbg);border-color:var(--grn);color:var(--grn)}
.tdlg.tdone .tbody{gap:12px;padding-top:6px}
.tdlg textarea#tdText{min-height:72px;border-radius:14px;padding:11px 13px;font-size:14px;line-height:1.45;background:var(--bg);border-color:var(--line);resize:vertical}
.tdlg textarea#tdText::placeholder{color:var(--mut2)}
.tdlg textarea#tdText:focus{background:var(--card);border-color:var(--acc3);box-shadow:0 0 0 4px rgba(126,90,156,.12)}
.tdlg .tdq{display:flex;flex-wrap:wrap;gap:6px}
.tdlg .tdnext{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--mut);cursor:pointer;user-select:none;width:fit-content}
.tdlg .tdnext input{width:18px;height:18px;margin:0;accent-color:var(--acc);flex:none;cursor:pointer}
.tdlg .tdnext:hover{color:var(--txt)}
@media (max-width:600px){
  .tdlg .tdq .tq{flex:1 1 calc(50% - 6px);justify-content:center}
  .tdlg .tdnext{min-height:40px}
  .tdlg .thead .tsub{flex-wrap:wrap;white-space:normal}
}
/* конец zadachi_v2 */
/* kartochki_v5a (24.09): окна «Запланировать встречу» / «Итог встречи» в виде окна «Задача» (.tdlg.tmtg) */
.dlg.tdlg.tmtg{max-width:640px}
.tdlg.tmtg .tbody{gap:14px}
.tdlg.tmtg .tgrid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tdlg.tmtg .tgrid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tdlg.tmtg .tgrid2.hidden{display:none}
.tdlg.tmtg input[type=text],.tdlg.tmtg input[type=date],.tdlg.tmtg input[type=time],.tdlg.tmtg input[type=number],.tdlg.tmtg select,.tdlg.tmtg textarea{border-radius:10px;background:var(--bg);border-color:var(--line);min-height:38px;transition:border-color .12s,box-shadow .12s,background .12s}
.tdlg.tmtg input:focus,.tdlg.tmtg select:focus,.tdlg.tmtg textarea:focus{background:var(--card);border-color:var(--acc3);box-shadow:0 0 0 4px rgba(126,90,156,.12)}
.tdlg.tmtg textarea{min-height:72px;resize:vertical}
.tdlg.tmtg .chips{display:flex;flex-wrap:wrap;gap:6px}
.tdlg.tmtg .chips .chip{display:inline-flex;align-items:center;height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink3);font:500 12.5px "Golos Text","Segoe UI",sans-serif;cursor:pointer;white-space:nowrap;transition:border-color .12s,background .12s}
.tdlg.tmtg .chips .chip:hover{border-color:var(--acc3)}
.tdlg.tmtg .chips .chip.on{background:var(--accbg);border-color:var(--acc3);color:var(--txt);font-weight:600;box-shadow:inset 0 0 0 1px var(--acc3)}
.tdlg.tmtg .tfoot .btn.pri svg{width:15px;height:15px;margin-right:4px;vertical-align:-2px}
.tdlg.tmtg .tsum svg{width:15px;height:15px;color:var(--acc);flex:none}
.tdlg.tmtg #mrResched>div,.tdlg.tmtg #mrCancel>div{flex-wrap:wrap}
@media (max-width:520px){.tdlg.tmtg .tgrid3{grid-template-columns:1fr 1fr}.tdlg.tmtg .tgrid3>.field:last-child{grid-column:1/-1}}

/* ═══ Дизайн v4 · каркас (пакет karkas, 24.09.2026) ═══════════════════════════════════════
   Согласовано Яковом 24.09 (концепция «Дизайн v4», вопросы 1–10):
   радиусы 6/10/14/20, тени e1/e2/e3, движение 120/200/260/320 мс, стекло только на наложениях
   (панель-иконки слева, прилипшая шапка, фон окон), шрифт на ПК не меньше 12 px.
   Боковое меню на ПК — рейка 64 px, по наведению (или стрелкой) раскрывается до 224 px поверх
   содержимого; на телефоне (≤860) — прежняя шторка по бургеру. JS рейки — CRM.shell() (crm_v3.js). */
:root{
  --r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;
  --e1:0 1px 2px rgba(43,29,56,.06);
  --e2:0 2px 4px rgba(43,29,56,.08),0 10px 28px -8px rgba(43,29,56,.22);
  --e3:0 8px 16px -6px rgba(43,29,56,.18),0 24px 64px -16px rgba(43,29,56,.35);
  --t1:120ms;--t2:200ms;--t3:260ms;--t4:320ms;--ease:cubic-bezier(.2,.8,.2,1);
  --glass-bg:rgba(255,255,255,.72);--glass-edge:rgba(126,90,156,.14);--glass-blur:blur(14px) saturate(160%);
  --rail:64px;--rail-open:224px;
}
html[data-theme=dark]{
  --e1:0 1px 2px rgba(0,0,0,.35);
  --e2:0 2px 4px rgba(0,0,0,.4),0 12px 32px -8px rgba(0,0,0,.55);
  --e3:0 8px 16px -6px rgba(0,0,0,.5),0 28px 72px -16px rgba(0,0,0,.7);
  --glass-bg:rgba(30,26,38,.72);--glass-edge:rgba(179,146,208,.18);
}
@media (prefers-color-scheme:dark){html:not([data-theme=light]):not([data-theme=dark]){
  --e1:0 1px 2px rgba(0,0,0,.35);
  --e2:0 2px 4px rgba(0,0,0,.4),0 12px 32px -8px rgba(0,0,0,.55);
  --e3:0 8px 16px -6px rgba(0,0,0,.5),0 28px 72px -16px rgba(0,0,0,.7);
  --glass-bg:rgba(30,26,38,.72);--glass-edge:rgba(179,146,208,.18);
}}

/* ── шапка: матовое стекло, содержимое мягко уходит под неё при прокрутке ── */
.top{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-bottom-color:var(--glass-edge)}

/* ── кнопка «закрепить меню» (добавляет CRM.shell) — только на ПК ── */
.sbpin{display:none}

/* ── боковое меню на ПК: рейка 64 → 224 поверх содержимого ── */
@media (min-width:861px){
  .app>.sb{position:fixed;left:0;top:0;bottom:0;height:auto;z-index:45;width:var(--rail);padding:14px 12px;
    overflow-x:hidden;overflow-y:auto;scrollbar-width:none;overscroll-behavior:contain;
    background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
    border-right:1px solid var(--glass-edge);
    transition:width var(--t3) var(--ease),box-shadow var(--t3) var(--ease)}
  .app>.sb::-webkit-scrollbar{display:none}
  .app>.sb.x{width:var(--rail-open);box-shadow:var(--e3)}
  .app>.main{margin-left:var(--rail)}

  .app>.sb .logo{padding:2px 3px 12px;overflow:hidden;white-space:nowrap;flex-shrink:0}
  .app>.sb .logo img{flex-shrink:0}
  .app>.sb .logo>div{opacity:0;transition:opacity var(--t1) var(--ease)}
  .app>.sb.x .logo>div{opacity:1;transition-delay:60ms}

  .app>.sb .nav{position:relative;overflow:hidden;flex-shrink:0;padding-left:11px;padding-right:11px;border-radius:10px;color:transparent;
    transition:color var(--t1) var(--ease),background-color var(--t1) var(--ease)}
  .app>.sb .nav svg{color:var(--ink3);transition:color var(--t1) var(--ease)}
  .app>.sb .nav:hover svg{color:var(--txt)}
  .app>.sb .nav.on svg,.app>.sb .nav.on:hover svg{color:var(--acc)}
  .app>.sb .nav.soon svg,.app>.sb .nav.soon:hover svg{color:var(--mut2)}
  .app>.sb.x .nav{color:var(--ink3)}
  .app>.sb.x .nav:hover,.app>.sb.x .nav.on{color:var(--txt)}
  .app>.sb.x .nav.soon,.app>.sb.x .nav.soon:hover{color:var(--mut2)}
  /* «новое» в свёрнутой рейке — точка на иконке; «скоро» — не показываем */
  .app>.sb:not(.x) .nav .bd{position:absolute;left:25px;top:4px;width:9px;height:9px;min-width:0;padding:0;font-size:0;border-radius:50%;background:var(--acc);box-shadow:0 0 0 2px var(--card)}
  .app>.sb:not(.x) .nav .bd.soon{display:none}
  .app>.sb .sep{flex-shrink:0}

  .app>.sb .sbpin{display:flex;align-items:center;gap:10px;margin-top:auto;flex-shrink:0;height:34px;padding:0 0 0 10px;
    border:1px solid transparent;border-radius:10px;background:transparent;color:var(--mut);font:inherit;font-size:12.5px;font-weight:600;
    cursor:pointer;white-space:nowrap;overflow:hidden;text-align:left;
    transition:background-color var(--t1) var(--ease),color var(--t1) var(--ease)}
  .app>.sb .sbpin:hover{background:var(--hover);color:var(--txt)}
  .app>.sb .sbpin svg{width:18px;height:18px;flex-shrink:0;transition:transform var(--t2) var(--ease)}
  .app>.sb.pin .sbpin svg{transform:rotate(180deg)}
  .app>.sb .sbpin .lb{opacity:0;transition:opacity var(--t1) var(--ease)}
  .app>.sb.x .sbpin .lb{opacity:1;transition-delay:60ms}

  .app>.sb .me{margin-top:6px;padding:6px;overflow:hidden;white-space:nowrap;flex-shrink:0}
  .app>.sb .me .av{flex-shrink:0}
  .app>.sb .me>div:not(.av){min-width:0;opacity:0;transition:opacity var(--t1) var(--ease)}
  .app>.sb .me>div:not(.av) b,.app>.sb .me>div:not(.av) small{overflow:hidden;text-overflow:ellipsis}
  .app>.sb .me .chev{opacity:0;transition:opacity var(--t1) var(--ease)}
  .app>.sb.x .me>div:not(.av),.app>.sb.x .me .chev{opacity:1;transition-delay:60ms}
  .app>.sb .nav:focus-visible,.app>.sb .sbpin:focus-visible,.app>.sb .me:focus-visible{outline-offset:-2px}

  /* меню профиля открывается справа от раскрытой панели */
  .pmenu{left:calc(var(--rail-open) + 10px);bottom:12px}
}
@media (min-width:861px) and (max-height:780px){
  .app>.sb{padding-top:10px;padding-bottom:10px}
  .app>.sb .logo{padding-bottom:6px}
  .app>.sb .nav{padding-top:5px;padding-bottom:5px}
  .app>.sb .sep{margin:4px 12px}
}

/* ── движение: одно мягкое появление страницы вместо «прыжка» каждого блока и строки ── */
@keyframes pgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes dlgIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@keyframes ovlIn{from{opacity:0}to{opacity:1}}
@keyframes ldsh{from{background-position:100% 0}to{background-position:-100% 0}}
.app>.main>.content{animation:pgIn var(--t3) var(--ease) backwards}
.dlg{animation:dlgIn var(--t4) var(--ease) backwards}
.ovl.show:not(.tovl){animation:ovlIn var(--t2) ease backwards}
/* «загружаю…» — мягкий перелив, пока приходят данные */
.load:not(#rowsMore){background:linear-gradient(90deg,var(--mut) 40%,var(--acc3) 50%,var(--mut) 60%) 0 0/250% 100%;
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:ldsh 1.6s linear infinite}

/* ── мелкий текст: <small> без своего размера не мельче 12 px (было «smaller» = 10,8 px) ── */
small{font-size:max(12px,.84em)}

/* ── окна: размытый фон, радиус 20 ── */
.ovl{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.dlg,.pmenu{border-radius:20px}

/* ── нажатие и фокус с клавиатуры ── */
.btn:active:not(:disabled),.chip:active{transform:scale(.97)}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}

/* ── бережные режимы: меньше движения / без прозрачности / браузер без стекла ── */
@media (prefers-reduced-motion:reduce){
  .app>.main>.content,.dlg,.ovl.show,.load{animation:none!important}
  .app>.sb,.app>.sb *{transition:none!important}
  .btn:active,.chip:active{transform:none}
}
@media (prefers-reduced-transparency:reduce){
  .top,.app>.sb{background:var(--card)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  .ovl{-webkit-backdrop-filter:none;backdrop-filter:none}
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .top,.app>.sb{background:var(--card)}
}
/* vhod (26.09, Яков): кнопка «Закрепить меню» не нужна — меню раскрывается при наведении */
.app>.sb .sbpin{display:none!important}
.app>.sb .me{margin-top:auto!important}   /* kabinet_ariny (Яков 26.09): иконка профиля — внизу меню */

/* ═══ Дизайн v4.1 · полировка (пакет dizain_v41, 27.09.2026, макет maket_dizain_v41.html) ═══
   А: кнопки с откликом, ползунок сегментов, раскрытие групп, скелетон, каскад ленты и досок, стекло окон и тостов,
      тени карточек; Б: пустые состояния, точка «нужно для этапа», полоска активного раздела, ЛПР иконками, выходные
      в календаре; В: карточка сопровождения легче. Только вид — логика не менялась. */
@keyframes v41in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes v41spin{to{transform:rotate(360deg)}}
@keyframes v41sh{from{background-position:200% 0}to{background-position:-200% 0}}
@keyframes v41flash{0%{background:var(--grnbg)}100%{background:transparent}}
@keyframes v41pulse{0%,100%{box-shadow:0 0 0 0 rgba(194,68,68,.45)}50%{box-shadow:0 0 0 6px rgba(194,68,68,0)}}

/* ── А · кнопки: подъём при наведении, «Сохраняю…» пока ждём сервер ── */
.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--e2)}
.btn.pri:hover:not(:disabled){box-shadow:var(--e2)}
.btn:disabled,.btn[disabled]{opacity:.55;cursor:default;transform:none!important;box-shadow:none!important}
.btn.v41busy{position:relative;pointer-events:none;color:transparent!important}
.btn.v41busy svg{visibility:hidden}
.btn.v41busy::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border:2px solid var(--acc);border-right-color:transparent;border-radius:50%;animation:v41spin .7s linear infinite}
.btn.pri.v41busy::after,.btn.okg.v41busy::after{border-color:var(--acc-ink);border-right-color:transparent}
.iconbtn,.ib{transition:transform var(--t1) var(--ease),box-shadow var(--t1) var(--ease),background-color var(--t1) var(--ease),border-color var(--t1) var(--ease)}
.iconbtn:hover{transform:translateY(-1px);box-shadow:var(--e1)}
.iconbtn:active,.ib:active{transform:scale(.94)}

/* ── А · сегменты и вкладки ленты: ползунок едет к выбранной (CRM v4.1 JS ставит .v41ind) ── */
.seg,.feedtabs{position:relative}
.seg>.v41ind,.feedtabs>.v41ind{position:absolute;top:2px;bottom:2px;left:0;width:0;border-radius:6px;background:var(--accbg);pointer-events:none;
  transition:left var(--t2) var(--ease),width var(--t2) var(--ease);opacity:0}
.feedtabs>.v41ind{background:var(--card);box-shadow:var(--e1)}
.seg.v41>span,.feedtabs.v41>span{position:relative;z-index:1;transition:color var(--t2) var(--ease)}
.seg.v41>span.on,.feedtabs.v41>span.on{background:transparent;box-shadow:none}
.seg>i.v41ind,.feedtabs>i.v41ind{display:block;padding:0;font-style:normal}
.seg.v41>.v41ind.on,.feedtabs.v41>.v41ind.on{opacity:1}

/* ── А · группы полей: строки проявляются при раскрытии ── */
.grp2:not(.closed) .fr{animation:v41in var(--t2) var(--ease) backwards}
.grp2 .gh .chev{display:inline-block;transition:transform var(--t2) var(--ease)}
.gh:hover{background:var(--hover)}

/* ── А · «загружаю…» → серые кости на месте будущих строк ── */
.load:not(#rowsMore){color:transparent!important;-webkit-text-fill-color:transparent!important;position:relative;min-height:70px;background:none!important;animation:none!important}
.load:not(#rowsMore)::before,.load:not(#rowsMore)::after{content:"";position:absolute;left:16px;height:12px;border-radius:6px;
  background:linear-gradient(90deg,var(--line2) 25%,var(--line) 50%,var(--line2) 75%);background-size:200% 100%;animation:v41sh 1.4s linear infinite}
.load:not(#rowsMore)::before{top:18px;right:38%}
.load:not(#rowsMore)::after{top:40px;right:62%;animation-delay:.15s}

/* ── А · лента и доски: каскад, первые 8 ── */
.feed-row{animation:v41in var(--t3) var(--ease) backwards}
.feed-row:nth-child(2){animation-delay:30ms}.feed-row:nth-child(3){animation-delay:60ms}.feed-row:nth-child(4){animation-delay:90ms}
.feed-row:nth-child(5){animation-delay:120ms}.feed-row:nth-child(6){animation-delay:150ms}.feed-row:nth-child(7){animation-delay:180ms}.feed-row:nth-child(8){animation-delay:210ms}
.feed-row:nth-child(n+9){animation:none}
.vcards .vcard{animation:v41in var(--t3) var(--ease) backwards}
.kpl-na{animation:none!important}   /* plavno_kartochki: уже было на экране — после обновления не въезжает заново */
.vboard-vor .vcol{transition:flex-basis var(--t3) var(--ease),min-width var(--t3) var(--ease),max-width var(--t3) var(--ease)}   /* plavno_kartochki: колонка с раскрытой строкой расширяется плавно */
@media (prefers-reduced-motion:reduce){.vboard-vor .vcol{transition:none}}
.vcards .vcard:nth-child(2){animation-delay:30ms}.vcards .vcard:nth-child(3){animation-delay:60ms}.vcards .vcard:nth-child(4){animation-delay:90ms}
.vcards .vcard:nth-child(5){animation-delay:120ms}.vcards .vcard:nth-child(6){animation-delay:150ms}.vcards .vcard:nth-child(7){animation-delay:180ms}.vcards .vcard:nth-child(8){animation-delay:210ms}
.vcards .vcard:nth-child(n+9){animation:none}
/* карточки досок: покой e1, наведение e2 + подъём */
.vcard{box-shadow:var(--e1)}
.vcard:hover{box-shadow:var(--e2);transform:translateY(-2px)}

/* ── А · сохранённое поле: зелёная вспышка ── */
.fr.v41flash{animation:v41flash .7s ease}

/* ── А · окна и тосты: стекло ── */
.dlg:not(.tdlg){background:color-mix(in srgb,var(--card) 94%,transparent);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-edge)}
.toast{border-radius:12px;padding:10px 16px 10px 14px;background:color-mix(in srgb,var(--txt) 84%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.toast.show::before{content:"✓";display:inline-block;margin-right:8px;font-weight:800;color:#8FD39A}
.toast.show.err{background:color-mix(in srgb,var(--red) 90%,transparent)}
.toast.show.err::before{content:"!";color:#fff}

/* ── Б · пустые состояния: иконка, фраза, действие ── */
.nb-empty,.v41empty{display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px 12px;margin:6px 8px;border:1px dashed var(--line);border-radius:12px;color:var(--mut);text-align:center;font-size:13px}
.nb-empty::before,.v41empty::before{content:"✓";width:32px;height:32px;border-radius:10px;background:var(--grnbg);color:var(--grn);display:flex;align-items:center;justify-content:center;font-weight:800;margin-bottom:4px;font-size:15px}
.v41empty.n::before{content:"○";background:var(--line2);color:var(--mut2)}
.nb-empty .btn,.v41empty .btn{margin-top:6px}

/* ── Б · точка «нужно для этапа» — один раз мигает при открытии ── */
.fh .dotr,.fr .l.req::before{animation:v41pulse 1s ease 2}

/* ── Б · рейка: полоска у активного раздела ── */
@media (min-width:861px){
  .app>.sb .nav.on::before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--acc)}
}

/* ── Б · ЛПР: иконки в строку ── */
.ctc-acts{display:inline-flex;align-items:center;gap:6px;margin-top:6px}
.ctc-acts .iconbtn{width:30px;height:30px;font-size:14px}
.ctc-hint{font-size:11.5px;color:var(--mut2);margin-left:2px}
@media (max-width:860px){.ctc-hint{display:none}}

/* ── В · доска сопровождения: без рамки в рамке, кнопки в строку ── */
.vboard .vcard .esc3.compact{border:0;background:var(--hover);padding:8px 10px}
.vboard .vcard .esc3.compact .er{border-bottom-color:var(--line)}
.vboard .vcard .esc3.compact .eacts{gap:5px}
.vboard .vcard .esc3.compact .eacts .btn{padding:5px 9px;font-size:12px;white-space:nowrap;text-align:center}
.vtop .vdays{margin-left:auto;flex:none;font-size:11.5px;font-weight:700;color:var(--mut);background:var(--line2);padding:1px 7px;border-radius:7px;white-space:nowrap}
.vcard.over .vtop .vdays{color:var(--red);background:var(--redbg)}


/* ═══ Воронка v4 (пакет voronka_v4, 27.09.2026): компактные строки, разворот по клику ═══ */
.vboard-vor .vcards{gap:5px;padding:7px}
.vboard-vor .vcard.v4{padding:0;gap:0;border-radius:10px;box-shadow:var(--e1);overflow:hidden;flex-shrink:0}
.vboard-vor .vcard.v4.open{border-color:var(--acc);box-shadow:var(--e2);transform:none}
.vboard-vor .vcard.v4.over{border-color:var(--red)}
.vboard-vor .vcard.v4 .v4r{display:flex;align-items:center;gap:6px;padding:7px 9px;min-height:40px;font-size:13px;cursor:pointer}
.vboard-vor .vcard.v4 .v4r b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:13px;line-height:1.3}
.vboard-vor .vcard.v4 .v4r .pill{border-radius:6px;font-size:10.5px;padding:1px 6px;margin:0;flex-shrink:0}
.vboard-vor .vcard.v4 .v4r .av{width:21px;height:21px;font-size:9px;line-height:21px;flex-shrink:0;border-radius:50%;background:var(--accbg);color:var(--acc2);font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.vboard-vor .vcard.v4 .v4t{display:none}   /* время — в развороте; в строке место школе */
/* fin_v2b (Яков 27.09): название учреждения целиком — первая линия; менеджер, время, готовность, срок — вторая */
.vboard-vor .vcard.v4 .v4r{flex-wrap:wrap;row-gap:4px;align-items:flex-start;padding:7px 9px 6px}
.vboard-vor .vcard.v4 .v4r b{white-space:normal;overflow:visible;text-overflow:clip;flex:1 1 0;line-height:1.3;padding-top:1px}
.vboard-vor .vcard.v4 .v4r>.pill{margin-top:1px}
.vboard-vor .vcard.v4 .v4m{flex-basis:100%;display:flex;align-items:center;gap:6px;min-width:0}
.vboard-vor .vcard.v4 .v4m .v4g{flex:1}
.vboard-vor .vcard.v4 .v4m .v4t{display:inline;font-size:11.5px;color:var(--mut);white-space:nowrap}
a.nav.f2hide{display:none!important}
.prd-show a.prd-map{color:var(--acc2);text-decoration:none;font-weight:600}.prd-show a.prd-map:hover{text-decoration:underline}   /* raspisanie_v2 */
/* otmena_v1 (Яков 27.09): на телефоне ряд кнопок карточки (MAX, задача, следующий этап, ⋯) прилипает снизу на стекле */
.v41ph{display:none;flex-basis:100%}
@media (max-width:640px){
  .dealacts.v41stick{position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:45;margin:0;padding:8px;gap:6px;
    flex-wrap:nowrap;justify-content:flex-end;border-radius:16px;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
    border:1px solid var(--glass-edge);box-shadow:var(--e3);animation:v41up .22s var(--ease) both}
  .dealacts.v41stick .ai-btn{display:none}
  .dealacts.v41stick .btn.mini:has(svg.ico){font-size:0;gap:0;padding-left:11px;padding-right:11px}
  .dealacts.v41stick .btn.mini:has(svg.ico) svg.ico{width:17px;height:17px;margin:0}
  .dealacts.v41stick .btn.pri{display:block;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
  .dealacts.v41stick .menu{top:auto;bottom:calc(100% + 10px)}
  body.v41stuck .toast{bottom:calc(84px + env(safe-area-inset-bottom))}
  body.v41stuck .content{padding-bottom:84px}
}
@keyframes v41up{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
/* otmena_v1: тост по центру и во всю ширину текста (анимация «up» сбрасывала сдвиг −50 % — тост уезжал вправо и сжимался) */
.toast{width:max-content;max-width:min(680px,calc(100vw - 24px))}
.toast.show{animation:v41toast .25s ease both}
@keyframes v41toast{from{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.toast.show,.dealacts.v41stick{animation:none}}
/* menu_peek: водопад — «Команде» по именам */
.fwf .f2tt{font-size:12px;font-weight:600;color:var(--acc);text-decoration:none;margin-left:4px;white-space:nowrap}
.fwf .f2team{display:none;margin:0 0 4px 14px;padding:4px 10px;border-left:2px solid var(--line);font-size:12.5px}
.fwf .f2team.open{display:block}.fwf .f2team .kv{padding:3px 0}
/* menu_peek: деньги в развороте воронки — столбиком */
.v4money{display:flex;flex-direction:column;gap:1px;font-variant-numeric:tabular-nums}
.v4mr{display:flex;justify-content:space-between;gap:8px}.v4mr>span{color:var(--mut)}.v4mr>b{font-weight:600;white-space:nowrap}
.v4mr.sum{border-top:1px solid var(--line2);padding-top:2px}.v4mr.sum>span{color:var(--txt)}
.v4mr.cut>b{color:var(--mut)}.v4mr.our>span{color:var(--txt);font-weight:700}.v4mr.our>b{font-weight:800;color:var(--acc2)}   /* fin_v2b: «Сопровождение» / «КПИ» убраны из меню по роли */
@media (min-width:1600px){.vboard-vor .vcard.v4 .v4t{display:inline;font-size:11.5px;color:var(--mut);white-space:nowrap;flex-shrink:0}}
.vboard-vor .vcard.v4 .v4ov{width:16px;height:16px;border-radius:50%;background:var(--redbg);color:var(--red);font-size:11px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.v4d{font-size:11px;font-weight:700;padding:1px 6px;border-radius:6px;white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums}
.v4d.g{background:var(--grnbg);color:var(--grn)}.v4d.y{background:var(--yelbg);color:var(--yel)}.v4d.r{background:var(--redbg);color:var(--red)}.v4d.n{background:var(--line2);color:var(--mut)}
.v4rk{font-size:10.5px;font-weight:800;padding:1px 5px;border-radius:5px;background:var(--line2);color:var(--mut);flex-shrink:0;white-space:nowrap}
.v4rk.red{background:var(--redbg);color:var(--red)}.v4rk.green{background:var(--grnbg);color:var(--grn)}.v4rk.yellow{background:var(--yelbg);color:var(--yel)}
.vboard-vor .vcard.v4 .v4x{display:none;padding:2px 10px 10px;border-top:1px dashed var(--line2);font-size:12.5px;cursor:default}
.vboard-vor .vcard.v4.open .v4x{display:block;animation:v41in var(--t2) var(--ease)}
.v4kv{display:grid;grid-template-columns:96px 1fr;gap:6px;padding:4px 0;line-height:1.4}.v4kv>span{color:var(--mut)}.v4kv i{color:var(--mut2)}.v4kv em.r{color:var(--red);font-style:normal;font-weight:600}.v4kv a{color:var(--acc);font-weight:600;text-decoration:none}
.v4a{display:flex;gap:5px;margin-top:8px;flex-wrap:wrap;align-items:center}
.v4a .btn.ic{width:32px;padding:5px 0;justify-content:center}.v4a .btn.ic svg{width:15px;height:15px}
.v4a .btn.ghost{border-color:transparent;background:transparent;color:var(--mut)}.v4a .btn.ghost:hover{color:var(--txt);background:var(--line2);box-shadow:none;transform:none}
.v4ld{padding:8px 0;color:var(--mut)}
.vboard-vor .vdate{padding:6px 4px 1px;margin-top:1px}
.vboard-vor .vhead{padding:11px 13px;font-size:14px}
@media (min-width:861px){.vboard-vor .vcol{flex:0 0 320px;min-width:320px;max-width:320px}}
@media (max-width:860px){.vboard-vor .vcard.v4 .v4r{min-height:44px}.v4kv{grid-template-columns:84px 1fr}}

/* ── бережные режимы ── */
@media (prefers-reduced-motion:reduce){
  .feed-row,.vcards .vcard,.grp2:not(.closed) .fr,.fr.v41flash,.fh .dotr,.fr .l.req::before{animation:none!important}
  .seg>.v41ind,.feedtabs>.v41ind,.btn,.iconbtn,.vcard{transition:none!important}
  .btn:hover:not(:disabled),.vcard:hover,.iconbtn:hover{transform:none}
}
@media (prefers-reduced-transparency:reduce){
  .dlg:not(.tdlg){background:var(--card);-webkit-backdrop-filter:none;backdrop-filter:none}
  .toast{background:var(--txt);-webkit-backdrop-filter:none;backdrop-filter:none}
}
@supports not (background:color-mix(in srgb,red 50%,blue)){
  .dlg:not(.tdlg){background:var(--card)}
  .toast{background:var(--txt)}.toast.show.err{background:var(--red)}
}
/* zadachi_udalit (03.10.2026): «Удалить задачу» в окне «Изменить задачу» (crm_task.js) — слева в подвале, красная без фона */
.tdlg .tfoot .btn.tdelb{display:inline-flex;align-items:center;gap:6px;flex:none;padding:0 12px;color:var(--red);background:none;border-color:transparent;box-shadow:none}
.tdlg .tfoot .btn.tdelb:hover{background:var(--redbg)}
.tdlg .tfoot .btn.tdelb svg{width:16px;height:16px;flex:none}
.tdlg .tfoot .btn.tdelb[hidden]{display:none}
@media (max-width:600px){.tdlg .tfoot .btn.tdelb{flex:0 0 48px;padding:0;justify-content:center}.tdlg .tfoot .btn.tdelb span{display:none}}
