/* Окна вне «Смены» — «Профиль и вход», «Что нового», «График смены» (гайдлайн §20, приняты 24.09).
   Оболочка и строки — те же, что у окон «Смены» (§13, класс .win в shift.css): стекло, скругление 22,
   круглый крестик, группы строк на матовом, кнопки F2. Здесь — только то, чего у окон «Смены» не было. */

/* лёгкая подложка под окном по центру */
.screen-backdrop{background:color-mix(in srgb,var(--bg) 30%,transparent);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
/* У затемнения с окном внутри размытие — на подложке, не на нём самом: иначе стекло окна
   не размывает страницу и сквозь низ окна читается текст (та же вложенность, что у шапки, §3). */
.modal-overlay{background:color-mix(in srgb,var(--bg) 30%,transparent);backdrop-filter:none;-webkit-backdrop-filter:none}
.modal-overlay::before{content:'';position:absolute;inset:0;z-index:-1;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}

/* Шапка с крестиком неподвижна, прокручивается только тело: под заголовком ничего не проезжает
   (размытие внутри стеклянного окна не работает — полупрозрачная шапка просвечивала строками). */
.win>.modal__head,.screen.as-modal.win>.modal__head{flex:none;position:static;display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 12px;padding:0;border-radius:0;background:none;backdrop-filter:none;-webkit-backdrop-filter:none}
.win>.win-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin:0 -8px -8px;padding:0 8px 8px}
.win-body>*{flex:none}
.win .modal-title{margin:0;font:700 16px/1.3 var(--font);letter-spacing:0}

/* подпись группы — как заголовок группы в окне активности */
.win-cap{display:flex;align-items:center;gap:8px;margin:14px 4px 6px;font:700 11.5px/1.3 var(--font);letter-spacing:.04em;text-transform:uppercase;color:var(--text-tertiary)}
.modal__head+.win-cap{margin-top:0}
.win .win-row--col{flex-direction:column;align-items:flex-start;gap:8px}
.win .win-row--col>span:first-child{color:var(--text-secondary)}
.win .win-row--act{flex-wrap:nowrap}.win .win-row--act>span:first-child{flex:1 1 auto;min-width:0}
.win-btns{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}
.win-btns--fill{display:flex;width:100%}
.win-btns--fill .win-text{max-width:none}
.win-err{margin:6px 4px 0;font:500 12.5px/1.4 var(--font);color:var(--danger-text)}
.win-code{display:block;max-width:100%;padding:6px 10px;border-radius:9px;background:var(--border);font:500 13px var(--font-num);word-break:break-all}
.win-qr{width:160px;height:160px;padding:8px;border-radius:12px;background:#fff}
.win-tag{display:inline-block;padding:0 8px;border-radius:var(--radius-pill);font:700 11px/18px var(--font);letter-spacing:0;text-transform:none;background:var(--border);color:var(--text-primary)}
.win-tag--new{background:color-mix(in srgb,var(--success) 18%,transparent);color:var(--success)}
.win-tag.hidden{display:none}

/* «Профиль и вход» */
#screen-profile .profile-avatar{display:grid;place-items:center;flex:none;width:44px;height:44px;margin:0;border:0;border-radius:50%;
  background:var(--yellow) center/cover no-repeat;color:var(--on-accent);font:700 14px var(--font);box-shadow:none}
#screen-profile .profile-avatar.has-avatar{box-shadow:inset 0 0 0 1px var(--border)}
#screen-profile .pwd-form{max-width:none}
/* §25 п. 10: два столбца; окно 720 px — на FullHD 125 % без прокрутки */
#screen-profile.as-modal.win{width:min(720px,calc(100 * var(--app-vw, 1vw) - 32px))}
#screen-profile .prof-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
/* новый пароль короче 6 — красная обводка вместо подсказки «не короче 6» (владелец 23.09) */
#screen-profile input.win-text.is-short{box-shadow:inset 0 0 0 1.5px var(--danger)}
#screen-profile #debugSection{margin:14px 0 0;padding:12px;border:0;border-radius:14px;background:var(--matte);box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}

/* «Что нового»: версия — матовая группа */
#whatsNewList .wn-entry{margin:0 0 10px;padding:10px 12px;border:0;border-radius:14px;background:var(--matte)}
#whatsNewList .wn-entry:last-child{margin-bottom:0}
#whatsNewList .wn-entry__head{display:flex;align-items:center;gap:8px}
#whatsNewList .wn-entry__title{font:700 14px/1.35 var(--font)}
#whatsNewList .wn-entry__meta{margin:2px 0 6px;font:500 12px var(--font-num);color:var(--text-tertiary)}
#whatsNewList .wn-entry__items{margin:0;padding-left:18px;font-size:13.5px;line-height:1.45;color:var(--text-secondary)}

