*{box-sizing:border-box}
html{scroll-behavior:smooth}
/* убираем pinch-zoom / двойной тап на телефоне (viewport meta уже это делает в большинстве браузеров, это — подстраховка) */
html,body{touch-action:manipulation}

/* ---------- unified custom scrollbars (both themes, everywhere) ---------- */
*{scrollbar-width:thin;scrollbar-color:var(--muted) transparent}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--muted);border-radius:8px;border:3px solid transparent;background-clip:padding-box;min-height:36px}
::-webkit-scrollbar-thumb:hover,::-webkit-scrollbar-thumb:active{background:var(--text-2);background-clip:padding-box}
::-webkit-scrollbar-corner{background:transparent}
body{
  margin:0;background:var(--surface);color:var(--text);
  font-family:var(--font-body);font-size:14px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;margin:0;line-height:1.2;text-wrap:balance;letter-spacing:-.01em}
a{color:inherit;text-decoration:none}
button{font-family:inherit;font-size:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}

/* ---------- theme switch: circular reveal (View Transitions) ---------- */
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
::view-transition-old(root){z-index:0}
::view-transition-new(root){z-index:1;animation:vt-reveal .45s cubic-bezier(.4,0,.2,1) forwards}
@keyframes vt-reveal{
  from{clip-path:circle(0% at var(--vt-x,50%) var(--vt-y,50%))}
  to{clip-path:circle(150% at var(--vt-x,50%) var(--vt-y,50%))}
}
@keyframes theme-ico{from{transform:rotate(-45deg) scale(.6);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){::view-transition-new(root){animation:none}}

/* ---------- shell ---------- */
/* grid-template-columns is animated imperatively in toggleMenu() — a stylesheet
   transition on this property freezes in Chrome, so it must NOT be declared here */
.app{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:calc(100vh * var(--vz,1));background:var(--surface)}
.app.nav-closed{grid-template-columns:0px minmax(0,1fr)}
.sidebar{
  background:var(--surface);
  display:flex;flex-direction:column;position:sticky;top:0;height:calc(100vh * var(--vz,1));overflow:hidden;
  transition:transform .28s cubic-bezier(.4,0,.2,1)
}
.app.nav-closed .sidebar{transform:translateX(-100%)}
@media (prefers-reduced-motion:reduce){.sidebar{transition:none}}
.brand{flex:none;display:flex;align-items:center;padding:18px 18px 14px}
.brand-logo{display:block;width:86px;height:auto}
.brand-logo--dark{display:none}
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .brand-logo--light{display:none}
  :root:not([data-theme="light"]) .brand-logo--dark{display:block}
}
:root[data-theme="dark"] .brand-logo--light{display:none}
:root[data-theme="dark"] .brand-logo--dark{display:block}
.nav{padding:6px 10px 18px;display:flex;flex-direction:column;gap:2px;flex:1 1 auto;overflow-y:auto;min-height:0}
.nav-label{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);padding:14px 10px 6px}



.nav-item .ico{flex:none}

.nav-item .count{margin-left:auto}

.sidebar-foot{margin-top:auto;padding:12px;display:flex;flex-direction:column;gap:8px}
/* .viewas-trig — <button>, а не <div>: без явного border:0;background:none тут «прорывался»
   нативный фон кнопки браузера (в тёмной теме — чисто белый, в светлой — просто выглядел как
   готовый серый и потому казался «нормальным»). Плашки в покое быть не должно вообще —
   фон только при наведении, тем же surface-3, что и везде в приложении. */
.viewas-trig{cursor:pointer;border:0;width:100%;text-align:left;background:none;border-radius:10px;padding:4px 8px 4px 10px;transition:background .12s}
.viewas-trig:hover{background:var(--surface-3)}
/* модалка «Смотреть как» — простой кликабельный список, сгруппированный как на «Команде».
   Раньше шапка была на голом .modal-head (крестик — обычная плоская iconbtn, не наш круглый
   .wm-x), а верхняя строка «Я» — с квадратными углами и линией-разделителем на всю ширину,
   единственное такое место в приложении (везде либо карточка, либо круглая пилюля, границ
   между блоками нет). Приводим к общему языку: круглый крестик как у карточек, все строки
   списка — одинаковые скруглённые пилюли без исключений. */
.viewas-modal{max-width:400px}
.viewas-modal .modal-head{padding:18px 20px 12px;border-bottom:0}
.viewas-modal .modal-head h3{font-size:17px}


.viewas-modal .modal-body{padding:6px 12px 16px;max-height:calc(70vh * var(--vz,1));overflow-y:auto}
.viewas-row{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;background:none;border-radius:12px;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:background .12s}

.viewas-row.on{background:var(--accent-soft)}
.viewas-row.viewas-self{margin-bottom:6px}
.viewas-row .avatar{flex:none}
.viewas-i{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.viewas-i .n{font-size:13.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viewas-i .r{font-size:12px;color:var(--muted)}
.viewas-ck{color:var(--accent);flex:none;width:18px;height:18px}
.viewas-sec .viewas-h{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.02em;padding:10px 10px 6px}

/* «Жалобы» — кнопка на странице команды: всегда «тревожная» красная плашка, не просто
   btn--edit-призрак — чтобы не терялась рядом с оранжевой «Добавить сотрудника» */
.tm-complaints-btn{position:relative}

/* .btn--edit .ico задаёт серый цвет по умолчанию — перебиваем, иконка должна быть красной сразу */

.tm-complaints-btn .badge{margin-left:2px!important}

/* модалка — в стиле остальных карточных диалогов (cf-modal: иконка+заголовок), но с
   ФИКСИРОВАННОЙ высотой (не «по контенту»): .cpl-modal сам — flex-колонка (cf-h сверху,
   не двигается), а .modal-body делится на две колонки-секции, каждая — СВОЯ шапка (не
   скроллится) + СВОЙ скролл только для списка карточек. На телефоне колонки идут одна над
   другой и делят высоту .modal-body поровну (тоже каждая со своим скроллом), на широком
   экране — встают рядом (рассмотренные слева). */
/* min-width:0 по всей цепочке flex-контейнеров ниже — иначе классический баг «flex-item не
   сжимается уже своего min-content» толкает всю модалку шире экрана на телефоне вместо того,
   чтобы строка фильтров просто перенеслась (flex-wrap сам по себе это не чинит). */
.cpl-modal{max-width:600px!important;min-width:0;height:min(680px,calc(80vh * var(--vz,1)));display:flex;flex-direction:column;overflow:hidden}
.cpl-modal .cf-h{flex:none}
.cpl-modal .cpl-empty{flex:1}
.cpl-modal .modal-body{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;gap:14px;padding:0!important;overflow:hidden}
/* телефон: колонки друг над другом делили бы высоту пополам — списку оставалось бы всего
   ~230px, едва одна карточка видна. Вместо этого — таб-переключатель, показываем только
   активную секцию, ей достаётся вся высота модалки. Шапка колонки (.cpl-h) в этом режиме
   не нужна — её роль играют сами табы. */







/* телефон: «На рассмотрении» в табе переносилось на 2 строки, «Отправитель»+«Дата» в
   «Рассмотренные» не помещались рядом — тесновато с полями модалки (24/26/22 от .cf-modal)
   и с внутренними отступами самих плашек-фильтров. Ужимаем и то, и другое. */
@media(max-width:640px){
  .cpl-modal{padding:20px 14px 14px!important}
  
  
  
}
@media(min-width:900px){
  .cpl-modal{max-width:min(1220px,calc(calc(100vw * var(--vz,1)) - 48px))!important}
  .cpl-modal .modal-body{flex-direction:row;gap:0 24px}
  
  
}
.cpl-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:30px 10px}
.cpl-empty svg{width:28px;height:28px;color:var(--crit);opacity:.7}
.cpl-empty p{margin:0;font-size:14px;font-weight:600;color:var(--text)}
.cpl-empty span{font-size:12.5px;color:var(--muted);max-width:280px}
/* колонка: шапка фиксирована (flex:none), список карточек — единственное, что скроллится */


.cpl-col-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-bottom:2px}


/* фильтры относятся только к «Рассмотренные» — чтобы не засорять историю, очередь на
   рассмотрении всегда показывается целиком без фильтра. Отправитель+дата в одном ряду,
   департамент — отдельным рядом под ними. Круглые плашки — тот же стиль/анимация (glow при
   открытии), что у «Ведомость» на Зарплатах: .rc-trig и .pay-md .dd-trigger. */


/* .dd-trigger:not(.tm-kb) в базовых стилях (:root ...) специфичнее обычного 2-классового
   селектора (:not() считает специфичность своего аргумента) — без !important не перебить */


.cpl-nomatch{margin:0;padding:22px 10px;text-align:center;color:var(--muted);font-size:13px}
/* карточка жалобы — высота по контенту (не фиксированная: текста бывает то много, то мало,
   обрезать многоточием не нужно — пусть просто растёт под текст) */



.cpl-reporter{display:flex;align-items:center;gap:10px;min-width:0}














/* крестик закрытия в иконных модалках (cf-h) — раньше «оживлённое» вращение при наведении
   было только у modal-head, а .cf-modal явно исключался (:not(.cf-modal)) — теперь и здесь
   такое же поведение, как в модалках Зарплаты/Расходы */




.topbar{
  position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;
  padding:calc(12px + var(--tg-safe-top,0px)) 26px 12px;background:var(--bg);border-bottom:1px solid var(--border);
  border-radius:12px 12px 0 0
}
.topbar h1{font-size:17px}
.topbar .crumb{color:var(--muted);font-family:var(--font-body);font-weight:500;font-size:12.5px}
.topbar-sep{flex:none;width:1px;height:20px;background:var(--border-strong);margin:0 -2px}
.search{margin-left:6px;min-width:210px}
.topbar .dd--auto{margin-left:auto}
.search input{width:100%}






.iconbtn{position:relative}

.iconbtn .dot{position:absolute;top:6px;right:6px}



.topbar .menu-toggle{margin-left:-8px}


.dd--auto{flex:none}
.dd--auto .dd-trigger{width:auto}

.dd--auto .dd-menu{left:0;right:auto;min-width:100%;width:max-content;transform-origin:top left}
.dd--auto .dd-opt{white-space:nowrap;gap:20px}
/* фильтр категорий на «Подрядчиках» — тот же внешний вид/анимация, что у «Вид: Директор» в хедере */
#actorCatFilter .dd-trigger{width:auto}

#actorCatFilter .dd-menu{left:0;right:auto;min-width:100%;width:max-content}


.main{display:flex;flex-direction:column;min-width:0;margin:8px 8px 0;background:var(--bg);border-radius:12px 12px 0 0}
.page{padding:26px;max-width:1220px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:20px}
.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}

.page-head p{margin:6px 0 0;color:var(--muted);font-size:16px}
.page-head .actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* ---------- primitives ---------- */

.card.pad{padding:18px}
.card-head{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--border)}
.card-head h3{font-size:14px}
.card-head .link{margin-left:auto;font-size:12px;color:var(--accent);font-weight:600}
.card-body{padding:18px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}

@media(max-width:1080px){.g3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.g2,.g3{grid-template-columns:1fr}}

.kpi{padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.kpi .label{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.kpi .val{font-family:var(--font-display);font-size:27px;font-weight:600;letter-spacing:-.02em}
.kpi .sub{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px}






.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px}
.pill--ok{background:var(--ok-soft);color:var(--ok)}
.pill--warn{background:var(--warn-soft);color:var(--warn)}
.pill--crit{background:var(--crit-soft);color:var(--crit)}
.pill--neutral{background:var(--surface-3);color:var(--text-2)}
.pill--accent{background:var(--accent-soft);color:var(--accent)}

.progress{height:7px;border-radius:999px;background:var(--surface-3);overflow:hidden;flex:1;min-width:0}
.progress > i{display:block;height:100%;border-radius:999px;background:var(--accent)}
.progress.ok > i{background:var(--ok)}
.progress.warn > i{background:var(--warn)}
.progress.crit > i{background:var(--crit)}

.avatar{width:30px;height:30px;border-radius:999px;display:grid;place-items:center;font-size:11px;flex:none;overflow:hidden}
/* «Актёры и модели» — карточка-профиль по референсу пользователя: крупное фото
   сверху, кебаб поверх, имя + описание, три равных стата, тёмная кнопка снизу. */
.act-card{transition:box-shadow .14s ease,transform .14s ease}
.act-card:hover{box-shadow:0 10px 24px -12px rgba(0,0,0,.28);transform:translateY(-2px)}
@media(prefers-reduced-motion:reduce){.act-card{transition:none}.act-card:hover{transform:none}}







.act-card-desc{display:flex;flex-direction:column;gap:6px}
.act-card-sub{margin:0;font-size:12.5px;color:var(--text-2);line-height:1.4}
.act-card-sub::first-letter{text-transform:uppercase}



















/* «Актёры и модели» — контакты и проекты в модалке бронирования */







.act-profile-contact{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:9px;background:var(--surface-2);color:var(--text);font-size:12.5px;font-weight:600;transition:box-shadow .12s ease}
.act-profile-contact:hover{box-shadow:inset 0 0 0 999px rgba(0,0,0,.05)}
.act-profile-contact .ico{width:15px;height:15px;color:var(--muted);flex:none}
.act-profile-contact span{flex:1;min-width:0;font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
button.act-profile-contact{border:0;width:100%;font:inherit;text-align:left}
button.act-profile-contact span{color:var(--muted);font-family:var(--font-body);font-weight:600;letter-spacing:normal}
.act-profile-contact em{flex:none;font-style:normal;color:var(--accent);font-weight:700;font-size:11.5px}
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.avatar.lg{width:44px;height:44px;font-size:14px}
.avatar.sm{width:24px;height:24px;font-size:9.5px}
.stack{display:flex}
.stack .avatar{margin-left:-8px}
.stack .avatar:first-child{margin-left:0}















.table{width:100%;border-collapse:collapse;font-size:13px}
.table th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border)}
.table td{padding:11px 14px;border-bottom:1px solid var(--border);color:var(--text-2)}
.table tr:last-child td{border-bottom:0}
.table tr:hover td{background:var(--surface-2)}
.table .strong{color:var(--text);font-weight:600}
.tablewrap{overflow-x:auto}
.pay-sh-sum + .tablewrap{margin-top:24px}

.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);padding:0 2px}
.tab{padding:9px 13px;font-weight:600;font-size:13px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.tab:hover{color:var(--text)}
.tab.active{color:var(--text);border-color:var(--accent)}

.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-2)}
.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}


.list{display:flex;flex-direction:column}
.row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.row:last-child{border-bottom:0}
.row .grow{flex:1;min-width:0}
.row .t{font-weight:600;color:var(--text);font-size:13px}
.row .m{font-size:12px;color:var(--muted)}
.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.deptbar{width:3px;align-self:stretch;border-radius:999px;flex:none}
.dept-pp{background:var(--dept-pp)}
.dept-mont{background:var(--dept-mont)}
.dept-ai{background:var(--dept-ai)}
.dept-text-pp{color:var(--dept-pp)}
.dept-text-mont{color:var(--dept-mont)}
.dept-text-ai{color:var(--dept-ai)}

.empty{padding:40px}
.kv{display:grid;grid-template-columns:130px 1fr;gap:8px 14px;font-size:13px}
.kv dt{color:var(--muted)}
.kv dd{margin:0;color:var(--text);font-weight:500}

.overdue{color:var(--crit);font-weight:700}
.hint{font-size:12px;color:var(--muted)}

/* ===== new-project wizard ===== */
/* редизайн по референсу дашборда (белые карточки, круглый гейдж-прогресс, жирный чёрный
   типограф, один акцентный оранжевый) — эта карточка нарочно светлая «остров» на тёмной
   странице, как и раньше был белый трек, только теперь оформлена полноценно, а не голым
   треком. Круглый гейдж — conic-gradient «пончик» с процентом внутри; подпись рядом — не
   имя шага (это уже видно на самих таблетках ниже, дублировать нельзя), а факт «N из 8». */
.wz-steps-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:22px 24px;margin-bottom:4px;box-shadow:0 1px 3px rgba(0,0,0,.08),0 10px 26px -14px rgba(0,0,0,.35)}
.wz-gauge-row{display:flex;align-items:center;gap:16px;margin-bottom:18px}
@property --p{syntax:'<number>';inherits:true;initial-value:0}
.wz-ring{position:relative;width:64px;height:64px;border-radius:999px;flex:none;display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--p)*3.6deg), var(--surface-3) 0);transition:--p .8s cubic-bezier(.22,1,.36,1)}
@media(prefers-reduced-motion:reduce){.wz-ring{transition:none}}
.wz-ring::after{content:'';position:absolute;inset:7px;background:var(--surface);border-radius:999px}
.wz-ring b{position:relative;z-index:1;font-family:var(--font-display);font-weight:800;font-size:13.5px;color:var(--text);letter-spacing:-.02em}
.wz-gauge-tx .n{font-family:var(--font-display);font-weight:800;font-size:22px;color:var(--text);letter-spacing:-.01em;line-height:1.15}
.wz-gauge-tx .l{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}
.wz-steps{display:flex;gap:6px}
.wz-steps .st{flex:1;min-width:0;border:0;border-radius:10px;background:var(--surface-2);color:var(--muted);padding:10px 6px;font:inherit;font-size:11.5px;font-weight:700;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .18s ease,color .18s ease,box-shadow .18s ease,transform .15s ease}
.wz-steps .st:hover:not(.on){background:var(--surface-3);color:var(--text-2)}
.wz-steps .st.ok{background:var(--accent-soft);color:var(--accent)}
.wz-steps .st.ok .ck{color:var(--accent);margin-right:3px;display:inline-flex;vertical-align:-2px}
.wz-steps .st.ok .ck .ico{width:12px;height:12px;stroke-width:2.4}
.wz-steps .st.on{background:var(--accent);color:#fff;transform:translateY(-1px)}
@media(prefers-reduced-motion:reduce){.wz-steps .st{transition:none}}
.wz-shell{display:flex;flex-direction:column;box-shadow:0 1px 3px rgba(0,0,0,.08),0 10px 26px -14px rgba(0,0,0,.35)}
.wz-shell-body{padding:24px 26px}










.in{width:100%}






.inline-wrap{display:flex;flex-wrap:wrap;gap:9px 14px;align-items:center}
.ck{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500;cursor:pointer}
.ck input{accent-color:var(--accent);width:15px;height:15px}
.subcard{border:1px solid var(--border);border-radius:9px;padding:13px 14px;margin-bottom:10px;background:var(--surface-2)}
.subcard h4{margin:0 0 9px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);display:flex;justify-content:space-between;align-items:center}




.gate{border-radius:10px;padding:13px 15px;margin-bottom:16px;font-size:13px;background:var(--warn-soft);border:1px solid var(--warn)}

.gate b{display:block;margin-bottom:3px}
.gate ul{margin:6px 0 0;padding-left:18px;color:var(--text-2)}


.wz-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 26px;background:var(--surface);border-top:1px solid var(--border);border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}
.wz-draft{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--muted)}
.wz-draft .ico{width:13px;height:13px;color:var(--ok)}







/* клиентский пикер на шаге 1 — настоящий .dd/.dd--auto, как «Вид: Директор» в хедере
   (те же цвета, наведение, рамка+кольцо при открытии, чеврон, анимация меню); «Новый клиент»
   и сфера в пункте — единственные отличия */
.wz-client-dd{margin-bottom:16px;width:max-content;min-width:240px;max-width:100%}
.wz-client-dd .dd-trigger{width:100%}
.wz-cl{display:block}
.wz-cl.has-info{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px;align-items:stretch}
.wz-cl.has-info .wz-cl-l,.wz-cl.has-info .wz-cl-r{display:flex;flex-direction:column;min-width:0}
.wz-cl.has-info .wz-cl-l .dd{flex:none}
.wz-cl.has-info .wz-ci-contact,.wz-cl.has-info .wz-ci-projs{flex:1 1 auto;justify-content:flex-start}
.wz-cl-r{padding-top:0}
.wz-ci-stats{display:flex;gap:32px;padding:0 14px;margin-bottom:16px;height:33px;flex:none;align-items:flex-start}
.wz-ci-stat{display:flex;flex-direction:column;gap:3px}
.wz-ci-stat .l{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.wz-ci-stat .v{font-size:20px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;line-height:1.2}
.wz-ci-h{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:4px}
.wz-ci-contact,.wz-ci-projs{min-width:0}
@media(max-width:700px){.wz-cl.has-info{grid-template-columns:1fr;gap:16px}}
.wz-ci-proj{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:6px 0}
.wz-ci-pmain{display:flex;flex-direction:column;gap:2px;min-width:0}
.wz-ci-pn{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-ci-pm{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-ci-proj .pill{flex:none}
.wz-ci-who{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 8px;padding:3px 0;font-size:13px}
.wz-ci-who b{font-weight:600;color:var(--text)}
.wz-ci-who span{color:var(--muted);font-weight:600}
.wz-ci-line{padding:3px 0;font-size:13px;font-weight:600;color:var(--text)}
.wz-ci-line a{color:inherit}
.wz-client-dd .dd-opt{gap:12px}
.wz-client-dd .dd-opt .ck{display:none}
.wz-client-dd .dd-opt .sph{margin-left:auto;font-size:11.5px;font-weight:500;color:var(--muted)}





/* шаг 1 («Клиент») — редизайн: мелкий жирный киккер-заголовок секции вместо голого
   старта с поля, и «Реквизиты ТЗ» вместо серого dt/dd-блока — три лёгких чипа-карточки,
   без рамки/фона-плашки под всем сразу, в духе плиток на карточке степпера сверху. */
.wz-s1-lbl{font-size:14px;font-weight:600;color:var(--text);margin-bottom:12px}
.wz-meta-row{display:flex;gap:10px;flex-wrap:wrap}
.wz-meta-chip{flex:1 1 200px;background:var(--surface-2);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}
.wz-meta-chip .l{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.wz-meta-chip .v{font-size:13.5px;font-weight:700;color:var(--text);display:flex;align-items:center;min-height:33px}
.wz-meta-chip .v em{font-style:normal;font-weight:500;color:var(--muted);font-size:11px;margin-left:6px}
.wz-meta-chip .in{max-width:220px}




.wz-nc{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,6fr);gap:12px;align-items:stretch}
.wz-nc .wz-meta-chip{gap:10px;min-width:0}
.wz-nc .in{max-width:none}
.wz-nc-g{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 12px}
.wz-f{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:600;color:var(--text-2)}
.wz-f em{font-style:normal;font-weight:400;color:var(--muted)}
@media(max-width:700px){.wz-nc,.wz-nc-g{grid-template-columns:1fr}}
.wz-rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.wz-rule{background:var(--surface-2);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:6px}
.wz-rule .n{font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--muted);font-variant-numeric:tabular-nums}
.wz-rule b{font-size:13.5px;font-weight:600;color:var(--text);line-height:1.35}
.wz-rule p{margin:0;font-size:12.5px;line-height:1.55;color:var(--text-2)}
.wz-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.wz-two .wz-meta-chip{min-width:0}
.wz-two .in{max-width:none}
.wz-meta-chip .l .wz-opt{font-style:normal;font-weight:400;text-transform:none;letter-spacing:0}
@media(max-width:800px){.wz-rules,.wz-two{grid-template-columns:1fr}}
.wz-ck{position:relative;display:flex;align-items:center;gap:10px;margin-top:4px;cursor:pointer;font-size:13.5px;font-weight:600;color:var(--text);user-select:none}
.wz-ck input{position:absolute;opacity:0;width:0;height:0}
.wz-ck .box{flex:none;width:20px;height:20px;border-radius:6px;border:1.5px solid var(--border-strong);background:var(--field);display:grid;place-items:center;transition:background .16s,border-color .16s,box-shadow .16s,transform .12s}
.wz-ck:hover .box{border-color:var(--accent)}
.wz-ck:active .box{transform:scale(.9)}
.wz-ck .box svg{width:14px;height:14px;fill:none;stroke:var(--accent-fg);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:22;stroke-dashoffset:22;transition:stroke-dashoffset .24s cubic-bezier(.4,0,.2,1) .06s}
.wz-ck input:checked + .box{background:var(--accent);border-color:var(--accent);animation:wz-ck-pop .3s cubic-bezier(.34,1.56,.64,1)}
.wz-ck input:checked + .box svg{stroke-dashoffset:0}
.wz-ck input:focus-visible + .box{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
@keyframes wz-ck-pop{0%{transform:scale(.8)}100%{transform:scale(1)}}
.wz-ck-date{margin:0 0 0 30px;max-height:0;overflow:hidden;opacity:0;transform:translateY(-4px);font-size:12.5px;font-weight:500;color:var(--muted);transition:opacity .22s ease,transform .22s ease,max-height .22s ease,margin .22s ease}
.wz-ck-date.on{max-height:24px;opacity:1;transform:none;margin-top:8px}
@media(prefers-reduced-motion:reduce){.wz-ck .box,.wz-ck .box svg,.wz-ck-date{transition:none}.wz-ck input:checked + .box{animation:none}}
textarea.wz-ta{flex:1 1 auto;min-height:76px;padding:10px 13px;resize:none;line-height:1.5;overflow:hidden;transition:border-color .16s,box-shadow .16s,background .16s}
.wz-pf-other{display:grid;grid-template-rows:0fr;opacity:0;pointer-events:none;transition:grid-template-rows .5s cubic-bezier(.22,1,.36,1),opacity .4s ease,margin-top .5s cubic-bezier(.22,1,.36,1)}
.wz-pf-other>div{overflow:hidden;min-height:0;padding:4px;margin:-4px}
.wz-two .wz-pf-other .in{max-width:260px}
.wz-pf-other.on{grid-template-rows:1fr;opacity:1;pointer-events:auto;margin-top:12px}
@media(prefers-reduced-motion:reduce){.wz-pf-other{transition:none}}
.wz-tip{position:fixed;z-index:80;display:none;width:310px;max-height:calc(calc(100vh * var(--vz,1)) - 24px);overflow:auto;padding:14px 16px 8px;background:var(--surface);border:1px solid var(--border-strong);border-radius:14px;box-shadow:0 18px 40px -12px rgba(0,0,0,.55),0 2px 6px rgba(0,0,0,.2);pointer-events:none;font-size:12px;color:var(--text-2)}
.wz-tip-h{display:flex;align-items:baseline;gap:8px;padding-bottom:10px}
.wz-tip-h b{font-size:15px;font-weight:600;color:var(--text)}
.wz-tip-h span{font-size:12px;color:var(--muted);text-transform:capitalize}
.wz-tip-h em{margin-left:auto;font-style:normal;font-size:11.5px;font-weight:600;color:var(--accent);background:var(--accent-soft);padding:2px 9px;border-radius:999px}
.wz-tip-p{margin:0 -16px;padding:10px 16px 12px;border-top:1px solid var(--border)}
.wz-tip-p .n{display:flex;align-items:baseline;gap:7px;margin-bottom:6px}
.wz-tip-p .n b{font-size:13px;font-weight:600;color:var(--text)}
.wz-tip-p .n span{font-size:11px;color:var(--muted)}
.wz-tip-p .r{display:flex;align-items:center;gap:10px;padding:2px 0}
.wz-tip-p .t{flex:none;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--accent);background:var(--accent-soft);padding:3px 9px;border-radius:6px}
.wz-tip-p .t.f{background:none;padding:3px 0;color:var(--text);font-weight:600}
.wz-tip-p .p{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2)}
.wz-sp2{display:grid;grid-template-columns:340px minmax(0,1fr);gap:12px;align-items:start}
.wz-sp2 .wz-meta-chip{min-width:0;padding:16px;gap:0}
.wz-cal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.wz-cal-hd b{font-size:14px;font-weight:600;text-transform:capitalize;color:var(--text)}
.wz-cal-hd button{width:33px;height:33px;display:grid;place-items:center;border:1px solid var(--field-border);border-radius:8px;background:var(--field);color:var(--text);cursor:pointer;transition:border-color .12s,background .12s}
.wz-cal-hd button:hover{border-color:var(--border-strong);background:var(--surface)}
.wz-cal-hd .prev{transform:rotate(90deg)}
.wz-cal-hd .next{transform:rotate(-90deg)}
.wz-cal-g2{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.wz-cal-g2 .wd{font-size:10.5px;font-weight:700;text-transform:uppercase;color:var(--muted);text-align:center;padding:2px 0 5px}
.wz-cd2{position:relative;height:40px;border:0;border-radius:9px;background:var(--surface);color:var(--text);font:inherit;padding:6px 7px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;cursor:pointer;transition:background .18s ease,box-shadow .18s ease}
.wz-cd2 .n{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1}
.wz-cd2 .c{align-self:flex-end;font-size:10.5px;font-weight:700;color:var(--text);opacity:.85;font-variant-numeric:tabular-nums;line-height:1}
.wz-cd2 .cam{position:absolute;bottom:5px;left:6px;width:12px;height:12px;color:var(--text)}
.wz-cd2.lv1{background:#ffe0cb}
.wz-cd2.lv2{background:#ffc199}
.wz-cd2.lv1 .n,.wz-cd2.lv2 .n,.wz-cd2.lv3 .n,.wz-cd2.lv1 .c,.wz-cd2.lv2 .c,.wz-cd2.lv3 .c,.wz-cd2.lv1 .cam,.wz-cd2.lv2 .cam,.wz-cd2.lv3 .cam{color:#2a1200}
.wz-cd2.lv3{background:#ffa36b}
.wz-cd2:hover:not(:disabled){box-shadow:inset 0 0 0 1.5px var(--border-strong)}
.wz-cd2.we .n{color:var(--muted)}
.wz-cd2.today .n{color:var(--accent)}
.wz-cd2.past{opacity:.3;cursor:default}
.wz-cd2.focus,.wz-cd2.focus:hover{box-shadow:inset 0 0 0 2.5px var(--accent)}
.wz-df-pm{margin:2px 0 14px}
.wz-rng-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.wz-rng-h b{font-size:17px;font-weight:700;letter-spacing:-.01em;color:var(--text);font-variant-numeric:tabular-nums}
.wz-rng-h span{font-size:19px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.wz-rng{position:relative;margin:10px 10px 0;padding:14px 0 24px;touch-action:none;cursor:pointer}
.wz-rng .tr{position:relative;height:6px;border-radius:3px;background:var(--surface-3)}
.wz-rng .bz{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--text) 26%,transparent);border-radius:3px}
.wz-rng .fl{position:absolute;top:0;bottom:0;background:var(--accent);border-radius:3px;transition:left .22s cubic-bezier(.22,1,.36,1),width .22s cubic-bezier(.22,1,.36,1)}
.wz-rng .h{position:absolute;top:7px;width:20px;height:20px;padding:0;border:0;border-radius:999px;background:#fff;box-shadow:0 0 0 3px var(--accent),0 2px 8px rgba(0,0,0,.4);transform:translateX(-50%);cursor:grab;transition:left .22s cubic-bezier(.22,1,.36,1),transform .16s ease,box-shadow .16s ease}
.wz-rng .h:hover{transform:translateX(-50%) scale(1.12)}
.wz-rng .h:focus-visible{outline:0;box-shadow:0 0 0 3px var(--accent),0 0 0 7px var(--accent-soft),0 2px 8px rgba(0,0,0,.4)}
.wz-rng.drag,.wz-rng.drag .h{cursor:grabbing}
.wz-rng.drag .h,.wz-rng.drag .fl{transition:none}
.wz-rng.drag .h{transform:translateX(-50%) scale(1.18)}
.wz-rng .tk{position:absolute;left:-6px;right:-6px;bottom:0;display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums;pointer-events:none}
.wz-df-vid{display:flex;align-items:flex-end;gap:14px;margin-top:18px}
.wz-df-vid .wz-f{gap:3px;width:112px;flex:none}
.wz-df-vid .wz-f>span{font-size:11.5px;font-weight:600;color:var(--muted)}
.wz-df-vid .wz-stepper{width:100%}
.wz-df-vid .wz-stepper button{width:28px;flex:none}
.wz-df-vid .wz-stepper .val{flex:1;min-width:0;padding:0}
.wz-df-vid .hint{margin:0 0 8px}
@media(prefers-reduced-motion:reduce){.wz-rng .fl,.wz-rng .h{transition:none}}
.wz-ops-l{margin-top:18px;margin-bottom:3px}
.wz-ops-l>span{font-size:11.5px;font-weight:600;color:var(--muted)}
.wz-oc-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.wz-oc{position:relative;display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:9px 11px;border:1px solid var(--field-border);border-radius:9px;background:var(--field);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s}
.wz-oc b{font-size:13px;font-weight:600;line-height:1.2}
.wz-oc span{font-size:11.5px;color:var(--muted);line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-oc i{position:absolute;top:8px;right:8px;width:16px;height:16px;border-radius:999px;display:grid;place-items:center;background:var(--accent);color:var(--accent-fg);opacity:0;transform:scale(.5);transition:opacity .18s,transform .22s cubic-bezier(.34,1.56,.64,1)}
.wz-oc i .ico{width:10px;height:10px;stroke-width:3.2}
.wz-oc:hover:not(:disabled){border-color:var(--border-strong)}
.wz-oc.on{border-color:var(--accent);background:var(--accent-soft)}
.wz-oc.on i{opacity:1;transform:scale(1)}
.wz-oc.bad span{color:var(--crit)}
.wz-oc:disabled{opacity:.5;cursor:not-allowed}
.wz-sd-act{justify-content:space-between !important}
.wz-sd-empty{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:8px 0}
.wz-sd-empty b{font-size:14px;font-weight:600;color:var(--text)}
.wz-sd-empty span{font-size:12.5px;line-height:1.5}
.wz-df-h{display:flex;align-items:baseline;gap:8px}
.wz-df-h b{font-size:16px;font-weight:600;color:var(--text)}
.wz-df-h span{font-size:12.5px;color:var(--muted);text-transform:capitalize}
.wz-sd-tag{margin-left:auto;font-style:normal;font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--surface-3);color:var(--text-2)}
.wz-df-pm{margin:4px 0 14px;font-size:13px;font-weight:600;color:var(--text-2)}
.wz-df-pm.crit{color:var(--crit)}












.wz-ck input:disabled + .box{opacity:.4}
.wz-ck input:disabled ~ span{opacity:.5}
.wz-sd-warn{margin:8px 0 0;font-size:12px;line-height:1.5;color:var(--crit)}
.wz-sd-act{padding-top:14px;display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}

.wz-pl2{margin-top:16px;display:flex;flex-direction:column;gap:8px}
.wz-pl2-hd{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 2px 2px}
.wz-pl2-hd b{font-size:14px;font-weight:600;color:var(--text)}
.wz-pd{padding:14px 16px 16px;border-radius:12px;background:var(--surface-2);cursor:pointer}
.wz-pd .h{display:flex;align-items:baseline;gap:8px;margin-bottom:12px}
.wz-pd .h b{font-size:15px;font-weight:600;color:var(--text)}
.wz-pd .h span{font-size:12.5px;color:var(--muted);text-transform:capitalize}
.wz-pd .g{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,.6fr) minmax(0,1.5fr);gap:12px 18px}
.wz-pd .g>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.wz-pd .l{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.wz-pd .g b{font-size:14px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:800px){.wz-sp2{grid-template-columns:1fr}.wz-pd .g{grid-template-columns:1fr 1fr}}
.wz-dl{min-width:0}
.wz-exp{margin-top:4px;font-size:14px !important}
.wz-dl .att-cal{margin-left:0;width:100%}
.wz-dl .att-cal-trig{width:216px;max-width:100%;margin-top:4px}
.wz-dl .att-cal-trig span{flex:1}



.wz-dl .att-cal-pop{left:0;right:auto;top:auto;bottom:calc(100% + 6px)}
@keyframes wz-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes wz-fade{from{opacity:0}to{opacity:1}}
@keyframes wz-tip-in{from{opacity:0;transform:translateY(5px) scale(.98)}to{opacity:1;transform:none}}
.wz-rise{animation:wz-rise .36s cubic-bezier(.22,1,.36,1) both}
.wz-fade{animation:wz-fade .3s ease both}
.wz-tip{animation:wz-tip-in .18s cubic-bezier(.22,1,.36,1)}
.wz-sd-warn,.wz-df-pm.crit{animation:wz-fade .25s ease both}
.wz-pd.leaving{opacity:0;transform:translateX(14px) scale(.985);pointer-events:none;transition:opacity .22s ease,transform .24s cubic-bezier(.4,0,.2,1)}
@media(prefers-reduced-motion:reduce){.wz-rise,.wz-fade,.wz-tip,.wz-sd-warn,.wz-df-pm.crit{animation:none}.wz-pd.leaving{transition:none}}
.wz-meta-chip,.wz-rule{box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}
.wz-pd{box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35);transition:opacity .2s ease}





.wz-meta-chip.bad{box-shadow:inset 0 0 0 1.5px var(--crit),0 8px 18px -12px rgba(0,0,0,.35)}
.wz-meta-chip.bad>.l{color:var(--crit)}

.wz-notice{max-width:420px}
.wz-nt-h{display:flex;align-items:center;gap:12px;padding:18px 20px 6px}
.wz-nt-h .ic{flex:none;width:34px;height:34px;border-radius:999px;display:grid;place-items:center;background:var(--crit-soft);color:var(--crit);font-size:17px;font-weight:800}
.wz-nt-h b{display:block;font-size:15px;font-weight:600;color:var(--text)}
.wz-nt-h span:not(.ic){font-size:12.5px;color:var(--muted)}
.wz-nt-l{list-style:none;margin:8px 0 0;padding:0 20px;display:flex;flex-direction:column;gap:2px;max-height:min(calc(46vh * var(--vz,1)),320px);overflow:auto}
.wz-nt-l li{position:relative;padding:8px 0 8px 18px;font-size:13px;line-height:1.45;color:var(--text);border-bottom:1px solid var(--border)}
.wz-nt-l li:last-child{border-bottom:0}
.wz-nt-l li::before{content:'';position:absolute;left:2px;top:14px;width:7px;height:7px;border-radius:999px;background:var(--crit)}
.wz-nt-l li.more{color:var(--muted);padding-left:18px}
.wz-nt-l li.more::before{background:var(--border-strong)}
.wz-nt-f{display:flex;justify-content:flex-end;padding:14px 20px 18px}
.wz-vcs{display:flex;flex-direction:column;gap:12px}
.wz-vc{background:var(--surface-2);border-radius:12px;padding:16px 18px 18px;box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35);transition:opacity .22s ease,transform .24s cubic-bezier(.4,0,.2,1)}
.wz-vc.leaving{opacity:0;transform:translateX(14px) scale(.985);pointer-events:none}
.wz-vc-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.wz-vc-h b{font-size:15px;font-weight:600;color:var(--text)}
.wz-vc-g{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px 14px}
.wz-vc-g .c2{grid-column:span 2}.wz-vc-g .c4{grid-column:span 4}.wz-vc-g .c5{grid-column:span 5}.wz-vc-g .c6{grid-column:span 6}.wz-vc-g .c7{grid-column:span 7}.wz-vc-g .c8{grid-column:span 8}.wz-vc-g .c12{grid-column:1/-1}
.wz-vc .wz-f{gap:5px;min-width:0}
.wz-vc .wz-f>span{font-size:11.5px;font-weight:600;color:var(--muted)}








.wz-vc .dd-menu{min-width:100%}
.wz-vc label.btn{width:100%}
.wz-ro{display:flex;align-items:center;gap:8px;height:33px;padding:0 13px;border-radius:8px;border:1px solid var(--field-border);background:var(--field);font-size:12.5px;font-weight:600;color:var(--text-2)}
.wz-ro .ico{width:15px;height:15px;color:var(--muted);flex:none}
@media(max-width:820px){.wz-vc-g .c7,.wz-vc-g .c2,.wz-vc-g .c4,.wz-vc-g .c5,.wz-vc-g .c6,.wz-vc-g .c8{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){.wz-vc{transition:none}}



.wz-vc .wz-oc{background:var(--field)}
.wz-vc .wz-oc.on{background:var(--accent-soft)}
.wz-vc .wz-oc.bad:not(.on) span{color:var(--muted)}
.wz-stepper--in .val{border:0;background:transparent;color:var(--text);font:inherit;font-size:14px;font-weight:700;text-align:center;outline:0;padding:0;width:100%;min-width:0;font-variant-numeric:tabular-nums;user-select:text}
.wz-stepper--sm .val{width:40px;flex:none}
.wz-stepper--in .val::placeholder{color:var(--muted);font-weight:600}


.wz-pkc2{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.wz-pc{position:relative;display:flex;flex-direction:column;gap:12px;padding:12px 13px;border:1px solid var(--field-border);border-radius:10px;background:var(--field);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background .18s ease,border-color .18s ease,box-shadow .18s ease}
.wz-pc:hover{border-color:var(--border-strong);background:var(--surface)}
.wz-pc .t{display:flex;align-items:center;gap:9px;min-width:0;padding-right:22px}
.wz-pc .t .avatar{width:28px;height:28px;font-size:10.5px;flex:none}
.wz-pc .t b{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-pc .m{display:flex;align-items:flex-end;justify-content:space-between;gap:8px}
.wz-pc .n{font-size:22px;font-weight:700;line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--text)}
.wz-pc .n small{font-size:12px;font-weight:600;color:var(--muted);margin-left:5px;letter-spacing:0}
.wz-lv{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.wz-lv.lv0{background:var(--surface-3);color:var(--text-2)}
.wz-lv.lv1{background:var(--accent-soft);color:var(--accent)}
.wz-lv.lv2{background:var(--accent);color:var(--accent-fg)}
.wz-pc .ck{position:absolute;top:10px;right:10px;width:16px;height:16px;border-radius:999px;display:grid;place-items:center;background:var(--accent);color:var(--accent-fg);opacity:0;transform:scale(.5);transition:opacity .18s,transform .22s cubic-bezier(.34,1.56,.64,1)}
.wz-pc .ck .ico{width:10px;height:10px;stroke-width:3.2}
.wz-pc.on{border-color:var(--accent);background:var(--accent-soft)}
.wz-pc.on .ck{opacity:1;transform:scale(1)}
.wz-pkc2.bad .wz-pc:not(.on){border-color:var(--crit);background:var(--crit-soft)}
.wz-pills{display:flex;flex-wrap:wrap;gap:8px}




.wz-meta-chip .wz-pills{margin-top:6px}
.wz-two > .wz-meta-chip{min-width:0}
.wz-two{margin-top:0}
.wz-two + .wz-two{margin-top:12px}
.wz-two--w{grid-template-columns:minmax(0,7fr) minmax(0,3fr)}

/* карточки реквизита/техники в мастере — 1:1 дизайн со страницы «Инвентарь» (.pj-card.gr-card), только кликабельные */












.wz-oc--gear{flex-direction:row;align-items:center;gap:10px;padding-right:26px}
.wz-oc-ic{width:32px;height:32px;flex:none;border-radius:9px;background:color-mix(in srgb,var(--text) 8%,transparent);display:grid;place-items:center;color:var(--text-2)}
.wz-oc-ic .ico{width:15px;height:15px}
.wz-oc--gear.on .wz-oc-ic{background:rgba(255,255,255,.22);color:#fff}
.wz-oc-i{display:flex;flex-direction:column;gap:1px;min-width:0}
.wz-oc-i b{font-size:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-oc-i span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.wz-maprow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:0}
.wz-maprow.bad .wz-ck .box{border-color:var(--crit);background:var(--crit-soft)}
.wz-maprow .wz-ck{margin:0 0 0 4px}
.wz-mapv{display:flex;align-items:center;gap:10px;min-height:33px}
.wz-mapv .pin{width:33px;height:33px;flex:none;border-radius:8px;display:grid;place-items:center;background:var(--accent);color:var(--accent-fg)}
.wz-mapv .pin .ico{width:16px;height:16px}
.wz-mapv .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.wz-mapv .tx b{font-size:13px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.wz-mapv .tx span{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-mapm{max-width:720px}
.wz-mapbox{height:380px}
.wz-map-info{display:flex;flex-direction:column;gap:2px;min-height:34px}
.wz-map-info b{font-size:13.5px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.wz-map-info span{font-size:12px;color:var(--muted)}
.wz-map-act{display:flex;align-items:center;gap:8px}
.wz-sumv{padding:6px 16px 8px}
.wz-sumv .r{display:grid;grid-template-columns:28px minmax(0,1.6fr) 60px minmax(0,1.3fr) minmax(0,1.2fr) minmax(0,1.2fr);gap:12px;align-items:center;padding:9px 0;border-top:1px solid var(--border);font-size:13px;color:var(--text-2)}
.wz-sumv .r:first-child{border-top:0}
.wz-sumv .r.h{padding:8px 0 6px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.wz-sumv .r b{color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-sumv .r span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-sumv .r .n{color:var(--muted);font-variant-numeric:tabular-nums}
.wz-refs2{margin-top:12px}




.wz-sub{margin-top:0}



.wz-padw{display:flex;flex-direction:column;gap:7px;align-items:flex-start}
.wz-pad-row{display:flex;align-items:center;gap:14px}
.wz-logopos-row{display:flex;gap:28px;flex-wrap:wrap;align-items:flex-start;margin-top:8px}
.wz-ai-vidnm{font-size:11.5px;font-weight:600;color:var(--muted)}
.wz-clientcard-nm{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--text)}
.wz-clientcard-cn{margin-top:4px;font-size:13px;color:var(--text-2)}
.wz-padw .t{font-size:11.5px;font-weight:600;color:var(--muted)}
.wz-pad{display:grid;grid-template-columns:repeat(3,34px);grid-template-rows:repeat(3,22px);gap:4px;padding:6px;border:1px solid var(--field-border);border-radius:9px;background:var(--field)}
.wz-pad button{border:0;border-radius:5px;background:var(--surface-3);cursor:pointer;transition:background .16s ease,transform .14s ease}
.wz-pad button:hover:not(.on){background:var(--border-strong)}
.wz-pad button.on{background:var(--accent)}
.wz-padl{font-size:12px;font-weight:600;color:var(--text-2)}
.wz-meta-chip label.btn{width:fit-content}


@media(max-width:820px){.wz-sumv .r{grid-template-columns:24px 1fr 50px;gap:8px}.wz-sumv .r span:nth-child(n+4){display:none}}


.wz-two--top{align-items:start}
/* шаг «Монтаж»: часть плашек в паре раскрывается доп.содержимым (файл, язык и т.д.) — без выравнивания
   по высоте соседняя плашка остаётся короткой и под ней/рядом виснет пустота, ряд выглядит «вразброс» */
#tz-4 .wz-two--top{align-items:stretch}
#tz-4 .wz-two--top > .wz-meta-chip{display:flex;flex-direction:column}
.wz-vcs > .wz-meta-chip{flex:none}
.wz-inrow{display:flex;align-items:center;gap:8px;margin-top:6px}
.wz-inrow .in{max-width:none;flex:1 1 100px;min-width:80px}
.wz-inrow .wz-filectl{max-width:60%}

#tz-3 .wz-meta-chip .in,#tz-4 .wz-meta-chip .in{max-width:none}



.wz-subg{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.wz-subg .l{display:block;margin-bottom:6px}







.wz-dl .att-cal.wz-scd .att-cal-pop{top:calc(100% + 6px);bottom:auto}

#tz-5 .wz-vc-h{margin-bottom:0}
#tz-5 .wz-vc-h + .wz-vc-g{margin-top:14px}
#tz-5 .wz-vc .in{max-width:none}
#tz-5 .wz-dl .att-cal-trig{width:100%;margin-top:0}
.wz-gate{display:flex;flex-direction:column;gap:12px;padding:14px 16px;border-radius:12px;background:var(--surface-2);box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}
.wz-gate.ok{flex-direction:row;align-items:center;gap:12px}
.wz-gate .hd{display:flex;align-items:center;gap:12px}
.wz-gate .ic{flex:none;width:34px;height:34px;border-radius:999px;display:grid;place-items:center;background:var(--crit-soft);color:var(--crit);font-size:17px;font-weight:800}
.wz-gate.ok .ic{background:var(--accent);color:var(--accent-fg)}
.wz-gate .ic .ico{width:17px;height:17px;stroke-width:3}
.wz-gate b{display:block;font-size:14px;font-weight:600;color:var(--text)}
.wz-gate span:not(.ic){font-size:12.5px;color:var(--muted)}
.wz-gate ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 24px}
.wz-gate li{position:relative;padding:6px 0 6px 16px;font-size:13px;color:var(--text)}
.wz-gate li::before{content:'';position:absolute;left:1px;top:12px;width:6px;height:6px;border-radius:999px;background:var(--crit)}
.wz-gate li.more{color:var(--muted)}
.wz-gate li.more::before{background:var(--border-strong)}
.wz-cnt-b{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 7px;margin-left:6px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:11.5px;font-weight:700;vertical-align:1px}











.wz-legal p{margin:0;font-size:13px;line-height:1.6;color:var(--text-2)}
#tz-6 .wz-dl .att-cal-trig{width:100%;margin-top:0}
#tz-6 .wz-dl .att-cal-pop{top:calc(100% + 6px);bottom:auto}
#tz-6 .wz-meta-chip .in{max-width:none}
@media(max-width:700px){.wz-gate ul{grid-template-columns:1fr}}

/* ——— страница «Проекты» v3 ——— */
.pj-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.pj-kpi{background:var(--surface);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:3px;box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35);min-width:0}
.pj-kpi .l{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.pj-kpi .v{font-family:var(--font-display);font-size:28px;font-weight:800;line-height:1.15;color:var(--text);font-variant-numeric:tabular-nums}
.pj-kpi .v.crit{color:var(--crit)}
.pj-kpi .s{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-sec{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:6px}
.pj-sec-r{display:flex;gap:8px}

















@media(max-width:900px){.pj-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

.wz-two--pf{grid-template-columns:minmax(0,3fr) minmax(0,7fr)}
.wz-ck--sm{margin-top:0;font-size:13px}
.wz-pf{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:4px}
.wz-two .wz-pf .in{max-width:200px}
.wz-meta-chip .wz-stepper{margin-top:4px}
@media(max-width:600px){.wz-meta-chip{min-width:100%}}






.wz-cal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.wz-cal-hd b{font-family:var(--font-display);font-size:13.5px;text-transform:capitalize}

































.wz-stepper{width:fit-content}

.wz-stepper button{width:34px}
.wz-stepper button .ico{width:14px;height:14px;stroke-width:2.2;transition:transform .22s cubic-bezier(.22,1,.36,1)}

.wz-stepper button:active .ico{transform:scale(.72)}
.wz-stepper button:disabled{opacity:.3;cursor:not-allowed;background:transparent;color:var(--text-2)}
.wz-stepper button:disabled .ico{transform:none}

.wz-stepper .val{min-width:44px;padding:0 4px;text-align:center;color:var(--text);font-weight:700;font-size:14px;font-variant-numeric:tabular-nums;display:inline-block;user-select:none}
.wz-stepper .val.up{animation:wz-val-up .42s cubic-bezier(.22,1,.36,1)}
.wz-stepper .val.down{animation:wz-val-down .42s cubic-bezier(.22,1,.36,1)}
@keyframes wz-val-up{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes wz-val-down{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.wz-stepper .val.up,.wz-stepper .val.down{animation:none}.wz-stepper button .ico{transition:none}}






  

/* day cards */






















/* date popover */







/* mini calendar */

















  


/* availability line */




/* operator shutter */



/* person (editor/AI) workload picker */


























.wz-refs{margin-top:5px}
.wz-refs>summary{list-style:none;cursor:pointer;font-size:10.5px;font-weight:700;color:var(--accent)}
.wz-refs>summary::-webkit-details-marker{display:none}
.wz-refs-body{display:flex;flex-direction:column;gap:2px;margin-top:4px}





/* ——— settings page · shadcn form pattern ——— */
.sf-page{max-width:none;padding:22px 24px}
.sf-wrap{max-width:none;display:flex;flex-direction:column;gap:18px}
.sf-wrap .page-head{margin-bottom:2px}
.sf-row2{display:grid;grid-template-columns:1fr;gap:18px;align-items:stretch}
.sf-row2 > .sf-card{display:flex;flex-direction:column}

.sf-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 0 18px;box-shadow:var(--shadow)}
.sf-head{margin:0 18px;padding:0}
.sf-head h3{font-size:16px;font-weight:600;line-height:1.25;letter-spacing:-.01em}
.sf-head p{font-size:13.5px;color:var(--muted);margin:6px 0 0;line-height:1.5}
.sf-body{padding:20px 18px 0;display:flex;flex-direction:column;gap:22px}





































/* ——— settings · shadcn form: label above input, 2-up grid, scale tables ——— */
.sf-form{display:flex;flex-direction:column;gap:16px}
.sf-fgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:640px){.sf-fgrid{grid-template-columns:1fr}}
.sf-f{display:flex;flex-direction:column;gap:6px;min-width:0}
.sf-fl{font-size:12.5px;font-weight:600;color:var(--text);line-height:1.25}
.sf-fw{position:relative;display:block}
.sf-fw .in{width:100%}

.sf-fw .sf-fu{position:absolute;top:0;right:12px;height:100%;display:flex;align-items:center;
  font-family:var(--font-body);font-size:11.5px;font-weight:600;color:var(--muted);pointer-events:none}
/* scale table */









/* bordered key-value grid — full-width rule under the header, centre divider, rule under every row */
.sf-card--grid{padding-bottom:0}
.sf-card--grid .sf-head{margin:0 18px 15px}
.sf-card--grid .sf-body{padding:0;border-top:1px solid var(--border);display:block}
/* drop the divider under the very last row of the card */
.sf-card--grid .sf-body > .sfg--1:last-child .sfg-cell:last-child,.sf-card--grid .sf-body > .sfg:not(.sfg--1):not(.sfg--3):last-child .sfg-cell:nth-last-child(-n+2){border-bottom:0}
.sfg{display:grid;grid-template-columns:1fr 1fr;position:relative}
.sfg::after{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--border)}
.sfg-cell{display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0;padding:11px 18px}
.sfg-name{font-size:13px;font-weight:500;color:var(--text);line-height:1.35;min-width:0}
.sfg-val{flex:none;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.sfg-num{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:16px;font-weight:600;color:var(--text);line-height:1}
.sfg-u{font-size:12.5px;font-weight:600;color:var(--text)}
.sfg-edit{margin-left:1px;flex:none}


.sfg-in{width:96px}

.sfg--1{grid-template-columns:1fr}
.sfg--1::after{display:none}
.sfg--3{grid-template-columns:repeat(3,1fr);border-top:1px solid var(--border)}
.sfg--3::after{display:none}
.sf-card--grid .sf-body > .sfg--3:first-child{border-top:0}

.sfg--3 .sfg-cell:not(:nth-child(3n)){border-right:1px solid var(--border)}
.sfg--3 .dd--auto{flex:none}


@media(max-width:640px){.sfg,.sfg--3{grid-template-columns:1fr}.sfg::after{display:none}.sfg--3 .sfg-cell:not(:nth-child(3n)){border-right:0}.sfg-cell:empty{display:none}}

/* custom dropdown — shadcn Select style */
.dd{position:relative}
.dd-trigger{width:100%}


.dd-trigger .chev{width:15px;flex:none}

.dd-menu{position:absolute;z-index:45;top:calc(100% + 6px);left:0;right:0;display:none;transform-origin:top center;max-height:min(340px,calc(60vh * var(--vz,1)));overflow-y:auto;overscroll-behavior:contain}
.dd.dd--up .dd-menu{top:auto;bottom:calc(100% + 6px);transform-origin:bottom center}
.dd.open .dd-menu{display:block;animation:dd-in .1s cubic-bezier(.16,1,.3,1)}
.dd.open.closing .dd-menu{animation:dd-out .08s ease forwards}
@keyframes dd-in{from{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:none}}
@keyframes dd-out{to{opacity:0;transform:translateY(-4px) scale(.97)}}
.dd.dd--up .dd-menu{animation-name:dd-in-up}
.dd.dd--up.open.closing .dd-menu{animation-name:dd-out-up}
@keyframes dd-in-up{from{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:none}}
@keyframes dd-out-up{to{opacity:0;transform:translateY(4px) scale(.97)}}
.dd-opt{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;font:inherit;cursor:pointer;text-align:left;transition:none}
.dd-opt:hover,.dd-opt:focus-visible{outline:0}
.dd-opt .ck{width:15px;height:15px;color:var(--accent);flex:none;opacity:0;transition:opacity .1s}

.dd-opt.on .ck{opacity:1}
@media (prefers-reduced-motion:reduce){.dd .dd-menu{animation:none!important;transition:none!important}}

/* notifications popover */
.notif{position:relative}
.notif-pop{position:absolute;top:calc(100% + 9px);right:0;width:340px;max-height:min(calc(72vh * var(--vz,1)),460px);
  display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border-strong);
  border-radius:12px;box-shadow:var(--shadow);z-index:60;overflow:hidden;transform-origin:top right;
  animation:dd-in .16s cubic-bezier(.16,1,.3,1)}
.notif-pop[hidden]{display:none}
.notif-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border)}
.notif-hd > span{font-family:var(--font-display);font-size:14px;font-weight:600}

.notif-list{overflow-y:auto;padding:5px}
.notif-row{display:flex;gap:11px;padding:11px 10px;border-radius:8px}
.notif-row + .notif-row{border-top:1px solid var(--border)}




.notif-empty{padding:28px 14px}
@media(max-width:640px){.notif-pop{position:fixed;top:54px;right:8px;left:8px;width:auto}}

/* office geo map (Leaflet) */
.sf-lmap{height:240px;border:1px solid var(--border-strong);border-radius:10px;overflow:hidden;position:relative;z-index:0;background:var(--surface-2)}
.sf-lmap .leaflet-container{height:100%;width:100%;font:inherit;background:var(--surface-2)}
.sf-lmap--dark .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.95)}
.sf-lmap .leaflet-bar a{background:var(--surface);color:var(--text);border-color:var(--border)}
.sf-lmap .leaflet-bar a:hover{background:var(--surface-2)}
/* narrow left column (address + fields), WIDE map on the right */
.sf-card--geo{padding:0}
.sf-card--geo .sf-body{padding:18px}
.sf-geo{--geo-map-h:250px;display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}
.sf-geo-side{display:flex;flex-direction:column;justify-content:flex-start;gap:12px;min-width:0;min-height:var(--geo-map-h)}
.sf-geo .sf-head{margin:0}
.sf-geo .sf-lmap{width:100%;height:var(--geo-map-h)}
.sf-geo .sfg{grid-template-columns:1fr;border-top:1px solid var(--border);margin-top:2px;margin-left:-18px;margin-right:-28px}
.sf-geo .sfg::after{display:none}
.sf-geo .sfg-cell{padding:12px 28px 12px 18px}
@media(max-width:820px){.sf-geo{grid-template-columns:1fr}.sf-geo-side{min-height:0}.sf-geo .sf-lmap{height:220px}
  .sf-geo .sfg{margin-right:-18px}.sf-geo .sfg-cell{padding-right:18px}}
.sf-geocap{margin-top:0;font-size:13.5px;color:var(--muted);line-height:1.4}
.sf-geocap b,.sf-geocap span{display:block}
.sf-geocap b{color:var(--text-2);font-weight:600}
.sf-geocap #geoCoord{margin-top:2px;font-size:12.5px;font-variant-numeric:tabular-nums}

.set-bar[hidden]{display:none}
.set-bar{position:sticky;bottom:18px;display:flex;justify-content:space-between;align-items:center;gap:14px;
  background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;padding:10px 10px 10px 16px;box-shadow:var(--shadow);
  animation:setbar-in .2s cubic-bezier(.2,.8,.2,1)}
.set-bar > span{font-size:12.5px;font-weight:600;display:flex;align-items:center}
.set-bar > div{display:flex;gap:8px}
@keyframes setbar-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* tablet: `position:sticky` breaks (ancestor overflow) — pin it; left edge follows the sidebar, right stops at the panel edge */
@media(min-width:641px) and (max-width:960px){
  .set-bar{position:fixed;bottom:16px;left:264px;right:20px;z-index:55}
  .app.nav-closed .set-bar{left:16px}
}
/* phone: floating bar with edge margins, text + buttons centred */
@media(max-width:640px){
  .set-bar{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:55;border-radius:14px;
    flex-wrap:wrap;justify-content:center;gap:10px 12px;padding:13px 14px}
  .set-bar > span{width:100%;justify-content:center;text-align:center}
  .set-bar > div{width:100%;justify-content:center}
}




/* «Проекты» — второй заход (2026-09-18→19): канбан-доска вместо сгруппированной сетки —
   статус читается по КОЛОНКЕ, а не по подписи-заголовку над блоком карточек. Карточка сама
   уже не «мини-таблица» (3 подписанных стата в ряд убраны) — один прогресс-бар + низ со
   сроком/числом задач. Детали проекта в модалке теперь по вкладкам, а не всё стопкой сразу. */





















.proj-tabs{margin:18px 0 16px}
.proj-tab{margin-bottom:-1px}


/* «Обзор» — верх модалки: люди, геройская цифра срочности, компактная строка метаданных
   (не грид из подписанных ячеек, как было — просто текст через отступы) и сегментный бар. */











.proj-tseg{flex:1;height:8px;border-radius:4px;background:var(--surface-3)}
.proj-tseg.done{background:var(--accent)}
.proj-tseg.prog{background:color-mix(in srgb, var(--accent) 38%, var(--surface-3))}
.proj-tseg.late{box-shadow:inset 0 0 0 2px var(--crit)}





























/* calendar */
.cal{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.cal .hd{padding:9px 10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border);background:var(--surface-2)}
.cal .cell{min-height:150px;max-height:340px;overflow-y:auto;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:8px;display:flex;flex-direction:column;gap:5px}
.cal .cell:nth-child(7n)  {border-right:0}


.cal .cell.dim{background:var(--surface-2)}
.ev{font-size:11px;font-weight:600;padding:4px 6px;border-radius:6px;background:var(--surface-2);color:var(--text);border-left:3px solid var(--muted);line-height:1.25;cursor:pointer}
.ev:hover{filter:brightness(0.97)}
.ev.pp{border-left-color:var(--dept-pp)}
.ev.mont{border-left-color:var(--dept-mont)}
.ev.ai{border-left-color:var(--dept-ai)}
.ev.shoot{border-style:double;border-left-width:4px;font-weight:700}


/* календарная полоса — та же форма (колонки дней + список событий со скроллом), но легче:
   события больше не залитые «коробки в коробке», а тонкая цветная полоска слева (акцент
   time-anchored съёмки в accent, обычная задача — нейтральная), без фона до наведения. */










/* тело дня со своим скроллом — плотный день не растягивает всю полосу и не ломает
   выравнивание с соседями; события отсортированы по факт. времени (сначала съёмки по
   t.shoot.from, потом задачи без точного времени), а не в порядке TASKS.forEach */












/* --- «Проекты и задачи» целиком: крупнее, круглее, увереннее — тот же язык, что на карточке --- */






@media(max-width:900px){.cal{grid-template-columns:repeat(2,1fr)}.cal .hd{display:none}.cal .cell{min-height:auto}}

/* workload heat */





/* status flow */







.gm-level{display:flex;align-items:center;gap:14px;padding:18px;border-radius:var(--radius);background:var(--accent-soft)}
.gm-ring{width:60px;height:60px;flex:none;border-radius:999px;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:18px;background:conic-gradient(var(--accent) var(--p,60%),var(--surface-3) 0);position:relative}
.gm-ring::after{content:"";position:absolute;inset:6px;border-radius:999px;background:var(--surface)}
.gm-ring span{position:relative;z-index:1}

.modal-bg{position:fixed;inset:0;display:grid;place-items:center;padding:24px;z-index:60;/* на iOS overflow:hidden на .main само по себе не всегда останавливает «резиновый» скролл страницы
     под модалкой — блокируем тач-жесты на самом бэкдропе, а скролл внутри модалки возвращаем отдельно */
  touch-action:none}
.modal-bg .modal{touch-action:pan-y}
/* min-width:0 — .modal-bg это display:grid;place-items:center без явных grid-template-columns,
   неявная колонка по умолчанию растягивается под max-content самого широкого потомка модалки
   (например, <input> со стандартной шириной ~20 символов), а не сжимается под ширину экрана —
   без этого на телефоне модалка может вылезти шире вьюпорта, хотя max-width/width:100% заданы */
.modal{max-width:560px;width:100%;min-width:0;max-height:calc(88vh * var(--vz,1));overflow-y:auto}
.modal-head{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border)}
.modal-head h3{font-size:15px}
.modal-body{padding:18px;display:flex;flex-direction:column;gap:15px}

/* knowledge base */
.kb-grid{display:grid;grid-template-columns:210px minmax(0,1fr);gap:16px;align-items:start}
@media(max-width:820px){.kb-grid{grid-template-columns:minmax(0,1fr)}}
@media(min-width:641px) and (max-width:820px){.app.nav-closed .kb-grid{grid-template-columns:200px minmax(0,1fr)}}
.kb-side .card-body{display:flex;flex-direction:column;gap:3px;padding:12px}
.kb-search{margin-bottom:8px}
.kb-search .ico{flex:none}
.kb-search input{width:100%;min-width:0}







.kb-cat-h{font-size:16px;font-weight:600;color:var(--text);letter-spacing:-.01em;padding:2px 4px 9px}
.kb-cat{width:100%}




.kb-main .card-head h3{font-size:16px;font-weight:600;letter-spacing:-.01em}
.kb-main .card-head{border-bottom:0;padding-bottom:6px}

.kb-main .card-body{padding-top:10px}
.kb-acc{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface);transition:border-color .2s}
.kb-acc[hidden]{display:none}
.kb-acc.open{border-color:var(--border-strong)}
.kb-acc-hd{display:flex;align-items:center;gap:11px;padding:12px 14px;cursor:pointer}
.kb-acc-hd .kb-chev{color:var(--text);flex:none;margin-left:auto;transition:transform .22s cubic-bezier(.4,0,.2,1)}
.kb-acc.open .kb-acc-hd .kb-chev{transform:rotate(180deg)}
.kb-acc-hd .grow{flex:0 1 auto;min-width:0}
.kb-acc-hd .grow .t{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kb-acc-hd .badge{flex:none}
.kb-acc-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .26s cubic-bezier(.4,0,.2,1)}
.kb-acc.open .kb-acc-body{grid-template-rows:1fr}
.kb-acc-inner{overflow:hidden;min-height:0}
.kb-acc-pad{padding:4px 14px 14px;background:var(--surface);display:flex;flex-direction:column;gap:12px}
.kb-meta{font-size:12px;color:var(--text-2);line-height:1.4}
.kb-text{font-size:13px;line-height:1.6;color:var(--text-2);margin:0;white-space:pre-wrap}
.kb-file{align-self:flex-start;max-width:100%}

.kb-file i{flex:none}
.kb-foot{display:flex;align-items:flex-end;gap:14px;margin-top:4px}
.kb-foot .kb-meta{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-acts{display:flex;gap:8px;margin-left:auto;flex:none}
@media(max-width:520px){
  .kb-foot{flex-wrap:wrap}
  .kb-foot .kb-meta{white-space:normal;flex-basis:100%}
  .kb-acts{margin-left:auto}
}
.kb-empty{padding:30px 14px;text-align:center;color:var(--muted);font-size:13px}
.kb-f{display:flex;flex-direction:column;gap:8px;font-size:12.5px;font-weight:600;color:var(--text-2)}
.kb-f em{font-style:normal;font-weight:400;color:var(--muted)}





.kb-dd .dd-menu{min-width:0}
.kb-upl{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;border:1px dashed var(--border-strong);background:var(--field);
  border-radius:8px;padding:9px 14px;font:inherit;font-size:12.5px;font-weight:600;color:var(--text-2);cursor:pointer;transition:border-color .12s,color .12s,background .12s}
.kb-upl:hover{border-color:var(--accent);color:var(--accent)}
.kb-fname{display:flex;align-items:center;gap:8px;margin-top:8px;border:1px solid var(--border-strong);background:var(--surface);border-radius:8px;padding:7px 8px 7px 11px;font-size:12px;font-weight:600;color:var(--text)}
.kb-fname[hidden]{display:none}
.kb-fname > span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-fname > button{flex:none;display:grid;place-items:center;width:24px;height:24px;border:0;background:none;color:var(--muted);cursor:pointer;border-radius:6px}
.kb-fname > button:hover{background:var(--surface-2);color:var(--text)}
.modal--wide{max-width:900px;height:calc(82vh * var(--vz,1));display:flex;flex-direction:column;overflow:hidden}
.modal--wide .modal-head a{white-space:nowrap}
.kb-frame{flex:1;width:100%;border:0;background:#fff}
.kb-noprev{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:30px;text-align:center;background:var(--surface-2)}
.kb-noprev-ic{width:52px;height:52px;border-radius:12px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);color:var(--muted)}
.kb-noprev-t{font-size:14px;font-weight:600}
.kb-noprev p{font-size:12.5px;color:var(--muted);margin:0 0 4px}

/* team — карточки сотрудников, сгруппированные по департаментам */


.tm-user{display:flex;align-items:center;gap:11px;min-width:0}
.tm-uinfo{min-width:0;display:flex;flex-direction:column;gap:1px}
.tm-uinfo .strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-uc{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.tm-user .avatar{width:32px;height:32px;font-size:11.5px}


.tm-kebab{position:relative;width:auto}
.tm-kb{width:32px}


.tm-kebab .dd-menu{left:auto;right:0;min-width:200px;width:max-content}
.tm-kebab .dd-opt{justify-content:flex-start;gap:9px;white-space:nowrap}

.tm-kebab .dd-opt svg{width:15px;height:15px;flex:none;opacity:.7}
.tm-kebab .dd-opt .ck{display:none}
.tm-dept-h{display:flex;align-items:center;gap:8px;padding:2px 0 10px;font-size:16px;font-weight:600;color:var(--text)}
.tm-dept-h .count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;box-sizing:border-box;font-size:11px;font-weight:700;background:var(--surface);color:var(--text);border-radius:999px;border:1px solid var(--border-strong)}
.tm-dept-sec + .tm-dept-sec{margin-top:14px}
/* ——— карточка сотрудника: шапка сверху, затем статистика (слева) + контакты (справа) под одной разделительной линией во всю ширину карточки ——— */
.card.pad.tm-card{padding:14px 18px}
.tm-card{gap:0}
.tm-card-top{display:flex;align-items:center;gap:11px}
.tm-card-top .tm-kebab{margin-right:-7px}
.tm-card-top .avatar{width:32px;height:32px;font-size:11.5px}

.tm-card-top .tm-kb{width:30px}
.tm-card-name{min-width:0;flex:1;display:flex;flex-direction:column;gap:0}
.tm-card-name .n{font-size:13.5px;font-weight:600;line-height:1.25;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-card-name .r{font-size:12px;line-height:1.25;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-card-body{display:grid;grid-template-columns:76px 1fr;gap:10px;margin:14px -18px 0;padding:13px 18px 0;border-top:1px solid var(--border)}
.tm-card-body .tm-card-contacts{text-align:right;align-items:flex-end}
.tm-card-stats{display:flex;flex-direction:column;gap:6px;min-width:0}
.tm-card-xp{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:12px;font-weight:600;color:var(--text);flex:none;white-space:nowrap}
.tm-card-stat{display:flex;align-items:baseline;gap:6px;min-width:0}
.tm-card-stat.stacked{flex-direction:column;gap:0;margin-top:3px}
.tm-card-stat .l{font-size:11px;color:var(--muted);white-space:nowrap;line-height:1.15}
.tm-card-stat.stacked .l{color:var(--text);font-weight:600}
.tm-card-stat .v{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:16px;font-weight:600;color:var(--text);line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-card-stat .v.accent{color:var(--accent)}
.tm-card-stat.stacked .v{color:var(--accent)}
.tm-card-contacts{display:flex;flex-direction:column;gap:1px;min-width:0}
.tm-card-c{font-size:13px;color:var(--text);font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-card-c.phone{font-size:15px;font-weight:600}

/* «Реквизит и техника» — построено по проверенной структуре .tm-card («Команда»):
   верхняя строка (фото+имя+кебаб), один разделитель, статы + брони, кнопка снизу. */
.card.pad.gear-tk{padding:14px 18px}
.gear-tk{gap:0}
.gear-tk-top{display:flex;align-items:center;gap:11px}
.gear-tk-media{flex:none;width:40px;height:40px;border-radius:10px;overflow:hidden;background:var(--surface-3)}
.gear-tk-media img{width:100%;height:100%;object-fit:cover;display:block}
.gear-tk-id{min-width:0;flex:1;display:flex;flex-direction:column;gap:1px}
.gear-tk-id .n{font-size:13.5px;font-weight:600;color:var(--text);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gear-tk-id .r{font-size:12px;line-height:1.25;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.gear-tk-id .r .cat.prop{color:var(--dept-mont)}
.gear-tk-id .r .status.ok{color:var(--ok)}
.gear-tk-id .r .status.crit{color:var(--crit)}
.gear-tk-top .tm-kebab{margin-right:-7px}
.gear-tk-body{display:grid;grid-template-columns:auto 1fr;gap:18px;margin:14px -18px 0;padding:13px 18px 0;border-top:1px solid var(--border)}
.gear-tk-stats{display:flex;flex-direction:column;gap:6px;min-width:0}
.gear-tk-stat{display:flex;align-items:baseline;gap:6px;min-width:0}
.gear-tk-stat .l{font-size:11px;color:var(--muted);white-space:nowrap;line-height:1.15}
.gear-tk-stat .v{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:16px;font-weight:600;color:var(--text);line-height:1.15;white-space:nowrap}
.gear-tk-stat .v.ok{color:var(--ok)}
.gear-tk-stat .v.warn{color:var(--warn)}
.gear-tk-stat .v.crit{color:var(--crit)}
.gear-tk-books{display:flex;flex-direction:column;gap:5px;min-width:0}
.gear-tk-book{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gear-tk-book b{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-weight:600}
.gear-tk-book.none{color:var(--muted)}
.gear-tk-foot{margin:14px -18px 0;padding:12px 18px 0;border-top:1px solid var(--border)}
.gear-tk-foot button{width:100%;height:32px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:12.5px;font-weight:600;cursor:pointer;transition:background .12s ease}
.gear-tk-foot button:hover{background:var(--surface-2)}







.tm-page .page-head .actions{gap:14px}
@media(max-width:480px){
  .tm-page .page-head .actions{flex-wrap:nowrap;gap:8px}
  
  #teamDeptFilter{width:150px!important}
  .tm-page .grid.g3{gap:10px}
}
.tm-form-modal .kb-f{color:var(--text)}
.tmf-photo-row{display:flex;align-items:center;gap:14px}
.tmf-photo-av{width:56px;height:56px;font-size:18px}
.tmf-photo-actions{display:flex;gap:8px;flex-wrap:wrap}
/* ——— топ-3 по очкам: настоящий подиум — фото/имя/очки над призовым блоком, место внутри градиентного блока ——— */


.tm-podium{display:flex;align-items:flex-end;justify-content:center;gap:14px;padding:44px 18px 20px}
.tm-podium-col{display:flex;flex-direction:column;align-items:center;gap:10px;flex:0 1 190px}
.tm-podium-col.empty{visibility:hidden}
.tm-podium-person{display:flex;flex-direction:column;align-items:center;gap:4px}
.tm-podium-av-wrap{position:relative;display:inline-flex}
.tm-podium-crown{position:absolute;z-index:1;top:-34px;left:50%;transform:translateX(-50%);width:40px;height:40px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))}
.tm-podium-av{width:72px;height:72px;font-size:22px;margin-bottom:2px}
.tm-podium-name{font-size:14px;font-weight:600;color:var(--text);max-width:160px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tm-podium-xp{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:15px;font-weight:700;color:var(--accent)}
.tm-podium-block{position:relative;overflow:hidden;width:100%;display:flex;align-items:center;justify-content:center;padding:10px;border-radius:14px 14px 6px 6px;box-shadow:0 10px 24px -12px rgba(0,0,0,.35)}
.tm-podium-block::before{content:'';position:absolute;inset:0;background:linear-gradient(115deg,rgba(255,255,255,.35) 0%,rgba(255,255,255,0) 35%,rgba(255,255,255,0) 65%,rgba(255,255,255,.18) 100%)}
.tm-podium-rank{position:relative;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:26px;font-weight:800;line-height:1;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.35)}
.tm-podium-col.p1 .tm-podium-block{min-height:110px;background:linear-gradient(180deg,#ff8a3d 0%,#ff5d00 55%,#e6540a 100%)}
.tm-podium-col.p2 .tm-podium-block{min-height:84px;background:linear-gradient(180deg,#ffab6b 0%,#ff7a2e 55%,#e86a1f 100%)}
.tm-podium-col.p3 .tm-podium-block{min-height:68px;background:linear-gradient(180deg,#ffc190 0%,#ff9a5c 55%,#e88a45 100%)}
@media(max-width:480px){
  .tm-podium{gap:6px;padding:36px 8px 20px}
  .tm-podium-col{flex:0 1 130px}
  .tm-podium-av{width:58px;height:58px;font-size:18px}
  .tm-podium-crown{width:32px;height:32px;top:-28px}
  .tm-podium-name{font-size:12.5px;max-width:120px}
  .tm-podium-rank{font-size:22px}
  .tm-podium-col.p1 .tm-podium-block{min-height:92px}
  .tm-podium-col.p2 .tm-podium-block{min-height:70px}
  .tm-podium-col.p3 .tm-podium-block{min-height:58px}
}
/* десктоп/планшет при свёрнутом сайдбаре — больше свободной ширины, плашки и цифры чуть крупнее; с открытым сайдбаром и на телефоне — без изменений */
@media(min-width:481px){
  .app.nav-closed .tm-podium-col{flex:0 1 220px}
  .app.nav-closed .tm-podium-xp{font-size:17px}
  .app.nav-closed .tm-podium-rank{font-size:30px}
}

/* ============ payroll ============ */
.pay-card{overflow:hidden}

/* сводка сметы — внутри карточки «Ведомость» */
.pay-sheet-card .card-head{padding-top:16px;padding-bottom:12px;border-bottom:0}
.pay-sheet-card .card-head h3{font-size:16px}

.pay-sh-acts{margin-left:auto;display:flex;align-items:center}
.pay-sh-sum{display:grid;grid-template-columns:repeat(3,1fr);padding:2px 0}
.pay-sh-sum--4{grid-template-columns:repeat(4,1fr)}
.pay-sh-sum-col{display:flex;flex-direction:column;gap:20px;padding:0 24px}
.pay-sh-sum-i{display:flex;flex-direction:column;gap:1px;min-width:0}
.pay-sh-sum-i .l{font-size:13.5px;font-weight:500;color:var(--muted)}
.pay-sh-sum-i .v{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:24px;font-weight:600;letter-spacing:-.02em;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pay-sh-sum-i .v.accent{color:var(--accent)}
@media(max-width:620px){
  .pay-sh-sum{grid-template-columns:1fr;padding:4px 0 10px}
  .pay-sh-sum-col{flex-direction:row;padding:10px 18px}
  .pay-sh-sum-col .pay-sh-sum-i{flex:1}
  .pay-sh-sum.pay-sh-sum--4{grid-template-columns:repeat(2,1fr);padding:4px 0 10px;gap:0 0}
  .pay-sh-sum--4 .pay-sh-sum-col{padding:10px 18px}
}



/* «Требует выплаты» */
.pay-todo .card-head{padding-top:16px;padding-bottom:16px}
.pay-todo .card-head h3{font-size:16px}
.pay-todo .card-head .pay-todo-tot{margin-left:auto;font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.02em;color:var(--text)}
.pay-todo-list{display:flex;flex-direction:column}
.pay-todo-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-top:1px solid var(--border)}
.pay-todo-row:first-child{border-top:0}
.pay-todo-ic{flex:none;width:32px;height:32px;display:grid;place-items:center;color:var(--muted)}
.pay-todo-ic svg{width:26px;height:26px}
.pay-todo-row.warn .pay-todo-ic{color:var(--warn)}
.pay-todo-row > .avatar{flex:none;width:32px;height:32px;font-size:11.5px}
.pay-todo-m{flex:1;min-width:0}
.pay-todo-m .t{font-size:13.5px;font-weight:600;color:var(--text);line-height:1.2}
.pay-todo-m .m{font-size:12px;color:var(--muted);margin-top:0;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pay-todo-v{flex:none;text-align:right}
.pay-todo-v .mono{font-family:var(--font-display);font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--text);line-height:1.2}
.pay-todo-age{font-size:12px;color:var(--muted);margin-top:0;line-height:1.2}
.pay-todo-row.warn .pay-todo-age{color:var(--warn)}
.pay-todo-row .btn{flex:none}
.pay-todo-ok{display:flex;align-items:center;gap:9px;padding:16px;font-size:12.5px;color:var(--muted)}
.pay-todo-ok svg{width:16px;height:16px;color:var(--ok)}

/* ведомость — список сотрудников по столбцам */
.pay-sheet-card{overflow:visible}



.pay-sheet{display:flex;flex-direction:column}
.pay-sh-row{display:grid;grid-template-columns:minmax(0,1fr) 100px 92px 92px 100px 116px 34px;gap:16px;align-items:center;padding:11px 16px;border-top:1px solid var(--border)}
.pay-sh-row:first-child{border-top:0}
.pay-sh-head{padding:10px 16px}
.pay-sh-head span:nth-child(n+2){text-align:right}
.pay-sh-u{display:flex;align-items:center;gap:11px;min-width:0}
.pay-sh-u .avatar{flex:none;width:32px;height:32px;font-size:11.5px}
.pay-sh-uinfo{min-width:0}
.pay-sh-uinfo .n{font-size:13.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pay-sh-uinfo .r{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.pay-sh-debt{color:var(--crit);font-weight:600}
.pay-sh-v{text-align:right;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:13px;font-weight:500;letter-spacing:-.01em;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pay-sh-v.z{color:var(--text);font-weight:400}
.pay-sh-v.pos{color:var(--ok)} .pay-sh-v.neg{color:var(--crit)}
.pay-sh-v.strong{font-size:14px;font-weight:700}
.pay-sh-act{display:flex;justify-content:flex-end}
.pay-sh-act .tm-kb{width:30px}
.pay-sh-empty{padding:32px 16px}
/* история операций — список в стиле ведомости */
.pay-hist-card .card-head{padding-top:16px;padding-bottom:14px;border-bottom:0}
.pay-hist-card .card-head h3{font-size:16px}

.pay-hist-period{margin-left:auto}
.pay-hist{display:flex;flex-direction:column}
.pay-hist-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.75fr) 60px 88px 70px 34px;column-gap:16px;align-items:center;padding:8px 16px;border-top:1px solid var(--border);font-size:12.5px}
.pay-hist-row > *:nth-child(1),.pay-hist-row > *:nth-child(2){margin-right:10px}
.pay-hist-row:first-child{border-top:0}
.pay-hist-head{padding:10px 16px}
.pay-hist-head > span:nth-child(5){text-align:right}
.pay-hist-u{display:flex;align-items:center;gap:10px;min-width:0}
.pay-hist-u .avatar{flex:none;width:32px;height:32px;font-size:11.5px}
.pay-hist-uinfo{min-width:0}
.pay-hist-uinfo .n{font-size:13.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pay-hist-uinfo .r{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.pay-hist-o{min-width:0;font-size:12px;color:var(--text);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pay-hist-d{font-size:12px;color:var(--text);white-space:nowrap}

.ty-prem{color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,transparent)}
.ty-pen{color:var(--crit);background:color-mix(in srgb,var(--crit) 14%,transparent)}
.ty-pay{color:var(--text);background:color-mix(in srgb,var(--text) 9%,transparent)}
.pay-hist-a{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;text-align:right}
.pay-hist-a.pos{color:var(--ok)} .pay-hist-a.neg{color:var(--crit)}
.pay-hist-canc{display:block;margin-top:3px;font-size:11px;line-height:1.3;color:var(--muted);white-space:normal}
.pay-hist-canc b{font-weight:600;color:var(--text-2)}
.pay-hist-row--canc .pay-hist-o{display:block;-webkit-line-clamp:unset;overflow:visible;color:var(--muted)}
.pay-hist-row--canc .pay-hist-a{text-decoration:line-through;color:var(--muted)}

.pay-hist-row--canc .pay-hist-uinfo .n{color:var(--muted)}
.pay-cancconf{display:flex;flex-direction:column;gap:7px;padding:11px 14px;background:var(--surface-2);border-radius:9px;font-size:13px}
.pay-cancconf > div{display:flex;justify-content:space-between;gap:12px}
.pay-cancconf span{color:var(--muted)}
.pay-hist-x{justify-self:end}


.pay-hist-foot{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:0;margin-top:-4px;font-size:12.5px;color:var(--muted)}
.pay-hist-foot-l{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.pay-hist-per{display:flex;align-items:center;gap:8px}
.pay-hist-per > span{font-weight:700;color:var(--text);font-size:13px}
.pay-hist-pg{display:flex;align-items:center;gap:8px;margin-left:auto}
.pay-hist-pg-t{color:var(--text)}
.pay-hist-pg-t b{font-weight:700}
.pay-hist-pgb{display:inline-flex;align-items:center;justify-content:center}
.pay-hist-pgb:disabled{opacity:.4}


/* unify every payroll control (Ведомость + История: dropdowns, search, per-page, pager) to the .btn spec from «Требует выплаты» */







/* На десктопе (>1100px) таблицы «Ведомость»/«История» помещаются целиком, горизонтального скролла НЕТ.
   Ниже — все колонки остаются (не режутся), контейнер (.pay-sheet/.pay-hist) прокручивается по горизонтали;
   имя фиксированной ширины → предсказуемая ширина таблицы под скролл, колонки выровнены. */
@media(max-width:1100px){
  .pay-sheet,.pay-hist{overflow-x:auto;overscroll-behavior-x:contain}
  .pay-sh-row{grid-template-columns:206px 100px 92px 92px 100px 116px 34px;min-width:max-content}
  .pay-hist-row{grid-template-columns:206px 260px 60px 88px 70px 34px;min-width:max-content}
  /* имя/фамилия и должность в таблицах на узких экранах не обрезаются */
  .pay-sh-uinfo .n,.pay-sh-uinfo .r,.pay-hist-uinfo .n,.pay-hist-uinfo .r{overflow:visible;text-overflow:clip;white-space:normal}
  .pay-hist-period{margin-left:0}
}
/* планшеты и уже: описание/причина в «Требует выплаты» переносится на 2-ю строку (как заголовок) */
@media(max-width:1024px){
  .pay-todo-m .m{white-space:normal;overflow:visible;text-overflow:clip}
}
/* планшет + ЗАКРЫТЫЙ сайдбар: контент во всю ширину → таблицы помещаются без горизонтального скролла
   (ужимаем отступы; в Истории — уже колонка «Основание», раньше переносится на 2-ю строку) */
@media(min-width:641px) and (max-width:1100px){
  .app.nav-closed .pay-sheet,.app.nav-closed .pay-hist{overflow-x:visible}
  .app.nav-closed .pay-sh-row{grid-template-columns:minmax(0,1fr) 82px 74px 74px 82px 94px 34px;gap:10px;min-width:0}
  .app.nav-closed .pay-hist-row{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr) 54px 80px 64px 34px;column-gap:10px;min-width:0}
}
@media(max-width:640px){
  .pay-todo-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;
    grid-template-areas:"ic m m" "v v btn";column-gap:12px;row-gap:10px;align-items:start}
  .pay-todo-ic{grid-area:ic}
.pay-todo-row > .avatar{grid-area:ic}
  .pay-todo-m{grid-area:m;min-width:0}
  .pay-todo-m .m{white-space:normal}
  /* строка 2: сумма+дата слева (по левому краю, как иконка), кнопка в правом нижнем углу */
  .pay-todo-v{grid-area:v;align-self:end;text-align:left;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
  .pay-todo-age{margin-top:0}
  .pay-todo-row .btn{grid-area:btn;align-self:end;justify-self:end}
}
/* компактный футер пагинации Истории («На странице [n]» + Предыдущая/Следующая в один ряд,
   без счётчика «из» и «Страница X из Y») — на телефоне всегда, на планшете при РАСКРЫТОМ сайдбаре */
@media(max-width:640px){
  .pay-hist-pg-t{display:none}
.pay-hist-count{display:none}
  .pay-hist-foot{gap:7px;flex-wrap:nowrap}
  .pay-hist-per{gap:5px;flex:none}
  .pay-hist-per > span{font-size:11.5px;white-space:nowrap}
  .pay-hist-foot #histPer{width:78px!important}
  .pay-hist-pg{gap:5px}
  .pay-hist-pgb{white-space:nowrap}
}
@media(min-width:641px) and (max-width:900px){
  .app:not(.nav-closed) .pay-hist-pg-t{display:none}
.app:not(.nav-closed) .pay-hist-count{display:none}
  .app:not(.nav-closed) .pay-hist-foot{gap:7px;flex-wrap:nowrap}
  .app:not(.nav-closed) .pay-hist-per{gap:5px;flex:none}
  .app:not(.nav-closed) .pay-hist-per > span{font-size:11.5px;white-space:nowrap}
  .app:not(.nav-closed) .pay-hist-foot #histPer{width:78px!important}
  .app:not(.nav-closed) .pay-hist-pg{gap:5px}
  .app:not(.nav-closed) .pay-hist-pgb{white-space:nowrap}
}

/* payroll modals */
.pay-note{font-size:11.5px;color:var(--muted);line-height:1.5;margin:0}
.pay-modal-foot{display:flex;gap:8px;justify-content:flex-end;align-items:center;margin-top:4px}
.pay-modal-foot .btn--crit{margin-right:auto}
/* .pay-md (обычная — не cf-modal — ветка PayModal-хелпера wrap(), её делят ~20 режимов модалок:
   gearForm/gearBook/gearRetire/actorForm/actorBook/actorRetire и другие) — шапка и .modal-body
   уже зафиксированы/скроллятся общим правилом выше (:root .modal:not(.cf-modal)). Подвал с
   кнопками — просто последний ребёнок modal-body у всех этих режимов (разметку не переписывали),
   поэтому его отдельно приклеиваем к низу СКРОЛЛЯЩЕГОСЯ .modal-body через sticky.
   Отступы «-18px» тут были подобраны на глаз и не совпадали с реальным паддингом .modal-body
   (14px 26px 24px, см. правило `:not(.wm):not(.cf-modal) .modal-body` ниже) — из-за этого подвал
   не докатывался до самого низа/краёв модалки на ~6-8px (это и был баг «не приклеен, съезжает
   при скролле» на телефоне: там эта нестыковка куда заметнее из-за узкой модалки). Значения
   margin/bottom/padding ниже должны зеркалить паддинг .modal-body ровно 1:1. */
.modal.pay-md:not(.cf-modal) .pay-modal-foot{position:sticky;bottom:-24px;margin:8px -26px -24px;padding:12px 26px 24px;background:var(--surface);border-top:1px solid var(--border);transform:translateZ(0)}








/* карта для перевода — блок в модалке запроса */




/* payout run modal — переводы по одному */














.pay-run-empty{display:flex;align-items:center;justify-content:center;gap:9px;padding:34px 12px}
.pay-run-empty svg{width:17px;height:17px;color:var(--ok)}

.pay-runrow{display:flex;flex-direction:column;gap:9px;padding:13px 0;border-top:1px solid var(--border)}
.pay-runrow:first-child{border-top:0}





.pay-runinp{flex:1;height:34px;text-align:right;font-family:var(--font-mono);font-size:13px;padding:0 10px}
.pay-runinp.bad{border-color:var(--crit)}



.pay-runrow.done{opacity:.65}


/* ═══════════════════════════ Расходы — с нуля, рев. 2 ═══════════════════════════
   Один типографический масштаб на всю страницу, взятый из уже утверждённых экранов
   (имя 13.5/600 как .pay-hist-uinfo .n, крупная сумма 24/600 tabular как .pay-sh-sum-i .v,
   второстепенный текст 11.5–12px muted) — никаких отдельно изобретённых размеров. */




/* сводка вверху «Расходов» — одна карточка с тремя сегментами, без разделителей между ними,
   а не три отдельные плитки .kpi каждая со своей рамкой/тенью (тот компонент используется
   на других страницах, трогать его нельзя — здесь свой, локальный для этой страницы) */



/* та же плашка-счётчик, что у пунктов меню в сайдбаре (.nav-item .count) — крупнее и
   контрастнее локального .badge (тот приглушённый, здесь число должно быть заметным) */




/* ——— «Расходы»: очередь — master-detail, не лента карточек. Слева компактный
   список всех заявок на решение (для быстрого сканирования), справа — полная
   разбивка выбранной: позиции, реквизиты получателя, кнопки. Выбор — это и есть
   структура страницы, а не ещё один вариант оформления одной большой карточки. */


/* исчезновение из очереди — лоток, который только что подтвердили/отклонили, гаснет
   (строка в списке слева и панель деталей справа — один и тот же момент решения
   показан в обоих местах), а уже потом реально пропадает из данных; пустая очередь
   появляется тем же мягким проявлением, а не рывком. Анимируются только opacity/transform
   (композитные, без пересчёта раскладки на каждом кадре) — от этого и зависит плавность;
   схлопывание высоты строки не анимируется, оно уже невидимо к этому моменту. Кривая
   та же, что и у остальных transition/анимаций в этом файле (cubic-bezier(.4,0,.2,1)). */
@keyframes exq-row-out{to{opacity:0;transform:scale(.97) translateX(4px)}}
@keyframes exq-fade-out{to{opacity:0;transform:scale(.98)}}
@keyframes exq-fade-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.exq-mdrow.leaving{animation:exq-row-out .2s cubic-bezier(.4,0,.2,1) forwards;pointer-events:none}


@media(prefers-reduced-motion:reduce){
  .exq-mdrow.leaving{animation:none}

}
.exq-mdrow{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;transition:background .12s ease;text-align:left;width:100%;background:none;border:0;font:inherit;color:inherit}

.exq-mdrow.active{background:var(--accent)}













/* аватарка в панели деталей увеличена в той же пропорции, в которой ФИО (15px) крупнее
   ФИО в списке очереди (13px) — 30px × 15/13 ≈ 35px, а не наугад */



/* дата ожидания — справа от имени, на одном уровне (как в компактной строке очереди);
   проект — под всей шапкой, во всю ширину, чтобы не зависеть от длины его названия */









/* «чек» — настоящее фото загруженной квитанции, не текстовая кнопка: маленькая карточка-превью
   с реальным снимком внутри, рамка+тень читаются как физическая фотография, а не UI-элемент */
.exq-detail-rcpt{flex:none;margin-left:10px}
.exq-detail-rcpt svg{width:13px;flex:none}






/* на широком экране кнопки называют, что именно подтверждают/отклоняют («…заявку»),
   на телефоне — короче, как и было, там это и так очевидно из контекста экрана */






/* ——— «Расходы»: История — в стиле «История операций» на странице зарплаты
   (плотная таблица-грид с шапкой колонок), только строка кликабельна и раскрывает
   разбивку по позициям/картам, т.к. одна заявка на расходы, в отличие от начисления
   зарплаты, может нести несколько позиций и несколько получателей. ——— */
/* низ последней строки истории может быть подсвеченным фоном (раскрытая заявка) и должен
   повторять скругление самой карточки — без overflow:hidden на карточке, иначе обрежет
   выпадающие списки фильтров, которые открываются за её пределы. */
.exq-hist-list > .exq-hist:last-child .exq-hist-row:last-child,
.exq-hist-list > .exq-hist:last-child .exq-hist-body:last-child{border-radius:0 0 var(--radius) var(--radius)}
.exq-hist-card .card-head{padding-top:16px;padding-bottom:14px;border-bottom:0}
.exq-hist-card .card-head h3{font-size:16px}

/* раскрывающиеся списки тулбара — чуть ярче, чем стандартный приглушённый треугольник/подпись */


.exq-hist-tot{margin-left:auto;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:19px;font-weight:700;letter-spacing:-.02em;color:var(--text)}
.exq-hist-list{display:flex;flex-direction:column}
.exq-hist-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) 84px 104px 90px 64px;column-gap:16px;align-items:center;width:100%;padding:10px 16px;border-top:1px solid var(--border);font-size:12.5px;background:none;border-left:0;border-right:0;border-bottom:0;text-align:left;cursor:pointer;font-family:inherit;color:inherit;transition:background .12s ease}

.exq-hist-head{padding:10px 16px;border-top:0;cursor:default}
.exq-hist-head:hover{background:none}
.exq-hist-head>span:nth-child(5){text-align:right}
.exq-hist-u{display:flex;align-items:center;gap:10px;min-width:0}
.exq-hist-u .avatar{flex:none;width:32px;height:32px;font-size:11.5px}
.exq-hist-uinfo{min-width:0}
.exq-hist-n{font-size:13.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.exq-hist-r{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.exq-hist-p{min-width:0;font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.exq-hist-d{font-size:12px;color:var(--text);white-space:nowrap}
.exq-hist-status{justify-self:start;padding:3px 8px;border-radius:6px;font-size:12px;font-weight:600;line-height:1.35;white-space:nowrap}
.exq-hist-status.ok{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}
.exq-hist-status.crit{color:var(--crit);background:color-mix(in srgb,var(--crit) 14%,transparent)}
.exq-hist-status.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 14%,transparent)}
.exq-hist-sum{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;text-align:right}
.exq-hist-actions{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:10px}
.exq-hist-chev{flex:none;display:flex;color:var(--text);transition:transform .15s cubic-bezier(.4,0,.2,1)}
.exq-hist-chev svg{width:16px;height:16px}
.exq-hist.open .exq-hist-chev{transform:rotate(180deg)}
@keyframes exq-hist-body-out{to{opacity:0;transform:translateY(-4px)}}
.exq-hist-body.closing{animation:exq-hist-body-out .15s cubic-bezier(.4,0,.2,1) forwards;pointer-events:none}
@media(prefers-reduced-motion:reduce){.exq-hist-body.closing{animation:none}}
/* раскрытая строка держит фон «как при наведении» весь период, пока открыта — так
   раскрытая заявка и её содержимое читаются как один цельный подсвеченный блок. */
.exq-hist.open .exq-hist-row{background:var(--surface-2)}
/* содержимое — две колонки без лишнего воздуха: слева компактной мини-таблицей позиции
   (название · цена · чек почти впритык друг к другу, не растянуты на всю ширину), справа
   получатель и действие — так высота раскрытого блока определяется только числом позиций. */
.exq-hist-body{background:var(--surface-2);border-top:1px solid var(--border);display:flex;align-items:stretch;gap:6px;padding:4px 16px 6px;animation:exq-fade-in .2s cubic-bezier(.4,0,.2,1)}
.exq-hist-ileft{flex:1 1 56%;max-width:60%;min-width:0;display:flex;flex-direction:column;justify-content:center}
.exq-hist-iline{display:flex;align-items:center;gap:14px;padding:5px 8px 5px 0}
.exq-hist-iline+.exq-hist-iline{border-top:1px solid var(--border)}
.exq-hist-iline-n{flex:1 1 auto;min-width:60px;font-size:12.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.exq-hist-iline-a{flex:none;width:72px;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:600;color:var(--text);text-align:right}
.exq-hist-iright{flex:1;min-width:220px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin:-4px 0 -6px;padding:4px 0 6px 20px;border-left:1px solid var(--border)}
.exq-hist-recip-to{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px}
.exq-hist-recip-name,.exq-hist-recip-card{font-size:12.5px;color:var(--text);white-space:nowrap}
@media(min-width:641px) and (max-width:900px){
  .exq-hist-row{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) 64px 92px 84px 64px;column-gap:10px}
  .exq-hist-uinfo,.exq-hist-p{min-width:0}
  .exq-hist-p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
@media(max-width:640px){
  /* было: узкая таблица со скроллом вбок — на экране помещалась только колонка сотрудника,
     остальное (проект/дата/статус/сумма) уезжало за край, а залипающая справа колонка действий
     наезжала на сдвинутый текст. Вместо таблицы — карточка в 3 строки: сотрудник+сумма сверху,
     проект отдельной строкой (может быть длинным), статус+дата+действия снизу. */
  .exq-hist-list{overflow-x:visible}
  .exq-hist-row{
    display:grid;
    grid-template-columns:auto 1fr auto;
    grid-template-areas:"u u sum" "p p p" "status d act";
    row-gap:6px;column-gap:10px;
    min-width:0;padding:12px 14px}
  .exq-hist-u{grid-area:u;min-width:0}
  .exq-hist-sum{grid-area:sum;font-size:15px}
  .exq-hist-p{grid-area:p}
  .exq-hist-status{grid-area:status;justify-self:start}
  .exq-hist-d{grid-area:d;justify-self:start;color:var(--muted)}
  .exq-hist-actions{grid-area:act;justify-self:end;position:static;background:none;box-shadow:none}
  .exq-hist.open .exq-hist-actions{background:none}
  /* раскрытое содержимое — позиции и получатель друг под другом на всю ширину карточки,
     а не в две узкие колонки, как на широком экране */
  .exq-hist-body{min-width:0;flex-wrap:wrap}
  .exq-hist-ileft{max-width:none;flex-basis:100%}
  .exq-hist-iright{border-left:0;padding-left:0;margin:0;flex-basis:100%}
}
@media(min-width:641px) and (max-width:900px){.exq-hist-body{min-width:0;flex-wrap:wrap}.exq-hist-ileft{max-width:none;flex-basis:100%}.exq-hist-iright{border-left:0;padding-left:0;margin:0}}
@media(prefers-reduced-motion:reduce){.exq-hist-chev{transition:none}.exq-hist-body{animation:none}}
.exq-itemsgrp{display:flex;flex-direction:column;gap:10px}
.exq-newitems{display:flex;flex-direction:column;gap:10px}
@keyframes exq-item-in{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes exq-item-out{to{opacity:0;transform:scale(.96)}}
.exq-newitem{animation:exq-item-in .2s cubic-bezier(.4,0,.2,1)}
.exq-newitem.leaving{animation:exq-item-out .16s cubic-bezier(.4,0,.2,1) forwards;pointer-events:none}
@media(prefers-reduced-motion:reduce){.exq-newitem{animation:none}.exq-newitem.leaving{animation:none}}
.exq-newitem-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.exq-newitems.solo .exq-itemx{visibility:hidden}
.exq-itemx{flex:none}


.exq-additem-row{display:flex;gap:8px;flex-wrap:wrap}



.exq-cardhead{display:flex;align-items:center;justify-content:space-between;gap:10px}
.exq-seg{display:inline-flex;flex:none}


.exq-seg-opt:not(.on):hover{background:var(--surface-3)}
.exq-newrcpt{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}
.exq-newrcpt-thumb{width:32px;height:32px;object-fit:cover;border-radius:6px;border:1px solid var(--border)}
@media(max-width:420px){
  .exq-cardhead{flex-wrap:wrap}
  .exq-seg{flex:none}
}

/* ——— посещаемость — с нуля: очередь запросов-исключений = .pay-todo-row (готовый компонент),
   журнал/лог = карточка со встроенной сводкой (.pay-sh-sum) + произвольной датой из календаря,
   таблицы в стиле команды/зарплаты ——— */



.att-card .card-head{border-bottom:0;padding-top:16px;padding-bottom:12px;flex-wrap:wrap}
/* на телефоне заголовок занимает свою строку, а переключатель офис/съёмки и календарь-фильтр —
   общую строку ниже (тот же ряд) */
@media(max-width:640px){
  .att-card .card-head h3{order:1;flex:1 1 100%}
  .att-card .card-head #attViewDD{order:2}
  .att-card .card-head .att-cal{order:3;margin-left:auto}
  /* .att-heat (мини-календарь месяца) — тоже .att-card, но у него в шапке только заголовок +
     стрелки листания месяца (как .pjh-nav на странице проекта) — им ни к чему общее правило
     выше (оно для другой шапки: заголовок/переключатель/фильтр-календарь на «Моей посещаемости»),
     оно роняло заголовок на всю строку и уводило стрелки выше него */
  .att-card .card-head.att-heat-hd h3{order:0!important;flex:0 1 auto!important}
  .att-card .card-head .att-heat-nav{order:0!important}
}
.att-card .card-head h3{font-size:16px}
.att-table{table-layout:fixed;width:100%;min-width:756px}
.att-table.att-table--wide{min-width:960px}
.att-table col.c-sotr{width:190px}
.att-table col.c-sch,.att-table col.c-arr,.att-table col.c-late{width:96px}
.att-table col.c-shoot{width:130px}
.att-table col.c-proj{width:170px}
.att-table col.c-zone{width:118px}
.att-table col.c-pen{width:160px}
.att-table th{padding-top:10px;padding-bottom:10px}
.att-table td{padding-top:10px;padding-bottom:10px;font-size:12.5px;color:var(--text-2);vertical-align:middle}
.att-table tbody tr:hover td{background:transparent}
.att-user{display:flex;align-items:center;gap:10px;min-width:0}
.att-user .avatar{flex:none;width:32px;height:32px;font-size:11.5px}
.att-user-i{min-width:0;display:flex;flex-direction:column;gap:1px}
.att-user .n{font-size:13.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-user .r{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-mono{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--text);font-size:12.5px;font-weight:600}
.att-proj{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-mono.warn{color:var(--warn)}
.att-mono.crit{color:var(--crit)}
.att-mono.muted{color:var(--muted);font-weight:400}



.pay-sh-sum-i .v.warn{color:var(--warn)}
.pay-sh-sum-i .v.crit{color:var(--crit)}
/* узкие экраны — таблица держит минимальную читабельную ширину (min-width на .att-table выше)
   и скроллится в .tablewrap горизонтально (та же логика, что у «Команды»/«Зарплат»), вместо
   того чтобы сжиматься до нечитаемого через прогрессивное скрытие колонок */

/* card-head trailing count (Запросы-исключения) */


/* штраф cell — сумма + действие «отменить» */
.att-pen-cell{display:flex;align-items:center;gap:2px}
.att-pen-cell .tm-kebab{margin-left:auto}
.att-pen-cell .tm-kb{width:30px}

/* флаг подозрительной GPS-отметки (см. ТЗ п.7 — защита от накруток) */
.att-flag{display:inline-flex;margin-left:6px;color:var(--warn);cursor:help;vertical-align:middle}
.att-flag svg{width:14px;height:14px;display:block}
.att-pen-amt{font-size:13px}
.att-flag--req{margin-left:0}




/* строки с нарушением — лёгкая подсветка, чтобы проблемы считывались первыми; фон не должен
   меняться при наведении (как и у обычных строк) */
.att-table tbody tr.sev-crit td,.att-table tbody tr.sev-crit:hover td{background:color-mix(in srgb,var(--crit) 6%,transparent)}
.att-table tbody tr.sev-warn td,.att-table tbody tr.sev-warn:hover td{background:color-mix(in srgb,var(--warn) 6%,transparent)}

/* месячная тепловая карта — личный кабинет сотрудника */
.att-heat-wd{display:grid;grid-template-columns:repeat(7,1fr);padding:14px 16px 4px;gap:4px}
.att-heat-wd span{font-size:10.5px;font-weight:600;color:var(--muted);text-align:center}
.att-heat-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:0 16px}
.att-heat-d{aspect-ratio:1;border-radius:7px;display:grid;place-items:center;font-size:11.5px;font-weight:600;color:var(--text-2);background:var(--surface-2)}
.att-heat-d.empty{background:none}
.att-heat-d.off{background:none;color:var(--border-strong)}
.att-heat-d.ok{background:color-mix(in srgb,var(--ok) 20%,transparent);color:var(--ok)}
.att-heat-d.warn{background:color-mix(in srgb,var(--warn) 24%,transparent);color:var(--warn)}
.att-heat-d.crit{background:color-mix(in srgb,var(--crit) 24%,transparent);color:var(--crit)}
.att-heat-d.exc{background:var(--surface-3);color:var(--text-2)}
.att-heat-legend{display:flex;flex-wrap:wrap;gap:14px;padding:12px 16px 16px;font-size:11.5px;color:var(--muted)}
.att-heat-legend span{display:inline-flex;align-items:center;gap:6px}
.att-heat-legend .d{width:9px;height:9px;border-radius:3px;display:inline-block}
.att-heat-legend .d.ok{background:var(--ok)}
.att-heat-legend .d.warn{background:var(--warn)}
.att-heat-legend .d.crit{background:var(--crit)}
.att-heat-legend .d.exc{background:var(--surface-3);border:1px solid var(--border-strong)}
.att-filter-row{padding:24px 16px 14px}

/* кастомный календарь-пикер даты в шапке «Журнала прихода» */
.att-cal{position:relative;margin-left:auto}



.att-cal-trig svg{width:15px;flex:none}


.att-cal-pop{position:absolute;z-index:45;top:calc(100% + 6px);right:0;width:246px;background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow);padding:12px;animation:dd-in .1s cubic-bezier(.16,1,.3,1)}
.att-cal-hd{display:flex;align-items:center;justify-content:space-between;padding:0 2px 10px}
.att-cal-mo{font-size:13px;font-weight:600;color:var(--text);text-transform:capitalize}


.att-cal-wd{display:grid;grid-template-columns:repeat(7,1fr);padding:0 2px 4px}
.att-cal-wd span{font-size:10.5px;font-weight:600;color:var(--muted);text-align:center}
.att-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;justify-items:center}
.att-cal-d{width:30px;height:30px;border:0;border-radius:7px;background:none;color:var(--text);font:inherit;font-size:12px;font-weight:500;cursor:pointer;display:grid;place-items:center}
.att-cal-grid .att-cal-d.empty{padding:0;cursor:default}
.att-cal-d:not(.empty):not(:disabled):hover{background:var(--surface-2)}
.att-cal-d.today{color:var(--accent);font-weight:700}
.att-cal-d.sel{background:var(--accent);color:var(--accent-fg);font-weight:700}
.att-cal-d:disabled{color:var(--border-strong);cursor:not-allowed}
.att-cal-today{width:100%;margin-top:8px;height:29px;border:1px solid var(--border-strong);border-radius:7px;background:none;color:var(--text-2);font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.att-cal-today:hover{background:var(--surface-2);color:var(--text)}
/* та же плавающая мини-календарь — переиспользуется в модалке бронирования актёра вместо
   нативного input[type=date], растянута на всю ширину поля вместо margin-left:auto хедера */
.abk-cal{width:100%}
.abk-cal .att-cal-trig{width:100%}
/* поле даты сидит у самого низа модалки (перед футером), поэтому в отличие от «Посещаемости»
   попап открывается вверх, иначе он вылезает за пределы модалки/экрана */
.abk-cal .att-cal-pop{left:0;right:auto;top:auto;bottom:calc(100% + 6px)}

/* team person modal */




.tmm-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 13px;font-size:12.5px;border-top:1px solid var(--border)}
.tmm-row:first-child{border-top:0}
.tmm-row > span:first-child{color:var(--muted)}
.tmm-row a{color:var(--accent);font-weight:600}
.tmm-row b{font-weight:700}
.tmm-row b.bad{color:var(--crit)}
/* team add/edit form */
.kb-grid2{display:grid;grid-template-columns:1fr 1fr;gap:15px}

.tm-combo{position:relative}
.tm-combo .dd-menu{max-height:230px;overflow-y:auto}
.tm-combo .dd[hidden]{display:none}
.tm-addinp[hidden]{display:none}
.tm-addinp{margin:0}
.dd-opt.dd-add{border-top:1px solid var(--border);justify-content:flex-start;gap:7px}
.dd-opt.dd-add .ck{display:none}
@media(max-width:520px){.kb-grid2{grid-template-columns:1fr}}

/* ——— дашборд — типографика/плотность по референсу (shadcn admin dashboard) ——— */
.db-page .card-head h3{font-size:16px;font-weight:600;letter-spacing:-.01em}










.db-page .row .t{font-size:13.5px}
.db-page .row .m{color:var(--text-2)}
.db-page .kv dt{color:var(--text-2)}
.db-page p.hint{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:12.5px;line-height:1.6;color:var(--text-2)}
.db-page p.hint .strong{font-weight:600;color:var(--text)}

.modal-bg{animation:mbg-in .16s ease}
/* на дашборде под модалкой тяжёлый слой (календарь, градиенты) — размытие фона его перерисовывает на каждом кадре и даёт лаг */

.modal-bg .modal{animation:mdl-in .2s cubic-bezier(.16,1,.3,1)}
.modal-bg.closing{animation:mbg-out .15s ease forwards}
.modal-bg.closing .modal{animation:mdl-out .15s ease forwards}
@keyframes mbg-in{from{opacity:0}to{opacity:1}}
@keyframes mbg-out{to{opacity:0}}
@keyframes mdl-in{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
@keyframes mdl-out{to{opacity:0;transform:translateY(6px) scale(.98)}}

/* toast */
.toast-host{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{color:var(--bg);font-size:12.5px;font-weight:600;padding:11px 18px;opacity:0;transform:translateY(12px) scale(.96);transition:opacity .24s cubic-bezier(.16,1,.3,1),transform .24s cubic-bezier(.16,1,.3,1);max-width:calc(82vw * var(--vz,1));text-align:center}
.toast.in{opacity:1;transform:none}
.toast--err{color:#fff}
.toast--ok{color:#fff}

@media(prefers-reduced-motion:reduce){.kb-acc-body{transition:none}.kb-acc-hd .kb-chev{transition:none}.modal-bg,.modal-bg .modal{animation:none}.toast{transition:none}}

/* phone only — sidebar becomes a slide-in overlay */
@media(max-width:640px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;width:248px;z-index:50;transform:translateX(-100%);transition:transform .2s;padding-top:var(--tg-safe-top,0px)}
  .app .sidebar.open{transform:none}
  .main{overflow-x:hidden;margin:0;border-radius:0}
  .topbar{border-radius:0}
}
/* tablet & small — tighter content, sidebar still docked like desktop */
@media(max-width:960px){
  .main{overflow-x:hidden}          /* топбар/контент не выталкивают страницу вбок (внутренние скроллы таблиц работают) */
  .search{min-width:0;flex:0 1 210px}
}
@media(max-width:860px){
  .grid.g2,.grid.g3{grid-template-columns:1fr!important}
  .topbar{padding-left:16px;padding-right:16px}
  .page{padding:16px}
  .sf-page{padding:16px}
  .sf-card{padding:14px 0 16px}
  .sf-head{margin:0 16px}
  .sf-body{padding:18px 16px 0}

  .page-head .actions{margin-left:0}
}

.scrim{display:none}
.scrim.open{display:block;position:fixed;inset:0;background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:40}
/* календарь недели v3: лента по дням */
.wk{padding:0;overflow:hidden;border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}





















/* проекты v4: группы + широкие карточки */
.pj-groups{display:flex;flex-direction:column;gap:22px}
.pj-grp-h{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.pj-grp-h .t{font-size:14px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--text)}
.pj-grp-h .n{font-family:var(--font-display);font-size:11.5px;font-weight:700;color:var(--muted);background:var(--surface-3);padding:1px 8px;border-radius:999px}
.pj-grp--at_risk .pj-grp-h .n{background:var(--crit);color:#fff}
.pj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
.pj-card{padding:18px 20px;display:flex;flex-direction:column;gap:18px;cursor:pointer;transition:transform .16s,box-shadow .16s}
.pj-card:hover{transform:translateY(-2px)}
.pj-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.pj-card-tt{min-width:0}
.pj-card-tt .k{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.pj-card-tt .nm{font-size:16px;font-weight:700;line-height:1.3;margin-top:4px}
.pj-card-hero{display:flex;flex-direction:column;align-items:flex-end;flex:none}
.pj-card-hero .n{font-family:var(--font-display);font-size:36px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;color:var(--text)}
.pj-card-hero .u{font-size:11px;font-weight:600;color:var(--muted);margin-top:4px;white-space:nowrap}
.pj-card.late .pj-card-hero .n{color:var(--crit)}
.pj-card-prog .bar{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden}
.pj-card-prog .bar i{display:block;height:100%;background:var(--accent);border-radius:999px}
.pj-card-prog .bar.crit i{background:var(--crit)}
.pj-card-prog .cap{display:flex;justify-content:space-between;font-size:11.5px;font-weight:600;color:var(--muted);margin-top:7px}
.pj-card-prog .cap b{color:var(--text);font-family:var(--font-display)}
.pj-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pj-card-foot .pm{display:flex;align-items:center;gap:8px;min-width:0}
.pj-card-foot .pm span{font-size:12.5px;font-weight:600;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root[data-theme="light"] .pj-card{color:#111}
:root[data-theme="light"] .pj-card-tt .k,:root[data-theme="light"] .pj-card-hero .u,:root[data-theme="light"] .pj-card-prog .cap{color:#7a7a7a}
:root[data-theme="light"] .pj-card-hero .n,:root[data-theme="light"] .pj-card-prog .cap b{color:#111}
:root[data-theme="light"] .pj-card.late .pj-card-hero .n{color:var(--crit)}
:root[data-theme="light"] .pj-card-prog .bar{background:var(--surface-2)}
:root[data-theme="light"] .pj-card-foot .pm span{color:#444}

:root[data-theme="light"] .pj-kpi{background:#fff}
:root[data-theme="light"] .pj-kpi .l,:root[data-theme="light"] .pj-kpi .s{color:#7a7a7a}
:root[data-theme="light"] .pj-kpi .v{color:#111}
.pj-kpi .v.crit{color:var(--crit)}
.pj-kpi .v .mo{font-weight:500}
.pj-kpi{gap:1px}
.pj-kpi .l{font-size:13.5px;font-weight:500;text-transform:none;letter-spacing:0}
.pj-kpi .v{font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1.5}
.pj-kpi .v .mo{font-weight:500}
.pj-sec{align-items:flex-end}
.pj-sec + .wk{margin-top:-10px}

/* единая модалка проект/задача */
.modal.wm{max-width:860px}
.wm-head{display:flex;align-items:flex-start;gap:14px;padding:22px 26px 6px}
.wm-hd-t{min-width:0;flex:1}
.wm-hd-t h3{font-size:22px;font-weight:700;line-height:1.25;letter-spacing:-.01em;margin-top:4px}
.wm-sub{font-size:13px;color:var(--muted);margin-top:3px}



.wm-x{flex:none}
.wm-body{padding:14px 26px 26px;display:flex;flex-direction:column;gap:14px}
.wm-plates{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.wm-plates--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.wm-plate{background:var(--surface-2);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:1px;min-width:0;box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}
.wm-plate .l{font-size:13px;font-weight:500;color:var(--muted)}
.wm-plate .v{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:22px;font-weight:600;letter-spacing:-.02em;color:var(--text);line-height:1.4}
.wm-plate .v.crit{color:var(--crit)}
.wm-plate .s{font-size:12px;color:var(--muted)}
.wm-plate .v.wm-who{font-family:var(--font-body);font-size:14px;font-weight:600;letter-spacing:0;display:flex;align-items:center;gap:8px;min-height:31px}
.wm-plate .avatar{flex:none}












.wm .proj-tabs{align-self:flex-start;margin:6px 0 0}
.wm .proj-tab{margin:0}





@media(max-width:640px){.wm-plates,.wm-plates--3{grid-template-columns:repeat(2,minmax(0,1fr))}.wm-head{padding:18px 18px 4px}.wm-body{padding:12px 18px 20px}}

/* модалки-карточки (сотрудник/клиент/превью проекта — все три .tp-modal): шапка была одной
   flex-строкой без переноса — аватар + имя + «Редактировать» + крестик пытались влезть в одну
   линию на телефоне и залезали друг на друга (имя пряталось под кнопкой). Раскладываем в 2 строки:
   аватар+имя+крестик сверху, «Редактировать» (если есть) — отдельной строкой на всю ширину снизу.
   Работает независимо от того, есть аватар/кнопка редактирования у конкретной модалки или нет —
   .wm-x всегда уезжает вправо за счёт flex:1 у .wm-hd-t, а не через жёсткий порядок колонок. */
@media(max-width:640px){
  .tp-modal .wm-head{flex-wrap:wrap;row-gap:12px}
  .tp-modal .wm-head .avatar{width:52px;height:52px;font-size:18px}
  .tp-modal .wm-head .wm-x{order:1}
  .tp-modal .wm-head > .btn{order:2;flex:1 1 100%}
  /* 3 плашки (NPS/Проектов/В работе и т.п.) — общее правило чуть выше сводит их в 2+1 с пустым
     хвостом справа от одинокой третьей; тут явно просили в ряд, как на Инвентаре/Подрядчиках */
  .tp-modal .wm-plates--3{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .tp-modal .wm-plate{padding:10px 8px}
  .tp-modal .wm-plate .v{font-size:19px}
  .tp-modal .wm-plate .v.tp-vtext{font-size:15px;font-weight:600}
  /* подписи плашек (Оклад/Начислено/Опоздания и т.п.) — в одну строку всегда: чуть мельче +
     nowrap/ellipsis как страховка, если конкретная подпись всё равно не влезет в узкую колонку */
  .tp-modal .wm-plate .l{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* вкладки профиля (Обзор/Зарплата/Посещаемость/…) заворачивались в 3 строки внутри своей же
     пилюли — выглядело грузно. Пилюля со скроллом по горизонтали, как рейка шагов в мастере
     нового проекта (тот же приём:flex-wrap:nowrap + overflow-x:auto). */
  .tp-tabs{max-width:100%}
  .tp-tabs::-webkit-scrollbar{display:none}
  .tp-tabs .proj-tab{flex:none}
}

/* тёмная тема: страница «Проекты» и единая модалка — было :not([data-theme="light"]), что
   ловило и НЕ выставленную тему тоже (до первого переключения темы data-theme вообще не
   стоит — см. переключатель ниже по файлу), а по факту это светлый рендер (--surface белый
   по умолчанию) — плашки .pj-kpi красились в surface-2 (мятный) там, где должны быть белыми.
   [data-theme="dark"] — только реально включённая тёмная тема. */
:root[data-theme="dark"] .pj-kpi{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border),0 10px 24px -14px rgba(0,0,0,.7)}

:root:not([data-theme="light"]) .pj-card-prog .bar{background:var(--surface-3)}
:root:not([data-theme="light"]) .pj-kpi .v.crit{color:#ff6b6b}
:root:not([data-theme="light"]) .wk{box-shadow:inset 0 0 0 1px var(--border)}


:root:not([data-theme="light"]) .wm-plate{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border)}













/* единые тени карточек */
.main[data-view="actors"] .subcard,.main[data-view="actors"] .act-card,.main[data-view="actors"] .pay-card,.main[data-view="actors"] .sf-card,.main[data-view="actors"] .kb-acc,.main[data-view="attendance"] .subcard,.main[data-view="attendance"] .act-card,.main[data-view="attendance"] .pay-card,.main[data-view="attendance"] .sf-card,.main[data-view="attendance"] .kb-acc,.main[data-view="payroll"] .subcard,.main[data-view="payroll"] .act-card,.main[data-view="payroll"] .pay-card,.main[data-view="payroll"] .sf-card,.main[data-view="payroll"] .kb-acc,.main[data-view="expenses"] .subcard,.main[data-view="expenses"] .act-card,.main[data-view="expenses"] .pay-card,.main[data-view="expenses"] .sf-card,.main[data-view="expenses"] .kb-acc,.main[data-view="team"] .subcard,.main[data-view="team"] .act-card,.main[data-view="team"] .pay-card,.main[data-view="team"] .sf-card,.main[data-view="team"] .kb-acc,.main[data-view="knowledge"] .subcard,.main[data-view="knowledge"] .act-card,.main[data-view="knowledge"] .pay-card,.main[data-view="knowledge"] .sf-card,.main[data-view="knowledge"] .kb-acc,.main[data-view="settings"] .subcard,.main[data-view="settings"] .act-card,.main[data-view="settings"] .pay-card,.main[data-view="settings"] .sf-card,.main[data-view="settings"] .kb-acc{box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}
.main[data-view="actors"] .act-card,.main[data-view="attendance"] .act-card,.main[data-view="payroll"] .act-card,.main[data-view="expenses"] .act-card,.main[data-view="team"] .act-card,.main[data-view="knowledge"] .act-card,.main[data-view="settings"] .act-card{transition:transform .16s,box-shadow .16s}
.main[data-view="actors"] .tm-card,.main[data-view="attendance"] .tm-card,.main[data-view="payroll"] .tm-card,.main[data-view="expenses"] .tm-card,.main[data-view="team"] .tm-card,.main[data-view="knowledge"] .tm-card,.main[data-view="settings"] .tm-card{transition:transform .16s,box-shadow .16s}
.main[data-view="actors"] .act-card:hover,.main[data-view="attendance"] .act-card:hover,.main[data-view="payroll"] .act-card:hover,.main[data-view="expenses"] .act-card:hover,.main[data-view="team"] .act-card:hover,.main[data-view="knowledge"] .act-card:hover,.main[data-view="settings"] .act-card:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(0,0,0,.2),0 16px 28px -14px rgba(0,0,0,.55)}
.main[data-view="actors"] .tm-card:hover,.main[data-view="attendance"] .tm-card:hover,.main[data-view="payroll"] .tm-card:hover,.main[data-view="expenses"] .tm-card:hover,.main[data-view="team"] .tm-card:hover,.main[data-view="knowledge"] .tm-card:hover,.main[data-view="settings"] .tm-card:hover{transform:translateY(-2px)}

/* клиенты */













.pj-sec .kb-search{flex:none}


.cl-form .wz-nc{grid-template-columns:minmax(0,1fr)}
.cl-form .wz-nc .in{width:100%}








.wm-list{background:var(--surface-2);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}
.wm-li{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;transition:background .12s}
.wm-li+.wm-li{border-top:1px solid var(--border)}
.wm-li:hover{background:var(--surface-3)}
.wm-li .t{font-size:13.5px;font-weight:600}
.wm-li .m{font-size:12.5px;color:var(--muted);margin-top:1px}
:root:not([data-theme="light"]) .wm-list{box-shadow:inset 0 0 0 1px var(--border)}

/* инвентарь */
.gr-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.gr-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:700px){.gr-grid{grid-template-columns:minmax(0,1fr)}}
.gr-card{cursor:default;gap:16px}
.gr-top{display:flex;align-items:center;gap:14px}
.gr-media{flex:none;width:60px;height:60px;border-radius:14px;overflow:hidden;background:var(--surface-3)}
.gr-media img{width:100%;height:100%;object-fit:cover;display:block}
.gr-id{min-width:0;flex:1}
.gr-id .k{font-size:12.5px;color:var(--muted)}
.gr-id .nm{font-size:16px;font-weight:700;line-height:1.3;margin-top:2px}




.gr-row{display:flex;gap:30px}
.gr-row div{display:flex;flex-direction:column}
.gr-row b{font-family:var(--font-display);font-size:18px;font-weight:600;letter-spacing:-.01em}
.gr-row b.crit{color:var(--crit)}
.gr-row span{font-size:12px;color:var(--muted)}






:root[data-theme="light"] .gr-id .nm,:root[data-theme="light"] .gr-row b:not(.crit){color:#111}


.main[data-view="gear"] .pj-card .tm-kebab{margin-right:-6px}

.gr-row b{white-space:nowrap}
.gr-row b.ok{color:var(--ok)}.gr-row b.warn{color:var(--warn)}.gr-row b.crit{color:var(--crit)}
.gr-row{gap:26px;flex-wrap:wrap}
.gr-row{gap:20px;flex-wrap:nowrap;justify-content:space-between}
.gr-row b{font-size:16px}
.pj-kpis--3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:900px){.pj-kpis--3{grid-template-columns:repeat(2,minmax(0,1fr))}}
















/* финансы */
.fin-st{font-size:12.5px;color:var(--muted);align-self:center;display:inline-flex;align-items:center;gap:6px}
.fin-st.live{color:var(--text-2)}
/* живой индикатор автообновления — тихо пульсирует, пока страница реально подключена к таблицам
   (не показываем на demo-данных, чтобы не создавать ложное ощущение «идёт обновление») */

@keyframes fin-pulse{0%,100%{opacity:1;box-shadow:0 0 0 0 color-mix(in srgb,var(--ok) 55%,transparent)}50%{opacity:.55;box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 0%,transparent)}}
/* модалка подключения — адрес сервисного аккаунта, на который нужно расшарить таблицы */






.fin-tabs{display:inline-flex;align-self:flex-start;gap:4px;padding:4px;background:var(--surface-2);border-radius:999px}





.fin-card{cursor:default;gap:14px}
.fin-card:hover{transform:none}
.fin-h{font-size:14px;font-weight:600}
.fin-h em{font-style:normal;font-weight:400;font-size:12px;color:var(--muted);margin-left:6px}








































:root[data-theme="light"] .fin-card .fin-h{color:#111}


/* финансы v2 */




















.fin-donut{position:relative;width:150px;height:150px;flex:none}
.fin-donut svg{width:100%;height:100%}
.fin-donut .c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.fin-donut .c b{font-family:var(--font-display);font-size:17px;font-weight:700}
.fin-donut .c span{font-size:11.5px;color:var(--muted)}





:root[data-theme="light"] .fin-donut .c b{color:#111}


/* дашборд v2 */
.db-h{display:flex;justify-content:space-between;align-items:center}
.db-h .link{font-size:12.5px;font-weight:600;color:var(--muted)}
.db-h .link:hover{color:var(--accent)}


.db-days{display:flex;flex-direction:column;align-items:flex-end;flex:none;line-height:1.2}
.db-days b{font-family:var(--font-display);font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}
.db-days span{font-size:12px;color:var(--muted)}
.db-days.late b,.db-days.late span{color:var(--crit)}
.db-ok{display:flex;align-items:center;gap:8px;padding:16px 20px;color:var(--muted);font-size:13px}
.db-ok .ico{width:16px;height:16px}












:root[data-theme="light"] .db-days:not(.late) b{color:#111}


/* дашборд v3 */




.db-q{display:flex;align-items:center;gap:12px;padding:12px 20px;transition:background .12s}
.db-q+.db-q{border-top:1px solid var(--border)}
.db-q:hover{background:var(--surface-3)}
.db-q .t{font-size:13.5px;font-weight:600}
.db-q .m{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-q .grow{min-width:0}
.db-q-acts{display:flex;gap:6px;flex:none}















:root[data-theme="light"] .db-q .t{color:#111}

/* дашборд v4 */



























.db-q .grow{flex:1 1 0;min-width:0}
.db-days{margin-left:auto;min-width:104px;align-items:flex-end;text-align:right}
.db-days b,.db-days span{display:block;width:100%;text-align:right}
.db-q-acts{margin-left:auto;justify-content:flex-end;min-width:150px}
.db-q{justify-content:space-between}


/* дашборд v5: день по часам */




































/* дашборд v6: сборка */





















/* дашборд v7: сводка плитками */






















/* дашборд v8: digital */
@property --p{syntax:'<number>';inherits:false;initial-value:0}
.db-heroc{position:relative;overflow:hidden;border-radius:26px;padding:34px 36px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px;background:linear-gradient(135deg,#0d3a52 0%,#082a3a 55%,#061f2c 100%);box-shadow:0 24px 50px -24px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.06);isolation:isolate}
.db-orb{position:absolute;border-radius:50%;filter:blur(60px);z-index:-1;animation:dbfloat 9s ease-in-out infinite}
.db-orb.o1{width:340px;height:340px;right:-60px;top:-140px;background:rgba(255,93,0,.55)}
.db-orb.o2{width:260px;height:260px;left:32%;bottom:-160px;background:rgba(255,140,60,.28);animation-delay:-4s}
@keyframes dbfloat{0%,100%{transform:translate(0,0)}50%{transform:translate(-24px,18px)}}
.db-hero-t .d{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.db-hero-t h1{margin:8px 0 18px;color:#fff}




.db-new{flex:none}
:root[data-theme="light"] .db-heroc{background:linear-gradient(135deg,#fff 0%,#fff3ea 100%);box-shadow:0 24px 50px -28px rgba(255,93,0,.4),inset 0 0 0 1px rgba(0,0,0,.05)}
:root[data-theme="light"] .db-hero-t h1{color:#111}
:root[data-theme="light"] .db-hero-t .d{color:#777}





@keyframes dbrise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}









@keyframes dbring{from{--p:0}}







@keyframes dbgrow{from{transform:scaleY(.1)}}









@keyframes dbslide{from{transform:scaleX(.05);opacity:.3}}
@media(max-width:900px){.db-heroc{flex-direction:column;align-items:flex-start;padding:24px}.db-hero-t h1{font-size:34px}}
@media(prefers-reduced-motion:reduce){.db-orb{animation:none!important}}







.db-r{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 24px;cursor:pointer;transition:background .15s;position:relative}
.db-r::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--accent);opacity:0;transition:opacity .15s}

.db-r:hover::before{opacity:1}
.db-r .l{display:flex;flex-direction:column;min-width:0}
.db-r .l span{font-size:13.5px;font-weight:600}
.db-r .l em{font-style:normal;font-size:12px;color:var(--muted);line-height:1.4}
.db-r .l em i{font-style:normal;color:var(--crit);font-weight:600}
.db-r b{font-family:var(--font-display);font-size:26px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.db-r b i{font-style:normal;font-size:15px;font-weight:500;color:var(--muted)}
.db-r b.neg{color:var(--crit)}

:root[data-theme="light"] .db-r b:not(.neg),:root[data-theme="light"] .db-r .l span{color:#111}


/* сегодня по часам v2 */



















/* подрядчики */
.ac-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.ac-card{cursor:default;gap:16px}
.ac-card:hover{transform:translateY(-2px)}
.ac-top{display:flex;align-items:flex-start;gap:14px}
.ac-ph{flex:none;width:72px;height:72px;border-radius:18px;overflow:hidden;background:var(--surface-3)}
.ac-ph img{width:100%;height:100%;object-fit:cover;display:block}
.ac-id{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ac-id .nm{font-size:16px;font-weight:700;line-height:1.3}
.ac-id .k{font-size:12.5px;color:var(--muted)}


.ac-row{display:flex;gap:30px}
.ac-row div{display:flex;flex-direction:column}
.ac-row b{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:-.01em}
.ac-row span{font-size:12px;color:var(--muted)}
/* телефон: панель сохранения настроек поднимаем над нижним меню (.bnav: 66px + отступы), а внизу
   страницы оставляем место, чтобы последние поля не оказывались под панелью */
@media(max-width:640px){
  :root .set-bar{bottom:calc(86px + env(safe-area-inset-bottom,0px))}
  .main[data-view="settings"] .sf-page{padding-bottom:calc(210px + env(safe-area-inset-bottom,0px))}
}
/* Telegram Desktop, полный экран: свои кнопки Telegram держит в правом/левом верхнем углу */
html.tg-desk .topbar{padding-left:64px;padding-right:110px}
/* дашборд директора (ПК): приветствие и сводка — одна плашка, без вложенных панелей и разделителей;
   число стоит вплотную слева от подписи, группы разделены только воздухом и заголовком */
.db-heroc.db-merged{flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;padding:14px 4px 4px;overflow:visible;isolation:auto}
/* без плашки: только цифры и светящийся градиент, который перетекает в фон страницы (края у свечения не режутся) */
:root .db-heroc.db-merged,:root[data-theme] .db-heroc.db-merged{background:none;box-shadow:none;border-radius:0}
.db-merged .db-orb{z-index:0}
.db-merged .db-orb.o1{right:-24px;top:-80px}
.db-merged .db-orb.o2{bottom:-90px}
:root[data-theme="light"] .db-merged .db-orb{opacity:.55}
.db-merged > *:not(.db-orb){position:relative;z-index:1}
.db-merged ~ *{position:relative}
.db-merged .db-mh{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:0 0 26px}
.db-merged .db-hero-t h1{margin:8px 0 0}
.db-merged .db-new{margin-bottom:4px}
.db-merged .db-sumin{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.db-merged .db-r{flex-direction:column-reverse;align-items:flex-start;justify-content:flex-end;gap:8px;padding:6px 0;cursor:default;transition:none;background:none}
.db-merged .db-r::before{display:none}

.db-merged .db-r b{text-align:left;font-size:46px;line-height:1}
.db-merged .db-r .l span{font-size:14px;font-weight:600;color:rgba(255,255,255,.72)}
:root[data-theme="light"] .db-merged .db-r .l span{color:#555}
@media(max-width:900px){
  .db-heroc.db-merged{padding:10px 2px 2px}
  .db-merged .db-mh{flex-direction:column;align-items:flex-start;gap:16px;padding:0 0 18px}
  .db-merged .db-new{margin-bottom:0}
  .db-merged .db-sumin{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:10px}
  .db-merged .db-r b{font-size:40px}
}























.dv{gap:0;padding:22px 0 0;border-radius:24px;overflow:hidden}
/* сам блок — не кнопка: без подъёма и оранжевой обводки при наведении */
.dv{cursor:default}
:root .dv:hover,:root:not([data-theme="light"]) .dv:hover{transform:none;box-shadow:inset 0 0 0 1px var(--border),0 10px 24px -14px rgba(0,0,0,.7)}
:root[data-theme="light"] .dv:hover{transform:none;box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}
.dv-head{display:flex;align-items:baseline;gap:20px;flex-wrap:wrap;padding:0 24px}
.dv-title b{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.015em}
.dv-title b i{font-style:normal;font-weight:800}
.dv-head{align-items:center}
.dv .proj-tabs{position:relative;align-self:center;margin:0 0 0 auto}

.dv .proj-tab{position:relative;z-index:1;margin:0}


.dw{position:relative;width:100%;min-width:0;align-self:stretch;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-top:16px;cursor:grab;user-select:none;-webkit-user-select:none;border-top:1px solid var(--border)}
.dw::-webkit-scrollbar{display:none}
.dw.drag{cursor:grabbing;scroll-snap-type:none}
.dw-col{flex:0 0 calc(100%/4*var(--n,1));width:calc(100%/4*var(--n,1));min-width:0;overflow:hidden;scroll-snap-align:start;display:flex;flex-direction:column;gap:10px;padding:14px 8px 12px;min-height:210px;border-right:1px solid var(--border);box-sizing:border-box}
.dw-h{display:flex;align-items:center;height:26px;gap:7px;padding:0 4px}
.dw-h span{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.dw-h b{font-family:var(--font-display);font-size:19px;font-weight:700;line-height:1}
.dw-h em{font-style:normal;font-size:11px;color:var(--muted);text-transform:uppercase}
.dw-col.off:not(.today){background:rgba(150,150,150,.11)}
:root[data-theme="light"] .dw-col.off:not(.today){background:rgba(0,0,0,.045)}
.dw-col.today{background:color-mix(in srgb,var(--accent) 6%,transparent)}
.dw-col.today .dw-h b{color:var(--accent-fg);background:var(--accent);min-width:26px;height:26px;padding:0 4px;border-radius:99px;display:inline-grid;place-items:center;font-size:15px}
.dw-col.today .dw-h span{color:var(--accent)}
.dw-col.past .dw-b{opacity:.6}
.dw-b{position:relative;display:flex;flex-direction:column;gap:8px;min-width:0}
.dw-g{display:grid;grid-auto-flow:column;grid-template-rows:repeat(3,var(--evh,132px));grid-auto-columns:minmax(0,1fr);gap:8px;align-items:stretch}
.dw-ev{height:var(--evh,132px);box-sizing:border-box;overflow:hidden;padding:11px 13px 12px;border-radius:13px;background:var(--surface-3);display:flex;flex-direction:column;gap:3px;cursor:pointer;min-width:0;transition:background .12s,transform .12s}
.dw-ev:hover{background:color-mix(in srgb,var(--text) 9%,var(--surface-3));transform:translateY(-1px)}
.dw-ev b{font-size:14px;font-weight:600;line-height:1.3;color:var(--text);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}
.dw-ev > span{font-size:12.5px;color:var(--text-2);line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.dw-ev--shoot{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}
.dw-ev--shoot:hover{background:linear-gradient(180deg,#ff8840,#ff6a14)}
.dw-ev--shoot b,.dw-ev--shoot > span{color:#fff}
.dw-ev--shoot > span{opacity:.9}
.dw-ev--late > span{color:var(--crit);font-weight:600}
.dw-ev > span:not(.dw-vid){-webkit-line-clamp:1}
.dw-ev > .dw-vid{font-weight:600;color:var(--text);-webkit-line-clamp:1}
.dw-ev--shoot > .dw-vid{color:#fff}
.dw-ev .dw-who{display:flex;align-items:center;gap:7px;margin-top:0;padding-top:8px;font-style:normal}
.dw-ev .dw-who .avatar{width:24px;height:24px;font-size:9px;flex:none}
.dw-ev .dw-who i{font-style:normal;font-size:12.5px;font-weight:600;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dw-ev--shoot .dw-who i{color:#fff}
.dvm-who{display:flex;align-items:center;gap:8px}
.dvm-who .avatar{width:26px;height:26px;font-size:9.5px}
.dvm-who i{font-style:normal;font-size:12.5px;font-weight:600;color:var(--text-2)}
.dvm-r--shoot .dvm-who i{color:#fff}
.dw-ev--done{opacity:.55}
.dw-ev--done > span:last-of-type::before{content:"✓ "}
.dw-ev--off{background:transparent;box-shadow:inset 0 0 0 1.5px var(--border-strong)}
.dw-ev--off > span{color:var(--muted)}
.dw-ev .dw-stack{display:inline-flex;flex:none}
.dw-ev .dw-stack .avatar{margin-left:-7px}
.dw-ev .dw-stack .avatar:first-child{margin-left:0}


#dvLayerTabs{justify-self:center}
.dv > .dv-head:has(#dvLayerTabs){display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center}

@media(max-width:1180px){.dv > .dv-head:has(#dvLayerTabs){display:flex;flex-wrap:wrap}}
.dv .proj-tabs{margin-left:0!important}


.dvm-list{display:flex;flex-direction:column;gap:8px;padding:4px 0 6px}
.dvm-r{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left;padding:12px 14px;border:0;border-radius:13px;background:var(--surface-3);color:var(--text);font:inherit;cursor:pointer;transition:background .12s}

.dvm-r .t{font-family:var(--font-display);font-size:13px;font-weight:700;color:var(--muted)}
.dvm-r b{display:block;font-size:14.5px;font-weight:600}
.dvm-r div span{font-size:13px;color:var(--muted)}
.dvm-r--shoot{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}
.dvm-r--shoot:hover{background:linear-gradient(180deg,#ff8840,#ff6a14)}
.dvm-r--shoot .t,.dvm-r--shoot b,.dvm-r--shoot div span{color:#fff}
.dvm-r--late .t,.dvm-r--late div span{color:var(--crit)}
.dvm-r--done{opacity:.6}
.dw-free{position:absolute;left:0;top:0;font-size:12px;color:var(--muted);padding:2px 4px}
:root[data-theme="light"] .dv-title b{color:#111}
@media(max-width:640px){
  .dv{padding:16px 0 0;border-radius:22px}
  .dv-head{padding:0 16px;gap:8px 14px}
  .dv-title b{font-size:18px}
  .dv > .dv-head:has(#dvLayerTabs){display:flex;flex-wrap:wrap}
  
  
  .dv .proj-tabs{margin-left:0;width:100%}
  .dv .proj-tab{flex:1}
  .dw-col{flex-basis:calc(100%/1.9*var(--n,1));width:calc(100%/1.9*var(--n,1));padding:12px 6px 14px}
}
.wr{padding-bottom:0}

:root .pj-card.dv,:root:not([data-theme="light"]) .pj-card.dv,.pj-card#dbAttn{background:var(--surface)}
:root .pj-card#dbAttn:hover,:root:not([data-theme="light"]) .pj-card#dbAttn:hover{transform:none;box-shadow:inset 0 0 0 1px var(--border),0 10px 24px -14px rgba(0,0,0,.7)}
:root[data-theme="light"] .pj-card#dbAttn:hover{transform:none;box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}
.wr .dv-head{padding:0 20px}
/* одна сетка на весь список: колонки по содержимому, а промежутки между ними — равные 1fr, поэтому отступы между столбцами и стрелкой везде одинаковые; по краям 16px */

.wr-r{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:center}









.wr-r + .wr-r{border-top:1px solid var(--border)}


#dbAttn .fin-h{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.01em}











.wr-seg{display:flex;gap:3px}
.wr-seg i{flex:1;min-width:2px;height:6px;border-radius:3px;background:color-mix(in srgb,var(--text) 13%,transparent)}
.wr-seg i.on{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}


















/* сетка = колонки календаря: 4 в ряд, те же отступы и высота карточки */

/* 4 в ряд на всю ширину блока, зазор 8px — как между карточками одного дня в календаре */






@media(max-width:900px){
  
  
  .wr-r{display:block}
  
  
  
  
  
  
  
}
@media(max-width:640px){
  .wr .dv-head{padding:0 16px}
  
  
  
  
  /* строка «Проекты» на телефоне: было тесно — статус/срок голым текстом прижаты к самому краю
     вплотную к заголовку, весь ряд читался как ужатая десктопная таблица, а не карточка.
     Добавил воздуха (padding/row-gap), увеличил заголовок, а статус/срок сдвинул отдельной
     плашкой под заголовок (не в ту же строку) — так он не конкурирует за место с длинным
     названием проекта и не подходит вплотную к правому краю. */
  
  
  
  
  
  
  
  
  
  
}











.gs{position:relative;display:flex}
.topbar .gs + .theme-btn{margin-left:auto}
@media(max-width:900px){.topbar .gs{flex:1;min-width:0}.topbar .gs .search{flex:1}}
.gs-pop{position:absolute;top:calc(100% + 8px);left:0;width:max(100%,380px);max-width:calc(calc(100vw * var(--vz,1)) - 24px);max-height:min(calc(62vh * var(--vz,1)),440px);overflow-y:auto;padding:6px;background:var(--surface);border:1px solid var(--border-strong);border-radius:14px;box-shadow:0 18px 40px -12px rgba(0,0,0,.55),0 2px 6px rgba(0,0,0,.2);z-index:70}
.gs-pop[hidden]{display:none}
.gs-h{padding:8px 10px 4px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.gs-r{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:8px 10px;border:0;border-radius:9px;background:none;color:var(--text);text-align:left;cursor:pointer;font:inherit}
.gs-r:focus-visible{background:var(--surface-3)}
.gs-t{font-size:13.5px;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-m{font-size:12px;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-empty{padding:14px 12px;font-size:13px;color:var(--muted)}
/* телефон: поле поиска занимает всю шапку слева от кнопок темы и уведомлений; выпадашка — на всю ширину экрана */
@media(max-width:640px){
  .topbar .gs{position:static;flex:1;min-width:0}
  .topbar .gs .search{flex:1;width:auto;min-width:0;margin:0}
  .topbar .search kbd{display:none}
  .gs-pop{left:12px;right:12px;width:auto;max-width:none}
}
.pe{display:flex;flex-direction:column;gap:14px}
.pe .wm-plates{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:640px){.pe .wm-plates{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pe-bar{display:flex;height:8px;border-radius:99px;overflow:hidden;background:var(--surface-3)}
.pe-bar i{display:block;height:100%}
.pe-bar .paid,.pe-leg .paid{background:var(--accent)}
.pe-bar .pend,.pe-leg .pend{background:var(--warn)}
.pe-leg{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:-6px}
.pe-leg span{display:inline-flex;align-items:center;gap:6px}
.pe-leg i{width:8px;height:8px;border-radius:99px;display:inline-block}
.pe-pct{margin-left:auto}












.loc-card{padding:0;gap:0;overflow:hidden;justify-content:flex-start}
.loc-gal{position:relative;aspect-ratio:16/10;background:var(--surface-3);overflow:hidden;touch-action:pan-y}
/* трек из всех фото карточки в ряд — .loc-track сдвигается на -100%×индекс, свайп (см. JS в конце
   файла, делегированный обработчик на .loc-gal) тянет его за пальцем через translateX в реальном
   времени; .dragging снимает transition на время самого жеста, чтобы не было запаздывания за пальцем */
.loc-track{display:flex;width:100%;height:100%;transform:translateX(0);transition:transform .32s cubic-bezier(.16,1,.3,1)}
.loc-track.dragging{transition:none}
.loc-slide{flex:0 0 100%;width:100%;height:100%}
.loc-gal img{width:100%;height:100%;object-fit:cover;display:block;user-select:none}
.loc-nav{position:absolute;top:50%;opacity:0}

.loc-nav.prev{left:10px}.loc-nav.next{right:10px}
.loc-gal:hover .loc-nav{opacity:1}
@media (hover:none){.loc-nav{opacity:.9}}
.loc-cnt{position:absolute;top:10px;right:10px}
.loc-dots{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;gap:5px;pointer-events:none}
.loc-dots i{width:6px;height:6px;border-radius:99px;background:rgba(255,255,255,.55);transition:width .15s,background .15s}
.loc-dots i.on{width:16px;background:#fff}
.loc-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:12px}
.loc-h{display:flex;align-items:flex-start;gap:10px}
.loc-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.loc-nm{font-size:16px;font-weight:700;line-height:1.3}
.loc-addr,.loc-ct{display:flex;align-items:flex-start;gap:6px;font-size:12.5px;color:var(--muted);line-height:1.4}
.loc-addr .ico,.loc-ct .ico{width:14px;height:14px;flex:none;margin-top:1px}
.loc-desc{margin:0;font-size:13px;line-height:1.45;color:var(--text-2)}
:root[data-theme="light"] .loc-nm{color:#111}
.lf-ph{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
.lf-tile{position:relative;aspect-ratio:4/3;border-radius:12px;overflow:hidden;background:var(--surface-3)}
.lf-tile img{width:100%;height:100%;object-fit:cover;display:block}
.lf-x{position:absolute;top:5px;right:5px}

.lf-main{position:absolute;left:5px;bottom:5px;font-size:10.5px;font-weight:700;color:#fff;background:rgba(0,0,0,.6);padding:2px 7px;border-radius:999px}
.lf-add{aspect-ratio:4/3;display:flex;flex-direction:column;align-items:center;justify-content:center}

.lf-add:disabled{opacity:.6}
.lf-add .ico{width:18px}
.ac-rate{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding-top:12px;border-top:1px solid var(--border)}
.ac-rate span{font-size:12px;color:var(--muted)}
.ac-rate b{font-family:var(--font-display);font-size:15px;font-weight:700}
:root[data-theme="light"] .ac-rate b{color:#111}

:root[data-theme="light"] .ac-id .nm,:root[data-theme="light"] .ac-row b{color:#111}



.ac-card{justify-content:space-between}
.ac-row{gap:24px}


/* посещаемость v2 */
.att-req{margin-bottom:0}








.main[data-view="attendance"] .att-mono.warn{color:var(--accent)}
.main[data-view="attendance"] .att-table tr.sev-warn>td{background:none}
.main[data-view="attendance"] .att-table tbody tr{transition:background .12s}
.main[data-view="attendance"] .att-table tbody tr:hover>td{background:var(--surface-3)}


.main[data-view="attendance"] .pay-sh-sum-i .v{font-size:30px}
.main[data-view="attendance"] .pay-sh-sum-i .l{font-size:14px}
.main[data-view="attendance"] .att-req .db-q:hover{background:none}
.main[data-view="attendance"] .att-req .db-q{transition:none}
.main[data-view="payroll"]{--warn:var(--accent);--warn-soft:var(--accent-soft)}
.main[data-view="payroll"] .pay-sheet .pay-sh-row:not(.pay-sh-head){transition:background .12s}
.main[data-view="payroll"] .pay-sheet .pay-sh-row:not(.pay-sh-head):hover{background:var(--surface-3)}
.main[data-view="payroll"] .pay-hist-row:not(.pay-hist-head){transition:background .12s}
.main[data-view="payroll"] .pay-hist-row:not(.pay-hist-head):hover{background:var(--surface-3)}
.main[data-view="expenses"]{--warn:var(--accent);--warn-soft:var(--accent-soft)}
.main[data-view="expenses"] .exq-mdrow{transition:background .12s}



/* команда v2 */













.tm-dept-h.wz-s1-lbl{display:flex;align-items:center;gap:8px;margin-bottom:10px}

.ac-ph{width:56px;height:56px;border-radius:16px}
.ac-desc{margin:0;font-size:12.5px;line-height:1.45;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ac-tags{display:flex;flex-wrap:wrap;gap:5px}
.ac-star{color:var(--accent)}
.ac-row{align-items:flex-end}




.ac-card{gap:12px}
:root[data-theme="light"] .ac-desc{color:#555}


.ac-card .ac-row{margin-top:auto}

.ac-card .ac-top{align-items:center}

.ac-card .ac-desc{margin-top:-2px}
.ac-card{gap:10px}
.ac-card .ac-row{gap:22px;flex-wrap:nowrap;align-items:flex-end}
.ac-card .ac-row>div{gap:0;flex:none}
.ac-card .ac-row b{white-space:nowrap;line-height:1.15;display:flex;align-items:center;gap:5px}
.ac-card .ac-row span{line-height:1.2;margin-top:1px}
.ac-card .ac-star{font-size:20px;line-height:1;color:var(--accent)!important;display:inline-block}




.ac-card .ac-row{gap:18px}


/* база знаний v2 */
.main[data-view="knowledge"] .kb-side{border:0;border-radius:18px;background:var(--surface-2)}
:root[data-theme="light"] .main[data-view="knowledge"] .kb-side{background:#fff}
.main[data-view="knowledge"] .kb-acc{border:0;border-radius:14px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--border);transition:box-shadow .16s,transform .16s}
:root[data-theme="light"] .main[data-view="knowledge"] .kb-acc{background:#f6f6f6;box-shadow:none}
.main[data-view="knowledge"] .kb-acc:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px var(--border-strong),0 10px 20px -14px rgba(0,0,0,.6)}
.main[data-view="knowledge"] .kb-acc.open{box-shadow:inset 0 0 0 1.5px var(--accent),0 12px 24px -16px rgba(255,93,0,.5)}
.main[data-view="knowledge"] .kb-acc-hd{padding:14px 18px}
.main[data-view="knowledge"] .kb-acc-hd .t{font-size:14.5px}




.main[data-view="knowledge"] .kb-acc-pad,.main[data-view="knowledge"] .kb-acc-body,.main[data-view="knowledge"] .kb-acc-inner{background:transparent!important}
.main[data-view="knowledge"] .kb-acc.open{background:var(--surface)}
:root[data-theme="light"] .main[data-view="knowledge"] .kb-acc.open{background:#f6f6f6}



/* настройки правил v2 */
.main[data-view="settings"] .sf-card{border:0;border-radius:18px;background:var(--surface-2);padding:20px 0 12px}
:root[data-theme="light"] .main[data-view="settings"] .sf-card{background:#fff}
.main[data-view="settings"] .sf-head h3{font-size:17px;font-weight:700}
.main[data-view="settings"] .sfg-cell{transition:background .14s}

.main[data-view="settings"] .sfg-num{font-size:18px;font-weight:700}


.main[data-view="settings"] .sfg::after{background:color-mix(in srgb,var(--text) 8%,transparent)}
:root[data-theme="light"] .main[data-view="settings"] .sfg-num,:root[data-theme="light"] .main[data-view="settings"] .sf-head h3{color:#111}

/* настройки правил v3: правила плашками */
.main[data-view="settings"] .sfg,.main[data-view="settings"] .sfg--1,.main[data-view="settings"] .sfg--3{grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:10px;padding:14px 20px 6px;border:0}
.main[data-view="settings"] .sfg::after{display:none}
.main[data-view="settings"] .sfg-cell{position:relative;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;padding:14px 16px 14px;transition:transform .16s,box-shadow .16s,background .16s}

.main[data-view="settings"] .sfg-cell:hover{transform:translateY(-2px)}

.main[data-view="settings"] .sfg-cell:empty{display:none}
.main[data-view="settings"] .sfg-name{font-size:13px;color:var(--muted);font-weight:500;padding-right:26px}
.main[data-view="settings"] .sfg-val{display:flex;align-items:baseline;gap:6px}
.main[data-view="settings"] .sfg-num{font-size:26px;font-weight:800;letter-spacing:-.02em}
.main[data-view="settings"] .sfg-u{font-size:12.5px;color:var(--muted);font-weight:600}
.main[data-view="settings"] .sfg-edit{position:absolute;top:10px;right:10px;margin:0;opacity:.55}
.main[data-view="settings"] .sfg-cell:hover .sfg-edit{opacity:1}
.main[data-view="settings"] .sf-head{margin:0 20px}
.main[data-view="settings"] .sf-card--geo .sf-body,.main[data-view="settings"] .sf-card--geo{padding-bottom:14px}
.main[data-view="settings"] .sf-body,.main[data-view="settings"] .sf-head,.main[data-view="settings"] .sfg{border-top:0!important;border-bottom:0!important}


.main[data-view="settings"] .sfg-cell:hover{transform:translateY(-3px)}

.main[data-view="settings"] .sf-wrap > section.sf-card--grid:nth-of-type(1) .sfg{grid-template-columns:repeat(3,minmax(0,1fr))}
/* «Премии» и «Норматив часов» теперь друг под другом на всю ширину — тоже по 3 плашки в ряд, как «Штрафы» */
.main[data-view="settings"] .sf-row2 .sfg{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:640px){.main[data-view="settings"] .sf-row2 .sfg{grid-template-columns:1fr}}
/* ширина плашек «Радиус»/«Опоздание без штрафа» — та же, что у плашек «Штрафы за нарушения»: тот же
   3-колоночный делитель ширины карточки, просто сайдбар занимает 1 колонку из 3, а карта — 2.
   Только на широких экранах — на ≤820px карта и так уходит под сайдбар (см. @media(max-width:820px) выше),
   это правило не должно было туда лезть и раньше вылезало за счёт большей специфичности. */
@media(min-width:821px){
  .main[data-view="settings"] .sf-card--geo .sf-geo{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;--geo-map-h:280px}
  .main[data-view="settings"] .sf-card--geo .sf-geo-side{grid-column:span 1;justify-content:space-between}
  .main[data-view="settings"] .sf-card--geo .sf-lmap{grid-column:span 2}
}
.main[data-view="settings"] .sf-card--geo .sf-body{padding:18px 20px 4px}
/* на планшете/телефоне карточка складывается в 1 колонку — боковой отступ должен совпадать с плашками
   «Штрафы за нарушения» (14px), а не с десктопным 20px, иначе плашки геозоны уже остальных */
@media(max-width:820px){.main[data-view="settings"] .sf-card--geo .sf-body{padding-left:10px;padding-right:10px}}
.main[data-view="settings"] .sf-card--geo .sf-geo-side .sfg-cell{padding:14px 16px}
.main[data-view="settings"] .sf-card--geo .sf-geo-side .sfg{margin:0;padding:0;grid-template-columns:1fr}
.main[data-view="settings"] .sf-head h3{font-size:14px!important;font-weight:600!important;letter-spacing:0!important;line-height:1.3}

.main[data-view="settings"] .sf-head h3{font-family:var(--font-body)!important;font-size:15.5px!important;font-weight:600!important;letter-spacing:0!important;line-height:1.3!important;color:var(--text)!important}
.main[data-view="settings"] .sf-card--geo .sf-geo-side .sfg{margin-left:0;margin-right:0}
.main[data-view="settings"] .sf-card--geo .sf-geo-side .sfg{padding-top:0}


/* ===== единый вид полей ввода: .in, textarea, поиск, выпадающие списки, календарь-триггеры, sf-ctl =====
   размер 33px · 12.5px/600 · радиус 8 · фон --field · рамка --field-border
   hover: фон --surface + рамка --border-strong · focus: оранжевая рамка + кольцо · ошибка: красная */











/* настройки: правка кликом по всей плашке */
.main[data-view="settings"] .sfg-cell--edit{cursor:pointer}
.main[data-view="settings"] .sfg-cell.editing{cursor:text;background:var(--surface)!important;transform:none!important;box-shadow:inset 0 0 0 1.5px var(--accent),0 0 0 4px var(--accent-soft)!important}

.main[data-view="settings"] .sfg-in{width:auto;min-width:2ch;flex:0 1 auto;margin:0}

/* множитель: крупное значение, открывается кликом по плашке */
:root .main[data-view="settings"] .sfg--3 .sfg-cell .dd{width:100%}
:root .main[data-view="settings"] .sfg--3 .sfg-cell .dd-trigger{width:auto}

:root .main[data-view="settings"] .sfg--3 .sfg-cell .dd-trigger .chev{width:16px}
.main[data-view="settings"] .sfg-cell:has(.dd.open){cursor:default;background:var(--surface)!important;transform:none!important;box-shadow:inset 0 0 0 1.5px var(--accent),0 0 0 4px var(--accent-soft)!important;z-index:5}

/* множитель: значения кнопками внутри плашки */
.main[data-view="settings"] .sfg-cell--mult{cursor:default}
.mult-pills{display:flex;flex-wrap:wrap;gap:6px}




.mult-pills{gap:4px;flex-wrap:nowrap}
.mult-pill{flex:1 1 0;min-width:0}
.mult-pills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}


/* виджет несохранённых изменений: плавающая пилюля */
.set-bar{width:max-content;max-width:calc(100% - 24px);margin:0 auto;gap:22px;padding:8px 8px 8px 20px;border:0;border-radius:999px;background:color-mix(in srgb,var(--surface) 78%,transparent);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);box-shadow:0 0 0 1px var(--border-strong),0 22px 44px -14px rgba(0,0,0,.75),0 0 30px -6px rgba(255,93,0,.35);animation:setbar-in .45s cubic-bezier(.16,1.2,.3,1)}
@keyframes setbar-in{from{opacity:0;transform:translateY(24px) scale(.92)}to{opacity:1;transform:none}}
.set-bar > span{font-size:13.5px;font-weight:600;gap:10px;color:var(--text)}
.set-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);position:relative;flex:none}
.set-dot::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--accent);opacity:0;animation:setpulse 1.8s ease-out infinite}
@keyframes setpulse{0%{transform:scale(.5);opacity:.8}100%{transform:scale(1.5);opacity:0}}




:root[data-theme="light"] .set-bar{background:rgba(255,255,255,.82);box-shadow:0 0 0 1px #e6e6e6,0 22px 44px -16px rgba(0,0,0,.3),0 0 30px -8px rgba(255,93,0,.3)}
@media(max-width:640px){.set-bar{width:auto;border-radius:22px;margin:0}}
@media(prefers-reduced-motion:reduce){.set-bar,.set-dot::after{animation:none!important}}

/* поиск в шапке */
.topbar .search{min-width:260px;width:280px}
.topbar .search .ico{width:16px}
.topbar .search kbd{flex:none}

.topbar .search:focus-within{width:420px}


@media(max-width:900px){.topbar .search{min-width:0;width:100%;flex:1}.topbar .search:focus-within{width:100%}.topbar .search kbd{display:none}}

/* шапка: кнопки вида, темы и уведомлений в одном стиле с поиском */










@keyframes bellring{0%,100%{transform:rotate(0)}20%{transform:rotate(16deg)}40%{transform:rotate(-14deg)}60%{transform:rotate(9deg)}80%{transform:rotate(-5deg)}}
.topbar .iconbtn .dot{top:7px;right:8px}



/* база знаний: поиск как в шапке */

:root .main[data-view="knowledge"] .kb-search .ico{width:16px}





/* ===== единый вид бейджей =====
   тег/статус: 22px · 12px/600 · пилюля · тон по смыслу; счётчик: 20px · 11.5px/700 · пилюля */
:root .pill{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:22px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1;letter-spacing:0;white-space:nowrap;border:0;box-sizing:border-box;transition:background .15s,color .15s}

:root .pill--accent,:root .pill--warn{background:var(--accent-soft);color:var(--accent)}
:root .pill--ok{background:var(--ok-soft);color:var(--ok)}
:root .pill--crit{background:var(--crit-soft);color:var(--crit)}
:root .pill--neutral{background:var(--surface-3);color:var(--text-2)}
:root .count,:root .wz-cnt-b,:root .tm-dept-h .count{
  display:inline-flex;align-items:center;justify-content:center;height:20px;min-width:20px;padding:0 7px;border-radius:999px;font-size:11.5px;font-weight:700;line-height:1;border:0;box-sizing:border-box}
:root .db-cnt,:root .kb-main .card-head .badge{min-width:20px}
:root .kb-cat .badge{min-width:20px}
:root[data-theme="light"] .pill--neutral{background:var(--surface-2);color:#555}


/* кнопки «Редактировать» и «Удалить» */














/* кнопка «Добавить документ» */
:root .kb-add{position:relative}
:root .kb-add .ico{width:16px}








/* оранжевый градиент: наведение «Редактировать», активные пункты меню и категорий */



/* «Удалить»: красный градиент при наведении */


/* модалка подтверждения удаления */
.modal.cf-modal{max-width:380px;padding:30px 28px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:0;overflow:visible}
.cf-ico{position:relative;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--crit-soft);color:var(--crit);margin-bottom:18px;animation:cfpop .5s cubic-bezier(.16,1.4,.3,1) both}
.cf-ico .ico{width:28px;height:28px;stroke-width:2}
.cf-ico::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:2px solid var(--crit);opacity:0;animation:cfring 1.8s ease-out .35s infinite}
@keyframes cfpop{from{transform:scale(.4) rotate(-20deg);opacity:0}to{transform:none;opacity:1}}
@keyframes cfring{0%{transform:scale(.8);opacity:.5}100%{transform:scale(1.25);opacity:0}}
.cf-modal h3{font-size:19px;font-weight:700;letter-spacing:-.01em;margin:0 0 8px}
.cf-modal p{margin:0 0 24px;font-size:13.5px;line-height:1.55;color:var(--muted);max-width:32ch}
.cf-acts{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}






.cf-del .ico{width:16px}

@media(prefers-reduced-motion:reduce){.cf-ico,.cf-ico::after{animation:none!important}}

/* модалка удаления v2: шире, текст слева, маленькая иконка у заголовка, кнопки как в остальном приложении */
.modal.cf-modal{max-width:460px;padding:24px 26px 22px;text-align:left;align-items:stretch;overflow:visible}
.cf-h{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.cf-ico{width:auto;height:auto;margin:0;background:none;border-radius:0;animation:none!important;display:inline-flex;color:var(--crit);flex:none}
.cf-ico::after{display:none!important}
.cf-ico .ico{width:20px;height:20px;stroke-width:2.2}
.cf-modal h3{font-size:17px;font-weight:700;margin:0}
.cf-modal p{margin:0 0 22px;max-width:none;font-size:13.5px;line-height:1.55;color:var(--muted);text-align:left}
.cf-acts{display:flex;justify-content:flex-end;gap:8px;width:auto}




:root .cf-acts .cf-del .ico{width:15px}










/* нейтральные (не опасные) подтверждения в cf-модалках — тот же приём, что cf-del, но акцентным
   цветом вместо красного (иначе .btn--primary тут перебивается общим .cf-acts .btn:not(...) выше) */


:root .cf-acts .btn--primary .ico{width:15px}




/* ===== модалки добавления / редактирования: единая оболочка ===== */

:root .modal:not(.wm):not(.cf-modal) .modal-head{padding:22px 26px 6px;border-bottom:0;gap:12px}
:root .modal:not(.wm):not(.cf-modal) .modal-head h3{font-size:19px;font-weight:700;letter-spacing:-.01em}
:root .modal:not(.wm):not(.cf-modal) .modal-head .m{font-size:12.5px;color:var(--muted)}


:root .modal:not(.wm):not(.cf-modal) .modal-body{padding:14px 26px 24px;gap:16px}
:root .modal:not(.wm):not(.cf-modal) .kb-f,:root .modal:not(.wm):not(.cf-modal) .wz-f{gap:7px;font-size:12.5px;font-weight:600;color:var(--text-2)}
:root .modal:not(.wm):not(.cf-modal) .kb-grid2{gap:14px}
/* низ: отмена как «Редактировать», основное действие — оранжевый градиент.
   Раньше тут же обнулялись padding-top/border у .pay-modal-foot (margin-top:8px;padding-top:0;
   border:0) — это осталось от ДО-sticky версии подвала (просто следующий элемент в потоке,
   без разделителя). Когда подвал стал sticky (см. `.modal.pay-md:not(.cf-modal) .pay-modal-foot`
   выше, там уже задан padding-top:12px и border-top), это старое правило оказалось СПЕЦИФИЧНЕЕ
   (:not(.wm):not(.cf-modal) даёт больше веса, чем .pay-md:not(.cf-modal)) и тихо перебивало его
   обратно в padding-top:0/border:0 — плавающий подвал становился без верхнего отступа и без
   разделительной линии, визуально «слипался» с контентом (жаловались на телефоне: подвал
   выглядит слишком тонким/маленьким и будто «съезжает» при скролле — на самом деле не съезжал
   {проверено}просто не было чёткой границы{box-shadow:0 40px 90px -30px rgba(0,0,0,.35),0 0 0 1px #e6e6e6}



/* скроллбар: тонкий, полупрозрачный, оранжевый при использовании */
*{scrollbar-width:auto;scrollbar-color:auto}
::-webkit-scrollbar{width:12px;height:12px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text) 16%,transparent);border-radius:999px;border:4px solid transparent;background-clip:padding-box;min-height:44px;transition:background .15s}
:hover::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text) 24%,transparent);background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--text) 42%,transparent);background-clip:padding-box;border-width:3px}
::-webkit-scrollbar-thumb:active{background:var(--accent);background-clip:padding-box;border-width:3px}
::-webkit-scrollbar-corner{background:transparent}
.sidebar .nav::-webkit-scrollbar{width:10px}
.modal::-webkit-scrollbar,.dd-menu::-webkit-scrollbar{width:10px}

/* скролл внутри модалки: только тело (шапка/подвал зафиксированы), не заходит на скругления.
   Раньше сразу следом шёл блок, откатывающий это обратно на «скроллится вся модалка целиком»
   (видимо, недокоммиченный эксперимент из прошлой сессии) — из-за него шапки/кнопки везде
   уезжали при скролле. Убрал откат — теперь это работает так же, как в модалках Зарплаты/
   Расходы/Команды, во всех модалках сайта разом (Инвентарь/Локации/Подрядчики включая). */
:root .modal:not(.cf-modal){overflow:hidden;display:flex;flex-direction:column}
:root .modal:not(.cf-modal) > .modal-head,:root .modal:not(.cf-modal) > .wm-head{flex:none}
:root .modal:not(.cf-modal) > .modal-body,:root .modal:not(.cf-modal) > .wm-body{overflow-y:auto;min-height:0;flex:1 1 auto;scrollbar-gutter:stable;overscroll-behavior-y:contain}
/* .wm-body сама тоже flex-column (карточка сотрудника/клиента/проекта: вкладки .tp-tabs +
   контент .tp-body внутри неё) — без этого её дети .tp-tabs/.tp-body по умолчанию
   flex-shrink:1 и СЖИМАЛИСЬ, когда контент вкладки не помещался в отведённую высоту, а
   .tp-phl{overflow:hidden} тихо обрезал «сжатые» строки таблицы — они были в DOM, но не
   видны ни на десктопе, ни тем более на телефоне. Запрещаем сжатие — скроллится только
   сама .wm-body (см. правило выше), вкладки внутри всегда рисуются в полный рост. */
:root .wm-body > .tp-body{flex:none}
:root .wm-body > .tp-tabs{flex:none}
.modal-body::-webkit-scrollbar-track,.wm-body::-webkit-scrollbar-track{margin:6px 0 16px}
.modal-body::-webkit-scrollbar,.wm-body::-webkit-scrollbar{width:12px}

/* закругления как у кнопки «Добавить документ» */



:root .set-bar{border-radius:18px;padding:10px 10px 10px 22px}
@media(max-width:640px){:root .set-bar{border-radius:18px}}


/* уведомления v2: стеклянная карточка сверху, плавное появление и уход */
.toast-host{top:78px;bottom:auto;left:50%;transform:translateX(-50%);gap:10px;align-items:center}
.toast{position:relative;overflow:hidden;display:flex;align-items:center;gap:12px;min-width:250px;max-width:min(440px,calc(90vw * var(--vz,1)));padding:11px 20px 11px 12px;text-align:left;color:var(--text);font-size:13.5px;font-weight:600;opacity:0;transform:translateY(-18px) scale(.94);transition:opacity .35s cubic-bezier(.16,1,.3,1),transform .45s cubic-bezier(.16,1.2,.3,1)}
.toast.in{opacity:1;transform:none}
.toast.out{opacity:0;transform:translateY(-12px) scale(.96);transition:opacity .3s ease,transform .35s cubic-bezier(.4,0,1,1)}
.toast-ic{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.toast-ic .ico{width:16px;height:16px;stroke-width:2.4}
.toast--ok .toast-ic{background:var(--accent);color:var(--accent-fg)}
.toast--err .toast-ic{background:var(--crit-soft);color:var(--crit)}
.toast--info .toast-ic{background:var(--surface-3);color:var(--text-2)}
.toast-bar{position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--accent);opacity:.8;transform-origin:left;transform:scaleX(1)}
.toast.in .toast-bar{animation:toastbar 3.2s linear forwards}
.toast--err .toast-bar{background:var(--crit)}
.toast--info .toast-bar{background:var(--muted)}
@keyframes toastbar{to{transform:scaleX(0)}}

:root[data-theme="light"] .toast--info .toast-ic{background:var(--surface-2)}
@media(prefers-reduced-motion:reduce){.toast.in .toast-bar{transition:none!important;animation:none!important}
.toast{transition:none!important;animation:none!important}}
/* виджет сохранения: кнопки и точка */
.set-bar > span{gap:16px}
.set-dot{margin-right:2px}









.toast-host{top:auto;bottom:88px}
.toast{transform:translateY(18px) scale(.94)}
.toast.out{transform:translateY(12px) scale(.96)}
.toast.in{transform:none}

/* уведомления v3: как виджет сохранения, на его месте внизу */
.toast-host{top:auto;bottom:18px;gap:8px}
.toast{min-width:0;gap:12px;padding:13px 22px 13px 18px;transform:translateY(24px) scale(.92);transition:opacity .4s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1.2,.3,1)}
.toast.in{transform:none}
.toast.out{transform:translateY(14px) scale(.96);transition:opacity .28s ease,transform .32s ease}
.toast-ic{width:auto;height:auto;background:none!important;box-shadow:none!important;border-radius:0;display:inline-flex;color:var(--accent)}
.toast--err .toast-ic{color:var(--crit)}
.toast--info .toast-ic{color:var(--muted)}
.toast--ok .toast-ic{color:var(--accent)}
.toast-ic .ico{width:18px;height:18px;stroke-width:2.6}
.toast-bar{display:none}



/* светлая тема: «Отменить» в виджете тоже оранжевая при наведении */

@media(max-width:640px){
  /* виджет «Несохранённые изменения» — меньше воздуха между текстом и кнопками */
  .set-bar{gap:10px}
  .set-bar > span{gap:10px}
  /* тосты «Настройки сохранены» / «Изменения отменены» — не переносить текст на вторую строку */
  .toast-tx{white-space:nowrap}
}

/* шапка v3: закругления вернул, кнопки как «Отменить», список вида переделан */









/* список выбора вида */
.topbar .dd-menu{min-width:210px}
.topbar .dd-opt{transition:background .14s,color .14s,transform .14s}


.topbar .dd-opt.on .ck{color:#fff}



/* тема и уведомления: в покое белый фон и обводка */











/* список вида: зазоры между пунктами, у активного нет реакции на наведение */
.topbar .dd-opt.on,.topbar .dd-opt.on:hover{cursor:default}
.topbar .dd-opt + .dd-opt{margin-top:4px}
.topbar .dd-opt + .dd-opt{margin-top:1px}
:root .topbar .dd-menu .dd-opt.on:focus{background:linear-gradient(180deg,#ff7a2e,#ff5d00)!important;color:#fff!important;transform:none!important}
.topbar .dd-opt + .dd-opt{margin-top:2px}

/* модалка документа: поля и кнопки */

.kb-cats{display:flex;flex-wrap:wrap;gap:8px}




:root .kb-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;padding:18px 16px;border:1.5px dashed var(--field-border);border-radius:12px;background:var(--field);color:var(--text);cursor:pointer;height:auto;text-align:center;transition:border-color .15s,background .15s,transform .15s}
:root .kb-drop .ico{width:20px;height:20px;color:var(--accent);margin-bottom:2px}
:root .kb-drop b{font-size:13px;font-weight:700}
:root .kb-drop em{font-style:normal;font-size:12px;font-weight:500;color:var(--muted)}
:root .kb-drop:hover,:root .kb-drop.drag{border-color:var(--accent);background:var(--accent-soft)}
:root .kb-drop:active{transform:scale(.99)}
.kb-mfoot{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
:root .kb-fname{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:var(--surface-3);border:0;margin-top:2px}

:root .kb-fname[hidden]{display:none}

/* Название и Описание: мягкие заливные поля без рамки */
.kb-title,.kb-body{width:100%}









/* модалка «Новый документ»/«Редактировать документ» — плотнее по вертикали, чтобы помещалась
   на экран без внутреннего скролла на обычных ноутбучных высотах окна (~650–700px).
   Специфичность как у :root .modal:not(.wm):not(.cf-modal) — иначе те правила выше по каскаду. */
:root .modal.kb-doc-modal:not(.wm):not(.cf-modal) .modal-head{padding:14px 20px 6px}
:root .modal.kb-doc-modal:not(.wm):not(.cf-modal) .modal-body{padding:10px 20px 16px;gap:10px}
:root .modal.kb-doc-modal:not(.wm):not(.cf-modal) .kb-f{gap:5px}


:root .kb-doc-modal .kb-drop{padding:10px 14px}
.kb-doc-modal .kb-mfoot{margin-top:0}
/* добавление категории */
.kb-catadd{background:transparent!important;box-shadow:inset 0 0 0 1.5px var(--field-border)!important;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.kb-catadd .ico{width:14px;height:14px}
.kb-catadd:hover{color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)!important;transform:none}
.kb-catnew{width:170px}
@keyframes catin{from{width:60px;opacity:.4}to{width:170px;opacity:1}}

.kb-catbox{display:inline-flex;align-items:center;gap:6px;animation:catin .25s cubic-bezier(.16,1,.3,1)}

.kb-catok{width:34px;height:34px;border:0;border-radius:8px;display:grid;place-items:center;cursor:pointer;background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;transition:transform .15s}
.kb-catok:hover{transform:translateY(-1px)}
.kb-catok:active{transform:scale(.94)}
.kb-catok .ico{width:16px;height:16px;stroke-width:2.6}

.kb-catbox{animation:none!important}
.kb-catbox .kb-catnew{width:170px}
.kb-catnewchip{animation:catpop .32s cubic-bezier(.16,1.3,.3,1)}
@keyframes catpop{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}

/* команда: пьедестал */
.tm-podium{position:relative;padding:52px 18px 24px;isolation:isolate}
.tm-podium::before{content:"";position:absolute;left:50%;top:30px;width:520px;height:260px;transform:translateX(-50%);background:radial-gradient(closest-side,rgba(255,93,0,.28),transparent);filter:blur(30px);z-index:-1;pointer-events:none}
.tm-podium-col{animation:podrise .7s cubic-bezier(.16,1.1,.3,1) both}
.tm-podium-col.p1{animation-delay:.12s}.tm-podium-col.p2{animation-delay:.02s}.tm-podium-col.p3{animation-delay:.22s}
@keyframes podrise{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:none}}
.tm-podium-av{box-shadow:0 0 0 3px var(--surface),0 0 0 5px color-mix(in srgb,var(--text) 22%,transparent)}
.tm-podium-col.p1 .tm-podium-av{box-shadow:0 0 0 3px var(--surface),0 0 0 5px var(--accent),0 14px 30px -8px rgba(255,93,0,.7)}
.tm-podium-xp{background:var(--accent-soft);padding:3px 11px;border-radius:999px;font-size:13px}
.tm-podium-name{font-size:14.5px;font-weight:700}
.tm-podium-block{border-radius:16px 16px 8px 8px;box-shadow:0 18px 30px -14px rgba(255,93,0,.55),inset 0 1px 0 rgba(255,255,255,.35)}
.tm-podium-col.p1 .tm-podium-block{min-height:124px}
.tm-podium-col.p2 .tm-podium-block{min-height:92px}
.tm-podium-col.p3 .tm-podium-block{min-height:72px}
.tm-podium-rank{font-size:30px}
@media(prefers-reduced-motion:reduce){.tm-podium-col{animation:none}}
/* заголовки департаментов */
.tm-dept-h.wz-s1-lbl{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);gap:10px;padding-bottom:2px}
.tm-podium-crown{top:-42px}

/* команда: панель как в шапке и «Базе знаний» */

:root .main[data-view="team"] .kb-search .ico{width:16px}






.main[data-view="team"] .dd-menu{min-width:220px}
.main[data-view="team"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="team"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="team"] .dd-menu .dd-opt.on,:root .main[data-view="team"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="team"] .dd-opt.on .ck{color:#fff}


:root .main[data-view="team"] .tm-dept-h.wz-s1-lbl{font-family:var(--font-display);font-size:16px;font-weight:600;letter-spacing:-.01em;text-transform:none;line-height:1.2;color:var(--text)}

/* форма сотрудника: в стиле формы документа */









:root .tm-form-modal .tmf-photo-row{display:flex;align-items:center;gap:16px;padding:12px 14px;border-radius:14px;background:var(--surface-3)}
:root .tm-form-modal .tmf-photo-av{width:56px;height:56px;border-radius:16px;flex:none}
:root[data-theme="light"] .tm-form-modal .tmf-photo-row{background:var(--surface-2)}




/* кебабы (меню «⋮») */
:root .tm-kb{width:32px}





.tm-kebab .dd-menu{min-width:210px}
.tm-kebab .dd-opt{gap:10px;transition:background .14s,color .14s,transform .14s,box-shadow .2s}
.tm-kebab .dd-opt + .dd-opt{margin-top:2px}

.tm-kebab .dd-opt svg{opacity:.85;transition:transform .2s,color .15s}
.tm-kebab .dd-opt:hover svg{color:var(--accent);transform:scale(1.1)}


.tm-kebab .dd-opt.del:hover svg{color:#fff}




/* открытое меню кебаба перекрывает соседние карточки и не просвечивает */
:has(> .tm-kebab .dd-menu),.tm-card:has(.dd.open),.pj-card:has(.dd.open),.card:has(.dd.open),.act-card:has(.dd.open),.pay-sh-row:has(.dd.open),.att-table tr:has(.dd.open){position:relative}
.tm-card:has(.dd.open),.pj-card:has(.dd.open),.card:has(.dd.open),.act-card:has(.dd.open),.gr-card:has(.dd.open){z-index:60}
.tm-kebab.open,.tm-kebab .dd.open{z-index:70}
.tm-kebab .dd-menu{z-index:80}


/* карточка сотрудника/клиента/проекта (.tp-modal): размер модалки должен быть ОДИНАКОВЫМ
   на всех вкладках (раньше .modal был просто overflow-y:auto без фиксированной высоты —
   высота росла/падала под контент конкретной вкладки, модалка «прыгала» при переключении).
   Делаем .modal.tp-modal flex-колонкой с фиксированной высотой и overflow:hidden — шапка
   (.wm-head) и вкладки (.tp-tabs) не сжимаются (flex:none, см. правило для > .wm-head выше
   по файлу), а скроллится только .wm-body (flex:1 1 auto;min-height:0;overflow-y:auto —
   то же самое общее правило). */
.modal.tp-modal{max-width:920px;display:flex;flex-direction:column;height:min(640px,calc(86vh * var(--vz,1)));overflow:hidden}
.tp-modal .wm-head{align-items:center;gap:16px}
.tp-modal .wm-head .avatar{width:64px;height:64px;font-size:22px;flex:none}


.tp-body{display:flex;flex-direction:column;gap:18px;min-height:260px}
/* карточка сотрудника/клиента (.tp-modal): раньше все плашки — цифры KPI, «Контакты», «Работа» —
   были залиты одним и тем же surface-2, модалка читалась одним плоским пятном без иерархии,
   не так, как остальное приложение (там у KPI-цифр вообще нет фона — просто крупное число, как
   на Финансах/Инвентаре; у списков полей — простые строки с разделителем, как в ТЗ проекта).
   Цифры KPI — убираем плашку, делаем крупным числом без рамки. Разделы «Контакты»/«Работа» —
   тоже без заливки-контейнера; строки внутри (.tmm-row) уже были с тонкой границей сверху,
   этого достаточно для списка, обёртка не нужна. */
.tp-modal .wm-plates > .wm-plate{background:none;box-shadow:none;padding:0}
.tp-modal .wm-plates > .wm-plate .l{font-size:12.5px;font-weight:600;color:var(--muted)}
.tp-modal .wm-plates > .wm-plate .v{font-size:26px;font-weight:800;letter-spacing:-.02em}





.tp-list .wm-li{gap:14px}
.tp-r{text-align:right;flex:none;font-variant-numeric:tabular-nums}
.tp-r b{font-family:var(--font-display);font-size:14px}

.tp-neg{color:var(--crit)}




.tp-list .wm-li .m{font-size:12.5px}


/* один шрифт везде: поля ввода, кнопки и элементы карты не используют системный Arial / Lucida */
:where(input,textarea,select,button,optgroup){font-family:inherit}
.leaflet-container,.leaflet-container a,.leaflet-control-zoom a,.leaflet-bar a{font-family:var(--font-body)!important}
.mono,.att-mono,.phone{font-family:var(--font-body)!important;font-variant-numeric:tabular-nums;letter-spacing:0}

.tp-namerow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tp-namerow h3{margin:0!important}

.tp-modal .wm-sub{margin-top:4px;font-size:13.5px}
.tp-unit{font-family:var(--font-display);font-size:14px;font-weight:700;color:var(--accent);letter-spacing:0;margin-left:2px}

/* карточка сотрудника: цифры крупнее, строки контактов от края до края */
.tp-modal .wm-plate .v{font-size:28px;font-weight:700}
/* .tp-vtext — плашка со статусом-словом («нет отметки», «вне зоны»), а не числом: тот же
   крупный жирный размер, что у чисел, на коротких словах читался слишком тяжело */
.tp-modal .wm-plate .v.tp-vtext{font-size:18px;font-weight:600}
.tp-modal .tp-unit{font-size:17px;margin-left:4px}




/* .tp-two — две колонки «Контакты/Работа» (сотрудник) и «Контактное лицо/Контакты» (клиент) —
   каждая карточка широкая, а .tmm-row по умолчанию justify-content:space-between: короткие
   подпись+значение («Имя» / «Камола Юсупова») разъезжались на разные края строки с гигантским
   пустым разрывом посередине, и этот разрыв «прыгал» от строки к строке в зависимости от длины
   значения — выглядело хаотично. Подпись — фиксированная колонка слева, значение сразу за ней. */



/* карточка сотрудника → Зарплата: запросы и история выплат */
.tp-sec{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 0;min-height:33px}
.tp-sec .wz-s1-lbl{margin:0!important;display:inline-flex;align-items:center;gap:8px}
.tp-phl{padding:0!important;overflow:hidden}
.tp-ph{display:grid;grid-template-columns:minmax(0,1fr) 84px 104px 116px 34px;column-gap:14px;align-items:center;padding:10px 16px;font-size:12.5px;border-top:1px solid var(--border)}
.tp-ph:first-child{border-top:0}
.tp-ph--req{grid-template-columns:minmax(0,1fr) 84px 116px 120px}
.tp-ph--head{padding:9px 16px}
.tp-ph .o{min-width:0;display:flex;flex-direction:column;gap:2px}
.tp-ph .o b{font-weight:600;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-ph .o span{font-size:12px;color:var(--muted)}
.tp-ph .d{color:var(--text);white-space:nowrap}
.tp-ph .a{text-align:right;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-weight:600;font-size:13px;color:var(--text);white-space:nowrap}
.tp-ph .tp-ty{justify-self:start;margin-left:0}
.tp-ph--canc .a{text-decoration:line-through;color:var(--muted)}
.tp-ph--canc .o b,.tp-ph--canc .d{color:var(--muted)}
.tp-ph--canc .tp-ty{opacity:.45}
.tp-ph .pay-hist-x{justify-self:end}
.tp-ph-btn{justify-self:end}
@media(max-width:640px){.tp-ph{grid-template-columns:minmax(0,1fr) 96px 30px}.tp-ph .d,.tp-ph .tp-ty{display:none}.tp-ph--req{grid-template-columns:minmax(0,1fr) auto}.tp-ph--req .d,.tp-ph--req .a{display:none}}

/* модалки: без повторной анимации нижней модалки при стеке/закрытии верхней */
.modal-bg:has(~ .modal-bg){animation:none!important}
.modal-bg:has(~ .modal-bg) .modal{animation:none!important}
/* внеплановая выплата */
.pf-plates{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pf-plates .wm-plate{padding:12px 14px;min-width:0}
.pf-plates .wm-plate .v{font-size:22px;font-weight:700;white-space:nowrap}
.pf-plates .wm-plate .v.pf-card{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:16px;font-weight:700;letter-spacing:0;padding-top:3px}
/* min-width:0 нужен на каждом уровне вложенности flex, не только на самом <input> — иначе
   на телефоне это поле раздувало всю модалку куда шире экрана (см. подробный комментарий
   у .cf-modal .modal-body ниже) */
.pf-amt{position:relative;min-width:0}
/* .cf-modal сам flex-column (см. первое правило .modal.cf-modal выше), а .modal-bg —
   display:grid;place-items:center БЕЗ явного grid-template-columns: неявная колонка по
   умолчанию растягивается под max-content самого широкого потомка, а не сжимается под
   экран. min-width:0 у every что flex-column должен явно «прокинуть» сжимаемость вниз —
   без него на телефоне widget вроде <input> (со своей стандартной шириной ~20 символов)
   раздувает всю цепочку родителей и модалку целиком шире вьюпорта. */
:root .cf-modal .modal-body{min-width:0}
:root .cf-modal .kb-f{min-width:0}


.pf-amt input{flex:1;min-width:0}




.pf-chips{display:flex;gap:8px;margin-top:2px}
.pf-chips button{border:0;font:inherit;font-size:12.5px;font-weight:600;padding:6px 14px;border-radius:8px;cursor:pointer;background:var(--surface-3);color:var(--text);transition:background .15s,color .15s,box-shadow .2s,transform .15s}
.pf-chips button:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}
.pf-chips button:active{transform:scale(.96)}
:root[data-theme="light"] .pf-chips button{background:var(--surface-2)}

:root[data-theme="light"] .pf-chips button:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}

.pf-cardp{position:relative;cursor:pointer;transition:background .15s,box-shadow .2s,transform .15s}
.pf-cardp.off{cursor:default}
.pf-cardp:not(.off):hover{background:var(--surface-3);box-shadow:0 0 0 1.5px var(--accent)}
.pf-cardp:not(.off):active{transform:scale(.985)}
.pf-cp{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:26px;height:26px;border-radius:8px;color:var(--muted);transition:background .15s,color .15s}
.pf-cp .ico{width:15px;height:15px}
.pf-cardp:hover .pf-cp{color:var(--accent);background:var(--accent-soft)}
.pf-cardp.copied .pf-cp{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
/* выпадающие списки в модалках выплат — как в шапке и на «Команде» */




.pay-md .dd-opt{transition:background .14s,color .14s,transform .14s}
.pay-md .dd-opt + .dd-opt{margin-top:2px}

:root .pay-md .dd-menu .dd-opt.on,:root .pay-md .dd-menu .dd-opt.on:hover{cursor:default}
.pay-md .dd-opt.on .ck{color:#fff}



/* комментарий и поля модалок выплат — как в форме сотрудника */







.pf-cp{top:8px;right:12px}







/* «Отмена» / «Назад» / «Закрыть» в модалках выплат: при наведении оранжевые */


/* закрытие в карточке сотрудника — как в модалке добавления */





/* вкладки карточки сотрудника: «плывущая» оранжевая плашка как в навбаре */
.tp-tabs{position:relative}
.tp-tabs .proj-tab{position:relative;z-index:1}

.tp-pill{position:absolute;left:0;top:0;z-index:0}


/* крестик отмены в истории выплат карточки сотрудника — анимация и цвет как у «Добавить сотрудника» */
:root .tp-ph .pay-hist-x{position:relative;overflow:hidden}





.modal-bg[data-still]:not(.closing){animation:none!important}
.modal-bg[data-still]:not(.closing) .modal{animation:none!important}

/* входные анимации страницы (диаграммы, подиум) — только при переходе на страницу, не при открытии модалок и фильтрах */


.pf-who{display:flex;align-items:center;justify-content:space-between;gap:12px}
/* значок справа (должность/тип) — white-space:nowrap, и при длинном тексте (например
   «Проджект-менеджер») не давал строке сжаться — это раздувало неявную grid-колонку
   .modal-bg (display:grid;place-items:center) шире экрана на телефоне. На узком экране
   переносим значок под имя вместо того, чтобы держать его в одну строку любой ценой. */
@media(max-width:480px){:root .pf-who{flex-wrap:wrap;row-gap:4px}:root .pf-who .badge{margin-left:auto}}
.pf-meta{margin:-6px 0 0}
/* «Запрос выплаты» теперь внутри .cf-modal — там у любого <p> низовой отступ 22px (для
   абзаца в диалогах подтверждения), а .pf-meta это короткая строка-подпись, не абзац —
   перебиваем тем же -6px/0, что и обычно, но с чуть большей специфичностью */
:root .cf-modal p.pf-meta{margin:-6px 0 0}
.pf-wide{grid-column:1/-1}
.pf-plates .wm-plate .s{white-space:normal}


.tp-ph--att{grid-template-columns:minmax(0,1fr) 90px 100px 110px 34px}
.tp-ph .tp-acts{display:flex;gap:8px;justify-content:flex-end}
.tp-ph .tp-warn{color:var(--warn)}
.tp-ph--req:has(.tp-acts){grid-template-columns:minmax(0,1fr) 84px auto}
/* на телефоне «Принять/Отклонить» (.tp-acts, запрос исключения по посещаемости) в одну
   колонку с причиной не помещались — кнопки наезжали на текст; на узком экране строка
   в один столбец, кнопки на отдельной строке под текстом */
@media(max-width:640px){.tp-ph--req:has(.tp-acts){grid-template-columns:1fr;row-gap:6px}.tp-ph--req .tp-acts{justify-content:flex-start}}
@media(max-width:640px){.tp-ph--att{grid-template-columns:minmax(0,1fr) auto 30px}.tp-ph--att > span:nth-child(2),.tp-ph--att > span:nth-child(3){display:none}}
.tp-ph .tp-none{color:var(--muted);text-decoration:none}

.tp-ph--bp{grid-template-columns:minmax(0,1fr) 84px 116px 34px}
/* на телефоне 84+116+34px фиксированных колонок почти не оставляли места под «Основание» —
   первая (1fr) колонка схлопывалась в 0 (было видно на карточке сотрудника, вкладка
   «Штрафы и бонусы»); прячем дату, оставляя только причину/сумму/крестик */
@media(max-width:640px){.tp-ph--bp{grid-template-columns:minmax(0,1fr) auto 30px}.tp-ph--bp > span:nth-child(2){display:none}}
.tp-ph .o .cl{font-size:12px;color:var(--muted);white-space:normal}

.tp-ph--exp{grid-template-columns:minmax(0,1fr) 78px 116px 104px 190px}
.tp-ph--exp .tp-ex-act{display:flex;justify-content:flex-end}
@media(max-width:760px){.tp-ph--exp{grid-template-columns:minmax(0,1fr) 96px}.tp-ph--exp > span:nth-child(2),.tp-ph--exp > span:nth-child(3){display:none}.tp-ph--exp .tp-ex-act{grid-column:1/-1;justify-content:flex-start}}

/* карточка клиента → «Проекты» (та же строка-компонент, что и в карточке сотрудника) */
.tp-ph--cvpj{grid-template-columns:minmax(0,1fr) 100px 110px 96px;cursor:pointer;transition:background .14s}
.tp-ph--cvpj.tp-ph--head{cursor:default}
.tp-ph--cvpj:not(.tp-ph--head):hover{background:var(--surface-3)}
.tp-ph--cvpj .tp-ex-act{display:flex;justify-content:flex-end}
@media(max-width:760px){.tp-ph--cvpj{grid-template-columns:minmax(0,1fr) 96px}.tp-ph--cvpj > span:nth-child(2),.tp-ph--cvpj > span:nth-child(3){display:none}.tp-ph--cvpj .tp-ex-act{grid-column:1/-1;justify-content:flex-start}}

/* «Добавить расход»: позиции без бирюзовой плашки */
:root .exq-newmodal .subcard.exq-newitem{background:none;border:0;box-shadow:none;padding:0;border-radius:0}
:root .exq-newmodal .exq-newitems{gap:16px}
:root .exq-newmodal .exq-newitem + .exq-newitem{padding-top:16px;border-top:1px solid var(--border)}
:root .exq-newmodal .exq-newitems.solo .exq-newitem-head{display:none}
:root .exq-newmodal .exq-newitem-head{margin-bottom:12px}
:root .exq-newmodal .exq-newitem .kb-f{gap:7px}

/* «Добавить расход» */
:root .exq-newmodal .exq-newitems{counter-reset:exq-it}
:root .exq-newmodal .exq-newitem{counter-increment:exq-it}
:root .exq-newmodal .exq-num::before{content:"Позиция " counter(exq-it);font-size:13px;font-weight:700;color:var(--text)}
:root .exq-newmodal .exq-newitems:not(.solo) .exq-newitem{padding-bottom:4px}
:root .exq-newmodal .exq-newitem + .exq-newitem{padding-top:18px;margin-top:2px;border-top:1px dashed var(--border-strong)}




:root .exq-newmodal .exq-newrcpt{align-items:stretch}
:root .kb-drop--sm{flex:1;flex-direction:row;justify-content:flex-start;text-align:left;gap:12px;padding:10px 14px}
:root .kb-drop--sm .ico{margin:0;flex:none}
:root .kb-drop--sm span{display:flex;flex-direction:column;gap:1px}
:root .exq-newmodal .exq-newrcpt .btn{align-self:center}
:root .exq-newmodal .exq-newrcpt-thumb{width:44px;height:44px;border-radius:10px;align-self:center}
:root .exq-newmodal .exq-additem-row{margin-top:2px}
/* переключатель карты — как вкладки в карточке сотрудника */
:root .exq-seg{position:relative}
:root .exq-seg .exq-seg-opt{position:relative;z-index:1}
:root .exq-seg .exq-seg-opt:not(.on):hover{background:transparent;color:var(--text)}

:root .exq-newmodal .pf-plates{margin-top:0}
:root .exq-newmodal .pf-plates .wm-plate .v.pf-card{font-size:15px}

/* компактнее по вертикали, чтобы «Добавить расход» помещалась на десктопном экране без скролла
   (специфичность как у :root .modal:not(.wm):not(.cf-modal) — иначе те правила выше по каскаду) */
:root .modal.exq-newmodal:not(.wm):not(.cf-modal) .modal-head{padding:14px 20px 6px}
:root .modal.exq-newmodal:not(.wm):not(.cf-modal) .modal-body{padding:10px 20px 16px;gap:10px}
:root .modal.exq-newmodal:not(.wm):not(.cf-modal) .kb-f{gap:5px}
:root .exq-newmodal .exq-cardhead{margin-bottom:0}
/* шапка (заголовок+крестик) и футер (сумма+кнопки) закреплены и не уезжают при скролле
   содержимого — тот же приём, что в модалке «Аванс/Остаток» (.pr-modal): сам .modal — flex-
   колонка со своим overflow:hidden, скроллится только .modal-body, шапка и футер — соседние
   несжимаемые flex-элементы. Одинаково и на телефоне, и на десктопе. */
:root .modal.exq-newmodal{display:flex;flex-direction:column;overflow:hidden}
:root .modal.exq-newmodal .modal-head{flex:none}
:root .modal.exq-newmodal .modal-body{flex:1;min-height:0;overflow-y:auto}
:root .modal.exq-newmodal .exq-newmodal-foot{flex:none;padding:12px 20px 16px;display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--border);background:var(--surface)}
:root .exq-newmodal #exNewCardBox{margin-top:6px}
:root .exq-newmodal .pf-plates .wm-plate{padding:8px 12px}

:root .exq-newmodal .kb-drop--sm{padding:8px 14px}

/* выпадающие списки в модалках сотрудника и расхода — как фильтр департамента и кебаб */

:is(.tm-form-modal,.exq-newmodal) .dd-opt{transition:background .14s,color .14s,transform .14s}
:is(.tm-form-modal,.exq-newmodal) .dd-opt + .dd-opt{margin-top:2px}

:root :is(.tm-form-modal,.exq-newmodal) .dd-menu .dd-opt.on,:root :is(.tm-form-modal,.exq-newmodal) .dd-menu .dd-opt.on:hover{cursor:default}
:is(.tm-form-modal,.exq-newmodal) .dd-opt.on .ck{color:#fff}





.tp-ph--tk{grid-template-columns:minmax(0,1fr) 96px 116px 190px;cursor:pointer;transition:background .14s}
.tp-ph--tk.tp-ph--head{cursor:default}
.tp-ph--tk:not(.tp-ph--head):hover{background:var(--surface-3)}
.pf-chips button.on{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}
@media(max-width:760px){.tp-ph--tk{grid-template-columns:minmax(0,1fr) 96px}.tp-ph--tk > span:nth-child(2){display:none}.tp-ph--tk .tp-ex-act{grid-column:1/-1;justify-content:flex-start}}

:root .pf-chips button.on,:root[data-theme="light"] .pf-chips button.on{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}

.tp-ph--pj{grid-template-columns:minmax(0,1fr) 84px 110px 104px 96px;cursor:pointer;transition:background .14s}
.tp-ph--pj.tp-ph--head{cursor:default}
.tp-ph--pj:not(.tp-ph--head):hover{background:var(--surface-3)}
@media(max-width:760px){.tp-ph--pj{grid-template-columns:minmax(0,1fr) 96px}.tp-ph--pj > span:nth-child(2),.tp-ph--pj > span:nth-child(3),.tp-ph--pj > span:nth-child(5){display:none}}

/* Расходы: карта получателя копируется, кнопки и списки в общем стиле */






:root .exq-detail-rcpt.btn .ico{width:14px}




.main[data-view="expenses"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="expenses"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="expenses"] .dd-menu .dd-opt.on,:root .main[data-view="expenses"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="expenses"] .dd-opt.on .ck{color:#fff}

/* в Telegram-вебвью классический скроллбар не рисуется, но место под него всё равно резервировалось —
   убираем зарезервированную ширину у этого списка, скролл колесом/тачем всё равно работает */
.main[data-view="expenses"] .dd-menu{scrollbar-width:none}
.main[data-view="expenses"] .dd-menu::-webkit-scrollbar{width:0;height:0}


/* модалка «Чек» — просто фото на весь размер плашки, без заголовка и белого фона; крестик — кружок
   поверх фотографии в правом верхнем углу */
:root .modal.exq-rcpt-modal:not(.wm):not(.cf-modal){max-width:min(480px,calc(90vw * var(--vz,1)));max-height:calc(88vh * var(--vz,1));padding:0;margin:0;border:0;border-radius:16px;background:transparent;box-shadow:none;overflow:visible;position:relative;display:block}
.exq-rcpt-zoom{overflow:hidden;border-radius:16px;touch-action:none;cursor:zoom-in}
.exq-rcpt-zoom.zoomed{cursor:grab}
.exq-rcpt-zoom.dragging{cursor:grabbing}
.exq-rcpt-modal img{display:block;width:100%;max-height:calc(88vh * var(--vz,1));object-fit:contain;border-radius:16px;transform-origin:center center;user-select:none;-webkit-user-drag:none}
.exq-rcpt-zoom.animate img{transition:transform .18s cubic-bezier(.16,1,.3,1)}
.exq-rcpt-x{position:absolute;top:10px;right:10px}


:root .exq-mdrow.active{background:linear-gradient(180deg,#ff7a2e,#ff5d00);box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}



:root .pf-cp.pf-cp--in{position:static;width:22px;height:22px;border-radius:7px;flex:none}
:root .pf-cp.pf-cp--in .ico{width:13px;height:13px}


/* календарь-диапазон */
.rc{position:relative}



.rc-trig .ico{width:15px}


.rc.up .rc-pop{top:auto;bottom:calc(100% + 8px)}
.rc-pop{position:absolute;z-index:60;right:0;top:calc(100% + 8px);display:flex;gap:6px;padding:8px;border-radius:20px;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 0 0 1px var(--border-strong),0 28px 60px -20px rgba(0,0,0,.85)}
.rc-pre{display:flex;flex-direction:column;gap:2px;padding:6px;min-width:128px;border-right:1px solid var(--border)}
.rc-p{border:0;background:none;text-align:left;font:inherit;font-size:13px;font-weight:600;color:var(--text);padding:9px 12px;border-radius:10px;cursor:pointer;transition:background .14s,transform .14s}
.rc-p:hover{background:var(--surface-3);transform:translateX(2px)}
.rc-cal{width:288px;padding:6px 8px 4px}
.rc-hd{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:2px 0 10px}
.rc-title{display:inline-flex;align-items:center;gap:6px;border:0;background:none;font:inherit;font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--text);padding:6px 10px;border-radius:10px;cursor:pointer;transition:background .14s}
.rc-title:hover{background:var(--surface-3)}
.rc-title .chev{width:13px;height:13px;color:var(--muted)}


.rc-wd{display:grid;grid-template-columns:repeat(7,1fr);padding-bottom:4px}
.rc-wd span{font-size:11px;font-weight:600;color:var(--muted);text-align:center}
.rc-grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:2px}
.rc-c{position:relative;height:36px;display:grid;place-items:center}
.rc-c.r-in::before{content:"";position:absolute;inset:2px 0;background:var(--accent-soft)}
.rc-c.r-in.r-st::before{left:2px;border-radius:999px 0 0 999px}
.rc-c.r-in.r-en::before{right:2px;border-radius:0 999px 999px 0}
.rc-c.r-in.r-st.r-en::before{border-radius:999px}
.rc-d{position:relative;width:34px;height:34px;border:0;border-radius:50%;background:none;color:var(--text);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:background .12s,transform .15s}
.rc-d:not(:disabled):not(.sel):hover{background:var(--surface-3)}
.rc-d.today{color:var(--accent);font-weight:800}
.rc-d.sel,.rc-mb.sel{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;font-weight:700;box-shadow:0 6px 14px -6px rgba(255,93,0,.8),inset 0 1px 0 rgba(255,255,255,.25)}
.rc-d:disabled,.rc-mb:disabled{color:var(--border-strong);cursor:not-allowed}
.rc-months{display:grid;grid-template-columns:repeat(3,1fr);row-gap:6px;padding:4px 0 6px}
.rc-m{position:relative;height:44px;display:grid;place-items:center}
.rc-m.r-in::before{content:"";position:absolute;inset:4px 0;background:var(--accent-soft)}
.rc-m.r-in.r-st::before{left:4px;border-radius:999px 0 0 999px}
.rc-m.r-in.r-en::before{right:4px;border-radius:0 999px 999px 0}
.rc-m.r-in.r-st.r-en::before{border-radius:999px}
.rc-mb{position:relative;width:76px;height:36px;border:0;border-radius:999px;background:none;color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:background .12s}
.rc-mb:not(:disabled):not(.sel):hover{background:var(--surface-3)}
.rc-mb.today{color:var(--accent);font-weight:800}
.rc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding-top:10px;border-top:1px solid var(--border)}
.rc-sum{font-size:12.5px;font-weight:700;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

:root[data-theme="light"] .rc-pop{background:rgba(255,255,255,.97);box-shadow:0 0 0 1px #e6e6e6,0 28px 60px -24px rgba(0,0,0,.32)}


:root[data-theme="light"] .rc-p:hover,:root[data-theme="light"] .rc-title:hover,:root[data-theme="light"] .rc-d:not(:disabled):not(.sel):hover,:root[data-theme="light"] .rc-mb:not(:disabled):not(.sel):hover{background:var(--surface-2)}
@media(max-width:640px){.rc-pop{flex-direction:column;right:auto;left:0;max-width:calc(calc(100vw * var(--vz,1)) - 32px)}.rc-pre{flex-direction:row;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--border);min-width:0}.rc-cal{width:100%}}

.rc-c.r-in.r-st.r-en::before,.rc-m.r-in.r-st.r-en::before{display:none}
.rc-d:disabled,.rc-mb:disabled{color:color-mix(in srgb,var(--text) 32%,transparent)}
.rc-pre{min-width:150px}
.rc-p{white-space:nowrap}

/* Зарплаты: выпадающие списки, кебаб и календарь в общем стиле */
.rc-title--static{cursor:default;pointer-events:none}
.rc-pop--m .rc-cal{width:264px}




.main[data-view="payroll"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="payroll"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="payroll"] .dd-menu .dd-opt.on,:root .main[data-view="payroll"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="payroll"] .dd-opt.on .ck{color:#fff}



/* выбранные даты и месяцы календаря — всегда белый текст */
:root .rc-d.sel,:root .rc-mb.sel,:root .rc-d.sel.today,:root .rc-mb.sel.today{color:#fff}
/* поиск сотрудника на «Зарплатах» — как на «Базе знаний» и «Команде» */

:root .main[data-view="payroll"] .kb-search .ico{width:16px}




/* модалка выплаты: аванс / остаток / внеплановая */
/* список сотрудников не растягивается через flex:1 на всю модалку (когда сотрудников мало,
   это оставляло пустую дыру между последней строкой и кнопкой «Готово», будто часть
   пропала) — вместо этого у списка своя предельная высота: пока сотрудников немного,
   модалка просто короче и складывается по контенту; когда не помещается — скроллится
   только сам список, а шапка/прогресс-бар/кнопка «Готово» остаются на месте */
:root .pr-modal{display:flex;flex-direction:column;max-height:calc(80vh * var(--vz,1))}
:root .pr-body{gap:14px;min-height:0;display:flex;flex-direction:column}
/* нижний паддинг с запасом — иначе overflow-y:auto обрезает тень кнопки «Перевести» у
   последней (или единственной) строки прямо по границе списка; лево-право компенсируем
   отрицательным margin, чтобы строки остались вровень с шапкой/прогресс-баром */
:root .pr-list{max-height:min(calc(48vh * var(--vz,1)),460px);overflow-y:auto;margin:0 -14px;padding:4px 14px 26px}
:root .pr-seg{align-self:flex-start}
/* на узком экране имя+карта в одну строку сжимали имя до «Дилно…» — переносим номер карты
   на свою строку, с отступом под аватар, вместо того чтобы теснить имя */
@media(max-width:480px){
  :root .pr-top{flex-wrap:wrap;row-gap:4px}
  :root .pr-top .pr-card{flex-basis:100%;margin-left:41px;justify-content:flex-start}
}
.pr-prog{display:flex;flex-direction:column;gap:8px}
.pr-bar{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden}
.pr-bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ff7a2e,#ff5d00);transition:width .4s cubic-bezier(.16,1,.3,1)}
.pr-prog-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.pr-pt{font-size:12.5px;color:var(--text-2)}
.pr-pt b{color:var(--text);font-weight:700}
.pr-hide{border:0;font:inherit;font-size:12px;font-weight:600;padding:5px 12px;border-radius:8px;cursor:pointer;background:var(--surface-3);color:var(--text);transition:background .15s,color .15s,box-shadow .2s}
.pr-hide:hover,.pr-hide.on{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}
.pr-list{display:flex;flex-direction:column;gap:10px}
.pr-row{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border);transition:opacity .2s}
.pr-row.done{opacity:.72}
.pr-top{display:flex;align-items:center;gap:10px;min-width:0}

.pr-card{margin-left:auto;display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:3px 4px 3px 8px;border-radius:8px;font:inherit;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:600;color:var(--text-2);cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
.pr-card.off{cursor:default;color:var(--muted)}
.pr-card:not(.off):hover{background:var(--surface-3);color:var(--text)}
.pr-card:not(.off):hover .pf-cp{color:var(--accent);background:var(--accent-soft)}
.pr-part{font-size:12px;color:var(--muted)}
.pr-bot{display:flex;align-items:center;gap:10px}
.pr-bot .pay-runinp{flex:1;min-width:0;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}
.pr-paid{flex:1;display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--ok)}
.pr-paid .ico{width:16px;height:16px}

:root .pr-bot .pay-runinp{text-align:left}

:root .pr-row{background:none;box-shadow:none;border-radius:0;padding:0}
:root .pr-list{gap:0}
:root .pr-row + .pr-row{margin-top:16px;padding-top:16px;border-top:1px dashed var(--border-strong)}

/* пагинация истории операций — в общем стиле кнопок */



:root .pay-hist-pgb:disabled{opacity:.4}


.pay-hist-pg-t{font-size:12.5px;font-weight:600;color:var(--text-2)}
.pay-hist-pg-t b{color:var(--text)}

/* Посещаемость: списки, календарь дня и кнопки в общем стиле */




.main[data-view="attendance"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="attendance"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="attendance"] .dd-menu .dd-opt.on,:root .main[data-view="attendance"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="attendance"] .dd-opt.on .ck{color:#fff}


/* календарь одного дня */



#attJournalCal.up .att-cal-pop{top:auto;bottom:calc(100% + 6px)}
:root .att-cal-pop{width:288px;padding:12px 14px 10px;border:0;border-radius:20px;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 0 0 1px var(--border-strong),0 28px 60px -20px rgba(0,0,0,.85);animation:dd-in .16s cubic-bezier(.16,1,.3,1)}
:root .att-cal-hd{padding:0 0 10px;gap:6px}
:root .att-cal-mo{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.01em}


:root .att-cal-wd span{font-size:11px}
:root .att-cal-grid{row-gap:2px}
:root .att-cal-d{width:34px;height:34px;border-radius:50%;font-size:12.5px;font-weight:600}
:root .att-cal-d:not(.empty):not(:disabled):hover{background:var(--surface-3)}
:root .att-cal-d.sel,:root .att-cal-d.sel.today{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;font-weight:700;box-shadow:0 6px 14px -6px rgba(255,93,0,.8),inset 0 1px 0 rgba(255,255,255,.25)}
:root .att-cal-d:disabled{color:color-mix(in srgb,var(--text) 32%,transparent)}
:root .att-cal-today{height:33px;margin-top:10px;border:0;border-radius:8px;background:var(--surface-3);color:var(--text);font-weight:600;transition:background .15s,color .15s,box-shadow .2s}
:root .att-cal-today:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
:root[data-theme="light"] .att-cal-pop{background:rgba(255,255,255,.97);box-shadow:0 0 0 1px #e6e6e6,0 28px 60px -24px rgba(0,0,0,.32)}
:root[data-theme="light"] .att-cal-today{background:var(--surface-2)}

/* Запросы-исключения — как «Требует выплаты» на зарплатах */
.att-req.card{margin-bottom:0;transition:none}
.att-req.card:hover{transform:none}

.att-req .tp-acts{display:flex;gap:8px;margin-left:auto}

/* крестик отмены в «Истории операций» — как в карточке сотрудника */
:root .pay-hist-row .pay-hist-x{position:relative;overflow:hidden}





/* Инвентарь: поиск, список категорий и кнопки в общем стиле */

:root .main[data-view="gear"] .kb-search .ico{width:16px}








.main[data-view="gear"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="gear"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="gear"] .dd-menu .dd-opt.on,:root .main[data-view="gear"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="gear"] .dd-opt.on .ck{color:#fff}



:root .main[data-view="gear"] .pj-kpi .v{font-size:32px;line-height:1.25}

/* изменить / добавить позицию — как «Сотрудник» */
:root .gf-modal .att-cal-trig{width:100%}
:root .gf-modal .att-cal-trig span{flex:1}



:root .gf-modal .pay-modal-foot .btn--crit{margin-right:auto}

/* номер карты всегда помещается в плашке */
:root .pf-plates{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}
:root .pf-plates .wm-plate .v.pf-card{font-size:clamp(12.5px,calc(3.4vw * var(--vz,1)),15px);white-space:nowrap;letter-spacing:0}
:root .exq-newmodal .pf-plates{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
:root .pf-plates .wm-plate{padding:12px}
@media(max-width:480px){
  :root .pf-plates{grid-template-columns:minmax(0,1fr)}
  /* «Добавить расход»: у неё свой 1.2fr/1fr оверрайд (десктопный) с более высокой
     специфичностью, чем это правило — перебивает его и не давал сложить плашки в столбик,
     номер карты обрезался */
  :root .exq-newmodal .pf-plates{grid-template-columns:minmax(0,1fr)}
  /* «Запрос выплаты»: «Запрошено» и «Доступно сейчас» — в один ряд даже на телефоне,
     карта для перевода — отдельной строкой под ними, как и раньше */
  :root .pf-plates--req{grid-template-columns:1fr 1fr}
  :root .pf-plates--req .pf-wide{grid-column:1/-1}
}

/* календарь раскрывается внутри модалки, а не обрезается её краем */
:root .gf-modal .att-cal{position:static}
:root .gf-modal .att-cal-pop{position:static;width:100%;max-width:340px;margin:8px 0 0;box-shadow:0 0 0 1px var(--border-strong);animation:none}

:root .gf-modal .att-cal{display:flex;flex-direction:column-reverse}
:root .gf-modal .att-cal-pop{margin:0 0 8px}

/* календарь позиции: поверх полей, вверх от даты */
:root .gf-modal .att-cal{position:relative;display:block}
:root .gf-modal .att-cal-pop{position:absolute;left:0;right:auto;top:auto;bottom:calc(100% + 8px);width:100%;max-width:340px;margin:0;z-index:70;box-shadow:0 0 0 1px var(--border-strong),0 24px 48px -16px rgba(0,0,0,.85)}

/* красное наведение у «Списать» / «Удалить» в кебабе на всех страницах */

:root .tm-kebab .dd-menu .dd-opt.del:hover svg{color:#fff}
/* модалка списания позиции */
.gr-ret{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:14px;background:var(--surface-3)}
.gr-ret-ph{width:52px;height:52px;border-radius:14px;flex:none;display:grid;place-items:center;overflow:hidden}
.gr-ret-ph img{width:100%;height:100%;object-fit:cover}
.gr-ret-i{min-width:0}
.gr-ret-n{font-size:14.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gr-ret-m{font-size:12.5px;color:var(--muted);margin-top:2px}


:root .pay-md .gr-del{margin-right:0}


:root[data-theme="light"] .gr-ret{background:var(--surface-2)}

:root .gr-ret{background:none;padding:0}
:root[data-theme="light"] .gr-ret{background:none}

:root .gr-card .gr-top .tm-kebab{align-self:flex-start;margin:-6px -6px 0 0}

/* бронирование инвентаря */
.gb-sec{display:flex;align-items:center;justify-content:space-between;margin:2px 0 -4px}
.gb-sec .wz-s1-lbl{display:inline-flex;align-items:center;gap:8px;margin:0!important}
.gb-list{display:flex;flex-direction:column}
.gb-row{display:flex;align-items:center;gap:14px;padding:10px 0}
.gb-row + .gb-row{border-top:1px dashed var(--border-strong)}

.gb-i{flex:1;min-width:0}
.gb-p{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gb-m{font-size:12px;color:var(--muted);margin-top:2px}
.gb-none{font-size:12.5px;color:var(--muted);padding:2px 0 6px}
:root .gb-modal .pay-hist-x{position:relative;overflow:hidden;flex:none}















/* Подрядчики: поиск, список категорий и кнопки в общем стиле */

:root .main[data-view="actors"] .kb-search .ico{width:16px}








.main[data-view="actors"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="actors"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="actors"] .dd-menu .dd-opt.on,:root .main[data-view="actors"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="actors"] .dd-opt.on .ck{color:#fff}




:root .main[data-view="actors"] .pj-kpi .v{font-size:32px;line-height:1.25}
:root .ac-card .ac-top .tm-kebab{align-self:flex-start;margin:-6px -6px 0 0}

:root .main[data-view="actors"] .gr-tools .dd .dd-trigger:not(.tm-kb){width:100%}

:root #actorCatFilter .dd-trigger{width:100%}

/* «Локации» — тот же поиск/фильтр, что на Инвентаре и Подрядчиках (был не оформлен вовсе —
   обычные квадратные .kb-search/.dd-trigger вместо круглых плашек с тем же наведением/фокусом) */

:root .main[data-view="locations"] .kb-search .ico{width:16px}








.main[data-view="locations"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="locations"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="locations"] .dd-menu .dd-opt.on,:root .main[data-view="locations"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="locations"] .dd-opt.on .ck{color:#fff}


:root .main[data-view="locations"] .gr-tools .dd .dd-trigger:not(.tm-kb){width:100%}
:root #locKindFilter .dd-trigger{width:100%}



/* добавить / изменить в составе — как позиция инвентаря */






/* теги и категории подрядчика */
.ap-chips{display:flex;flex-wrap:wrap;gap:8px}





.ap-add{background:transparent!important;box-shadow:inset 0 0 0 1.5px var(--field-border)!important;color:var(--muted)}
.ap-add .ico{width:14px;height:14px}
.ap-add:hover{color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)!important;transform:none}
.ap-pop{animation:catpop .32s cubic-bezier(.16,1.3,.3,1)}
.ap-new{height:34px;width:170px;padding:0 14px;border:0;border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:12.5px;font-weight:600;outline:0;box-shadow:inset 0 0 0 1.5px var(--accent),0 0 0 4px var(--accent-soft);animation:catin .25s cubic-bezier(.16,1,.3,1)}

@media(prefers-reduced-motion:reduce){.ap-pop,.ap-new{transition:none;animation:none}}

/* бронирование подрядчика */
:root .ab-modal .att-cal-pop{width:288px;max-width:none}
.ab-contacts{display:flex;flex-direction:column}
:root .ab-contacts .act-profile-contact,:root .ab-contacts #acProjectsBox .act-profile-contact{display:flex;align-items:center;gap:12px;width:100%;padding:10px 0;border:0;border-radius:0;background:none;color:var(--text);font:inherit;font-size:13.5px;font-weight:600;text-decoration:none;cursor:pointer}
:root .ab-contacts > * + *,:root .ab-contacts > .act-profile-contact + .act-profile-contact{border-top:1px dashed var(--border-strong)}
:root .ab-contacts .act-profile-contact .ico{width:17px;height:17px;color:var(--muted);flex:none}
:root .ab-contacts .act-profile-contact span{flex:1;text-align:left}
:root .ab-contacts .act-profile-contact em{font-style:normal;font-size:12px;font-weight:600;padding:5px 12px;border-radius:8px;background:var(--surface-3);color:var(--text);transition:background .15s,color .15s,box-shadow .2s}
:root .ab-contacts .act-profile-contact:hover em{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
:root .ab-contacts a.act-profile-contact:hover{color:var(--accent)}


:root[data-theme="light"] .ab-contacts .act-profile-contact em{background:var(--surface-2)}

/* «Показать» — обычная кнопка в общем стиле, строки без анимации */
:root .ab-contacts .act-profile-contact.ab-row{cursor:default}
:root .ab-contacts .act-profile-contact.ab-row:hover{color:var(--text)}
:root .ab-contacts .act-profile-contact .btn{flex:none}
/* брони: плитка с датой */



:root .gb-modal .gb-row{gap:14px;padding:12px 0}
:root .gb-modal .gb-p{font-size:13.5px;font-weight:700}
:root .gb-modal .gb-m{font-size:12.5px}

/* контакты брони: отдельные серые плашки, без разделителей и без смены фона при наведении */
:root .ab-contacts{gap:8px}
:root .ab-contacts > * + *,:root .ab-contacts > .act-profile-contact + .act-profile-contact{border-top:0}
:root .ab-contacts .act-profile-contact{padding:8px 8px 8px 14px;border-radius:12px;background:var(--surface-3);transition:none}
:root .ab-contacts .act-profile-contact:hover,:root .ab-contacts a.act-profile-contact:hover{background:var(--surface-3);color:var(--text)}



:root[data-theme="light"] .ab-contacts .act-profile-contact{background:var(--surface-2)}
:root[data-theme="light"] .ab-contacts .act-profile-contact:hover{background:var(--surface-2)}

:root .ab-contacts .act-profile-contact,:root .ab-contacts #acProjectsBox .act-profile-contact{min-height:48px;padding:8px 9px 8px 14px;border-radius:12px;background:var(--surface-3);box-sizing:border-box}
:root .ab-contacts #acProjectsBox .act-profile-contact:hover{background:var(--surface-3)}

:root[data-theme="light"] .ab-contacts #acProjectsBox .act-profile-contact{background:var(--surface-2)}

/* брони и контакты подрядчика: единые заголовки, плоские строки, проекты открываются */
:root .gb-modal .gb-sec .wz-s1-lbl{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.01em;text-transform:none;color:var(--text)}
:root .gb-modal .gb-sec{margin:6px 0 0}
:root .ab-contacts{gap:0}
:root .ab-contacts .act-profile-contact,:root .ab-contacts #acProjectsBox .act-profile-contact{min-height:44px;padding:6px 0;border-radius:0;background:none}
:root .ab-contacts .act-profile-contact:hover,:root .ab-contacts a.act-profile-contact:hover,:root .ab-contacts #acProjectsBox .act-profile-contact:hover{background:none;color:var(--text)}



:root[data-theme="light"] .ab-contacts .act-profile-contact{background:none}


.ab-proj{width:100%;border:0;background:none;font:inherit;text-align:left;cursor:pointer;color:var(--text);transition:color .15s}
.ab-proj:hover .gb-p{color:var(--accent)}
.gb-modal .gb-list .gb-row:first-child{padding-top:6px}

/* брони и проекты — отдельные серые плашки */
:root .gb-modal .gb-list{gap:8px}
:root .gb-modal .gb-row,:root .gb-modal .gb-row + .gb-row{padding:12px 12px 12px 16px;border:0;border-radius:12px;background:var(--surface-3)}
:root .gb-modal .gb-list .gb-row:first-child{padding-top:12px}
:root .gb-modal .ab-proj:hover{background:var(--surface-3)}
:root[data-theme="light"] .gb-modal .gb-row{background:var(--surface-2)}


:root .ab-contacts .act-profile-contact,:root .ab-contacts .act-profile-contact:hover,:root .ab-contacts #acProjectsBox .act-profile-contact:hover{box-shadow:none;transition:none}
/* снять бронь — оранжевое наведение (перекрывает серый фон плашки) */






:root .ab-contacts .act-profile-contact .badge{flex:none}

:root[data-theme="light"] .ab-contacts .act-profile-contact:hover,:root[data-theme="light"] .ab-contacts a.act-profile-contact:hover,:root[data-theme="light"] .ab-contacts #acProjectsBox .act-profile-contact:hover{background:none;box-shadow:none}

:root[data-theme="light"] .ab-contacts #acProjectsBox .act-profile-contact,:root[data-theme="light"] .ab-contacts .act-profile-contact{background:none}





/* Клиенты: поиск, список категорий и кнопки в общем стиле */

:root .main[data-view="clients"] .kb-search .ico{width:16px}








.main[data-view="clients"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="clients"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="clients"] .dd-menu .dd-opt.on,:root .main[data-view="clients"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="clients"] .dd-opt.on .ck{color:#fff}



:root .main[data-view="clients"] .pj-kpi .v{font-size:32px;line-height:1.25}










/* карточка клиента — редизайн: контакты/проекты переехали на компоненты карточки сотрудника
   (.tmm-row/.tp-kv, .tp-ph), поэтому весь старый набор .cv-c/.cv-pj/.cv-grid/.tp-ph--cv отсюда
   убран как мёртвый CSS (см. ClientModal) — .wm-head/.wm-plate у cv-modal больше НЕ переопределяем,
   пусть выглядят как у .tp-modal вообще (то есть как на карточке сотрудника). */
.cv-modal .wm-head{align-items:center;gap:14px}

/* модалка проекта: серые плашки, вкладки с плывущей плашкой, плоские группы задач */
.pj-modal .wm-hd-t .tp-namerow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pj-modal .wm-hd-t .pill{flex:none}
















:root .pj-modal .wm-who{font-size:15px;font-weight:700;letter-spacing:0;gap:10px}
:root .pj-modal .wm-who .avatar{flex:none}
:root .pj-modal .wm-plate .stack{margin-top:6px}

/* задачи проекта: исполнитель внутри плашки вместе с его задачами */











/* задача раскрывается прямо в плашке проекта */
.pj-task .row{cursor:pointer}

.pj-task-chev{flex:none;display:grid;place-items:center;width:24px;height:24px;color:var(--muted);transition:transform .25s cubic-bezier(.16,1,.3,1),color .15s}
.pj-task-chev .ico{width:16px;height:16px}
.pj-task.open .pj-task-chev{transform:rotate(180deg);color:var(--accent)}
.pj-task-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s cubic-bezier(.16,1,.3,1)}
.pj-task.open .pj-task-body{grid-template-rows:1fr}
.pj-task-in{overflow:hidden;min-height:0;display:flex;flex-direction:column;gap:12px}
.pj-task.open .pj-task-in{padding:2px 0 14px}





















:root .pj-modal .pj-task .pay-hist-x{position:relative;overflow:hidden;flex:none}
@media(prefers-reduced-motion:reduce){.pj-task-body,.pj-task-chev{transition:none}}

/* карточки задач в модалке проекта */
.pj-cards{display:flex;flex-direction:column;gap:10px}
:root .pj-modal .pj-task{background:var(--surface-3);border-radius:14px;padding:0 16px;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s}
:root .pj-modal .pj-task:not(.open):hover{transform:translateY(-2px);box-shadow:0 14px 26px -14px rgba(0,0,0,.7)}
:root[data-theme="light"] .pj-modal .pj-task{background:var(--surface-2)}
.pj-tc{display:flex;align-items:center;gap:12px;padding:14px 0;cursor:pointer}
.pj-tc .avatar{flex:none}
.pj-tc-i{flex:1;min-width:0}
.pj-tc-t{font-size:14.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s}
.pj-tc:hover .pj-tc-t{color:var(--accent)}
.pj-tc-m{font-size:12.5px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-tc-r{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.pj-tc-d{font-size:12.5px;color:var(--text-2)}
.pj-tc-d.overdue{color:var(--crit);font-weight:700}
.pj-task.open .pj-task-in{border-top:1px dashed var(--border-strong);padding-top:14px}
@media(max-width:560px){.pj-tc-m{white-space:normal}.pj-tc{flex-wrap:wrap}}






/* ——— задачи проекта v3: один список, строки с линиями, раскрытие с шагами ——— */
:root .pj-modal .pj-cards{gap:0;background:var(--surface-3);border-radius:14px;padding:0 6px;overflow:hidden}
:root[data-theme="light"] .pj-modal .pj-cards{background:var(--surface-2)}
:root .pj-modal .pj-task,:root .pj-modal .pj-task:not(.open):hover{background:none;border-radius:0;padding:0 12px;transform:none;box-shadow:none}
:root .pj-modal .pj-task + .pj-task{border-top:1px solid var(--border)}
.pj-tc{gap:14px;padding:14px 0}
.pj-tc-t{font-size:14.5px;font-weight:700}
.pj-tc-m{font-size:12.5px;margin-top:2px}
.pj-tc-r{align-items:flex-end;gap:3px}
.pj-tc-s{font-size:12.5px;font-weight:700;color:var(--text)}
.pj-tc-s.progress{color:var(--accent)}
.pj-tc-s.review{color:var(--warn)}
.pj-tc-s.accepted{color:var(--ok)}
.pj-tc-s.late,.pj-tc-s.returned{color:var(--crit)}
.pj-tc-s.new,.pj-tc-s.waiting{color:var(--text-2)}
.pj-tc-d{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
:root .pj-modal .pj-task.open .pj-task-in{border-top:0;padding:0 0 16px 50px;gap:14px}






























@media(max-width:560px){:root .pj-modal .pj-task.open .pj-task-in{padding-left:0}}

/* задачи проекта: отдельные плашки с зазором */
:root .pj-modal .pj-cards{gap:12px;background:none;padding:0;border-radius:0;overflow:visible}
:root[data-theme="light"] .pj-modal .pj-cards{background:none}
:root .pj-modal .pj-task,:root .pj-modal .pj-task + .pj-task{background:var(--surface-3);border-radius:14px;border:0;padding:2px 16px;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s}
:root .pj-modal .pj-task:not(.open):hover{transform:translateY(-2px);box-shadow:0 14px 26px -14px rgba(0,0,0,.7)}
:root[data-theme="light"] .pj-modal .pj-task,:root[data-theme="light"] .pj-modal .pj-task + .pj-task{background:var(--surface-2)}
:root .pj-modal .pj-task.open .pj-task-in{padding:0 0 16px 50px}

/* ——— карточки задач v4: сетка, цифры и сегментная шкала статуса ——— */
:root .pj-modal .pjc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start;background:none;padding:0}
:root .pj-modal .pjc.pj-task,:root .pj-modal .pjc.pj-task + .pj-task{position:relative;padding:0;border:0;border-radius:18px;overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.015)),var(--surface-3);box-shadow:inset 0 0 0 1px var(--border);transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s}
:root[data-theme="light"] .pj-modal .pjc.pj-task{background:var(--surface-2);box-shadow:none}
:root .pj-modal .pjc.pj-task:not(.open):hover{transform:translateY(-3px);box-shadow:inset 0 0 0 1px var(--accent),0 18px 30px -16px rgba(0,0,0,.75)}
:root .pj-modal .pjc.open{grid-column:1/-1}
.pjc-head{display:flex;flex-direction:column;gap:10px;padding:16px 18px 0;cursor:pointer}
.pjc-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pjc-d{font-size:12.5px;font-weight:600;color:var(--text-2);font-variant-numeric:tabular-nums}
.pjc-d.overdue{color:var(--crit);font-weight:700}
.pjc-t{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.015em;line-height:1.2;color:var(--text);transition:color .15s}
.pjc-head:hover .pjc-t{color:var(--accent)}
.pjc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pjc-who{display:inline-flex;align-items:center;gap:8px;min-width:0;font-size:13px;font-weight:600;color:var(--text-2)}
.pjc-who span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pjc-h{font-family:var(--font-display);font-size:13.5px;font-weight:700;color:var(--text)}
.pjc-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:2px -18px 0;padding:0 18px 16px}
.pjc-bar .seg{position:relative;display:block;height:5px;border-radius:999px;background:var(--surface-2)}
.pjc-bar .seg.done{background:var(--accent);opacity:.55}
.pjc-bar .seg.cur{background:linear-gradient(90deg,#ff7a2e,#ff5d00)}
.pjc-bar.late .seg.cur{background:var(--crit);box-shadow:0 0 12px rgba(255,80,80,.55)}
.pjc-bar .seg em{position:absolute;top:11px;left:0;font-style:normal;font-size:11.5px;font-weight:600;color:var(--muted);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s}
.pjc.open .pjc-bar{padding-bottom:32px}
.pjc.open .pjc-bar .seg em{opacity:1}
.pjc.open .pjc-bar .seg.cur em{color:var(--text)}
:root .pj-modal .pjc.pj-task.open .pj-task-in{padding:14px 18px 18px;border-top:1px dashed var(--border-strong);gap:14px}
.pjc .pj-task-chev{display:none}
@media(max-width:640px){:root .pj-modal .pjc-grid{grid-template-columns:minmax(0,1fr)}}

/* карточка задачи: без смены цвета названия, крупнее значения, аккуратный блок инвентаря */
:root .pj-modal .pjc-head:hover .pjc-t{color:var(--text)}
:root .pj-modal .pjc .pj-task-in{gap:18px}

























/* карточка задачи: без линии под шкалой, без оранжевой рамки, углы скруглены и при наведении */
:root .pj-modal .pjc.pj-task.open .pj-task-in{border-top:0;padding-top:4px}
:root .pj-modal .pjc.pj-task:not(.open):hover,:root .pj-modal .pjc.pj-task:hover{border-radius:18px;padding:0;background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.015)),var(--surface-3);transform:translateY(-3px);box-shadow:inset 0 0 0 1px var(--border),0 18px 30px -16px rgba(0,0,0,.75)}
:root[data-theme="light"] .pj-modal .pjc.pj-task:hover{background:var(--surface-2);box-shadow:0 18px 30px -16px rgba(0,0,0,.25)}
:root .pj-modal .pjc.pj-task.open:hover{transform:none}

:root .pj-modal .pjc-grid{grid-auto-flow:row dense}

/* состав и техника: ровные плашки, отступы между блоками и по краям */
:root .pj-modal #projTabBody .grid.g2{display:flex;flex-direction:column;gap:24px}










:root .pj-modal #projTabBody .grid.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
@media(max-width:640px){:root .pj-modal #projTabBody .grid.g2{grid-template-columns:minmax(0,1fr);gap:24px}}

/* вкладка «ТЗ» */
.tz{display:flex;flex-direction:column;gap:26px}
.tz-sec{display:flex;flex-direction:column;gap:14px}
.tz-h{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--text)}
.tz-kvs{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px 28px}
.tz-kv{display:flex;flex-direction:column;gap:5px}
.tz-kv span{font-size:13.5px;color:var(--muted)}
.tz-kv b{font-size:16px;font-weight:700;color:var(--text)}
.tz-vids{display:flex;flex-wrap:wrap;gap:8px}
/* .tz-vid — не только внутри .tz-vids (flex, там всё ок), но и в «Ролики — сценарии и параметры»
   несколько штук просто через пробел в одной строке текста (см. scBody в projBriefExtra). Там
   это были обычные inline-спаны: длинный текст (цель ролика, имя сценариста и т.п.) переносился
   ВНУТРИ такого спана на 2-ю строку, а фон/скругление красились только у первой строки-фрагмента
   (так работает background у inline-элементов) — плашки визуально расползались и наезжали друг
   на друга. inline-block решает: это уже цельный блок, перенос остаётся, а фон покрывает его
   целиком одним прямоугольником. */
.tz-vid{display:inline-block;max-width:100%;margin:0 4px 6px 0;padding:7px 14px;border-radius:8px;background:var(--surface-3);font-size:12.5px;font-weight:600;color:var(--text);vertical-align:top}
.tz-legal{margin:0;padding:2px 0 2px 16px;border-left:3px solid var(--accent);font-size:14px;line-height:1.7;color:var(--text-2)}
.tz-parties{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tz-party{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border-radius:14px;background:var(--surface-3)}
.tz-pt{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;color:var(--muted);margin-bottom:6px}
.tz-st{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--muted)}
.tz-st .ico{width:14px;height:14px}
.tz-party.ok .tz-st{color:var(--ok)}
.tz-pn{font-size:16px;font-weight:700;color:var(--text)}
.tz-pm{font-size:13.5px;color:var(--text-2)}
.tz-pd{font-size:13px;color:var(--muted);margin-top:4px}
.tz-final{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:600;color:var(--muted)}
.tz-fi{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;box-shadow:inset 0 0 0 2px var(--border-strong);flex:none}
.tz-fi .ico{width:14px;height:14px}
.tz-final.ok{color:var(--text)}
.tz-final.ok .tz-fi{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:none}
:root[data-theme="light"] .tz-party,:root[data-theme="light"] .tz-vid{background:var(--surface-2)}
@media(max-width:640px){.tz-parties{grid-template-columns:minmax(0,1fr)}}

/* тень карточек задач — как у карточек проектов */
:root .pj-modal .pjc.pj-task{box-shadow:inset 0 0 0 1px var(--border),0 10px 24px -14px rgba(0,0,0,.7)}
:root .pj-modal .pjc.pj-task:not(.open):hover,:root .pj-modal .pjc.pj-task:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px var(--border),0 16px 30px -14px rgba(0,0,0,.8)}
:root .pj-modal .pjc.pj-task.open:hover{transform:none;box-shadow:inset 0 0 0 1px var(--border),0 10px 24px -14px rgba(0,0,0,.7)}
:root[data-theme="light"] .pj-modal .pjc.pj-task{box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}
:root[data-theme="light"] .pj-modal .pjc.pj-task:hover{box-shadow:0 2px 4px rgba(0,0,0,.2),0 16px 28px -14px rgba(0,0,0,.6)}
:root[data-theme="light"] .pj-modal .pjc.pj-task.open:hover{box-shadow:0 1px 2px rgba(0,0,0,.16),0 8px 18px -12px rgba(0,0,0,.35)}

/* Проекты и задачи: цифры плашек крупнее */
:root .main[data-view="projects"] .pj-kpi .v{font-size:32px;line-height:1.25}

:root .kb-f .exq-seg{align-self:flex-start}

/* выходные и новая задача: всплывающие списки и календарь не выходят за модалку */
:root .dq-modal .att-cal{position:static;display:block}
:root .dq-modal .att-cal-pop{position:static;width:100%;max-width:340px;margin:8px 0 0;box-shadow:0 0 0 1px var(--border-strong);animation:none}
:root .dq-modal .dd-menu{max-height:210px;overflow-y:auto}



:root .dq-modal .dd .dd-menu{max-height:200px!important;overflow-y:auto!important}

:root .do-modal .dd .dd-menu{top:auto!important;bottom:calc(100% + 6px)!important}

/* бронирование (инвентарь/подрядчики) на телефоне: список проектов открывался вниз и раздвигал
   модалку/подсказки под собой — просили открывать вверх, поверх остального, без нового места */
@media(max-width:640px){
  #gbProject .dd-menu,#abProject .dd-menu{top:auto!important;bottom:calc(100% + 6px)!important;transform-origin:bottom center}
}

/* выходные в календаре недели: без фона и приподнимания, при наведении оранжевый текст и иконка */


.cell .ev[onclick="addDayOff()"]{transition:color .15s}
.cell .ev[onclick="addDayOff()"]:hover{background:none;color:var(--accent)}

/* плашка времени съёмки в календаре недели — градиент как у «Новый проект» */





.cell .ev[onclick="addDayOff()"]{transition:color .15s,transform .2s cubic-bezier(.16,1,.3,1)}
.cell .ev[onclick="addDayOff()"]:hover{transform:translateY(-2px);color:var(--accent)}

/* Новый проект: поля, списки, плашки и рейка шагов в общем стиле */










/* стеклянные меню */

.main[data-view="newproject"] .page .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="newproject"] .page .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="newproject"] .page .dd-menu .dd-opt.on,:root .main[data-view="newproject"] .page .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="newproject"] .page .dd-opt.on .ck{color:#fff}


/* плашки-реквизиты: серые, подписи без капса */
:root .main[data-view="newproject"] .page .wz-meta-chip{background:var(--surface-3);box-shadow:none;border:0;border-radius:14px}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-meta-chip{background:var(--surface-2)}
:root .main[data-view="newproject"] .page .wz-meta-chip .l{font-size:13.5px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--muted)}




:root .main[data-view="newproject"] .page .wz-meta-chip textarea.in.wz-ta{margin-top:2px}




/* Новый проект · шаг «Проект»: календарь съёмок и счётчик в общем стиле */
:root .main[data-view="newproject"] .page .wz-cal-hd b{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.01em}
:root .main[data-view="newproject"] .page .wz-cal-hd button{width:32px;height:32px;border:0;border-radius:50%;background:var(--surface-2);color:var(--text);transition:background .15s,color .15s}
:root .main[data-view="newproject"] .page .wz-cal-hd button:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;border:0}
:root .main[data-view="newproject"] .page .wz-cal-g2{gap:5px}
:root .main[data-view="newproject"] .page .wz-cd2{height:44px;border-radius:12px;background:var(--surface-2);padding:7px 9px;transition:background .15s,box-shadow .15s,transform .15s}
:root .main[data-view="newproject"] .page .wz-cd2:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 18px -12px rgba(0,0,0,.7)}
:root .main[data-view="newproject"] .page .wz-cd2.lv1{background:rgba(255,93,0,.16)}
:root .main[data-view="newproject"] .page .wz-cd2.lv2{background:rgba(255,93,0,.38)}
:root .main[data-view="newproject"] .page .wz-cd2.lv3{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}
:root .main[data-view="newproject"] .page .wz-cd2.lv1 .n,:root .main[data-view="newproject"] .page .wz-cd2.lv1 .c,:root .main[data-view="newproject"] .page .wz-cd2.lv1 .cam{color:var(--accent)}
:root .main[data-view="newproject"] .page .wz-cd2.lv2 .n,:root .main[data-view="newproject"] .page .wz-cd2.lv2 .c,:root .main[data-view="newproject"] .page .wz-cd2.lv2 .cam{color:var(--text)}
:root .main[data-view="newproject"] .page .wz-cd2.lv3 .n,:root .main[data-view="newproject"] .page .wz-cd2.lv3 .c,:root .main[data-view="newproject"] .page .wz-cd2.lv3 .cam{color:#fff}
:root .main[data-view="newproject"] .page .wz-cd2.focus,:root .main[data-view="newproject"] .page .wz-cd2.focus:hover{box-shadow:inset 0 0 0 2px var(--accent),0 0 0 3px var(--accent-soft)}
:root .main[data-view="newproject"] .page .wz-cd2.today .n{color:var(--accent);font-weight:800}

:root .main[data-view="newproject"] .page .wz-stepper button{width:34px}


:root .main[data-view="newproject"] .page .wz-stepper .val{min-width:52px;font-family:var(--font-display);font-size:16px;font-weight:700}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-cd2{background:var(--surface-2)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-cd2.lv1{background:rgba(255,93,0,.16)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-cd2.lv2{background:rgba(255,93,0,.38)}


/* Новый проект · форма дня, операторы, план и срок сдачи */
:root .main[data-view="newproject"] .page .wz-df-vid .wz-stepper{width:auto;min-width:150px}
:root .main[data-view="newproject"] .page .wz-df-vid .wz-stepper button{width:34px;flex:none}
:root .main[data-view="newproject"] .page .wz-cd2.focus,:root .main[data-view="newproject"] .page .wz-cd2.focus:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);box-shadow:0 8px 16px -8px rgba(255,93,0,.8),inset 0 1px 0 rgba(255,255,255,.25);transform:none}
:root .main[data-view="newproject"] .page .wz-cd2.focus .n,:root .main[data-view="newproject"] .page .wz-cd2.focus .c,:root .main[data-view="newproject"] .page .wz-cd2.focus .cam{color:#fff}
:root .main[data-view="newproject"] .page .wz-oc{border:0;border-radius:12px;background:var(--surface-2);padding:11px 14px;gap:3px;transition:background .18s,color .18s,transform .18s,box-shadow .25s}
:root .main[data-view="newproject"] .page .wz-oc b{font-size:13.5px;font-weight:700}
:root .main[data-view="newproject"] .page .wz-oc span{font-size:12px}
:root .main[data-view="newproject"] .page .wz-oc:hover:not(:disabled):not(.on){background:var(--surface);transform:translateY(-2px)}
:root .main[data-view="newproject"] .page .wz-oc:active:not(:disabled){transform:scale(.97)}
:root .main[data-view="newproject"] .page .wz-oc.on,:root .main[data-view="newproject"] .page .wz-oc.on:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;transform:none;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}
:root .main[data-view="newproject"] .page .wz-oc.on b,:root .main[data-view="newproject"] .page .wz-oc.on span{color:#fff}
:root .main[data-view="newproject"] .page .wz-oc.on span{opacity:.85}
:root .main[data-view="newproject"] .page .wz-oc i{background:#fff;color:#ff5d00;top:10px;right:10px}
:root .main[data-view="newproject"] .page .wz-pl2{background:var(--surface-3);border:0;border-radius:14px;box-shadow:none}
:root .main[data-view="newproject"] .page .wz-pd{background:var(--surface-2);border:0;box-shadow:none}
:root .main[data-view="newproject"] .page .wz-dl .att-cal-trig,:root .main[data-view="newproject"] .page .wz-dl .att-cal-trig.set,:root .main[data-view="newproject"] .page .wz-dl .att-cal-trig.bad{width:100%;max-width:280px}


:root .main[data-view="newproject"] .page .wz-dl .att-cal-trig > svg:first-child,:root .main[data-view="newproject"] .page .wz-dl .att-cal-trig.set > svg:first-child{width:30px;flex:none}

:root[data-theme="light"] .main[data-view="newproject"] .page .wz-oc{background:var(--surface-2)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-pl2{background:var(--surface-2)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-pd{background:var(--surface-2)!important}

:root .main[data-view="newproject"] .page .wz-df-vid{align-items:center;gap:16px}
:root .main[data-view="newproject"] .page .wz-df-vid .wz-f{width:auto;flex:none;gap:6px}
:root .main[data-view="newproject"] .page .wz-df-vid .wz-f>span{font-size:13.5px;font-weight:500}
:root .main[data-view="newproject"] .page .wz-df-vid .hint{margin:22px 0 0}

:root .main[data-view="newproject"] .page .wz-pl2{padding:16px 16px 8px}
:root .main[data-view="newproject"] .page .wz-pl2-hd{margin-bottom:12px}



/* иконка календаря в сроке сдачи — просто оранжевая, без плашки */
:root .main[data-view="newproject"] .page .wz-dl .att-cal-trig > svg:first-child,:root .main[data-view="newproject"] .page .wz-dl .att-cal-trig.set > svg:first-child{width:20px}


/* светлая тема: выбранные операторы и дни остаются оранжевыми */
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-oc.on,:root[data-theme="light"] .main[data-view="newproject"] .page .wz-oc.on:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-cd2.lv3,:root[data-theme="light"] .main[data-view="newproject"] .page .wz-cd2.focus,:root[data-theme="light"] .main[data-view="newproject"] .page .wz-cd2.focus:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}

/* Новый проект · шаг «Ролики» */

:root .main[data-view="newproject"] .page .wz-vc .wz-stepper--in .val{color:var(--text);font-family:var(--font-display);font-size:16px;font-weight:700}


:root .main[data-view="newproject"] .page .wz-ro{height:42px;padding:0 16px;border:0;border-radius:12px;background:var(--surface-3);font-size:13.5px;font-weight:600;color:var(--muted)}
:root .main[data-view="newproject"] .page .wz-pc{border:0;border-radius:12px;background:var(--surface-3);padding:13px 14px;transition:background .18s,color .18s,transform .18s,box-shadow .25s}
/* карточки сотрудников (.wz-pc) вне .wz-vc — например AI-специалист в блоке ИИ-интеграция — сидят прямо
   в .wz-meta-chip, у которой тот же фон --surface-3, что и у самой карточки: без переопределения фон «пропадает» */
:root .main[data-view="newproject"] .page .wz-meta-chip .wz-pc:not(.on){background:var(--surface-2)}
:root .main[data-view="newproject"] .page .wz-meta-chip .wz-pc:not(.on):hover{background:var(--surface)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-meta-chip .wz-pc:not(.on){background:var(--surface-2)}
:root .main[data-view="newproject"] .page .wz-pc:hover:not(.on){background:var(--surface);transform:translateY(-2px)}
:root .main[data-view="newproject"] .page .wz-pc:active{transform:scale(.98)}
:root .main[data-view="newproject"] .page .wz-pc.on,:root .main[data-view="newproject"] .page .wz-pc.on:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;transform:none;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}
:root .main[data-view="newproject"] .page .wz-pc.on .t b,:root .main[data-view="newproject"] .page .wz-pc.on .n,:root .main[data-view="newproject"] .page .wz-pc.on .n small{color:#fff}
:root .main[data-view="newproject"] .page .wz-pc.on .wz-lv{background:rgba(255,255,255,.22);color:#fff}
:root .main[data-view="newproject"] .page .wz-pc .ck{background:#fff;color:#ff5d00}
:root .main[data-view="newproject"] .page .wz-pkc2.bad .wz-pc:not(.on){background:var(--crit-soft);box-shadow:inset 0 0 0 1.5px var(--crit)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-ro,:root[data-theme="light"] .main[data-view="newproject"] .page .wz-pc:not(.on){background:var(--surface-2)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-pc.on,:root[data-theme="light"] .main[data-view="newproject"] .page .wz-pc.on:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}

/* «Прикрепить файл» в мастере — как «Редактировать» */






/* карточки роликов и правил — серые; поля внутри чуть темнее */
:root .main[data-view="newproject"] .page .wz-stepper button{flex:none;min-width:34px}
:root .main[data-view="newproject"] .page .wz-vc,:root .main[data-view="newproject"] .page .wz-rule{background:var(--surface-3);border:0;box-shadow:none}
:root .main[data-view="newproject"] .page .wz-vc .wz-ro,:root .main[data-view="newproject"] .page .wz-vc .wz-pc:not(.on){background:var(--surface-2)!important}
:root .main[data-view="newproject"] .page .wz-vc .wz-pc:not(.on):hover{background:var(--surface)!important}

:root[data-theme="light"] .main[data-view="newproject"] .page .wz-vc,:root[data-theme="light"] .main[data-view="newproject"] .page .wz-rule{background:var(--surface-2)}
:root[data-theme="light"] .main[data-view="newproject"] .page .wz-vc .wz-ro,:root[data-theme="light"] .main[data-view="newproject"] .page .wz-vc .wz-pc:not(.on){background:var(--surface-2)!important}

/* Новый проект · шаги «Съёмка»–«Сценарии»: кнопки и переключатели */















/* Новый проект · шаг «Утверждение» */
:root .main[data-view="newproject"] .page .wz-meta-chip .wz-f>span{font-size:13.5px;font-weight:500;color:var(--muted)}
:root .main[data-view="newproject"] .page .wz-legal{background:none;padding:2px 0 2px 16px;border-radius:0;border-left:3px solid var(--accent);box-shadow:none}
:root .main[data-view="newproject"] .page .wz-legal p{margin:0;font-size:14px;line-height:1.7;color:var(--text-2)}

/* Новый проект · шаг «Утверждение»: задачи проекта */
.tkp{display:flex;flex-direction:column;gap:22px;margin-top:6px}
.tkp-g{display:flex;flex-direction:column;gap:12px}
.tkp-h{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--text)}
.tkp-list{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:stretch}
.tkp-c{display:flex;flex-direction:column;gap:10px;padding:16px 18px;border-radius:16px;background:var(--surface-3)}
.tkp-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.tkp-t{font-family:var(--font-display);font-size:16px;font-weight:700;letter-spacing:-.01em;line-height:1.25;color:var(--text)}
.tkp-d{flex:none;max-width:45%;font-size:12.5px;font-weight:600;color:var(--accent);text-align:right;line-height:1.3}
.tkp-who{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text-2)}
.tkp-who b{font-weight:600;color:var(--text)}
.tkp-who span{font-size:12px;color:var(--muted)}
.tkp-av{width:34px;height:34px;font-size:12.5px;flex:none}
.tkp-kv{display:flex;flex-direction:column;gap:8px;margin-top:2px}
.tkp-r{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr);gap:12px;font-size:13.5px}
.tkp-filebtn{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:8px;background:var(--surface-2);color:var(--accent);font-size:12.5px;font-weight:600;text-decoration:none;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:fit-content}
.tkp-filebtn:hover{background:var(--accent-soft)}
.tkp-filebtn .ico{width:12px;height:12px;flex:none}
.tkp-r span{color:var(--muted)}
.tkp-r b{font-weight:600;color:var(--text);word-break:break-word}
:root[data-theme="light"] .tkp-c{background:var(--surface-2)}
@media(max-width:820px){.tkp-list{grid-template-columns:minmax(0,1fr)}}
/* «Утверждение»: без серых плашек вокруг блоков подписей */
:root .main[data-view="newproject"] .page #tz-6 .wz-meta-chip{background:none;padding:0;border-radius:0}
:root .main[data-view="newproject"] .page #tz-6 .wz-meta-chip > .l{font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--text);margin-bottom:6px}
:root .main[data-view="newproject"] .page #tz-6 .wz-legal{padding:2px 0 2px 16px}

:root .main[data-view="newproject"] .page #tz-6 .wz-f>span,:root .main[data-view="newproject"] .page #tz-6 .wz-vc-g .wz-f>span{font-size:13.5px;font-weight:500;color:var(--muted)}
:root .main[data-view="newproject"] .page #tz-6 .wz-two--top{margin-top:24px!important;gap:22px}

:root .main[data-view="newproject"] .page #tz-6 .wz-two--top{margin-top:40px!important;gap:40px}
:root .main[data-view="newproject"] .page #tz-6 .wz-meta-chip > .l{margin-bottom:12px}

/* календарь даты в «Клиент» и «Команда (PM)» открывается вверх */
:root .wz-apd .att-cal-pop,:root #tz-6 .att-cal-pop{top:auto!important;bottom:calc(100% + 8px)!important;left:0;right:auto}

/* рейка шагов мастера — стиль вкладок, как в модалке проекта */
:root .wz-steps{display:inline-flex;max-width:100%;gap:4px;padding:4px;border-radius:999px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border);overflow-x:auto;scrollbar-width:none}
:root .wz-steps::-webkit-scrollbar{display:none}
:root .wz-steps .st{flex:none;min-width:0;padding:8px 16px;border-radius:999px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:700;overflow:visible;text-overflow:clip;box-shadow:none;transform:none;transition:color .2s,background .2s}
:root .wz-steps .st:hover:not(.on){background:transparent;color:var(--text)}
:root .wz-steps .st.ok{background:transparent;color:var(--text-2);box-shadow:none}
:root .wz-steps .st.ok .ck{color:var(--accent);margin-right:5px}
:root .wz-steps .st.on,:root .wz-steps .st.on:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}
:root[data-theme="light"] .wz-steps{background:var(--surface-2);box-shadow:none}

/* рейка шагов мастера v3: пронумерованные шаги, соединённые линией */
:root .wz-steps{display:flex;align-items:center;gap:0;max-width:100%;padding:4px 2px 2px;border-radius:0;background:none;box-shadow:none;overflow-x:auto;counter-reset:wzs}
:root[data-theme="light"] .wz-steps{background:none;box-shadow:none}
:root .wz-steps .st{position:relative;display:flex;align-items:center;gap:10px;flex:1 0 auto;padding:0;border-radius:0;background:none;color:var(--muted);font-size:13px;font-weight:600;white-space:nowrap;box-shadow:none;transform:none;overflow:visible;text-overflow:clip;counter-increment:wzs}
:root .wz-steps .st:last-child{flex:0 0 auto}
:root .wz-steps .st::before{content:counter(wzs);flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--surface-2);box-shadow:inset 0 0 0 1.5px var(--border-strong);color:var(--muted);font-family:var(--font-display);font-size:13px;font-weight:700;transition:background .2s,color .2s,box-shadow .2s}
:root .wz-steps .st:not(:last-child)::after{content:"";flex:1;min-width:18px;height:2px;margin:0 12px;border-radius:2px;background:var(--border-strong);transition:background .25s}
:root .wz-steps .st .ck{display:none}
:root .wz-steps .st:hover:not(.on){background:none;color:var(--text)}
:root .wz-steps .st:hover:not(.on):not(.ok)::before{box-shadow:inset 0 0 0 1.5px var(--accent);color:var(--accent)}
:root .wz-steps .st.ok{background:none;color:var(--text-2)}
:root .wz-steps .st.ok::before{content:"✓";background:linear-gradient(180deg,#ff7a2e,#ff5d00);box-shadow:none;color:#fff;font-size:14px}
:root .wz-steps .st.ok::after{background:var(--accent)}
:root .wz-steps .st.on,:root .wz-steps .st.on:hover{background:none;color:var(--text);box-shadow:none;font-weight:700}
:root .wz-steps .st.on::before{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 0 0 4px var(--accent-soft),0 8px 16px -6px rgba(255,93,0,.7)}

/* рейка шагов мастера v4: ровно такие же вкладки, как в модалке проекта и карточке сотрудника */
:root .wz-steps{display:flex;flex-wrap:wrap;align-self:flex-start;gap:4px;width:fit-content;max-width:100%;padding:4px;border-radius:18px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border);overflow:visible;counter-reset:none}
:root[data-theme="light"] .wz-steps{background:var(--surface-2);box-shadow:none}
:root .wz-steps .st{flex:none;display:inline-flex;align-items:center;gap:0;padding:7px 16px;border-radius:999px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:700;white-space:nowrap;box-shadow:none;transform:none;counter-increment:none;transition:color .2s}
:root .wz-steps .st::before,:root .wz-steps .st::after,:root .wz-steps .st:not(:last-child)::after,:root .wz-steps .st.ok::before,:root .wz-steps .st.ok::after,:root .wz-steps .st.on::before{content:none;display:none}
:root .wz-steps .st:last-child{flex:none}
:root .wz-steps .st .ck{display:none}
:root .wz-steps .st:hover:not(.on){background:transparent;color:var(--text)}
:root .wz-steps .st.ok{background:transparent;color:var(--text-2)}
:root .wz-steps .st.on,:root .wz-steps .st.on:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;font-weight:700;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}

/* Финансы: вкладки и кнопки в общем стиле */
:root .fin-tabs{border-radius:18px;box-shadow:inset 0 0 0 1px var(--border)}
:root[data-theme="light"] .fin-tabs{box-shadow:none}



/* Финансы: поиск, список категорий и кнопки в общем стиле */

:root .main[data-view="finance"] .kb-search .ico{width:16px}








.main[data-view="finance"] .dd-opt{transition:background .14s,color .14s,transform .14s}
.main[data-view="finance"] .dd-opt + .dd-opt{margin-top:2px}

:root .main[data-view="finance"] .dd-menu .dd-opt.on,:root .main[data-view="finance"] .dd-menu .dd-opt.on:hover{cursor:default}
.main[data-view="finance"] .dd-opt.on .ck{color:#fff}




:root .main[data-view="finance"] .pj-kpi .v{font-size:32px;line-height:1.25}
:root .main[data-view="finance"] .pj-kpi .s{display:none}

/* модалка подключения таблиц */





/* Уведомления: стеклянная панель, серые плашки */
:root .notif-pop{width:380px;max-height:min(calc(76vh * var(--vz,1)),520px);border:0;border-radius:20px;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 0 0 1px var(--border-strong),0 28px 56px -18px rgba(0,0,0,.85)}
:root .notif-hd{padding:16px 16px 12px;border:0}
:root .notif-hd > span{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:700;letter-spacing:-.01em}
:root .notif-n{min-width:22px;height:22px;padding:0 7px;border-radius:999px;display:inline-grid;place-items:center;font-size:12px;font-weight:700;color:#fff;background:linear-gradient(180deg,#ff7a2e,#ff5d00)}

:root .notif-list{display:flex;flex-direction:column;gap:8px;padding:0 12px 12px}
:root .notif-row{align-items:center;gap:12px;padding:12px 12px 12px 14px;border-radius:14px;background:var(--surface-3);border:0;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s}
:root .notif-row + .notif-row{border:0}






:root .notif-row .pay-hist-x{flex:none;position:relative;overflow:hidden}






:root .notif-empty{padding:34px 14px}
:root[data-theme="light"] .notif-pop{background:rgba(255,255,255,.97);box-shadow:0 0 0 1px #e6e6e6,0 28px 56px -22px rgba(0,0,0,.3)}
:root[data-theme="light"] .notif-row{background:var(--surface-2)}

@media(max-width:640px){:root .notif-pop{width:auto}}

/* Моя посещаемость: календарь месяца в общем стиле */
:root .att-heat-wd{padding:6px 24px 8px;gap:8px}
:root .att-heat-wd span{font-size:12.5px;font-weight:600}
:root .att-heat-grid{gap:8px;padding:0 24px}
:root .att-heat-d{aspect-ratio:auto;height:46px;border-radius:12px;font-size:14px;font-weight:700;background:var(--surface-3);color:var(--text)}
:root .att-heat-d.empty{background:none}
:root .att-heat-d.off{background:none;color:var(--muted);opacity:.55}
:root .att-heat-d.ok{background:var(--surface-3);color:var(--text)}
:root .att-heat-d.warn{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 8px 16px -8px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.25)}
:root .att-heat-d.crit{background:var(--crit-soft);color:var(--crit)}
:root .att-heat-d.exc{background:var(--surface-3);color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)}
:root .att-heat-legend{gap:18px;padding:16px 24px 22px;font-size:13px}
:root .att-heat-legend .d{width:12px;height:12px;border-radius:4px}
:root .att-heat-legend .d.ok{background:var(--surface-3);box-shadow:inset 0 0 0 1px var(--border-strong)}
:root .att-heat-legend .d.warn{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}
:root .att-heat-legend .d.crit{background:var(--crit)}
:root .att-heat-legend .d.exc{background:none;border:0;box-shadow:inset 0 0 0 1.5px var(--accent)}
:root[data-theme="light"] .att-heat-d,:root[data-theme="light"] .att-heat-d.ok{background:var(--surface-2);color:#111}
:root[data-theme="light"] .att-heat-d.empty,:root[data-theme="light"] .att-heat-d.off{background:none;color:#9a9a9a}
:root[data-theme="light"] .att-heat-d.warn{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
:root[data-theme="light"] .att-heat-d.crit{background:var(--crit-soft);color:var(--crit)}
:root[data-theme="light"] .att-heat-d.exc{background:var(--surface-2);color:var(--accent)}

/* Моя посещаемость: цифры плашками, календарь компактный рядом с таблицей */
:root .main[data-view="attendance"] .pj-kpi .v{font-size:32px;line-height:1.25}
:root .main[data-view="attendance"] .pj-kpi .v.warn{color:var(--accent)}
.att-me{display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:16px;align-items:start}
@media(max-width:1000px){.att-me{grid-template-columns:minmax(0,1fr)}}
:root .att-heat-wd{padding:4px 20px 6px;gap:4px}
:root .att-heat-wd span{font-size:11.5px}
:root .att-heat-grid{gap:4px;padding:0 20px}
:root .att-heat-d{height:36px;border-radius:10px;font-size:13px}
:root .att-heat-legend{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;padding:16px 20px 20px;font-size:12.5px}

:root .att-heat-d.empty{height:36px;min-height:0;padding:0;aspect-ratio:auto}
:root .att-table--me col.c-sotr{width:110px}
:root .att-table--me col.c-arr,:root .att-table--me col.c-late{width:90px}
:root .att-table--me col.c-zone{width:100px}
:root .att-table--me col.c-pen{width:auto}

:root .att-table.att-table--me{min-width:0;width:100%}
:root .att-table--me col.c-sotr,:root .att-table--me col.c-arr,:root .att-table--me col.c-late,:root .att-table--me col.c-zone,:root .att-table--me col.c-pen{width:20%}
:root .att-table--me td{padding-left:14px;padding-right:14px;white-space:nowrap}
:root .att-table--me th{padding-left:14px;padding-right:14px;white-space:nowrap}
:root .att-table--me td:first-child{padding-left:24px}
:root .att-table--me th:first-child{padding-left:24px}

/* Моя посещаемость: одинаковая фиксированная высота, листание месяцев и страниц */
:root .att-me > .card{height:auto;display:flex;flex-direction:column;margin:0}
:root .att-me > .att-heat{overflow:hidden}
:root .att-heat-hd{display:flex;align-items:center;justify-content:space-between}
:root .att-heat-mo{text-transform:capitalize}
:root .att-heat-nav{display:flex;gap:6px}
:root .att-heat-nav .att-cal-nav:disabled{opacity:.35;pointer-events:none}
:root .att-heat-legend{margin-top:auto}
:root .att-me > .card > .tablewrap{flex:1;min-height:0;overflow:hidden}
:root .att-me-foot{margin-top:auto;padding:12px 24px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border-top:1px solid var(--border)}
@media(max-width:1000px){:root .att-me > .card{height:auto;min-height:0}}

:root .att-heat-nav .att-cal-nav{position:relative}



:root .att-me .att-heat-d,:root .att-me .att-heat-d.empty{height:32px;border-radius:9px;font-size:12.5px}
:root .att-me .att-heat-legend{padding:10px 20px 14px;gap:8px 14px}
:root .att-table--me td{padding-top:8px;padding-bottom:8px}
:root .att-table--me th{padding-top:8px;padding-bottom:8px}
:root .att-me-foot{padding:10px 24px 14px}

:root .att-me{align-items:stretch}
:root .att-me .att-heat-legend{margin-top:0}



/* Мои финансы: шапка-сводка, запросы и история */
.mf-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:28px;align-items:center;padding:26px 28px}
.mf-orb{position:absolute;right:-60px;top:-90px;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(255,93,0,.42),rgba(255,93,0,0) 68%);pointer-events:none}
.mf-hl,.mf-hr{position:relative;display:flex;flex-direction:column;gap:14px;min-width:0}
.mf-hl .k{font-size:14px;font-weight:600;color:var(--text-2)}
.mf-hl .big{font-family:var(--font-display);font-size:48px;line-height:1.05;font-weight:700;letter-spacing:-.03em;color:var(--text);font-variant-numeric:tabular-nums}
.mf-hl .big i{font-style:normal;font-size:18px;font-weight:600;color:var(--muted);margin-left:8px;letter-spacing:0}
.mf-chips{display:flex;flex-wrap:wrap;gap:8px}
.mf-chips .c{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;border-radius:999px;background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);font-size:13px;color:var(--text-2)}
.mf-chips .c b{font-weight:700;color:var(--text)}
.mf-chips .c b.ok{color:var(--ok)}
.mf-chips .c b.neg{color:var(--crit)}
.mf-prog .t{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:13.5px;color:var(--text-2);margin-bottom:10px}
.mf-prog .t b{font-family:var(--font-display);font-size:18px;font-weight:700;color:var(--text)}
.mf-prog .t em{font-style:normal;font-size:13px;font-weight:500;color:var(--muted)}
.mf-prog .bar{height:12px;border-radius:999px;background:rgba(255,255,255,.09);overflow:hidden}
.mf-prog .bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ff7a2e,#ff5d00)}
.mf-next{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mf-next > div{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}
.mf-next span{font-size:12.5px;color:var(--muted)}
.mf-next b{font-family:var(--font-display);font-size:18px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.mf-sec .card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px 12px}
.mf-sec .card-head h3{font-size:16px;font-weight:700}
.mf-reqs{display:flex;flex-direction:column;padding:0 8px 8px}
.mf-q{display:grid;grid-template-columns:36px minmax(0,1fr) 70px auto;column-gap:14px;align-items:center;padding:12px;border-radius:14px;transition:background .12s}
.mf-q + .mf-q{border-top:1px solid var(--border)}
.mf-q:hover{background:var(--surface-3)}
.mf-q .ic{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);color:var(--accent)}
.mf-q .o{display:flex;flex-direction:column;gap:2px;min-width:0}
.mf-q .o b{font-size:14px;font-weight:600;color:var(--text)}
.mf-q .o span{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mf-q .d{font-size:12.5px;color:var(--muted)}
.mf-list{display:flex;flex-direction:column;padding:0 0 8px}
.mf-r{display:grid;grid-template-columns:minmax(0,1fr) 84px 96px 130px 34px;column-gap:16px;align-items:center;padding:10px 20px;border-top:1px solid var(--border);font-size:13px;transition:background .12s}
.mf-r:not(.mf-r--h):hover{background:var(--surface-3)}
.mf-r--h{border-top:0;padding-top:4px;padding-bottom:8px;font-size:12px;font-weight:600;color:var(--muted)}
.mf-r .o{display:flex;flex-direction:column;gap:2px;min-width:0}
.mf-r .o b{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mf-r .o span{font-size:12px;color:var(--muted)}
.mf-r .d{color:var(--text-2);white-space:nowrap}
.mf-r .a{text-align:right;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-weight:600;color:var(--text);white-space:nowrap}
.mf-r .mf-ty{margin-left:0}
.mf-r.canc .a{text-decoration:line-through;color:var(--muted)}
.mf-r.canc .o b{color:var(--muted)}
.mf-r.canc .mf-ty{opacity:.45}
.mf-r .pay-hist-x{position:relative;overflow:hidden;justify-self:end}



.mf-empty{padding:26px 20px}
.mf-tabs{margin:0}

:root[data-theme="light"] .mf-chips .c,:root[data-theme="light"] .mf-next > div{background:var(--surface-2);box-shadow:none}
:root[data-theme="light"] .mf-prog .bar{background:var(--surface-2)}
:root[data-theme="light"] .mf-q .ic{background:var(--surface-2)}
@media(max-width:1000px){.mf-hero{grid-template-columns:minmax(0,1fr)}.mf-hl .big{font-size:38px}}
@media(max-width:640px){.mf-r{grid-template-columns:minmax(0,1fr) 110px 30px}.mf-r .d,.mf-r .mf-ty{display:none}.mf-q{grid-template-columns:36px minmax(0,1fr) auto}.mf-q .d{display:none}}

/* переключатель истории — как вкладки в модалке сотрудника */
.mf-tabs.proj-tabs{align-self:center;margin:0}
.mf-tabs .proj-tab{margin:0}


/* Дашборд проджект-менеджера */
.pm-db{display:flex;flex-direction:column;gap:16px}


/* Дашборд проджект-менеджера v3 */
.pmx-b{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:16px;align-items:stretch}
































































@media(max-width:1000px){.pmx-b{grid-template-columns:minmax(0,1fr)}
  /* .pmx-ht в колонку — у .db-hero-t (дата+заголовок+чипсы) нет min-width:0/width:100% как
     у флекс-айтема с align-items:flex-start, поэтому он не сжимался под контент (чипсы —
     .db-chips) — весь ряд чипсов вылезал за карточку вместо переноса строк */
  
}
.db-h button.link{background:none;border:0;cursor:pointer;padding:0;font-family:inherit;font-size:12.5px;font-weight:600;color:var(--muted)}
.db-h button.link:hover{color:var(--accent)}

/* дашборд ПМ: приветствие на всю ширину, ниже три колонки */

.pmx-b{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr)}

@media(max-width:1100px){.pmx-b{grid-template-columns:minmax(0,1fr)}}





/* дашборд ПМ: профиль и «Требует внимания» в два ряда, финансы ниже на всю ширину */
.pmx-b{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}





@media(max-width:1100px){.pmx-b{grid-template-columns:minmax(0,1fr)}}

/* «Требует внимания»: отступы у позиций и листание по 3 */

















/* дашборд ПМ: карточки профиля и «Требует внимания» ниже */
















/* Финансы на дашборде ПМ: без вертикальных линий, запросы серыми плашками */


















/* Неделя вперёд и команда — дашборд ПМ */

































/* Неделя вперёд: чипы, клик, без наследования календарных .ev/.off */












/* статичные блоки дашборда ПМ: без анимации при наведении */








/* ——— телефон: нижнее меню и шторка «Ещё» ———
   Живут в #bnHost (вне #root) и не пересоздаются при render(). Тёмная стеклянная капсула в
   фирменном синем, общая для обеих тем; активный пункт — оранжевая капля, которая идёт за пальцем.
   Капля двигается только transform (композитор) — без лагов при перерисовке страницы. */
.bnav,.msheet{display:none}
body.kb-open .bnav,body.kb-open .set-bar{display:none!important}
@media(max-width:640px){
  .bnav{--bn-ink:rgba(226,238,240,.6);display:block;position:fixed;left:14px;right:14px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:80;
    padding:6px;border-radius:28px;background:rgba(3,24,35,.86);-webkit-backdrop-filter:blur(26px) saturate(1.8);backdrop-filter:blur(26px) saturate(1.8);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.07),inset 0 1px 0 rgba(255,255,255,.08),0 22px 44px -16px rgba(1,20,29,.65),0 6px 14px -6px rgba(1,20,29,.35);
    touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;animation:bnIn .5s cubic-bezier(.16,1,.3,1) both}
  :root[data-theme="light"] .bnav{background:rgba(1,29,43,.9);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06),0 18px 40px -14px rgba(1,29,43,.45),0 4px 12px -4px rgba(1,29,43,.25)}
  @keyframes bnIn{from{transform:translateY(24px);opacity:0}}
  .bn-track{position:relative;display:flex;height:58px}
  .bn-pill,.ms-pill{position:absolute;left:0;top:0;border-radius:22px;pointer-events:none;z-index:0;opacity:0;will-change:transform;background:radial-gradient(120% 90% at 50% 0%,#ff8a3d 0%,#ff6a12 45%,#ff5d00 100%);box-shadow:0 10px 22px -8px rgba(255,93,0,.75),inset 0 0 0 1px rgba(255,255,255,.12),inset 0 1px 0 rgba(255,255,255,.35);transition:transform .5s cubic-bezier(.3,1.4,.5,1),opacity .2s}
  .bn-pill{bottom:0}
  .bn-pill--hold{transition:transform .28s cubic-bezier(.3,1.4,.5,1),opacity .2s}
  .bn-pill--drag{transition:opacity .2s}
  .bn-item,.ms-item{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
    color:var(--bn-ink,rgba(226,238,240,.6));text-decoration:none;-webkit-tap-highlight-color:transparent;cursor:pointer;transition:color .22s}
  .bn-item{flex:1 1 0;min-width:0}
  .bn-ic,.ms-ic{position:relative;display:grid;place-items:center;transition:transform .35s cubic-bezier(.34,1.5,.5,1)}
  .bn-item .ico,.ms-item .ico{width:22px;height:22px;stroke-width:1.9}
  .bn-l,.ms-t{font-size:10.5px;font-weight:600;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;padding:0 2px}
  .bn-item.lit,.ms-item.lit{color:#fff}
  .bn-item.lit .bn-ic,.ms-item.lit .ms-ic{transform:translateY(-1px) scale(1.08)}
  .bn-cw{display:contents}
  .bn-c{position:absolute;top:-6px;left:calc(100% - 7px);min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:#ff5d00;color:#fff;font-style:normal;font-size:10px;font-weight:700;line-height:17px;text-align:center;box-shadow:0 0 0 2px #03202e;box-sizing:border-box}
  .lit .bn-c{background:#fff;color:#ff5d00;box-shadow:0 0 0 2px #ff6a12}
  .main{padding-bottom:calc(100px + env(safe-area-inset-bottom,0px))}
  .topbar-sep{display:none!important}
.menu-toggle{display:none!important}

  .msheet{display:block;position:fixed;inset:0;z-index:85;pointer-events:none}
  .ms-scrim{position:absolute;inset:0;background:rgba(1,20,29,.45);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .3s}
  .ms-card{position:absolute;left:14px;right:14px;bottom:calc(92px + env(safe-area-inset-bottom,0px));padding:8px 8px 10px;border-radius:28px;
    background:rgba(3,24,35,.92);-webkit-backdrop-filter:blur(28px) saturate(1.8);backdrop-filter:blur(28px) saturate(1.8);color:#eef6f5;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.07),0 30px 60px -18px rgba(1,20,29,.8);touch-action:none;user-select:none;-webkit-user-select:none;
    transform:translate3d(0,calc(100% + 110px),0);transition:transform .45s cubic-bezier(.3,1.25,.5,1)}
  .msheet.open{pointer-events:auto}
  .msheet.open .ms-scrim{opacity:1}
  .msheet.open .ms-card{transform:none}
  .ms-grab{width:38px;height:4px;border-radius:999px;background:rgba(255,255,255,.25);margin:2px auto 8px}
  .ms-me{display:flex;align-items:center;gap:12px;padding:4px 10px 12px;margin-bottom:6px;border-bottom:1px solid rgba(255,255,255,.08)}
  .ms-me .grow{min-width:0}
  .ms-me b{display:block;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ms-me span{display:block;font-size:12px;color:rgba(226,238,240,.6)}
  .ms-me .avatar{width:42px;height:42px;display:grid;place-items:center;padding:0;line-height:1;font-size:14px;letter-spacing:0;text-indent:0}
  .ms-grid{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px}
  .ms-item{height:72px;padding:0 2px}
  .ms-t{font-size:11px;white-space:normal;text-align:center;line-height:1.2}
  .ms-pill{border-radius:20px}
  .ms-item.active,.ms-item.lit{color:#fff}
  .ms-item .bn-c{top:-7px}
}
@media(max-width:640px) and (prefers-reduced-motion:reduce){
  .bnav,.bn-pill,.ms-pill,.ms-card{animation:none;transition:none!important}
}
html.ms-lock,html.ms-lock body{overflow:hidden;overscroll-behavior:none}
@media(max-width:640px){ .bnav{z-index:86} }

/* телефон: дашборд / «Мой день» */
@media(max-width:640px){
  .page.pm-db{padding:14px 12px calc(96px + env(safe-area-inset-bottom,0px));gap:12px}
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
}

/* телефон: недельный календарь на «Проектах» — день плашкой, события карточками */
@media(max-width:640px){
  :root .wk,:root:not([data-theme="light"]) .wk,:root[data-theme="light"] .wk{background:none!important;border:0!important;box-shadow:none!important;overflow:visible;display:flex;flex-direction:column;gap:10px;border-radius:0}
  .pj-sec + .wk{margin-top:0}
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
}

/* телефон: «Моя посещаемость» */
@media(max-width:640px){
  .main[data-view="attendance"] .pj-kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  :root .main[data-view="attendance"] .pj-kpi{padding:10px 12px}
  :root .main[data-view="attendance"] .pj-kpi .l{font-size:11.5px;line-height:1.25}
  :root .main[data-view="attendance"] .pj-kpi .v{font-size:22px;line-height:1.3}
  .att-me{gap:12px}
  .att-heat-wd{padding:2px 14px 4px;gap:3px}
  .att-heat-grid{padding:0 14px;gap:3px}
  :root .att-heat-d,:root .att-heat-d.empty,:root .att-me .att-heat-d,:root .att-me .att-heat-d.empty{height:30px;border-radius:8px;font-size:12px}
  .att-heat-d.empty:nth-child(n+8){display:none}
  :root .att-me .att-heat-legend{padding:10px 14px 14px;gap:6px 10px;font-size:12px}
  .att-heat .card-head{padding:14px 14px 8px}
  /* последние отметки — строки-карточки без таблицы */
  :root .att-table--me{display:block;min-width:0;width:100%}
  .att-table--me thead,.att-table--me colgroup{display:none}
  .att-table--me tbody{display:flex;flex-direction:column;gap:8px;padding:0 12px 12px}
  :root .att-table--me tr{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"d d pen" "arr late zone";column-gap:14px;row-gap:6px;align-items:center;padding:12px 14px;border-radius:14px;background:var(--surface-3)}
  :root .att-table--me td,:root .att-table--me td:first-child{padding:0!important;border:0;background:none;white-space:nowrap}
  :root .att-table--me td:nth-child(1){grid-area:d}
  :root .att-table--me td:nth-child(2){grid-area:arr}
  :root .att-table--me td:nth-child(3){grid-area:late}
  :root .att-table--me td:nth-child(4){grid-area:zone;justify-self:end}
  :root .att-table--me td:nth-child(5){grid-area:pen;justify-self:end}
  :root .att-table--me td:nth-child(1) .n{font-size:14px;font-weight:700;color:var(--text)}
  :root .att-table--me tbody tr:hover>td{background:none}
  .att-me .tablewrap{overflow:visible}
  :root[data-theme="light"] .att-table--me tr{background:var(--surface-2)}
}

/* списки в модалках раскрываются внутри модалки, а не поверх — модалка не обрезает и не
   требует лишней прокрутки. Было только для телефона, но на десктопе то же самое: короткая
   модалка (например «Запрос исключения») + список дат прямо под первым полем — плавающий
   .dd-menu норовил вылезти ниже .modal (у неё overflow:hidden под фиксированную шапку/скролл
   тела), и обрезался. В потоке — раздвигает модалку/её скролл, но никогда не обрезается. */
:root .dq-modal .dd-menu,:root .tm-form-modal .dd-menu{position:static!important;inset:auto!important;transform:none!important;width:100%!important;min-width:0!important;margin-top:6px;max-height:210px;overflow-y:auto}

/* телефон: «Мои финансы» */
@media(max-width:640px){
  .mf-page .page-head{flex-direction:column;align-items:stretch;gap:12px}
  .mf-page .page-head .actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
  
  .mf-page .page-head .actions .btn .ico{width:15px}
  /* хиро «Мои финансы» на телефоне — как хиро дашборда на телефоне (.db-merged): без карточки,
     фон/тень/скругление убраны, цифры лежат прямо на градиентном пятне страницы, а не в пилюлях —
     .mf-orb уже даёт тёплое пятно у /для карты, просто делаем его заметнее (дашборд использует
     два пятна побольше — здесь обошлись одним увеличенным, тот же эффект, без правки разметки) */
  .mf-hero{padding:6px 2px 22px;gap:22px;overflow:visible;margin-bottom:-10px}
  .mf-orb{width:300px;height:300px;right:-70px;top:-70px;filter:blur(46px);background:radial-gradient(circle,rgba(255,93,0,.5),rgba(255,93,0,0) 68%)}
  .mf-hl .big{font-size:34px}
  .mf-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 16px}
  /* !important — в светлой теме есть более специфичное :root[data-theme="light"] .mf-chips .c
     (возвращает серый фон плашки), а мы тут сознательно фон убираем и паддинг тоже — без
     !important в светлой теме оставался фон впритык к цифре без отступов */
  .mf-chips .c{background:none!important;box-shadow:none!important;height:auto;padding:0;display:flex;flex-direction:column-reverse;align-items:flex-start;gap:2px}
  .mf-chips .c b{font-family:var(--font-display);font-size:26px;font-weight:800;letter-spacing:-.02em}
  /* Оклад — один в своём ряду, Премии и Штрафы — вдвоём в ряду под ним (оба и так уже без фона,
     см. правило .mf-chips .c выше — просто переставляем порядок строк) */
  .mf-chips .c:nth-child(1){grid-column:1/-1}
  .mf-chips .c:nth-child(2){order:2}
  .mf-chips .c:nth-child(3){order:3}
  /* «Выплачено»/«Аванс»/«Остаток» — в отличие от Оклад/Премии/Штрафы (те остаются прямо на
     градиенте, как цифры дашборда) эти просили оставить в белой карточке, не растворять в фоне */
  .mf-hr{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 16px;gap:18px}
  .mf-hr .mf-prog .bar{background:var(--surface-3)}
  .mf-prog .t{flex-direction:column-reverse;align-items:flex-start;gap:2px}
  .mf-prog .t b{font-family:var(--font-display);font-size:26px;font-weight:800;letter-spacing:-.02em}
  .mf-next{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 16px}
  .mf-next > div{background:none!important;box-shadow:none!important;padding:0;flex-direction:column-reverse;gap:2px}
  .mf-next b{font-size:26px;font-weight:800;letter-spacing:-.02em}
  .mf-sec .card-head{flex-wrap:wrap;padding:14px 14px 10px}
  .mf-sec .card-head .mf-tabs{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .mf-sec .card-head .mf-tabs::-webkit-scrollbar{display:none}
  
  .mf-reqs{padding:0 8px 8px}
  .mf-list{padding:12px 12px 12px;gap:8px}
  :root .mf-r,:root .mf-r:not(.mf-r--h):hover{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"o o a" "d ty x";column-gap:12px;row-gap:8px;align-items:center;padding:12px 14px;border:0;border-radius:14px;background:var(--surface-3)}
  :root .mf-r.mf-r--h{display:none}
  .mf-r .o{grid-area:o}
  .mf-r .a{grid-area:a;font-size:14px}
  .mf-r .d,.mf-r .mf-ty{display:inline-flex}
  .mf-r .d{grid-area:d;font-size:12.5px}
  .mf-r .mf-ty{grid-area:ty;justify-self:start}
  .mf-r .pay-hist-x{grid-area:x;align-self:center}
  .mf-r .o b{white-space:normal}
  :root[data-theme="light"] .mf-r{background:var(--surface-2)}
}

/* телефон: «Правила» — строки «название · значение» в один столбец, плотно, во всю ширину экрана */
@media(max-width:640px){
  /* карточки — во всю ширину экрана, без скругления и без бокового отступа страницы */
  :root .main[data-view="settings"] .sf-page{padding-left:0;padding-right:0}
  :root .main[data-view="settings"] .sf-wrap{gap:10px}
  :root .main[data-view="settings"] .sf-card{border-radius:0;padding-top:12px;padding-bottom:8px}
  :root .main[data-view="settings"] .sf-card--grid .sf-head{margin:0 10px 6px}
  :root .main[data-view="settings"] .sfg,:root .main[data-view="settings"] .sfg--3,:root .main[data-view="settings"] .sfg--1{display:flex;flex-direction:column;gap:3px;grid-template-columns:none;padding-top:4px}
  :root .main[data-view="settings"] .sfg-cell{width:100%;min-height:0;flex-direction:row;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px}
  /* множитель — свои более компактные плашки, высоту не трогаем */
  :root .main[data-view="settings"] .sfg-cell--mult{padding-top:9px;padding-bottom:9px}
  :root .main[data-view="settings"] .sfg-cell:empty{display:none}
  :root .main[data-view="settings"] .sfg-name{flex:1;min-width:0;font-size:14px;padding-right:0}
  :root .main[data-view="settings"] .sfg-val{flex:none;white-space:nowrap;text-align:right;align-items:center}
  :root .main[data-view="settings"] .sfg-num{font-size:20px}
  /* карандаш правки — обратно в поток рядом со значением, а не поверх него (был position:absolute с десктопа) */
  :root .main[data-view="settings"] .sfg-edit{position:static;opacity:1;margin-left:2px}
  :root .main[data-view="settings"] .sf-card{padding-left:0;padding-right:0}
  :root .main[data-view="settings"] .sf-head{margin-left:10px;margin-right:10px}
  
  :root .main[data-view="settings"] .sfg,:root .main[data-view="settings"] .sfg--3,:root .main[data-view="settings"] .sfg--1{padding-left:10px;padding-right:10px}
  :root .main[data-view="settings"] .sf-card--geo .sf-body{padding-top:12px}
  /* геозона: отступ между подписью координат и картой ниже — было 28px (grid-gap десктопной раскладки) */
  :root .main[data-view="settings"] .sf-geo{gap:10px}
  /* «Премии» и «Норматив часов» друг под другом — тот же зазор, что между остальными блоками */
  :root .main[data-view="settings"] .sf-row2{gap:10px}
  /* заголовок страницы — свой отступ слева, т.к. у страницы теперь нет бокового паддинга */
  :root .main[data-view="settings"] .page-head{padding-left:10px;padding-right:10px}
  /* внизу страницы было зарезервировано место под плавающую плашку «Сохранить» с запасом — многовато,
     когда её нет на экране; нижнему меню достаточно и меньшего отступа */
  /* .main уже резервирует 96px под нижнее меню (см. общее правило .main{padding-bottom:...}) —
     здесь добавляем только небольшую доп. надбавку, чтобы плавающая плашка «Сохранить» (когда видна)
     тоже не перекрывала последнюю плашку, а не второй такой же отступ поверх него */
  :root .main[data-view="settings"] .sf-page{padding-bottom:calc(40px + env(safe-area-inset-bottom,0px))}
  /* светлая тема: карточка-блок сливается со страницей (без белой заливки и тени), а сами плашки —
     наоборот, белые, вместо серых на белом */
  :root[data-theme="light"] .main[data-view="settings"] .sf-card{background:transparent;box-shadow:none}
  /* тень такая же по форме, как у активной карточки расхода в «Расходах» — 0 8px 16px -8px,
     нейтрального цвета — у .sfg-cell своей рамки нет */
  
  
  /* тёмная тема — та же логика: блок сливается со страницей, а плашки берут себе прежний цвет блока */
  :root:not([data-theme="light"]) .main[data-view="settings"] .sf-card{background:transparent;box-shadow:none}
  
  
}

/* телефон: «Расходы» — те же отступы от края экрана, что на «Базе знаний»/«Настройках правил» (10px
   вместо общих 16px у .sf-page) — карточки и плашки становятся немного шире */
@media(max-width:640px){
  :root .main[data-view="expenses"] .sf-page{padding-left:10px;padding-right:10px}
  /* отступы между заголовком/плашками/блоком ниже — как на дашборде, а не общие 18px у .sf-wrap */
  :root .main[data-view="expenses"] .sf-wrap{gap:10px}
  /* сводка на телефоне без карточки (на десктопе плашка-карточка нужна и остаётся) —
     свой внутренний паддинг плашек больше не выровнен с остальным текстом страницы,
     подгоняем крайние отступы под те же 10px */
  
  
  
  
  /* плашка количества рядом с «Ожидают/Оплачено/Отклонено» — на телефоне белая с чёрными цифрами */
  

  /* та же логика, что на «Базе знаний»/«Настройках правил»: блок сливается со страницей (без
     фона и тени), а отдельные плашки внутри берут себе прежний цвет блока */
  
  /* тень такая же по форме, как у активной (оранжевой) карточки очереди — 0 8px 16px -8px,
     только нейтрального цвета, а не акцентного — у плашек своей рамки нет */
  :root[data-theme="light"] .main[data-view="expenses"] .exq-mdrow:not(.active){background:#fff;box-shadow:0 8px 16px -8px rgba(0,0,0,.35)}
  :root:not([data-theme="light"]) .main[data-view="expenses"] .exq-mdrow:not(.active){background:var(--surface-2)}
  :root .main[data-view="expenses"] .exq-mdrow:hover:not(.active){background:var(--surface-3)}

  /* «Детали заявки» — уже сама по себе одна плашка (не список, как «Категории» на базе знаний),
     рамку убираем, тень усиливаем до той же формы, что у активной карточки очереди */
  
  

  :root .main[data-view="expenses"] .exq-hist-card{background:transparent;border:0;box-shadow:none;padding:0}
  :root .main[data-view="expenses"] .exq-hist-card .card-head{padding-left:0;padding-right:0}
  /* Тип+Сотрудник в одной строке (Сотрудник шире, чем базовая половина), Проект+Дата — рядом
     в следующей строке, та же сетка колонок */
  
  
  /* сам триггер компактный (под сетку), а раскрытое меню — по содержимому, иначе длинные
     названия проектов переносятся и налезают друг на друга в сжатом до триггера меню */
  
  
  
  /* «Проект» — длинные названия, раскрытому списку нужно больше места, чем остальным трём */
  
  
  
  /* попап календаря на телефоне: остаётся у самого фильтра (сверху или снизу — как раньше),
     но шире самого триггера (тот всего 180px) — растягиваем влево от правого края карточки,
     без внутреннего скролла (высота свободная, под весь контент) */
  :root .main[data-view="expenses"] .exq-hist-card .pay-hist-period .rc-pop{
    left:auto;right:0;width:min(340px,calc(calc(100vw * var(--vz,1)) - 20px));max-width:none;max-height:none;overflow:visible}
  :root .main[data-view="expenses"] .exq-hist-list{gap:6px}
  :root .main[data-view="expenses"] .exq-hist-head{display:none}
  :root .main[data-view="expenses"] .exq-hist{border-radius:14px;overflow:hidden}
  /* кебаб в свёрнутой карточке (мало высоты) часто открывается вверх — меню обрезалось
     overflow:hidden самой карточки. Снимаем обрезку только пока меню открыто и поднимаем
     карточку над соседними, чтобы меню не пряталось под следующей плашкой */
  :root .main[data-view="expenses"] .exq-hist:has(.dd.open){overflow:visible;position:relative;z-index:5}
  :root .main[data-view="expenses"] .exq-hist-row{border-top:0}
  :root[data-theme="light"] .main[data-view="expenses"] .exq-hist{background:#fff;box-shadow:0 8px 16px -8px rgba(0,0,0,.35)}
  :root:not([data-theme="light"]) .main[data-view="expenses"] .exq-hist{background:var(--surface-2)}
  :root[data-theme="light"] .main[data-view="expenses"] .exq-hist.open .exq-hist-row,
  :root[data-theme="light"] .main[data-view="expenses"] .exq-hist-body{background:#fff}
  :root:not([data-theme="light"]) .main[data-view="expenses"] .exq-hist.open .exq-hist-row,
  :root:not([data-theme="light"]) .main[data-view="expenses"] .exq-hist-body{background:var(--surface-2)}
}

/* телефон: создание проекта (8 шагов) */
@media(max-width:640px){
  :root .main[data-view="newproject"] .page{padding:14px 12px calc(96px + env(safe-area-inset-bottom,0px))}
  :root .main[data-view="newproject"] .page-head{flex-direction:row;align-items:center;justify-content:space-between;gap:10px}
  :root .main[data-view="newproject"] .page-head h1{font-size:24px}
  .wz-steps-card{padding:14px}
  .wz-gauge-row{gap:12px}
  /* «Дополнительные условия» (шаг «Правила») — 42px хватало ровно на 1 строку; на телефоне поле
     уже, длинный текст из демо-данных заворачивается на 2-ю строку и обрезался (высота меняется
     на 2 строки только при вводе, см. oninput в разметке — при первой отрисовке не пересчитывалась) */
  
  /* эта рейка шагов пережила 4 редизайна подряд (см. комментарии «v3»/«v4» выше по файлу) — три
     старых блока `:root .wz-steps{...}` остались в файле мёртвым кодом, и последний из них (v4)
     задаёт overflow:visible. Он той же специфичности, что и вот это мобильное правило ниже, и стоит
     ПОСЛЕ него в файле — поэтому overflow-x:auto тут молча проигрывал (flex-wrap:nowrap выше
     выигрывал только потому, что был !important), рейка не скроллилась, а всей ширины не хватало —
     шаги после 3-4-го были просто недоступны на телефоне. Добавил !important туда же. */
  .wz-steps{flex-wrap:nowrap!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch;scrollbar-width:none;justify-content:flex-start}
  .wz-steps::-webkit-scrollbar{display:none}
  .wz-steps .st{flex:none!important;white-space:nowrap}
  :root .main[data-view="newproject"] .wz-shell{padding:0}
  .wz-shell-body{padding:16px 14px}
  :root .main[data-view="newproject"] .wz-foot{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 14px 14px}
  .wz-foot .wz-draft{display:none}
  .wz-foot .btn{width:100%}
  :root .main[data-view="newproject"] .page .dd{width:100%}
:root .main[data-view="newproject"] .page .dd-trigger:not(.tm-kb){width:100%}
  :root .main[data-view="newproject"] .page input.in,:root .main[data-view="newproject"] .page textarea.in{width:100%;max-width:100%}
}

@media(max-width:640px){
  .wz-steps{position:relative}
  .wz-two,.wz-two--pf{grid-template-columns:minmax(0,1fr)!important}
  .wz-vc-h{flex-wrap:wrap;gap:8px}
  .wz-vc-h > :first-child{flex-basis:100%}
  .wz-pf-other{max-width:100%}
}

@media(max-width:640px){
  .tkp-r{grid-template-columns:minmax(0,1fr) auto;gap:14px}
  .tkp-r b{text-align:right}
  .tkp-top{flex-direction:column;gap:6px}
  .tkp-d{max-width:none;text-align:left}
  .wz-legal{hyphens:none;-webkit-hyphens:none;overflow-wrap:normal;word-break:normal}
}

/* телефон: зарплаты — ведомость и история карточками вместо широких таблиц */
@media(max-width:640px){
  .pay-sheet,.pay-hist{overflow:visible!important}
  :root .pay-sh-head,:root .pay-hist-head{display:none!important}
  .pay-sh-row{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"u u act" "ok pr pe" "pd rem rem";gap:10px 12px;align-items:start;margin:0 12px 8px;padding:14px;border:0!important;border-radius:16px;background:var(--surface-3);min-width:0!important}
  .pay-sh-row > .pay-sh-u{grid-area:u;min-width:0}
  .pay-sh-row > .pay-sh-act{grid-area:act;justify-self:end}
  .pay-sh-row > .s-ok{grid-area:ok}.pay-sh-row > .s-pr{grid-area:pr}.pay-sh-row > .s-pe{grid-area:pe}.pay-sh-row > .s-pd{grid-area:pd}.pay-sh-row > .strong{grid-area:rem;text-align:right}
  .pay-sh-row > .pay-sh-v{display:flex;flex-direction:column;gap:2px;text-align:left;font-size:14px;white-space:nowrap}
  .pay-sh-row > .pay-sh-v::before{font-size:11.5px;font-weight:500;color:var(--muted)}
  .pay-sh-row > .s-ok::before{content:"Оклад"}.pay-sh-row > .s-pr::before{content:"Премии"}.pay-sh-row > .s-pe::before{content:"Штрафы"}.pay-sh-row > .s-pd::before{content:"Выплачено"}.pay-sh-row > .strong::before{content:"К выплате"}
  .pay-sh-row > .strong{align-items:flex-end;font-size:16px}
  /* колонки minmax(0,auto), а не голый auto — иначе «o» (основание+строка отмены), которая
     растягивается на все 3 колонки, могла раздуть auto-колонки под свой max-content и вылезти
     за край экрана у длинных текстов (например, отменённый штраф с причиной отмены) */
  .pay-hist-row{display:grid!important;grid-template-columns:minmax(0,auto) minmax(0,1fr) minmax(0,auto);grid-template-areas:"u u a" "o o o" "d ty x";gap:8px 12px;align-items:center;margin:0 12px 8px;padding:14px;border:0!important;border-radius:16px;background:var(--surface-3);min-width:0!important}
  .pay-hist-row > .pay-hist-u{grid-area:u;min-width:0}
  .pay-hist-row > .pay-hist-o{grid-area:o;margin:0!important;display:block;-webkit-line-clamp:unset;overflow:visible}
  .pay-hist-row > .pay-hist-d{grid-area:d}
  .pay-hist-row > .pay-hist-a{grid-area:a;justify-self:end;font-size:15px}
  .pay-hist-row > .pay-hist-x{grid-area:x;justify-self:end}
  .pay-hist-foot{flex-wrap:wrap;gap:10px;padding:12px 14px}
  .pay-hist-foot-l,.pay-hist-pg{flex-wrap:wrap;gap:8px}
  /* та же тень, что у карточек на «Базе знаний»/«Настройках»/«Расходах» (0 8px 16px -8px) —
     плашки здесь были плоские, без неё */
  :root[data-theme="light"] .pay-sh-row,:root[data-theme="light"] .pay-hist-row{background:var(--surface-2);box-shadow:0 8px 16px -8px rgba(0,0,0,.35)}
}

/* телефон: «Зарплаты» — та же схема, что на «Базе знаний»/«Настройках»/«Расходах»: страница
   с отступом 10px по краям, карточки-обёртки сливаются со страницей (без фона/тени), а их
   содержимое — сводка, тулбары, строки списков — берёт то, что раньше было цветом карточки. */
@media(max-width:640px){
  :root .main[data-view="payroll"] .sf-page{padding-left:10px;padding-right:10px}
  :root .main[data-view="payroll"] .sf-wrap{gap:10px}

  /* «Требует выплаты» — список строк-действий, как «Очередь» на Расходах */
  
  :root .main[data-view="payroll"] .pay-todo .card-head{padding-left:0;padding-right:0;padding-top:12px;padding-bottom:8px;border-bottom:0;align-items:flex-start}
  :root .main[data-view="payroll"] .pay-todo-list{gap:6px}
  :root .main[data-view="payroll"] .pay-todo-row{border-top:0;border-radius:14px}
  :root[data-theme="light"] .main[data-view="payroll"] .pay-todo-row{background:#fff;box-shadow:0 8px 16px -8px rgba(0,0,0,.35)}
  :root:not([data-theme="light"]) .main[data-view="payroll"] .pay-todo-row{background:var(--surface-2)}
  /* отступ под блоком — свой, больше общего зазора между карточками (margin поверх
     gap:10px у .sf-wrap, только под этим блоком) */
  :root .main[data-view="payroll"] .pay-todo{margin-bottom:4px}
  /* сумма в «Требует выплаты» была жирнее (700) и без учёта общего масштаба текста —
     тот же размер/начертание, что у суммы в «Истории» на Расходах */
  :root .main[data-view="payroll"] .pay-todo-v .mono{font-size:15px;font-weight:600}

  /* на телефоне история без пагинации — сразу все карточки, футер «На странице/Пред/След» не нужен */
  :root .main[data-view="payroll"] .pay-hist-foot{display:none}
  /* «Ведомость» и «История операций» — обёртки прозрачные, сводка/тулбар/строки вровень с полями страницы */
  :root .main[data-view="payroll"] .pay-sheet-card,:root .main[data-view="payroll"] .pay-hist-card{background:transparent;border:0;box-shadow:none}
  :root .main[data-view="payroll"] .pay-sheet-card .card-head,:root .main[data-view="payroll"] .pay-hist-card .card-head{padding-left:0;padding-right:0}
  :root .main[data-view="payroll"] .pay-sheet-card .card-head{padding-bottom:0}
  
  
  :root .main[data-view="payroll"] .pay-sh-sum-col{padding-left:0;padding-right:0}
  :root .main[data-view="payroll"] .pay-hist-foot{padding-left:0;padding-right:0}
  /* размер цифр/подписей сводки — как в сводке «Ожидают/Оплачено/Отклонено» на Расходах */
  :root .main[data-view="payroll"] .pay-sh-sum-i .v{font-size:30px}
  :root .main[data-view="payroll"] .pay-sh-sum-i .l{font-size:14px}
  :root .main[data-view="payroll"] .pay-sh-sum-i{gap:2px}

  /* фильтры «Ведомости» и «Истории операций» — та же сетка 2 колонки, что в «Истории» на
     Расходах: поиск на всю ширину сверху, Отдел+Сортировка рядом снизу */
  
  
  
  
  
  

  /* Категория+Сотрудник в одной строке (Сотрудник — колонка пошире под фикс. ширину, как
     «Дата» в Расходах), Отдел+Дата — рядом в следующей, та же сетка колонок */
  
  
  
  
  /* «Сотрудник» — как «Проект» в Расходах: имена длиннее остальных, раскрытому списку нужно больше места */
  
  
  
  :root .main[data-view="payroll"] .pay-hist-card .pay-hist-period .rc-pop{
    left:auto;right:0;width:min(340px,calc(calc(100vw * var(--vz,1)) - 20px));max-width:none;max-height:none;overflow:visible}

  /* «Ведомость» — календарь месяца справа в шапке карточки; общее мобильное правило
     анкерит попап от левого края триггера (расчёт на триггер слева), а этот — справа,
     из-за чего попап уезжал за правый край экрана */
  :root .main[data-view="payroll"] .pay-sh-acts .rc-pop{left:auto;right:0;width:min(300px,calc(calc(100vw * var(--vz,1)) - 20px));max-width:none}
  /* строки списков — свой цвет плашки, ровно на 10px странице (было margin:0 12px под старую
     раскладку со сплошным белым фоном карточки вокруг) */
  :root .main[data-view="payroll"] .pay-sh-row:not(.pay-sh-head),
  :root .main[data-view="payroll"] .pay-hist-row:not(.pay-hist-head){margin-left:0;margin-right:0}
  :root[data-theme="light"] .main[data-view="payroll"] .pay-sh-row:not(.pay-sh-head),
  :root[data-theme="light"] .main[data-view="payroll"] .pay-hist-row:not(.pay-hist-head){background:#fff}
  /* «К выплате» в «Ведомости» была крупнее и жирнее (16/700) остальных сумм в приложении —
     тот же размер/начертание, что у суммы в «Истории» на Расходах */
  :root .main[data-view="payroll"] .pay-sh-row > .strong{font-size:15px;font-weight:600}
}
/* телефон: «Посещаемость» — та же схема, что на «Зарплатах»/«Расходах»/«Базе знаний»/«Настройках»:
   отступ 10px по краям страницы, карточки-обёртки сливаются со страницей, а их содержимое —
   списки запросов, сводка, строки таблиц — берёт цвет и тень бывшей карточки. */
@media(max-width:640px){
  :root .main[data-view="attendance"] .sf-page{padding-left:10px;padding-right:10px}
  :root .main[data-view="attendance"] .sf-wrap{gap:10px}

  /* «Мои запросы» / «Запросы-исключения» — тот же компонент, что «Требует выплаты» на Зарплатах */
  
  :root .main[data-view="attendance"] .pay-todo .card-head{padding-left:0;padding-right:0;border-bottom:0}
  :root .main[data-view="attendance"] .pay-todo-list{gap:6px}
  :root .main[data-view="attendance"] .pay-todo-row{border-top:0;border-radius:14px}
  :root[data-theme="light"] .main[data-view="attendance"] .pay-todo-row{background:#fff;box-shadow:0 8px 16px -8px rgba(0,0,0,.35)}
  :root:not([data-theme="light"]) .main[data-view="attendance"] .pay-todo-row{background:var(--surface-2)}

  /* «Журнал прихода» / «Последние отметки» — обёртка прозрачная, шапка/фильтр/строки вровень со страницей */
  
  :root .main[data-view="attendance"] .att-card .card-head{padding-left:0;padding-right:0;flex-wrap:wrap;row-gap:8px}
  :root .main[data-view="attendance"] .pay-sh-sum-col{padding-left:0;padding-right:0}
  :root .main[data-view="attendance"] .att-filter-row{padding-left:0;padding-right:0;padding-top:8px}
  :root .main[data-view="attendance"] .att-me-foot{padding-left:0;padding-right:0}
  :root .main[data-view="attendance"] .att-table:not(.att-table--me) tbody,
  :root .main[data-view="attendance"] .att-table--me tbody{padding:0}
  /* та же тень, что у плашек на Зарплатах/Расходах/Базе знаний/Настройках */
  :root[data-theme="light"] .main[data-view="attendance"] .att-table:not(.att-table--me) tr,
  :root[data-theme="light"] .main[data-view="attendance"] .att-table--me tr{background:#fff;box-shadow:0 8px 16px -8px rgba(0,0,0,.35)}
}

/* телефон: посещаемость директора — строки карточками, ГРИД (не flex-wrap): раньше короткие/
   пустые значения («—», «нет отметки») занимали разное место в зависимости от того, что рядом
   успело влезть на строку, да ещё и без подписи было не понять, что есть что. Теперь у каждого
   поля своя постоянная ячейка + мелкая подпись сверху — одинаково на любой карточке. */
@media(max-width:640px){
  :root .att-table:not(.att-table--me){display:block;min-width:0!important;width:100%}
  .att-table:not(.att-table--me) thead,.att-table:not(.att-table--me) colgroup{display:none}
  .att-table:not(.att-table--me) tbody{display:flex;flex-direction:column;gap:8px;padding:0 12px 12px}
  :root .att-table:not(.att-table--me) tr{position:relative;display:grid;grid-template-columns:1fr 1fr;column-gap:12px;row-gap:10px;align-items:start;padding:12px 14px 10px;border-radius:14px;background:var(--surface-3)}
  :root .att-table:not(.att-table--me) td{padding:0!important;border:0;background:none;min-width:0}
  :root .att-table:not(.att-table--me) tbody tr:hover>td{background:none}
  .att-card .tablewrap{overflow:visible}
  :root[data-theme="light"] .att-table:not(.att-table--me) tr{background:var(--surface-2)}
  /* кебаб живёт в разметке внутри последней ячейки (Штраф), но визуально должен быть в правом
     верхнем углу карточки, рядом со строкой сотрудника — вынимаем его из потока абсолютным
     позиционированием (.dd-меню у него своё, позиционируется от самого .tm-kebab, а не от tr,
     так что с переносом ничего не ломается) */
  :root .att-table:not(.att-table--me) .att-pen-cell{position:static!important}
  :root .att-table:not(.att-table--me) .att-pen-cell .tm-kebab{position:absolute;top:12px;right:14px;margin-left:0}

  /* подписанные поля: подпись сверху мелким, значение снизу — везде в одном и том же месте карточки */
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(2),
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(3),
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(4),
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(5),
  :root .att-table.att-table--wide td:nth-child(2),
  :root .att-table.att-table--wide td:nth-child(3),
  :root .att-table.att-table--wide td:nth-child(4),
  :root .att-table.att-table--wide td:nth-child(5),
  :root .att-table.att-table--wide td:nth-child(6){display:flex;flex-direction:column;align-items:flex-start;gap:3px}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(2)::before,
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(3)::before,
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(4)::before,
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(5)::before,
  :root .att-table.att-table--wide td:nth-child(2)::before,
  :root .att-table.att-table--wide td:nth-child(3)::before,
  :root .att-table.att-table--wide td:nth-child(4)::before,
  :root .att-table.att-table--wide td:nth-child(5)::before,
  :root .att-table.att-table--wide td:nth-child(6)::before{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}
  :root .att-table:not(.att-table--me) td:last-child{display:flex;flex-direction:column;gap:5px;grid-column:1/-1;padding-top:8px!important;margin-top:2px;border-top:1px solid color-mix(in srgb,var(--text) 10%,transparent)}
  :root .att-table:not(.att-table--me) td:last-child::before{content:'Штраф';font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}

  /* офис — 6 колонок: сотрудник / график / приход / опоздание / зона / штраф */
  :root .att-table:not(.att-table--wide):not(.att-table--me) tr{grid-template-areas:"user user" "sch arr" "late zone" "pen pen"}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(1){grid-area:user}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(2){grid-area:sch}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(3){grid-area:arr}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(4){grid-area:late}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(5){grid-area:zone}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(6){grid-area:pen}
  /* .att-zone — пилюля с padding:3px 8px, поэтому текст в ней начинается на 8px правее подписи
     над ней — оттягиваем пилюлю назад, чтобы её текст встал вровень с «ЗОНА» */
  
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(2)::before{content:'График'}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(3)::before{content:'Приход'}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(4)::before{content:'Опоздание'}
  :root .att-table:not(.att-table--wide):not(.att-table--me) td:nth-child(5)::before{content:'Зона'}

  /* съёмки — 7 колонок: + проект своей строкой */
  :root .att-table.att-table--wide tr{grid-template-areas:"user user" "proj proj" "sch arr" "late zone" "pen pen"}
  :root .att-table.att-table--wide td:nth-child(1){grid-area:user}
  :root .att-table.att-table--wide td:nth-child(2){grid-area:proj}
  :root .att-table.att-table--wide td:nth-child(3){grid-area:sch}
  :root .att-table.att-table--wide td:nth-child(4){grid-area:arr}
  :root .att-table.att-table--wide td:nth-child(5){grid-area:late}
  :root .att-table.att-table--wide td:nth-child(6){grid-area:zone}
  :root .att-table.att-table--wide td:nth-child(7){grid-area:pen}
  :root .att-table.att-table--wide td:nth-child(2)::before{content:'Проект'}
  :root .att-table.att-table--wide td:nth-child(3)::before{content:'График'}
  :root .att-table.att-table--wide td:nth-child(4)::before{content:'Приход'}
  :root .att-table.att-table--wide td:nth-child(5)::before{content:'Опоздание'}
  :root .att-table.att-table--wide td:nth-child(6)::before{content:'Зона'}

  /* инвентарь и подрядчики: KPI в 2 колонки */
  .pj-kpis--3{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .pj-kpis--3 .pj-kpi:last-child:nth-child(odd){grid-column:1 / -1}
}

/* телефон: дашборд директора — «Сегодня по часам» */
@media(max-width:640px){
  
  
  
  .db-page{padding:14px 12px calc(96px + env(safe-area-inset-bottom,0px))}
  .db-q{flex-wrap:wrap}
  /* страница проекта — тот же .db-page, что у дашборда, но внизу там ещё был текст-версия
     (убрали отдельно) и снизу оставался явно больше воздуха, чем нужно нижней навигации
     (66px высотой) — снизили запас, дашборд не трогаем (там своя структура последнего блока). */
  :root .main[data-view="projects"] .db-page{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
}

/* телефон: подиум команды помещается в ширину. overflow:hidden раньше резало декоративное
   оранжевое свечение (.tm-podium::before, 520×260px) точно по краю контейнера — слева/справа
   жёсткой стеной, снизу тоже (бокс свечения выше, чем реальная высота подиума на телефоне).
   .main{overflow-x:hidden} на телефоне уже не даёт странице уехать вбок, так что здесь можно
   спокойно снять обрезку — свечение само мягко гаснет (radial-gradient + blur) у собственных
   краёв, если их не обрезать раньше времени. */
@media(max-width:640px){
  :root .tm-top3{max-width:100%;overflow:visible}
  :root .tm-podium{gap:8px;padding:40px 10px 16px;width:100%;box-sizing:border-box}
  :root .tm-podium-col{flex:1 1 0;min-width:0}
  .tm-podium-person{min-width:0;max-width:100%}
  .tm-podium-name{font-size:12px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tm-podium-xp{font-size:11.5px}
  .tm-card-top{min-width:0}
}

/* телефон: страница «Команда» — те же поля по краям, что на Зарплатах/Расходах/Базе знаний/
   Настройках (16px базовых → 10px), тот же отступ под заголовком, фильтр-департамент шире
   (раньше уже раскрытого меню — «Все департаменты» переносилось на 2 строки) */
@media(max-width:640px){
  :root .main[data-view="team"] .sf-page{padding-left:10px;padding-right:10px}
  :root .main[data-view="team"] .pj-sec{margin-top:-8px}
  :root .main[data-view="team"] #teamDeptFilter{width:220px}
  :root .main[data-view="team"] #teamDeptFilter .dd-trigger{width:220px}
}

/* телефон: цифры в плашках KPI не вылезают за край */
@media(max-width:640px){
  :root .main[data-view] .pj-kpi .v{font-size:24px!important;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pj-kpi{min-width:0}
}

/* телефон: Инвентарь/Подрядчики/Локации/Клиенты — те же поля по краям и отступ под заголовком,
   что на Команде/Зарплатах/Расходах/Базе знаний/Настройках (эти страницы вообще не получали
   мобильной доводки раньше — используют .page, не .sf-page, поэтому и селекторы другие) */
@media(max-width:640px){
  :root .main[data-view="gear"] .page,
  :root .main[data-view="actors"] .page,
  :root .main[data-view="locations"] .page,
  :root .main[data-view="clients"] .page{padding-left:10px;padding-right:10px;gap:14px}
  :root .main[data-view="gear"] .pj-sec,
  :root .main[data-view="actors"] .pj-sec,
  :root .main[data-view="locations"] .pj-sec,
  :root .main[data-view="clients"] .pj-sec{margin-top:-6px}
}

/* телефон: Инвентарь/Подрядчики/Локации/Клиенты — кнопка «Добавить» переезжает из тулбара с
   фильтрами в шапку страницы, рядом с названием (как «Добавить расход»/«Добавить документ» на
   Расходах/Базе знаний). Разметка одна и та же на всех ширинах — рендерим кнопку дважды (десктопная
   версия внутри .pj-sec-r как была, мобильная — новая, в .page-head) и просто переключаем
   видимость по ширине, а не двигаем один и тот же узел через CSS-позиционирование. */
.pj-mobadd{display:none}
@media(max-width:640px){
  :root .main[data-view="gear"] .pj-mobadd,
  :root .main[data-view="actors"] .pj-mobadd,
  :root .main[data-view="locations"] .pj-mobadd,
  :root .main[data-view="clients"] .pj-mobadd{display:flex;margin-left:auto}
  :root .main[data-view="gear"] .pj-sec-r,
  :root .main[data-view="actors"] .pj-sec-r,
  :root .main[data-view="locations"] .pj-sec-r,
  :root .main[data-view="clients"] .pj-sec-r{display:none}
}

/* телефон: те же три страницы — цифры сводки вверху (Позиций/Стоимость/…) без карточки-плашки,
   крупное число без рамки/фона, обычная (не капсом) подпись сверху — по образцу сводки на
   Расходах/Зарплатах (.exq-stat). В 3 колонки в ряд (не 2+перенос третьей на всю ширину, как
   у общего мобильного правила `.pj-kpis--3` чуть выше — тут явно просили именно 3 в ряд), поэтому
   размер числа меньше, чем при 2 колонках (иначे не помещается) — взял тот же 22px, что и на
   Посещаемости у неё тоже 3 KPI в ряд на телефоне. */
@media(max-width:640px){
  :root .main[data-view="actors"] .pj-kpis--3,
  :root .main[data-view="locations"] .pj-kpis--3{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:8px}
  :root .main[data-view="actors"] .pj-kpis--3 .pj-kpi:last-child:nth-child(odd),
  :root .main[data-view="locations"] .pj-kpis--3 .pj-kpi:last-child:nth-child(odd){grid-column:auto}
  /* Инвентарь: «Позиций» и «Занято сегодня» в один ряд, «Стоимость» — отдельной строкой под
     ними (просили только для телефона, на десктопе все три остаются в ряд как были) — порядок
     в разметке не трогаем (там Позиций/Стоимость/Занято сегодня), просто визуально переставляем */
  :root .main[data-view="gear"] .pj-kpis--3{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px}
  :root .main[data-view="gear"] .pj-kpi:nth-child(2){order:3;grid-column:1/-1}
  /* «Занято сегодня» тут физически последний ребёнок (3-й), поэтому его же ловит общее
     правило .pj-kpi:last-child:nth-child(odd){grid-column:1/-1} чуть выше — сбрасываем
     обратно на auto, иначе оба «раздвинутых» блока (этот и «Стоимость») не давали
     «Позиций»/«Занято сегодня» встать в один ряд, и всё расползалось в 3 строки */
  :root .main[data-view="gear"] .pj-kpi:nth-child(3){order:2;grid-column:auto}
  :root .main[data-view="gear"] .pj-kpi,
  :root .main[data-view="actors"] .pj-kpi,
  :root .main[data-view="locations"] .pj-kpi,
  :root .main[data-view="attendance"] .pj-kpi{background:transparent!important;box-shadow:none!important;padding:0 0 2px;min-width:0}
  :root .main[data-view="gear"] .pj-kpi .l,
  :root .main[data-view="actors"] .pj-kpi .l,
  :root .main[data-view="locations"] .pj-kpi .l,
  :root .main[data-view="attendance"] .pj-kpi .l{font-size:12px;font-weight:600;text-transform:none;letter-spacing:0;color:var(--muted)}
  :root .main[data-view="gear"] .pj-kpi .v,
  :root .main[data-view="actors"] .pj-kpi .v,
  :root .main[data-view="locations"] .pj-kpi .v,
  :root .main[data-view="attendance"] .pj-kpi .v{font-size:22px!important;font-weight:700;line-height:1.3;white-space:normal;overflow:visible;text-overflow:clip}
}

/* телефон: Клиенты — тот же принцип (цифры сводки без плашки-карточки), но тут 4 KPI, не 3 —
   сетка уже даёт 2×2 общим правилом `.pj-kpis{grid-template-columns:repeat(2,...)}` при
   max-width:900px, колонка шире, чем при 3-в-ряд у Инвентаря/Подрядчиков/Локаций, поэтому число
   можно чуть крупнее; значения тут всегда короткие (NPS/счётчики), в перенос не упираются. */
@media(max-width:640px){
  :root .main[data-view="clients"] .pj-kpi{background:transparent!important;box-shadow:none!important;padding:0 0 2px;min-width:0}
  :root .main[data-view="clients"] .pj-kpi .l{font-size:12px;font-weight:600;text-transform:none;letter-spacing:0;color:var(--muted)}
  :root .main[data-view="clients"] .pj-kpi .v{font-size:26px!important;font-weight:700;line-height:1.3;white-space:normal;overflow:visible;text-overflow:clip}
}

/* эти же три страницы (десктоп и телефон) — карточки позиций/подрядчиков/локаций в тёмной теме
   не должны получать акцентную рамку-обводку при наведении/тапе (общее правило чуть ниже даёт её
   всем .pj-card в тёмной теме, включая карточки клиентов — там оставляем как есть, тут явно
   попросили убрать только для этих трёх). Подсветка при наведении остаётся, но той же, что и в
   светлой теме (просто тень, без обводки) — карточка всё ещё «приподнимается» (transform у
   .pj-card:hover не трогаем). */


/* телефон: Финансы — страница вообще не получала мобильной доводки. Шапка: статус+«Обновить»
   в одну строку (они короткие, помещаются), «Подключить таблицы» — во всю ширину отдельной
   строкой (было 3 строки вподряд — статус, потом каждая кнопка отдельно). Геройская сумма
   («861,5 млн») на 46px не помещалась в одну строку на узкой карточке и «млн» перескакивало
   само по себе на вторую строку — уменьшил размер под мобильный. */
@media(max-width:640px){
  :root .main[data-view="finance"] .page{padding-left:10px;padding-right:10px}
  :root .main[data-view="finance"] .page-head{flex-direction:column;align-items:stretch;gap:10px}
  :root .main[data-view="finance"] .page-head .actions{margin-left:0;width:100%;flex-wrap:wrap;gap:8px 10px}
  :root .main[data-view="finance"] .page-head .actions .fin-st{flex:1 1 auto;order:1;min-width:0}
  :root .main[data-view="finance"] .page-head .actions .btn--edit{order:2;flex:none}
  :root .main[data-view="finance"] .page-head .actions .kb-add{order:3;width:100%}
  
  
  /* .top — flex space-between с меткой+суммой слева и легендой «Доходы/Расходы» справа; на
     десктопе места хватало обеим, на телефоне легенда поджимала блок с суммой настолько, что
     «861,5 млн» переносилось само на 2 строки даже при уменьшенном шрифте — просто роняем
     легенду под сумму вместо того чтобы делить с ней одну строку */
  
}

/* телефон: база знаний — название целиком, метка категории под ним */
@media(max-width:640px){
  .kb-acc-hd{display:grid!important;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"t chev" "b b";gap:6px 10px;align-items:center}
  .kb-acc-hd > .grow{grid-area:t;min-width:0}
  .kb-acc-hd .t{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;line-height:1.3}
  .kb-acc-hd > .badge{grid-area:b;justify-self:start}
  .kb-acc-hd > svg{grid-area:chev}
}

/* база знаний: .kb-side/.kb-main складываются в 1 колонку начиная с 820px (см. .kb-grid выше) —
   плашки и отступы блоков нужно уравнивать от той же ширины, а не только на «телефонных» 640px,
   иначе на промежуточных ширинах (641–820px) кусок правил не применялся и плашка документа
   опять оказывалась уже плашки категории. */
@media(max-width:820px){
  /* блок «Документы» сливается со страницей, а плашки документов берут себе прежний цвет блока —
     та же логика, что на «Настройках правил» */
  
  
  
  /* тень такая же по форме, как у активной карточки расхода в «Расходах» — 0 8px 16px -8px,
     нейтрального цвета — у самой .kb-acc рамки больше нет, без тени плашка выглядит плоской */
  :root[data-theme="light"] .main[data-view="knowledge"] .kb-acc{background:#fff;box-shadow:0 8px 16px -8px rgba(0,0,0,.35)}
  :root:not([data-theme="light"]) .main[data-view="knowledge"] .kb-acc{background:var(--surface-2)}
  /* при раскрытии документа плашка не должна возвращаться к старому серому/surface — тот же цвет, что закрытая;
     тень не трогаем — у .open уже своя акцентная обводка (см. .kb-acc.open выше по файлу) */
  :root[data-theme="light"] .main[data-view="knowledge"] .kb-acc.open{background:#fff}
  :root:not([data-theme="light"]) .main[data-view="knowledge"] .kb-acc.open{background:var(--surface-2)}
  /* .kb-side — видимая рамка карточки (фон есть), поэтому её card-body:12px — это отступ ВНУТРИ
     видимой рамки, и рамка сама стоит вплотную к странице. У .kb-main рамки больше нет (прозрачная) —
     значит и card-body/card-head паддинг слева-справа тоже убираем, иначе это пустой зазор без
     всякой рамки, которой он мог бы принадлежать. Сами плашки .kb-acc должны стоять вплотную
     к краю страницы, вровень с рамкой «Категорий» и с заголовком «База знаний». */
  .main[data-view="knowledge"] .sf-page{padding-left:10px;padding-right:10px}
  .main[data-view="knowledge"] .kb-main .card-body{padding-left:0;padding-right:0}
  .main[data-view="knowledge"] .kb-main .card-head{padding-left:0;padding-right:0}
  /* текст названия документа внутри плашки — тот же левый отступ, что у текста категории (10px) */
  .main[data-view="knowledge"] .kb-acc-hd{padding-left:10px}
}

@media(max-width:640px){
  :root .main[data-view="settings"] .sfg-cell--mult{flex-direction:column;align-items:stretch;gap:10px}
  :root .main[data-view="settings"] .sfg-cell--mult .sfg-val{text-align:left}
  /* сетка 3×2 вместо flex-wrap — иначе плашки сжимались (min-width:0) и цифры вылезали за край */
  :root .main[data-view="settings"] .mult-pills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  :root .main[data-view="settings"] .mult-pill{flex:none;min-width:0}
}

/* телефон: модалки поверх нижней панели, тост над панелью */
@media(max-width:640px){
  /* .modal-bg — display:grid;place-items:center — при высоком контенте (много полей) вертикальное
     центрирование поднимало модалку выше шапки (топбар с поиском), она наезжала на неё.
     Резервируем отступы под шапку и под нижнее меню (padding — уменьшает content-box грида),
     а align-items:center центрирует модалку УЖЕ внутри этой урезанной зоны, а не всего экрана —
     короткие модалки не липнут к самому верху, а высокие всё так же ограничены max-height и не
     вылезают ни под шапку, ни под нижнее меню (оно fixed поверх контента). */
  .modal-bg{z-index:120;padding:12px;align-items:center;height:var(--vvh,calc(100vh * var(--vz,1)));--mtop:calc(60px + var(--tg-safe-top,0px) + 6px);--mbot:calc(92px + env(safe-area-inset-bottom,0px));padding-top:var(--mtop);padding-bottom:var(--mbot)}
  /* var(--vvh) — высота экрана ДО клавиатуры (см. IIFE с setVvh) — при открытой клавиатуре
     не пересчитывается, поэтому модалка и её плашки не ужимаются вслед за вьюпортом */
  .modal-bg .modal{max-height:calc(var(--vvh,calc(100vh * var(--vz,1))) - var(--mtop) - var(--mbot))}
  /* .tp-modal (карточка сотрудника/клиента/проекта) — height, а не max-height: размер
     фиксирован и не «прыгает» между короткой и длинной вкладкой (см. правило для
     .modal.tp-modal выше по файлу — на мобильном это та же логика, только высота берётся
     из доступной под модалку зоны экрана, а не из фиксированных 720px). */
  .modal-bg .modal.tp-modal{height:calc(var(--vvh,calc(100vh * var(--vz,1))) - var(--mtop) - var(--mbot))}
  /* плавная смена размера модалки при открытии/закрытии клавиатуры (см. body.kb-open .modal-bg) */
  .modal-bg .modal{transition:transform .16s cubic-bezier(.4,0,.2,1)}
  .toast-host{bottom:calc(92px + env(safe-area-inset-bottom,0px))}
}

/* задачи проекта: слева сетка карточек как в календаре, справа панель выбранной задачи */
.pjx-setbudget{display:inline-flex;align-items:center}

.pjx-setbudget .ico{width:16px}
.pjx-setbudget--set{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:24px;letter-spacing:-.02em;color:var(--text)}
.pjx-setbudget--set .ico{width:14px;height:14px;color:var(--muted);opacity:0;transition:opacity .15s}
.pjx-setbudget--set:hover{color:var(--text)}
.pjx-setbudget--set:hover .ico{opacity:1;color:var(--accent)}
/* ===== страница проекта: шапка и блоки — как на дашборде ===== */
.pjp2 .db-hero-t h1{font-size:40px}
.pjh-meta{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:10px;font-size:14px;font-weight:600;color:var(--text-2)}
.pjh-meta .neg{color:var(--crit)}
.pjh-meta .ok{color:var(--ok)}
.pjh-acts{display:flex;align-items:center;gap:10px;margin-bottom:4px}

.pjh-nav{display:inline-flex;align-items:center;gap:6px}

.pjh-step{width:36px}
.pjh-step .ico{width:16px}
.pjh-count{min-width:54px}

.db-merged .db-r b em{font-style:normal;font-size:24px;font-weight:500;color:var(--muted);letter-spacing:0;margin-left:2px}
.pjx-dv{container-type:inline-size;padding-bottom:6px}
/* .dv по умолчанию overflow:hidden — это нужно календарю (скругление углов колонок), а тут из-за него
   обрезалось раскрытое меню кебаба в «Расходах»; блокам на странице проекта скругление резать нечего */
.dv.pjx-dv{overflow:visible}
.pjx-dv .dv-head{margin-bottom:0}
.pjx-body{padding:10px 0 12px}
.pjx-body--tasks{padding:16px 0 18px}






/* «Состав и техника», «ТЗ», «Расходы», «История расходов»: строки на всю ширину блока, как в таблице проектов */
.pjx-body .grid.g2{display:block}

.pjx-body .tz-h{font-family:var(--font-body);font-size:12px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--muted);margin:0;padding:12px 20px 8px}

.pjx-body .list{display:flex;flex-direction:column}
.pjx-body .row{display:flex;align-items:center;gap:14px;margin:0;padding:13px 20px;border:0;border-top:1px solid var(--border);border-radius:0;background:none;box-shadow:none;transition:background .18s}

.pjx-body .row .avatar{width:32px;height:32px;flex:none}
.pjx-body .row .t{font-size:14px;font-weight:600}
.pjx-body .row .m{font-size:12.25px;color:var(--muted)}

.pjx-body .empty{padding:14px 20px 18px;border-top:1px solid var(--border)}
.pjx-body .cat{display:inline;padding:0;background:none;color:var(--muted);font-size:12.25px;font-weight:400}
.pjx-body .pe{gap:0}
.pjx-body .pe > *{margin:0}
/* без «Итого выплачено» после таблицы оставался пустой хвост (отступ блока + отступ последней строки) — срезаем его */


.pjx-body .empty{padding-bottom:14px}
.pjx-body .pjx-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:8px 20px 16px}
.pjx-body .pjx-sum .pay-sh-sum-col{padding:0}
.pjx-body .pjx-sum .l{font-size:12.5px;font-weight:500;color:var(--muted)}
.pjx-body .pjx-sum .v{font-size:26px;font-weight:700;letter-spacing:-.02em}
.pjx-body .pe-bar{margin:0 20px 8px;background:color-mix(in srgb,var(--text) 8%,transparent)}
.pjx-body .pe-leg{margin:0 20px 6px}















.pjx-body .tz{gap:0}
.pjx-body .tz-sec{gap:0;padding:0 0 10px}
.pjx-body .tz-sec + .tz-sec{border-top:1px solid var(--border);margin-top:6px}
.pjx-body .tz-kvs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 24px;padding:6px 20px 8px}
.pjx-body .tz-kv{padding:0;background:none;gap:2px}
.pjx-body .tz-kv span{font-size:12.25px;font-weight:400;color:var(--muted)}
.pjx-body .tz-kv b{font-size:14px;font-weight:600}
.pjx-body .tz-vids{padding:4px 20px 8px}
.pjx-body .tz-vid{background:none;box-shadow:inset 0 0 0 1px var(--border-strong);padding:4px 11px;font-size:12.5px}
.pjx-body .tz-legal{margin:4px 20px 12px;font-size:13px;line-height:1.6}
.pjx-body .tz-parties{padding:0 20px 12px;gap:10px}
.pjx-body .tz-party{padding:14px 16px;border-radius:14px;background:none;box-shadow:inset 0 0 0 1px var(--border)}
:root[data-theme="light"] .pjx-body .tz-party,:root[data-theme="light"] .pjx-body .tz-vid{background:none}
.pjx-body .tz-pn{font-size:15px}
.pjx-body .tz-final{padding:2px 20px 10px}

/* задачи: доска по статусам; размер карточки — как в блоке «Проекты» (4 в ряд, отступы 8px) и не зависит от панели */
.pjb{--cw:calc((100cqw - 16px - 24px)/4);display:grid;grid-template-columns:repeat(4,var(--cw));gap:8px;align-items:start;padding:0 8px}
.pjb-col{display:flex;flex-direction:column;gap:8px;min-width:0}
.pjb-h{display:flex;align-items:center;gap:8px;padding:0 2px 2px;font-size:12px;font-weight:600;color:var(--muted)}
.pjb-h em{font-style:normal;font-weight:600;color:var(--text-2)}
.pjb-empty{display:grid;place-items:center;height:var(--evh,140px);border-radius:13px;box-shadow:inset 0 0 0 1.5px var(--border-strong)}
.pjk{min-width:0}
.pjk .dw-ev{height:var(--evh,140px);cursor:pointer}
.pjk.sel .dw-ev{box-shadow:inset 0 0 0 1.5px var(--accent)}
.pjk.sel .dw-ev--shoot{box-shadow:0 0 0 2px var(--text),0 8px 16px -10px rgba(255,93,0,.8)}

/* шторка с деталями задачи */
.pjs-panel{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:calc(100vw * var(--vz,1));z-index:130;display:flex;flex-direction:column;gap:14px;padding:22px 22px calc(22px + env(safe-area-inset-bottom));background:var(--surface);box-shadow:-1px 0 0 var(--border-strong),-24px 0 60px rgba(0,0,0,.25);overflow:auto;--pjx-tile:color-mix(in srgb,var(--text) 5.5%,transparent)}
.pjs-hd{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.pjs-ttl{display:flex;flex-direction:column;gap:3px;min-width:0}
.pjs-ttl span{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.015em;line-height:1.2}
.pjs-ttl em{font-style:normal;font-size:13px;color:var(--muted)}
.pjs-x{flex:none}
.pjs-tags{display:flex;gap:6px;flex-wrap:wrap}
.pjs-bad{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:11px;background:var(--crit-soft);font-size:12.5px;line-height:1.4;color:var(--text-2)}
.pjs-bad b{color:var(--crit);font-size:13px}
.pjs-note{padding:10px 12px;border-radius:11px;background:var(--pjx-tile);font-size:12.5px;color:var(--text-2)}
.pjs-kvs{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px 16px}
.pjs-kv{display:flex;flex-direction:column;gap:2px}
.pjs-kv span{font-size:12px;color:var(--muted)}
.pjs-kv b{font-size:15px;font-weight:700}
.pjs-kv.crit b{color:var(--crit)}
.pjs-sec{display:flex;flex-direction:column;gap:8px}
.pjs-h{font-size:12px;color:var(--muted)}
.pjs-files{display:flex;flex-wrap:wrap;gap:6px}
.pjs-file{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:6px 10px;border:0;border-radius:9px;background:var(--pjx-tile);color:var(--text);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}
.pjs-file:hover{background:color-mix(in srgb,var(--text) 10%,transparent)}
.pjs-file .ico{width:14px;height:14px;flex:none}
.pjs-file span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pjs-file i{font-style:normal;font-weight:400;color:var(--muted)}




.pjs-add{align-self:flex-start;display:inline-flex;align-items:center}
.pjs-add .ico{width:14px}
.pjs-acts{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}


@media(max-width:900px){
  .pjx-body .tz-kvs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pjx-body .pjx-sum{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 0}
  .pjp2 .db-hero-t h1{font-size:32px}
  .pjp2 .db-mh{gap:14px}
  .pjh-acts{flex-wrap:wrap}
}
@media(max-width:640px){
  .pjp2 .db-hero-t h1{font-size:26px}
  .pjx-dv .dv-head{padding:0 16px}
  .pjx-body .row,.pjx-body .tz-h{padding-left:16px;padding-right:16px}
.pjx-body .empty{padding-left:16px;padding-right:16px}
  .pjb{grid-template-columns:minmax(0,1fr);padding:0 8px}
  .pjb-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .pjb-h{grid-column:1/-1}
.pjb-empty{grid-column:1/-1}
  .pjs-panel{top:auto;left:0;width:auto;max-height:calc(82vh * var(--vz,1));border-radius:18px 18px 0 0;box-shadow:0 -24px 60px rgba(0,0,0,.4)}
  
  
  .pjx-body .tz-kvs,.pjx-body .tz-vids,.pjx-body .tz-parties,.pjx-body .tz-legal,.pjx-body .tz-final,.pjx-body .pjx-sum{padding-left:16px;padding-right:16px}
}

/* ===== страница проекта: всё на одной странице (детали как в «Расходах», «Клиентах», «Команде») ===== */










.pj3-empty{padding:26px}
.pjb{--cw:calc((100cqw - 16px - 24px)/4);display:grid;grid-template-columns:repeat(4,var(--cw));gap:8px;align-items:start;padding:0 8px}
.pjb-col{display:flex;flex-direction:column;gap:8px;min-width:0}
.pjb-h{display:flex;align-items:center;gap:8px;padding:0 2px 2px;font-size:12px;font-weight:600;color:var(--muted)}
.pjb-h em{font-style:normal;font-weight:600;color:var(--text-2)}
.pjb-empty{display:grid;place-items:center;height:var(--evh,140px);border-radius:13px;box-shadow:inset 0 0 0 1.5px var(--border-strong)}
.pjk{min-width:0}
.pjk .dw-ev{height:var(--evh,140px);cursor:pointer}
















@media(max-width:640px){.pjb{grid-template-columns:minmax(0,1fr);padding:0 8px}.pjb-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.pjb-h{grid-column:1/-1}
.pjb-empty{grid-column:1/-1}}


/* ===== страница проекта: мини-дашборд (шапка и блоки как на дашборде, всё на одной странице) ===== */
.pjx-cnt{margin-left:10px}
.pjx-dv .dv-head{padding-bottom:4px}
.pj3-tasks{padding:14px 0 18px}
.pj3-empty{padding:16px 24px}


/* ===== «Требует внимания»: блок как «Проекты», строки таблицей ===== */
.atn .dv-head{padding-bottom:4px}
.atn .proj-tab i{margin-left:6px}

.atn-list{padding:8px 0 8px}
.atn-r{display:grid;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;column-gap:16px;padding:13px 20px;border-top:1px solid var(--border);transition:background .18s}
.atn-r:first-child{border-top:0}
.atn-r[role="button"]{cursor:pointer}

.atn-av .avatar{width:34px;height:34px;font-size:12px}
.atn-t{min-width:0;display:flex;flex-direction:column;gap:2px}
.atn-t b{font-size:14px;font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atn-t span{font-size:12.25px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atn-meta{font-size:13px;font-weight:600;white-space:nowrap;text-align:right}
.atn-late{color:var(--crit)}
.atn-late b{font-family:var(--font-display);font-size:15px;font-weight:700}


#dbAttn[data-f="q"] .atn-r[data-k="h"],#dbAttn[data-f="h"] .atn-r[data-k="q"]{display:none}
#dbAttn .db-ok{padding:18px 24px}
@media(max-width:640px){
  .atn-r{grid-template-columns:34px minmax(0,1fr);row-gap:8px;padding:12px 16px}
  .atn-meta{grid-column:2;text-align:left}
  
}

/* ===== модалка задачи ===== */






































/* ===== кебаб на карточке задачи ===== */
.dw-ev{position:relative}
.dw-ev--tk{cursor:default}
.dw-ev--tk > b:first-child{padding-right:24px}
.dw-k{position:absolute;top:6px;right:6px;width:26px;height:26px;border:0;border-radius:8px;background:transparent;color:var(--text-2);display:grid;place-items:center;padding:0;cursor:pointer;opacity:.7;transition:background .14s,opacity .14s}
.dw-k .ico{width:16px;height:16px}
.dw-ev:hover .dw-k,.dw-k:focus-visible{opacity:1}
.dw-k:hover{background:color-mix(in srgb,var(--text) 12%,transparent)}
.dw-ev--shoot .dw-k{color:#fff}
.dw-ev--shoot .dw-k:hover{background:rgba(255,255,255,.22)}
.tk-float{position:static;width:0;height:0}
.tk-float .dd-menu{z-index:200;opacity:1;visibility:visible;transform:none;pointer-events:auto}

/* ===== «Состав и техника» на странице проекта: карточки как на страницах «Подрядчики»/«Инвентарь» ===== */





















/* ===== единая кнопка «прикрепить файл» во всём мастере — та же высота/цвет поля, что и у остальных полей шага ===== */
.wz-filectl{display:inline-flex;align-items:center;gap:8px;cursor:pointer;width:fit-content;max-width:100%;min-width:0;flex-shrink:1;padding:0 16px;height:42px;border-radius:12px;border:0;background:var(--surface-2);color:var(--text-2);font-size:13.5px;font-weight:600;transition:background .15s,color .15s,box-shadow .2s;position:relative;box-sizing:border-box;overflow:hidden}
.wz-inrow .wz-filectl{flex:0 1 auto}
.wz-filectl .ico{width:16px;height:16px;flex:none;color:var(--muted);transition:color .15s}
.wz-filectl span,.wz-filectl b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.wz-filectl i{font-style:normal;font-size:11.5px;color:var(--muted);flex:none;margin-left:2px}
:root[data-theme="light"] .wz-filectl:not(.has){background:var(--surface-2)}
.wz-filectl:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 10px 20px -10px rgba(255,93,0,.8),inset 0 1px 0 rgba(255,255,255,.25)}
:root[data-theme="light"] .wz-filectl:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
.wz-filectl:hover .ico,.wz-filectl:hover i{color:#fff}
.wz-filectl.has{background:var(--accent-soft);color:var(--accent)}
.wz-filectl.has .ico{color:var(--accent)}
.wz-filectl-x{margin-left:auto;flex:none}



.wz-filectl.compact{width:42px;min-width:42px;padding:0;justify-content:center;flex:none}
.wz-filectl.compact span{display:none}
.wz-filectl.compact.has{width:auto;max-width:170px;padding:0 12px;justify-content:flex-start}
.wz-filectl.compact.has b{font-size:11.5px}

.wz-pills .wz-filectl.compact{margin-left:2px}
.wz-vc .wz-filectl{width:100%;justify-content:center}
.wz-vc .wz-filectl.has{justify-content:flex-start}
.wz-vc .wz-filectl.compact{width:42px}
.wz-vc .wz-filectl.compact.has{width:auto}

/* сценарий: то же поле, что и остальные текстовые поля мастера (не «голубое») */




/* экран входа / загрузки / ошибки (js/app/boot.js) */
.snap-login{min-height:calc(100vh * var(--vz,1));display:flex;align-items:center;justify-content:center;background:var(--bg);padding:calc(24px + var(--tg-safe-top,0px)) 24px 24px}
.snap-login-card{width:100%;max-width:320px;text-align:center}
.snap-login-card .brand-logo{width:96px;height:auto;margin:0 auto 26px}
.snap-login-card h1{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--text);margin:0 0 8px}
.snap-login-card p{font-size:13.5px;color:var(--muted);margin:0 0 22px;line-height:1.5}

#tgLoginWidget{display:flex;justify-content:center}

/* выход — низ сайдбара */




/* «Приложение» — установка на рабочий стол */
.pwa{display:flex;flex-direction:column;gap:16px}

.pwa-icon{width:76px;height:76px;border-radius:20px;box-shadow:0 14px 30px -10px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.08);flex:none}




.pwa-card{padding:18px}
.pwa-tabs{margin-bottom:16px;overflow-x:auto}
.pwa-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;counter-reset:s}
.pwa-step{display:flex;gap:14px;align-items:flex-start;font-size:14px;line-height:1.5;color:var(--text-2)}
.pwa-step b{color:var(--text)}
.pwa-n{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#011d2b;font-weight:800;font-size:13px;box-shadow:0 6px 14px -6px rgba(255,93,0,.7),inset 0 1px 0 rgba(255,255,255,.3)}
:root[data-theme="dark"] .pwa-n{color:#fff}



/* ——— окно задачи (js/features/task-sheet.js) ——— */
.tks{display:flex;flex-direction:column;gap:14px;padding:4px 20px 20px}










.tks-note{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:14px;background:var(--surface-2);font-size:13px}
.tks-note .ico{width:18px;height:18px;color:var(--muted);flex:none;margin-top:1px}
.tks-note b{display:block}
.tks-note span{display:block;color:var(--text-2);margin-top:2px}
.tks-note.bad{background:var(--crit-soft)}
.tks-note.bad .ico,.tks-note.bad b{color:var(--crit)}





.tks-vids{display:flex;flex-wrap:wrap;gap:6px}
.tks-vids span{padding:4px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:600}
.tks-brief{border:1px solid var(--border);border-radius:14px;padding:0 14px}
.tks-brief summary{cursor:pointer;padding:12px 0;font-size:13px;font-weight:600;list-style:none}
.tks-brief summary::after{content:'›';float:right;transition:transform .2s;color:var(--muted)}
.tks-brief[open] summary::after{transform:rotate(90deg)}
.tks-br{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--border);font-size:12.5px}
.tks-br span{color:var(--muted);flex:none;max-width:45%}
.tks-br b,.tks-br a{text-align:right;font-weight:600;color:var(--text)}
.tks-br a{color:var(--accent);display:inline-flex;gap:4px;align-items:center}
.tks-br .ico{width:14px;height:14px}
.tks-pens{display:flex;flex-direction:column;gap:6px}
.tks-pens span{display:flex;gap:8px;align-items:center;font-size:12.5px;color:var(--crit)}
.tks-pens .ico{width:15px;height:15px}


.tks-wait,.tks-done{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted);padding:8px 4px}
.tks-done{color:var(--ok)}
.tks-wait .ico,.tks-done .ico{width:16px;height:16px}

/* ——— окно проверки задачи ——— */
.rv{display:flex;flex-direction:column;gap:14px;padding:4px 20px 20px}
.rv-opts{display:grid;gap:8px}
.rv-opt{display:flex;gap:12px;align-items:center;padding:12px 14px;border:1.5px solid var(--border);border-radius:14px;background:var(--surface);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}
.rv-opt:active{transform:scale(.98)}
.rv-opt .ico{width:20px;height:20px;color:var(--muted);flex:none}
.rv-opt b{display:block;font-size:14px}
.rv-opt em{display:block;font-style:normal;font-size:12px;color:var(--muted);margin-top:1px}
.rv-opt.on{border-color:var(--accent);background:var(--accent-soft)}
.rv-opt.on .ico{color:var(--accent)}
.rv-revs{display:flex;flex-direction:column;gap:10px}
.rv-rev{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:14px;background:var(--surface-2)}
.rv-rev2{display:grid;grid-template-columns:minmax(0,1fr) 150px auto;gap:8px;align-items:center}
.rv-rev2 .kb-f{margin:0}
.rv-pen{display:flex;gap:12px;align-items:center;padding:12px 14px;border-radius:14px;background:var(--crit-soft);cursor:pointer}
.rv-pen input{width:18px;height:18px;accent-color:var(--crit)}
.rv-pen b{display:block;font-size:13.5px;color:var(--crit)}
.rv-pen em{display:block;font-style:normal;font-size:12px;color:var(--text-2)}
@media(max-width:640px){ .rv-rev2{grid-template-columns:1fr 1fr} .tks,.rv{padding:4px 14px 16px} }

/* уведомления: пустое состояние и кликабельные строки */
.notif-empty{display:flex;flex-direction:column;align-items:center;gap:8px}
.notif-empty .ico{width:26px;height:26px;opacity:.5}
.notif-row{cursor:pointer;transition:background .15s}





.cpln{display:flex;flex-direction:column;gap:14px;padding:4px 20px 20px}
.cpln-file{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:12px;background:var(--surface-2);font-size:13px}
.cpln-file span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cpln-anon{margin:0;padding:12px 14px;border-radius:14px;background:var(--surface-2)}
.cpln-anon b{display:block;font-size:13.5px}
.cpln-anon em{display:block;font-style:normal;font-weight:500;font-size:12px;color:var(--muted)}


/* модалки — поверх нижнего меню телефона (.bnav z-index:80) */
.modal-bg{z-index:90}
/* окна задачи / проверки / жалобы: длинное содержимое прокручивается внутри, кнопки не уезжают за экран */
.modal.cf-modal.tks-modal,.modal.cf-modal.rv-modal,.modal.cf-modal.cpln-modal{text-align:left;align-items:stretch;padding:20px 0 0;max-height:calc(var(--vvh,calc(100vh * var(--vz,1))) - 32px);width:100%}
.tks-modal .cf-h,.rv-modal .cf-h,.cpln-modal .cf-h{padding:0 20px;margin-bottom:10px}
.tks-modal .cf-h h3,.rv-modal .cf-h h3,.cpln-modal .cf-h h3{margin:0;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.tks-modal .modal-body,.rv-modal .modal-body,.cpln-modal .modal-body{overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1}
.tks-note b{display:flex;flex-wrap:wrap;gap:0 6px}
.tks-note b .overdue{white-space:nowrap}
@media(max-width:640px){
  /* окно задачи и проверки — по центру видимой зоны между шапкой и нижним меню, как остальные окна */
  .modal-bg:has(.tks-modal),.modal-bg:has(.rv-modal){align-items:center}
  .modal-bg .modal.cf-modal.tks-modal,.modal-bg .modal.cf-modal.rv-modal,.modal-bg .modal.tks-modal{max-height:calc(var(--vvh,calc(100vh * var(--vz,1))) - var(--mtop) - var(--mbot))}
  .modal-bg:has(.cpln-modal){padding:12px;align-items:center}
  
}
/* вкладки платформ на «Приложении» */
.pwa-seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:4px;margin-bottom:16px;border-radius:14px;background:var(--surface-2)}
.pwa-seg button{display:flex;align-items:center;justify-content:center;gap:6px;height:40px;border:0;border-radius:11px;background:none;color:var(--text-2);font:inherit;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .2s,color .2s,box-shadow .2s}
.pwa-seg button .ico{width:16px;height:16px;flex:none}
.pwa-seg button.on{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;box-shadow:0 8px 18px -8px rgba(255,93,0,.75),inset 0 1px 0 rgba(255,255,255,.25)}

/* вложения и оценка в окне задачи */
.tks-files{display:flex;flex-direction:column;gap:8px}
.tks-h{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);display:flex;gap:6px;align-items:center}
.tks-h em{font-style:normal;padding:1px 7px;border-radius:999px;background:var(--surface-3);color:var(--text-2);letter-spacing:0}
.tks-f{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:var(--surface-2)}
.tks-fi{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:none}
.tks-fi .ico{width:17px;height:17px}
.tks-fn{flex:1;min-width:0;text-decoration:none;color:var(--text)}
.tks-fn b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tks-fn em{display:block;font-style:normal;font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}





.tks-rate{font-size:18px;color:#f5a524;letter-spacing:2px}
.tks-rate i{font-style:normal;color:var(--surface-3)}
.tks-rate span{display:block;font-size:12.5px;color:var(--text-2);letter-spacing:0;margin-top:2px}
/* оценка проекта */
.rt .pjx-body{display:flex;flex-direction:column;gap:18px}

























/* «капля» на кнопках (js/core/gestures.js) */
.rp-wrap{position:absolute;inset:0;border-radius:inherit;overflow:hidden;pointer-events:none;z-index:0}
.rp{position:absolute;border-radius:50%;background:currentColor;opacity:.18;transform:scale(0);animation:rp .6s cubic-bezier(.2,.8,.3,1) forwards}

@keyframes rp{to{transform:scale(1);opacity:0}}
button{-webkit-tap-highlight-color:transparent}


.snap-login-btn{width:100%;justify-content:center;height:46px;font-size:15px}
.snap-login-hint{margin:14px 0 0!important;font-size:12.5px!important}
.snap-login-hint a{color:var(--accent)}

.snap-match{display:flex;flex-direction:column;align-items:center;gap:4px;margin:0 0 16px;padding:14px;border-radius:18px;background:var(--accent-soft)}
.snap-match span{font-size:12.5px;color:var(--text-2)}
.snap-match b{font-family:var(--font-display);font-size:46px;line-height:1;color:var(--accent);letter-spacing:.02em}
.snap-login-or{display:flex;align-items:center;gap:10px;margin:22px 0 12px;color:var(--muted);font-size:12px}
.snap-login-or::before,.snap-login-or::after{content:'';flex:1;height:1px;background:var(--border)}
.snap-pin{display:flex;gap:8px}
.snap-pin .in{flex:1}





.pwa-code{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.pwa-code b{display:block;font-size:15px}
.pwa-code span{display:block;font-size:13px;color:var(--muted);margin-top:2px}
.pwa-pin{font-family:var(--font-display);font-size:40px;font-weight:700;letter-spacing:.12em;color:var(--accent);font-variant-numeric:tabular-nums}
.pwa-pin-t{font-size:12px!important}
/* уведомления: список прокручивается внутри, окно не растёт */
.notif-pop .notif-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
@media(max-width:640px){ :root .notif-pop{position:fixed;left:10px;right:10px;width:auto;z-index:95} }
.pwa-sec{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.pwa-sec b{display:block;font-size:15px}
.pwa-sec span{display:block;font-size:13px;color:var(--muted);margin-top:2px}

.pwa-out .ico{width:16px}
@media(max-width:640px){ .pwa-out,.pwa-code .btn{width:100%} .pwa-seg button span{font-size:12px} }
/* «Смотреть как»: выбранный — яркая оранжевая плашка с градиентом и тенью; текст и галочка — по теме */
.viewas-row.on{background:linear-gradient(180deg,#ff7a2e,#ff5d00);box-shadow:0 10px 22px -10px rgba(255,93,0,.75),inset 0 1px 0 rgba(255,255,255,.25)}
.viewas-row.on .viewas-i .n,.viewas-row.on .viewas-i .r,.viewas-row.on .viewas-ck{color:#011d2b}
.viewas-row.on .viewas-i .r{opacity:.75}
:root[data-theme="dark"] .viewas-row.on .viewas-i .n,:root[data-theme="dark"] .viewas-row.on .viewas-i .r,:root[data-theme="dark"] .viewas-row.on .viewas-ck{color:#fff}
.viewas-row.on .viewas-ck{stroke-width:2.6}

/* мобильная копия «Добавить» в шапке страницы — только на телефоне (на десктопе кнопка в тулбаре) */
.page-head .actions.pj-mobadd{display:none}
@media(max-width:640px){ :root .main[data-view="gear"] .page-head .actions.pj-mobadd,:root .main[data-view="actors"] .page-head .actions.pj-mobadd,:root .main[data-view="locations"] .page-head .actions.pj-mobadd,:root .main[data-view="clients"] .page-head .actions.pj-mobadd{display:flex} }
/* плашка «Доступно обновление» */
.upd-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:120;display:flex;align-items:center;gap:14px;
  padding:10px 10px 10px 18px;border-radius:999px;background:rgba(3,24,35,.92);color:#eef6f5;font-size:13.5px;font-weight:600;
  box-shadow:0 18px 40px -14px rgba(1,20,29,.6);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);animation:bnIn .45s cubic-bezier(.16,1,.3,1) both;white-space:nowrap}

@media(max-width:640px){ .upd-bar{bottom:calc(98px + env(safe-area-inset-bottom,0px))} }

/* цепочка ролика в окне задачи */














/* новая задача / передача / пустой проект */








.tks-tr-acts{display:flex;gap:8px;margin-top:8px}



.pj-draft-note{margin:0 0 14px}
.wz-smode{flex-wrap:wrap}
.wz-smode-note{display:grid;gap:6px;margin-top:12px}
.wz-smode-note b{font-size:14px}
.wz-smode-note span{color:var(--muted);font-size:13px;line-height:1.45}
.wz-foot-r{display:flex;gap:8px;align-items:center}

/* категории календаря дашборда — без перестройки разметки */
.dw[data-layer="shoots"] .dw-ev[data-l]:not([data-l="shoots"]),.dw[data-layer="tasks"] .dw-ev[data-l]:not([data-l="tasks"]){display:none}
.dw[data-layer="shoots"] .dw-col{--n:var(--ns)!important}
.dw[data-layer="tasks"] .dw-col{--n:var(--nt)!important}
/* полоса загрузки при запросах к серверу */
#netBar{position:fixed;left:0;top:0;height:3px;width:0;z-index:9999;background:linear-gradient(90deg,#ff5d00,#ff9a4d);opacity:0;pointer-events:none;transition:opacity .25s}
#netBar.on{opacity:1;animation:netbar 8s cubic-bezier(.08,.6,.2,1) forwards}
#netBar.done{opacity:0;width:100%!important;transition:width .2s,opacity .3s .15s}
@keyframes netbar{0%{width:0}20%{width:45%}60%{width:75%}100%{width:92%}}
/* заставка при запуске */
.boot-splash{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;background:var(--bg)}
.boot-splash img{width:150px;height:auto;animation:bootpulse 1.6s ease-in-out infinite}
.boot-splash .bar{width:120px;height:3px;border-radius:3px;background:color-mix(in srgb,var(--accent) 18%,transparent);overflow:hidden;position:relative}
.boot-splash .bar::after{content:"";position:absolute;inset:0;width:40%;border-radius:3px;background:var(--accent);animation:bootbar 1.1s ease-in-out infinite}
.boot-splash .brand-logo--dark{display:none}
:root[data-theme="dark"] .boot-splash .brand-logo--light{display:none}
:root[data-theme="dark"] .boot-splash .brand-logo--dark{display:block}
@keyframes bootpulse{0%,100%{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.03)}}
@keyframes bootbar{0%{left:-40%}100%{left:100%}}
@media(prefers-reduced-motion:reduce){.boot-splash img,.boot-splash .bar::after{animation:none}}
/* фон за пределами страницы (перетяжка при прокрутке) — в цвет страницы */
html{background:var(--surface)}
@media(max-width:640px){html,body{background:var(--bg)}}
/* страница проекта: количество роликов над названием — обычным цветом текста */

/* ---- баннер уведомления сверху ---- */
.nl-banner{position:fixed;left:50%;top:calc(10px + var(--tg-safe-top,0px));z-index:10000;width:min(440px,calc(calc(100vw * var(--vz,1)) - 20px));display:flex;align-items:flex-start;gap:12px;padding:13px 16px 15px 14px;border-radius:18px;
  background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);
  box-shadow:0 0 0 1px var(--border-strong),0 18px 40px -14px rgba(0,0,0,.45);color:var(--text);cursor:pointer;touch-action:none;user-select:none;
  transform:translate(-50%,calc(-100% - 30px));opacity:0;transition:transform .42s cubic-bezier(.16,1,.3,1),opacity .3s}
.nl-banner.nl-in{transform:translate(-50%,0);opacity:1}
.nl-banner.nl-out{transform:translate(-50%,0) scale(.96);opacity:0;transition:transform .3s,opacity .3s}
.nl-banner.nl-out-up{transform:translate(-50%,calc(-100% - 30px));opacity:0;transition:transform .3s cubic-bezier(.4,0,1,1),opacity .3s}
:root[data-theme="light"] .nl-banner{background:rgba(255,255,255,.96);box-shadow:0 0 0 1px #e6e6e6,0 18px 40px -16px rgba(0,0,0,.28)}
.nl-ic{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
.nl-ic svg{width:18px;height:18px}
.nl-crit .nl-ic{background:color-mix(in srgb,var(--crit) 14%,transparent);color:var(--crit)}
.nl-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.nl-b b{font-size:13.5px;font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nl-b span{font-size:12.5px;color:var(--muted);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nl-b em{font-style:normal;font-size:11.5px;color:var(--accent);font-weight:600}
.nl-grip{position:absolute;left:50%;bottom:5px;width:34px;height:4px;margin-left:-17px;border-radius:4px;background:var(--border-strong)}
@media(prefers-reduced-motion:reduce){.nl-banner,.nl-banner.in,.nl-banner.out,.nl-banner.nl-out-up{transition:opacity .2s}}
/* ---- колокольчик: включить push, кнопка закрытия, ширина и 2 строки ---- */
.notif-push{display:flex;align-items:center;gap:12px;padding:12px 12px 12px 14px;margin-bottom:8px;border-radius:14px;background:color-mix(in srgb,var(--accent) 10%,transparent)}
.notif-push>span{flex:none;color:var(--accent);display:grid}
.notif-push>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.notif-push b{font-size:13px}
.notif-push em{font-style:normal;font-size:12px;color:var(--muted);line-height:1.35}
.notif-push .btn{flex:none}


@media(min-width:641px){:root .notif-pop{width:460px}}

/* уведомления: заголовок и детали — двумя строками */

/* Mac и другие Retina-экраны с мышью: при «том же» размере экрана логических пикселей больше,
   и интерфейс выглядит мелким — чуть увеличиваем масштаб всего приложения */


/* Mac и другие Retina-экраны с мышью: при том же размере экрана логических пикселей больше,
   и интерфейс выглядит мелким — увеличиваем приложение (#root) на 12%. vh/vw внутри
   компенсируются через --vz, всплывающие меню/тосты живут в body и не масштабируются. */
@media (min-width:1180px) and (pointer:fine) and (min-resolution:2dppx){#root{zoom:1.12;--vz:.892857}}
/* компьютер: шапка прокручивается вместе со страницей (на телефоне остаётся закреплённой) */
@media(min-width:641px){.topbar{position:relative}}
/* оранжевое свечение героя не выходит за страницу: ни на шапку, ни за края окна
   (clip, а не hidden — закреплённые элементы внутри продолжают работать) */
.db-page{overflow:clip}
/* ---- окно задачи ---- */
.tk2{display:grid;gap:12px}
.tk2 .pf-who{margin:0}
.tk2-proj{margin:-6px 0 0!important}
.tk2-kvs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tk2-kv{display:flex;flex-direction:column;gap:2px;padding:11px 14px;border-radius:12px;background:var(--surface-3)}
:root[data-theme="light"] .tk2-kv{background:var(--surface-2)}
.tk2-kv span{font-size:12px;color:var(--muted);font-weight:500}
.tk2-kv b{font-size:13.5px;font-weight:600;color:var(--text)}
.tk2-kv.crit b{color:var(--crit)}
.tk2-note{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:12px;background:var(--surface-3);font-size:13px}
:root[data-theme="light"] .tk2-note{background:var(--surface-2)}
.tk2-note>svg{flex:none;width:17px;height:17px;margin-top:1px;color:var(--accent)}
.tk2-note div{display:flex;flex-direction:column;gap:2px;min-width:0}
.tk2-note span{color:var(--muted);font-size:12.5px;line-height:1.4}
.tk2-note.bad{background:color-mix(in srgb,var(--crit) 10%,transparent)}
.tk2-note.bad>svg,.tk2-note.bad b{color:var(--crit)}
.tk2-foot{justify-content:space-between!important}
.tk2-foot .tks-wait,.tk2-foot .tks-done{margin-left:auto}
.tn-map{height:210px;border-radius:12px;overflow:hidden;background:var(--surface-3)}
.tn-files{display:grid;gap:6px;margin-bottom:8px}
.tn-file{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;border-radius:10px;background:var(--surface-3);font-size:12.5px;min-width:0}
:root[data-theme="light"] .tn-file{background:var(--surface-2)}
.tn-file b{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.tn-file em{font-style:normal;color:var(--muted);flex:none}

.dl-opt.on .gb-p{color:var(--accent)}
:root .gb-modal .dl-opt.on{box-shadow:inset 0 0 0 1.5px var(--accent)}
.dl-opt svg{flex:none;color:var(--accent)}
.pj-dl{display:grid;gap:10px;margin:0 0 14px}
.tk2-note .tks-tr-acts{display:flex;gap:8px;align-self:flex-start;margin-top:8px}
.tk2-note .tks-tr-acts .btn{width:auto}
/* окно задачи: без двойных отступов; нижняя панель поверх кружков цепочки */
.tks.tk2{padding:0}
.tk2-foot{z-index:3;justify-content:flex-end!important}
/* окно задачи — компактнее по краям */
:root .modal.tks-modal:not(.wm):not(.cf-modal) .modal-head{padding:20px 16px 6px 20px}
:root .modal.tks-modal:not(.wm):not(.cf-modal) .modal-body{padding:10px 20px 20px}
.modal.pay-md.tks-modal:not(.cf-modal) .tk2-foot{margin:8px -20px -20px;padding:12px 20px 20px;bottom:-20px}
@media(max-width:640px){
  :root .modal.tks-modal:not(.wm):not(.cf-modal) .modal-head{padding:18px 12px 4px 16px}
  :root .modal.tks-modal:not(.wm):not(.cf-modal) .modal-body{padding:8px 16px 16px}
  .modal.pay-md.tks-modal:not(.cf-modal) .tk2-foot{margin:8px -16px -16px;padding:12px 16px 16px;bottom:-16px}
}
/* напоминание «Отметьте приход» */
.arr-bg{position:fixed;inset:0;z-index:9000;display:grid;place-items:center;padding:16px;background:rgba(1,20,29,.38);opacity:0;transition:opacity .2s}
.arr-bg.on{opacity:1}
.arr-card{width:min(380px,100%);background:var(--surface);border-radius:20px;padding:22px 20px 18px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;box-shadow:0 24px 60px -20px rgba(0,0,0,.5);transform:translateY(12px) scale(.98);transition:transform .3s cubic-bezier(.16,1,.3,1)}
.arr-bg.on .arr-card{transform:none}
.arr-ic{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);margin-bottom:4px}
.arr-ic svg{width:24px;height:24px}
.arr-card b{font-size:17px}
.arr-card p{margin:0;color:var(--muted);font-size:13.5px;line-height:1.45}
.arr-acts{display:flex;gap:8px;margin-top:10px;width:100%}
.arr-acts .btn{flex:1}







/* правка суммы штрафа: ссылка из окна отмены */
.pay-penedit-link{align-self:flex-start;margin:2px 0 -2px}
.pay-penedit-link svg{width:15px}

/* ============ Уведомления: шторка и карточки (редизайн) ============
   Карточка: [иконка] заголовок / тип · время [×]; ниже — описание обычным шрифтом,
   длинное свёрнуто до 2 строк с кнопкой «Показать полностью». */
:root .notif-pop:not([hidden]){display:flex;flex-direction:column;overflow:hidden}
:root .notif-hd{flex:none;padding:16px 16px 12px;border-bottom:1px solid var(--border)}
:root .notif-hd > span{font-size:17px}


:root .notif-list{gap:8px;padding:12px}
.nc{position:relative;display:flex;flex-direction:column;gap:6px;padding:12px 12px 12px 14px;border-radius:14px;background:var(--surface-2);border:1px solid var(--border);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .2s,transform .2s cubic-bezier(.16,1,.3,1)}
.nc::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:var(--nc-c,transparent)}

.nc:active{transform:scale(.99)}
.nc--crit{--nc-c:var(--crit);--nc-s:var(--crit-soft)}
.nc--warn{--nc-c:var(--warn);--nc-s:var(--warn-soft)}
.nc--ok{--nc-c:var(--ok);--nc-s:var(--ok-soft)}
.nc--neutral{--nc-c:transparent;--nc-s:var(--accent-soft)}
.nc-top{display:flex;align-items:flex-start;gap:11px;min-width:0}
.nc-ic{flex:none;width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:var(--nc-s,var(--accent-soft));color:var(--nc-c,var(--accent))}
.nc--neutral .nc-ic{color:var(--accent)}
.nc-ic svg{width:18px;height:18px}
.nc-hd{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;padding-top:1px}
.nc-title{font-size:14px;font-weight:650;line-height:1.3;color:var(--text);overflow-wrap:anywhere}
.nc-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:12px;color:var(--muted);line-height:1.2}
.nc-meta i{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.6}
.nc-cat{font-weight:600;color:var(--text-2)}
.nc-x{flex:none;width:30px;height:30px;margin:-3px -4px 0 0;display:grid;place-items:center;border:0;border-radius:9px;background:none;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}
.nc-x svg{width:16px;height:16px}
.nc-x:hover{background:var(--surface-3);color:var(--text)}
.nc-body{margin-left:47px;font-size:13px;line-height:1.45;color:var(--text-2);overflow-wrap:anywhere}
.nc-body .nc-l{display:block}
.nc-body .nc-gap{display:block;height:6px}
.nc-body--clip{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.nc-body--clip .nc-l{display:inline}
.nc-body--clip .nc-l + .nc-l::before{content:" · "}
.nc-body--clip .nc-gap{display:none}
.nc-more{align-self:flex-start;margin:-4px 0 -4px 47px;display:inline-flex;align-items:center;gap:4px;padding:3px 8px 3px 0;border:0;background:none;font:inherit;font-size:12.5px;font-weight:600;color:var(--accent);cursor:pointer}
.nc-more svg{width:14px;height:14px;transition:transform .2s}
.nc-more.on svg{transform:rotate(180deg)}
:root .notif-push{margin:0;border-radius:14px;padding:12px}
:root .notif-push b{font-size:13.5px}
@media(max-width:640px){
  .nc{padding:12px 10px 12px 12px}
  .nc-body,.nc-more{margin-left:0}
  .nc-title{font-size:14.5px}
  .nc-body{font-size:13.5px}
}
:root[data-theme="light"] .nc{background:#fff;border-color:#e7ecec}
:root[data-theme="light"] .notif-pop .notif-list{background:#f5f7f7}

/* перетаскивание карточек зажатием (js/core/card-drag.js): календарь на главной и доска задач проекта */
#dvWeek .dw-ev--tk,#pj3Tasks .dw-ev--tk{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.cdg-ghost{position:fixed;left:0;top:0;z-index:300;margin:0;pointer-events:none;opacity:.96;box-shadow:0 22px 44px -14px rgba(0,0,0,.55),0 0 0 2px var(--accent);transition:none!important;will-change:transform}
.dw-ev.cdg-src{opacity:.35;outline:2px dashed var(--border-strong);outline-offset:-2px}
.cdg-over{background:color-mix(in srgb,var(--accent) 10%,transparent)!important;box-shadow:inset 0 0 0 2px var(--accent)!important;border-radius:12px}
.cdg-deny{background:color-mix(in srgb,var(--crit) 7%,transparent)!important;box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--crit) 60%,transparent)!important;border-radius:12px}
.dw.cdg-on{scroll-snap-type:none;cursor:grabbing}
.dw.cdg-on .dw-col{transition:background .12s}
.pjb.cdg-on .pjb-col{transition:background .12s,box-shadow .12s;border-radius:12px}
.pjb-col{padding:4px;margin:-4px}
body.cdg-body,body.cdg-body *{cursor:grabbing!important;user-select:none!important;-webkit-user-select:none!important}

/* телефон, открыта клавиатура: модалка занимает только видимую над клавиатурой часть экрана
   (--kbvh/--kbtop задаёт gestures.js) и прокручивается внутри — до любого поля и до кнопок внизу */
@media(max-width:640px){
  /* затемнение остаётся на весь экран (и под панелью «↑ ↓ Готово» над клавиатурой iPhone) —
     ужимается только само окно: оно встаёт в видимую часть над клавиатурой */
  body.kb-open .modal-bg{top:0;bottom:auto;height:calc(var(--kbtop,0px) + max(var(--vvh,100vh), var(--kbvh,100vh)));--mtop:calc(var(--tg-safe-top,0px) + 8px);--mbot:8px;align-items:start;padding-top:calc(var(--kbtop,0px) + var(--mtop));padding-bottom:0}
  body.kb-open .modal-bg .modal{max-height:calc(var(--kbvh,100vh) - var(--mtop) - var(--mbot))!important;transform:none!important}
  body.kb-open .modal-bg .modal.tp-modal{height:calc(var(--kbvh,100vh) - var(--mtop) - var(--mbot))}
  body.kb-open .modal-bg .modal.cf-modal{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
}

/* телефон: шапка окна (название и ×) всегда на месте — прокручивается только содержимое.
   Окна-подтверждения (.cf-modal) раньше прокручивались целиком вместе с шапкой при открытой клавиатуре */
@media(max-width:640px){
  .modal-bg .modal.cf-modal{overflow:hidden}
  .modal-bg .modal.cf-modal > .cf-h{flex:none}
  .modal-bg .modal.cf-modal > .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  body.kb-open .modal-bg .modal.cf-modal{overflow:hidden}
  /* списки внутри таких окон раскрываются в потоке — не обрезаются прокруткой тела */
  .modal-bg .modal.cf-modal .kb-f .dd-menu{position:static!important;inset:auto!important;transform:none!important;width:100%!important;min-width:0!important;margin-top:6px;max-height:210px;overflow-y:auto}
}

/* кнопка «Скрыть» над клавиатурой (телефон, фокус в поле ввода) */
.kb-hide{display:none}
@media(pointer:coarse){
  body.kb-open .kb-hide{display:inline-flex;position:fixed;z-index:400;right:10px;top:calc(var(--kbtop,0px) + var(--kbvh,100vh) - 46px);align-items:center;gap:4px;height:36px;padding:0 12px 0 9px;border:0;border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:13px;font-weight:600;box-shadow:0 0 0 1px var(--border-strong),0 8px 20px -8px rgba(0,0,0,.45);animation:kbh-in .18s ease}
  .kb-hide svg{width:17px;height:17px}
  body.kb-open .modal-bg .modal .modal-body::after,body.kb-open .modal-bg .modal .wm-body::after{content:"";display:block;flex:none;height:46px}
}
@keyframes kbh-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* отметка прихода/ухода из приложения и «на работе» */

.att-mark .ico,.att-mark svg{width:16px}




.nc-act{margin-left:47px}
@media(max-width:640px){.nc-act{margin-left:0}}
.db-mh-acts{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.db-mh-acts:empty{display:none}
@media(max-width:640px){.db-mh-acts{margin-bottom:0}}

/* ===== новые компоненты в фирменном стиле (градиент #ff7a2e→#ff5d00, свечение, подъём, блик) ===== */
/* отметка прихода/ухода */

:root .att-mark .ico{width:16px}












/* карточки уведомлений: подъём при наведении, крестик как у остальных (градиент + поворот), появление по очереди */
.nc{transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s,border-color .15s}

.nc:active{transform:translateY(0) scale(.99)}
.nc-ic{transition:transform .3s cubic-bezier(.16,1,.3,1)}
.nc:hover .nc-ic{transform:scale(1.06) rotate(-6deg)}
.nc-x{position:relative;overflow:hidden;background:var(--surface-3);color:var(--text);transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s,background .15s,color .15s}
.nc-x svg{transition:transform .3s cubic-bezier(.16,1,.3,1)}
.nc-x:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;transform:translateY(-2px);box-shadow:0 12px 22px -10px rgba(255,93,0,.9),inset 0 1px 0 rgba(255,255,255,.3)}
.nc-x:hover svg{transform:rotate(90deg)}
.nc-x:active{transform:scale(.94)}
:root[data-theme="light"] .nc-x{background:var(--surface-2)}
.nc-more{border-radius:6px;transition:color .15s,background .15s}
.nc-more:hover{color:#ff7a2e}
.nc-more svg{transition:transform .25s cubic-bezier(.16,1,.3,1)}
@keyframes nc-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.notif-pop:not([hidden]) .nc{animation:nc-in .32s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--i,0) * 35ms)}
.notif-pop:not([hidden]) .notif-push{animation:nc-in .32s cubic-bezier(.16,1,.3,1) both}
@media(prefers-reduced-motion:reduce){.nc,.nc-ic,.nc-x,.nc-x svg{transition:none}.notif-pop:not([hidden]) .nc,.notif-pop:not([hidden]) .notif-push{animation:none}}

/* правка суммы штрафа — ссылка из окна отмены */


/* кнопка «Скрыть» над клавиатурой (Android) */
@media(pointer:coarse){
  :root body.kb-open .kb-hide{background:var(--surface);color:var(--text);font-weight:700;box-shadow:0 0 0 1px var(--border-strong),0 12px 24px -12px rgba(0,0,0,.5);transition:transform .15s}
  :root body.kb-open .kb-hide svg{color:var(--accent)}
  :root body.kb-open .kb-hide:active{transform:scale(.94);background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
  :root body.kb-open .kb-hide:active svg{color:#fff}
}

/* перетаскивание: поднятая карточка и цель — в фирменных цветах, с мягким «пульсом» цели */
.cdg-ghost{box-shadow:0 24px 46px -14px rgba(255,93,0,.55),0 0 0 2px #ff7a2e!important;border-radius:13px}
@keyframes cdg-pulse{0%,100%{box-shadow:inset 0 0 0 2px #ff7a2e}50%{box-shadow:inset 0 0 0 2px #ff7a2e,inset 0 0 0 6px rgba(255,122,46,.18)}}
.cdg-over{animation:cdg-pulse 1.1s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.cdg-over{animation:none}}

/* карточка сотрудника, «Посещаемость» на телефоне: приход → уход и время на работе под датой */


/* «Моя посещаемость» на телефоне: две кнопки рядом, одинаковой ширины */
@media(max-width:640px){
  :root .main[data-view="attendance"] .page-head .actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
  
}
/* настройки: время — тем же крупным значением, что остальные числа */
:root .main[data-view="settings"] .sfg-val[data-kind="time"] .sfg-num{font-variant-numeric:tabular-nums}
:root .main[data-view="settings"] .sfg-in--time{min-width:5ch;font-variant-numeric:tabular-nums}
:root .main[data-view="settings"] .sfg-in--time.bad{color:var(--crit)}
/* дашборд: сданные проекты — свёрнутой секцией внизу, приглушённо */







/* оценка проекта: карточка-итог и окно */
.rt2-card{padding:0}
.rt2-sum{display:flex;align-items:center;gap:14px;padding:18px 20px}
.rt2-ic{flex:none;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
.rt2-ic.ok{background:color-mix(in srgb,var(--ok,#1f9d55) 14%,transparent);color:var(--ok,#1f9d55)}
.rt2-ic svg{width:22px;height:22px}
.rt2-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rt2-tx b{font-size:15px}
.rt2-tx span{font-size:13px;color:var(--muted)}
.rt2-tx em{font-style:normal;font-weight:700;color:var(--text)}
@media(max-width:640px){.rt2-sum{flex-wrap:wrap}.rt2-sum .btn{width:100%}}
.rt2-nps{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:6px}
.rt2-nps button{height:38px;border-radius:10px;border:0;background:var(--surface-3);font:inherit;font-weight:700;color:var(--text);cursor:pointer;transition:background .15s,color .15s,transform .15s}
:root[data-theme="light"] .rt2-nps button{background:var(--surface-2)}
.rt2-nps button.on.lo{background:var(--crit);color:#fff}
.rt2-nps button.on.mid{background:#e8a400;color:#fff}
.rt2-nps button.on.hi{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
@media(max-width:640px){.rt2-nps{grid-template-columns:repeat(6,minmax(0,1fr))}}
.rt2-list{display:grid;gap:8px}
.rt2-row{display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:center;padding:12px 14px;border-radius:14px;background:var(--surface-3)}
:root[data-theme="light"] .rt2-row{background:var(--surface-2)}
.rt2-who{display:flex;align-items:center;gap:10px;min-width:0}
.rt2-who>div{display:flex;flex-direction:column;min-width:0}
.rt2-who b{font-size:13.5px}
.rt2-who span{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rt2-stars{display:flex;gap:2px}
.rt2-stars button{border:0;background:none;padding:2px 3px;font-size:24px;line-height:1;color:var(--border-strong);cursor:pointer;transition:transform .12s,color .12s}
.rt2-stars button.on{color:#ffb020}
.rt2-stars button:active{transform:scale(.9)}
.rt2-note{grid-column:1/-1}
.rt2-add{grid-column:1/-1;justify-self:start;display:flex;align-items:center}
.rt2-add svg{width:13px}
@media(max-width:480px){.rt2-row{grid-template-columns:1fr}.rt2-stars{justify-content:flex-start}}
/* проект без ТЗ */
/* мастер в режиме «Проект без ТЗ» */
.wz-q-note{font-size:13px;line-height:1.45;color:var(--muted)}








/* выпадающие списки в карточках мастера (напр. «Выберите сотрудника»): фон как у полей ввода, при наведении и открытии — белый */



.wz-q-col{display:flex;flex-direction:column;min-width:0}
.wz-q-col>.wz-meta-chip{flex:none}
.wz-two--top{align-items:start}
/* без ТЗ: выбор видов задач — раздел слева, кнопки справа */
.wz-q-kinds{display:grid;gap:12px}
.wz-q-kind{display:grid;grid-template-columns:130px minmax(0,1fr);align-items:center;gap:12px}
.wz-q-kind>span{font-size:13px;font-weight:600;color:var(--muted)}
.wz-q-kind .wz-pills{margin:0}
@media(max-width:640px){.wz-q-kind{grid-template-columns:1fr;gap:6px}}
/* описания (textarea) в карточках мастера — серые, как поля ввода рядом (раньше голубоватые и не видны на серой карточке) */


/* без ТЗ: «+» в кнопках видов задач — по центру строки */

.wz-q-kind .wz-pill svg{width:14px;flex:none;margin:0}
/* «Ждут вашей проверки» на дашборде */
.rvq .dv-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.rvq-late{font-size:12.5px;font-weight:600;color:var(--crit)}
.rvq .atn-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.rvq .atn-late.rvq-ok{color:var(--muted)}
.rvq .atn-list{padding-bottom:0}
.rvq .atn-r:first-child{border-top:0}
.rvq-more{display:block;width:100%;margin:0;text-align:center}

/* «Мои задачи» / «Требует внимания» — тот же вид, что «Ждут вашей проверки» */


/* названия и подписи в списках дашборда — целиком, с переносом (не обрезаем) — на всех экранах */
.rvq .atn-t b,.rvq .atn-sub>span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
/* «Мои задачи»/«Требует внимания»: без двойного бокового отступа — только у заголовка и строк, как в «Ждут вашей проверки» */

/* заголовок — на одной линии со строками: 20 px на ПК, 16 px на телефоне */
.rvq .dv-head{padding-left:20px;padding-right:20px}
@media(max-width:640px){.rvq .dv-head{padding-left:16px;padding-right:16px}}


/* окно задачи: чья сейчас очередь — под шкалой шагов */
.tks-turn{display:flex;align-items:center;gap:8px;margin:-2px 0 12px;font-size:13px;font-weight:600;color:var(--text-2)}
.tks-turn .ico{width:15px;height:15px;color:var(--accent);flex:none}
.tk2-foot{flex-wrap:wrap;gap:8px}
/* телефон: в строках списков дашборда срок и кнопка — в одну строку под названием */
@media(max-width:640px){
  .rvq .atn-meta{grid-column:1/-1;width:auto;min-width:0;padding-left:0;display:flex;flex-wrap:wrap;gap:8px}
  /* без двойного отступа: у «Моих задач» плашка со своим padding — убираем, отступ только у заголовка и строк (16 px), как в «Ждут вашей проверки» */
  /* название задачи и подпись — полностью, без обрезки */
  .rvq .atn-meta .atn-late{flex:0 0 100%}
  .rvq .atn-meta .btn{flex:1 1 0;min-width:0}
  .rvq .atn-late{font-size:12.5px}
}
/* дата: на компьютере — справа от строки (в .atn-meta), на телефоне — в строке подписи справа (клиент · статус … дата) */
.atn-t .atn-sub{display:flex;align-items:baseline;gap:10px;min-width:0}
.atn-t .atn-sub>span{min-width:0}
.atn-when{display:block;margin-left:auto;flex:none;font-style:normal;font-size:12.5px;font-weight:600;color:var(--muted);white-space:nowrap}
/* дата теперь всегда в строке подписи — справа от строки остаются только кнопки */
.rvq .atn-meta .atn-late{display:none}
.rvq .atn-meta:not(:has(.btn)){display:none}
.atn-when.late{color:var(--crit)}
@media(max-width:640px){
  .rvq .atn-when{display:block}
  .rvq .atn-meta .atn-late{display:none}
  .rvq .atn-meta:not(:has(.btn)){display:none}
}
/* «Мои задачи» на ПК — листание страницами с анимацией */





@keyframes dblInNext{from{opacity:0;transform:translateX(36px)}to{opacity:1;transform:none}}
@keyframes dblInPrev{from{opacity:0;transform:translateX(-36px)}to{opacity:1;transform:none}}

/* ПК: ряд «профиль · список» без пустот — профиль распределяет содержимое по высоте, у списка нет хвоста под стрелками */

/* стрелки листания — при наведении оранжевые, как остальные активные кнопки */



/* «Новая задача»: «Что сделать» — все виды по группам */
.tn-grps{display:grid;gap:12px}
.tn-grp{display:grid;gap:6px}
.tn-grp>em{font-style:normal;font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.tn-grp .wz-pills{margin:0}
/* выбранные оранжевые кнопки-пилюли — с градиентом, как основные кнопки */

.pq-hint{font-style:normal;font-weight:400;font-size:13px;color:var(--muted)}
/* ── отметка задачи (правки, пауза/у ИИ, на проверке/нет ответа, готово) — один стиль везде ── */
.tmark{flex:none}
.tmark .ico{width:13px;flex:none}





/* на карточке календаря/досок — в правом нижнем углу, в строке с людьми */
.dw-ev .dw-who{display:flex;align-items:center;gap:6px}
.dw-ev .dw-who .tmark{margin-left:auto}

.dw-ev--done > span:last-of-type::before{content:none}
/* в строках списков дашборда — после даты */
.atn-sub .tmark{margin-left:8px}
.atn-sub .atn-when + .tmark{margin-left:6px}
.atn-sub > .tmark:only-of-type{margin-left:auto}
/* окно задачи: компактная дорожка шагов + отметка */







.tp-ph--tk .tmark{margin-left:6px}



/* галочка на кнопках при наведении — лёгкий наклон, а не поворот на 90° (90° остаётся у «+») */

/* отметки на карточках — белая плашка, тёмный текст, цветная иконка: читается и на оранжевой карточке съёмки */







/* отметки задач и съёмок — единый вид: иконка всегда оранжевая, текст серый (на любой карточке, в т.ч. на оранжевой съёмке) */




.dw-ev .dw-who .tmark{flex:none}
/* основная кнопка в окнах подтверждения/проверки — сплошная оранжевая с белым текстом, как везде */


/* уведомления: иконки одного (оранжевого) цвета, без цветной полоски слева, текст во всю ширину — без пустоты под иконкой и крестиком */
:root .nc::before{content:none!important;display:none!important}
:root .nc .nc-ic{background:var(--accent-soft)!important;color:var(--accent)!important;width:32px;height:32px;border-radius:10px}
:root .nc .nc-ic svg{width:17px;height:17px}
:root .nc .nc-top{align-items:center}
:root .nc .nc-body,:root .nc .nc-more{margin-left:0}
:root .nc .nc-x{margin:0}
:root .nc .nc-x:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00)!important;color:#fff!important}
/* шапка календаря: месяц · Всё/Съёмки/Задачи · [отдел] + кнопки — симметрично на ПК и телефоне */
.dvh .dv-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;justify-self:end;min-width:0}


@media(max-width:1180px) and (min-width:641px){ .dvh .dv-right{margin-left:auto} }
@media(max-width:640px){
  .dv > .dv-head.dvh{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title dept" "tabs tabs" "add add";align-items:center;gap:10px}
  .dvh .dv-title{grid-area:title}
  .dvh #dvLayerTabs{grid-area:tabs;justify-self:stretch;width:100%}
  .dvh #dvLayerTabs .proj-tab{flex:1}
  .dvh .dv-right{display:contents}
  .dvh .dv-dept{grid-area:dept}
  
  
}
/* (поправка) ПК: месяц и вкладки слева, отдел и кнопки — справа, ничего не наезжает */
.dv > .dv-head.dvh:has(#dvLayerTabs){display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}
.dv > .dv-head.dvh:has(#dvLayerTabs) #dvLayerTabs{justify-self:auto}
.dv > .dv-head.dvh:has(#dvLayerTabs) .dv-right{margin-left:auto}
@media(max-width:640px){
  .dv > .dv-head.dvh:has(#dvLayerTabs){display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title dept" "tabs tabs" "add add";align-items:center;gap:10px}
  .dv > .dv-head.dvh:has(#dvLayerTabs) .dv-right{display:contents;margin:0}
}
/* фильтр отделов в календаре дашборда — точь-в-точь как на «Посещаемости»/«Команде» */




:root #dvDeptDD .dd-menu{min-width:230px}
:root #dvDeptDD .dd-opt{transition:background .14s,color .14s,transform .14s}
:root #dvDeptDD .dd-opt + .dd-opt{margin-top:2px}

:root #dvDeptDD .dd-menu .dd-opt.on,:root #dvDeptDD .dd-menu .dd-opt.on:hover{cursor:default}
:root #dvDeptDD .dd-opt.on .ck{color:#fff}


/* «Посещаемость»: раскрытый список отделов чуть шире — названия не жмутся */
:root .main[data-view="attendance"] #attDeptFilter .dd-menu{min-width:230px}

/* фильтр отделов: кнопка уже, список 230 px; на телефоне список открывается от правого края и не выходит за экран */
:root #dvDeptDD{width:150px}
@media(max-width:640px){
  :root #dvDeptDD .dd-menu{left:auto;right:0;min-width:230px;max-width:calc(100vw - 32px)}
}
/* нижнее меню: появляется снизу только при первом открытии; всегда у низа видимой части экрана */
@media(max-width:640px){
  .bnav{animation:none;translate:0 calc(-1 * var(--vvb,0px));transition:translate .18s ease-out}
  .bnav.bn-enter{animation:bnIn .5s cubic-bezier(.16,1,.3,1) both}
}
/* телефон: карточки задач и съёмок шире — в календаре видно ~1¼ дня (соседний выглядывает, можно листать), на доске проекта — по одной карточке в ряд */
@media(max-width:640px){
  .dw-col{flex-basis:calc(100%/1.25*var(--n,1));width:calc(100%/1.25*var(--n,1));padding:12px 8px 14px}
  .pjb-col{grid-template-columns:minmax(0,1fr)}
}
/* цифры на странице проекта: текстовое значение вместо числа не вылезает за свою колонку */
.db-merged .db-r{min-width:0}
.db-merged .db-r b.txt{font-size:24px;line-height:1.15;white-space:normal;overflow-wrap:anywhere;letter-spacing:-.01em;min-height:46px;display:flex;align-items:flex-end;padding-bottom:4px;box-sizing:border-box}
@media(max-width:640px){ .db-merged .db-r b.txt{font-size:20px;min-height:40px;padding-bottom:3px} }
/* утверждение директором: «Ждёт директора» — неактивная плашка на странице черновика */

.apv .apv-r{cursor:default}
.apv .apv-r[role="button"]{cursor:pointer}
.apv-tag{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:2px 8px;border-radius:99px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-size:11px;font-weight:700;vertical-align:2px}
.apv-tag svg{width:12px;height:12px}
@media(max-width:640px){ .apv-long{display:none} }
/* страница проекта: плашка черновика / переносов — без лишнего отступа, расстояние до блока «Задачи» как между остальными блоками */
.pjp2 > .pj-draft-note,.pjp2 > .pj-dl{margin:0}

.pj-dl:not(:has(*)){display:none}
/* плашка «Черновик» / «На утверждении у директора» на странице проекта — белая, как карточки блоков */
.pjp2 > .tks-note.pj-draft-note{background:var(--surface);box-shadow:inset 0 0 0 1px var(--border);border-radius:18px;padding:14px 16px}
:root[data-theme="light"] .pjp2 > .tks-note.pj-draft-note{box-shadow:0 1px 2px rgba(0,0,0,.08),0 8px 18px -14px rgba(0,0,0,.3)}
/* «Требует внимания»: перенос съёмки/срока раскрывается — внутри карточки съёмки (все операторы этого дня) */





.atn-x-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.atn-x-cards .dw-ev{margin:0}
@keyframes atnXIn{from{opacity:0;transform:translateY(-4px)}}
@media(max-width:640px){  .atn-x-cards{grid-template-columns:minmax(0,1fr)} }

/* ============ «Проекты»: папки ============ */
.pjf-page .page-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.pjf-bar-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:4px 0 22px}
.pjf-chips{display:flex;gap:8px;flex-wrap:wrap}

.pjf-chip i{min-width:20px}



.pjf-tools{display:flex;gap:8px;align-items:center}
.pjf-q{width:260px;margin:0}
.pjf-gbtn.on{color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.pjf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:26px 16px;grid-auto-flow:row dense;padding-top:14px}


.pjf-tab{position:absolute;left:0;top:-12px;width:46%;height:13px;border-radius:10px 14px 0 0;background:var(--tone)}


.pjf--crit{--tone:var(--crit);--tone-soft:var(--crit-soft)}
.pjf--warn{--tone:var(--warn);--tone-soft:var(--warn-soft)}
.pjf--ok{--tone:var(--ok);--tone-soft:var(--ok-soft)}
.pjf--draft{--tone:var(--muted);--tone-soft:var(--surface-2)}
.pjf--draft .pjf-tab{background:repeating-linear-gradient(135deg,var(--muted) 0 6px,transparent 6px 10px)}
.pjf--done{--tone:var(--accent);--tone-soft:var(--accent-soft)}
.pjf-top{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.pjf-cl{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pjf-b{flex:none;font-size:11px;font-weight:700;padding:3px 9px;border-radius:99px;background:var(--tone-soft);color:var(--tone)}
.pjf--draft .pjf-b{color:var(--text-2)}
.pjf-t{font-size:16px;line-height:1.25;font-weight:700;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:40px}
.pjf-bar{height:5px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.pjf-bar i{display:block;height:100%;border-radius:inherit;background:var(--tone);transition:width .4s ease}
.pjf-bot{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.pjf-m{font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-flex;align-items:center;gap:4px}
.pjf-m .ico,.pjf-m svg{width:14px;height:14px;vertical-align:-2px}
.pjf-m .neg{color:var(--crit);font-weight:600}
.pjf-team{display:flex;flex:none}
.pjf-team > *{margin-left:-6px;box-shadow:0 0 0 2px var(--surface);border-radius:50%}
.pjf-team em{font-style:normal;font-size:11px;color:var(--muted);margin-left:4px;box-shadow:none;align-self:center}
.pjf-open{grid-column:1/-1;margin-top:-8px;border-radius:22px;padding:6px 0 0;animation:pjfIn .28s cubic-bezier(.16,1,.3,1) both}
.pjf-open .pjf-detail{display:flex;flex-direction:column;gap:20px}
.pjf-open .db-heroc.db-merged{background:var(--surface);border-radius:22px;padding:22px 24px 16px;box-shadow:inset 0 0 0 1px var(--border)}
:root[data-theme="light"] .pjf-open .db-heroc.db-merged{box-shadow:0 1px 2px rgba(0,0,0,.06),0 8px 18px -14px rgba(0,0,0,.28)}
@keyframes pjfIn{from{opacity:0;transform:translateY(-8px)}}
.pjf-grp{margin-bottom:26px}
.pjf-gh{font-size:15px;font-weight:700;display:flex;align-items:baseline;gap:8px;margin-bottom:2px}
.pjf-gh em{font-style:normal;font-size:12px;font-weight:500;color:var(--muted)}
.pjf-empty{display:flex;align-items:center;gap:8px;justify-content:center;padding:48px 0;color:var(--muted)}
@media(max-width:640px){
  .pjf-bar-top{flex-direction:column;align-items:stretch}
  .pjf-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px}
  .pjf-chip{flex:none}
  .pjf-tools{width:100%} .pjf-q{flex:1;width:auto}
  .pjf-grid{grid-template-columns:minmax(0,1fr);gap:24px}
  .pjf-open .db-heroc.db-merged{padding:16px 14px 10px}
}
/* ===== «Проекты» v2: один фирменный цвет, проект открывается из папки поверх страницы ===== */



.pjf--late .pjf-b{color:var(--crit)}
.pjf--draft .pjf-tab{background:var(--accent-soft)}




/* прокрутку страницы под окном проекта гасим обработчиком (overflow:hidden на html ломал «липкое» боковое меню) */



.pjs{position:relative;width:min(1180px,100%);background:var(--surface);border-radius:26px;padding:24px 26px 26px;box-shadow:0 30px 80px -30px rgba(0,0,0,.55);display:flex;flex-direction:column;gap:18px;will-change:transform}
.pjs::before{content:"";position:absolute;left:0;top:-14px;width:180px;height:15px;border-radius:12px 16px 0 0;background:var(--accent)}


@keyframes pjsFade{from{opacity:0}}
@keyframes pjsRise{from{opacity:0;transform:translateY(24px) scale(.98)}}
.pjs-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.pjs-ht{min-width:0}
.pjs-k{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.pjs-ht h2{font-family:var(--font-display);font-size:26px;line-height:1.15;font-weight:800;letter-spacing:-.02em;margin:4px 0 8px}





.pjs-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}

.pjs-x{flex:none;margin-left:4px}
.pjs-nums{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.pjs-n{background:var(--surface-2);border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.pjs-n b{font-family:var(--font-display);font-size:26px;line-height:1.1;font-weight:800;letter-spacing:-.02em}
.pjs-n b.txt{font-size:17px;line-height:1.3}
.pjs-n b.neg{color:var(--crit)}
.pjs-n b em{font-style:normal;font-size:15px;font-weight:500;color:var(--muted);margin-left:2px}
.pjs-n span{font-size:12px;color:var(--muted)}
.pjs-note{display:flex;gap:10px;align-items:flex-start;background:var(--accent-soft);border-radius:16px;padding:12px 14px;font-size:13px}
.pjs-note .ico,.pjs-note svg{width:18px;height:18px;color:var(--accent);flex:none;margin-top:1px}
.pjs-note b{display:block}.pjs-note span{display:block;color:var(--text-2);margin-top:2px}
.pjs .pj-dl{margin:0}
.pjs .apv{box-shadow:none;background:var(--surface-2);border-radius:16px}
.pjs-tabbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:16px}
.pjs-tabs{margin:0}
.pjs-tabs .proj-tab i{margin-left:6px}
.pjs-add{display:flex}
.pjs-body{min-height:160px}
.pjs-body .pjb{padding:0}
.pjs-body .pjx-body{padding:0}
@media(max-width:640px){
  
  .pjs{border-radius:0;min-height:100%;padding:18px 16px calc(110px + env(safe-area-inset-bottom));gap:14px}
  .pjs::before{display:none}
  .pjs-head{flex-direction:column}
  .pjs-x{position:absolute;top:12px;right:12px}
  .pjs-ht{padding-right:44px}
  .pjs-ht h2{font-size:22px}
  .pjs-acts{justify-content:flex-start}
  .pjs-nums{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pjs-tabs{width:100%;overflow-x:auto;scrollbar-width:none}
  .pjs-tabs .proj-tab{flex:none}
}
.pjs-body .pjb{grid-template-columns:repeat(4,minmax(0,1fr));padding:0}
@media(max-width:640px){ .pjs-body .pjb{grid-template-columns:minmax(0,1fr)} }
/* ===== «Проекты» v3 ===== */
/* папка: ярлычок выше и с тем же градиентом, что у кнопок; при наведении — подъём и тень без обводки (ярлычок не съезжает) */

.pjf--draft .pjf-tab{background:linear-gradient(180deg,#ffc7a3,#ffb183)}
.pjf-grid{gap:30px 16px;padding-top:16px}



/* окно проекта: фиксированный размер (ставит JS), внутри прокручивается только содержимое */



.pjs{position:fixed;width:auto;margin:0;padding:0;gap:0;border-radius:24px;overflow:hidden;box-shadow:0 30px 70px -20px rgba(0,0,0,.6),0 0 0 1px var(--border);display:block;will-change:left,top,width,height}
.pjs::before{display:none}
.pjs-in{height:100%;display:flex;flex-direction:column;opacity:0;transition:opacity .22s ease}
.pjs.pjs-ready .pjs-in{opacity:1}



.pjs .pjs-head{padding:22px 26px 6px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex:none}



.pjs-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:8px 26px 26px;display:flex;flex-direction:column;gap:16px}
.pjs .pjs-nums{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.pjs .pjs-n{background:none;padding:4px 0;border-radius:0}
.pjs .pjs-n b{font-size:38px;line-height:1.05}
.pjs .pjs-n b.txt{font-size:20px;line-height:1.3;padding-top:8px}
.pjs .pjs-n b em{font-size:20px}
.pjs .pjs-n span{font-size:13px;color:var(--text-2)}
.pjs .pjs-tabbar{border-top:0;padding-top:0;position:sticky;top:-8px;z-index:2;background:var(--surface);margin:0 -26px;padding:8px 26px}
.pjs .pjs-tabs{position:relative}
.pjs .pjs-tabs .proj-tab{position:relative;z-index:1}

.pjs .pjs-tabs .proj-tab i{margin-left:6px}
.pjs-body.pjs-swap{animation:pjsSwap .25s ease both}
@keyframes pjsSwap{from{opacity:0;transform:translateY(6px)}}
@media(max-width:640px){
  .pjs{border-radius:20px;min-height:0;padding:0}
  .pjs .pjs-head{padding:16px 16px 4px;flex-direction:column;position:relative}
  .pjs .pjs-x{position:absolute;top:10px;right:10px}
  .pjs .pjs-ht{padding-right:40px}
  
  .pjs-scroll{padding:6px 16px 20px}
  .pjs .pjs-nums{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}
  .pjs .pjs-n b{font-size:30px}
  .pjs .pjs-tabbar{margin:0 -16px;padding:6px 16px}
}
/* «Проекты»: активный фильтр — тем же градиентом, что плашка вкладок; поиск — как на «Команде» */

.pjf-q{width:260px}
.pjs .pjs-in{opacity:1;transition:none}
@media(max-width:640px){ .pjf-tools{width:100%} .pjf-q{flex:1;width:auto!important} }
/* опрос клиента (NPS) */
.nps{display:flex;flex-direction:column;gap:14px}
.nps-empty{display:flex;align-items:center;gap:8px;padding:14px;border-radius:14px;background:var(--surface-2)}
.nps-res{display:grid;gap:8px}
.nps-r{position:relative;display:flex;align-items:baseline;justify-content:space-between;padding:10px 14px;border-radius:12px;background:var(--surface-2);overflow:hidden;font-size:13px}
.nps-r i{position:absolute;left:0;bottom:0;height:3px;width:var(--w);background:var(--accent)}
.nps-r b{font-family:var(--font-display);font-size:18px}
.nps-r b em{font-style:normal;font-size:12px;color:var(--muted);font-weight:500}
.nps-how{display:grid;gap:10px}
.nps-step{display:flex;flex-direction:column;gap:4px;font-size:13px}
.nps-step span{color:var(--text-2)}
.nps-step code{background:var(--surface-2);padding:1px 6px;border-radius:6px}
.nps-link{display:flex;gap:8px;margin-top:6px}
.nps-link .in{flex:1;min-width:0}
.nps-act{display:grid;gap:8px;font-size:13px}
.nps-ar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 8px 8px 14px;border-radius:12px;background:var(--surface-2);color:var(--text-2)}
.pjs .pjs-head .pjs-acts{flex-wrap:nowrap;flex:none} .pjs .pjs-head .pjs-ht{flex:1}
@media(max-width:640px){ .pjs .pjs-head .pjs-acts{flex-wrap:wrap;flex:initial} }
/* чек-лист задачи */
.tck{display:flex;flex-direction:column;gap:4px;background:var(--surface-2);border-radius:14px;padding:12px 14px}
.tck-h{position:relative;display:flex;align-items:baseline;justify-content:space-between;padding-bottom:8px;margin-bottom:4px}
.tck-h span{font-size:12px;color:var(--muted)}
.tck-h i{position:absolute;left:0;right:0;bottom:0;height:4px;border-radius:99px;background:var(--surface);overflow:hidden}
.tck-h i::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--w);background:linear-gradient(90deg,#ff7a2e,#ff5d00);border-radius:inherit;transition:width .3s ease}
.tck-r{display:flex;align-items:center;gap:10px;padding:7px 4px;border-radius:10px;cursor:pointer;font-size:13.5px}
.tck-r input{position:absolute;opacity:0;pointer-events:none}
.tck-r .box{flex:none;width:20px;height:20px;border-radius:6px;box-shadow:inset 0 0 0 1.5px var(--border-strong);background:var(--surface);display:grid;place-items:center;transition:background .15s,box-shadow .15s}
.tck-r.on .box{background:var(--accent);box-shadow:none}
.tck-r.on .box::after{content:"";width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:translateY(-1px) rotate(-45deg)}
.tck-r .tx{flex:1;min-width:0}
.tck-r.on .tx{color:var(--muted);text-decoration:line-through}
.tck-r em{font-style:normal;font-size:11.5px;color:var(--muted);white-space:nowrap}
.tck-x{border:0;background:none;color:var(--muted);padding:2px;cursor:pointer;opacity:.6}
.tck-x:hover{opacity:1;color:var(--crit)}
.tck-x .ico,.tck-x svg{width:14px;height:14px}
.tck-add{display:flex;gap:8px;margin-top:6px}
.tck-add .in{flex:1;min-width:0}
/* календарь: вкладка «Монтаж» */
.dw[data-layer="mont"] .dw-ev[data-l]:not([data-l="mont"]){display:none}
.dw[data-layer="mont"] .dw-col{--n:var(--nm)!important}
.dw[data-layer="tasks"] .dw-ev[data-l="mont"]{display:none}
/* календарь: фильтр «Всё / Съёмки / Монтаж / Задачи» — ровно посередине между датой и кнопками (равные отступы) */
@media(min-width:641px){
  .dv > .dv-head.dvh:has(#dvLayerTabs){flex-wrap:nowrap}
  .dv > .dv-head.dvh:has(#dvLayerTabs) #dvLayerTabs{margin:0 auto!important;flex:none}
  .dv > .dv-head.dvh:has(#dvLayerTabs) .dv-right{margin-left:0!important;flex:none}
  .dv > .dv-head.dvh:has(#dvLayerTabs) .dv-title{flex:none}
}
/* окно задачи: люди без @ника, съёмка (локация, отметки), чек-лист на белом */
.tk2-people{align-items:center}









  
.tks-vids--muted em{font-style:normal;font-size:12px;color:var(--muted);margin-right:4px}
.tks-vids--muted span{opacity:.7}
.tck{background:var(--surface);box-shadow:inset 0 0 0 1px var(--border)}
.tck-h i{background:var(--surface-2)}
.tck-x.pay-hist-x{opacity:1}

.tck-r.half .box{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}
.tck-r.half .box::after{border-color:var(--accent)}
.tck-r.tck-bad{animation:tckBad .6s ease}
@keyframes tckBad{20%,60%{background:var(--crit-soft);transform:translateX(-3px)}40%,80%{transform:translateX(3px)}}
/* «Новая задача»: проект в одну строку, иконки в кнопках по центру */
.wz-tk-proj{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.wz-tk-proj .wz-s1-lbl{margin:0}
.wz-tk-psel{min-width:280px;max-width:420px;flex:1}

.wz-pill .ico,.wz-pill svg{flex:none;width:14px;margin:0;align-self:center}
.tk2-who{display:flex;align-items:center;gap:10px;min-width:0}
.tk2-who .dw-stack{display:flex}
.tk2-who .dw-stack > *{margin-left:-8px;box-shadow:0 0 0 2px var(--surface);border-radius:50%}
.tk2-who .dw-stack > *:first-child{margin-left:0}
.tk2-who b{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tk2-kvs .tk2-kv a{color:var(--accent);font-weight:600}
.tk2-kvs[hidden]{display:none!important}

:root #dvDeptDD .dd-menu{max-height:min(360px,60vh);overflow-y:auto;overscroll-behavior:contain}
/* фильтр по сотрудникам: раскрытый список — по ширине имён, без пустоты */
:root #dvDeptDD .dd-menu{min-width:100%;width:max-content;max-width:220px}
/* блок «Проекты»: сданные — в той же сетке (колонки совпадают), без лишнего отступа над разделителем */





/* ── история задачи: кто поставил, принял/отклонил, сдал — лента с иконками ── */
.tkh{border:1px solid var(--border);border-radius:14px;padding:0 14px}
.tkh summary{cursor:pointer;padding:12px 0;font-size:13px;font-weight:600;list-style:none;display:flex;align-items:center;gap:8px}
.tkh summary::-webkit-details-marker{display:none}
.tkh summary em{font-style:normal;font-size:11.5px;font-weight:700;color:var(--muted);background:var(--surface-3);border-radius:999px;padding:2px 8px}
.tkh summary::after{content:'›';margin-left:auto;transition:transform .2s;color:var(--muted)}
.tkh[open] summary::after{transform:rotate(90deg)}
.tkh-l{display:grid;gap:0;padding:0 0 12px;position:relative}
.tkh-r{display:flex;gap:10px;align-items:flex-start;padding:7px 0;position:relative}
.tkh-r:not(:last-child)::before{content:'';position:absolute;left:13px;top:33px;bottom:-7px;width:1.5px;background:var(--border)}
.tkh-ic{flex:none;width:27px;height:27px;border-radius:9px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.tkh-ic .ico,.tkh-ic svg{width:14px;height:14px}
.tkh-r>div{display:flex;flex-direction:column;gap:1px;min-width:0;padding-top:1px}
.tkh-r b{font-size:13px;font-weight:600}
.tkh-r span{font-size:12px;color:var(--muted)}
.tkh-r em{font-style:normal;font-size:12.5px;line-height:1.4;margin-top:3px;padding:6px 10px;border-radius:10px;background:var(--surface-3);color:var(--text)}
.tkh--reject .tkh-ic,.tkh--decline .tkh-ic,.tkh--return .tkh-ic{background:color-mix(in srgb,var(--crit) 12%,transparent);color:var(--crit)}
.tkh--reject em,.tkh--decline em,.tkh--return em{background:color-mix(in srgb,var(--crit) 8%,transparent)}
.tkh--receive .tkh-ic,.tkh--done .tkh-ic,.tkh--ack .tkh-ic{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}
/* ── «Мои задачи» / «Требует внимания»: строки одной сетки — иконка · название и подпись в одну строку · срок · кнопки справа ── */
.mt.pj-card{padding:16px 0 6px;gap:0}




.mt-r{display:grid;grid-template-columns:18px minmax(0,1fr) 84px 240px;column-gap:12px;align-items:center;padding:9px 16px;cursor:pointer;transition:background .15s}

.mt-l .mt-r + .mt-r{border-top:1px solid var(--border)}


.mt-t{min-width:0;display:flex;flex-direction:column;gap:2px}
.mt-t b{display:flex;align-items:center;gap:6px;min-width:0;font-size:14px;font-weight:700;line-height:1.3}
.mt-t b>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mt-t em{font-style:normal;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}


.mt-d{text-align:right;font-size:12.5px;font-weight:700;white-space:nowrap;line-height:1.25}
.mt-d i{display:block;font-style:normal;font-weight:500;font-size:11.5px;color:var(--muted)}
.mt-d.late,.mt-d.late i{color:var(--crit)}
.mt-a{display:flex;gap:6px;justify-content:flex-end;min-width:0}
.mt-a .btn{flex:1 1 auto;min-width:0}

.mt-a .btn .ico{width:15px;flex:none}
.mt-a .btn.mt-sq{flex:0 0 34px}
.mt-w{flex:1;text-align:right;font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mt .rvq-more{margin-top:4px}
.mt .db-ok{padding:24px 16px}
/* в блоке директора — с теми же отступами, что соседние строки */
.atn-list .mt-r{padding:11px 20px}
.atn-list .mt-r + .mt-r,.atn-list .atn-r + .mt-r,.atn-list .mt-r + .atn-r{border-top:1px solid var(--border)}
@media (max-width:640px){
  .mt-r{grid-template-columns:18px minmax(0,1fr) auto;row-gap:8px;padding:10px 14px}
  .mt-a{grid-column:1/-1}
  
  
  .atn-list .mt-r{padding:11px 16px}
}
/* «Мои задачи»: общая сетка (subgrid) — срок и кнопки в одних колонках, кнопки по ширине текста, без растяжения */
.mt.pj-card{padding:14px 0 8px;overflow:hidden;align-self:start}
.mt-l{display:grid;grid-template-columns:18px minmax(0,1fr) auto auto;column-gap:14px;padding:0 6px}

.mt-l > .mt-r{grid-column:1/-1;display:grid;grid-template-columns:subgrid;padding:9px 10px;border-radius:12px;border-top:0}
.mt-l > .mt-r + .mt-r{position:relative}
.mt-l > .mt-r + .mt-r::before{content:"";position:absolute;left:10px;right:10px;top:0;height:1px;background:var(--border)}
.mt-l > .mt-r:hover::before,.mt-l > .mt-r:hover + .mt-r::before{opacity:0}
.mt-l .mt-a{justify-content:flex-end}
.mt-l .mt-a .btn{flex:none}
.mt-l .mt-a .btn.mt-sq{flex:none;width:34px}
.mt-l .mt-d{min-width:70px}
.mt .rvq-more{margin-top:2px}
.pmx-b > .mt{align-self:start}
@media (max-width:640px){
  .mt-l{grid-template-columns:18px minmax(0,1fr) auto;padding:0 4px}
  .mt-l > .mt-r{grid-template-columns:subgrid}
  .mt-l .mt-a{grid-column:1/-1}
  .mt-l .mt-a .btn{flex:1 1 0}
  .mt-l .mt-a .btn.mt-sq{flex:none}
}
.mt-l > .mt-r,.mt-l > .mt-r + .mt-r{border-top:0;column-gap:14px}

/* у subgrid отступ строки съедает крайнюю колонку — колонка иконки с запасом на него */
.mt-l{grid-template-columns:28px minmax(0,1fr) auto auto}
@media (max-width:640px){ .mt-l{grid-template-columns:28px minmax(0,1fr) auto} }
/* «Мои задачи» на компьютере: высота как у соседних карточек; список листается стрелками внизу */












/* «Мои задачи» на компьютере: страницы постоянной высоты (до 4 строк), листание ‹ › внизу */






/* «Мои задачи» / «Требует внимания» — наверху на всю ширину; ниже профиль и «Финансы» рядом */
.page > .mt.pj-card{padding-bottom:6px}
.pmx-b{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}








@media(max-width:1100px){.pmx-b{grid-template-columns:minmax(0,1fr)}}

.page > .mt.pj-card{align-self:stretch;width:auto}





/* «Финансы» рядом с профилем: края ближе, кнопки друг над другом, разделитель на всю ширину */








/* ── карточка «я»: крупные очки, уровень, понятные цифры, приход за 2 недели ── */

























/* «Финансы»: запросы листаются */









/* карточка «я» — проще: имя, очки, три цифры, приход одной строкой */















/* ── блоки задач (сотрудник, PM, директор) — одна разметка: заголовок и вкладки, линия во всю ширину,
   строки во всю ширину с разделителями и подсветкой как у директора; срок и кнопки в общих колонках ── */
.atn.dv{padding-top:16px}
.atn .dv-head{padding-bottom:14px}
.atn .atn-list{padding:0}
.atn-list .mt-l{display:grid;grid-template-columns:38px minmax(0,1fr) auto auto;column-gap:14px;padding:0}
.atn-list .mt-l > *{grid-column:1/-1}
.atn-list .mt-l > .mt-r{display:grid;grid-template-columns:subgrid;column-gap:14px;padding:12px 20px;border-radius:0;border-top:1px solid var(--border);transition:background .18s}
.atn-list .mt-l > .mt-r::before{content:none}

.atn-list .mt-l > .atn-r:first-child,.atn-list .mt-l > .mt-r:first-child{border-top:1px solid var(--border)}
.mt-l .mt-a .btn{flex:none}
.mt-l .mt-a .btn.mt-sq{width:34px}



@media (max-width:640px){
  .atn-list .mt-l{grid-template-columns:34px minmax(0,1fr) auto}
  .atn-list .mt-l > .mt-r{padding:12px 16px}
  .atn-list .mt-l .mt-a{grid-column:1/-1}
  .atn-list .mt-l .mt-a .btn{flex:1 1 0}
  .atn-list .mt-l .mt-a .btn.mt-sq{flex:none}
}
/* строки задач: срок стоит прямо слева от кнопок (не в отдельной колонке), бейджи — как на карточках задач */
.atn-list .mt-l{display:block}
.atn-list .mt-l > .mt-r{display:grid;grid-template-columns:18px minmax(0,1fr) auto;column-gap:14px}
.mt-e{display:flex;align-items:center;justify-content:flex-end;gap:16px;min-width:0}
.mt-e .mt-d{min-width:0}
.mt-e .mt-d:empty{display:none}
.mt-e .mt-a:empty{display:none}
.mt-e .mt-a{flex:none}
.mt-t b .tmark{flex:none}
.mt-t b .tmark .ico{width:12px}
.mt-t b{gap:8px}
@media (max-width:640px){
  .atn-list .mt-l > .mt-r{grid-template-columns:18px minmax(0,1fr) auto}
  .mt-e{display:contents}
  .mt-e .mt-d{grid-column:3;grid-row:1}
  .atn-list .mt-l .mt-a{grid-column:1/-1;display:flex}
}
/* чужие задачи — аватар человека с маленькой иконкой задачи; свои — только иконка задачи */
.atn-list .mt-l > .mt-r{grid-template-columns:30px minmax(0,1fr) auto}

.mt-av{position:relative;width:30px;height:30px;display:grid;place-items:center}
.mt-av .avatar{width:30px;height:30px;font-size:11px}
.mt-av > i{position:absolute;right:-4px;bottom:-3px;width:16px;height:16px;border-radius:50%;background:var(--surface-2);color:var(--accent);display:grid;place-items:center;box-shadow:0 0 0 1.5px var(--surface-2)}
.mt-av > i .ico,.mt-av > i svg{width:11px;height:11px}
@media (max-width:640px){ .atn-list .mt-l > .mt-r{grid-template-columns:30px minmax(0,1fr) auto} }
.atn-list .mt-l > .mt-r{grid-template-columns:34px minmax(0,1fr) auto}
.mt-av{width:34px;height:34px}
.mt-av .avatar{width:34px!important;height:34px!important;min-width:34px;font-size:12px!important;letter-spacing:0;overflow:hidden}
.mt-av > i{right:-5px;bottom:-4px;width:17px;height:17px}
@media (max-width:640px){ .atn-list .mt-l > .mt-r{grid-template-columns:34px minmax(0,1fr) auto} }
/* съёмка — две аватарки внахлёст: оператор и PM */
.atn-list .mt-l > .mt-r{grid-template-columns:50px minmax(0,1fr) auto}
.mt-av{width:50px;justify-content:start;display:flex}
.mt-av .avatar + .avatar{margin-left:-14px}
.mt-av > i{right:auto;left:22px}
.mt-av.two > i{left:36px}
@media (max-width:640px){ .atn-list .mt-l > .mt-r{grid-template-columns:50px minmax(0,1fr) auto} }
.atn-list .mt-l > .mt-r{grid-template-columns:56px minmax(0,1fr) auto}
.mt-av{width:56px}
.mt-av.two .avatar{width:30px!important;height:30px!important;min-width:30px;font-size:11px!important}
.mt-av.two .avatar + .avatar{margin-left:-8px}
.mt-av.two > i{left:40px}
@media (max-width:640px){ .atn-list .mt-l > .mt-r{grid-template-columns:56px minmax(0,1fr) auto} }
/* окно задачи: чего ждёт задача в очереди — список задач как в «Мои задачи»; бейдж статуса как на карточках */
.tk-wait{border:1px solid var(--border);border-radius:14px;overflow:hidden}
.tk-wait-h{display:flex;align-items:center;gap:8px;padding:11px 14px;font-size:13px;flex-wrap:wrap}
.tk-wait-h > .ico,.tk-wait-h > svg{width:16px;height:16px;color:var(--accent)}
.tk-wait-h b{font-weight:700}
.tk-wait-h em{font-style:normal;font-size:11.5px;font-weight:700;color:var(--muted);background:var(--surface-3);border-radius:999px;padding:2px 8px}
.tk-wait-h span{color:var(--muted);font-size:12.5px;margin-left:auto}
.tk-wait .atn-list .mt-l > .mt-r{padding:10px 14px}
.tk2-people > .tmark{margin-left:auto;flex:none}
/* одна аватарка — текст ближе; две (съёмка: оператор и PM) — колонка шире */
.atn-list .mt-l > .mt-r{grid-template-columns:36px minmax(0,1fr) auto}
.atn-list .mt-l > .mt-r.two{grid-template-columns:56px minmax(0,1fr) auto}
.mt-av{width:36px}
.mt-r.two .mt-av{width:56px}
@media (max-width:640px){ .atn-list .mt-l > .mt-r{grid-template-columns:36px minmax(0,1fr) auto} .atn-list .mt-l > .mt-r.two{grid-template-columns:56px minmax(0,1fr) auto} }
/* окно задачи: блок «Ждёт закрытия задач» плотнее, без пустоты внизу; название проекта крупнее */
.tk-wait .atn-list{padding:0}
.tk-wait-h{padding:10px 14px 9px}
.tk-wait .atn-list .mt-l > .mt-r{padding:9px 14px}
.tk2 .tk2-proj{font-size:14px;color:var(--muted)}
.tk2 .tk2-proj b{font-size:16px;font-weight:700;color:var(--text)}
/* строки задач во всех блоках: одна аватарка — текст ближе, две — колонка шире */
.atn-list .mt-l > .mt-r{grid-template-columns:34px minmax(0,1fr) auto;column-gap:12px}
.atn-list .mt-l > .mt-r.two{grid-template-columns:54px minmax(0,1fr) auto}
.mt-av{width:34px}
.mt-r.two .mt-av{width:54px}
@media (max-width:640px){ .atn-list .mt-l > .mt-r{grid-template-columns:34px minmax(0,1fr) auto} .atn-list .mt-l > .mt-r.two{grid-template-columns:54px minmax(0,1fr) auto} }
.tk2 .tk2-proj b{font-size:15px;font-weight:600}
/* чек-лист: крестик — серый, при наведении оранжевый градиент и поворот (как у «+»); «Добавить пункт» — по кнопке */
.tck .tck-x{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--text) 8%,transparent);color:var(--muted);border:0;transition:background .18s,color .18s,transform .25s}
.tck .tck-x:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;transform:rotate(90deg)}
.tck .tck-x .ico,.tck .tck-x svg{width:13px;height:13px}
.tck-add-btn{display:flex;align-items:center;justify-content:center;width:100%;margin-top:6px}

.tck-add-btn .ico,.tck-add-btn svg{width:15px}
.tck-add--form{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:8px;margin-top:6px;align-items:end}
.tck-add--form > .in{grid-column:1/-1}
.tck-due{display:flex;flex-direction:column;gap:4px;grid-column:1/2}
.tck-due span{font-size:12px;color:var(--muted);font-weight:600}
.tck-add-acts{display:flex;gap:6px;justify-content:flex-end;grid-column:2/3}

@media (max-width:640px){.tck-add--form{grid-template-columns:1fr}.tck-due,.tck-add-acts{grid-column:1/-1}}
/* история: аватар того, кто сделал действие, с оранжевой иконкой в кружке — как в блоках задач */
.tkh-r > .mt-av{flex:none;width:34px;height:34px;position:relative;display:flex}
.tkh-r > .mt-av .avatar{width:34px!important;height:34px!important;font-size:12px!important}
.tkh-r > .mt-av > i{position:absolute;left:20px;right:auto;bottom:-3px}
.tkh-r b > span{font-weight:500;color:var(--text-2)}
.tkh-r:not(:last-child)::before{left:16px;top:38px}
.tkh--dlno .tkh-ic{background:color-mix(in srgb,var(--crit) 12%,transparent);color:var(--crit)}
.tkh--dlno em{background:color-mix(in srgb,var(--crit) 8%,transparent)}
/* окно съёмки: где снимаем + кто на площадке (аватар, имя, роль, отметка) */
.tsh{border:1px solid var(--border);border-radius:14px;overflow:hidden}
.tsh-loc{display:flex;align-items:center;gap:12px;padding:12px 14px}
.tsh-loc > .ico,.tsh-loc > svg{width:20px;height:20px;color:var(--accent);flex:none}
.tsh-loc > div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tsh-loc b{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsh-loc span{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsh-loc .btn{flex:none}
.tsh-loc--none b{color:var(--text-2)}
.tsh-ms{border-top:1px solid var(--border);padding:8px 14px 10px}
.tsh-h{font-size:11.5px;font-weight:700;color:var(--muted);padding:2px 0 6px}
.tsh-m{display:flex;align-items:center;gap:10px;padding:6px 0}
.tsh-m + .tsh-m{border-top:1px solid var(--border)}
.tsh-m .avatar{width:32px;height:32px;flex:none}
.tsh-m > div{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.tsh-m b{font-size:13.5px;font-weight:700}
.tsh-m > div span{font-size:12px;color:var(--muted)}
.tsh-st{font-style:normal;font-size:12px;font-weight:700;white-space:nowrap}
.tsh-st--ok{color:var(--ok)}
.tsh-st--bad{color:var(--crit)}
.tsh-st--wait{color:var(--muted)}
@media (max-width:640px){.tsh-loc{flex-wrap:wrap}.tsh-loc .btn{flex:1}}
.tk2-kvs > .tk2-kv:only-child{grid-column:1/-1}
/* цепочка ролика в окне задачи: текущий шаг подсвечен, остальные открываются нажатием */
.tk-chain .mt-l > .tch2{display:contents}
.tk-chain .tch2 > .mt-r{grid-column:1/-1;display:grid;grid-template-columns:34px minmax(0,1fr) auto;column-gap:12px;padding:9px 14px;border-top:1px solid var(--border);transition:background .18s}
.tk-chain .tch2 > .mt-r.two{grid-template-columns:54px minmax(0,1fr) auto}

.tk-chain .tch2.me > .mt-r{background:var(--accent-soft);cursor:default}
.tk-chain .tch2.me > .mt-r{box-shadow:inset 3px 0 0 var(--accent)}
/* текущий шаг цепочки — без подсветки и полосы: статус и так виден по бейджу */
.tk-chain .tch2.me > .mt-r{background:none;box-shadow:none}

/* цепочка: текущий этап — ярко, пройденные и будущие — приглушены */
.tk-chain .tch2.done > .mt-r,.tk-chain .tch2.next > .mt-r{opacity:.5}
.tk-chain .tch2.done > .mt-r:hover,.tk-chain .tch2.next > .mt-r:hover{opacity:.8}
.tk-chain .tch2.now > .mt-r .mt-t b > span{font-weight:800}
/* вкладка «История» в блоке задач: фильтры в одну строку, итог справа */
.th-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:0 20px 14px}
.th-bar .pay-hist-period{margin-left:0}
.th-stat{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--muted);white-space:nowrap}
.atn .th-bar + .atn-list .mt-l > .mt-r:first-child{border-top:1px solid var(--border)}
@media (max-width:640px){.th-bar{padding:0 16px 12px}.th-bar .dd{width:100%!important}.th-stat{margin-left:0}}
/* ── фильтры-выпадашки во всех панелях: скруглённые «пилюли» шириной по тексту, список по ширине самого длинного пункта, без переносов ── */
:root .dd.dd--flt{width:auto!important;min-width:0;flex:none;display:inline-block}
:root .dd.dd--flt .dd-trigger{width:auto}



:root .dd.dd--flt .dd-menu{right:auto;min-width:100%;width:max-content;max-width:min(380px,calc(100vw - 32px))}
:root .dd.dd--flt .dd-opt{white-space:nowrap;gap:14px}
@media (max-width:640px){ :root .dd.dd--flt{max-width:100%}  }
/* низ окна задачи: слева — перенос, передача, проект; справа — действия по статусу */
.tk2-foot{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}



@media (max-width:640px){.tk2-foot .btn{flex:1 1 auto}}
/* карточка задачи: вместо «⋯» — бейдж статуса в правом верхнем углу */
.dw-ev{position:relative}
.dw-ev .dw-mk{position:absolute;top:7px;right:7px;pointer-events:none}

.dw-ev .dw-mk .tmark .ico{width:12px}
.dw-ev--tk > b{padding-right:96px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* бейдж статуса на карточке — тень не обрезается */
.dw-ev .dw-mk{overflow:visible!important;padding:2px}

/* низ окна задачи: слева дополнительные (иконки), справа действия — одной строкой */
.tk2-foot{flex-wrap:nowrap}



@media (max-width:640px){.tk2-foot{flex-wrap:wrap}}
/* «назад к задаче» вместо крестика */

/* плашка задачи в окнах переноса и передачи */
.pm-task{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:var(--surface-3);margin-bottom:4px}
.pm-task .mt-av{width:34px;flex:none}
.pm-task .mt-av.two{width:54px}
.pm-task > div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pm-task b{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pm-task > div span{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pm-task .tmark{flex:none}
/* проект поверх страницы — выше всего, кроме окон задач */


#pjPeek .pjs{margin:0 auto}

/* проект поверх страницы: отступы от краёв экрана, как у окна на «Проектах» */

#pjPeek .pjs{width:min(1180px,100%)}

/* «назад к задаче» — круглая серая плашка, при наведении стрелка чуть уходит влево */





/* плашка задачи в окнах переноса и передачи — серая */
.pm-task{background:var(--surface-3)!important}
:root[data-theme="light"] .pm-task{background:var(--surface-2)!important}
.pm-task,:root[data-theme="light"] .pm-task{background:color-mix(in srgb,var(--text) 6%,var(--surface))!important}
/* дополнительные кнопки внизу окна — иконка и одно слово */


.tk2-foot{gap:6px}
.tk2-foot .btn{min-width:0}
.tk2-foot .btn .ico,.tk2-foot .btn svg{width:15px}
.tk2-foot{flex-wrap:wrap;row-gap:8px}


.tk2-foot{column-gap:5px}

/* ── проект поверх страницы: окно с отступами от краёв, шапка на месте, содержимое листается внутри ── */

#pjPeek .pjs{position:fixed;left:max(32px,calc(50% - 590px));right:max(32px,calc(50% - 590px));top:6vh;width:auto;max-height:88vh;margin:0;padding:0;display:flex;flex-direction:column;overflow:hidden;border-radius:24px}
#pjPeek .pjs-in{opacity:1;height:auto;max-height:88vh;min-height:0;flex:1}
#pjPeek .pjs-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
@media (max-width:640px){
  #pjPeek .pjs{left:10px;right:10px;top:calc(12px + env(safe-area-inset-top,0px));max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));border-radius:22px;min-height:0}
  #pjPeek .pjs-in{max-height:inherit}
  #pjPeek .pjs-scroll{padding-bottom:20px}
}
/* задачи проекта по статусам на телефоне — колонки листаются вбок (в окне проекта и на «Проектах») */
@media (max-width:640px){
  .pjs .pjb{display:flex!important;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding:0 2px 6px!important;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .pjs .pjb::-webkit-scrollbar{display:none}
  .pjs .pjb-col{flex:0 0 82%;display:flex!important;flex-direction:column;gap:8px;scroll-snap-align:start;min-width:0}
}

/* дата — всегда у правого края строки, кнопки и текст — слева от неё */
.mt-e .mt-d{order:2;min-width:84px;text-align:right}
.mt-e .mt-a{order:1}
.mt-e .mt-d:empty{display:block;min-width:84px}
@media (max-width:640px){.mt-e .mt-d,.mt-e .mt-d:empty{min-width:0}}
/* дата ближе к кнопкам и тексту */
.mt-e{gap:10px}
.mt-e .mt-d,.mt-e .mt-d:empty{min-width:72px}
@media (max-width:640px){.mt-e .mt-d,.mt-e .mt-d:empty{min-width:0}}
/* рабочие дни в карточке сотрудника */
.tmf-wd{display:flex;gap:6px;flex-wrap:wrap}
.tmf-wd label{cursor:pointer}
.tmf-wd input{position:absolute;opacity:0;pointer-events:none}
.tmf-wd span{display:inline-grid;place-items:center;min-width:44px;height:36px;padding:0 10px;border-radius:999px;border:1px solid var(--field-border);background:var(--field);font-size:12.5px;font-weight:700;color:var(--text-2);transition:background .15s,color .15s}
.tmf-wd input:checked + span{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;border-color:transparent}
/* кнопка «Жалобы» — серая, как остальные; при наведении красная */




/* окно жалоб: узкое, вкладки, каждая жалоба — своя серая плашка */
:root .cpl2-modal{--px:26px;max-width:560px!important;height:min(680px,calc(84vh * var(--vz,1)))}
:root .cpl2-modal .modal-body{flex-direction:column!important;gap:10px!important;overflow-y:auto!important;padding:14px 0 2px!important}
.cpl2-top{display:flex;flex-direction:column;gap:10px;margin:0 calc(-1 * var(--px));padding:2px var(--px) 14px;border-bottom:1px solid var(--border)}
.cpl2-tabs{position:relative;align-self:flex-start;display:inline-flex!important;gap:2px!important;margin:0!important;padding:4px!important;border:0!important;background:var(--surface-3);border-radius:999px}
.cpl2-tabs .proj-tab{position:relative;z-index:1;margin:0!important}

.cpl2-tabs .proj-tab i{margin-left:6px}
.cpl2-flt{display:flex;flex-wrap:wrap;gap:6px}
.cpl2{flex:none;display:flex;flex-direction:column;gap:10px;padding:14px 14px 12px;border-radius:16px;background:var(--plate)}
.cpl2-h{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.cpl2-h > .tmark{flex:none}
.cpl2-p{display:flex;align-items:center;gap:10px;min-width:0}
.cpl2-p .avatar{width:36px;height:36px;flex:none}
.cpl2-p > div{display:flex;flex-direction:column;gap:1px;min-width:0}
.cpl2-p b{font-size:14px;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cpl2-p span{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cpl2-p--sm .avatar{width:28px;height:28px;font-size:10px}
.cpl2-p--sm b{font-size:13px}
.cpl2-p--sm span{font-size:12px}
.cpl2-anon{display:grid;place-items:center;background:var(--surface-3);color:var(--muted);font-weight:800}
.cpl2-st{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.cpl2-st em{font-style:normal;font-size:12px;font-weight:600;color:var(--muted);padding-right:2px}
.cpl2-about{flex:1;display:flex;align-items:center;gap:8px;min-width:0}
.cpl2-about .cpl2-p{flex:1}
.cpl2-lbl{flex:none;font-size:12px;color:var(--muted)}
.cpl2-text{font-size:14px;line-height:1.5;color:var(--text);white-space:pre-wrap;word-break:break-word}
.cpl2-file{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:6px 10px;border-radius:10px;border:1px solid var(--border);color:var(--text);font-size:12.5px;font-weight:600;text-decoration:none}
.cpl2-file .ico{width:14px;height:14px;color:var(--accent)}
.cpl2-file em{font-style:normal;color:var(--muted);font-weight:500}
.cpl2-f{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cpl2-acts,.cpl2-note{flex:none}
.cpl2-acts{display:flex;justify-content:flex-end;gap:6px}

.cpl2-note{font-size:12.5px;color:var(--muted);text-align:right}
@media (max-width:640px){:root .cpl2-modal{--px:14px}.cpl2-f{flex-wrap:wrap}.cpl2-acts{flex:1 1 100%}.cpl2{padding:12px}.cpl2-acts .btn{flex:1}}
/* карточка сотрудника: серые списки и вкладки вместо голубых, окно уже */
.modal.tp-modal.tp-modal--emp{max-width:780px}
.tp-modal .wm-list{background:var(--plate)!important;box-shadow:none!important}
.tp-modal .wm-li:hover,.tp-modal .tp-ph--tk:not(.tp-ph--head):hover,.tp-modal .tp-ph--pj:not(.tp-ph--head):hover{background:color-mix(in srgb,var(--text) 7%,var(--surface))!important}

.tp-modal .wm-list .empty{padding:16px!important}
.tp-modal .tp-ph--tk{grid-template-columns:minmax(0,1fr) 88px 132px auto}
.tp-modal .tp-ph--tk .tmark{margin-left:0}
.tp-modal .tp-ph--tk .tp-ex-act:empty{display:none}
:root .tp-modal .tp-body > .wm-plate{background:var(--plate)!important;box-shadow:none!important}
@media(min-width:761px){.tp-modal .tp-ph--exp{grid-template-columns:minmax(0,1fr) 78px 110px 100px auto}}
.tp-modal .wm-li .tp-r:empty{display:none}
.tp-modal .wm-li > .grow{flex:1;min-width:0}
/* карточка сотрудника v2: подпись под цифрой, кнопки в шапке, сегменты, контакты одной сеткой */
.tp-modal .wm-plates > .wm-plate .l{order:2;display:inline-flex;align-items:center;gap:4px}
.tp-modal .wm-plates > .wm-plate .s{order:3;font-size:11.5px;color:var(--muted)}
.tp-modal .wm-plates{row-gap:16px}
.tp-plate-btn{border:0;font:inherit;text-align:left;cursor:pointer;color:inherit}
.tp-plate-btn:disabled{cursor:default}
.tp-plate-btn .l .ico{width:13px;height:13px;transition:transform .2s}
.tp-plate-btn.on .l .ico{transform:rotate(180deg)}
.tp-plate-btn:not(:disabled):hover .l{color:var(--accent)}
.tp-hacts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}


.tp-kv2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;border-top:1px solid var(--border)}
.tp-kv2 .tmm-row{justify-content:flex-start;gap:0;padding:10px 0;font-size:13px;border-top:0;border-bottom:1px solid var(--border)}
.tp-kv2 .tmm-row > span:first-child{flex:none;width:132px;font-weight:600;color:var(--text-2)}
.tp-kv2 .tmm-row b,.tp-kv2 .tmm-row .mono,.tp-kv2 .tmm-row a{font-size:13px}
@media(max-width:640px){.tp-kv2{grid-template-columns:minmax(0,1fr)}}
.tp-sec .wz-s1-lbl{flex:none}
.tp-seg{display:inline-flex;gap:2px;padding:3px;border-radius:999px;background:color-mix(in srgb,var(--text) 6%,var(--surface));margin-right:auto}
.tp-seg button{border:0;background:none;font:inherit;font-size:12px;font-weight:700;color:var(--muted);padding:5px 12px;border-radius:999px;cursor:pointer;transition:background .15s,color .15s}
.tp-seg button i{font-style:normal;font-weight:600;margin-left:5px;opacity:.75}
.tp-seg button.on{background:var(--accent);color:#fff}
.tp-mtl .atn-list{padding:4px 6px}

.tp-mtl .atn-list{border:0!important;box-shadow:none!important}.tp-mtl .mt-l > .mt-r:first-child{border-top:0!important}.tp-mtl .mt-l > .mt-r:first-child::before{display:none}
/* карточка сотрудника: правки */
.tp-modal .wm-plates > .wm-plate .v{height:36px;display:flex;align-items:center;line-height:1}
.tp-modal .wm-plates > .wm-plate .v.tp-vtext{font-size:20px!important;font-weight:600!important}
.tp-modal .tp-sec + .wm-list,.tp-modal .tp-sec + .wm-plates{margin-top:-8px}
/* контакты: серая плашка, две колонки через линию во всю высоту, строки через линии, значение — справа */
.tp-kv2{border-top:0;border-radius:14px;background:var(--plate);padding:0 18px;column-gap:0;overflow:hidden}
.tp-kv2 .tmm-row{justify-content:space-between!important;gap:12px!important;padding:11px 0!important;border-bottom:1px solid var(--border)}
.tp-kv2 .tmm-row > span:first-child{width:auto!important}
.tp-kv2 .tmm-row > :last-child{text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tp-kv2 > .tmm-row:nth-last-child(-n+2){border-bottom:0}
.tp-kv2 > .tmm-row:nth-child(odd){padding-right:18px!important;border-right:1px solid var(--border)}
.tp-kv2 > .tmm-row:nth-child(even){padding-left:18px!important}
@media(max-width:640px){.tp-kv2 > .tmm-row:nth-child(n){padding:11px 0!important;border-right:0;border-bottom:1px solid var(--border)}.tp-kv2 > .tmm-row:last-child{border-bottom:0}}
.tp-mtl .atn-list{padding:0!important}
.tp-mtl .mt-l > .mt-r{border-radius:0!important;padding:10px 16px!important}
.tp-mtl .mt-l > .mt-r + .mt-r::before{left:0!important;right:0!important}
.mt-av.mt-av--ic{width:34px!important;height:34px!important;display:grid!important;place-items:center;border-radius:10px;background:color-mix(in srgb,var(--text) 8%,var(--surface));color:var(--text-2);align-self:center}
.mt-av--ic .ico{width:17px;height:17px}
.tp-ph--xp{grid-template-columns:minmax(0,1fr) 110px 90px!important}
.tp-ph--xp .a.tp-pos{color:var(--ok, #1a9d5a)}
.tp-sec > .tp-pnav{margin-right:auto}
/* исключения по посещаемости: периоды с причинами */
.aex-list{display:flex;flex-direction:column;gap:10px}
.aex-row{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:14px;background:var(--plate)}
.aex-top{display:flex;align-items:center;gap:8px}
.aex-top .rc{flex:1}
.aex-top .rc-trig{width:100%}
.aex-x{flex:none}
.aex-chips{display:flex;flex-wrap:wrap;gap:6px}



.aex-add{align-self:flex-start}
.tp-modal .wm-hd-t .tp-hacts{justify-content:flex-start;margin-top:10px}.tp-modal .wm-head{align-items:flex-start!important}.tp-modal .wm-head .wm-x{margin-left:auto}

/* ===================== ЕДИНЫЕ КОМПОНЕНТЫ ===================== */
/* «×» закрыть окно: серый круг 34px, при наведении крестик оранжевый. Все окна: .x-close (новые),
   а также существующие шапки окон — .cf-h .iconbtn, .wm-x, .pjs-x, «назад» .pm-back */
:root .x-close,:root .wm-head .wm-x,:root .pjs-x,:root .pm-back{flex:none}
:root .cf-h .iconbtn{flex:none}


/* «×» у строки — удалить/отменить: прозрачная 30px, при наведении красный кружок с белым крестиком */
:root .nc-x,:root .tck-x{
  width:30px!important;height:30px!important;flex:none;display:grid!important;place-items:center;padding:0!important;
  border:0!important;border-radius:9px!important;box-shadow:none!important;background:transparent!important;color:var(--muted)!important;
  transition:color .15s,background .15s,box-shadow .2s,transform .2s cubic-bezier(.16,1,.3,1)!important;cursor:pointer}
:root .pay-hist-x,:root .exq-itemx,:root .wz-filectl-x{flex:none}
:root .aex-x{flex:none}
:root .x-del{flex:none}
:root .nc-x .ico,:root .tck-x .ico{width:16px!important;height:16px!important;color:inherit!important}
:root .nc-x:hover,:root .tck-x:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00)!important;color:#fff!important;transform:translateY(-1px)!important;box-shadow:0 8px 16px -8px rgba(255,93,0,.85),inset 0 1px 0 rgba(255,255,255,.3)!important}
/* «×» поверх фото (локации) — тёмный кружок, при наведении красный; маленький «×» у файла в мастере — 22px */


/* анимация всех «×»: при наведении крестик поворачивается, при нажатии кнопка «вдавливается» */






/* ===== Кнопки: один вид везде =====
   Обычная — 36px, 13px жирный; маленькая — 30px, 12px: только внутри строк списков и таблиц (.btn--sm и строки).
   Основная — оранжевый градиент; серая — .btn--edit; опасная (.btn--crit/.cf-del/.tp-del/.gr-del) — серая, при наведении красная.
   Наведение: кнопка приподнимается; нажатие: «вдавливается». */

:root .btn .ico{width:15px}

:root :is(.btn--sm,.mt-r .btn,.mt-a .btn,.tp-ph .btn,.wm-li .btn,.cpl2-acts .btn,.exq-detail-rcpt) .ico{width:14px}
:root .btn.mt-sq{width:30px!important}
@media(max-width:640px){
  
  
  :root .btn.mt-sq{width:34px!important}
}
/* основная */



/* серая */






/* опасная: серая, при наведении красная */





/* нажатие — для всех */




/* ===== Кнопки-иконки и мелкие кнопки: серые → при наведении оранжевые =====
   шапка (меню, тема, уведомления), кебаб «⋮», стрелки календарей, карандаш в настройках, пагинация */



:root .tm-kb{width:30px!important}
:root :is(.att-cal-nav,.rc-nav){width:30px!important;height:30px!important;border-radius:50%!important}





:root :is(.att-cal-nav,.rc-nav,.pay-hist-pgb):disabled{opacity:.4;cursor:not-allowed}

/* ===== Кнопки-фильтры (список, период, день): при наведении и открытии — оранжевая рамка и текст ===== */




/* ===== Кликабельные строки и карточки: при наведении лёгкий серый фон ===== */



/* ===== Кебаб «⋮» и «Меню» в шапке: без фона, при наведении — оранжевая плашка (как «×» у строки) ===== */




/* ===== Вкладки-переключатели: везде серая подложка, оранжевая плашка «переплывает» ===== */



/* ===== Выпадающие списки: один шрифт, наведение, открытие/закрытие ===== */

:root .dd-opt{transition:background .12s,color .12s!important}


:root .dd-opt:hover .ico{color:var(--accent)!important}
:root .dd-opt:active{transform:scale(.98)}
:root .dd.open .dd-menu{animation:dd-in .16s cubic-bezier(.16,1,.3,1)!important}
:root .dd.open.closing .dd-menu{animation:dd-out .1s ease forwards!important}
:root .dd.dd--up.open .dd-menu{animation-name:dd-in-up!important}
:root .dd.dd--up.open.closing .dd-menu{animation-name:dd-out-up!important}
:root .rc-pop.rc-in{animation:dd-in .16s cubic-bezier(.16,1,.3,1)}

/* ===== Календарь периода: день/месяц при наведении — оранжевый ===== */
:root .rc-d:not(:disabled):not(.sel):hover,:root .rc-mb:not(:disabled):not(.sel):hover,:root .rc-p:hover{background:var(--accent-soft)!important;color:var(--accent)!important}
:root .rc-title:hover{background:var(--accent-soft)!important;color:var(--accent)!important}

/* ===== Листалка месяцев (карточка сотрудника, проект…): месяц жирным, стрелки крупнее ===== */
:root .pjh-count{min-width:120px}
:root .pjh-step{width:36px!important}
:root .pjh-step .ico{width:18px!important}
/* ===== «Показать ещё / все / Свернуть» — один вид: строка во всю ширину блока, оранжевый текст, при наведении серый фон ===== */



/* переключатель (вкл/выкл): дорожка с кружком + подпись; включён — оранжевый */
.sw-tgl{align-items:center;white-space:nowrap}



.sw-tgl.on > i{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}
.sw-tgl.on > i::after{transform:translateX(14px)}

.sw-tgl:active > i::after{width:19px}
.sw-tgl.on:active > i::after{transform:translateX(11px)}
.dv-right{display:flex;align-items:center;gap:12px}
/* галочка-настройка → переключатель: <label class="… sw-f"><input type=checkbox><i class="sw-i"></i>текст</label> */
:root label.sw-f{position:relative;display:flex!important;align-items:center;gap:10px;cursor:pointer}
:root label.sw-f[style*="flex-start"],:root label.rv-pen.sw-f{align-items:flex-start}
:root label.sw-f > input[type=checkbox]{position:absolute!important;opacity:0!important;width:1px!important;height:1px!important;margin:0!important;pointer-events:none}
:root label.sw-f > .box{display:none!important}







label.sw-f > input:disabled + .sw-i{opacity:.45}
:root label.ck.sw-f{display:grid!important;grid-template-columns:34px max-content minmax(0,1fr);column-gap:10px;align-items:center}
:root label.ck.sw-f > em{white-space:normal}
/* календарь: переключатель категорий ровно по центру шапки у всех ролей (слева месяц, справа — фильтр/«Готовые») */
@media(min-width:641px){
  :root .dv > .dv-head.dvh:has(#dvLayerTabs){display:grid!important;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;grid-template-areas:none!important;align-items:center;gap:12px}
  :root .dv > .dv-head.dvh:has(#dvLayerTabs) .dv-title{justify-self:start}
  :root .dv > .dv-head.dvh:has(#dvLayerTabs) #dvLayerTabs{justify-self:center;margin:0!important}
  :root .dv > .dv-head.dvh:has(#dvLayerTabs) .dv-right{display:flex!important;justify-self:end;margin:0!important}
}
/* иконка в кнопке при наведении не поворачивается — у всех кнопок одинаковая анимация (подъём + нажатие) */

/* «Проекты» на дашборде: колонки фиксированной ширины — раскрытие «Сданных» и «Показать все» не сдвигает таблицу */

/* «Сданные проекты» — как «Показать ещё»: оранжевый текст по центру, при наведении серый фон */






/* счётчик у заголовка блока («Требует внимания 80», «Мои задачи 17»…): круглый, серый, один размер */
:root .pjx-cnt{min-width:22px!important}
/* шапка: «Уведомления» и «Тема» в светлой теме — белый круг (в тёмной — серый); при наведении оранжевые */



/* иконка проекта в строке (карточка сотрудника): оранжевая, ровно по центру плашки */
:root .mt-av.mt-av--ic{justify-items:center!important;justify-content:center!important;align-items:center!important;color:var(--accent)!important}
:root .mt-av.mt-av--ic .ico{color:var(--accent)!important}
/* плашка «Доступно обновление»: кнопка такая же круглая, как сама плашка; видна в обеих темах */

.upd-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent);flex:none;animation:upd-pulse 1.8s ease-in-out infinite}
@keyframes upd-pulse{50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--accent) 10%,transparent)}}
:root .upd-bar{padding:8px 8px 8px 16px!important;gap:12px!important;background:#fff!important;color:var(--text)!important;box-shadow:0 0 0 1px rgba(0,0,0,.06),0 18px 40px -14px rgba(0,0,0,.35)!important}
:root[data-theme="dark"] .upd-bar{background:#1d2a30!important;color:#eef6f5!important;box-shadow:0 0 0 1px rgba(255,255,255,.12),0 18px 40px -14px rgba(0,0,0,.8)!important}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .upd-bar{background:#1d2a30!important;color:#eef6f5!important;box-shadow:0 0 0 1px rgba(255,255,255,.12),0 18px 40px -14px rgba(0,0,0,.8)!important}}



/* ===== «Мои показатели», «Финансы», «Команда на моих проектах» — шапка как у «Мои задачи/Календарь/Проекты» ===== */




:root .kp-open{margin-left:auto}

/* показатели: аватар и имя, одна крупная цифра (XP), три маленьких, точки прихода */
.kp-body{flex:1;display:grid;grid-template-columns:1fr auto;grid-template-areas:"who xp" "stats stats" "at at";gap:18px 16px;padding:18px 24px 22px;align-content:space-between}
.kp-who{grid-area:who;display:flex;align-items:center;gap:12px;min-width:0}
.kp-who .avatar{width:48px;height:48px;font-size:16px;flex:none}
.kp-who b{display:block;font-size:15px;font-weight:700}
.kp-who span{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}
.kp-xp{grid-area:xp;display:flex;align-items:baseline;gap:5px;align-self:center}
.kp-xp b{font-family:var(--font-display);font-size:40px;font-weight:800;letter-spacing:-.03em;line-height:1}
.kp-xp span{font-size:15px;font-weight:800;color:var(--accent)}
.kp-stats{grid-area:stats;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.kp-s{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 6px}
.kp-s + .kp-s{border-left:1px solid var(--border)}
.kp-s b{font-family:var(--font-display);font-size:19px;font-weight:800}
.kp-s b.neg{color:var(--crit)}
.kp-s span{font-size:12px;color:var(--muted)}
.kp-at{grid-area:at;display:flex;align-items:center;justify-content:space-between;gap:12px}
.kp-dots{display:flex;gap:6px}
.kp-dots i{width:10px;height:10px;border-radius:50%;background:color-mix(in srgb,var(--text) 14%,var(--surface))}
.kp-dots i.ok{background:var(--accent)}
.kp-dots i.late{background:color-mix(in srgb,var(--accent) 35%,var(--surface))}
.kp-dots i.exc{background:none;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--text) 30%,var(--surface))}
.kp-at > span{font-size:12.5px;color:var(--muted)}
.kp-at > span b{color:var(--text)}
/* финансы: слева сумма и кнопки, справа последние операции (по 4, листаются) */



























/* команда: кто | чем занят | цифры; разделители и подсветка на всю ширину */




.kc-who b{display:block;font-size:14px;font-weight:700}
.kc-who span{display:block;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}












:root .kp-who .avatar{display:grid!important;place-items:center;width:48px!important;height:48px!important;font-size:15px!important;line-height:1}
.kp-body{align-content:start!important;gap:16px!important}
.kp-at{margin-top:auto;align-self:end}
.kp-body{grid-template-rows:auto auto 1fr}



/* финансы: высота списка операций постоянная — листание не меняет высоту блоков */


:root .pmx-b{align-items:stretch}
/* показатели: одинаковые отступы над и под плашкой с цифрами */
.kp-body{align-content:space-between!important;grid-template-rows:auto auto auto!important;gap:0 16px!important}
.kp-at{margin-top:0!important;align-self:auto!important}
/* «Команда на моих проектах» — карточки сотрудников по 2–3 в ряд */
.kc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;padding:16px 24px 24px}
.kc-c{display:flex;flex-direction:column;gap:14px;padding:16px;border-radius:16px;background:var(--plate);cursor:pointer;transition:background .15s,transform .18s cubic-bezier(.34,1.5,.5,1),box-shadow .2s}
.kc-c:hover{transform:translateY(-2px);background:var(--surface);box-shadow:0 0 0 1px var(--border),0 12px 24px -14px rgba(0,0,0,.35)}
.kc-c.late{box-shadow:inset 3px 0 0 var(--crit)}
.kc-c.late:hover{box-shadow:inset 3px 0 0 var(--crit),0 0 0 1px var(--border),0 12px 24px -14px rgba(0,0,0,.35)}
.kc-c .kc-who{display:flex;align-items:center;gap:10px;min-width:0}
.kc-c .kc-who .avatar{width:38px;height:38px;flex:none}
.kc-c .kc-who > div{min-width:0}
.kc-c .kc-who b{display:block;font-size:14px;font-weight:700}
.kc-c .kc-who span{display:block;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kc-st{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-radius:12px;background:var(--surface)}
.kc-s{display:flex;flex-direction:column;align-items:center;gap:1px;padding:9px 4px}
.kc-s + .kc-s{border-left:1px solid var(--border)}
.kc-s b{font-family:var(--font-display);font-size:18px;font-weight:800;line-height:1.1}
.kc-s span{font-size:11px;color:var(--muted);white-space:nowrap}
.kc-s.zero b{color:color-mix(in srgb,var(--text) 30%,var(--surface))}
.kc-s.neg b,.kc-s.neg span{color:var(--crit)}
@media(max-width:640px){.kc-grid{padding:12px 16px 16px;grid-template-columns:1fr}}
:root .kc-c .kc-who .avatar{display:grid!important;place-items:center;font-size:13px!important;line-height:1}
.kc-c.late,.kc-c.late:hover{box-shadow:none}
.kc-c.late:hover{box-shadow:0 0 0 1px var(--border),0 12px 24px -14px rgba(0,0,0,.35)}
/* команда: меньше отступ под заголовком; при наведении — только подъём; цифры сеткой 2×2 «2 в работе» */
.kc-grid{padding:4px 24px 24px!important}

.kc-c:hover,.kc-c.late:hover{background:var(--plate)!important;box-shadow:0 12px 24px -16px rgba(0,0,0,.35)!important}
.kc-st{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px;background:none!important;border-radius:0!important}
.kc-s{flex-direction:row!important;align-items:baseline!important;justify-content:flex-start!important;gap:6px!important;padding:8px 12px!important;border-radius:10px;background:var(--surface);min-width:0}
.kc-s + .kc-s{border-left:0!important}
.kc-s b{font-size:17px!important}
.kc-s span{font-size:12px!important;overflow:hidden;text-overflow:ellipsis}
.kc-s.neg{background:color-mix(in srgb,var(--crit) 8%,var(--surface))}
.kc-s.zero span{color:color-mix(in srgb,var(--text) 35%,var(--surface))}

.kc-grid{padding-top:18px!important}
.kc-grid{padding-top:4px!important}
/* общий серый для плашек внутри карточек: нейтральный (без голубого оттенка), в светлой теме — #f5f5f5 */
:root{--plate:color-mix(in srgb,var(--text) 5%,var(--surface))}
:root[data-theme="light"]{--plate:#f5f5f5}
@media (prefers-color-scheme:light){:root:not([data-theme]){--plate:#f5f5f5}}
/* телефон: бейдж статуса в «Моих задачах» — под подписью слева, а не в строке названия (название не обрезается) */
.mt-tagm{display:none}
@media(max-width:640px){
  .mt-t b > .tmark{display:none!important}
  .mt-tagm{display:flex;margin-top:5px}
  
  /* календарь: день и карточки чуть уже — видно край следующего дня */
  :root .dw-col{flex-basis:calc(100%/1.45*var(--n,1))!important;width:calc(100%/1.45*var(--n,1))!important}
  /* «Мои показатели»: воздух над и под плашкой с цифрами */
  .kp-body{row-gap:20px!important}
}
.kc-c .kc-who > div{flex:1}
.kc-sh{flex:none;font-style:normal;font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-soft);padding:4px 9px;border-radius:999px;white-space:nowrap}
/* пустой блок задач: линия под шапкой остаётся, текст «… нет» — по центру */
:root .mt2 > .db-ok{border-top:1px solid var(--border);margin:0!important}

/* «Требует внимания» с большим числом вкладок: вкладки остаются в строке заголовка, лишние листаются вбок внутри */
@media(min-width:641px){
  :root .dec-many > .dv-head{flex-wrap:nowrap!important;min-width:0}
  :root .dec-many > .dv-head > .dv-title{flex:none}
  :root .dec-many > .dv-head > .tp-tabs{flex:0 1 auto;min-width:0;max-width:100%;margin-left:auto!important}
  :root .dec-many > .dv-head > .tp-tabs::-webkit-scrollbar{display:none}
  :root .dec-many > .dv-head > .tp-tabs .proj-tab{flex:none}
}
/* нет даты — место под дату не держим: кнопки/текст встают к правому краю */
:root .mt-e .mt-d:empty{display:none!important}
:root .atn-r:has(> .atn-meta:empty){grid-template-columns:34px minmax(0,1fr) auto}
@media(max-width:640px){:root .atn-r:has(> .atn-meta:empty){grid-template-columns:34px minmax(0,1fr)}}
:root .atn-r:not(:has(> .atn-acts)){grid-template-columns:34px minmax(0,1fr) auto}
@media(max-width:640px){:root .atn-r:not(:has(> .atn-acts)){grid-template-columns:34px minmax(0,1fr)}}
/* статус «Удалено» и кнопка «Удалить» в окне задачи */





/* фильтры-списки: при наведении и открытии весь текст оранжевый (как у календаря); пункты списка — жирнее */



/* выпадающий список при наведении фон не меняет (только оранжевые рамка и текст): в окнах — серое поле, на страницах — белое */



/* ===== низ окна задачи: один вид во всех состояниях и на всех устройствах ===== */
:root .tk2-foot.tk2-foot2{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:10px!important;flex-wrap:nowrap!important}
.tk2-tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:6px}
:root .tk2-tools .btn.tk2-tool{width:100%!important}
:root .tk2-tools .btn.tk2-tool .ico{width:15px}
.tk2-main{display:flex;gap:8px;align-items:center}
:root .tk2-main > .btn{flex:1 1 0;min-width:0}
.tk2-main > .tks-wait{flex:1;justify-content:center}
@media(max-width:640px){.tk2-tools{grid-template-columns:repeat(3,minmax(0,1fr))}.tk2-main{flex-wrap:wrap}:root .tk2-main > .btn{flex:1 1 100%}}
/* ряд вспомогательных действий: на компьютере — все в одну строку поровну; на телефоне — по 3, неполный ряд растягивается */
.tk2-tools{display:flex!important;flex-wrap:nowrap;gap:6px}
:root .tk2-tools .btn.tk2-tool{flex:1 1 0;min-width:0}

@media(max-width:640px){.tk2-tools{flex-wrap:wrap}:root .tk2-tools .btn.tk2-tool{flex:1 1 calc(33.333% - 6px)}}

:root .tk2-tools .btn.tk2-tool .ico{width:14px!important}
.tk2-tools{gap:5px!important}
/* приоритет: бейдж с оранжевым огоньком; окно запроса — задачи исполнителя по другим проектам */



.prio-h{font-size:12px;font-weight:700;color:var(--muted)}




/* ===== приоритет проекта ===== */
/* бейдж «Приоритет» — насыщенный оранжевый с градиентом, белый огонёк и текст */


/* кнопка-огонёк: в шапке окна — круг как у «×»; в строках — появляется при наведении */
.prio-fl{width:34px;height:34px;flex:none;display:inline-grid;place-items:center;border:0;border-radius:50%;cursor:pointer;background:color-mix(in srgb,var(--text) 7%,var(--surface));color:var(--text-2);transition:background .15s,color .15s,transform .18s cubic-bezier(.34,1.5,.5,1),box-shadow .2s;padding:0}
.prio-fl .ico{width:17px;height:17px}
.prio-fl:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;transform:translateY(-1px)}
.prio-fl:active{transform:scale(.9)}
.prio-fl.on{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
.mh-acts{margin-left:auto;display:flex;align-items:center;gap:8px}
.mh-acts .x-close{margin-left:0!important}
.pjs-acts .prio-fl--head{margin-right:2px}
.prio-fl--row{width:26px;height:26px;border-radius:8px;margin-left:2px;opacity:0;transform:scale(.85);background:transparent;color:var(--accent);transition:opacity .15s,transform .15s,background .15s,color .15s}
.prio-fl--row .ico{width:15px;height:15px}

.prio-fl--row:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
@media(hover:none){.prio-fl--row{display:none}}
/* окно задачи: строка «Проект в приоритете» */
.tk2-prio{display:flex;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;border-radius:12px;background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;font-size:13px}
.tk2-prio .ico{width:18px;height:18px;color:#fff;flex:none}
.tk2-prio b{font-weight:800}
/* календарь: белый огонёк на оранжевом кружке в правом нижнем углу карточки */
.dw-ev{position:relative}
.dw-prio{position:absolute;right:8px;bottom:8px;width:22px;height:22px;display:grid;place-items:center;background:none;color:var(--accent)}
.dw-prio .ico{width:16px;height:16px;color:var(--accent)}
.dw-ev--shoot .dw-prio,.dw-ev--shoot .dw-prio .ico{color:#fff}
/* окно приоритета: список задач проекта */
.prio-tl{display:flex;flex-direction:column;gap:6px;border-radius:14px;background:var(--plate);overflow:hidden;max-height:340px}
.prio-tl > .prio-h{padding:12px 14px 4px;font-size:12px;font-weight:700;color:var(--muted)}
.prio-tl .atn-list{overflow:auto;padding:0!important}
.prio-tl .mt-r{padding:9px 14px!important}
/* огонёк приоритета — всегда заполненный */
:root svg.i-flame{fill:currentColor!important}
/* предупреждение «сейчас в приоритете другой проект» */
.prio-warn{display:flex;gap:10px;padding:12px 14px;border-radius:12px;background:var(--accent-soft);color:var(--text)}
.prio-warn > .ico{width:18px;height:18px;color:var(--accent);flex:none;margin-top:1px}
.prio-warn b{display:block;font-size:13.5px}
.prio-warn span{display:block;font-size:12.5px;color:var(--text-2);margin-top:2px}
/* окна-формы (cf-modal) не выше экрана: содержимое прокручивается, кнопки остаются видны */
:root .modal.cf-modal.pay-md{max-height:calc(100dvh - 40px);display:flex!important;flex-direction:column}
:root .modal.cf-modal.pay-md > .cf-h{flex:none}
:root .modal.cf-modal.pay-md > .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
:root .modal.cf-modal.pay-md > .modal-body .cf-acts{position:sticky;bottom:0;z-index:2;background:var(--surface);padding-top:12px;margin-top:4px;box-shadow:0 -12px 12px -12px rgba(0,0,0,.12)}
:root .prio-modal .prio-tl{max-height:min(340px,38dvh)}

/* ===== Поля ввода и комментарии: один вид везде =====
   серое поле без рамки, скругление 12, 42px (комментарий — от 84px, тянется вниз);
   наведение — тонкая оранжевая обводка; фокус — белое поле, оранжевая обводка и мягкое свечение */
:root :is(input.in, textarea.in, .kb-body, .modal textarea:not(.kb-ta-raw)){width:100%}







:root{--fld:#f1f1f1}
:root[data-theme="dark"]{--fld:var(--surface-2)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--fld:var(--surface-2)}}
/* подписи над полями — одинаковые */
:root .kb-f > span:first-child{font-size:12.5px;font-weight:700;color:var(--text-2)}
:root .kb-f > span:first-child em{font-weight:500;color:var(--muted);font-style:normal}
/* строки поиска: одна высота и форма; при наведении — тонкая оранжевая обводка, как у полей */




/* ===== «Проекты» / «Мои проекты»: шапка как на дашборде, карусель карточек, проект — под каруселью ===== */
.pjx-page{display:flex;flex-direction:column;gap:22px}
.pjx-list{padding:0!important;overflow:hidden}
:root .pjx-head{display:flex!important;align-items:center;gap:14px;padding:20px 24px 16px!important;flex-wrap:wrap}
.pjx-head .dv-title{display:flex;align-items:center;gap:8px}
:root .pjx-head .pjx-tabs{margin:0!important}

.pjx-nav{display:flex;gap:6px}
.pjx-car{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 24px;padding:4px 24px 22px;scrollbar-width:none;scroll-behavior:smooth}
.pjx-car::-webkit-scrollbar{display:none}
/* карточка проекта */
.pjc{flex:0 0 290px;scroll-snap-align:start;display:flex;flex-direction:column;gap:12px;padding:16px 16px 14px;cursor:pointer;transition:transform .2s cubic-bezier(.34,1.4,.5,1),box-shadow .2s,background .2s}
.pjc:hover{transform:translateY(-3px)}
.pjc.on{background:var(--surface);box-shadow:inset 0 0 0 2px var(--accent),0 14px 30px -18px rgba(255,93,0,.55)}
.pjc-top{display:flex;align-items:center;gap:6px;min-width:0}
.pjc-cl{flex:1;min-width:0;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pjc-top .tmark{flex:none}
.pjc-t{font-size:15.5px;font-weight:800;line-height:1.3;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:40px}
.pjc-due{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--text-2);min-width:0}
.pjc-due .ico{width:14px;height:14px;color:var(--muted);flex:none}
.pjc-due em{font-style:normal;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pjc-due.neg,.pjc-due.neg .ico{color:var(--crit)}





.pjc-bot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pjc-pm{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;min-width:0}
.pjc-pm span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pjc-team{display:flex;align-items:center}
.pjc-team .avatar{margin-left:-7px}

.pjc-team em{font-style:normal;font-size:11.5px;font-weight:700;color:var(--muted);margin-left:5px}
/* проект под каруселью — обычная карточка страницы, без окна */
.pjx-detail-card{padding:0!important;overflow:hidden;scroll-margin-top:84px}
:root .pjs.pjx-detail{position:static!important;inset:auto!important;width:auto!important;height:auto!important;max-height:none!important;transform:none!important;box-shadow:none!important;border-radius:0!important;background:transparent!important;opacity:1!important;animation:none!important}
:root .pjx-detail .pjs-in{height:auto!important;width:auto!important;opacity:1!important}
:root .pjx-detail .pjs-scroll{overflow:visible!important;flex:none!important}
.pjx-hint{display:flex;align-items:center;justify-content:center;gap:10px;padding:26px 20px!important;color:var(--muted);font-size:13.5px}
.pjx-hint .ico{width:18px;height:18px}
@media(max-width:640px){
  :root .pjx-head{padding:16px 16px 12px!important}
  
  .pjx-nav{display:none}
  .pjx-car{padding:4px 16px 18px;scroll-padding:0 16px;gap:10px}
  .pjc{flex-basis:78%}
}

:root .pjx-tabs .proj-tab i{margin-left:6px}
.pjc-t{min-height:0!important}
/* ===== «Проекты» v2 ===== */
/* шапка: не копия дашборда — заголовок легче, свечение слева снизу */
:root .pjx-hero .db-hero-t h1{font-weight:600!important;letter-spacing:-.02em}
:root .pjx-hero .db-orb.o1{left:-140px!important;right:auto!important;top:auto!important;bottom:-180px!important;width:460px!important;height:460px!important;opacity:.55}
:root .pjx-hero .db-orb.o2{left:38%!important;right:auto!important;top:-160px!important;width:300px!important;height:300px!important;opacity:.35}
/* фильтры, поиск, стрелки — без плашки, прямо на странице */
:root .pjx-list{background:none!important;box-shadow:none!important;padding:0!important;overflow:visible}
:root .pjx-head{display:flex!important;align-items:center;gap:12px;padding:0 0 14px!important;flex-wrap:wrap}
:root .pjx-head .pjx-tabs{margin:0!important}





.pjx-nav{display:flex;gap:6px}
.pjx-nav[hidden]{display:none}
.pjx-arr{position:relative}


.pjx-arr:disabled{opacity:.4}
.pjx-arr em{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--accent);color:#fff;font-style:normal;font-size:10.5px;font-weight:800;line-height:18px;box-sizing:border-box}
.pjx-arr em:empty{display:none}
:root .pjx-car{padding:4px 2px 18px!important;margin:0 -2px;scroll-padding:0 2px}
/* карточка — как строка блока «Проекты» на главной */
:root .pjc{flex:0 0 300px;gap:10px}

.pjc-top{gap:6px}
:root .pjc-t{flex:1;min-width:0;font-size:15px;font-weight:800;line-height:1.3;-webkit-line-clamp:1;white-space:nowrap;display:block;text-overflow:ellipsis}
.pjc-stage{font-size:12.5px;color:var(--muted);margin-top:-6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pjc-v{display:flex;flex-direction:column;gap:2px;padding-top:4px;border-top:1px solid var(--border)}
.pjc-v b{font-size:13px;font-weight:700}
.pjc-v b em{font-style:normal;color:var(--accent)}
.pjc-v span{font-size:12px;color:var(--muted)}
.pjc-g{display:flex;flex-direction:column;gap:5px}
.pjc-g .wr-seg{width:100%}
.pjc-g > span{font-size:12px;color:var(--muted)}
.pjc-g > span b{color:var(--text)}
:root .pjc-bot{gap:10px;padding-top:10px;border-top:1px solid var(--border)}
.pjc-team{margin-right:auto;padding-left:6px}
.pjc-dl{display:flex;flex-direction:column;align-items:flex-end;gap:1px;flex:none}
.pjc-dl b{font-size:13px;font-weight:800}
.pjc-dl em{font-style:normal;font-size:11.5px;color:var(--muted)}
.pjc-dl.late em{color:var(--crit);font-weight:700}
.pjc-dl.done em{color:var(--ok,#1a9d5a)}
@media(max-width:640px){.pjx-nav{display:none!important}:root .pjc{flex-basis:82%}}
.pjc-mid{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-top:10px;border-top:1px solid var(--border)}
.pjc-mid .pjc-v{border-top:0!important;padding-top:0!important;min-width:0}
.pjc-team{margin-right:0!important;margin-left:auto}

/* «Проекты» v3 */
:root .pjx-hero .db-hero-t h1{font-weight:700!important}
/* вкладки статуса: белая подложка, ровное скругление */


/* карусель: место под тень, чтобы она не обрезалась */
:root .pjx-car{padding:12px 14px 30px!important;margin:-12px -14px -12px!important;scroll-padding:0 14px}
/* разделители в карточке — во всю ширину */
:root .pjc-mid,:root .pjc-bot{margin:0 -16px!important;padding-left:16px!important;padding-right:16px!important}
/* выбранный проект — оранжевая карточка, акценты белые */
:root .pjc.on{background:linear-gradient(160deg,#ff8a3d,#ff5d00)!important;color:#fff}
:root .pjc.on :is(.pjc-t,.pjc-v b,.pjc-dl b,.pjc-pm,.pjc-g > span b){color:#fff!important}
:root .pjc.on :is(.pjc-stage,.pjc-v span,.pjc-dl em,.pjc-g > span){color:rgba(255,255,255,.82)!important}
:root .pjc.on .pjc-v b em{color:#fff!important;text-decoration:underline;text-underline-offset:2px}
:root .pjc.on :is(.pjc-mid,.pjc-bot){border-top-color:rgba(255,255,255,.28)!important}
:root .pjc.on .wr-seg i{background:rgba(255,255,255,.3)!important;box-shadow:none!important}
:root .pjc.on .wr-seg i.on{background:#fff!important}



:root .pjc.on .pjc-dl.late em{color:#fff!important;font-weight:800}
/* «Проекты» v4 */
:root .pjc.on .pjc-v b em{text-decoration:none!important}
/* свечение выбранной карточки не обрезается */
:root .pjx-car{padding:14px 18px 46px!important;margin:-14px -18px -30px!important;scroll-padding:0 18px}
/* проект под каруселью: без «×»; шапка — название, под ним статус, приоритет, менеджер */
:root .pjx-detail .pjs-x{display:none!important}
.pjs-h2{margin:2px 0 0;font-family:var(--font-display);font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.15}


/* вкладки разделов проекта: круглая подложка, без линии снизу */
:root .pjs .pjs-tabbar{border:0!important;box-shadow:none!important}

/* «волна» при нажатии на вкладку — по форме кнопки */


/* задачи проекта списком */
:root .pj3-list .atn-list{padding:0!important}
:root .pj3-list .mt-l > .mt-r{padding:12px 4px!important}




/* шапка проекта: статус справа от названия, PM карточкой; команда проекта снизу */
.pjs-tl{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;margin-top:2px}
.pjs-tl .pjs-h2{margin:0 4px 0 0}
.pjs-pmb{display:inline-flex;align-items:center;gap:12px;margin-top:14px;padding:6px 14px 6px 6px;border-radius:999px;cursor:pointer;transition:background .15s}
.pjs-pmb:hover{background:var(--plate)}
.pjs-pmb .avatar{width:44px;height:44px;font-size:15px;flex:none}
.pjs-pmb b{display:block;font-size:14.5px;font-weight:700;color:var(--text)}
.pjs-pmb span{display:block;font-size:12.5px;color:var(--muted);margin-top:1px}
.pjs-team{margin-top:8px;padding-top:20px;border-top:1px solid var(--border)}
.pjs-team-h{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.pjs-team-h b{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.015em}
:root .pjs-team .kc-grid{padding:0}
:root .pjs-pmb .avatar{display:grid!important;place-items:center;line-height:1;padding:0}
:root .pjs-team .pjs-team-h b{font-weight:700!important;color:var(--text)}
:root .pjs-team .kc-grid{padding:0!important;margin:0!important}
/* ── список задач проекта (страница проекта + раскрытый проект на дашборде) ── */
.pjt{--pjt-x:20px}
.pjx-detail .pjt{--pjt-x:26px;margin:0 -26px}
@media(max-width:760px){ .pjt{--pjt-x:16px} .pjx-detail .pjt{--pjt-x:16px;margin:0 -16px} }
:root .pjt .atn-list{padding:0!important;margin:0!important}



:root .pjt .mt-l > .mt-r{position:relative;border-radius:0!important;padding:12px var(--pjt-x)!important;margin:0!important}









.pjt .db-ok{margin:0 var(--pjt-x)}
/* разделители — как в «Требует внимания»: линия сверху каждой строки на всю ширину, при наведении остаётся, меняется только фон */
:root .pjt .mt-l > .mt-r{border:0!important;border-top:1px solid var(--border)!important;transition:background .18s}
:root .pjt .mt-l > .mt-r::before{content:none!important}

:root .pjs-add{align-items:center}

.pjt .mt-l > .mt-r:first-child{border-top:1px solid var(--border)!important}
.pjx-detail .pj3-list{margin-top:-10px}
/* завершённое (готовые задачи проекта, «История»): всё приглушено, кроме бейджа статуса — он в своих цветах */


/* страница проекта: линия под последней задачей; «Команда проекта» без линии сверху и ближе */
.pjx-detail .pjt .mt-l > .mt-r:last-child{border-bottom:1px solid var(--border)!important}
:root .pjs-team{border-top:0;padding-top:0;margin-top:4px}
/* дашборд «Проекты»: под последней задачей — линия следующего проекта, без пустоты */


/* дашборд «Проекты»: раскрытый проект целиком серый (строка, полоса «N из M», задачи); наведение на задачу — белый */
:root .wr-r.open{background:color-mix(in srgb,var(--text) 5%,var(--surface))}


/* «Открыть проект»: плашка при наведении, стрелка уезжает вправо, нажатие — сжатие */





/* ── вкладки проекта «Состав и техника», «Расходы», «ТЗ» (project-tabs.js) ── */
.pjv{display:flex;flex-direction:column}
.pjv-sec{margin-top:22px}
.pjv-sec:first-child{margin-top:4px}
.pjv-h{display:flex;align-items:center;gap:8px;min-height:36px;margin-bottom:10px}
.pjv-h > b{font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:-.01em;color:var(--text)}
.pjv-h > em{font-style:normal;min-width:22px;height:22px;padding:0 7px;border-radius:999px;display:inline-grid;place-items:center;font-size:11.5px;font-weight:700;background:color-mix(in srgb,var(--text) 7%,var(--surface));color:var(--text-2)}
.pjv-hb{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}

:root .pjv-add .ico{width:15px}
.pjv-list{margin-bottom:2px}
.pjv-empty{display:flex;align-items:center;gap:10px;padding:16px 18px;border-radius:14px;background:color-mix(in srgb,var(--text) 4%,var(--surface))}
.pjv-empty .ico{width:17px;height:17px;color:var(--accent)}


.pjv-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--text) 6%,var(--surface));color:var(--accent)}
.pjv-ic .ico{width:16px;height:16px}
.mt-r.pjv-ok .pjv-ic{color:var(--ok)}
:root .pjt .mt-l > .mt-r.pjv-static{cursor:default}

.pjv-sum{font-weight:800;font-size:14px}
.pjv-kvs{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px 24px;margin-bottom:6px}
.pjv-kv{min-width:0;display:flex;flex-direction:column;gap:3px}
.pjv-kv span{font-size:12.5px;color:var(--muted);font-weight:600}
.pjv-kv b{font-size:14px;font-weight:700;color:var(--text);overflow-wrap:anywhere}
.pjv-note{margin:12px 0 0;font-size:13.5px;line-height:1.5;color:var(--text-2);overflow-wrap:anywhere}
.pjv-legal{font-size:12.5px;color:var(--muted)}
.pjv-a{color:var(--accent);font-weight:600;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 35%,transparent);transition:border-color .15s}
.pjv-a:hover{border-color:var(--accent)}
.pjv-chips{display:inline-flex;flex-wrap:wrap;gap:6px}
.pjv-files{margin-top:12px}

.pjv-chip .ico{width:13px;flex:none}
.pjv-chip span{max-width:260px}



.pjv-vid{margin-bottom:16px}
.pjv-vid:last-child{margin-bottom:0}
.pjv-vh{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:4px 0 10px}
.pjv-vh > b{font-size:15px;font-weight:700;color:var(--text)}
.pjv-vh .pjv-chips{margin-left:auto}
.pjv-vs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}
.pjv-vm{font-size:13px;color:var(--muted);font-weight:600}
.pjv-vnone{padding:2px 0 6px}
.pjv-script{width:100%;border-radius:12px;background:color-mix(in srgb,var(--text) 4%,var(--surface));overflow:hidden}
.pjv-script summary{display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;list-style:none;font-size:13px;font-weight:700;color:var(--text);transition:background .15s}
.pjv-script summary::-webkit-details-marker{display:none}
.pjv-script summary:hover{background:color-mix(in srgb,var(--text) 4%,transparent)}
.pjv-script summary .ico{width:15px;height:15px;color:var(--accent);flex:none}
.pjv-script summary em{font-style:normal;font-weight:500;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.pjv-script[open] summary em{display:none}
.pjv-script > div{padding:2px 14px 14px;font-size:13.5px;line-height:1.6;color:var(--text-2)}
.pjv-top{margin-top:0}
.pjv-nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px 20px}
.pjv-n{display:flex;flex-direction:column;gap:4px;min-width:0}
.pjv-n span{font-size:12.5px;color:var(--muted);font-weight:600}
.pjv-n b{font-family:var(--font-display);font-size:28px;line-height:1.1;font-weight:800;letter-spacing:-.02em;color:var(--text)}
.pjv-n b.crit{color:var(--crit)}
.pjv-n b.warn{color:#d39a00}
.pjv-edit{align-self:flex-start;gap:5px;margin-top:2px}


.pjv-bar{display:flex;height:8px;margin-top:18px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--text) 7%,var(--surface))}
.pjv-bar i{display:block;height:100%}
.pjv-bar .paid{background:var(--accent)}
.pjv-bar .pend{background:#f2b705}
.pjv-leg{display:flex;align-items:center;gap:16px;margin-top:8px;font-size:12.5px;color:var(--muted);font-weight:600}
.pjv-leg i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.pjv-leg i.paid{background:var(--accent)} .pjv-leg i.pend{background:#f2b705}
.pjv-leg .r{margin-left:auto}
:root .pjt .mt-l > .mt-r.open{background:color-mix(in srgb,var(--text) 5%,transparent)}
.pjv-x{grid-column:1/-1;padding:4px var(--pjt-x) 14px;background:color-mix(in srgb,var(--text) 5%,transparent)}
.pjv-xi{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:8px 0 8px 48px;font-size:13.5px;color:var(--text)}
.pjv-xi em{font-style:normal;color:var(--muted)}
.pjv-xi b{font-weight:700}
.pjv-xf{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:6px;padding-left:48px;font-size:13px;color:var(--muted)}
.pjv-xf b{color:var(--text)}
@media(max-width:640px){ .pjv-xi,.pjv-xf{padding-left:0} .pjv-vh .pjv-chips{margin-left:0} }
/* команда проекта: ближе к списку, карточки — цвета плашки счётчика */
:root .pjs-team{margin-top:-4px}
:root .pjs-team .kc-c{background:color-mix(in srgb,var(--text) 7%,var(--surface))}
:root .pjs-team .kc-c:hover{background:color-mix(in srgb,var(--text) 10%,var(--surface))}
/* раскрытие проекта на дашборде без лишнего пересчёта всей сетки */

:root .pjs-body:has(.pjv) + .pjs-team{margin-top:14px}
/* ── съёмка: статус «идёт / завершена» и окно «Съёмка завершена» ── */
.tsh-run{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;margin-bottom:10px;background:color-mix(in srgb,var(--text) 5%,var(--surface))}
.tsh-run b{display:block;font-size:14px;font-weight:700;color:var(--text)}
.tsh-run span{display:block;font-size:12.5px;color:var(--muted);margin-top:1px}
.tsh-run.on{background:var(--accent-soft)}
.tsh-run.on b{color:var(--accent)}
.tsh-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);flex:none;box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 60%,transparent);animation:tshPulse 1.6s ease-out infinite}
@keyframes tshPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 55%,transparent)}100%{box-shadow:0 0 0 10px transparent}}
.tsh-run.done > .ico{width:18px;height:18px;color:var(--ok);flex:none}
.se{display:flex;flex-direction:column;gap:12px}
.se-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:4px}
.se-h b{font-size:14px;font-weight:700;color:var(--text)}


.se-list{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto}
.se-v{display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px 6px 4px;border-radius:12px;background:color-mix(in srgb,var(--text) 5%,var(--surface));transition:background .15s}
.se-v:hover{background:color-mix(in srgb,var(--text) 8%,var(--surface))}
.se-vb{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:6px 10px;border:0;background:none;font:inherit;text-align:left;cursor:pointer;border-radius:10px;transition:transform .15s}
.se-vb:active{transform:scale(.98)}
.se-vb span{flex:1;min-width:0;font-size:13.5px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.se-v > em{font-style:normal;font-size:12px;font-weight:600;color:var(--ok);padding-right:8px}
.se-v.on em{color:var(--ok)}
.se-v:not(.on) .se-vb span{color:var(--muted);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--muted) 60%,transparent)}
.se-ck{width:22px;height:22px;flex:none;border-radius:7px;display:grid;place-items:center;border:2px solid color-mix(in srgb,var(--text) 20%,transparent);transition:background .15s,border-color .15s}
.se-v.on .se-ck{background:var(--accent);border-color:var(--accent);color:#fff}
.se-ck .ico{width:13px;height:13px}

/* «Съёмка завершена»: у неотснятого ролика — переключатель «Перенести / Отменить» (как вкладки-фильтры) */
.se-h b em{font-style:normal;font-weight:600;color:var(--muted);margin-left:4px}
.se-seg{display:inline-flex;flex:none;padding:3px;gap:2px;border-radius:999px;background:var(--surface);box-shadow:0 0 0 1px color-mix(in srgb,var(--text) 8%,transparent)}
.se-seg button{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 11px;border:0;border-radius:999px;background:none;font:inherit;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer;transition:background .2s,color .2s,box-shadow .2s,transform .15s}
.se-seg button .ico{width:13px;height:13px}
.se-seg button:hover{color:var(--text)}
.se-seg button:active{transform:scale(.95)}
.se-seg button.move.on{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
.se-seg button.cancel.on{background:var(--crit);color:#fff;box-shadow:0 6px 12px -6px color-mix(in srgb,var(--crit) 80%,transparent)}
.se-v.off.cancel{background:color-mix(in srgb,var(--crit) 7%,var(--surface))}
.se-sum{display:flex;flex-direction:column;gap:6px}
.se-sum > div{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border-radius:12px;background:var(--accent-soft);color:var(--text-2);font-size:13px;font-weight:600;line-height:1.45}
.se-sum > div .ico{width:16px;height:16px;flex:none;margin-top:1px;color:var(--accent)}
.se-sum > div.crit{background:color-mix(in srgb,var(--crit) 9%,var(--surface));color:var(--crit)}
.se-sum > div.crit .ico{color:var(--crit)}
@media(max-width:520px){ .se-v{flex-wrap:wrap} .se-seg{margin-left:42px} }
/* мастер «Досъёмка» */
.wz-re-head{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:18px;background:var(--accent-soft)}
.wz-re-head > .ico{width:22px;height:22px;color:var(--accent);flex:none}
.wz-re-head b{display:block;font-size:15px;font-weight:700;color:var(--text)}
.wz-re-head span{display:block;font-size:13px;color:var(--text-2);margin-top:2px;line-height:1.45}
.wz-re-left{margin-left:auto;flex:none}
.wz-re-left em{font-style:normal;display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:999px;background:var(--surface);font-size:12.5px;font-weight:700;color:var(--accent)}
.wz-re-left em.ok{color:var(--ok)} .wz-re-left em .ico{width:13px;height:13px}
.wz-re-l em{font-style:normal;font-weight:600;color:var(--muted);margin-left:4px}
.wz-re-g{display:flex;flex-direction:column;gap:6px;margin:8px 0 14px}
.wz-re{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:0;border-radius:12px;background:color-mix(in srgb,var(--text) 5%,var(--surface));font:inherit;text-align:left;cursor:pointer;transition:background .15s,transform .15s}
.wz-re:hover:not(:disabled){background:color-mix(in srgb,var(--text) 8%,var(--surface))}
.wz-re:active:not(:disabled){transform:scale(.99)}
.wz-re span{flex:1;min-width:0;font-size:13.5px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-re em{font-style:normal;font-size:12px;font-weight:600;color:var(--muted)}
.wz-re.on .se-ck{background:var(--accent);border-color:var(--accent);color:#fff}
.wz-re:disabled{opacity:.5;cursor:default}
/* мастер съёмки: пересечения по времени — мешающие съёмки с «Перенести» / «Передать» */
.wz-cf{margin-top:12px;border-radius:14px;background:color-mix(in srgb,var(--crit) 7%,var(--surface));overflow:hidden}
.wz-cf-h{display:grid;grid-template-columns:auto 1fr;column-gap:8px;padding:12px 14px 8px;color:var(--crit)}
.wz-cf-h .ico{width:16px;height:16px;grid-row:1/3;margin-top:1px}
.wz-cf-h b{font-size:13.5px;font-weight:700}
.wz-cf-h span{font-size:12.5px;color:var(--text-2);font-weight:500}
.wz-cf-r{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid color-mix(in srgb,var(--crit) 15%,transparent)}
.wz-cf-r .mt-av{flex:none}
.wz-cf-t{flex:1;min-width:0;cursor:pointer}
.wz-cf-t b{display:block;font-size:13px;font-weight:700;color:var(--text)}
.wz-cf-t span{display:block;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-cf-t:hover b{color:var(--accent)}
.wz-cf-a{display:flex;gap:6px;flex:none}

:root .wz-cf-a .btn .ico{width:13px}
@media(max-width:640px){ .wz-cf-r{flex-wrap:wrap} .wz-cf-a{width:100%} .wz-cf-a .btn{flex:1} }
.pjs-note--re{align-items:center}
.pjs-note--re > .btn{margin-left:auto;flex:none}
.tsh-run.re{background:var(--accent-soft)}
.tsh-run.re > .ico{width:18px;height:18px;color:var(--accent);flex:none}
.tsh-run.re > .btn{margin-left:auto;flex:none}
:root .wz-cf-r > .avatar{width:34px;height:34px;flex:none}
/* ── «Клиенты» в стиле «Проектов» ── */
.clc .pjc-top{align-items:center;gap:10px}
.clc .pjc-top > .avatar{width:30px;height:30px;font-size:11px;flex:none}
.clc .pjc-top .pjc-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clc-nps{text-align:right}
.clc-nps b{font-family:var(--font-display);font-size:26px!important;line-height:1;font-weight:800}
.clc-nps.ok b{color:var(--ok)} .clc-nps.neg b{color:var(--crit)}
.clc-nps em{font-style:normal;font-size:11.5px;font-weight:700;color:var(--muted);letter-spacing:.04em}
.clc-ph{display:inline-flex;align-items:center;gap:6px;min-width:0;font-size:13px;font-weight:600;color:var(--text-2)}
.clc-ph .ico{width:14px;height:14px;color:var(--accent);flex:none}
.clc-ph span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clc.on .clc-nps b,.clc.on .clc-nps em,.clc.on .clc-ph,.clc.on .clc-ph .ico{color:#fff!important}

.cl-ht{display:flex;align-items:center;gap:14px}
.cl-ht > .avatar{width:52px;height:52px;font-size:17px;flex:none}
.pjs-n b.ok{color:var(--ok)}
.cl-fg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;margin-top:6px}
.cl-fg .kb-f{margin:0}
.cl-facts{display:flex;align-items:center;gap:10px;margin-top:20px}
.cl-facts > span{flex:1}
@media(max-width:640px){ .cl-fg{grid-template-columns:1fr} .cl-facts{flex-wrap:wrap} }
:root .clc-nps.none b{font-size:15px!important;font-weight:700;color:var(--muted)} :root .clc.on .clc-nps.none b{color:rgba(255,255,255,.85)!important}
/* клиент: строки проектов без значка — справа команда и кто ведёт */




.clp-pm{display:inline-flex;align-items:center;gap:10px;min-width:170px}
.clp-pm .avatar{width:34px;height:34px;flex:none}
.clp-pm b{display:block;font-size:13px;font-weight:700;color:var(--text);white-space:nowrap}
.clp-pm em{display:block;font-style:normal;font-size:12px;color:var(--muted);white-space:nowrap}
.clp-team{display:inline-flex;align-items:center}
.clp-team .avatar{margin-left:-8px}
.clp-team .avatar:first-child{margin-left:0}
.clp-team em{font-style:normal;font-size:12px;font-weight:700;color:var(--muted);margin-left:6px}


/* раскрытый клиент: без подъёма при наведении и без пустоты под последним проектом */
:root .cl-detail,:root .cl-detail:hover{transform:none!important;box-shadow:var(--card-shadow, 0 1px 2px rgba(0,0,0,.08), 0 10px 24px -16px rgba(0,0,0,.35))!important}
:root .cl-detail .pjs-scroll{padding-bottom:0!important}
:root .cl-detail .pjv-sec:last-child .pjt .mt-l > .mt-r:last-child{border-bottom:0!important}
/* «Клиенты»: своё свечение — справа снизу и слева сверху (на «Проектах» — слева снизу, на дашборде — справа сверху) */
:root .cl-page .pjx-hero .db-orb.o1{left:auto!important;right:-160px!important;top:auto!important;bottom:-200px!important;width:480px!important;height:480px!important;opacity:.5}
:root .cl-page .pjx-hero .db-orb.o2{left:-80px!important;right:auto!important;top:-170px!important;bottom:auto!important;width:320px!important;height:320px!important;opacity:.3}
.clp-team .avatar{margin-left:-6px}
/* значок проекта — одинаковый в списках: окно сотрудника, клиент, блок «Проекты» на дашборде */




.mt-r.pjr .mt-a{display:flex;align-items:center;gap:16px}
.mt-r.pjr .mt-d{min-width:76px;text-align:right}
@media(max-width:760px){ .mt-r.pjr .mt-a{display:none} }


/* «Команда»: шапка как у «Проектов»/«Клиентов», своё свечение; центр подиума — ярче */
:root .tm-hero{margin-bottom:22px}
:root .tm-hero .db-orb.o1{left:28%!important;right:auto!important;top:auto!important;bottom:-230px!important;width:520px!important;height:420px!important;opacity:.5}
:root .tm-hero .db-orb.o2{left:auto!important;right:-120px!important;top:-120px!important;bottom:auto!important;width:300px!important;height:300px!important;opacity:.32}
:root .tm-hero .db-r b.txt{font-size:20px;line-height:1.25;padding-top:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .tm-hero .db-mh-acts{display:flex;gap:8px;align-items:center}
:root .tm-podium::before{width:640px;height:320px;top:10px;background:radial-gradient(closest-side,rgba(255,93,0,.45),rgba(255,120,40,.12) 60%,transparent);filter:blur(34px)}
.tm-podium-person[role="button"]{cursor:pointer;border-radius:16px;transition:transform .2s cubic-bezier(.34,1.5,.5,1)}
.tm-podium-person[role="button"]:hover{transform:translateY(-3px)}
.tm-podium-person[role="button"]:hover .tm-podium-name{color:var(--accent)}
.tm-card[role="button"]{cursor:pointer;transition:transform .18s cubic-bezier(.34,1.5,.5,1),box-shadow .2s}
.tm-card[role="button"]:hover{transform:translateY(-2px)}
.tm-card[role="button"]:active{transform:scale(.99)}
/* окно сотрудника: кнопки справа от имени и должности */
:root .tp-hacts--r{margin:0 0 0 auto!important;display:flex;align-items:center;gap:8px;flex-wrap:nowrap;align-self:center}

:root .tp-hacts--r .btn.tp-sq{width:36px}
:root .tp-hacts--r + .wm-x{margin-left:10px}
@media(max-width:700px){ :root .tp-modal--emp .wm-head{flex-wrap:wrap} :root .tp-hacts--r{order:5;width:100%;margin:10px 0 0!important;flex-wrap:wrap} }
:root .tp-hacts--r .btn.tp-sq .ico{width:16px!important} :root .tp-hacts--r .btn .ico{width:15px}
:root .tp-hacts--r .btn.tp-sq{min-width:36px} :root .tp-hacts--r .btn .ico{flex:none!important;min-width:15px}
/* окно сотрудника: имя и должность по центру аватара, ручка у имени; «Выйти везде» и «Удалить» — круглые, в ряд с крестиком */
:root .tp-modal--emp .wm-head{align-items:center!important}
:root .tp-modal--emp .tp-namerow{display:flex;align-items:center;gap:8px}
.tp-pen{flex:none}



:root .tp-hacts--r{align-self:center!important}
:root .tp-hacts--r .btn.tp-sq{width:36px!important;min-width:36px}
:root .tp-modal--emp .wm-head .wm-x{align-self:center!important;margin-top:0!important}
:root .tm-hero{min-height:0!important;padding-bottom:26px!important;margin-bottom:6px!important}
:root .tm-hero{padding-bottom:4px!important}
/* окно сотрудника: крестик и круглые кнопки — в правом верхнем углу; ручка при наведении — яркая оранжевая */
:root .tp-modal--emp .tp-hacts--r{align-self:flex-start!important;margin-top:0!important}
:root .tp-modal--emp .wm-head .wm-x{align-self:flex-start!important;margin-top:0!important}
:root .tp-modal--emp .wm-head{position:relative}

/* стрелки месяца в окне сотрудника (Зарплата, Посещаемость, Расходы) — крупнее */
:root .pjh-step .ico{width:17px!important;min-width:17px;flex:none!important}
/* «Команда»: без пустоты между заголовком и поиском */
:root .tm-hero .db-mh{min-height:0!important;margin-bottom:0!important;padding-bottom:0!important}
:root .tm-hero + .pj-sec{margin-top:4px!important}
.cpl2-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.cpl2-rr{display:flex;align-items:center;gap:8px;margin-left:auto}
/* «Подрядчики», «Локации», «Инвентарь» — шапка как у «Проектов»; свечение у каждой страницы своё */
:root .pg-hero{margin-bottom:18px}
:root .pg-hero + .pj-sec{margin-top:0}
:root .pg-ac .db-orb.o1{left:56%!important;right:auto!important;top:-230px!important;bottom:auto!important;width:480px!important;height:400px!important;opacity:.5}
:root .pg-ac .db-orb.o2{left:-90px!important;right:auto!important;top:35%!important;bottom:auto!important;width:280px!important;height:280px!important;opacity:.3}
:root .pg-loc .db-orb.o1{left:auto!important;right:-140px!important;top:15%!important;bottom:auto!important;width:440px!important;height:440px!important;opacity:.5}
:root .pg-loc .db-orb.o2{left:18%!important;right:auto!important;top:auto!important;bottom:-210px!important;width:320px!important;height:300px!important;opacity:.32}
:root .pg-gr .db-orb.o1{left:34%!important;right:auto!important;top:-280px!important;bottom:auto!important;width:620px!important;height:380px!important;opacity:.45}
:root .pg-gr .db-orb.o2{left:auto!important;right:6%!important;top:auto!important;bottom:-190px!important;width:260px!important;height:260px!important;opacity:.32}
:root .pg-hero .db-r b .pg-u{font-size:.42em;font-weight:700;color:var(--muted);letter-spacing:0;margin-left:2px}
/* свечение шапки не обрезается: страница режет только по горизонтали; меньше отступ от цифр до фильтров */
:root .page.db-page:has(.pg-hero),:root .page.cl-page,:root .page.tm-page,:root .page.pjx-page{overflow-x:clip!important;overflow-y:visible!important;overflow-clip-margin:0}
:root .pg-hero{margin-bottom:6px!important}
:root .pg-hero .db-sumin{margin-bottom:0}
/* свечения целиком внутри рабочей области — растворяются, а не упираются в край */
:root .pg-gr .db-orb.o1{top:-110px!important;height:340px!important}
:root .pg-ac .db-orb.o1{top:-110px!important;left:52%!important}
:root .pg-loc .db-orb.o1{right:30px!important;width:380px!important;height:380px!important}
:root .pg-loc .db-orb.o2{bottom:-140px!important}
:root .pg-ac .db-orb.o2{left:0!important}
:root .pg-gr .db-orb.o1,:root .pg-ac .db-orb.o1{top:-30px!important}
/* ── окна подрядчика, инвентаря, локации — шапка как у окна сотрудника ── */
.prof-modal .modal-body{display:flex;flex-direction:column;gap:14px}
.prof-h{display:flex;align-items:center;gap:16px;padding:22px 24px 6px}
.prof-ph{width:64px;height:64px;flex:none;border-radius:18px;overflow:hidden;background:var(--surface-3)}
.prof-ph img{width:100%;height:100%;object-fit:cover;display:block}
.prof-t{flex:1;min-width:0}
.prof-nr{display:flex;align-items:center;gap:8px}
.prof-nr h3{margin:0;font-size:21px;font-weight:600;letter-spacing:-.01em;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prof-sub{margin-top:3px;font-size:13px;color:var(--muted)}
.prof-acts{display:flex;align-items:center;gap:8px;align-self:flex-start;flex:none}
:root .prof-acts .btn.tp-sq{width:36px;min-width:36px}
:root .prof-acts .btn.tp-sq .ico{width:16px;flex:none}

:root .prof-acts .x-close,:root .prof-acts .pm-back{margin-left:0!important}
.prof-desc{margin:0;font-size:13.5px;line-height:1.5;color:var(--text-2)}
.prof-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;border-radius:14px;overflow:hidden;background:var(--border)}
.prof-kv > div{display:flex;flex-direction:column;gap:3px;padding:12px 14px;background:color-mix(in srgb,var(--text) 3%,var(--surface))}
.prof-kv span{font-size:12px;color:var(--muted);font-weight:600}
.prof-kv b{font-size:14px;font-weight:700;color:var(--text);overflow-wrap:anywhere}
.prof-kv b.ok{color:var(--ok)} .prof-kv b.crit{color:var(--crit)}
.prof-kv .ac-star{color:var(--accent)}
.loc-gal--m{height:260px;border-radius:16px;overflow:hidden;flex:none}
@media(max-width:560px){ .prof-h{padding:18px 16px 4px} .prof-ph{width:52px;height:52px;border-radius:14px} .prof-nr h3{font-size:18px} .loc-gal--m{height:200px} }
/* карточки — сами кнопки; линии-разделители от края до края */
.pg-card{cursor:pointer;transition:transform .18s cubic-bezier(.34,1.5,.5,1),box-shadow .2s}
.pg-card:hover{transform:translateY(-3px)}
.pg-card:active{transform:scale(.99)}
:root .ac-card.pg-card .ac-rate{margin:auto -20px 0;padding:12px 20px 0}
:root .loc-card.pg-card .ac-rate{margin:0 -18px;padding:12px 18px 0}

.loc-gal--one .loc-cnt .ico{width:13px}

/* «База знаний», «Настройки правил» / «Правила», «Приложение» — шапка как на остальных страницах, своё свечение */
:root .sf-page .pg-hero{margin-bottom:14px}
:root .pg-kb .db-orb.o1{left:auto!important;right:8%!important;top:-60px!important;bottom:auto!important;width:420px!important;height:300px!important;opacity:.45}
:root .pg-kb .db-orb.o2{left:24%!important;right:auto!important;top:auto!important;bottom:-120px!important;width:260px!important;height:220px!important;opacity:.28}
:root .pg-set .db-orb.o1{left:-60px!important;right:auto!important;top:-60px!important;bottom:auto!important;width:400px!important;height:300px!important;opacity:.42}
:root .pg-set .db-orb.o2{left:auto!important;right:22%!important;top:auto!important;bottom:-110px!important;width:300px!important;height:220px!important;opacity:.3}
:root .pg-rules .db-orb.o1{left:42%!important;right:auto!important;top:-70px!important;bottom:auto!important;width:440px!important;height:280px!important;opacity:.42}
:root .pg-rules .db-orb.o2{left:auto!important;right:-40px!important;top:auto!important;bottom:-100px!important;width:260px!important;height:220px!important;opacity:.28}




.pwa-tabs{width:100%;display:grid!important;grid-template-columns:repeat(3,1fr);margin-bottom:16px}

.pwa-tabs .proj-tab .ico{width:15px}
/* свечение растворяется до карточек под шапкой */
:root .pg-kb .db-orb.o1{top:-110px!important;height:260px!important}
:root .pg-kb .db-orb.o2{top:-90px!important;bottom:auto!important;left:30%!important;height:180px!important}
:root .pg-set .db-orb.o1{top:-100px!important;height:250px!important}
:root .pg-set .db-orb.o2{top:-70px!important;bottom:auto!important;height:180px!important}
:root .pg-rules .db-orb.o1{top:-100px!important;height:240px!important}
:root .pg-rules .db-orb.o2{top:-60px!important;bottom:auto!important;height:180px!important}


:root .pwa-card > .pwa-tabs{margin-top:0!important}


/* шапка без цифр — меньше отступ под заголовком */
:root .pg-hero:not(:has(.db-sumin)){padding-bottom:0!important;margin-bottom:18px!important}
:root .pg-hero:not(:has(.db-sumin)) .db-mh{margin-bottom:0!important;min-height:0!important}
.pwa-intro{display:flex;align-items:center;gap:16px}
.pwa-intro .pwa-icon{width:60px!important;height:60px!important;border-radius:16px;flex:none;box-shadow:0 8px 18px -10px rgba(0,0,0,.45)}
.pwa-intro b{display:block;font-size:15px;font-weight:700;color:var(--text)}

:root .pg-hero:not(:has(.db-sumin)) .db-mh{padding-bottom:0!important}
:root .pg-hero:not(:has(.db-sumin)){margin-bottom:22px!important}
#pwaSteps{transition:opacity .14s ease,transform .14s ease}
#pwaSteps.swap{opacity:0;transform:translateY(4px)}
/* ── финансы и посещаемость: одни таблицы, бейджи, наведение (как «Требует внимания») ── */
:root .pg-pay .db-orb.o1{left:62%!important;right:auto!important;top:-40px!important;bottom:auto!important;width:420px!important;height:300px!important;opacity:.45}
:root .pg-pay .db-orb.o2{left:-60px!important;right:auto!important;top:40%!important;bottom:auto!important;width:260px!important;height:240px!important;opacity:.28}


:root .pg-att .db-orb.o1{left:auto!important;right:14%!important;top:-30px!important;bottom:auto!important;width:340px!important;height:260px!important;opacity:.46}
:root .pg-att .db-orb.o2{left:40%!important;right:auto!important;top:-20px!important;bottom:auto!important;width:240px!important;height:180px!important;opacity:.26}
:root .pg-mf .db-orb.o1{left:48%!important;right:auto!important;top:-40px!important;bottom:auto!important;width:300px!important;height:220px!important;opacity:.42}
:root .pg-mf .db-orb.o2{left:-40px!important;right:auto!important;top:-20px!important;bottom:auto!important;width:260px!important;height:180px!important;opacity:.26}
:root .pg-fin .db-orb.o1{left:auto!important;right:-30px!important;top:-40px!important;bottom:auto!important;width:360px!important;height:240px!important;opacity:.44}
:root .pg-fin .db-orb.o2{left:30%!important;right:auto!important;top:-20px!important;bottom:auto!important;width:260px!important;height:180px!important;opacity:.26}
:root .pg-hero .db-hero-t .d .fin-st{font-size:inherit;letter-spacing:inherit;text-transform:none}
:root :is(.main[data-view="payroll"],.main[data-view="expenses"],.main[data-view="attendance"],.main[data-view="myfinance"],.main[data-view="finance"]) .card-head h3{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.015em}

@media(min-width:641px){
  :root :is(.pay-sh-row,.pay-hist-row,.exq-hist-row,.mf-r,.tp-ph,.pay-todo-row):not(:is(.pay-sh-head,.pay-hist-head,.exq-hist-head,.tp-ph--head,.mf-head)){border-top:1px solid var(--border);border-radius:0;margin:0;transition:background .18s}
  :root :is(.pay-sh-row,.pay-hist-row,.exq-hist-row,.mf-r,.tp-ph,.pay-todo-row):not(:is(.pay-sh-head,.pay-hist-head,.exq-hist-head,.tp-ph--head,.mf-head)):hover{background:color-mix(in srgb,var(--text) 5%,transparent)!important}
  :root :is(.pay-sh-row,.pay-hist-row,.exq-hist-row,.mf-r){padding:12px 20px!important}
  
  :root .att-table tbody tr > td{border-top:1px solid var(--border);transition:background .18s}
  :root .att-table tbody tr:hover > td{background:color-mix(in srgb,var(--text) 5%,transparent)!important}
  :root .att-table tbody tr.sev-crit > td,:root .att-table tbody tr.sev-warn > td{background:transparent}
  :root .att-table tbody tr.sev-crit:hover > td,:root .att-table tbody tr.sev-warn:hover > td{background:color-mix(in srgb,var(--text) 5%,transparent)!important}
  :root .att-table thead th{font-size:12px;font-weight:600;color:var(--muted);text-transform:none;letter-spacing:0}
}
.pay-hist-ty-w,.mf-ty,.tp-ty,.exq-hist-status{justify-self:start;display:inline-flex}
:root :is(.pay-hist-row,.mf-r,.tp-ph).pay-hist-row--canc > :not(.pay-hist-ty-w),:root .mf-r.canc > :not(.mf-ty){opacity:.5}

/* скругления — как на «Базе знаний», «Правилах», «Настройках»: блоки 18px, плашки внутри 14px */
:root :is(.main[data-view="payroll"],.main[data-view="expenses"],.main[data-view="attendance"],.main[data-view="myfinance"],.main[data-view="finance"]) .card{overflow:hidden}
:root :is(.main[data-view="payroll"],.main[data-view="expenses"]) .card:is(.pay-card,.exq-hist-card){overflow:visible}


/* «Мои финансы»: «К выплате» — белая карточка с тенью, без свечения, крупнее заголовок */
:root .main[data-view="myfinance"] .mf-hero{padding:26px 28px!important;margin-bottom:0!important;overflow:hidden}
:root .main[data-view="myfinance"] .mf-orb{display:none}
:root .main[data-view="myfinance"] .mf-hl .k{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.015em;color:var(--text)}
/* «Мои запросы» — строки как в остальных таблицах */
:root .mf-reqs{padding:0!important}
:root .mf-q{border-radius:0!important;padding:12px 20px!important;border-top:1px solid var(--border)!important;transition:background .18s!important;transform:none!important;box-shadow:none!important}
:root .mf-q:hover{background:color-mix(in srgb,var(--text) 5%,transparent)!important}
/* без двойной линии под заголовком блока и без пустоты под последней строкой */
:root :is(.main[data-view="payroll"],.main[data-view="expenses"],.main[data-view="attendance"],.main[data-view="myfinance"],.main[data-view="finance"]) .card-head + * > :first-child{border-top:0!important}

:root .mf-sec{padding-bottom:0!important}
/* окна запросов (выплата, отмена штрафа): серые плашки и чипы как везде */
:root .pf-plates .wm-plate{background:color-mix(in srgb,var(--text) 5%,var(--surface))!important;box-shadow:none!important;border:0!important;border-radius:14px!important}
:root .pf-plates .wm-plate .v{font-family:var(--font-display);font-weight:800;letter-spacing:-.01em}
:root .pf-plates .pf-cardp{cursor:pointer;transition:background .15s,transform .15s}
:root .pf-plates .pf-cardp:hover{background:var(--accent-soft)!important}
:root .pf-plates .pf-cardp:active{transform:scale(.98)}
:root .pf-chips button{height:30px;padding:0 13px;border:0;border-radius:999px;background:color-mix(in srgb,var(--text) 6%,var(--surface));color:var(--text-2);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;transition:background .15s,color .15s,transform .18s cubic-bezier(.34,1.5,.5,1)}
:root .pf-chips button:hover{background:var(--accent-soft);color:var(--accent);transform:translateY(-1px)}
:root .pf-chips button:active{transform:scale(.94)}

/* «Последние отметки»: бейджи «Вне зоны» / «Исключение» помещаются */
:root .att-table--me col.c-sotr{width:96px} :root .att-table--me col.c-arr{width:110px} :root .att-table--me col.c-late{width:80px}
:root .att-table--me col.c-zone{width:132px} :root .att-table--me col.c-pen{width:132px}
:root .att-table--me td{white-space:nowrap;overflow:visible}
:root .att-table--me td .tmark{max-width:none}
:root .req-tabs .proj-tab i{margin-left:6px}
:root .aex-chips{display:flex;flex-wrap:wrap;gap:6px}




:root .modal:not(.cf-modal) > .modal-body,:root .modal:not(.cf-modal) > .wm-body{scrollbar-gutter:auto}
.req-body{transition:opacity .12s ease} .req-body.swap{opacity:0}
:root .pg-hero .db-mh-acts .btn{margin:0!important} :root .pg-hero .db-mh-acts .btn .ico{width:16px!important}
:root .att-table--me .att-user{display:flex;flex-direction:column;align-items:flex-start;gap:2px} :root .att-table--me .att-user .r{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px} :root .att-table--me col.c-sotr{width:190px}
/* посещаемость: приход и уход раздельно, ровные колонки */
:root .att-mono.muted,.tp-none{color:var(--muted)}
:root .att-table{table-layout:fixed;width:100%}
:root .att-table col.c-arr,:root .att-table col.c-late{width:88px}
:root .att-table col.c-sch{width:110px}
:root .att-table col.c-zone{width:140px}
:root .att-table col.c-pen{width:150px}
:root .att-table--me col.c-sotr{width:auto}
:root .att-table--me col.c-arr,:root .att-table--me col.c-late{width:16%}
:root .att-table--me col.c-zone{width:24%} :root .att-table--me col.c-pen{width:20%}
:root .att-table--me col.c-sotr{width:24%}
:root .att-table td{padding-left:10px;padding-right:10px}
:root .att-table th{padding-left:10px;padding-right:10px}
:root .att-table td:first-child{padding-left:20px}
:root .att-table th:first-child{padding-left:20px}
:root .att-table td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.tp-ph--att{grid-template-columns:minmax(0,1fr) 64px 76px 110px 34px!important}
@media(max-width:640px){ .tp-ph--att{grid-template-columns:minmax(0,1fr) 56px auto 30px!important} .tp-ph--att > span:nth-child(4){display:none} }
/* ровные колонки: время — одинаковой ширины, бейджи — одинаковой; последний столбец не прилипает к краю */
:root .att-table td{padding-left:12px!important;padding-right:12px!important}
:root .att-table th{padding-left:12px!important;padding-right:12px!important}
:root .att-table td:first-child{padding-left:20px!important}
:root .att-table th:first-child{padding-left:20px!important}
:root .att-table td:last-child{padding-right:20px!important}
:root .att-table th:last-child{padding-right:20px!important}
:root .att-table--me col.c-sotr{width:20%!important}
:root .att-table--me col.c-arr,:root .att-table--me col.c-late{width:14%!important}
:root .att-table--me col.c-zone,:root .att-table--me col.c-pen{width:19%!important}
:root .att-table:not(.att-table--me) col.c-sotr{width:22%!important}
:root .att-table:not(.att-table--me) col.c-sch,:root .att-table:not(.att-table--me) col.c-arr,:root .att-table:not(.att-table--me) col.c-late{width:11%!important}
:root .att-table:not(.att-table--me) col.c-zone,:root .att-table:not(.att-table--me) col.c-pen{width:17%!important}
:root .att-table:not(.att-table--me) col.c-proj{width:14%!important}
/* журнал прихода: фильтры справа сверху, цифры как на дашборде (число, под ним подпись), линии у таблицы */
.att-head-r{margin-left:auto;display:flex;align-items:center;gap:8px}
:root .main[data-view="attendance"] .att-card > .card-head{border-bottom:1px solid var(--border)!important;display:flex;align-items:center;gap:10px}
.att-nums{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;padding:20px 20px 22px}
.att-n{display:flex;flex-direction:column;gap:6px;min-width:0}
.att-n b{font-family:var(--font-display);font-size:40px;line-height:1;font-weight:800;letter-spacing:-.02em;color:var(--text);white-space:nowrap}
.att-n b em{font-style:normal;font-size:.45em;font-weight:700;color:var(--muted);letter-spacing:0}
.att-n b.neg{color:var(--crit)} .att-n b.warn{color:#d39a00}
.att-n b .pg-u{font-size:.42em;font-weight:700;color:var(--muted)}
.att-n span{font-size:13.5px;font-weight:600;color:var(--text-2)}
:root .att-card .att-table thead th{border-top:1px solid var(--border)!important;border-bottom:1px solid var(--border)}
@media(max-width:900px){ .att-nums{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media(max-width:520px){ .att-nums{grid-template-columns:repeat(2,minmax(0,1fr))} .att-n b{font-size:32px} .att-head-r{margin-left:0;flex-wrap:wrap} }
.att-nums{grid-template-columns:repeat(3,minmax(0,1fr))!important;row-gap:24px!important;padding:22px 20px 24px!important}
.att-tr{cursor:pointer}
:root .att-pen-cell{display:flex;align-items:center;gap:8px} :root .att-pen-cell > .att-kb{margin-left:auto;flex:none}
/* шапка блоков с вкладками — как «Требует внимания»: компактно, вкладки у правого края */
:root .card[data-req] > .card-head,:root .mf-sec > .card-head{display:flex;align-items:center;gap:12px;padding:14px 20px!important;min-height:0}
:root .card[data-req] > .card-head .req-tabs,:root .mf-sec > .card-head .mf-tabs{margin-left:auto}
:root .req-body > * > :first-child{border-top:0!important}
.att-gone{font-style:normal;font-size:11.5px;font-weight:600;color:var(--muted);margin-left:4px}
:root .att-card > .card-head + .tablewrap thead th{border-top:0!important}
/* «Моя посещаемость»: шапки календаря и «Последних отметок» одной высоты; дни недели не прижаты к линии */
:root .att-me .att-card > .card-head{min-height:64px;padding:12px 20px!important;display:flex;align-items:center;box-sizing:border-box;border-bottom:1px solid var(--border)!important}
:root .att-heat-hd .pjh-step{width:36px}
:root .att-heat-wd{padding-top:14px!important}
/* ── «Зарплаты» и «Расходы» — как остальные страницы ── */
.att-n b.ok{color:var(--ok)} .att-n b.acc{color:var(--accent)}
:root :is(.main[data-view="payroll"],.main[data-view="expenses"]) .card > .card-head{display:flex;align-items:center;gap:12px;padding:14px 20px!important;min-height:64px;box-sizing:border-box;border-bottom:1px solid var(--border)!important;margin:0!important}
:root :is(.main[data-view="payroll"],.main[data-view="expenses"]) .card > .card-head > :not(h3):last-child{margin-left:auto}
:root .pay-todo-tot,:root .exq-hist-tot{font-family:var(--font-display);font-size:19px;font-weight:800;letter-spacing:-.01em}
/* строки «Требует выплаты» — как строки «Требует внимания» */
:root .main[data-view="payroll"] .pay-todo-row{padding:12px 20px!important;gap:14px}
:root .pay-todo-m .t{font-size:14px!important;font-weight:700!important;color:var(--text)}
:root .pay-todo-m .m{font-size:12.5px!important;color:var(--muted);margin-top:2px}
:root .pay-todo-v .mono{font-size:14px!important;font-weight:800}
:root .pay-todo-age{font-size:12px!important}
:root .pay-todo-ic{width:34px!important;height:34px!important;border-radius:10px!important;display:grid;place-items:center;background:color-mix(in srgb,var(--crit) 10%,var(--surface))!important;color:var(--crit)!important;flex:none}
:root .pay-todo-ic .ico{width:16px;height:16px}
:root .main[data-view="payroll"] .pay-todo-row > .avatar{width:34px;height:34px}
/* ведомость и история: тулбар с отступами, строки крупнее */
:root .pay-nums{border-bottom:1px solid var(--border)}


@media(min-width:641px){ :root :is(.pay-sh-row,.pay-hist-row,.exq-hist-row):not(:is(.pay-sh-head,.pay-hist-head,.exq-hist-head)){font-size:13.5px} }
/* «Расходы»: карточка заявки — серые плашки как везде */


:root .exq-mdrow{transition:background .18s,transform .15s}
:root .main[data-view="payroll"] .card-head .pay-sh-acts{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
:root .main[data-view="payroll"] .card-head .pay-hist-period{margin:0}
.pay-click{cursor:pointer}
/* «Расходы» → «История»: фильтры в шапке, раскрытая заявка в общем стиле */
:root .main[data-view="expenses"] .card-head .pay-sh-acts{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}

:root .exq-hist-p{display:flex;flex-direction:column;gap:2px;min-width:0}
:root .exq-hist-p em{font-style:normal;font-size:12px;color:var(--muted)}
:root .exq-hist-sum{font-weight:800;font-size:14px;text-align:right}
:root .exq-hist-chev .ico{width:15px;height:15px;color:var(--muted);transition:transform .2s}
:root .exq-hist.open .exq-hist-chev .ico{transform:rotate(90deg);color:var(--accent)}
:root .exq-hist.open > .exq-hist-row{background:color-mix(in srgb,var(--text) 5%,transparent)!important}











 



:root .exq-hist.open .exq-hist-chev .ico{transform:rotate(180deg)!important}



  



@keyframes exhIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
/* назначить монтажёра */
.ed-list{display:flex;flex-direction:column;gap:6px;max-height:360px;overflow-y:auto}
.ed-r{display:flex;align-items:center;gap:12px;width:100%;padding:9px 12px;border:0;border-radius:14px;background:color-mix(in srgb,var(--text) 5%,var(--surface));font:inherit;text-align:left;cursor:pointer;transition:background .15s,box-shadow .15s}

.ed-r.on{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}
.ed-r .avatar{width:34px;height:34px;flex:none}
.ed-n{flex:1;min-width:0}
.ed-n b{display:block;font-size:13.5px;font-weight:700;color:var(--text)}
.ed-n b em{font-style:normal;font-size:11px;font-weight:700;color:var(--accent);margin-left:4px}
.ed-n > span{display:block;font-size:12px;color:var(--muted)}
.ed-r.on .se-ck{background:var(--accent);border-color:var(--accent);color:#fff}
.wz-edhead{display:flex;align-items:center;gap:8px;color:var(--text-2);font-weight:600} .wz-edhead .ico{width:15px;height:15px;color:var(--accent)}
.tn-newp{display:flex;flex-direction:column;gap:8px;margin-top:8px}

/* ══ телефон: правки по страницам (финансы, посещаемость, журнал, последние отметки) ══ */
@media(max-width:640px){
  /* шапки блоков: без линии, заголовок в одну строку, фильтры/вкладки — под заголовком в ряд */
  :root :is(.main[data-view="payroll"],.main[data-view="expenses"],.main[data-view="attendance"],.main[data-view="myfinance"]) .card > .card-head{border-bottom:0!important;flex-wrap:wrap;min-height:0!important;padding:12px 4px 10px!important;row-gap:10px}
  :root :is(.main[data-view="payroll"],.main[data-view="expenses"],.main[data-view="attendance"],.main[data-view="myfinance"]) .card > .card-head > h3{flex:1 1 auto;white-space:nowrap;font-size:18px}
  :root :is(.main[data-view="payroll"],.main[data-view="expenses"],.main[data-view="attendance"],.main[data-view="myfinance"]) .card > .card-head > :is(.pay-sh-acts,.att-head-r,.req-tabs,.mf-tabs){order:5;flex:1 1 100%;margin-left:0!important;justify-content:flex-start}
  :root .card-head > :is(.pay-sh-acts,.att-head-r){display:grid!important;grid-template-columns:1fr 1fr;gap:8px}
  :root .card-head > :is(.pay-sh-acts,.att-head-r) > *{min-width:0;width:100%!important}
  :root .card-head > :is(.pay-sh-acts,.att-head-r) .dd,:root .card-head > :is(.pay-sh-acts,.att-head-r) .rc{width:100%!important;min-width:0!important;max-width:none!important}
:root .card-head > :is(.pay-sh-acts,.att-head-r) .rc-trig{width:100%!important;min-width:0!important;max-width:none!important}
:root .card-head > :is(.pay-sh-acts,.att-head-r) .dd-trigger{width:100%!important;min-width:0!important;max-width:none!important}
  :root .card-head > :is(.req-tabs,.mf-tabs){display:grid!important;grid-template-columns:repeat(auto-fit,minmax(0,1fr));width:100%}
  
  :root .pay-nums,:root .att-nums{border:0!important;padding:8px 4px 14px!important}
  :root .att-n b{font-size:32px}
  /* запросы-исключения: белый блок, имя и решение в строке, бейдж справа сверху */
  :root .main[data-view="attendance"] .att-req{background:var(--surface)!important;border-radius:18px!important;box-shadow:0 1px 2px rgba(0,0,0,.06),0 10px 24px -16px rgba(0,0,0,.35)!important;padding:0 12px!important}
  :root .main[data-view="attendance"] .att-req .pay-todo-row{background:none!important;box-shadow:none!important;border-radius:0!important;border-top:1px solid var(--border)!important;padding:12px 2px!important}
  :root .att-req .pay-todo-row .tmark{width:max-content;flex:none;align-self:start;justify-self:end}
  /* журнал прихода — компактные карточки: сотрудник и штраф сверху, время мелкими подписями */
  :root .att-table:not(.att-table--me):not(.att-table--wide) tr{grid-template-columns:1fr 1fr 1fr;grid-template-areas:"user user pen" "sch arr left" "late zone zone";-webkit-tap-highlight-color:transparent}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(1){grid-area:user}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(2){grid-area:sch}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(3){grid-area:arr}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(4){grid-area:left}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(5){grid-area:late}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(6){grid-area:zone}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(7){grid-area:pen;grid-column:auto;border-top:0!important;padding-top:0!important;margin-top:0;align-items:flex-end;padding-right:30px!important}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(n+2):nth-child(-n+6){display:flex;flex-direction:column;align-items:flex-start;gap:3px}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(n+2):nth-child(-n+6)::before{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(2)::before{content:'График'}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(3)::before{content:'Приход'}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(4)::before{content:'Уход'}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(5)::before{content:'Опоздание'}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(6)::before{content:'Зона'}
  :root .att-table:not(.att-table--me) td:last-child::before{content:none!important}
  :root .att-table td:first-child{padding-left:0!important}
  :root .att-table td{padding-left:0!important;padding-right:0!important}
:root .att-table th{padding-left:0!important;padding-right:0!important}
  /* последние отметки: дата и штраф сверху, приход / уход / опоздание мелкими подписями */
  :root .att-table--me tr{grid-template-columns:1fr 1fr 1fr!important;grid-template-areas:"d d pen" "arr left late" "zone zone zone"!important;row-gap:8px!important;-webkit-tap-highlight-color:transparent}
  :root .att-table--me td:nth-child(1){grid-area:d}
  :root .att-table--me td:nth-child(2){grid-area:arr}
  :root .att-table--me td:nth-child(3){grid-area:left}
  :root .att-table--me td:nth-child(4){grid-area:late}
  :root .att-table--me td:nth-child(5){grid-area:zone;justify-self:start!important}
  :root .att-table--me td:nth-child(5):not(:has(.tmark)){display:none}
  :root .att-table--me td:nth-child(6){grid-area:pen;justify-self:end}
  :root .att-table--me td:nth-child(n+2):nth-child(-n+4){display:flex;flex-direction:column;gap:3px}
  :root .att-table--me td:nth-child(n+2):nth-child(-n+4)::before{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}
  :root .att-table--me td:nth-child(2)::before{content:'Приход'}
  :root .att-table--me td:nth-child(3)::before{content:'Уход'}
  :root .att-table--me td:nth-child(4)::before{content:'Опоздание'}
  :root .att-table tbody tr:hover > td,:root .att-table tbody tr:active > td{background:none!important}
  /* календарь посещаемости — белая карточка */
  :root .att-me .att-heat{background:var(--surface)!important;border-radius:18px!important;box-shadow:0 1px 2px rgba(0,0,0,.06),0 10px 24px -16px rgba(0,0,0,.35)!important}
}
@media(max-width:640px){
  :root .att-table:not(.att-table--me):not(.att-table--wide) tr{grid-template-columns:repeat(4,minmax(0,1fr))!important;grid-template-areas:"user user user pen" "sch arr left late" "zone zone zone zone"!important;row-gap:10px!important}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(6):not(:has(.tmark)){display:none!important}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(6)::before{content:none!important}
  :root .att-table:not(.att-table--me):not(.att-table--wide) td:nth-child(5)::before{content:'Опозд.'}
  :root .att-table--me tr{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@media(max-width:640px){ html,body{overscroll-behavior-y:none} }
/* телефон: вкладки статусов проектов и вкладки проекта листаются вбок; огонёк приоритета — в правом верхнем углу блока */
@media(max-width:640px){
  
  :root :is(.pjx-tabs,.pjs-tabs).proj-tabs::-webkit-scrollbar{display:none}
  :root :is(.pjx-tabs,.pjs-tabs) .proj-tab{flex:none!important}
  :root .pjs-in{position:relative}
  :root .pjs-in .pjs-acts .prio-fl--head{position:absolute;top:14px;right:14px;z-index:2;margin:0}
  :root .pjs-in .pjs-head{padding-right:44px}
}
@media(max-width:640px){
  
  :root :is(.att-req,.req-body) .pay-todo-row:has(> .tmark) > *{grid-area:auto!important;grid-row:1!important}
  :root :is(.att-req,.req-body) .pay-todo-row:has(> .tmark) > .tmark{grid-column:3!important;margin:2px 0 0!important;position:static!important}
}
@media(max-width:640px){
  /* вкладки «Ждут ответа / История» — по содержимому, а не во всю ширину */
  :root .card-head > :is(.req-tabs,.mf-tabs){display:inline-flex!important;width:auto!important;flex:0 0 auto!important;max-width:100%}
  :root .card-head > :is(.req-tabs,.mf-tabs) .proj-tab{flex:none!important}
  :root .main[data-view="myfinance"] .card > .card-head{padding:14px 16px 10px!important}
}
/* телефон: «Клиенты» — карандаш справа от названия, контакты в две колонки */
@media(max-width:640px){
  :root .pjs-head.cl-head{flex-direction:row!important;align-items:flex-start!important;justify-content:space-between;gap:12px}
  :root .cl-head .pjs-acts{margin:0!important;flex:none;width:auto!important}
  :root .cl-head .pjs-acts .btn--edit{width:40px;min-width:40px}
  :root .cl-head .pjs-acts .btn--edit span{display:none}
  :root .main[data-view="clients"] .pjv-kvs{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:14px}
  :root .main[data-view="clients"] .pjv-kv b{overflow-wrap:anywhere}
}
/* модалка сотрудника: вкладки вне прокрутки — всегда видны под шапкой */
:root .tp-tabbar{flex:none;padding:12px 26px 6px;position:relative;z-index:2}
:root .tp-tabbar + .wm-body{padding-top:12px}
:root .tp-tabbar .tp-tabs{max-width:100%;width:max-content}
:root .tp-tabbar .tp-tabs::-webkit-scrollbar{display:none}
@media(max-width:640px){
  :root .tp-tabbar{padding:10px 18px 4px}
  :root .tp-tabbar .tp-tabs{width:auto}
  :root .tp-tabbar .proj-tab{flex:none!important}
  /* шапка: аватар | имя с карандашом, должность, круглые кнопки | крестик */
  :root .tp-modal .wm-head{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"av t x" "av a a";column-gap:14px;row-gap:10px;align-items:start}
  :root .tp-modal .wm-head > .avatar{grid-area:av;width:64px!important;height:64px!important;font-size:20px!important;align-self:start}
  :root .tp-modal .wm-head > .wm-hd-t{grid-area:t;min-width:0;align-self:center}
  :root .tp-modal .wm-head > .wm-x{grid-area:x;position:static!important;margin:0!important}
  :root .tp-modal .wm-head > .tp-hacts{grid-area:a;justify-content:flex-start!important;margin:0!important;gap:8px;width:auto!important;flex-wrap:nowrap}
  :root .tp-modal .wm-head .tp-sq{width:38px!important;min-width:38px!important;flex:none}
  :root .tp-modal .tp-namerow{display:flex!important;flex-wrap:nowrap!important;align-items:center;gap:8px}
  :root .tp-modal .tp-namerow h3{font-size:20px!important;line-height:1.2;min-width:0;overflow-wrap:anywhere}
  :root .tp-modal .tp-namerow .tp-pen{flex:none}
  :root .tp-rk{display:block;font-size:13px!important;line-height:1.3;margin-top:4px;white-space:normal}
}
@media(max-width:640px){
  :root :is(b,.v):has(> .tp-rk){display:flex!important;flex-wrap:wrap!important;align-items:baseline;white-space:nowrap}
  :root .tp-rk{flex:1 1 100%;margin-left:0!important;order:2}
}
@media(max-width:640px){ :root .v:has(> .tp-rk){height:auto!important;max-height:none!important;min-height:0!important;overflow:visible!important;margin-bottom:6px} :root .tp-rk{margin-top:2px!important} }
/* телефон, модалка сотрудника: фильтры под заголовком блока, «Добавить» — в строке с заголовком; строки таблиц — сумма справа */
@media(max-width:640px){
  :root .tp-modal .tp-sec{display:flex!important;flex-wrap:wrap!important;align-items:center;row-gap:10px;column-gap:10px}
  :root .tp-modal .tp-sec > .wz-s1-lbl{flex:1 1 auto;min-width:0;white-space:nowrap}
  :root .tp-modal .tp-sec > .kb-add{order:1;flex:none;margin-left:auto!important}
  :root .tp-modal .tp-sec > :is(.tp-seg,.tp-pnav){order:2;flex:1 1 100%;margin:0!important;max-width:100%}
  :root .tp-modal .tp-sec > .tp-seg{display:flex;width:max-content;flex:0 0 auto}
  :root .tp-modal .tp-sec > .tp-pnav{display:flex;align-items:center;justify-content:space-between;width:100%}
  :root .tp-modal .tp-sec:has(> .tp-pnav:only-child) > .tp-pnav{order:0}
  :root .tp-modal .tp-pnav .tp-pnav-lbl{flex:1;text-align:center}
  /* посещаемость: дата | штраф | × */
  :root .tp-ph--att{grid-template-columns:minmax(0,1fr) auto 30px!important}
  :root .tp-ph--att > .a{grid-column:2;text-align:right;justify-self:end;white-space:nowrap}
  :root .tp-ph--att > :last-child{grid-column:3}
  /* расходы: цифры по две в ряд; сумма и × справа */
  :root .tp-modal .wm-plates--3{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  :root .tp-ph--exp{grid-template-columns:minmax(0,1fr) auto auto!important;column-gap:10px!important}
  :root .tp-ph--exp > .a{grid-column:2;grid-row:1;text-align:right}
  :root .tp-ph--exp > .tp-ex-act{grid-column:3;grid-row:1;justify-self:end}
  :root .tp-ph--exp > .tp-ex-act:has(.tp-acts){grid-column:1 / -1;grid-row:2;justify-self:stretch}
  :root .tp-ph--exp .tp-acts{display:flex;gap:8px}
  :root .tp-ph--exp .tp-acts > *{flex:1}
  /* очки: «за что» в две строки, очки справа */
  :root .tp-ph--xp{grid-template-columns:minmax(0,1fr) auto!important}
  :root .tp-ph--xp > .a{grid-column:2;text-align:right;justify-self:end}
  :root .tp-ph--xp .o b{white-space:normal!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
}
:root .tp-ph--head > span.a{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;color:inherit!important;letter-spacing:inherit}
@media(max-width:640px){
  :root .tp-modal .tp-sec:has(> .tp-seg){row-gap:0}
  :root .tp-modal .tp-sec:has(> .tp-seg)::after{content:'';order:1;flex-basis:100%;height:0}
  :root .tp-modal .tp-sec > .tp-seg{margin-top:10px!important}
}
@media(max-width:640px){ :root .sf-page .pg-hero:is(.pg-set,.pg-rules){padding-left:10px!important;padding-right:10px!important} }
/* телефон, «Последние отметки»: одна белая карточка со строками — дата и штраф, ниже «Приход · Уход · Опоздание» */
@media(max-width:640px){
  :root .att-me .att-card:has(.att-table--me) .tablewrap{background:var(--surface);border-radius:18px;box-shadow:0 1px 2px rgba(0,0,0,.06),0 10px 24px -16px rgba(0,0,0,.35);overflow:hidden}
  :root .att-table--me tbody tr{background:none!important;box-shadow:none!important;border-radius:0!important;margin:0!important;border-top:1px solid var(--border)!important;padding:12px 16px!important;
    grid-template-columns:repeat(3,max-content) 1fr!important;grid-template-areas:"d d d pen" "arr left late zone"!important;column-gap:16px!important;row-gap:6px!important}
  :root .att-table--me tbody tr:first-child{border-top:0!important}
  :root .att-table--me td{padding:0!important;border:0!important;min-width:0}
  :root .att-table--me td:nth-child(n+2):nth-child(-n+4){flex-direction:row!important;align-items:baseline;gap:5px!important;font-size:13px}
  :root .att-table--me td:nth-child(n+2):nth-child(-n+4)::before{text-transform:none!important;letter-spacing:0!important;font-weight:500!important;font-size:12.5px!important}
  :root .att-table--me td:nth-child(4)::before{content:'Опозд.'!important}
  :root .att-table--me td:nth-child(5){justify-self:end!important;align-self:center}
  :root .att-table--me td:nth-child(6){align-self:center;font-weight:600}
  :root .att-table--me .att-user .n{font-weight:600;font-size:14.5px}
  :root .att-me .att-card:has(.att-table--me){background:none!important;box-shadow:none!important}
}
@media(max-width:640px){ :root .att-table--me tbody td:nth-child(6){justify-self:end!important;text-align:right!important;padding-right:0!important;margin:0!important;width:auto!important} }
:root,:root *{-webkit-tap-highlight-color:transparent}
/* телефон, раскрытый проект на дашборде: без повтора «N из M задач», «Готовые» слева, «Открыть проект» справа в одну строку */

/* база знаний: оформленный текст инструкций и метка «кто видит» */
:root .kb-doc{white-space:normal;font-size:14px;line-height:1.6;color:var(--text-2);display:flex;flex-direction:column;gap:10px;max-width:760px}
:root .kb-doc p{margin:0}
:root .kb-doc h4{margin:10px 0 0;font-size:15.5px;font-weight:700;color:var(--text);letter-spacing:-.01em}
:root .kb-doc h4:first-child{margin-top:0}
:root .kb-doc :is(ul,ol){margin:0;padding-left:22px;display:flex;flex-direction:column;gap:5px}
:root .kb-doc li::marker{color:var(--accent);font-weight:700}
:root .kb-doc b{color:var(--text);font-weight:650}
:root .kb-tip{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:12px;background:color-mix(in srgb,var(--accent) 9%,var(--surface));color:var(--text)}
:root .kb-tip svg{flex:none;color:var(--accent);margin-top:2px;width:17px;height:17px}
:root .kb-aud{flex:none;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
:root .kb-aud--pm{background:color-mix(in srgb,#2b7fff 13%,var(--surface));color:#2563c9}
:root .kb-aud--dir{background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent)}
@media(max-width:640px){ :root .kb-acc-hd .badge{display:none} :root .kb-doc{font-size:14.5px} }
:root .kb-doc h4{font-family:inherit!important;font-weight:700!important;font-size:15.5px!important;color:var(--text)!important;letter-spacing:-.01em!important;text-transform:none!important}
/* наведение в сайдбаре, категориях базы знаний и «Смотреть как» — нейтральный серый, не бирюзовый */
:root{--hover-gray:color-mix(in srgb,var(--text) 6%,var(--surface))}
:root .viewas-row:not(.on):hover{background:var(--hover-gray)!important}
/* блок «я» внизу сайдбара: плашка шире аватарки (аватар на месте), чуть ниже по высоте */
:root .sidebar-foot .viewas-trig{width:calc(100% + 16px)!important;margin:0 -8px!important;padding:3px 12px!important;border-radius:14px!important;display:flex;align-items:center;gap:10px;transition:background .15s}
:root .sidebar-foot .viewas-trig:hover{background:var(--hover-gray)!important}
/* «Смотреть как»: аватарки крупнее; выбранная строка — оранжевый градиент, белый текст */
:root .viewas-row{padding:8px 12px!important;gap:12px!important}
:root .viewas-row .avatar{width:40px!important;height:40px!important;font-size:13.5px!important}
:root .viewas-row.on{background:linear-gradient(135deg,#ff8a3d 0%,#ff5a00 100%)!important;box-shadow:0 10px 22px -10px rgba(255,93,0,.75),inset 0 1px 0 rgba(255,255,255,.25)!important}
:root .viewas-row.on .viewas-i .n,:root .viewas-row.on .viewas-i .r,:root .viewas-row.on .viewas-ck{color:#fff!important}
:root .viewas-row.on .viewas-i .r{opacity:.85}

/* «N среди монтажёров» — под номером места, над подписью, мельче; на всех экранах */
:root :is(b,.v):has(> .tp-rk){display:flex!important;flex-wrap:wrap!important;align-items:baseline;white-space:nowrap;height:auto!important;max-height:none!important;min-height:0!important;overflow:visible!important;margin-bottom:6px}
:root .tp-rk{flex:1 1 100%;order:2;display:block;margin:3px 0 0!important;font-size:12.5px!important;line-height:1.3;white-space:normal;font-weight:600}
/* плашки с цифрами: подписи в строке на одном уровне, даже если под цифрой есть уточнение («1 среди монтажёров») */
:root .wm-plates{align-items:stretch!important}
:root .wm-plates > .wm-plate{height:auto!important}
:root .wm-plates > .wm-plate > .l{margin-top:auto!important}
/* ═══ Финансы: счета, вкладки, обзор, журнал, долги ═══ */
:root .fin-page .db-mh-acts{display:flex;gap:8px;flex-wrap:wrap}

:root .fin-accs{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 14px;margin:4px 0 6px;scrollbar-width:none;overscroll-behavior-x:contain}
:root .fin-accs::-webkit-scrollbar{display:none}
:root .fin-acc{flex:0 0 220px;min-height:112px;display:flex;flex-direction:column;gap:4px;padding:14px 16px;text-align:left;font:inherit;color:var(--text);cursor:pointer;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s}
:root .fin-acc:hover{transform:translateY(-2px)}
:root .fin-acc-h{display:flex;align-items:center;gap:8px;min-width:0}
:root .fin-acc-ic{flex:none;width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:var(--hover-gray);color:var(--text-2)}
:root .fin-acc-ic svg{width:15px;height:15px}
:root .fin-acc-n{font-size:13px;font-weight:600;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
:root .fin-acc-ed{flex:none;opacity:0}
:root .fin-acc:hover .fin-acc-ed{opacity:1}


:root .fin-acc-v{margin-top:auto;font-family:var(--font-display);font-size:24px;font-weight:600;letter-spacing:-.02em;white-space:nowrap;font-variant-numeric:tabular-nums}
:root .fin-acc-v .pg-u{font-size:12px;color:var(--muted);font-weight:500;margin-left:2px}
:root .fin-acc.neg .fin-acc-v{color:var(--crit)}
:root .fin-acc-k{font-size:12px;color:var(--muted)}
:root .fin-acc--tot{background:linear-gradient(135deg,#ff8a3d,#ff5a00);color:#fff}
:root .fin-acc--tot .fin-acc-n,:root .fin-acc--tot .fin-acc-k,:root .fin-acc--tot .fin-acc-v .pg-u{color:rgba(255,255,255,.85)}
:root .fin-acc--tot .fin-acc-ic{background:rgba(255,255,255,.2);color:#fff}
:root .fin-acc--add{align-items:center;justify-content:center;flex-direction:row;gap:8px;color:var(--muted);font-weight:600;font-size:13.5px;background:none;box-shadow:inset 0 0 0 1.5px var(--border);flex-basis:170px}
:root .fin-acc--add:hover{color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent)}
:root .fin-tabs{margin:2px 0 16px!important;width:max-content;max-width:100%}
:root .fin-body{display:flex;flex-direction:column;gap:16px}
:root .fin-sec .card-head{gap:12px}
:root .fin-sub{font-size:12.5px;color:var(--muted);margin-left:auto}

:root .fin-nums .att-n span em{font-style:normal;font-weight:700;font-size:11.5px;margin-left:4px}
:root .fin-nums .att-n span em.up{color:var(--ok)} :root .fin-nums .att-n span em.down{color:var(--crit)}
:root .fin-nums{grid-template-columns:repeat(4,minmax(0,1fr))!important}

:root .fin-chart{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:8px;align-items:end;height:180px;padding:8px 16px 0}
:root .fin-col{display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;cursor:pointer;border-radius:10px;padding:6px 0 4px;transition:background .15s}
:root .fin-col:hover,:root .fin-col.on{background:var(--hover-gray)}
:root .fin-col span{font-size:11px;color:var(--muted);font-weight:600}
:root .fin-col.on span{color:var(--text)}
:root .fin-bars{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px;min-height:0}
:root .fin-bars i{width:min(14px,34%);border-radius:5px 5px 2px 2px;min-height:2px;transition:height .4s cubic-bezier(.16,1,.3,1)}
:root .fin-bars i.i,:root .fin-legend i.i{background:linear-gradient(180deg,#46c76a,#1a9a45)}
:root .fin-bars i.e,:root .fin-legend i.e{background:linear-gradient(180deg,#ff8a3d,#ff5a00)}
:root .fin-legend{display:flex;gap:16px;padding:10px 16px 16px;font-size:12px;color:var(--muted)}
:root .fin-legend span{display:flex;align-items:center;gap:6px} :root .fin-legend i{width:10px;height:10px;border-radius:3px}
:root .fin-empty{display:flex;align-items:center;justify-content:center;gap:8px;padding:28px 16px}
:root .fin-empty svg{width:16px;height:16px;flex:none}










:root .fin-link{display:inline-flex;align-items:center;margin-left:auto}
:root .fin-link svg{width:14px}
:root .fin-dec-acts{display:flex;gap:8px;flex:none}
:root .fin-search{margin:0 16px 8px}
:root .fin-search input{flex:1;min-width:0}
:root .fin-search svg{width:16px}
:root .fin-ops-sum{display:flex;gap:14px;padding:4px 16px 10px;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
:root .fin-ops-sum .pos{color:var(--ok);font-weight:650} :root .fin-ops-sum .neg{color:var(--crit);font-weight:650}









 


:root .fin-note{margin:0 16px 10px;font-size:13px;color:var(--muted)}














/* окна: выбор счёта, тип, график оплат */
:root .fin-picks{display:flex;flex-wrap:wrap;gap:8px}
:root .fin-pick{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:8px 12px;border-radius:12px;border:0;background:var(--hover-gray);font:inherit;color:var(--text);cursor:pointer;text-align:left;transition:background .15s,box-shadow .15s}
:root .fin-pick b{font-size:13px;font-weight:650} :root .fin-pick i{font-style:normal;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
:root .fin-pick:hover{background:color-mix(in srgb,var(--text) 10%,var(--surface))}
:root .fin-pick.on{background:linear-gradient(135deg,#ff8a3d,#ff5a00);color:#fff}
:root .fin-pick.on i{color:rgba(255,255,255,.85)}
:root .fin-noacc{display:flex;gap:8px;align-items:flex-start;color:var(--warn,#b26b00)!important}
:root .fin-noacc svg{flex:none;width:16px;height:16px;margin-top:2px}
:root .pr-acc{padding:12px 20px 0}
:root .fin-seg{display:flex;width:100%;margin-bottom:4px}
:root .fin-seg button{flex:1}
:root .fin-hint{display:block;font-style:normal;font-size:12px;color:var(--muted);margin-top:6px}
:root .fin-catnew{margin-top:8px}
:root .fin-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
:root .fin-st{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
:root .fin-st-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) 140px auto 30px;gap:8px;align-items:center}
:root .fin-st-row .pf-amt{margin:0}



@media(max-width:640px){
  :root .fin-acc{flex-basis:180px;min-height:100px;padding:12px 14px} :root .fin-acc-v{font-size:20px} :root .fin-acc-ed{opacity:1}
  :root .fin-nums{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  :root .fin-chart{height:150px;gap:3px;padding:6px 6px 0} :root .fin-col span{font-size:9.5px}
     
  :root .fin-search{margin:0 4px 8px}
     
    
  :root .fin-dec-acts{flex-wrap:wrap;width:100%} :root .fin-dec-acts .btn{flex:1}
  :root .fin-2col{grid-template-columns:1fr}
  :root .fin-st-row{grid-template-columns:1fr 1fr;} :root .fin-st-row .pay-hist-x{justify-self:end}
}
:root .fin-tabs .proj-tab i{margin-left:6px}



  


:root .fin-st-row{grid-template-columns:minmax(0,1fr) 150px 150px 116px 30px!important}


 

@media(max-width:640px){ :root .fin-st-row{grid-template-columns:1fr 1fr!important}  }
:root .cl-fsec{font-size:14px;font-weight:700;color:var(--text);margin:18px 0 10px}
:root .cl-fsec em{font-style:normal;font-weight:500;color:var(--muted);font-size:12.5px}
:root .cl-contacts{display:flex;flex-direction:column;gap:8px}
:root .cl-crow{display:grid;grid-template-columns:1.2fr 1fr 1fr 30px;gap:8px;align-items:center}
:root .cl-addc{margin-top:8px}
:root .pjv-kv .neg{color:var(--crit)}
@media(max-width:640px){ :root .cl-crow{grid-template-columns:1fr 1fr} :root .cl-crow input[data-k="phone"]{grid-column:1} }
:root .pjv-kv b .cl-debt{color:var(--text);font:inherit} :root .pjv-kv b .cl-debt.neg{color:var(--crit)}
/* деньги проекта (директор) */
:root .pjm{margin:4px 0 14px;padding:14px 16px;border-radius:16px;background:var(--hover-gray);cursor:pointer;transition:background .15s}
:root .pjm:hover{background:color-mix(in srgb,var(--text) 9%,var(--surface))}
:root .pjm-h{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:13.5px}
:root .pjm-h em{font-style:normal;font-size:11.5px;color:var(--muted)}
:root .pjm-ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:var(--surface);color:var(--accent)} :root .pjm-ic svg{width:14px;height:14px}
:root .pjm-ed{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--accent)} :root .pjm-ed svg{width:13px;height:13px}
:root .pjm-g{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
:root .pjm-c{display:flex;flex-direction:column;gap:2px;min-width:0}
:root .pjm-c span{font-size:12px;color:var(--muted)}
:root .pjm-c b{font-family:var(--font-display);font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
:root .pjm-c b small{font-size:12px;color:var(--muted)} :root .pjm-c b.ok{color:var(--ok)} :root .pjm-c b.neg{color:var(--crit)} :root .pjm-c b.acc{color:var(--accent)}
:root .pjm-n{margin-top:10px;display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2)} :root .pjm-n svg{width:14px;height:14px;color:var(--accent)}
@media(max-width:640px){ :root .pjm-g{grid-template-columns:repeat(2,minmax(0,1fr))} :root .pjm-h em{display:none} }
:root .pr-acc{padding:14px 0 0!important}
@media(max-width:640px){ :root .fin-page .db-mh-acts{display:grid!important;grid-template-columns:1fr 1fr;width:100%}   }

/* Финансы: начисление/оплата, итоги года, остаток по месяцам */


:root .fin-yr{display:grid;grid-template-columns:1fr 1fr;gap:32px;padding:14px 18px 6px}
:root .fin-yr h4{margin:0 0 8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}







:root .fin-bal{margin:10px 18px 0;padding:14px 0 16px;border-top:1px solid var(--line)}

:root .fin-bal-svg{width:100%;height:auto;max-height:190px;overflow:visible}
:root .fin-bal-svg polyline{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round;vector-effect:non-scaling-stroke}
:root .fin-bal-svg line.z{stroke:var(--line);stroke-dasharray:4 4;vector-effect:non-scaling-stroke}
:root .fin-bal-svg circle{fill:var(--surface);stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke}
:root .fin-bal-svg circle.neg{stroke:var(--danger,#d33)}
:root .fin-bal-svg text{font-size:11px;fill:var(--text-3);text-anchor:middle}
@media(max-width:640px){
  :root .fin-yr{grid-template-columns:1fr;gap:12px}
  
  
}
@media(max-width:640px){
  
  
  :root .fin-bal-svg text{font-size:30px}
}

/* ═══ Финансы v2: счета, сводка, статьи, итоги года, операции, долги ═══ */
/* счета: одинаковая ширина, крупные суммы, тень не обрезается */
:root .fin-accs-w{margin:6px 0 4px}
:root .fin-accs-h{display:flex;align-items:center;justify-content:space-between;margin:0 2px 2px}
:root .fin-accs-h > span{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
:root .fin-accs-h > span i{font-style:normal;margin-left:4px;opacity:.7}
:root .fin-link{display:inline-flex;align-items:center}

:root .fin-link svg{width:14px}
:root .fin-page .fin-accs{display:grid!important;grid-auto-flow:column;grid-auto-columns:calc((100% - 3*14px)/4);gap:14px;overflow-x:auto;padding:12px 14px 26px!important;margin:-6px -14px -12px!important;scroll-snap-type:x proximity;scroll-padding:0 14px}
:root .fin-page .fin-acc{flex:none;min-width:0;min-height:128px;padding:18px 20px;scroll-snap-align:start;gap:2px}
:root .fin-page .fin-acc-n{font-size:13.5px;color:var(--text)}
:root .fin-page .fin-acc-ed{opacity:.55}
:root .fin-page .fin-acc-v{font-size:30px;margin-top:auto;padding-top:14px;line-height:1.1}
:root .fin-page .fin-acc-v small{font-size:13px;font-weight:500;color:var(--muted);margin-left:2px;letter-spacing:0}
:root .fin-page .fin-acc--tot .fin-acc-n,:root .fin-page .fin-acc--tot .fin-acc-v small{color:rgba(255,255,255,.85)}
:root .fin-page .fin-acc-k{margin-top:4px}
/* вкладки раздела — белая подложка */
:root .fin-page .proj-tabs.tp-tabs.fin-tabs{margin-top:14px!important}
/* вкладки-переключатели в заголовке карточки */
:root .card-head > .fin-seg-t{margin:0 0 0 auto!important;border-bottom:0}
:root .fin-sec > .card-head{min-height:64px;padding:12px 20px}
:root .fin-sec > .card-head h3{font-size:17px;font-weight:500}
:root .fin-sub{margin-left:auto;font-size:13px;color:var(--muted)}
:root .fin-empty{padding:34px 20px;display:flex;align-items:center;justify-content:center;gap:8px}
:root .fin-empty svg{width:16px;height:16px}
:root .fin-muted{color:var(--muted);font-size:12.5px}
/* сводка */
:root .fin-sum-h{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;padding:18px 20px 0}
:root .fin-sum-h b{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:-.01em}
:root .fin-sum-h span{font-size:12.5px;color:var(--muted);max-width:620px}
:root .fin-page .fin-nums{padding:18px 20px 8px!important}
:root .fin-nums .att-n[role="button"]{cursor:pointer}
:root .fin-page .fin-chart{display:flex!important;gap:4px;height:230px;padding:10px 20px 0!important;overflow-x:auto;scrollbar-width:thin;align-items:stretch}
:root .fin-page .fin-col{flex:0 0 64px;border:0;background:none;font:inherit;color:inherit;padding:8px 0 6px;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;position:relative}
:root .fin-page .fin-col:hover{background:var(--hover-gray)}
:root .fin-page .fin-col.on{background:var(--accent-soft)}
:root .fin-page .fin-col.on span{color:var(--accent)}
:root .fin-page .fin-col.fut .fin-bars{opacity:.45}
:root .fin-page .fin-col span{font-size:12px;font-weight:600;color:var(--muted)}
:root .fin-page .fin-col em{font-style:normal;font-size:10.5px;color:var(--muted);height:12px;line-height:12px;margin-top:-4px}
:root .fin-page .fin-bars i{width:16px}
:root .fin-page .fin-legend{align-items:center;padding:12px 20px 18px}
:root .fin-page .fin-legend > em{margin-left:auto;font-style:normal}
/* расходы по статьям */
:root .fin-cat-w{display:grid;grid-template-columns:200px minmax(0,1fr);gap:32px;align-items:center;padding:22px 20px 20px}
:root .fin-donut{position:relative;width:200px;height:200px}
:root .fin-donut svg{width:100%;height:100%;transform:rotate(-90deg)}
:root .fin-donut circle{fill:none;stroke-width:22}
:root .fin-donut circle.bg{stroke:var(--surface-2)}
:root .fin-donut-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
:root .fin-donut-c b{font-family:var(--font-display);font-size:22px;font-weight:600;letter-spacing:-.02em}
:root .fin-donut-c span{font-size:12px;color:var(--muted)}
:root .fin-catl{display:grid;grid-template-columns:minmax(0,1fr);column-gap:28px}
:root .fin-catl.two{grid-template-columns:repeat(2,minmax(0,1fr))}
:root .fin-catr{display:grid;grid-template-columns:10px minmax(0,1fr) 40px auto;gap:10px;align-items:center;border:0;border-bottom:1px solid var(--border);background:none;font:inherit;color:var(--text);text-align:left;padding:9px 6px;cursor:pointer;border-radius:0}
:root .fin-catr:hover{background:var(--hover-gray)}
:root .fin-catr i{width:10px;height:10px;border-radius:3px}
:root .fin-catr span{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .fin-catr em{font-style:normal;font-size:12px;color:var(--muted);text-align:right}
:root .fin-catr b{font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right;min-width:92px}
/* итоги года */
:root .fin-page .fin-yr{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px;padding:8px 20px 4px}
:root .fin-yr-c{min-width:0;border:1px solid var(--border);border-radius:16px;padding:16px 18px}
:root .fin-yr h4,:root .fin-bal h4{margin:0 0 12px;font-size:14px;font-weight:600;color:var(--text)}
:root .fin-yr-note{margin:12px 0 0;font-size:12px;color:var(--muted);line-height:1.45}
:root .fin-pm{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;height:220px}
:root .fin-pm-c{display:grid;grid-template-rows:1fr 1fr auto;min-width:0}
:root .fin-pm-up,:root .fin-pm-dn{display:flex;flex-direction:column;align-items:center;min-height:0}
:root .fin-pm-up{justify-content:flex-end;border-bottom:1px solid var(--border-strong)}
:root .fin-pm-dn{justify-content:flex-start}
:root .fin-pm-c i{width:min(22px,70%);flex:none}
:root .fin-pm-up i{background:linear-gradient(180deg,#46c76a,#1a9a45);border-radius:5px 5px 0 0;min-height:2px}
:root .fin-pm-dn i{background:linear-gradient(0deg,#f26a6a,#d93636);border-radius:0 0 5px 5px;min-height:2px}
:root .fin-pm-c em{font-style:normal;font-size:10.5px;font-weight:600;white-space:nowrap;color:var(--text-2);padding:2px 0}
:root .fin-pm-c span{font-size:11px;color:var(--muted);text-align:center;padding-top:6px}
:root .fin-pm-c.nil span{opacity:.5}
:root .fin-wf{display:flex;flex-direction:column;gap:10px}
:root .fin-wf-r{display:grid;grid-template-columns:150px minmax(0,1fr) 84px;gap:12px;align-items:center;font-size:13px}
:root .fin-wf-r > span{color:var(--text-2)}
:root .fin-wf-r > b{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
:root .fin-wf-r > b.pos{color:var(--ok)} :root .fin-wf-r > b.neg{color:var(--crit)}
:root .fin-wf-t{position:relative;height:24px;background:var(--surface-2);border-radius:7px}
:root .fin-wf-t i{position:absolute;top:0;bottom:0;border-radius:7px}
:root .fin-wf-t i.z{width:1px;background:var(--border-strong);border-radius:0}
:root .fin-wf-t i.base{background:linear-gradient(90deg,#ff8a3d,#ff5a00)}
:root .fin-wf-t i.pos{background:#2fb35a}
:root .fin-wf-t i.neg{background:#e45555}
:root .fin-page .fin-bal{margin:20px 20px 0;padding:0 0 18px;border:0}
:root .fin-page .fin-bal-svg{width:100%;height:auto;max-height:230px;overflow:visible;display:block}
:root .fin-page .fin-bal-svg polyline{fill:none;stroke:var(--accent);stroke-width:3;stroke-linejoin:round}
:root .fin-page .fin-bal-svg path.ar{fill:var(--accent);opacity:.08}
:root .fin-page .fin-bal-svg line.z{stroke:var(--border-strong);stroke-dasharray:5 5}
:root .fin-page .fin-bal-svg circle{fill:var(--surface);stroke:var(--accent);stroke-width:3}
:root .fin-page .fin-bal-svg circle.neg{stroke:var(--crit)}
:root .fin-page .fin-bal-svg text{font-size:13px;fill:var(--muted);text-anchor:middle;font-family:inherit}
:root .fin-page .fin-bal-svg text.v{fill:var(--text);font-weight:600}
/* операции: инструменты и таблица */
:root .fin-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:16px 20px 4px}
:root .fin-page .fin-search{flex:1 1 260px;margin:0}

:root .fin-page .fin-search svg{width:15px;flex:none}
:root .fin-page .fin-search input{flex:1;min-width:0}
:root .fin-page .fin-filters{display:flex;gap:8px;flex-wrap:wrap}
:root .fin-page .fin-ops-sum{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 20px 14px;font-size:12.5px;color:var(--muted)}
:root .fin-ops-sum .inc{color:var(--ok);font-weight:600} :root .fin-ops-sum .exp{color:var(--crit);font-weight:600}
:root .fin-ops-sum .fin-link{margin-left:auto}
:root .fin-tbl{border-top:1px solid var(--border)}
:root .fin-tr{display:grid;grid-template-columns:96px minmax(0,1fr) 210px 170px;gap:16px;align-items:center;padding:12px 20px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s}
:root .fin-tr:last-child{border-bottom:0}

:root .fin-th{padding:11px 20px;font-size:12px;font-weight:600;color:var(--muted);cursor:default}
:root .fin-th:hover{background:none}
:root .fin-th > span:nth-child(4){text-align:right}



:root .fin-td-op{display:flex;align-items:center;gap:12px;min-width:0}
:root .fin-td-op > div{min-width:0;display:flex;flex-direction:column;gap:2px}
:root .fin-td-op b{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .fin-td-op span:not(.fin-ti){font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .fin-ti{flex:none;width:36px;height:36px;border-radius:11px;display:grid;place-items:center}
:root .fin-ti svg{width:17px;height:17px}
:root .fin-ti.inc{background:var(--ok-soft);color:var(--ok)}
:root .fin-ti.exp{background:var(--accent-soft);color:var(--accent)}
:root .fin-ti.tr{background:var(--surface-2);color:var(--text-2)}
:root .fin-ti.pj{background:var(--surface-2);color:var(--accent)}
:root .fin-td-acc{display:flex;flex-direction:column;font-size:13px;color:var(--text);min-width:0}
:root .fin-td-acc em{font-style:normal;color:var(--muted);font-size:12.5px}
:root .fin-td-a{text-align:right;font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
:root .fin-td-a.inc{color:var(--ok)} :root .fin-td-a.exp{color:var(--crit)}

/* долги */
:root .fin-tr.fin-dr{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.3fr) 130px 120px}
:root .fin-th.fin-dr > span:nth-child(4){text-align:right}
:root .fin-paid{display:flex;flex-direction:column;gap:6px;min-width:0}
:root .fin-paid-b{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden}
:root .fin-paid-b i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#46c76a,#1a9a45)}
:root .fin-paid span{font-size:12px;color:var(--muted)}
:root .fin-td-next{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}
:root .fin-next{display:flex;flex-direction:column;min-width:0}
:root .fin-next b{font-size:13px;font-weight:600}
:root .fin-next span{font-size:12px;color:var(--muted)}
:root .fin-td-act{display:flex;justify-content:flex-end}

:root .fin-grp{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:12px 20px;background:var(--surface-2);border-bottom:1px solid var(--border)}
:root .fin-grp b{font-size:13.5px;font-weight:700}
:root .fin-grp span{font-size:12.5px;color:var(--muted)}
:root .fin-tr.fin-np{grid-template-columns:minmax(0,1fr) auto}
:root .fin-note{margin:0;padding:14px 20px;font-size:13px;color:var(--muted)}
/* фильтры в заголовках карточек — с отступом друг от друга везде */
:root .card-head .pay-sh-acts{gap:8px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:1100px){
  :root .fin-page .fin-accs{grid-auto-columns:calc((100% - 2*14px)/3)}
  :root .fin-page .fin-yr{grid-template-columns:minmax(0,1fr)}
  :root .fin-catl.two{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:640px){
  :root .fin-page .fin-accs{grid-auto-columns:72%;padding:10px 16px 22px!important;margin:-6px -16px -10px!important}
  :root .fin-page .fin-acc-v{font-size:26px}
  :root .fin-sec > .card-head{flex-wrap:wrap;min-height:0;padding:14px 16px}
  :root .card-head > .fin-seg-t{order:5;margin:4px 0 0!important;width:100%}
  :root .card-head > .fin-seg-t .proj-tab{flex:1}
  :root .fin-sum-h{padding:14px 16px 0}
  :root .fin-page .fin-nums{grid-template-columns:repeat(2,minmax(0,1fr))!important;padding:14px 16px 4px!important}
  :root .fin-page .fin-chart{padding:8px 12px 0!important;height:200px}
  :root .fin-page .fin-col{flex-basis:52px}
  :root .fin-page .fin-legend{flex-wrap:wrap;padding:10px 16px 14px}
  :root .fin-page .fin-legend > em{margin-left:0;width:100%}
  :root .fin-cat-w{grid-template-columns:minmax(0,1fr);justify-items:center;padding:18px 16px;gap:18px}
  :root .fin-catl{width:100%}
  :root .fin-catr b{min-width:0}
  :root .fin-page .fin-yr{padding:6px 16px 4px;gap:14px}
  :root .fin-yr-c{padding:14px}
  :root .fin-pm{height:180px} :root .fin-pm-c em{display:none}
  :root .fin-wf-r{grid-template-columns:110px minmax(0,1fr) 70px;font-size:12px;gap:8px}
  :root .fin-page .fin-bal{margin:16px 16px 0}
  :root .fin-page .fin-bal-svg text{font-size:24px}
  :root .fin-tools{padding:14px 16px 4px}
  :root .fin-page .fin-filters{display:grid;grid-template-columns:1fr 1fr;width:100%}
  :root .fin-page .fin-filters .dd{width:100%!important;min-width:0!important;max-width:none!important}
:root .fin-page .fin-filters .dd-trigger{width:100%!important;min-width:0!important;max-width:none!important}
  :root .fin-page .fin-ops-sum{padding:10px 16px 12px}
  :root .fin-th{display:none!important}
  :root .fin-tr{grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:12px 16px}
  
  
  :root .fin-tr .fin-td-acc{order:4;font-size:12px;color:var(--muted);text-align:right;grid-column:2}
  :root .fin-tr .fin-td-acc em{display:none}
  :root .fin-tr .fin-td-op{order:1}
  :root .fin-tr .fin-td-a{order:2}
  :root .fin-tr.fin-dr{grid-template-columns:minmax(0,1fr) auto}
  :root .fin-tr.fin-dr .fin-paid{order:3;grid-column:1/-1}
  :root .fin-tr.fin-dr .fin-td-next{order:4;grid-column:1/-1}
  :root .fin-tr.fin-dr .fin-td-act{order:5;grid-column:1/-1;justify-content:stretch}
  :root .fin-tr.fin-dr .fin-td-act .btn{width:100%}
  :root .fin-grp{padding:10px 16px}
}
:root .fin-yr h4 small{font-weight:500;color:var(--muted);font-size:12px;margin-left:6px}

:root .fin-seg-t .proj-tab i{margin-left:6px}
@media(max-width:640px){
  :root .fin-pm-c span{font-size:9px;letter-spacing:-.02em}
  :root .fin-page .fin-bal-svg text.v:not(.last){display:none}
  :root .fin-page .fin-bal-svg text.v{font-size:30px}
}

/* ═══ Финансы v3: окно операции, журнал по дням, этапы оплат, удаление с «Вернуть» ═══ */
/* календарь в окнах финансов — как в окнах инвентаря и задач */
:root .fin-tx-md .att-cal,:root .fin-proj-md .att-cal{width:100%}
:root .fin-tx-md .att-cal-trig,:root .fin-proj-md .att-cal-trig{width:100%}
:root .fin-tx-md .att-cal-trig span,:root .fin-proj-md .att-cal-trig span{flex:1}




/* окно операции */
:root .fin-tx-md .modal-body{display:flex;flex-direction:column;gap:16px}
:root .fin-tx-md .kb-f{margin:0}
:root .fin-tx-md .fin-2col{gap:14px;align-items:start}
:root .fin-tx-md .fin-seg{margin:0}
:root .fin-amt-big{display:flex;align-items:center;gap:6px;height:76px;padding:0 20px;border-radius:18px;background:var(--surface-3);box-shadow:inset 0 0 0 1.5px transparent;transition:box-shadow .18s,background .18s}
:root[data-theme="light"] .fin-amt-big{background:var(--surface-2)}
:root .fin-amt-big:focus-within{background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--accent),0 0 0 4px var(--accent-soft)}
:root .fin-amt-big.bad{box-shadow:inset 0 0 0 1.5px var(--crit)}
:root .fin-amt-sign{font-family:var(--font-display);font-size:34px;font-weight:600;color:var(--crit);width:20px}
:root .fin-amt-big.inc .fin-amt-sign{color:var(--ok)}
:root .fin-amt-big input{flex:1;min-width:0;height:100%;border:0;background:none;outline:0;font-family:var(--font-display);font-size:36px;font-weight:600;letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums}
:root .fin-amt-big input::placeholder{color:var(--muted);opacity:.6}
:root .fin-amt-big input:disabled{opacity:.6}
:root .fin-amt-big em{font-style:normal;font-size:15px;font-weight:600;color:var(--muted)}
:root .fin-lbl{display:flex!important;align-items:center;gap:4px;width:100%}
:root .fin-lbl > span{margin-right:auto}
:root .fin-qd{border:0;background:none;font:inherit;font-size:12px;font-weight:600;color:var(--muted);padding:2px 8px;border-radius:99px;cursor:pointer;text-transform:none;letter-spacing:0}
:root .fin-qd:hover{color:var(--text);background:var(--hover-gray)}
:root .fin-qd.on{color:var(--accent);background:var(--accent-soft)}
:root .fin-catpick{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-radius:12px}
:root .fin-catpick.bad{box-shadow:0 0 0 1.5px var(--crit);padding:6px}

:root .fin-catnew{margin-top:10px;height:44px!important;border-radius:12px!important;font-size:13.5px!important}



:root .fin-hint--b{margin:-6px 0 0!important}
:root .fin-hint.warn{color:var(--crit)}
:root .fin-linked{display:flex;gap:10px;align-items:flex-start;margin:0;padding:12px 14px;border-radius:12px;background:var(--surface-2);font-size:12.5px;line-height:1.45;color:var(--text-2)}
:root .fin-linked svg{width:16px;height:16px;flex:none;margin-top:1px;color:var(--warn)}
:root .fin-accr-add{align-self:flex-start;padding:4px 8px;margin:-6px 0 -4px -8px;font-size:12.5px;color:var(--muted)}
:root .fin-accr-add:hover{color:var(--accent)}
:root .fin-tx-md .cf-acts{margin-top:4px}
:root .fin-tx-md .cf-acts .cf-del{margin-right:auto}
/* подтверждение удаления */
:root .fin-del{display:flex;flex-direction:column;gap:14px}
:root .fin-del-op{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:var(--surface-2)}
:root .fin-del-op > div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
:root .fin-del-op > div b{font-size:14px;font-weight:600}
:root .fin-del-op > div span{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .fin-del p{margin:0;font-size:13px;line-height:1.5;color:var(--text-2)}
:root .fin-del + .cf-acts{margin-top:18px}

/* уведомление с кнопкой «Вернуть» */
:root .toast--act{pointer-events:auto}
:root .toast-act{margin-left:auto;flex:none;pointer-events:auto}

:root .toast--act.in .toast-bar{animation-duration:7s}
/* журнал: по дням, действия в строке */
:root .fin-tbl--ops .fin-tr{grid-template-columns:minmax(0,1fr) 200px 170px 68px;padding:11px 20px 11px 20px}
:root .fin-day{display:flex;align-items:baseline;gap:10px;padding:18px 20px 8px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:1}
:root .fin-day b{font-size:14.5px;font-weight:700;color:var(--text)}
:root .fin-day > span{font-size:12.5px;color:var(--muted)}
:root .fin-day em{margin-left:auto;font-style:normal;display:flex;gap:12px;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}
:root .fin-day em i{font-style:normal} :root .fin-day i.inc{color:var(--ok)} :root .fin-day i.exp{color:var(--muted)}
:root .fin-tbl--ops .fin-day:first-child{padding-top:14px}
:root .fin-td-x{display:flex;justify-content:flex-end;gap:2px;opacity:0;transition:opacity .12s}
:root .fin-tr:hover .fin-td-x,:root .fin-tr:focus-within .fin-td-x{opacity:1}
:root .fin-td-x button{width:30px;height:30px;border:0;border-radius:9px;background:none;color:var(--muted);display:grid;place-items:center;cursor:pointer}
:root .fin-td-x button:hover{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border)}
:root .fin-td-x button.del:hover{color:var(--crit);background:var(--crit-soft);box-shadow:none}
:root .fin-td-x svg{width:15px;height:15px}
:root .fin-acc-tag{font-style:normal;font-size:11px;font-weight:600;color:var(--text-2);background:var(--surface-2);padding:1px 7px;border-radius:99px;margin-left:8px;vertical-align:1px}
/* окно «деньги проекта»: 4 плашки в ряд, этапы карточками */
:root .fin-proj-md .pf-plates{grid-template-columns:repeat(4,minmax(0,1fr))!important}
:root .fin-proj-md .pf-plates .v{font-size:17px}
:root .fin-proj-md .fin-st{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}
:root .fin-proj-md .fin-st-row{display:flex!important;flex-direction:column;gap:10px;padding:12px;border-radius:14px;border:1px solid var(--border);background:var(--surface)}
:root .fin-st-l1{display:grid;grid-template-columns:28px minmax(0,1fr) 190px 34px;gap:10px;align-items:center}
:root .fin-st-n{width:28px;height:28px;border-radius:9px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:13px;font-weight:700}
:root .fin-st-l2{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-left:38px}
:root .fin-st-l2 .fin-seg{width:auto;margin:0}
:root .fin-st-l2 .fin-seg button{flex:none;padding:0 14px}
:root .fin-st-l2 .att-cal{width:190px}




@media(max-width:640px){
  :root .fin-amt-big{height:64px;padding:0 16px} :root .fin-amt-big input{font-size:30px}
  :root .fin-tx-md .fin-2col{grid-template-columns:1fr}
  :root .fin-tbl--ops .fin-tr{grid-template-columns:minmax(0,1fr) auto}
  :root .fin-td-x{display:none}
  :root .fin-day{padding:14px 16px 6px}
  :root .fin-proj-md .pf-plates{grid-template-columns:1fr 1fr!important}
  :root .fin-st-l1{grid-template-columns:24px minmax(0,1fr) 34px} :root .fin-st-l1 .pf-amt{grid-column:2/4;grid-row:2}
  :root .fin-st-l2{padding-left:0}
}
:root .fin-tx-md .att-cal-pop,:root .fin-proj-md .att-cal-pop{width:292px}
:root .fin-proj-md .fin-st{display:flex;align-items:stretch;font-size:inherit;color:inherit}
:root .fin-st-l2 .att-cal{width:220px} 
:root .fin-tx-md .fin-del + .cf-acts .cf-del{margin-right:0}
:root .fin-tx-md .att-cal-pop,:root .fin-proj-md .att-cal-pop{min-width:292px}
:root .fin-proj-md .fin-st-row{align-items:stretch!important}
:root .fin-tbl--ops .fin-tr{grid-template-columns:minmax(0,1fr) 200px 68px 170px}
:root .fin-tbl--ops .fin-td-x{order:3} :root .fin-tbl--ops .fin-td-a{order:4}
@media(max-width:640px){ :root .fin-tbl--ops .fin-tr{grid-template-columns:minmax(0,1fr) auto} :root .fin-tbl--ops .fin-td-a{order:2} }

/* ═══ Списки задач: дата слева плиткой; окно для строк без своего окна ═══ */
:root .mt-lead{display:flex;align-items:center;gap:12px;flex:none}
:root .mt-dt{flex:none;width:84px;min-height:40px;padding:5px 4px;border-radius:11px;background:var(--surface-2);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1.2}
:root .mt-dt b{font-size:12.5px;font-weight:700;color:var(--text);white-space:nowrap}
:root .mt-dt i{font-style:normal;font-size:11px;font-weight:500;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
:root .mt-dt.late{background:var(--crit-soft)} :root .mt-dt.late b,:root .mt-dt.late i{color:var(--crit)}
:root .mt-dt.none b{color:var(--muted);font-weight:600}
:root .mt-dt.nil{background:none}
:root .mt-r .mt-d{display:none!important}
:root .mt-r{grid-template-columns:auto minmax(0,1fr) auto!important}
:root .mt-l{grid-template-columns:auto minmax(0,1fr) auto auto}
:root .atn-list .mt-l{grid-template-columns:auto minmax(0,1fr) auto auto}
@media(max-width:640px){
  :root .mt-l,:root .atn-list .mt-l{grid-template-columns:auto minmax(0,1fr) auto}
  :root .mt-dt{width:60px;min-height:36px;border-radius:10px} :root .mt-dt b{font-size:11.5px} :root .mt-dt i{font-size:10px}
  :root .mt-lead{gap:10px}
}
/* окно строки */
:root .mtm{display:flex;flex-direction:column;gap:14px}
:root .mtm-tags{display:flex;gap:6px;flex-wrap:wrap}
:root .mtm-who{display:flex;flex-wrap:wrap;gap:10px}
:root .mtm-who > span{display:flex;align-items:center;gap:10px;padding:8px 12px 8px 8px;border-radius:14px;background:var(--surface-2)}
:root .mtm-who > span > span{display:flex;flex-direction:column;line-height:1.25}
:root .mtm-who b{font-size:13.5px;font-weight:600} :root .mtm-who em{font-style:normal;font-size:12px;color:var(--muted)}
:root .mtm-txt{font-size:14px;line-height:1.55;color:var(--text);white-space:pre-wrap;word-break:break-word}
:root .mtm-when{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}
:root .mtm-when svg{width:15px;height:15px;color:var(--muted)}
:root .mtm-when.late,:root .mtm-when.late svg{color:var(--crit)}
:root .mtm-md .modal-body h3{white-space:normal}
:root .mtm-md .cf-h h3{white-space:normal;line-height:1.3}
:root .mtm-acts{flex-wrap:wrap}
:root .mtm .atn-x-cards{display:flex;flex-direction:column;gap:8px}
/* проекты: подсказки в колонке «Срок» */




/* задача без проекта — привязать */
:root .tk-attach{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:14px;background:var(--warn-soft, var(--surface-2))}
:root .tk-attach > svg{width:18px;height:18px;color:var(--warn);flex:none}
:root .tk-attach > span{flex:1;min-width:180px;display:flex;flex-direction:column;gap:2px}
:root .tk-attach b{font-size:13.5px;font-weight:700} :root .tk-attach em{font-style:normal;font-size:12.5px;color:var(--text-2)}
:root .se-md .modal-body{display:flex;flex-direction:column;gap:16px}

:root .se-step{display:inline-flex;align-items:center;gap:6px;padding:5px;border-radius:14px;background:var(--surface-3);align-self:flex-start}
:root .se-step button{width:40px;height:40px;border:0;border-radius:10px;background:var(--surface);font:inherit;font-size:20px;font-weight:600;color:var(--text);cursor:pointer}
:root .se-step button:hover{color:var(--accent)}
:root .se-step b{min-width:48px;text-align:center;font-size:20px;font-family:var(--font-display)}
:root .db-r[role="button"]{cursor:pointer;border-radius:14px;transition:background .15s} :root .db-r[role="button"]:hover b{color:var(--accent)}

/* ═══ Календарь — отдельная страница ═══ */


:root .cal-card{padding:0;overflow:visible}
:root .cal-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:16px 20px 12px}





:root .cal-dds{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* сетка */



:root .cal-d{min-width:0;border-right:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;flex-direction:column;min-height:150px}



:root .cal-d:nth-child(7n){border-right:0}
:root .cal-d.off{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}
:root .cal-d.other{opacity:.45}
:root .cal-d.today{background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
:root .cal-dh{display:flex;align-items:baseline;gap:6px;padding:8px 10px 6px;border:0;background:none;font:inherit;color:var(--text);cursor:pointer;text-align:left}
:root .cal-dh:hover b{color:var(--accent)}
:root .cal-dh .cal-dw{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);letter-spacing:.04em}

:root .cal-dh b{font-size:15px;font-weight:700}
:root .cal-dh em{font-style:normal;font-size:12px;color:var(--muted)}
:root .cal-d.today .cal-dh b{background:var(--accent);color:#fff;border-radius:99px;min-width:26px;height:26px;display:inline-grid;place-items:center;padding:0 6px;font-size:13.5px}

:root .cal-db{display:flex;flex-direction:column;gap:6px;padding:0 8px 10px;min-width:0}

:root .cal-more{border:0;background:none;font:inherit;font-size:12px;font-weight:700;color:var(--accent);padding:4px;cursor:pointer;text-align:left;border-radius:8px}
:root .cal-more:hover{background:var(--accent-soft)}
/* карточка */



   





 







/* по людям */







 

 







 

/* легенда, пусто */






/* телефон: список по дням */




 

@media(max-width:640px){
  :root .cal-bar{padding:14px 16px 10px} 
   
   
  :root .cal-dds{width:100%;display:grid;grid-template-columns:1fr 1fr}
  :root .cal-dds .dd{width:100%!important;min-width:0!important;max-width:none!important}
:root .cal-dds .dd-trigger{width:100%!important;min-width:0!important;max-width:none!important}
  
  
   
}
/* календарь v2: старые карточки, две недели, день недели рядом с числом, галочка */

:root .cal-page .cal-bar{border-bottom:1px solid var(--border);padding:14px 20px}

:root .cal-page .cal-d{min-height:300px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}
:root .cal-page .cal-d:nth-child(7n){border-right:0}
:root .cal-page .cal-d:nth-last-child(-n+7){border-bottom:0}
:root .cal-page .cal-dh{display:flex;align-items:baseline;gap:6px;padding:12px 12px 8px;cursor:default}
:root .cal-page .cal-dh .cal-dw{display:inline;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
:root .cal-page .cal-dh b{font-size:16px}
:root .cal-page .cal-d.today .cal-dh .cal-dw{color:var(--accent)}
:root .cal-page .cal-db{gap:8px;padding:0 8px 12px}
:root .cal-page .dw-ev{height:auto;min-height:0;padding:10px 11px 11px;border-radius:12px;gap:2px}
:root .cal-page .dw-ev b{font-size:13px}
:root .cal-page .dw-ev > span{font-size:12px}
:root .cal-page .dw-ev .dw-who{padding-top:6px}
:root .cal-page .dw-ev .dw-who .avatar{width:22px;height:22px}
:root .cal-page .dw-ev .dw-mk{position:static;order:5;margin-top:6px;align-self:flex-start;padding:0}
:root .cal-page .dw-ev--tk > b:first-child{padding-right:28px}
:root .cal-page .dw-prio{bottom:auto;top:34px;right:8px}
/* галочка на карточке — как в Trello */






/* телефон */

@media(max-width:640px){ :root .cal-page .cal-bar{padding:12px 16px} }
/* календарь v3: месяцы прокруткой, одинаковые клетки, количество дел, раскрытие дня */
:root .cal-page .cal-card{overflow:visible}
:root .cal-page .cal-bar{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;background:var(--surface);border-radius:22px 22px 0 0;border-bottom:1px solid var(--border);padding:12px 20px}
:root .cal-page .cal-bar > .sw-tgl{justify-self:end}
:root .cal-now{justify-self:start;border:0;background:none;font:inherit;font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:-.01em;color:var(--text);cursor:pointer;padding:4px 6px;border-radius:10px}
:root .cal-now:hover{color:var(--accent)}
:root .cal-m{padding:0 0 6px}
:root .cal-mh{margin:0;padding:22px 20px 10px;font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--text)}
:root .cal-m.cur .cal-mh{color:var(--accent)}
:root .cal-wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;padding:0 14px 6px}
:root .cal-page .cal-d{height:104px;min-height:0;border:0;border-radius:14px;background:var(--surface-2);display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:9px 10px;font:inherit;color:var(--text);text-align:left;cursor:pointer;transition:background .15s,box-shadow .15s,transform .12s;overflow:hidden}
:root .cal-page .cal-d:hover{background:color-mix(in srgb,var(--text) 7%,var(--surface-2))}
:root .cal-page .cal-d.out{background:none;cursor:default}
:root .cal-page .cal-d.off{background:color-mix(in srgb,var(--surface-2) 45%,transparent)}
:root .cal-page .cal-d.past:not(.has){opacity:.55}
:root .cal-page .cal-d.today{box-shadow:inset 0 0 0 2px var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}
:root .cal-page .cal-d.on{background:var(--text);color:var(--bg)}
:root .cal-page .cal-d.on .cal-dw{color:color-mix(in srgb,var(--bg) 70%,transparent)}
:root .cal-page .cal-dh{display:flex;align-items:baseline;gap:6px;padding:0}
:root .cal-page .cal-dh b{font-size:17px;font-weight:700}
:root .cal-page .cal-dh .cal-dw{display:inline;font-size:11.5px;font-weight:600;color:var(--muted);text-transform:lowercase;letter-spacing:0}
:root .cal-page .cal-d.today .cal-dh b{color:var(--accent);background:none;min-width:0;height:auto;padding:0;display:inline}








/* раскрытый день */


 




@media(max-width:640px){
  :root .cal-page .cal-bar{top:calc(58px + var(--tg-safe-top,0px));grid-template-columns:1fr auto;padding:10px 12px;border-radius:18px 18px 0 0}
  
  :root .cal-now{font-size:17px}
  :root .cal-wk{gap:4px;padding:0 8px 4px}
  :root .cal-mh{padding:18px 14px 8px;font-size:16px}
  :root .cal-page .cal-d{height:64px;padding:6px;border-radius:10px;gap:3px}
  :root .cal-page .cal-dh{flex-direction:column;gap:0} :root .cal-page .cal-dh b{font-size:14px}
  :root .cal-page .cal-dh .cal-dw{font-size:10px}
  
   
  
  
  
}
@media(max-width:640px){
  :root .main[data-view="calendar"]{overflow-x:clip;overflow-y:visible}
  /* в узкой клетке — одно число дел (красное, если есть просроченное) вместо значков по видам */
  
  
   
}
/* календарь v4 — как на айфоне: на фоне страницы, дни недели буквами, число и точки, линии между неделями */
:root .cal-page .cal-card{background:none;box-shadow:none;border:0;padding:0;margin-top:4px}
:root .cal-page .cal-bar{position:sticky;top:0;z-index:5;display:flex;flex-direction:column;align-items:stretch;gap:10px;background:var(--bg);border:0;border-radius:0;padding:8px 0 0;border-bottom:1px solid var(--border)}
:root .cal-page .cal-bar > .sw-tgl{align-self:flex-end;margin-right:6px}
:root .cal-wl{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding:0 0 8px}
:root .cal-wl span{text-align:center;font-size:12px;font-weight:600;color:var(--muted)}
:root .cal-wl span.we{color:color-mix(in srgb,var(--muted) 60%,transparent)}
:root .cal-page .cal-m{padding:0}
:root .cal-page .cal-mh{padding:26px 0 10px 4px;font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--text)!important}
:root .cal-page .cal-wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0;padding:0;border-top:1px solid var(--border)}
:root .cal-page .cal-m .cal-wk:last-of-type{border-bottom:1px solid var(--border)}
:root .cal-page .cal-d,:root .cal-page .cal-d.off,:root .cal-page .cal-d.today,:root .cal-page .cal-d.on,:root .cal-page .cal-d:hover{height:72px;background:none!important;box-shadow:none!important;border:0;border-radius:0;padding:8px 0 6px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;color:var(--text);opacity:1}
:root .cal-page .cal-d.out{cursor:default}
:root .cal-num{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:17px;font-weight:500;color:var(--text);transition:background .15s,color .15s}
:root .cal-page .cal-d.off .cal-num{color:var(--muted)}
:root .cal-page .cal-d.past .cal-num{color:color-mix(in srgb,var(--text) 55%,transparent)}
:root .cal-page .cal-d:not(.out):hover .cal-num{background:var(--surface-2)}
:root .cal-page .cal-d.on .cal-num{background:#cfe6f5;color:#0b4a70;font-weight:700}
:root .cal-page .cal-d.today .cal-num{background:var(--accent);color:#fff;font-weight:700}
:root .cal-dots{display:flex;gap:4px;height:6px}
:root .cal-dot{width:6px;height:6px;border-radius:50%;background:#8b949e}
:root .cal-dot--shoot{background:var(--accent)} :root .cal-dot--mont{background:#3b82f6} :root .cal-dot--late{background:var(--crit)} :root .cal-dot--off{background:#a855f7}
/* раскрытый день — тоже без плашки: линия сверху, карточки на фоне страницы */


@media(max-width:640px){
  :root .cal-page .cal-bar{top:calc(58px + var(--tg-safe-top,0px));padding-top:6px}
  :root .cal-page .cal-d,:root .cal-page .cal-d.off,:root .cal-page .cal-d.today,:root .cal-page .cal-d.on,:root .cal-page .cal-d:hover{height:58px;padding:6px 0 4px;gap:4px}
  :root .cal-num{width:30px;height:30px;font-size:16px}
  :root .cal-dot{width:5px;height:5px} :root .cal-dots{gap:3px;height:5px}
  :root .cal-page .cal-mh{font-size:19px;padding:20px 0 8px 4px}
}
:root .cal-page .cal-bar{border-bottom:0;padding-top:0} :root .cal-page .cal-bar > .sw-tgl{margin:6px 6px 0} :root .cal-wl{border-top:1px solid var(--border);padding-top:10px}
/* линии во всю ширину страницы — без отступов по краям */
:root .cal-page .cal-card{margin:4px -24px 0}
:root .cal-page .cal-wl,:root .cal-page .cal-wk{padding-left:24px;padding-right:24px}
:root .cal-page .cal-mh{padding-left:28px}
:root .cal-page .cal-bar{padding-top:0}
:root .cal-page .cal-wl{border-top:0;border-bottom:1px solid var(--border);padding-top:12px}
:root .cal-page .cal-m:first-child .cal-mh{padding-top:18px}
@media(max-width:640px){
  :root .cal-page .cal-card{margin:4px -12px 0}
  :root .cal-page .cal-wl,:root .cal-page .cal-wk{padding-left:12px;padding-right:12px}
  :root .cal-page .cal-mh{padding-left:16px}
}
/* календарь: без оранжевого свечения; месяц на экране — над днями недели */


:root .cal-page .cal-now{display:block;justify-self:auto;align-self:flex-start;padding:14px 28px 2px;font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--text);cursor:default}
:root .cal-page .cal-now:hover{color:var(--text)}
:root .cal-page .cal-wl{padding-top:8px}
@media(max-width:640px){ :root .cal-page .cal-now{padding:10px 16px 0;font-size:19px} }
/* календарь v5: без заголовка страницы — шапка: «‹», месяц, «+»; нажатие — только внутри кружка; выбранный день — его неделя и список */
:root .cal-page .cal-card{margin-top:-6px}
:root .cal-page .cal-bar{top:0}
:root .cal-top{display:flex;align-items:center;gap:10px;padding:14px 24px 4px}
:root .cal-page .cal-top .cal-now{padding:0;font-size:24px;flex:1;min-width:0}






/* нажатие и наведение — только у кружка с числом */
:root .cal-page .cal-d{-webkit-tap-highlight-color:transparent;outline:none}
:root .cal-page .cal-d:focus-visible .cal-num{box-shadow:0 0 0 2px var(--accent)}
:root .cal-page .cal-d:not(.out):hover .cal-num{background:none}
@media(hover:hover){ :root .cal-page .cal-d:not(.out):not(.today):not(.on):hover .cal-num{background:var(--surface-2)} }
:root .cal-num{transition:background .15s,color .15s,transform .14s cubic-bezier(.2,.8,.3,1.2)}
:root .cal-page .cal-d:not(.out):active .cal-num{transform:scale(.84)}
/* выбранный день: его неделя и список дел */
:root .cal-day{padding:18px 24px 30px;animation:dd-in .18s cubic-bezier(.16,1,.3,1)}
:root .cal-day-h{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
:root .cal-day-h b{font-size:17px;font-weight:700} :root .cal-day-h span{font-size:13px;color:var(--muted)}
:root .cal-day-l{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
:root .cal-day-l .dw-ev{height:auto}
:root .cal-day-e{padding:24px 0;color:var(--muted);font-size:14px}

@media(max-width:640px){
  :root .cal-page .cal-bar{top:var(--tbh,58px)}
  :root .cal-top{padding:10px 12px 2px}
  :root .cal-page .cal-top .cal-now{font-size:21px}
  
  :root .cal-day{padding:14px 12px 24px}
  :root .cal-day-l{grid-template-columns:1fr}
}

/* ═══ Календарь v6: шапка не двигается, прокручивается свой блок; сегодня — синий, выбранный — оранжевый;
   лента недель выбранного дня; анимации появления ═══ */
:root .cal-page{padding-bottom:0!important}
:root .cal-page .cal-card{margin-top:-14px}
:root .cal-page .cal-bar,:root .cal-page.cal-page--day .cal-bar{position:relative;top:auto;z-index:2;background:var(--bg);padding:0;border:0}
:root .cal-page .cal-top{display:flex;align-items:center;gap:10px;padding:4px 24px 0}
:root .cal-tl{flex:1;min-width:0;display:flex;align-items:center;gap:4px}
:root .cal-page .cal-top .cal-now{padding:0;font-size:24px;flex:none}
:root .cal-mb{margin-left:-6px}
:root .cal-mb svg{width:22px;flex:none}

 
:root .cal-mb--home{padding:4px}


:root .cal-page .cal-wl{padding:8px 24px 6px;border:0;border-bottom:1px solid var(--border)}
:root .cal-page--day .cal-wl{border-bottom:0;padding-bottom:0}
/* прокручиваемый блок */
:root .cal-scroll{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-bottom:40px;scrollbar-width:thin}
:root .cal-page .cal-m:first-child .cal-wk:first-child{border-top:0}
/* дни: сегодня — синий, выбранный — оранжевый; наведение — мягкий круг, кружок не пропадает */
:root .cal-page .cal-d .cal-num,:root .cal-page .cal-d:not(.out):hover .cal-num{background:transparent}
:root .cal-page .cal-d.today .cal-num,:root .cal-page .cal-d.today:hover .cal-num{background:#2f7cf6;color:#fff;font-weight:700}
:root .cal-page .cal-d.on .cal-num,:root .cal-page .cal-d.on:hover .cal-num{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;font-weight:700}
@media(hover:hover){
  :root .cal-page .cal-d:not(.out):not(.today):not(.on):hover .cal-num{background:var(--surface-2);box-shadow:0 0 0 4px color-mix(in srgb,var(--surface-2) 55%,transparent)}
  :root .cal-page .cal-d.today:hover .cal-num,:root .cal-page .cal-d.on:hover .cal-num{filter:brightness(1.07)}
}
:root .cal-page .cal-num{transition:background .18s,color .18s,box-shadow .2s,transform .14s ease,filter .15s}
:root .cal-page .cal-d:not(.out):active .cal-num{transform:scale(.86)}
:root .cal-page .cal-d.on .cal-num{animation:calPop .34s cubic-bezier(.2,.8,.3,1.3)}
:root .cal-page .cal-d:focus-visible .cal-num{box-shadow:0 0 0 2px var(--accent)}
@keyframes calPop{0%{transform:scale(.82)}60%{transform:scale(1.1)}100%{transform:scale(1)}}
@keyframes calSlide{from{opacity:0;transform:rotate(90deg) translateY(8px)}to{opacity:1;transform:rotate(90deg)}}
@keyframes calIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@keyframes calDrop{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
@keyframes calFade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* лента недель выбранного дня */
:root .cal-wsw{position:relative;border-bottom:1px solid var(--border)}
:root .cal-ws{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
:root .cal-ws::-webkit-scrollbar{display:none}
:root .cal-sw{flex:0 0 100%;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding:0 24px;box-sizing:border-box;scroll-snap-align:start;scroll-snap-stop:always}



 
 

/* дела дня: заголовок по центру, крупно */
:root .cal-page .cal-day{padding:22px 24px 30px;transition:opacity .16s ease,transform .16s ease;animation:none}
:root .cal-day.swap{opacity:0;transform:translateY(8px)}
:root .cal-page .cal-day-h{display:flex;flex-direction:column;align-items:center;gap:8px;margin:0 0 18px;text-align:center}
:root .cal-page .cal-day-h b{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:-.01em}
:root .cal-day-n{display:inline-flex;align-items:center;height:30px;padding:0 14px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font-size:14.5px;font-weight:700}
:root .cal-day-n.nil{background:var(--surface-2);color:var(--muted)}
:root .cal-page .cal-day-l{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;max-width:1100px;margin:0 auto}
:root .cal-li{animation:calIn .36s cubic-bezier(.2,.8,.3,1) both;animation-delay:calc(var(--i,0)*45ms)}
:root .cal-li .dw-ev{height:auto}
:root .cal-page .cal-day-e{text-align:center;padding:30px 0;color:var(--muted);font-size:14.5px}
/* вход в день, выход обратно */
:root .cal-page.entering .cal-wsw{animation:calDrop .3s cubic-bezier(.2,.8,.3,1) both}
:root .cal-page.entering .cal-day-h{animation:calIn .3s cubic-bezier(.2,.8,.3,1) both}
:root .cal-page.leaving .cal-day,:root .cal-page.leaving .cal-wsw{opacity:0;transition:opacity .17s ease,transform .17s ease}
:root .cal-page.leaving .cal-day{transform:translateY(14px)} :root .cal-page.leaving .cal-wsw{transform:translateY(-8px)}
:root .cal-page.backing .cal-months{animation:calFade .32s cubic-bezier(.2,.8,.3,1) both}
@media(max-width:640px){
  :root .cal-page .cal-card{margin-top:-6px}
  :root .cal-page .cal-top{padding:2px 12px 0}
  :root .cal-page .cal-top .cal-now{font-size:20px}
  
  :root .cal-page .cal-wl{padding:6px 12px 4px}
  :root .cal-sw{padding:0 12px}
  :root .cal-scroll{padding-bottom:120px}
  :root .cal-page .cal-day{padding:16px 12px 30px}
  :root .cal-page .cal-day-h b{font-size:19px}
  :root .cal-page .cal-day-l{grid-template-columns:1fr}
}
:root .cal-page .sf-wrap,:root .cal-page .cal-card,:root .cal-page .cal-bar{min-width:0;max-width:100%} :root .cal-page .cal-card{contain:inline-size} :root .cal-wsw{min-width:0;overflow:hidden} :root .cal-ws{width:100%}
:root .cal-page .cal-bar,:root .cal-page.cal-page--day .cal-bar{display:block}
:root .cal-page .cal-card{max-width:none}
/* сегодня — в цвет бренда: оранжевое кольцо и цифра; выбранный — залитый оранжевый */
:root .cal-page .cal-d.today .cal-num,:root .cal-page .cal-d.today:hover .cal-num{background:transparent;color:var(--accent);font-weight:800;box-shadow:inset 0 0 0 2px var(--accent)}
:root .cal-page .cal-d.today.on .cal-num,:root .cal-page .cal-d.on .cal-num{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
@media(hover:hover){ :root .cal-page .cal-d.today:not(.on):hover .cal-num{background:var(--accent-soft);filter:none} }
/* «‹ Ноябрь 2026» — кнопка-плашка */
:root .cal-page .cal-mb:not(.cal-mb--home){margin-left:-4px}

:root .cal-page .cal-mb i{width:32px;flex:none}
 
:root .cal-page .cal-mb i svg{width:18px;margin:0}

@media(max-width:640px){   :root .cal-page .cal-mb i{width:28px} }
/* календарь v7: дела дня листаются вбок по дням; бейдж статуса — справа внизу на уровне имени; без квадратной подсветки при нажатии */
:root .cal-page,:root .cal-page *{-webkit-tap-highlight-color:transparent}
:root .cal-page .cal-d{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
:root .cal-page .cal-d:active,:root .cal-page .cal-d:focus{background:none!important;outline:none}
:root .cal-page.cal-page--day .cal-wl{padding-top:14px}
:root .cal-page--day .cal-top{padding-bottom:2px}
:root .cal-page .cal-day{display:flex;align-items:flex-start;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;padding:0}
:root .cal-page .cal-day::-webkit-scrollbar{display:none}
:root .cal-pg{flex:0 0 100%;box-sizing:border-box;padding:22px 24px 30px;scroll-snap-align:start;scroll-snap-stop:always;min-width:0}
:root .cal-pg:not(.cur) .cal-li{animation:none}
:root .cal-page .dw-ev .dw-mk{position:absolute;right:10px;bottom:10px;margin:0;order:0}
:root .cal-page .dw-ev .dw-who{padding-right:110px}
@media(max-width:640px){ :root .cal-pg{padding:16px 12px 30px} }
:root .cal-page .dw-ev .dw-mk{top:8px;right:8px;bottom:auto} :root .cal-page .dw-ev .dw-who{padding-right:0} :root .cal-page .dw-ev > b:first-child{padding-right:104px}
/* календарь v8: колонки букв и чисел совпадают — без боковых отступов и без полосы прокрутки; без подсветки при наведении;
   «‹ Ноябрь 2026» — обычная серая кнопка, как во всём приложении */
:root .cal-page .cal-wl,:root .cal-page .cal-wk,:root .cal-page .cal-sw{padding-left:0!important;padding-right:0!important}
:root .cal-page .cal-scroll{scrollbar-width:none}
:root .cal-page .cal-scroll::-webkit-scrollbar{display:none}
:root .cal-page .cal-d:not(.out):not(.today):not(.on):hover .cal-num{background:transparent!important;box-shadow:none!important}
:root .cal-page .cal-d.today:not(.on):hover .cal-num{background:transparent!important}
:root .cal-page .cal-d.today:hover .cal-num,:root .cal-page .cal-d.on:hover .cal-num{filter:none!important}
:root .cal-page .cal-m.cur .cal-mh{color:var(--text)}
:root .cal-page .cal-mb.btn{margin-left:0}
:root .cal-page .cal-mb.btn svg{width:18px}


/* лента: тот же день недели в других неделях — уже оранжевый (без «пружинки»), чтобы при листании он стоял на месте */
:root .cal-page .cal-ws .cal-d.pre .cal-num{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff;font-weight:700;animation:none}
/* ПК: в выбранном дне меньше пустого места между буквами, числами и линией */
@media(min-width:641px){
  :root .cal-page.cal-page--day .cal-wl{padding-top:10px}
  :root .cal-page .cal-ws .cal-d,:root .cal-page .cal-ws .cal-d.on,:root .cal-page .cal-ws .cal-d.today,:root .cal-page .cal-ws .cal-d.off{height:52px;padding:4px 0 4px;gap:4px}
  :root .cal-page .cal-ws .cal-num{width:32px;height:32px}
}
/* дела дня: короче анимация; после свайпа — без повторной анимации */
:root .cal-li{animation-duration:.22s;animation-delay:calc(var(--i,0)*25ms)}
:root .cal-day.still .cal-li{animation:none}
:root .cal-page .cal-day{will-change:scroll-position}
/* ПК: карточки дел выше */
@media(min-width:641px){
  :root .cal-page .cal-pg .dw-ev{min-height:128px;padding:14px 16px 14px;gap:4px}
  :root .cal-page .cal-pg .dw-ev b{font-size:14.5px}
  :root .cal-page .cal-pg .dw-ev > span{font-size:13px}
  :root .cal-page .cal-pg .dw-ev .dw-who{margin-top:auto;padding-top:10px}
  :root .cal-page .cal-pg .dw-ev .dw-who .avatar{width:26px;height:26px}
  :root .cal-page .cal-day-l{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
}
/* целые высоты заголовков месяцев — текущая неделя встаёт ровно под буквы, без полоски прошлой недели */
:root .cal-page .cal-mh{line-height:28px;margin:0}
@media(max-width:640px){ :root .cal-page .cal-mh{line-height:24px} }
/* нажатие и наведение v9: наведение — круглая плашка; нажатие — плашка сжимается и разжимается, как капля; без «пружинки» выбора и без свечения */
:root .cal-page .cal-d.on .cal-num,:root .cal-page .cal-d.today.on .cal-num{animation:none!important;box-shadow:none!important}
:root .cal-page .cal-num{transition:background .18s ease,color .18s ease,transform .26s cubic-bezier(.3,1.6,.5,1)!important}
@media(hover:hover){
  :root .cal-page .cal-d:not(.out):not(.today):not(.on):not(.pre):hover .cal-num{background:var(--surface-2)!important}
  :root .cal-page .cal-d.today:not(.on):hover .cal-num{background:var(--accent-soft)!important}
  :root .cal-page .cal-d.on:hover .cal-num,:root .cal-page .cal-d.pre:hover .cal-num{background:linear-gradient(180deg,#ff7a2e,#ff5d00)!important;filter:none!important}
}
:root .cal-page .cal-d:not(.out):active .cal-num{transform:scale(.8)!important;transition:transform .08s ease-out!important}
/* календарь v10 */
/* цифры прошедших дней — обычным цветом, серые только выходные; буквы пн–пт — обычным, сб и вс — как цифры выходных */
:root .cal-page .cal-d,:root .cal-page .cal-d.past{opacity:1!important}
:root .cal-page .cal-d.past .cal-num{color:var(--text)}
:root .cal-page .cal-d.off .cal-num{color:var(--muted)}
:root .cal-page .cal-wl span{color:var(--text)}
:root .cal-page .cal-wl span.we{color:var(--muted)}
/* линии — только над днями месяца: пустые клетки в начале и конце месяца без линий, под последней неделей линии нет */
:root .cal-page .cal-months .cal-wk,:root .cal-page .cal-months .cal-m .cal-wk:last-of-type{border-top:0!important;border-bottom:0!important}
:root .cal-page .cal-months .cal-d:not(.out){border-top:1px solid var(--border)!important}
/* под числом — сколько незакрытых: съёмок и задач */
:root .cal-cnt{display:flex;align-items:center;justify-content:center;gap:6px;height:14px;font-size:11px;font-weight:700;line-height:1}
:root .cal-cnt i{display:inline-flex;align-items:center;gap:2px;font-style:normal}
:root .cal-cnt svg{width:11px;height:11px}
:root .cal-cnt .sh{color:var(--accent)} :root .cal-cnt .tk{color:var(--text-2)}
:root .cal-cnt.late .tk{color:var(--crit)}
:root .cal-page .cal-d.on .cal-cnt .tk{color:var(--text)}
@media(max-width:640px){ :root .cal-cnt{gap:3px;font-size:10px} :root .cal-cnt svg{width:9px;height:9px} :root .cal-cnt i{gap:1px} }
/* бейдж количества дел — насыщенный оранжевый; «Ничего нет» — обычным цветом текста */
:root .cal-page .cal-day-n{background:linear-gradient(180deg,#ff7a2e,#ff5d00);color:#fff}
:root .cal-page .cal-day-n.nil{background:var(--surface-2);color:var(--text)}
/* при нажатии — только «капля» кружка: неделя не выезжает, список дня появляется мягко */
:root .cal-page.entering .cal-wsw{animation:none!important}


/* v11: у клетки дня никакого фона/подсветки ни в каком состоянии — только кружок с числом */
:root .cal-page .cal-d,:root .cal-page .cal-d:hover,:root .cal-page .cal-d:active,:root .cal-page .cal-d:focus,:root .cal-page .cal-d:focus-visible{background:none!important;box-shadow:none!important;outline:none!important;transition:none!important}
/* выбранный выходной — белая цифра на оранжевом */
:root .cal-page .cal-d.off.on .cal-num,:root .cal-page .cal-d.off.pre .cal-num{color:#fff}
/* готовые — зелёная галочка */
:root .cal-cnt .dn{color:var(--ok)}
:root .cal-page .cal-d.on .cal-cnt .dn{color:var(--ok)}
/* вход в день — только мягкое появление, без сдвига (страница не «прыгает») */
:root .cal-page.entering .cal-day-h{animation:calFadeOnly .2s ease both}
:root .cal-li{animation-name:calFadeOnly}
@keyframes calFadeOnly{from{opacity:0}to{opacity:1}}
/* быстрее: месяцы, недели ленты и дни вне экрана браузер не считает, пока до них не долистали */
:root .cal-page .cal-m{content-visibility:auto;contain-intrinsic-size:auto 420px}
:root .cal-page .cal-sw,:root .cal-page .cal-pg:not(.cur){content-visibility:auto;contain-intrinsic-size:auto 60px}
/* v12: лента и список дней — без отложенной отрисовки (иначе свайп лагает) */
:root .cal-page .cal-sw,:root .cal-page .cal-pg:not(.cur){content-visibility:visible;contain-intrinsic-size:none}
/* ПК: кружки в ленте выбранного дня не сжимаются в овал; смена выбранного дня — мгновенно */
:root .cal-page .cal-num{flex:none}
@media(min-width:641px){ :root .cal-page .cal-ws .cal-d,:root .cal-page .cal-ws .cal-d.on,:root .cal-page .cal-ws .cal-d.today,:root .cal-page .cal-ws .cal-d.off{height:60px} }
:root .cal-page .cal-ws .cal-num{transition:transform .26s cubic-bezier(.3,1.6,.5,1)!important}
/* вертикальная прокрутка: месяцы рисуются сразу (без отложенной отрисовки — она даёт рывки при прокрутке),
   но каждый месяц и неделя считаются отдельно от остальной страницы; блок прокрутки — свой слой */
:root .cal-page .cal-m{content-visibility:visible;contain-intrinsic-size:none;contain:layout paint style}
:root .cal-page .cal-wk{contain:layout paint}
:root .cal-page .cal-scroll,:root .cal-page .cal-day,:root .cal-page .cal-ws{transform:translateZ(0)}
/* v13: без огромных слоёв у ленты и списка (из-за них лагала прокрутка на ПК); выбранный день — оранжевый и в тёмной теме;
   список дня — высотой с выбранный день, нижнее меню не перекрывает (отступ внутри дня) */
:root .cal-page .cal-scroll,:root .cal-page .cal-day,:root .cal-page .cal-ws{transform:none}
:root .cal-page .cal-day{will-change:auto;overflow-y:hidden}
:root .cal-page .cal-pg{align-self:flex-start}
:root .cal-page .cal-scroll{padding-bottom:0}
:root .cal-page .cal-months{padding-bottom:40px}
@media(max-width:640px){ :root .cal-page .cal-months{padding-bottom:120px} :root .cal-pg{padding-bottom:110px} }
/* v14 */
/* телефон: страница календаря ровно в экран — нижний отступ под меню уже внутри списка; шапка не прокручивается */
@media(max-width:640px){ :root .main[data-view="calendar"]{padding-bottom:0!important} }
:root .main[data-view="calendar"]{overscroll-behavior:none}
/* день открывается сразу — без проявления заголовка и карточек (никакого «белого» кадра) */
:root .cal-page.entering .cal-day-h,:root .cal-page .cal-li{animation:none!important}
:root .cal-day.swap{opacity:1;transform:none}
/* на сенсорных экранах наведения нет: после касания не остаётся серого кружка */
@media(hover:none),(pointer:coarse){
  :root .cal-page .cal-d:not(.on):not(.pre):not(.today):hover .cal-num{background:transparent!important}
  :root .cal-page .cal-d.today:not(.on):hover .cal-num{background:transparent!important}
}
:root .cal-page .cal-num{transition:transform .26s cubic-bezier(.3,1.6,.5,1)!important}
/* карточки дел в календаре — без анимации наведения */
:root .cal-page .dw-ev,:root .cal-page .dw-ev:hover{transform:none!important;transition:none!important}
:root .cal-page .dw-ev:not(.dw-ev--shoot):not(.dw-ev--off):hover{background:var(--surface-3)}
:root .cal-page .dw-ev--shoot:hover{background:linear-gradient(180deg,#ff7a2e,#ff5d00)}
:root .cal-page .dw-ev--off:hover{background:transparent}
/* v15: в выбранном дне прокручивается сам день (у каждого — своя прокрутка на всю высоту), общий блок — нет */
:root .cal-page--day .cal-scroll{overflow:hidden}
:root .cal-page .cal-pg{height:100%;align-self:stretch;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}
:root .cal-page .cal-pg::-webkit-scrollbar{display:none}
:root .cal-page .cal-day{align-items:stretch}
/* нажатие на день: кружок сразу оранжевый (и на телефоне — держим его, пока открывается день) */
:root .cal-page .cal-d:not(.out):active .cal-num,:root .cal-page .cal-d.tap .cal-num{background:linear-gradient(180deg,#ff7a2e,#ff5d00)!important;color:#fff!important}
:root .cal-page .cal-d.tap .cal-num{animation:calTap .14s ease-out}
@keyframes calTap{0%{transform:scale(.8)}100%{transform:scale(1)}}
/* пятна шапки не поднимаются над хедером */
:root .pjx-hero .db-orb.o2,:root .cl-page .pjx-hero .db-orb.o2{top:10px!important}
:root .pjx-hero .db-orb.o1{bottom:-260px!important}
:root .cl-page .pjx-hero .db-orb.o1{bottom:-280px!important}

/* ===== Профиль (вкладка нижнего меню на телефоне) ===== */
:root .bn-ic .avatar.bn-av{width:24px;height:24px;font-size:9px}
:root .me-page{max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:18px;padding-bottom:24px}

:root .me-av{cursor:pointer;margin-bottom:8px}
:root .me-av .avatar{width:88px;height:88px;font-size:28px}







:root .me-kpi{padding:14px 16px 16px;display:flex;flex-direction:column;gap:12px;cursor:pointer}
:root .me-h{display:flex;align-items:center;justify-content:space-between}
:root .me-h b{font-size:15px;font-weight:700}
:root .me-h span{display:flex;align-items:center;gap:2px;font-size:12.5px;color:var(--muted)}
:root .me-h .ico{width:14px;height:14px}
:root .me-kpi .kp-at span{font-size:12.5px;color:var(--muted)}
:root .me-g{display:flex;flex-direction:column;gap:8px}
:root .me-gt{padding:0 6px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
:root .me-list{padding:4px 0;overflow:hidden}
:root .me-r{display:flex;align-items:center;gap:12px;width:100%;padding:10px 16px;border:0;background:none;font:inherit;color:var(--text);text-decoration:none;text-align:left;cursor:pointer}
:root .me-r + .me-r{border-top:1px solid var(--border)}
:root .me-r b{flex:1;font-size:15px;font-weight:600}
:root .me-ic{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--surface-2);color:var(--text-2);flex:none}
:root .me-ic .ico{width:18px;height:18px}
:root .me-c{font-style:normal;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--accent);color:#fff;font-size:11.5px;font-weight:700;display:grid;place-items:center}
:root .me-ch{color:var(--muted);display:flex} :root .me-ch .ico{width:16px;height:16px}
:root .me-out b{color:var(--crit)} :root .me-out .me-ic{color:var(--crit)}

/* на телефоне «Мои показатели» живут в «Профиле» — на главной и в «Моём дне» не дублируем */
@media (max-width:640px){:root .pmx-b .kp-card{display:none}}
:root .me-ch .ico,:root .me-h .ico{transform:rotate(-90deg)}
/* «Приложение»: без шапки; вводная — без плашки, статус установки бейджем */
:root .pwa .pwa-intro{background:none!important;box-shadow:none!important;border:0!important;padding:4px 2px 2px!important;align-items:flex-start}
:root .pwa .pwa-intro .pwa-icon{width:64px!important;height:64px!important;border-radius:16px;background:#fff;box-shadow:0 1px 2px rgba(1,29,43,.08),0 8px 18px -10px rgba(1,29,43,.35)}
:root .pwa .pwa-intro b{font-size:17px}
:root .pwa-st{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:10px}

/* вводная «Приложения»: компьютер — иконка · заголовок/описание · бейдж справа; телефон — описание под иконкой */
:root .pwa .pwa-intro{display:grid!important;grid-template-columns:64px minmax(0,1fr) auto;grid-template-areas:"ic tt st" "ic ds st";column-gap:16px;row-gap:3px;align-items:center}
:root .pwa .pwa-intro .pwa-icon{grid-area:ic;align-self:center}
:root .pwa .pwa-intro .pwa-tt{grid-area:tt;align-self:end;font-size:17px;font-weight:700;color:var(--text)}
:root .pwa .pwa-intro .pwa-ds{grid-area:ds;align-self:start;font-size:13.5px;color:var(--muted)}
:root .pwa .pwa-intro .pwa-st{grid-area:st;margin:0;justify-content:flex-end}
:root .pwa .pwa-tabs{grid-template-columns:repeat(var(--n,3),1fr)!important}
@media (max-width:640px){
  :root .pwa .pwa-intro{grid-template-columns:56px minmax(0,1fr);grid-template-areas:"ic tt" "ds ds" "st st";row-gap:10px;column-gap:14px}
  :root .pwa .pwa-intro .pwa-icon{width:56px!important;height:56px!important;border-radius:14px}
  :root .pwa .pwa-intro .pwa-tt{align-self:center;font-size:16.5px;line-height:1.25}
  :root .pwa .pwa-intro .pwa-st{justify-content:flex-start}
}
/* «Код для входа» и «Потеряли телефон?» на компьютере: кнопка справа на одном уровне с текстом */
@media (min-width:641px){
  :root .pwa .pwa-code,:root .pwa .pwa-sec{flex-direction:row!important;align-items:center!important;gap:24px}
  :root .pwa .pwa-code > div:first-child,:root .pwa .pwa-sec > div:first-child{flex:1;min-width:0}
  :root .pwa .pwa-code > .pwa-pin,:root .pwa .pwa-code > .pwa-pin-t{flex:none}
:root .pwa .pwa-code > .btn,:root .pwa .pwa-sec > .btn{flex:none}
}
/* переносы описаний — ровные, без висящих коротких слов */
:root .pwa .pwa-ds,:root .pwa .pwa-code span,:root .pwa .pwa-sec span,:root .pwa .pwa-step div{text-wrap:pretty}
:root .pwa .pwa-br{display:none}
@media (max-width:640px){
  :root .pwa .pwa-br{display:inline}
  :root .pwa .pwa-intro .pwa-st{justify-content:center}
}

/* ===== Настройки: без надзаголовка; разделы без белых плашек; ячейки белые; при наведении — только оранжевый карандаш ===== */
:root .main[data-view="settings"] .pg-set{padding-bottom:6px!important;min-height:0!important}
:root .main[data-view="settings"] .sf-card,:root[data-theme] .main[data-view="settings"] .sf-card{background:none!important;box-shadow:none!important;border:0!important;padding:4px 0 8px!important}
:root .main[data-view="settings"] .sf-card .sf-head{padding-left:2px!important;padding-right:2px!important}
:root .main[data-view="settings"] .sf-card .sf-body{padding-left:0!important;padding-right:0!important}
:root .main[data-view="settings"] .sfg-cell,:root[data-theme] .main[data-view="settings"] .sfg-cell,:root .main[data-view="settings"] .sfg-cell:hover,:root[data-theme] .main[data-view="settings"] .sfg-cell:hover{transform:none!important}
:root .main[data-view="settings"] .sfg-cell.editing{box-shadow:inset 0 0 0 1.5px var(--accent),0 0 0 4px var(--accent-soft)!important}
:root .main[data-view="settings"] .sfg-edit,:root .main[data-view="settings"] .sfg-edit:hover{opacity:1!important}

:root .main[data-view="settings"] .sf-geocap{padding-left:2px}


:root .main[data-view="settings"] .sf-card .sf-head{margin:0!important;padding:0 4px!important}
:root .main[data-view="settings"] .sf-card .sfg{padding-left:0!important;padding-right:0!important}
:root .main[data-view="settings"] .sf-geocap{padding-left:4px!important}
@media (max-width:640px){
  :root .main[data-view="settings"] .sf-wrap{padding:0 16px!important}
  :root .main[data-view="settings"] .pg-set{padding-left:0!important;padding-right:0!important}
  
}
/* Настройки: названия ячеек — в одну строку; заголовок геозоны — слева от карты; меньше отступ под заголовком страницы */
:root .main[data-view="settings"] .sfg-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
:root .main[data-view="settings"] .pg-set{margin-bottom:0!important;padding-bottom:0!important}
:root .main[data-view="settings"] .pg-set + .sf-card,:root .main[data-view="settings"] .sf-wrap > .sf-card:first-of-type{margin-top:0!important}
:root .main[data-view="settings"] .sf-geo-side .sf-head{padding:0 4px 12px!important}
:root .main[data-view="settings"] .sf-card--geo .sf-geo{align-items:stretch}
:root .main[data-view="settings"] .sf-geo-side .sf-head{padding:0 4px!important}
:root .main[data-view="settings"] .sf-geo-side .sfg{padding-top:12px!important}
:root .main[data-view="settings"] .sf-card--geo .sf-body{padding-top:0!important}
:root .main[data-view="settings"] .sf-geo-side{justify-content:flex-start!important}
:root .main[data-view="settings"] .sf-geo-side .sf-geocap{margin-top:auto}
:root .main[data-view="settings"] .sf-geo-side .sfg{padding-top:2px!important}
@media (max-width:640px){:root .main[data-view="settings"] .sf-geo-side .sfg{padding-top:0!important;margin-top:-8px}}
/* Правила — тот же экран, что Настройки (data-view="settings"): шапка так же компактна */
:root .pg-rules.pg-hero{padding-bottom:0!important;margin-bottom:0!important;min-height:0!important}
@media (max-width:640px){
  :root .pg-rules.pg-hero{padding-left:4px!important;padding-right:0!important}
  :root .main[data-view="settings"] .pg-set{padding-left:4px!important}
}
@media (max-width:640px){:root .main[data-view="settings"] .pg-hero.pg-rules{padding-left:4px!important;padding-right:0!important}}

/* «Команда сегодня» — колонки по людям, карточки задач как в календаре, листается вбок */
:root .tt-board{display:flex;gap:12px;overflow-x:auto;padding:4px 20px 20px;scroll-snap-type:x mandatory;scroll-padding:0 20px;-webkit-overflow-scrolling:touch;align-items:flex-start}
:root .tt-col{flex:0 0 272px;display:flex;flex-direction:column;gap:8px;scroll-snap-align:start;min-width:0}
:root .tt-h{display:flex;align-items:center;gap:10px;padding:10px 12px;border:0;border-radius:14px;background:var(--surface-2);font:inherit;color:inherit;text-align:left;cursor:pointer;min-width:0}
:root .tt-h .tt-hn{flex:1;display:flex;flex-direction:column;min-width:0}
:root .tt-h b{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .tt-h em{font-style:normal;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .tt-h .tmark{flex:none}
@media (hover:hover){:root .tt-h:hover b{color:var(--accent)}}
:root .tt-empty{display:grid;place-items:center;height:96px;border-radius:13px;box-shadow:inset 0 0 0 1.5px var(--border)}


@media (max-width:640px){
  :root .tt-board{padding:4px 16px 16px;scroll-padding:0 16px}
  :root .tt-col{flex-basis:80%}
}
:root .tt-board{--evh:auto}
:root .tt-board .dw-ev{height:auto!important;min-height:0!important}
/* «Загруженность»: шапка колонки без плашки — аватар над именем, всё по центру */
:root .tt-h{flex-direction:column;align-items:center;text-align:center;gap:6px;padding:6px 8px 4px;background:none!important}
:root .tt-h .avatar{width:44px;height:44px;font-size:14px}
:root .tt-h .tt-hn{align-items:center;flex:none;max-width:100%}
/* «Загруженность»: линия под шапкой, вертикальные разделители между сотрудниками, «Нет задач» без обводки */
:root .tt-card > .dv-head{border-bottom:1px solid var(--border);padding-bottom:16px!important}
:root .tt-board{gap:0!important;padding:16px 8px 20px!important}
:root .tt-col{padding:0 12px;box-sizing:content-box}
:root .tt-col + .tt-col{border-left:1px solid var(--border)}
:root .tt-empty{display:block!important;height:auto!important;box-shadow:none!important;border:0!important;padding:6px 0}
@media (max-width:640px){:root .tt-board{padding:14px 4px 16px!important}:root .tt-col{padding:0 12px}}
:root .tt-board{align-items:stretch!important}
/* разделители — от линии под шапкой до низа блока: отступы внутри колонок, а не у доски */
:root .tt-board{padding:0 8px!important}
:root .tt-col{padding:16px 12px 20px!important}
@media (max-width:640px){:root .tt-board{padding:0 4px!important}:root .tt-col{padding:14px 12px 16px!important}}
:root .tt-card{overflow:hidden}
/* цепочка ролика в окне задачи — дата справа */
:root .tk-chain .mt-dt{display:none!important}
:root .tk-chain .mt-r .mt-d{display:block!important;text-align:right;white-space:nowrap}
:root .tk-chain .mt-r .mt-d i{display:block;font-style:normal;font-weight:500;color:var(--muted);font-size:11.5px}
:root .tk-chain .mt-r .mt-d.late,:root .tk-chain .mt-r .mt-d.late i{color:var(--crit)}
/* Профиль v2: шапка — аватар, имя и должность, XP справа вверху; «Мои задачи» — строкой */
:root .me-head{display:flex;align-items:center;gap:14px;padding:8px 2px 2px}
:root .me-head .me-av{margin:0}
:root .me-head .me-av .avatar{width:64px;height:64px;font-size:22px}
:root .me-hn{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
:root .me-hn h1{margin:0;font:700 22px/1.2 var(--font-display);letter-spacing:-.02em;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .me-hn span{font-size:13.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .me-xp{align-self:flex-start;display:flex;align-items:baseline;gap:4px;padding:8px 12px;border:0;border-radius:12px;background:var(--accent-soft);font:inherit;cursor:pointer;flex:none}
:root .me-xp b{font:800 18px/1 var(--font-display);color:var(--accent)}
:root .me-xp span{font-size:11px;font-weight:700;color:var(--accent)}
:root .me-cnt{min-width:24px}
:root .me-late{font-size:12.5px;font-weight:600;color:var(--crit)}

/* главная: дата в строках — справа и без плашки (плитку слева не показываем) */
:root .main[data-view="dashboard"] .mt-r .mt-dt,:root .main[data-view="myday"] .mt-r .mt-dt{display:none!important}
:root .main[data-view="dashboard"] .mt-r .mt-lead,:root .main[data-view="myday"] .mt-r .mt-lead{gap:0}
:root .main[data-view="dashboard"] .mt-r .mt-d,:root .main[data-view="myday"] .mt-r .mt-d{display:block!important;text-align:right;white-space:nowrap;font-size:12.5px;font-weight:700;min-width:70px}
:root .main[data-view="dashboard"] .mt-r .mt-d i,:root .main[data-view="myday"] .mt-r .mt-d i{display:block;font-style:normal;font-weight:500;font-size:11.5px;color:var(--muted)}
:root .main[data-view="dashboard"] .mt-r .mt-d.late,:root .main[data-view="dashboard"] .mt-r .mt-d.late i,:root .main[data-view="myday"] .mt-r .mt-d.late,:root .main[data-view="myday"] .mt-r .mt-d.late i{color:var(--crit)}
:root .main[data-view="dashboard"] .pmx-b,:root .main[data-view="myday"] .pmx-b{grid-template-columns:1fr!important}

/* ===== Хедер на телефоне: без кнопки бокового меню; поиск — круглая кнопка, раскрывается в поле с клавиатурой ===== */
@media (max-width:640px){
  :root .topbar .topbar-sep{display:none!important}
:root .topbar .menu-toggle{display:none!important}
  :root .topbar .gs{flex:0 0 40px!important;width:auto!important;max-width:none!important;margin-left:auto;transition:flex-basis .25s ease}
  :root .topbar .gs .search{width:40px!important;min-width:0!important}
  :root .topbar .gs .search input{width:0!important;min-width:0!important}
  :root .topbar .gs .search kbd{display:none!important}
  :root .topbar .gs:focus-within{flex:1 1 auto!important}
  :root .topbar .gs:focus-within .search{width:100%!important}
  :root .topbar .gs:focus-within .search input{width:100%!important}
}
@media (max-width:640px){
  :root .topbar{justify-content:flex-end}
  :root .topbar .theme-btn{margin-left:0!important}
  
  :root .topbar .gs .search .ico{width:18px;flex:none}
}
/* свёрнутый поиск на телефоне — один в один как кнопки темы и уведомлений */
@media (max-width:640px){
  :root .topbar .gs:not(:focus-within){flex-basis:36px!important}
  :root .topbar .gs:not(:focus-within) .search{width:36px!important}
  :root .topbar .gs:not(:focus-within) .search .ico{width:17px}
  
  
}

/* телефон: тема — в профиле; поиск и уведомления крупнее; поиск раскрывается плавно */
:root .me-sw{pointer-events:none;height:auto;padding:0}
@media (max-width:640px){
  :root .topbar .theme-btn{display:none!important}
  
  
  :root .topbar .gs,:root .topbar .gs:not(:focus-within){flex:0 0 40px!important;transition:flex-basis .32s cubic-bezier(.32,.72,0,1)!important}
  :root .topbar .gs:focus-within{flex:0 0 calc(100% - 52px)!important}
  :root .topbar .gs .search,:root .topbar .gs:not(:focus-within) .search{width:100%!important}
  
  :root .topbar .gs:not(:focus-within) .search .ico{width:19px!important}
  
  
}

/* «Создать» в шапке — одна на всё приложение */
:root .topbar .hdr-new{flex:none}

@media (max-width:640px){
  
  :root .topbar .hdr-new span{display:none}
  
  :root .topbar .gs:focus-within{flex-basis:calc(100% - 104px)!important}
}
@media (min-width:641px){:root .topbar .hdr-new{margin-left:auto!important}:root .topbar .hdr-new ~ .theme-btn{margin-left:0!important}}
@media (max-width:640px){
  :root .topbar .hdr-new{order:-1;margin-right:auto!important;margin-left:0!important}
  :root .topbar .hdr-new .ico{flex:none}
  :root .topbar .gs{margin-left:0!important}
  :root .topbar .gs:focus-within{flex-basis:calc(100% - 104px)!important}
}
/* телефон: шапка закреплена, без линии; фон плотный сверху и прозрачный к низу — кнопки читаются при прокрутке */
@media (max-width:640px){
  :root .main:not([data-view="calendar"]){overflow-x:clip!important;overflow-y:visible!important}
  :root .main:not([data-view="calendar"]) > .topbar{position:sticky!important;top:0;z-index:30;border-bottom:0!important;box-shadow:none!important;
    background:linear-gradient(to bottom, var(--bg) 0%, color-mix(in srgb,var(--bg) 85%,transparent) 55%, color-mix(in srgb,var(--bg) 0%,transparent) 100%)!important;
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    -webkit-mask-image:linear-gradient(to bottom,#000 60%,transparent);mask-image:linear-gradient(to bottom,#000 60%,transparent)}
}
@media (max-width:640px){
  :root .main:not([data-view="calendar"]) > .topbar{background:none!important;-webkit-backdrop-filter:none;backdrop-filter:none;-webkit-mask-image:none;mask-image:none;isolation:isolate}
  :root .main:not([data-view="calendar"]) > .topbar::before{content:'';position:absolute;inset:0 0 -14px 0;z-index:-1;pointer-events:none;
    background:linear-gradient(to bottom, var(--bg) 0%, color-mix(in srgb,var(--bg) 80%,transparent) 60%, color-mix(in srgb,var(--bg) 0%,transparent) 100%);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    -webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent);mask-image:linear-gradient(to bottom,#000 55%,transparent)}
}
/* «Создать» в шапке на компьютере — тоже круглая «+», размером с соседние кнопки */
@media (min-width:641px){
  
  :root .topbar .hdr-new span{display:none}
  :root .topbar .hdr-new .ico{flex:none}
}
/* календарь: без линии между шапкой и месяцем/днями недели */
:root .main[data-view="calendar"] > .topbar{border-bottom:0!important;box-shadow:none!important}
/* компьютер: шапка закреплена при прокрутке на всех страницах (календарь — со своей шапкой месяца, как был) */
@media (min-width:641px){
  :root .main:not([data-view="calendar"]){overflow-x:clip!important;overflow-y:visible!important}
  :root .main:not([data-view="calendar"]) > .topbar{position:sticky!important;top:0;z-index:30}
}
@media (min-width:641px){
  :root .main:not([data-view="calendar"]) > .topbar{top:8px!important;border-radius:12px 12px 0 0!important;box-shadow:0 -8px 0 0 var(--surface),-12px -8px 0 0 var(--surface),12px -8px 0 0 var(--surface)!important}
}
/* главная: линия под шапкой блоков задач — всегда (и когда пусто), как в «Загруженности» */
:root .main:is([data-view="dashboard"],[data-view="myday"]) .atn:not(.tt-card) > .dv-head{border-bottom:1px solid var(--border);padding-bottom:16px!important}
:root .main:is([data-view="dashboard"],[data-view="myday"]) .atn:not(.tt-card) .mt-l > .mt-r:first-child{border-top:0!important}
/* телефон: цифры шапки главной — в один ряд, мельче */
@media (max-width:640px){
  :root .main:is([data-view="dashboard"],[data-view="myday"]) .db-sumin{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px!important}
  :root .main:is([data-view="dashboard"],[data-view="myday"]) .db-sumin .db-r{min-width:0;padding:0!important}
  :root .main:is([data-view="dashboard"],[data-view="myday"]) .db-sumin .db-r b{font-size:26px!important;line-height:1.05}
  :root .main:is([data-view="dashboard"],[data-view="myday"]) .db-sumin .db-r .l span{font-size:11px!important;line-height:1.2;white-space:normal}
}

/* ===== Страницы (кроме главной) на телефоне: заголовок и кнопка в одну строку, цифры — в один ряд ===== */
:root .cl-add-s{display:none}
@media (max-width:640px){
  :root .cl-add-l{display:none} :root .cl-add-s{display:inline}
  :root .main:not([data-view="dashboard"]):not([data-view="myday"]) .db-heroc .db-mh{flex-direction:row!important;align-items:center!important;justify-content:space-between;gap:12px;width:100%}
  :root .main:not([data-view="dashboard"]):not([data-view="myday"]) .db-heroc .db-mh .db-hero-t{min-width:0}
  :root .main:not([data-view="dashboard"]):not([data-view="myday"]) .db-heroc .db-mh-acts{flex:none;margin:0!important}
  
  :root .main .db-heroc .db-sumin{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px!important;width:100%}
  :root .main .db-heroc .db-sumin .db-r{min-width:0;padding:0!important}
  :root .main .db-heroc .db-sumin .db-r b{font-size:24px!important;line-height:1.05;white-space:nowrap}
  :root .main .db-heroc .db-sumin .db-r .l span{font-size:11px!important;line-height:1.2;white-space:normal}
}
@media (max-width:640px){
  :root .main:not([data-view="dashboard"]):not([data-view="myday"]) .db-heroc .db-hero-t h1{font-size:30px!important;line-height:1.1;white-space:nowrap}
  :root .main:not([data-view="dashboard"]):not([data-view="myday"]) .db-heroc .db-mh-acts{display:flex;gap:8px}
  
}
@media (max-width:640px){
  /* несколько кнопок — отдельной строкой под заголовком, по ширине текста */
  
  :root .main:not([data-view="dashboard"]):not([data-view="myday"]) .db-heroc .db-mh:has(.db-mh-acts .btn + .btn) .db-mh-acts{width:100%}
}
@media (max-width:640px){
  
  :root .main[data-view="team"] .db-heroc .db-mh:has(.db-mh-acts .btn + .btn) .db-mh-acts{width:auto}

}
/* ===== «Сайт» в общем стиле: блоки с заголовком и линией, вкладки-пилюли, заявки строками ===== */
:root .site-page .sf-wrap{gap:16px}
:root .site-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
:root .site-b > .dv-head{border-bottom:1px solid var(--border);padding-bottom:16px!important;display:flex;align-items:center;gap:10px;justify-content:space-between}
:root .site-bb{padding:16px 20px 18px}
:root .site-b .site-bb:has(> .atn-list),:root .site-b .site-bb:has(> .db-ok){padding:0}
:root .site-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
:root .site-grid > .site-b{margin:0}

:root .site-kv{display:flex;justify-content:space-between;gap:12px;padding:9px 0;font-size:14px}
:root .site-kv + .site-kv{border-top:1px solid var(--border)}
:root .site-kv b{font-weight:700}
:root .site-none{font-size:13.5px;color:var(--muted);padding:4px 0}
:root .site-big{display:flex;align-items:baseline;gap:8px;font:800 30px/1 var(--font-display);margin-bottom:8px}
:root .site-big small{font:500 12.5px var(--font-body);color:var(--muted)}
:root .site-note{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;border-radius:16px;background:var(--accent-soft)}
:root .site-note > .ico{width:20px;height:20px;color:var(--accent);flex:none;margin-top:1px}
:root .site-note b{display:block;font-size:14px;font-weight:700;color:var(--text)}
:root .site-note span{display:block;margin-top:3px;font-size:13px;line-height:1.45;color:var(--text-2)}
:root .site-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}


:root .site-qa{display:flex;flex-direction:column;gap:3px;padding:10px 0;border-top:1px solid var(--border)}
:root .site-qa span{font-size:12.5px;color:var(--muted)} :root .site-qa b{font-size:14px}

@media (max-width:760px){
  :root .site-grid,:root .site-fields{grid-template-columns:1fr}
  :root .site-bb{padding:14px 16px 16px}
  :root .site-bar .dv-tabs{max-width:100%;overflow-x:auto}
}
:root .site-kv{border-bottom:0!important}
:root .site-days:empty + *, :root .site-days{min-height:0}
:root .site-ln{display:flex;align-items:center;gap:8px}
:root .site-ln i{flex:none;width:26px;font-style:normal;font-size:11px;font-weight:700;color:var(--muted);text-align:center}
:root .site-ln .in{flex:1;min-width:0}


/* ===== «Сайт» v2 ===== */
/* отступы как на «Проектах» и «Клиентах»: шапка → вкладки → блоки */
:root .site-page .site-list{display:flex;flex-direction:column;gap:16px}
:root .site-page .site-bar{padding:0!important;margin:0}
:root .site-cal{position:relative;margin-left:auto}

:root .site-cal-pop{right:0;left:auto!important;width:300px;z-index:40}
:root .site-cal-pre{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
:root .site-cal-pre .chip{cursor:pointer}
:root .site-cal .att-cal-d.inr{background:var(--accent-soft);color:var(--text);border-radius:8px}
:root .site-cal-hint{margin-top:8px;font-size:12px;color:var(--muted);text-align:center}
/* блоки: строки от края до края, без лишнего отступа снизу */
:root .site-bb.flush{padding:0!important}
:root .site-bb.flush > .site-kv,:root .site-bb.flush .site-tr,:root .site-bb.flush > .site-none,:root .site-bb.flush > .site-big{padding-left:20px;padding-right:20px}
:root .site-bb.flush > .site-none{padding-top:14px;padding-bottom:14px}
:root .site-bb.flush > .site-big{padding-top:16px;padding-bottom:14px;margin:0}
:root .site-bb.flush > .site-kv{border-top:1px solid var(--border)!important;padding-top:11px;padding-bottom:11px}
:root .site-bb.flush > .site-kv:first-child{border-top:0!important}
:root .site-table{display:flex;flex-direction:column}
:root .site-tr{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(4,minmax(0,1fr));gap:8px;padding-top:11px;padding-bottom:11px;font-size:14px;border-top:1px solid var(--border)}
:root .site-table--3 .site-tr{grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr))}
:root .site-table--2 .site-tr{grid-template-columns:minmax(0,1.6fr) repeat(2,minmax(0,1fr))}
:root .site-tr > span:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}
:root .site-tr.site-th{border-top:0;padding-top:10px;padding-bottom:8px;font-size:12px;font-weight:600;color:var(--muted)}
:root .site-b .site-none{border-top:1px solid var(--border)}
:root .site-b .site-bb.flush > .site-none:first-child{border-top:0}
/* воронка: шаг — подпись, число и процент рядом, без полосок */
:root .site-funnel{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
:root .site-step{display:flex;flex-direction:column;gap:6px;min-width:0}
:root .site-step-t{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root .site-step-v{display:flex;align-items:baseline;gap:6px}
:root .site-step-v b{font:800 26px/1 var(--font-display)}
:root .site-step-v em{font-style:normal;font-size:12.5px;font-weight:700;color:var(--accent)}
/* по дням: все дни периода, последний справа, листается вбок */
:root .site-days{display:flex;gap:4px;overflow-x:auto;padding:16px 20px 6px;scroll-snap-type:x proximity}
:root .site-day{flex:0 0 26px;display:flex;flex-direction:column;align-items:center;gap:3px;scroll-snap-align:end}
:root .site-day-n{height:14px;font-size:10.5px;font-weight:600;color:var(--muted)}
:root .site-day-bar{height:110px;width:14px;border-radius:7px;background:var(--surface-2);display:flex;align-items:flex-end;overflow:hidden}
:root .site-day-bar i{display:block;width:100%;border-radius:7px;background:var(--accent)}
:root .site-day-l{height:16px;min-width:16px;border-radius:8px;font-size:10px;line-height:16px;text-align:center;color:#fff;background:var(--ok)}
:root .site-day-l:empty{background:none}
:root .site-day-d{font-size:11.5px;font-weight:600;color:var(--text-2)}
:root .site-day--wk .site-day-d{color:var(--muted)}
:root .site-day-m{height:13px;font-size:10px;color:var(--muted);white-space:nowrap}
:root .site-legend{display:flex;gap:14px;padding:6px 20px 14px;font-size:12px;color:var(--muted)}
:root .site-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:1px}
:root .site-legend i.v{background:var(--accent)} :root .site-legend i.l{background:var(--ok)}
/* заявки — строки как на главной: без значка, дата справа от кнопки, без плашки */
:root .site-lr{grid-template-columns:minmax(0,1fr) auto!important}
:root .site-lr .mt-d{display:block!important;text-align:right;white-space:nowrap;font-size:12.5px;font-weight:700;min-width:64px}
:root .site-lr .mt-d i{display:block;font-style:normal;font-weight:500;font-size:11.5px;color:var(--muted)}
:root .site-lm-md .modal-head h3 .tmark,:root .site-lm-md h3 .tmark{margin-left:8px}
:root .site-lm-meta{font-size:13px;color:var(--muted);padding-bottom:10px}
:root .site-lm .site-qa{margin:0 -24px;padding:12px 24px}
:root .site-lm-foot{display:flex;align-items:center;gap:8px}
:root .site-lm-d{margin-right:auto;font-size:13px;font-weight:600;color:var(--text-2)}

/* контент и вопросы */
:root .site-fmt .site-bb{display:flex;flex-direction:column;gap:18px}
:root .site-sec{display:flex;flex-direction:column;gap:8px}
:root .site-sec-t{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
:root .site-l3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
:root .site-ln{display:flex;align-items:center;gap:0;position:relative}
:root .site-ln i{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:auto;font-style:normal;font-size:10.5px;font-weight:800;color:var(--muted);pointer-events:none}
:root .site-ln .in{width:100%}



:root .site-pv-m{width:180px;height:120px;object-fit:cover;border-radius:12px;background:#000;display:block}



:root .site-work-m{width:96px;height:72px;object-fit:cover;border-radius:10px;background:#000;display:block}
:root .site-work-m.v{width:54px;height:96px;margin:0 auto}


:root .site-work-a{display:flex;gap:6px}







:root .site-svadd{align-self:flex-start}
@media (max-width:760px){
  :root .site-funnel{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:18px}
  :root .site-l3{grid-template-columns:1fr}
  
  :root .site-work-a{grid-column:1/-1;justify-content:flex-end}
  :root .site-work-m{width:72px;height:54px}
  :root .site-cal{margin-left:0}
  :root .site-cal-pop{left:0!important;right:auto}
  :root .site-days{padding:14px 16px 6px} :root .site-legend{padding:6px 16px 12px}
  :root .site-bb.flush > .site-kv,:root .site-bb.flush .site-tr,:root .site-bb.flush > .site-none,:root .site-bb.flush > .site-big{padding-left:16px;padding-right:16px}
}
:root .site-grid{align-items:start}
:root .site-b .dv-head{border-bottom:1px solid var(--border)!important}

:root .site-qa{display:flex;flex-direction:column;gap:3px;font-size:13.5px}
:root .site-qa span{color:var(--muted)}
:root .site-lm .site-qa:first-of-type{border-top:1px solid var(--border)}
:root .site-day-m{overflow:visible;position:relative;width:26px;text-align:center}


:root .site-days{scroll-snap-type:none!important}
:root .site-day{scroll-snap-align:none!important}

/* ===== «Сайт» v3 ===== */
/* аналитика: блоки в ряду одной высоты; строки без линий — только воздух, линия одна — под заголовком блока */
:root .site-grid{align-items:stretch!important}
:root .site-grid > .site-b{display:flex;flex-direction:column}
:root .site-grid > .site-b > .site-bb{flex:1}
:root .site-bb.flush{padding:8px 0 10px!important}
:root .site-bb.flush > .site-kv,:root .site-bb.flush .site-tr{border-top:0!important;padding-top:7px;padding-bottom:7px}
:root .site-tr.site-th{padding-top:6px!important;padding-bottom:4px!important}
:root .site-bb.flush > .site-big{padding-top:8px;padding-bottom:10px}
:root .site-b .site-none{border-top:0!important;padding-top:8px;padding-bottom:8px}
:root .site-kv span,:root .site-tr > span:first-child{color:var(--text-2)}
:root .site-kv b{color:var(--text)}
/* воронка: крупные числа не слипаются — процент уходит под число, если не помещается */
:root .site-funnel{gap:12px 20px}
:root .site-step-v{flex-wrap:wrap;row-gap:2px}
:root .site-step-v b{font-size:clamp(20px,2vw,26px);white-space:nowrap}
:root .site-step + .site-step{border-left:1px solid var(--border);padding-left:20px}
/* контент: плитки по две в ряд — картинка, под ней подписи, под ними кнопки */
:root .site-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
:root .site-tile{display:flex;flex-direction:column;gap:10px;min-width:0;padding:0;background:none!important}
:root .site-tile-m{height:200px;border-radius:14px;background:#0b0b0b;overflow:hidden;display:grid;place-items:center}
:root .site-tile-m > img,:root .site-tile-m > video{width:100%;height:100%;object-fit:cover;border-radius:0;display:block}
:root .site-tile-m > video.v{width:auto;height:100%;aspect-ratio:9/16}
:root .site-tile .site-l3{grid-template-columns:1fr;gap:6px}
:root .site-tile-f{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
:root .site-tile-f .site-up{width:100%}





/* вопросы: форматы списком слева, язык — переключателем, вопросы свёрнуты */

:root .site-sv-dd{display:none}




 









:root .site-q-o{flex:none;font-size:12px;color:var(--muted)}



:root .site-q-b{display:flex;flex-direction:column;gap:12px;padding:0 20px 16px 56px}
:root .site-q-b textarea{resize:vertical}



/* ссылки */
:root .site-link{display:flex;flex-direction:column;gap:16px}
:root .site-link-out{display:flex;align-items:center;gap:10px;padding:12px 12px 12px 16px;border-radius:14px;background:var(--surface-2)}
:root .site-link-out code{flex:1;min-width:0;font:600 13px/1.4 var(--font-mono);color:var(--text);word-break:break-all}
:root .site-link-n{margin:0;font-size:13px;color:var(--muted)}
:root .site-link-n b{color:var(--text)}
@media (max-width:760px){
  :root .site-tiles{grid-template-columns:1fr}
  :root .site-tile-m{height:180px}
  
  
   :root .site-sv-dd{display:block}
  
   :root .site-q-b{padding:0 16px 16px}
  :root .site-step + .site-step{border-left:0;padding-left:0}
  :root .site-link-out{flex-direction:column;align-items:stretch}
}
:root .site-grid > .site-b:last-child:nth-child(odd){grid-column:1/-1}
:root .site-tile-f .site-up{flex:1 1 0;width:auto!important}

/* ===== «Сайт» v4 ===== */
/* контент: ролик и превью — целиком по высоте, по бокам чёрный фон (вертикальные не сжимаются) */
:root .site-tile-m > img,:root .site-tile-m > video,:root .site-tile-m > video.v{width:100%!important;height:100%!important;aspect-ratio:auto!important;object-fit:contain!important;background:#000}
/* заявки: одна линия — под заголовком, без пустого места снизу */
:root .site-b .site-bb:has(> .atn-list){padding:0!important}
:root .site-b .atn-list .mt-l > .mt-r:first-child{border-top:0!important}
:root .site-b .atn-list{padding:0!important;margin:0!important}
/* воронка: разделители на всю высоту блока */
:root .site-fb .site-bb.flush{padding:0!important}
:root .site-fb .site-funnel{gap:0!important}
:root .site-fb .site-step{padding:16px 20px!important}
:root .site-fb .site-step + .site-step{border-left:1px solid var(--border);padding-left:20px!important}
/* таблицы: заголовки колонок ближе к верху, под ними линия */
:root .site-table .site-tr.site-th{padding-top:2px!important;padding-bottom:9px!important;border-bottom:1px solid var(--border)!important;margin-bottom:4px}
:root .site-grid > .site-b > .site-bb.flush:has(> .site-table){padding-top:6px!important}
/* выпадающие списки и календарь — поверх блока, не обрезаются */
:root .site-b,:root .site-b .site-bb{overflow:visible!important}
:root .site-page .wz-sel{width:100%}
/* вопросы — как «База знаний» */
:root .site-svg{margin:0}
:root .site-svc{font-size:12px;font-weight:700;color:var(--muted);background:none!important}

:root .site-sv-dd{display:none}
:root .site-svh{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}
:root .site-svn{display:flex;align-items:center;gap:8px;margin:0}
:root .site-svn-ed{position:static!important;opacity:1!important}
@media (hover:hover){:root .site-svn-ed:hover{background:var(--accent)!important;color:#fff!important}}
:root .site-svn-in{height:38px;max-width:320px;font-size:16px;font-weight:600}
:root .site-svacc .kb-acc-hd .site-q-o{flex:none;font-size:12px;color:var(--muted);margin-right:6px}
:root .site-q-b{display:flex;flex-direction:column;gap:12px}
/* ссылки: несколько карточек */
:root .site-lk .dv-title{flex:1;min-width:0}
:root .site-ln-name{flex:1;min-width:0}

:root .site-fields--4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:760px){
  :root .site-fb .site-step{padding:14px 16px!important}
  :root .site-fb .site-step + .site-step{border-left:0}
  :root .site-fb .site-funnel{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  /* пять шагов: «Зашли на сайт» — на всю ширину, остальные — два ряда по два */
  :root .site-fb .site-step:first-child{grid-column:1 / -1}
  :root .site-fb .site-step:nth-child(odd):not(:first-child){border-left:1px solid var(--border)!important}
  :root .site-fb .site-step:nth-child(n+2){border-top:1px solid var(--border)}
  :root .site-svg .kb-side{display:none}
  :root .site-sv-dd{display:block}
  :root .site-fields--4{grid-template-columns:1fr}
}
/* «Сайт»: выпадающие списки — как поля ввода рядом (та же высота, фон, скругление) */
:root .site-page .wz-sel .dd-trigger{width:100%}



:root .site-page .wz-sel .dd-menu{z-index:60}
:root .site-ln-name{width:100%}
/* загрузка файла: имя, проценты, полоска, «Отменить» */




:root .site-upbar-l{grid-column:1;height:6px;border-radius:99px;background:var(--surface-3);overflow:hidden}
:root .site-upbar-l i{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .2s}

:root .site-askacc{margin-bottom:6px}
:root .site-askacc .site-l3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:760px){:root .site-askacc .site-l3{grid-template-columns:1fr}}
:root .site-upm{display:flex;flex-direction:column;gap:12px;padding:4px 0 6px}
:root .site-upm-f{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;min-width:0}
:root .site-upm-f .ico{width:20px;height:20px;color:var(--accent);flex:none}
:root .site-upm-f span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root .site-upm .site-upbar-l{height:8px}
:root .site-up-p{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}

:root .site-upmd .x-close{display:none!important}
:root .site-upmd .modal-head .iconbtn{display:none!important}
