.plan-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-6);margin-bottom:var(--space-6)}
.plan-head h1{margin:0;text-transform:uppercase;font-size:var(--text-lg);letter-spacing:.02em}
.plan-head p{margin:var(--space-1) 0 0;color:var(--ink-3)}
.luina-content>section>h2{margin:0 0 var(--space-2);font:600 var(--text-xs) var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.summary{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);overflow:hidden;margin-bottom:var(--space-4)}
.summary>div{padding:var(--space-4) var(--space-4);border-left:1px solid var(--line)}
.summary>div:first-child{border-left:0}
.summary span,.summary small{display:block;color:var(--ink-3);font-size:var(--text-xs)}
.summary b{display:block;margin:var(--space-1) 0;font:600 var(--text-xl) var(--font-mono)}
.met{color:var(--plan-progress-met)!important}
.plan-scroll{overflow:auto;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface)}
.plan-scroll table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}
.plan-scroll th,.plan-scroll td{height:43px;padding:var(--space-3);text-align:center;border-top:1px solid var(--line);white-space:nowrap}
/* Жёсткая ширина дня в месяце и пол ширины таблицы по режиму (#195).

   С `table-layout:fixed` ширина колонки берётся только из объявления, а колонка
   без объявленной ширины делит остаток поровну — и на узком экране схлопывается
   до нечитаемого: замерено 4.6px на день при viewport 701px. `min-width` у ячеек
   фиксированная раскладка игнорирует, поэтому пол ставится таблице целиком и
   зависит от режима: 230 менеджер + 7 дней по 48 + 298 сводка справа.

   В месяце пол не нужен: там у дня есть своя ширина, и сумма набирается сама.
   Дню месяца отдан горизонтальный padding — внутри 48px остаётся 40 вместо 24,
   иначе трёхзначная сумма по команде за день не помещается и обрезается молча. */
.plan-scroll table.week{min-width:864px}
.plan-scroll table.month .day,.plan-scroll table.month td:not(.manager):not(.result):not(.plan-cum):not(.fulfil):not(.month-plan){width:48px;padding-inline:var(--space-1)}
.plan-scroll td{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.plan-scroll td.manager,.plan-scroll th.manager{font-family:var(--font-sans)}
.plan-scroll thead th{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}
.plan-scroll thead .manager{background:var(--surface-2)}
.plan-scroll th b,.plan-scroll th small{display:block}
.plan-scroll .manager{position:sticky;left:0;z-index:var(--z-sticky-cell);width:230px;min-width:230px;text-align:left;background:var(--surface)}
.plan-scroll .grade{margin-right:var(--space-2)}
.weekend,.cell-off{background:var(--surface-2)}
.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)}
.result{border-left:1px solid var(--line-strong)!important}
.plan-scroll .result,.plan-scroll .plan-cum,.plan-scroll .fulfil,.plan-scroll .month-plan{position:sticky;z-index:var(--z-sticky-cell);background:var(--surface)}
.plan-scroll .month-plan{right:0px;width:72px;min-width:72px}
.plan-scroll .fulfil{right:72px;width:118px;min-width:118px}
.plan-scroll .plan-cum{right:190px;width:54px;min-width:54px}
.plan-scroll .result{right:244px;width:54px;min-width:54px}
.plan-scroll thead .result,.plan-scroll thead .plan-cum,.plan-scroll thead .fulfil,.plan-scroll thead .month-plan{white-space:normal;line-height:1.25}
.plan-scroll thead .result,.plan-scroll thead .plan-cum,.plan-scroll thead .fulfil,.plan-scroll thead .month-plan{z-index:var(--z-sticky-head);background:var(--surface-2)}
.plan-scroll .total .result,.plan-scroll .total .plan-cum,.plan-scroll .total .fulfil,.plan-scroll .total .month-plan{background:var(--surface-2)}
.total td{border-top:2px solid var(--line-strong);font-family:var(--font-mono);font-weight:700;background:var(--surface-2)}
.plan-scroll .team-empty td{padding:var(--space-5) var(--space-3);text-align:center;color:var(--ink-3)}
.plan-legend{display:flex;gap:var(--space-5);flex-wrap:wrap;color:var(--ink-3);font-size:var(--text-xs)}
.plan-legend span{display:flex;align-items:center;gap:var(--space-1)}
.plan-legend i{display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--line);border-radius:var(--radius-badge);font-style:normal}
.sample-off{background:var(--surface-2)}
.sample-missing{background:var(--warn-bg);color:var(--warn-fg);border:1px dashed color-mix(in oklch, var(--warn-fg) 45%, transparent)}
.mobile-plan{display:none}
.mobile-team-total{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface)}
.mobile-team-total{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}
.mobile-plan .manager-card{margin-bottom:var(--space-2)}
.mobile-team-total{flex-wrap:wrap;padding:var(--space-3);background:var(--surface-2);font-size:var(--text-xs)}
.mobile-team-total strong{width:100%;font-size:var(--text-xs)}
.mobile-team-total b{font-family:var(--font-mono)}
@media(max-width:700px){
  .plan-head{display:block;min-width:0}
  .summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .summary>div{min-width:0;padding-inline:var(--space-3)}
  .summary>div:nth-child(3){border-left:0;border-top:1px solid var(--line)}
  .summary>div:nth-child(4){border-top:1px solid var(--line)}
  .plan-scroll .manager{min-width:180px}
  .plan-scroll{width:100%;max-width:100%;overflow-x:auto}
  .plan-legend{min-width:0}
  .desktop-plan{display:none}
  .mobile-plan{display:block}
}
.plan-scroll .total th{border-top:2px solid var(--line-strong);font-weight:700;background:var(--surface-2)}