/* «График смены»: навигация как «‹ день ›», ячейка дня — новый элемент §20 */
.sched-nav{display:flex;align-items:center;gap:8px;margin:0 0 10px}
#schedTemplateBtn{margin-left:auto;white-space:nowrap;padding:0 10px}
.sched-template-pop .menu-it>.ui-icon{margin-left:auto}
.sched-seg{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:var(--radius-pill);background:var(--border)}
.sched-seg__btn{display:grid;place-items:center;width:28px;height:26px;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--text-secondary);cursor:pointer}
.sched-seg__btn:hover:not(:disabled){background:var(--matte);color:var(--text-primary)}
.sched-seg__btn:disabled{opacity:.35;cursor:default}
.sched-seg__btn .ui-icon,.sched-seg__btn svg{width:14px;height:14px}
.sched-seg__label{min-width:128px;padding:4px 12px;border-radius:var(--radius-pill);background:var(--surface);box-shadow:var(--shadow-sm);font:600 12.5px/1.3 var(--font);text-align:center}
#screen-schedule .sched-dow-row{margin:0 0 4px}
#screen-schedule .sched-dow-row>div{padding:2px 0;font:700 11.5px var(--font);color:var(--text-tertiary)}
#screen-schedule .sched-dow--weekend{color:var(--danger-text)!important}
#screen-schedule .sched-grid{gap:4px}
#screen-schedule .sched-cell{min-height:48px;padding:5px 6px;border:0;border-radius:12px;background:var(--matte);box-shadow:inset 0 0 0 1px var(--border);gap:2px;
  transition:box-shadow .16s ease-out,background .16s ease-out}
#screen-schedule .sched-cell:hover{box-shadow:inset 0 0 0 1px var(--border-2)}
#screen-schedule .sched-cell--work{background:color-mix(in srgb,var(--yellow) 18%,var(--matte));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--yellow) 45%,transparent)}
#screen-schedule .sched-cell--off .sched-cell__num{color:var(--text-tertiary)}
#screen-schedule .sched-cell--weekend.sched-cell--off{background:var(--matte)}
#screen-schedule .sched-cell--override{outline:1.5px dashed var(--yellow-hover);outline-offset:-3px}
#screen-schedule .sched-cell--selected,#screen-schedule .sched-cell--selected:hover{outline:0;box-shadow:inset 0 0 0 2px var(--text-primary)}
#screen-schedule .sched-cell:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}
#screen-schedule .sched-cell__num{width:20px;font:700 12.5px/20px var(--font-num);text-align:center}
#screen-schedule .sched-cell--today .sched-cell__num{height:20px;border-radius:50%;background:var(--yellow);color:var(--on-accent)}
#screen-schedule .sched-cell__time{font:500 11.5px/1.25 var(--font-num);color:var(--text-secondary);white-space:normal;overflow:visible}
#screen-schedule .sched-cell__time>span{display:inline-block;white-space:nowrap}
#screen-schedule .win-hint{margin:6px 4px 0}
#screen-schedule .sched-edit-panel{margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none}
#screen-schedule #schedEditTimes{margin:0}
#screen-schedule #schedEditTimes .field__error{padding:0 12px 8px}
#screen-schedule #schedEditResetBtn{margin:8px 0 0}

/* ── Список типов с правкой (режим правки «Рабочей задачи»; вкладка «Категории» убрана 25.09) ── */
.cat-hint{margin:10px 0 0;font-size:12.5px;color:var(--text-secondary)}
.settings-group-header{cursor:pointer}
.settings-group-header .badge{display:inline-block;margin-left:6px;padding:0 8px;border:0;border-radius:var(--radius-pill);
  font:700 11px/18px var(--font);text-transform:none;letter-spacing:0;background:var(--border);color:var(--text-primary)}
.settings-hint{font-size:12.5px;color:var(--text-tertiary)}

