:root{
    --white:#fff;
    --black:#151515;
    --gray-1:#fbfbfb;
    --gray-2:#f6f6f6;
    --gray-3:#eeeeee;
    --gray-4:#dedede;
    --gray-5:#9a9a9a;
    --gray-6:#5a5a5a;
    --gray-7:#333333;
    --red-dot:#c95b5b;
    --topbar-height:56px;
    --sidebar-width:172px;
    --sidebar-closed:56px;
    --radius:18px;
    --video-card-shadow:0 0 9px rgba(0,0,0,.055),0 1px 5px rgba(0,0,0,.085);
    --speed:.24s;
}
*{box-sizing:border-box;max-width:100%}
[hidden]{display:none!important}
/* ⚠️⚠️⚠️ ОБЩИЙ ПРЕДОХРАНИТЕЛЬ ВСПЛЫВАЮЩИХ ОКОН (277patch).
   Беда «окно растянуто во весь экран» ловилась уже трижды поодиночке — 208patch
   (список нижнего меню), 214patch (окошко параметра сценария), 277patch (меню «⋮»
   у задачи в календаре) — и владелец справедливо сказал: «я каждый раз нахожу новые
   и новые окна, которые так растягиваются». Поэтому гасим причину ОДИН РАЗ и сразу
   для всех окон сайта, чтобы новое окно рождалось уже здоровым.
   Причина. Каждому элементу с атрибутом popover браузер САМ приписывает
   `inset:0` и `height:fit-content`. Место окну ищет наш js — он пишет в стиль только
   `left` и `top`, а нижний и правый край так и остаются прижатыми к краям экрана.
   Дальше всё держится на одном лишь `fit-content`, а на телефоне владельца он
   считается НЕ по содержимому, а по свободному месту до низа экрана (то же самое
   уже записано в комментарии у .sidebar-section-menu). Итог: окно на два пункта
   растягивается во весь экран, а грид разгоняет свои строки по пустоте.
   Лечение. Гасим оба браузерных умолчания: край — `inset:auto`, высоту — `height:auto`.
   `auto` вместо `fit-content` выбран нарочно: при `bottom:auto` высота коробки
   считается по содержимому обычным правилом коробки, без слова fit-content,
   которое браузеры трактуют вольно.
   ⚠️ Специфичность НУЛЕВАЯ (`:where`) — это тоже нарочно. Своё правило окна
   перебивает предохранитель ВСЕГДА, поэтому он ничего не может сломать; а правила
   БРАУЗЕРА он перебивает при любой специфичности, потому что стили страницы
   старше стилей браузера. Новое окно достаточно просто объявить popover.
   Окна, которым положено быть во весь экран, помечают себя `data-popover-screen`
   (или уже перечислены ниже поимённо) — им предохранитель высоту и края не трогает. */
