.schedule-page{min-width:0}
.schedule-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-6);margin-bottom:var(--space-5)}
.schedule-head h1{margin:0;text-transform:uppercase;font-size:var(--text-lg);letter-spacing:.02em}
.schedule-head p{margin:var(--space-1) 0 0;color:var(--ink-3)}
.schedule-ok{margin:var(--space-3) 0;color:var(--ink-3)}
.schedule-scroll{width:100%;max-width:100%;overflow:auto;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface)}
.schedule-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}
.schedule-table th,.schedule-table td{height:43px;padding:var(--space-3);border-top:1px solid var(--line);text-align:center;white-space:nowrap}
.schedule-table thead th{height:44px;border-top:0;background:var(--surface-2);color:var(--ink-3);font:600 var(--text-xs) var(--font-mono);letter-spacing:.07em;text-transform:uppercase}
.schedule-table .manager{position:sticky;left:0;z-index:var(--z-sticky-cell);width:230px;min-width:230px;text-align:left;background:var(--surface)}
.schedule-table thead .manager{z-index:var(--z-sticky-head);background:var(--surface-2)}
.schedule-table .day{min-width:96px}
/* Пол ширины недели — см. plan.css: 230 менеджер + 7 дней по 96 + 120 сводка (#195). */
.schedule-table.week{min-width:1022px}
.schedule-table.month .day,.schedule-table.month td:not(.manager):not(.total-days):not(.total-hours){min-width:34px;width:34px;padding-inline:var(--space-1)}
.schedule-table .total-days,.schedule-table .total-hours{position:sticky;z-index:var(--z-sticky-cell);background:var(--surface);border-left:1px solid var(--line-strong)}
.schedule-table .total-hours{right:0;width:64px;min-width:64px}
.schedule-table .total-days{right:64px;width:56px;min-width:56px}
.schedule-table thead .total-days,.schedule-table thead .total-hours{z-index:var(--z-sticky-head);background:var(--surface-2)}
.schedule-table .grade,.mobile-day .grade{margin-right:var(--space-2)}
.schedule-cell{font-family:var(--font-mono)}
.cell-dayoff{background:var(--surface-2)}
.cell-unspecified{outline:1px dashed var(--line-strong);outline-offset:-5px}
.cell-missing{background:var(--warn-bg);color:var(--warn-fg);font-weight:700;outline:1px dashed color-mix(in oklch, var(--warn-fg) 45%, transparent);outline-offset:-5px;border-radius:var(--radius-sm);background-clip:padding-box}
.today{box-shadow:inset 1px 0 var(--ink),inset -1px 0 var(--ink)}
.schedule-table thead .weekend{background:var(--surface-2)}
.coverage th,.coverage td{height:44px;border-top:2px solid var(--line-strong);font-family:var(--font-mono);font-weight:700;background:var(--surface-2)}
.schedule-table .coverage .manager,.schedule-table .coverage .total-days,.schedule-table .coverage .total-hours{background:var(--surface-2)}
.coverage .coverage-0{background:#fff;box-shadow:inset 0 0 0 1px var(--ink)}
.coverage .coverage-1{background:color-mix(in oklch, var(--ink) 5%, var(--surface-2))}
.coverage .coverage-2{background:color-mix(in oklch, var(--ink) 12%, var(--surface-2))}
.coverage .coverage-3{background:color-mix(in oklch, var(--ink) 20%, var(--surface-2))}
.schedule-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);color:var(--ink-3);font-size:var(--text-xs)}
.schedule-legend span{display:flex;align-items:center;gap:var(--space-1)}
.schedule-legend i{display:grid;place-items:center;width:38px;height:24px;border:1px solid var(--line);border-radius:var(--radius-badge);color:var(--ink);font:var(--text-xs) var(--font-mono);font-style:normal}
.sample-dayoff{background:var(--surface-2)}
.sample-unspecified{border:1px dashed var(--line-strong)}
.sample-missing{background:var(--warn-bg);border:1px dashed color-mix(in oklch, var(--warn-fg) 45%, transparent)}
.mobile-schedule{display:none}
.mobile-schedule .manager-card{margin-bottom:var(--space-2)}
/* Покрытие в месяце на мобильном — та же мини-сетка, но без тепловой карты: она
   различима на широкой таблице, а в ячейке 42px превращается в шум (#199). */
.mobile-coverage>header{color:var(--ink-3)}
.mobile-coverage .mini-day>b{background:var(--surface-2)}
@media(max-width:700px){
  .schedule-head{display:block}
  .desktop-schedule{display:none}
  .mobile-schedule{display:block}
  .mobile-day{margin-bottom:var(--space-2);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);overflow:hidden}
  .mobile-day header{display:flex;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--surface-2);font:var(--text-xs) var(--font-mono);text-transform:uppercase}
  .mobile-day header span{color:var(--ink-3)}
  .mobile-day ul{margin:0;padding:0;list-style:none}
  .mobile-day li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-3);border-top:1px solid var(--line)}
  .mobile-day li:first-child{border-top:0}
  .mobile-day li>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mobile-day li>b{flex:none;max-width:145px;padding:var(--space-1) var(--space-2);border-radius:var(--radius-badge);font-size:var(--text-xs);font-weight:500}
  .mobile-day li>b.cell-dayoff{color:transparent;min-width:50px}
  .mobile-day li>b.cell-unspecified,.mobile-day li>b.cell-missing{white-space:normal;text-align:right;color:var(--ink-3)}
  .mobile-schedule .mobile-total{padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface-2);font:600 var(--text-xs) var(--font-mono)}
  .schedule-legend{gap:var(--space-2)}
  .schedule-page{width:100%;overflow-x:hidden}
}
.schedule-table thead th.day{height:52px;vertical-align:middle;text-align:center}
.schedule-table .day-number,.schedule-table .day-weekday{display:block;line-height:1.15}
.schedule-table .day-number{color:var(--ink-2);font-size:var(--text-xs);font-weight:600}
.schedule-table .day-weekday{margin-top:var(--space-1);color:var(--ink-3);font-size:var(--text-xs);font-weight:500}