/* окна правки: заголовок с точкой группы, выбор группы, цвет, архив */
.win>.modal__head .win-dot{flex:none}
.win>.modal__head .modal-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.win select.win-select{flex:0 1 190px;min-width:0;max-width:190px;height:auto;margin:0;padding:4px 28px 4px 10px;border:0;border-radius:8px;
  background:var(--border) no-repeat right 9px center/12px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A8F98' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  -webkit-appearance:none;appearance:none;color:var(--text-primary);font:500 14px/1.3 var(--font);cursor:pointer}   /* своя тонкая стрелка вместо системной (приёмка 24.09) */
.win select.win-select:has(option[value=""]:checked){color:var(--text-tertiary)}   /* ничего не выбрано — как заглушка поля */
.win select.win-select option{color:var(--text-primary)}
.win select.win-select:focus{outline:0}
.win .win-qty input.win-num{width:72px}
.win .color-presets{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px;width:100%}   /* 10 цветов ровной строкой, без переноса (приёмка 24.09) */
.win .color-presets .color-dot{width:100%;height:auto;aspect-ratio:1;max-width:26px;justify-self:center}
.win .color-dot{width:22px;height:22px;padding:0;border:0;border-radius:50%;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(17,18,20,.08)}
.win .color-dot--selected{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text-primary)}
.win .color-dot:focus-visible{outline:2px solid var(--border-focus);outline-offset:3px}
.win .win-list-grp{padding:0}
.win .win-list-grp .archive-group-head{display:flex;align-items:center;gap:7px;margin:0;padding:8px 12px 4px;font:700 11.5px/1.3 var(--font);
  letter-spacing:.04em;text-transform:uppercase;color:var(--text-tertiary)}
.win .win-list-grp .archive-group-head .dot{width:8px;height:8px;border-radius:50%;background:var(--dot)}
.win .win-list-grp .settings-type-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border)}
.win .win-list-grp .settings-type-row:last-child{border-bottom:0}
.win .win-list-grp .settings-type-row .bar{display:none}
.win .win-list-grp .settings-type-info{flex:1;min-width:0}
.win .win-list-grp .settings-type-name{font:500 14px/1.3 var(--font)}
.win .win-list-grp .settings-type-meta{font:500 12px var(--font-num);color:var(--text-tertiary)}
.win .win-list-grp .btn{height:32px;padding:0 12px;border:0;border-radius:var(--radius-pill);background:var(--border);color:var(--text-primary);font:500 13px var(--font)}
.win .win-list-grp .btn .ui-icon,.win .win-list-grp .btn svg{width:14px;height:14px}
.win .win-list-grp .archive-empty{margin:0;padding:10px 12px;font-size:13px;color:var(--text-tertiary)}

/* П3 (§20): вопрос внутри окна — группа с тонкой красной обводкой и кнопки F2 на месте кнопок окна */
.win-ask{margin:12px 0 0}
.win-ask .win-ask__grp{margin:0;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--danger) 40%,transparent)}
.win-ask .win-row>span{color:var(--text-primary)!important}
.win-ask .win-acts{margin-top:10px}

/* ── Меню аватара М2 (гайдлайн §20, принято 24.09): лист §13 у аватара ── */
#avatarMenu.avatar-sheet{top:46px;right:0;width:360px}   /* 360: «Размер» из трёх кнопок в одну строку с подписью, как «Тема» (24.09) */   /* стекло и оболочка — components.css */
#avatarMenu.avatar-sheet.hidden{display:none}
.avatar-sheet .win-grp{margin:0 0 10px}
.avatar-sheet .win-cap{margin-top:4px}
.win button.win-row{width:100%;margin:0;border-top:0;border-left:0;border-right:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:background .16s ease-out}
.win button.win-row:hover{background:var(--border)}
.win button.win-row:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}
.win .win-row--link{flex-wrap:nowrap;justify-content:flex-start;gap:10px}
.win .win-row--link .row-t{flex:1;min-width:0;color:var(--text-primary)}
.row-ic{display:inline-flex;flex:none;color:var(--text-secondary)}.row-ic svg{width:16px;height:16px}
.row-ch{display:inline-flex;flex:none;margin-left:auto;color:var(--text-tertiary)}.row-ch svg{width:14px;height:14px}
.avatar-sheet .menu-ver{display:none}
.me-row .me-ava{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:50%;background:var(--yellow) center/cover no-repeat;
  color:var(--on-accent);font:700 13px var(--font)}