:where([popover]:popover-open){inset:auto;height:auto}
:where([popover]:popover-open:not([data-popover-screen],.mamix-confirm-layer,.video-idea-gen-layer)){
    max-height:calc(100dvh - 16px);overflow:auto;overscroll-behavior:contain;align-content:start
}
html{width:100%;height:100%;background:var(--white);touch-action:pan-y;overscroll-behavior-x:none;overscroll-behavior-y:none;-webkit-text-size-adjust:100%;scrollbar-gutter:stable}
body{width:100%;margin:0;background:var(--white);color:var(--gray-7);font-family:Inter,Arial,sans-serif;font-size:15px;line-height:1.42;overscroll-behavior-x:none;overscroll-behavior-y:none}
html.ui-restoring *{transition:none}
a{color:inherit;text-decoration:none}
img,video,canvas,svg{display:block;max-width:100%;height:auto}
input,textarea,select,button{font:inherit}
body,button,label,img,.page-shell,.page-card,.videos-page,.videos-page *,.mamix-dropdown,.media-box{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
input,textarea,[contenteditable=true],[data-create-title],[data-title-add],[data-title-edit]{user-select:text;-webkit-user-select:text;-webkit-touch-callout:default}
.media-preview img,.media-choice img{pointer-events:none;-webkit-user-drag:none}
button{border:0;background:var(--gray-2);color:var(--gray-7);cursor:pointer;border-radius:14px;min-height:38px;padding:8px 12px;transition:background var(--speed),color var(--speed),box-shadow var(--speed),width var(--speed),height var(--speed),padding var(--speed),opacity var(--speed),top var(--speed),left var(--speed)}
button:focus,button:focus-visible{outline:0;box-shadow:none}
.mamix-dropdown{display:grid;gap:0;width:100%;min-width:0;max-width:100%;background:var(--white);border:1px solid var(--gray-2);border-top:0;border-radius:0 0 10px 10px;box-shadow:-5px 7px 10px -10px rgba(0,0,0,.08),5px 7px 10px -10px rgba(0,0,0,.08),0 10px 12px -10px rgba(0,0,0,.12);font-size:inherit;line-height:inherit}
.mamix-attached-dropdown{border-top:0;border-radius:0 0 10px 10px;box-shadow:-5px 7px 10px -10px rgba(0,0,0,.08),5px 7px 10px -10px rgba(0,0,0,.08),0 10px 12px -10px rgba(0,0,0,.12)}
.mamix-floating-dropdown{border-top:1px solid var(--gray-2);border-radius:10px;box-shadow:var(--video-card-shadow);font-size:13px;font-weight:600}
.mamix-dropdown-text{box-shadow:-5px 7px 10px -10px rgba(0,0,0,.08),5px 7px 10px -10px rgba(0,0,0,.08),0 10px 12px -10px rgba(0,0,0,.12)}
.mamix-dropdown-option-row{position:relative;display:block;width:100%;min-width:0;max-width:100%;min-height:24px;background:transparent;contain:paint;clip-path:inset(0)}
.mamix-dropdown-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:5px;width:100%;min-width:0;max-width:100%;contain:paint;clip-path:inset(0)}
.mamix-dropdown-option,
.mamix-dropdown-input,
.mamix-dropdown-edit{
    display:block;
    width:100%;
    min-width:0;
    max-width:100%;
    min-height:24px;
    padding:4px 7px;
    border-radius:0;
    background:transparent;
    font-size:inherit;
    line-height:inherit;
    white-space:nowrap;
    contain:paint;
    clip-path:inset(0);
}
.mamix-dropdown-option-row .mamix-dropdown-option{padding-right:24px}
.mamix-dropdown-option{text-align:center}
.mamix-dropdown-input,.mamix-dropdown-edit{text-align:left}
.mamix-dropdown-input,.mamix-dropdown-edit{border:0;outline:0;appearance:none;-webkit-appearance:none;background:var(--white);box-shadow:none}
.mamix-dropdown-input:last-child,.mamix-dropdown-edit:last-child{border-radius:0 0 9px 9px}
.mamix-dropdown-input:focus,.mamix-dropdown-edit:focus{background:var(--white);box-shadow:none}
.mamix-delete-host{position:relative;--mamix-delete-color:#151515}
.mamix-delete-host[data-delete-contrast=dark]{--mamix-delete-color:#fff}
button.mamix-delete-button{
    position:absolute;right:6px;top:50%;display:grid;place-items:center;width:18px;height:18px;
    min-height:18px;margin-top:-9px;padding:0;background:transparent;color:transparent;
    font-size:14px;line-height:14px;border-radius:0;box-shadow:none;opacity:0;pointer-events:none;
    transition:color .16s ease,opacity .16s ease
}
.mamix-delete-host:focus-within > button.mamix-delete-button{
    opacity:1;color:var(--mamix-delete-color);pointer-events:auto
}
.mamix-delete-host:focus-within > button.mamix-delete-button:focus{
    color:#e00000;background:transparent;box-shadow:none
}
/* ⚠️ Этаж обязателен: `position:fixed` БЕЗ z-index рисуется наравне с обычным потоком,
   и любой позиционированный кусок страницы с z-index ≥ 1 ложится ПОВЕРХ окна. До
   12.08.2026 этаж стоял только в телефонном медиазапросе (planning-overlay.css),
   и на широком экране вопрос «удалить?» мог оказаться под содержимым страницы. */
/* ⚠️ 12.08.2026, вечер: было 130. Окно планирования поднялось до 1400 (оно открывается
   поверх любой страницы и её окон — см. разбор яруса в planning-overlay.css), и вопрос
   «удалить?» из него оказался бы ПОД ним. Держим его выше всего, что рисует страница. */
.mamix-confirm-layer{position:fixed;inset:0;z-index:1600;display:grid;place-items:center;background:rgba(255,255,255,.58);padding:20px}
/* ⚠️ 275patch: вопрос «удалить?» — это <dialog>.showModal() (только так его видно
   и нажимается из карточки задачи, см. ui-tools.js). Своя подложка окна нам не
   нужна: экран уже притемняет сам слой, а вторая тень поверх карточки лишняя. */
.mamix-confirm-layer::backdrop{background:transparent}
.mamix-confirm-box{display:grid;gap:14px;min-width:210px;background:var(--white);border-radius:16px;box-shadow:var(--video-card-shadow);padding:18px}
.mamix-confirm-text{font-size:13px;color:var(--gray-7);text-align:center}
.mamix-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
button,.single-line,.dropdown-current,.video-title,.video-status,.video-date,.menu-text,.calendar-title,.media-placeholder,.media-choice{display:block;white-space:nowrap;contain:paint;clip-path:inset(0);min-width:0}
span,a,label,p,h1,h2,h3,h4,li,td,th{max-width:100%;min-width:0;contain:paint;clip-path:inset(0)}
.dropdown-toggle:after,.has-dropdown:after,.account-button:after,[data-dropdown]:after,.video-title-row:after,.video-card button:after{content:none;display:none}.dropdown-arrow,.video-arrow,.caret,.chevron{display:none}select,.dropdown-toggle,.has-dropdown,[data-dropdown]{appearance:none;-webkit-appearance:none;background-image:none}select::-ms-expand{display:none}
.app-shell,.page-shell,.page-card,.sidebar,.topbar,.account-menu{background:var(--white);color:var(--gray-7)}
/* ⚠️ 12.08.2026, вечер: было 120 — вслед за окном планирования (1400), иначе всплывашки,
   которые сайт кладёт сюда (календарик, списки исполнителей, окна генерации), рисовались
   бы за открытым планированием. Разбор яруса — в planning-overlay.css. */
.ui-layer{position:fixed;inset:0;z-index:1500;background:transparent;pointer-events:none}
.ui-layer.is-open{pointer-events:auto}
.video-context-menu{position:absolute;width:max-content;min-width:170px}
.video-context-menu .mamix-dropdown-option{text-align:center}
.video-create-title{border-radius:10px;background:var(--white)}

.mamix-heading,h1,h2,h3,h4{font-weight:700}.mamix-row-info{color:var(--gray-5);font-weight:400}
@media(max-width:760px){
    :root{--topbar-height:54px;--sidebar-width:156px;--sidebar-closed:52px}
    body{font-size:14px}
    button{min-height:36px;padding:7px 10px}
}
.mamix-dropdown,[data-title-open],[data-media-open],[data-media-box],.media-preview,.media-placeholder{touch-action:none;-webkit-tap-highlight-color:transparent}
.mamix-toggle{display:grid;grid-template-columns:max-content 34px;align-items:center;gap:7px;width:max-content;min-height:28px;padding:5px 7px;color:var(--gray-7);font-size:12px;line-height:14px}.mamix-toggle input{display:none}.mamix-toggle-track{display:grid;width:34px;height:18px;padding:2px;border-radius:999px;background:#eef0f2;box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}.mamix-toggle-track span{width:14px;height:14px;border-radius:999px;background:var(--white);box-shadow:0 2px 6px rgba(0,0,0,.14);justify-self:start}.mamix-toggle input:checked+.mamix-toggle-track{background:#56b66b}.mamix-toggle input:checked+.mamix-toggle-track span{justify-self:end}
.mamix-title-holder{
    display:inline-grid;grid-template-columns:max-content max-content;align-items:center;gap:4px;width:max-content
}
.mamix-title-plus{
    display:grid;place-items:center start;width:18px;height:22px;min-height:22px;padding:0;border:0;
    background:transparent;color:var(--gray-6);font-size:20px;line-height:22px;font-weight:500;
    opacity:0;pointer-events:none;box-shadow:none;transition:opacity .14s ease,color .14s ease
}
.mamix-title-holder:focus-within .mamix-title-plus{opacity:1;pointer-events:auto}
.mamix-title-plus:focus-visible{background:transparent;box-shadow:none;color:#4f9f63}
@media(hover:hover) and (pointer:fine){
    button:hover{background:var(--gray-3)}
    .mamix-confirm-yes:hover{color:var(--red-dot)}
    .mamix-delete-host:hover > button.mamix-delete-button{
        opacity:1;color:var(--mamix-delete-color);pointer-events:auto
    }
    .mamix-delete-host:hover > button.mamix-delete-button:hover{
        color:#e00000;background:transparent;box-shadow:none
    }
    .mamix-title-holder:hover .mamix-title-plus{opacity:1;pointer-events:auto}
    .mamix-title-plus:hover{background:transparent;box-shadow:none;color:#4f9f63}
}
@media(max-width:760px){.mamix-title-plus{width:20px;height:22px;min-height:22px;line-height:22px}}
.admin-page{display:grid;gap:16px;width:100%;padding:4px;color:var(--gray-7)}
.admin-title{margin:0;font-size:22px;line-height:28px}
.admin-cleanup{display:grid;gap:14px;width:100%;max-width:980px}
.admin-cleanup-head{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:12px;align-items:start}
.admin-cleanup-head h2{margin:0;font-size:18px;line-height:24px}
.admin-cleanup-head p{margin:4px 0 0;color:var(--gray-5);font-size:13px;line-height:18px}
.admin-cleanup-actions{display:grid;grid-template-columns:max-content max-content;gap:8px}
.admin-cleanup-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.admin-cleanup-stat{display:grid;gap:2px;background:var(--gray-2);border-radius:16px;padding:12px}
.admin-cleanup-stat b{font-size:24px;line-height:28px;color:var(--gray-7)}
.admin-cleanup-stat span{font-size:12px;line-height:16px;color:var(--gray-6)}
.admin-cleanup-stat small{font-size:11px;line-height:14px;color:var(--gray-5)}
.admin-cleanup-note,
.admin-cleanup-warning,
.admin-cleanup-ok,
.admin-cleanup-loading{border-radius:16px;padding:12px;font-size:13px;line-height:18px}
.admin-cleanup-note,.admin-cleanup-loading{background:var(--gray-2);color:var(--gray-6)}
.admin-cleanup-warning{background:#fff3e8;color:#9b4a12}
.admin-cleanup-ok{background:#ecf8ef;color:#276c36}
.admin-cleanup-details{display:grid;gap:8px;background:var(--gray-1);border-radius:16px;padding:12px}
.admin-cleanup-details summary{cursor:pointer;font-weight:700;font-size:13px;line-height:18px}
.admin-cleanup-list{display:grid;gap:2px;margin-top:8px;font-size:12px;line-height:16px;color:var(--gray-6)}
.admin-cleanup-item{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:12px;padding:3px 0}
.admin-cleanup-empty,.admin-cleanup-more{color:var(--gray-5);padding:3px 0}
.admin-cleanup.is-loading{opacity:.55;pointer-events:none}
@media(max-width:760px){
    .admin-cleanup-head,.admin-cleanup-stats,.admin-cleanup-actions{grid-template-columns:1fr}
    .admin-cleanup-item{grid-template-columns:1fr}
}
.auth-page{
    min-height:100vh;
    display:grid;
    place-items:center;
    padding:22px;
    background:var(--gray-1);
}
.auth-card{
    display:grid;
    gap:16px;
    width:min(410px,100%);
    background:var(--white);
    border-radius:22px;
    box-shadow:var(--video-card-shadow);
    padding:24px;
}
.auth-card h1{
    margin:0;
    color:var(--black);
    font-size:24px;
    line-height:30px;
}
.auth-card h2,.cabinet-form h2{
    margin:0;
    color:var(--gray-7);
    font-size:15px;
    line-height:20px;
}
.auth-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px;
}
.auth-form,.cabinet-form{
    display:grid;
    gap:10px;
}
.auth-form label,.cabinet-form label{
    display:grid;
    gap:5px;
    color:var(--gray-6);
    font-size:12px;
    line-height:16px;
}
.auth-form input,.cabinet-form input{
    width:100%;
    min-height:38px;
    border:0;
    border-radius:12px;
    background:var(--gray-2);
    color:var(--gray-7);
    padding:8px 10px;
    outline:0;
}
.auth-form input:focus,.cabinet-form input:focus{
    background:var(--white);
    box-shadow:var(--video-card-shadow);
}
.pass-eye-wrap{position:relative;display:block;width:100%}
.pass-eye-wrap input{padding-right:40px}
button.pass-eye{
    position:absolute;
    top:50%;
    right:5px;
    width:28px;
    height:28px;
    min-height:28px;
    margin-top:-14px;
    display:grid;
    place-items:center;
    padding:0;
    border-radius:50%;
    background:transparent;
    color:var(--gray-5);
}
button.pass-eye:hover,button.pass-eye:focus-visible{background:transparent;color:var(--gray-6)}
button.pass-eye.is-on{color:var(--gray-6)}
button.pass-eye svg{display:block;height:18px}
.auth-message{
    width:100%;
    border-radius:14px;
    padding:10px 12px;
    background:var(--gray-2);
    color:var(--gray-7);
    font-size:13px;
    line-height:18px;
}
.auth-message.is-error{
    color:#a32020;
}
.auth-message.is-ok{
    color:#268044;
}
/* 318patch: живая подсказка о надёжности пароля. Живёт внутри <label> под полем,
   поэтому ширину не задаём — она занимает строку сама. */
.password-hint{
    display:block;
    margin-top:4px;
    font-size:12px;
    line-height:16px;
    color:var(--gray-5);
}
.password-hint.is-weak{color:#a32020}
.password-hint.is-ok{color:#268044}
/* 321patch: просьба заполнить имя и телефон — у аккаунтов, заведённых до того,
   как регистрация стала их спрашивать. Без них аккаунт не связать с человеком. */
.cabinet-profile{display:grid;gap:8px;width:100%}
.cabinet-profile-note{
    border-radius:14px;
    padding:10px 12px;
    background:#fff7e6;
    color:#8a5a00;
    font-size:13px;
    line-height:18px;
}
.cabinet-profile label{display:block}
.cabinet-profile label span{
    display:block;margin-bottom:4px;font-size:12px;line-height:16px;color:var(--gray-6);
}
.cabinet-profile input{
    width:100%;box-sizing:border-box;min-height:34px;padding:0 10px;
    border:1px solid var(--gray-3);border-radius:10px;background:var(--white);
    font:inherit;font-size:13px;
}
.cabinet-profile button{
    justify-self:start;min-height:34px;padding:0 14px;border:0;border-radius:10px;
    background:var(--white);color:var(--gray-7);font-size:13px;line-height:34px;cursor:pointer;
}
.cabinet-profile button:hover{color:var(--black)}
/* Предупреждение в кабинете: пароль уже стоит слабый (метку ставит вход). */
.cabinet-weak-password{
    width:100%;
    border-radius:14px;
    padding:10px 12px;
    background:#fdecec;
    color:#a32020;
    font-size:13px;
    line-height:18px;
}
/* 332patch: кабинет — три колонки, и свои данные переехали к ПРАВОМУ краю.
   Слева задачи, которые висят на человеке; посередине «Последние задачи»
   шириной ровно 500 точек; справа свёрнутая «Ваша информация».
   На узком экране колонки становятся друг под другом, и свёрнутая полоска
   со своими данными встаёт первой — она занимает одну строку. */
.cabinet-page{
    display:grid;
    grid-template-columns:minmax(0,1fr) 500px minmax(0,320px);
    gap:12px;
    align-items:start;
    width:100%;
    padding:4px;
}
@media(max-width:1200px){
    .cabinet-page{grid-template-columns:minmax(0,1fr) minmax(0,500px)}
    .cabinet-page .cabinet-panel{grid-column:1/-1;order:-1}
}
@media(max-width:820px){
    .cabinet-page{grid-template-columns:1fr}
    .cabinet-page .cabinet-panel{grid-column:auto}
}
/* Свои данные: одна строка-кнопка, тело разворачивается по нажатию.
   ⚠️ Свой display пишем ТОЛЬКО открытому телу — иначе он перебьёт `hidden`
   и коробка будет висеть развёрнутой всегда (правило сайта, 146patch). */
.cabinet-panel{gap:0}
.cabinet-panel-head{
    display:flex;gap:8px;align-items:center;justify-content:space-between;
    width:100%;min-height:34px;padding:0;border:0;background:transparent;
    color:var(--black);text-align:left;cursor:pointer;
}
.cabinet-panel-title{font-size:15px;line-height:20px;font-weight:600}
.cabinet-panel-arrow{
    flex:0 0 auto;color:var(--gray-5);font-size:17px;line-height:1;
    transform:rotate(90deg);transition:transform .15s ease;
}
.cabinet-panel-head[aria-expanded="true"] .cabinet-panel-arrow{transform:rotate(-90deg)}
.cabinet-panel-body:not([hidden]){
    display:grid;gap:12px;justify-items:center;padding-top:12px;text-align:center;
}
/* Внутри «Вашей информации» всё стоит по центру и без лишнего воздуха */
.cabinet-panel-body .cabinet-login{justify-items:center;gap:2px}
.cabinet-panel-body .cabinet-login b{font-size:15px;line-height:20px}
.cabinet-panel-body .cabinet-password-open{justify-self:center}
.cabinet-panel-body .cabinet-profile{justify-items:center;text-align:center}
.cabinet-panel-body .cabinet-profile button{justify-self:center}
/* 305patch: карточка человека в кабинете — аватарка, имя, телефон */
.cabinet-person{display:grid;gap:10px;justify-items:center}
.cabinet-person-empty{
    color:var(--gray-5);font-size:12px;line-height:16px;text-align:center;
}
.cabinet-avatar{
    display:grid;place-items:center;width:96px;height:96px;padding:0;border:0;
    border-radius:50%;background:var(--white);overflow:hidden;cursor:pointer;
}
.cabinet-avatar img{width:100%;height:100%;object-fit:cover}
.cabinet-avatar-empty{color:var(--gray-4);font-size:30px;line-height:1}
.cabinet-field{display:grid;gap:3px;width:100%}
.cabinet-field span{color:var(--gray-5);font-size:11px;line-height:14px;text-align:center}
/* 332patch: поля стали ниже и уже — раньше в них было слишком много воздуха */
.cabinet-field input{
    width:100%;min-height:30px;padding:0 10px;border:0;border-radius:10px;
    background:var(--white);color:var(--black);font-size:13px;text-align:center;
}
/* Телефон стоит сверху, справа от него — телеграм (332patch) */
.cabinet-contacts{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
.cabinet-person-role{
    color:var(--gray-5);font-size:12px;line-height:16px;
}
/* «Последние задачи» — средняя колонка кабинета, ровно 500 точек (332patch) */
.cabinet-work{gap:10px}
/* 324patch: рядом с заголовком — «Добавить запись». Заголовок тянется, кнопка
   стоит по правому краю и по высоте держится за строку заголовка. */
.cabinet-work-head{display:flex;gap:8px;align-items:center;justify-content:space-between}
.cabinet-work-title{margin:0;color:var(--black);font-size:15px;line-height:20px;font-weight:600}
.cabinet-work-add{
    flex:0 0 auto;width:26px;min-height:26px;padding:0;border:0;border-radius:50%;
    background:var(--white);box-shadow:none;color:var(--gray-6);font-size:17px;
    line-height:26px;text-align:center;cursor:pointer;
}
.cabinet-work-add:hover{color:var(--black)}
/* «+» выходит по наведению на строку оглавления — правило списков сайта.
   ⚠️ Прятать можно ТОЛЬКО у мыши: на сенсоре наведения нет вовсе (288patch). */
@media(hover:hover) and (pointer:fine){
    .cabinet-work-head .cabinet-work-add{opacity:0;pointer-events:none;transition:opacity .12s ease}
    .cabinet-work-head:hover .cabinet-work-add,
    .cabinet-work-head .cabinet-work-add:focus-visible{opacity:1;pointer-events:auto}
}
@media(hover:none){
    .cabinet-work-head .cabinet-work-add{opacity:1;pointer-events:auto}
}
/* 332patch: «Мои задачи» — двумя столбиками «Новые» и «В работе».
   Только показываем: правят задачи в своём разделе. */
.cabinet-mine{gap:10px}
.cabinet-mine-head{display:flex;gap:8px;align-items:center;justify-content:space-between}
.cabinet-mine-title{margin:0;color:var(--black);font-size:15px;line-height:20px;font-weight:600}
.cabinet-mine-board{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}
@media(max-width:560px){.cabinet-mine-board{grid-template-columns:1fr}}
.cabinet-mine-column{display:grid;gap:6px;align-content:start;min-width:0}
.cabinet-mine-column-title{
    display:flex;gap:6px;align-items:baseline;
    color:var(--gray-5);font-size:9.5px;line-height:12px;font-weight:600;
    letter-spacing:.05em;text-transform:uppercase;
}
.cabinet-mine-count{color:var(--gray-4);font-weight:500;letter-spacing:0}
.cabinet-mine-row{
    display:grid;gap:2px;padding:8px 10px;border-radius:12px;background:var(--white);
}
.cabinet-mine-text{color:var(--black);font-size:12.5px;line-height:17px}
.cabinet-mine-note{color:var(--gray-5);font-size:11px;line-height:15px}
.cabinet-mine-empty{color:var(--gray-5);font-size:12px;line-height:16px}
.cabinet-work-list{display:grid;gap:6px}
.cabinet-work-empty{color:var(--gray-5);font-size:12px;line-height:16px}
/* 311patch: строка стала кнопкой — по ней открывается рабочее окно работы */
.cabinet-work-row{
    display:grid;gap:2px;padding:8px 10px;border:0;border-radius:12px;background:var(--white);
    box-shadow:none;text-align:left;width:100%;
}
.cabinet-work-date{
    display:flex;gap:8px;align-items:baseline;justify-content:space-between;
    color:var(--gray-5);font-size:9.5px;line-height:12px;font-weight:600;
    letter-spacing:.05em;text-transform:uppercase;
}
.cabinet-work-date span{color:var(--gray-4);font-weight:500;letter-spacing:0;text-transform:none}
.cabinet-work-text{color:var(--black);font-size:12.5px;line-height:17px}
.cabinet-work-note{color:var(--gray-5);font-size:11px;line-height:15px}
.cabinet-password-open{
    justify-self:start;
    min-height:34px;
    padding:0 14px;
    border:0;
    border-radius:10px;
    background:var(--white);
    color:var(--gray-7);
    font-size:13px;
    line-height:34px;
    cursor:pointer;
}
.cabinet-password-open:hover{color:var(--black)}
/* ⚠️ Окно поверх страницы: свой <dialog>, свои поля — без него форма лежала
   бы прямо в кабинете, как раньше. Свой display пишем ТОЛЬКО открытому окну,
   иначе пустая коробка висит на странице (правило сайта, 146patch). */
.cabinet-password-dialog{
    width:min(320px,92vw);
    padding:18px;
    border:0;
    border-radius:18px;
    background:var(--gray-2);
    box-shadow:0 18px 48px rgba(16,24,40,.22);
}
.cabinet-password-dialog::backdrop{background:rgba(20,24,30,.28)}
.cabinet-password-top{
    display:flex;
    gap:8px;
    align-items:center;
    justify-content:space-between;
}
.cabinet-password-close{
    width:26px;
    min-height:26px;
    padding:0;
    border:0;
    border-radius:50%;
    background:transparent;
    color:var(--gray-5);
    font-size:19px;
    line-height:26px;
    cursor:pointer;
}
.cabinet-password-close:hover{color:var(--black)}
.cabinet-box{
    display:grid;
    gap:14px;
    align-content:start;
    background:var(--gray-2);
    border-radius:18px;
    padding:16px;
}
.cabinet-login{
    display:grid;
    gap:4px;
}
.cabinet-login span{
    color:var(--gray-5);
    font-size:12px;
    line-height:16px;
}
.cabinet-login b{
    color:var(--black);
    font-size:17px;
    line-height:22px;
}
@media(max-width:760px){
    .auth-card{padding:18px;border-radius:18px}
    .auth-grid{grid-template-columns:1fr}
    .auth-card h1{font-size:22px;line-height:28px}
}