.me-row .me-txt{display:flex;flex-direction:column;flex:1;min-width:0;color:var(--text-primary)!important}
.me-row .me-txt b{font:700 14px/1.3 var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-row .me-txt small{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bg-mini{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;align-self:stretch}   /* пять палитр в строку, без пустот (п. 20) */
.bg-mini__th{display:block;width:100%;height:40px;padding:0;border:0;border-radius:10px;cursor:pointer;
  background:var(--bg) var(--bg-ribbon) center/cover no-repeat;box-shadow:inset 0 0 0 1px var(--border);transition:box-shadow .16s ease-out}
.bg-mini__th[style]{background-size:cover;background-position:center}
.bg-mini__th.on{box-shadow:inset 0 0 0 2px var(--yellow),0 2px 8px rgba(255,200,0,.25)}
.bg-mini__th:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}
.avatar-sheet .win-acts{margin-top:2px}

/* ── «График» на «Главной» (гайдлайн §24) ── */
.shift-hours .card__head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
/* шапка «Графика»: «‹ месяц ›», «Текущий месяц», справа «Загрузить» и «Календарь» (владелец 25.09) */
.shift-hours .fh-month{min-width:128px;text-align:center}
.shift-hours .fh-now{margin-left:4px}
.shift-hours .fh-head-acts{margin-left:auto;display:inline-flex;gap:6px}
.shift-hours .fh-head-acts .ui-icon,.shift-hours .fh-head-acts svg{width:14px;height:14px}
.shift-hours:not(.is-preview) .fh-prev-only,.shift-hours.is-preview #hoursImportBtn,.shift-hours.is-preview .plan-sched,.shift-hours.is-preview .fh-norm{display:none}
.shift-hours .fh-head-acts{align-items:center}.shift-hours .fh-norm{margin:0 4px 0 0}
/* предпросмотр загрузки: плашка другим тоном (светлее в светлой теме, темнее в тёмной), изменения — жёлтым, было — зачёркнуто */
.shift-hours.is-preview{background:color-mix(in srgb,var(--surface) 72%,transparent);box-shadow:var(--shadow-md),inset 0 0 0 1.5px color-mix(in srgb,var(--yellow) 70%,transparent)}
.shift-hours .fh-table td.fh-cell--chg{background:color-mix(in srgb,var(--yellow) 30%,transparent)}
.shift-hours .fh-was{display:block;font:500 10px/1.2 var(--font-num);color:var(--text-tertiary);text-decoration:line-through}
.shift-hours .fh-new{display:block;font-weight:700}
.shift-hours .fh-imp-bar{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;margin:8px 2px 0;font-size:12.5px;color:var(--text-secondary)}
.shift-hours .fh-imp-bar i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:5px;background:color-mix(in srgb,var(--yellow) 40%,transparent)}
.shift-hours .fh-imp-bar .fh-imp-warn{color:var(--yellow-text);font-weight:600}
/* строки одной высоты, и пустые тоже — высота «Графика» постоянна, остаток отдаётся «Рабочей задаче» (§25 п. 3);
   на низких окнах (FullHD 125 %) строки ниже, чтобы «Главная» помещалась без прокрутки */
.shift-hours .fh-table tbody td{height:40px;padding-top:3px;padding-bottom:3px}
@container app-viewport (max-height:800px){.shift-hours .fh-table tbody td{height:36px}}
/* тонкая черта перед понедельником — граница рабочих недель (вариант А) */
.shift-hours .fh-table .fh-wk{box-shadow:inset 1px 0 0 var(--border-2)}
/* распределение: месяц сеткой тонкими линиями, как таблица трека; сегодня — жёлтая рамка */
.shift-hours .fh-wrap{border:1px solid var(--border);border-radius:12px;background:var(--inner);overflow:hidden}
.shift-hours .fh-table{width:100%;table-layout:fixed;border-collapse:collapse;font:500 12px/1.2 var(--font-num);font-variant-numeric:tabular-nums}
.shift-hours .fh-col-name{width:128px}.shift-hours .fh-col-sum{width:104px}
.shift-hours .fh-table th,.shift-hours .fh-table td{padding:7px 2px;border:0;border-bottom:1px solid var(--border);text-align:center;background:transparent;color:var(--text-secondary)}
.shift-hours .fh-table tr:last-child td{border-bottom:0}
.shift-hours .fh-table thead th{position:static;font:600 11.5px/1.2 var(--font-num);color:var(--text-tertiary);background:transparent;padding:5px 1px}
.shift-hours .fh-th small{display:block;font:500 10px/1.3 var(--font);color:var(--text-tertiary)}
.shift-hours .fh-name-col,.shift-hours .fh-name{position:sticky;left:0;z-index:1;padding-left:10px!important;text-align:left!important;
  font:700 12.5px var(--font)!important;color:var(--text-primary)!important;background:var(--inner)!important;white-space:nowrap}
.shift-hours .fh-name-col{color:var(--text-tertiary)!important;font-size:11.5px!important}
.shift-hours .fh-name .dot{display:inline-block;width:8px;height:8px;margin:0 6px 0 0;border-radius:50%;background:var(--dot);vertical-align:0}
/* сегодня (§24): число в жёлтом круге и лёгкий тон столбца, без рамок */
.shift-hours .fh-table .fh-today{background:color-mix(in srgb,var(--yellow) 12%,transparent)}
.shift-hours .fh-today-num{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 3px;box-sizing:border-box;border-radius:50%;background:var(--yellow);color:var(--on-accent);font-weight:700}
.shift-hours .fh-cell{color:var(--text-primary);cursor:pointer;transition:background .16s ease-out}
.shift-hours .fh-cell:hover{background:var(--matte)}
.shift-hours .fh-cell:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}
.shift-hours .fh-cell--saved{box-shadow:inset 0 0 0 2px var(--success)}
.shift-hours .fh-cell--error{box-shadow:inset 0 0 0 2px var(--danger)}
.shift-hours .fh-sum-th,.shift-hours .fh-sum{border-left:1px solid var(--border)!important;white-space:nowrap}
.shift-hours .fh-sum__val{margin:0 0 4px;font:600 12px var(--font-num);color:var(--text-primary)}
.shift-hours .fh-sum .progress{height:3px;margin:0 8px;border-radius:2px;background:var(--border)}
/* правка в ячейке (§24): тот же шрифт и ширина; белая подложка и жёлтая черта снизу */
.shift-hours .fh-table td.fh-cell--edit{background:var(--surface);box-shadow:inset 0 -2px 0 var(--yellow)}
.shift-hours input.fh-input{display:block;width:100%;height:auto;min-width:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--text-primary);font:inherit;font-weight:600;text-align:center;outline:0}

/* ── Панели на всех экранах — как в «Смене» (§3, §16): поля экрана 12, промежуток 12, скругление 16, отступ 12/16 ── */
.main-content{padding:12px}
.main-content:has(> #screen-review:not(.hidden)){display:flex;flex-direction:column}
#screen-review{flex:1;min-height:520px}
#reviewFrame{display:block;width:100%;flex:1;border:0;border-radius:var(--radius-xl);background:transparent}
.screen{gap:12px}
.card{padding:12px 16px;border-radius:var(--radius-lg)}

/* ── «Аналитика» — гайдлайн §21 ── */
#screen-analytics{max-width:none;margin:0}
.an{display:flex;flex-direction:column;gap:12px}
.an-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.an-kpi{display:flex;flex-direction:column;gap:2px}
.an-kpi small{font:500 12px/1.3 var(--font);color:var(--text-secondary)}
.an-kpi b{font:700 26px/1.2 var(--font-num);font-variant-numeric:tabular-nums;color:var(--text-primary)}
.an-kpi i{font:400 12.5px/1.35 var(--font);font-style:normal;color:var(--text-secondary)}
.an-kpi--acc{box-shadow:var(--shadow-md),inset 0 1px 0 var(--glass-hi),inset 0 0 0 1.5px var(--yellow)}
.an-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,400px);gap:12px;align-items:stretch}
/* §25 п. 15, вариант Б (принято 23.09): экран на всю высоту без прокрутки; столбики тянутся, день справа во всю высоту */
.main-content:has(> #screen-analytics:not(.hidden)){display:flex;flex-direction:column}
#screen-analytics{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
#analyticsContent:not(.hidden){flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:12px}
#analyticsContent .an-grid{flex:1 1 auto;min-height:0}
.an-days{display:flex;flex-direction:column;min-height:0}
.an-days .an-bars{flex:1 1 auto;min-height:150px;display:flex;flex-direction:column}
.an-days .an-bars__plot{flex:1 1 auto;height:auto;min-height:100px}
.an-rows--month{margin-top:12px;flex:none}
.an-dayc{display:flex;flex-direction:column;min-height:0}
.an-dayc .an-day{margin-top:0;flex:none}
.an-dayc .analytics-day-tl:not(.hidden){flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
/* коэффициент дня под датой: расчётный — серый, из отчёта — жирный с жёлтой точкой; правка на месте тем же шрифтом */
.an-bars__x span{display:flex;flex-direction:column;align-items:center;gap:1px}
.an-bars__x span b{font-weight:500}
.an-bars__x span.is-sel b{color:var(--text-primary);font-weight:700}
.an-k{width:100%;min-width:0;height:18px;padding:0;border:0;border-radius:6px;background:none;cursor:pointer;
  font:500 11.5px/18px var(--font-num);font-variant-numeric:tabular-nums;color:var(--text-secondary);text-align:center}
.an-k:hover{background:var(--matte);color:var(--text-primary)}
.an-k:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}
.an-k--real{color:var(--text-primary);font-weight:800}
.an-k--real::after{content:'';display:inline-block;width:4px;height:4px;margin-left:1px;border-radius:50%;background:var(--yellow);vertical-align:5px}
.an-k--none{cursor:default}
.an-k--edit{background:var(--surface);box-shadow:inset 0 -2px 0 var(--yellow)}
input.an-k__in{width:100%;height:100%;margin:0;padding:0;border:0;background:transparent;font:inherit;color:var(--text-primary);text-align:center;outline:0}
input.an-k__in[aria-invalid="true"]{color:var(--danger)}
.an-days{min-width:0}
.an-meta{font:400 12.5px/1.3 var(--font);color:var(--text-secondary)}
.an-days .card__head{display:flex;gap:8px}
.an-month{margin-left:auto}
.an-month__lbl{min-width:118px;text-align:center;font:700 14px/1.3 var(--font);color:var(--text-primary)}
.an-days .day-nav__today{margin-left:0}

/* столбики: матовая подложка таблицы трека, цель — пунктир */
.an-bars{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inner);padding:10px 6px 4px}
.an-bars__plot{position:relative;height:170px;display:flex;align-items:flex-end;gap:5px}
.an-bars__x{display:flex;gap:5px;margin-top:4px}
.an-bars__x span{flex:1;min-width:0;text-align:center;font:500 11.5px/1.4 var(--font-num);font-variant-numeric:tabular-nums;color:var(--text-secondary)}
.an-bar{flex:1;min-width:0;height:100%;display:flex;align-items:flex-end;padding:0;border:0;background:none;cursor:pointer;border-radius:6px}
.an-bar i{display:block;width:100%;height:var(--h);border-radius:6px 6px 2px 2px;background:color-mix(in srgb,var(--text-primary) 16%,transparent);transition:background .16s ease-out}
.an-bar:hover i{background:color-mix(in srgb,var(--text-primary) 26%,transparent)}
.an-bar--ok i{background:color-mix(in srgb,var(--success) 55%,transparent)}
.an-bar--ok:hover i{background:color-mix(in srgb,var(--success) 70%,transparent)}
.an-bar--fut i{background:transparent;box-shadow:inset 0 0 0 1px var(--border-2)}
.an-bar--fut:hover i{background:var(--matte)}
.an-bar--none i{background:var(--border-2)}
.an-bar--sel i,.an-bar--sel:hover i{background:var(--yellow);box-shadow:none}
.an-bar:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}
.an-target{position:absolute;left:0;right:0;border-top:1.5px dashed var(--text-tertiary);pointer-events:none;z-index:1}
.an-target span{position:absolute;right:4px;top:-19px;padding:0 6px;border-radius:var(--radius-pill);background:var(--matte);font:500 11.5px/17px var(--font-num);color:var(--text-secondary)}

/* выбранный день */
.an-day{margin-top:12px}
.an-day__head{display:flex;align-items:center;gap:8px}
.an-day__head b{font:700 14px/1.3 var(--font);color:var(--text-primary)}
.an-day__k{padding:1px 8px;border-radius:var(--radius-pill);background:var(--yellow);color:var(--on-accent);font:700 12.5px/1.5 var(--font-num)}
.an-day__head .an-meta{margin-left:auto}
.an-day__stats{margin:2px 0 8px;font:400 12.5px/1.4 var(--font-num);font-variant-numeric:tabular-nums;color:var(--text-secondary)}
#screen-analytics .analytics-day-tl{margin:0;padding:0;border:0;background:none}

/* «План на остаток» и строки — группа строк §13 */
.an-rows{border-radius:14px;background:var(--matte);overflow:hidden}
.an-rows>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;border-bottom:1px solid var(--border);font:400 14px/1.3 var(--font)}
.an-rows>div:last-child{border-bottom:0}
.an-rows em{font-style:normal;color:var(--text-secondary)}
.an-rows b{font:600 14px var(--font-num);font-variant-numeric:tabular-nums;color:var(--text-primary)}

@container app-viewport (max-width:1100px){.an-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.an-grid{grid-template-columns:minmax(0,1fr)}}

/* ячейка прошедшего дня: план сверху, факт мелко под ним; зелёный — план выполнен (24.09) */
.shift-hours .fh-cell .fh-plan,.shift-hours .fh-cell .fh-fact{display:block;line-height:1.3}
.shift-hours .fh-cell .fh-fact{font:500 10.5px/1.3 var(--font-num);color:var(--text-secondary)}
.shift-hours .fh-cell .fh-fact--ok{color:var(--success-text,var(--success))}
/* пятая плитка «Цель месяца» — кнопка: наведение как у капсул, текст слева */
button.an-kpi--edit{text-align:left;font:inherit;color:inherit;cursor:pointer;transition:background .16s ease-out}
button.an-kpi--edit:hover{background:var(--matte)}
button.an-kpi--edit:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}
/* неверная длительность плана — красная рамка в чипе шапки и в ячейке «Плана» (§15, аудит U02) */
.fc-inp[aria-invalid="true"],.shift-hours .fh-input[aria-invalid="true"]{box-shadow:inset 0 0 0 1.5px var(--danger)}

/* Окно одной активности — с закреплённой кнопки над «Сегодня» (приёмка 24.09, п. 16): без списка */
#addModal.win--one #activityBubbles{display:none}
#addModal .win-head h3 .win-dot{display:inline-block;margin-right:8px;vertical-align:1px}

/* «Строки графика» (приёмка 24.09, п. 14): две колонки, строка — название с точкой группы слева, тумблер справа */
.fhr-win .fhr-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}
.fhr-win .fhr-cols .win-cap{margin-top:0}
.fhr-win .fhr-row .switch{width:100%;flex-direction:row-reverse;justify-content:space-between;margin:0}
.fhr-win .fhr-row .switch>span:last-child{color:var(--text-primary);display:inline-flex;align-items:center;gap:8px;min-width:0}
.shift-hours td.fh-name{cursor:pointer}
.shift-hours td.fh-name:hover{background:var(--matte)}

/* свободный час (владелец 24.09): значок-часы в углу дня календаря смен */
#screen-schedule .sched-cell--free{position:relative}
#screen-schedule .sched-cell--free>.ui-icon{position:absolute;top:5px;right:5px;width:13px;height:13px;color:#00897b}

/* «График»: праздник и отпуск — колонка без плана, значок в шапке (владелец 24.09) */
.shift-hours .fh-table .fh-off{background:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in srgb,var(--text-primary) 5%,transparent) 6px 12px);color:var(--text-tertiary);text-align:center}
.shift-hours .fh-table .fh-off--vacation{background:color-mix(in srgb,#AF78C8 12%,transparent)}
.shift-hours .fh-table th.fh-off small .ui-icon{width:13px;height:13px;display:block;margin:2px auto 0}
.shift-hours .fh-table th.fh-off--holiday small{color:#c0353a}.shift-hours .fh-table th.fh-off--vacation small{color:#8B6BB5}

/* календарь смен: праздник — штриховка и название, отпуск — сплошная полоса от начала до конца (рендер holidays.html v4, 24.09) */
#screen-schedule .sched-cell--holiday{position:relative;background:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in srgb,#e53935 7%,transparent) 6px 12px);box-shadow:inset 0 0 0 1px color-mix(in srgb,#e53935 35%,transparent)}
#screen-schedule .sched-cell--holiday .sched-cell__num{color:#c0353a}
#screen-schedule .sched-cell--holiday>.ui-icon,#screen-schedule .sched-cell--vac>.ui-icon{position:absolute;top:5px;right:5px;width:14px;height:14px;color:#c0353a}
#screen-schedule .sched-cell__title{font:500 10.5px/1.2 var(--font);color:var(--text-secondary);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
#screen-schedule .sched-cell--vac{position:relative;border-radius:0;background:color-mix(in srgb,#AF78C8 16%,var(--matte));box-shadow:none}
#screen-schedule .sched-cell--vac.sched-cell--off .sched-cell__num{color:#6f4f99}
#screen-schedule .sched-cell--vac-s{border-radius:12px 0 0 12px}#screen-schedule .sched-cell--vac-e{border-radius:0 12px 12px 0}
#screen-schedule .sched-cell--vac-s.sched-cell--vac-e{border-radius:12px}
#screen-schedule .sched-cell--vac>.ui-icon{color:#8B6BB5}
#screen-schedule #schedVacBtn .ui-icon{width:16px;height:16px;color:#8B6BB5}
@media (max-width:640px){#screen-schedule .sched-cell__title{display:none}}

/* окно «Отпуска · год» и пикер дат (24.09) */
.vac-list{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.vac-row{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 12px;border-radius:12px;background:var(--matte)}
.vac-ic .ui-icon{width:18px;height:18px;color:#8B6BB5;display:block}
.vac-t{flex:1;min-width:0}.vac-t b{display:block;font:600 14px var(--font);color:var(--text-primary)}.vac-t small{display:block;font:500 12px var(--font);color:var(--text-secondary)}
.vac-ib{width:32px;height:32px;border:0;border-radius:9px;background:transparent;color:var(--text-secondary);display:grid;place-items:center;cursor:pointer;flex:none}
.vac-ib:hover{background:var(--border)}.vac-ib--del{color:var(--danger)}.vac-ib .ui-icon{width:16px;height:16px}
.vac-ib:focus-visible,.vac-d:focus-visible,.vac-nav:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}
.vac-empty{margin:6px 0;font:500 13.5px var(--font);color:var(--text-secondary)}
.vac-foot{display:flex;align-items:center;gap:12px;margin-top:12px}.vac-foot span{margin-left:auto;font:500 12.5px var(--font);color:var(--text-secondary)}
.vac-rng{margin-left:auto;font:600 12.5px var(--font-num);color:#6f4f99;background:color-mix(in srgb,#AF78C8 14%,transparent);padding:4px 10px;border-radius:999px;white-space:nowrap}
.vac-picker .win-head{display:flex;align-items:center;gap:10px}
.vac-pk{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:6px}
.vac-mh{display:grid;grid-template-columns:32px 1fr 32px;align-items:center;text-align:center;margin-bottom:4px}.vac-mh b{font:700 14px var(--font)}
.vac-nav{width:32px;height:32px;border:0;border-radius:9px;background:transparent;color:var(--text-primary);display:grid;place-items:center;cursor:pointer}.vac-nav:hover{background:var(--border)}.vac-nav .ui-icon{width:18px;height:18px}
.vac-dow,.vac-g{display:grid;grid-template-columns:repeat(7,1fr)}.vac-dow span{font:600 11px var(--font);color:var(--text-tertiary);text-align:center;padding:2px 0}
.vac-g{row-gap:2px}
.vac-d{height:32px;border:0;padding:0;background:transparent;font:600 12.5px var(--font-num);color:var(--text-primary);cursor:pointer}
.vac-d:hover{background:var(--border);border-radius:999px}
.vac-d--we{color:var(--text-tertiary)}.vac-d--hol{color:#c0353a}
.vac-d--other{background:repeating-linear-gradient(135deg,transparent 0 4px,color-mix(in srgb,#AF78C8 18%,transparent) 4px 8px)}
.vac-d--in,.vac-d--in:hover{background:color-mix(in srgb,#AF78C8 18%,transparent);border-radius:0}
.vac-d--s,.vac-d--e,.vac-d--s:hover,.vac-d--e:hover{background:#8B6BB5;color:#fff}
.vac-d--s,.vac-d--s:hover{border-radius:999px 0 0 999px}.vac-d--e,.vac-d--e:hover{border-radius:0 999px 999px 0}.vac-d--s.vac-d--e{border-radius:999px}
.vac-picker .win-acts{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
@media (max-width:640px){.vac-pk{grid-template-columns:1fr}.vac-m+.vac-m{display:none}.vac-mh{grid-template-columns:32px 1fr 32px}}
.vac-nav--mob{visibility:hidden}@media (max-width:640px){.vac-nav--mob{visibility:visible}}

/* Повторы в календаре (владелец 25.09): точки будущих повторов в правом нижнем углу дня, список в окне дня */
#screen-schedule .sched-cell__reps{position:absolute;right:6px;bottom:6px;display:flex;gap:3px}
#screen-schedule .sched-cell__reps i{width:6px;height:6px;border-radius:50%;background:var(--c)}
#screen-schedule .sched-cell__reps i.is-off{background:none;box-shadow:inset 0 0 0 1.5px var(--c)}
#screen-schedule .sched-rep{gap:8px}
#screen-schedule .sched-rep__n{display:inline-flex;align-items:center;gap:4px;min-width:0;flex:1}
#screen-schedule .sched-rep__t{font:500 12.5px var(--font-num);color:var(--text-secondary);white-space:nowrap}
#screen-schedule .sched-rep.is-off .sched-rep__n{text-decoration:line-through;color:var(--text-tertiary)}
