/* ─── «Календарь» (calendar.js; ТЗ Жоогазын «ТЗ для календаря по аудиту на 20/10/26» в редакции Алекса 20.10.2026):
   виды «Месяц / Неделя / День», фильтры, «Ближайшие события» с «Горит», панель деталей, полоса «Эта неделя» в «Аудите» ─── */
.cal-root, .cal-wk-strip {
    --c-deadline: #3b64f4; --c-deadline-bg: #eef2ff; --c-deadline-fg: #2749d1;
    --c-overdue: #ef4444;  --c-overdue-bg: #fdecec;  --c-overdue-fg: #b91c1c;
    --c-collect: #7c3aed;  --c-collect-bg: #f3edff;  --c-collect-fg: #5b21b6;
    --c-tariff: #0d9488;   --c-tariff-bg: #e5f6f4;   --c-tariff-fg: #0f766e;
    --c-mailing: #10b981;  --c-mailing-bg: #e7f8f0;  --c-mailing-fg: #047857;
    --c-client: #0ea5e9;   --c-client-bg: #e6f4fc;   --c-client-fg: #0369a1;
    --c-staff: #ec4899;    --c-staff-bg: #fdeef6;    --c-staff-fg: #be185d;
    --c-holiday: #d97706;  --c-holiday-bg: #fbf2e1;  --c-holiday-fg: #92400e;
    --c-remind: #f97316;   --c-remind-bg: #fff1e6;   --c-remind-fg: #c2410c;
}
.cal-root { min-width: 0; transition: opacity .15s; }
.cal-root.is-loading { opacity: .62; pointer-events: none; }
.t-deadline { --cc: var(--c-deadline); --cb: var(--c-deadline-bg); --cf: var(--c-deadline-fg); }
.t-overdue  { --cc: var(--c-overdue);  --cb: var(--c-overdue-bg);  --cf: var(--c-overdue-fg); }
.t-collect  { --cc: var(--c-collect);  --cb: var(--c-collect-bg);  --cf: var(--c-collect-fg); }
.t-tariff   { --cc: var(--c-tariff);   --cb: var(--c-tariff-bg);   --cf: var(--c-tariff-fg); }
.t-mailing  { --cc: var(--c-mailing);  --cb: var(--c-mailing-bg);  --cf: var(--c-mailing-fg); }
.t-client   { --cc: var(--c-client);   --cb: var(--c-client-bg);   --cf: var(--c-client-fg); }
.t-staff    { --cc: var(--c-staff);    --cb: var(--c-staff-bg);    --cf: var(--c-staff-fg); }
.t-holiday, .t-company { --cc: var(--c-holiday); --cb: var(--c-holiday-bg); --cf: var(--c-holiday-fg); }
/* раскладка напоминаний клиентам (reminders.js) */
.t-remind   { --cc: var(--c-remind);   --cb: var(--c-remind-bg);   --cf: var(--c-remind-fg); }
.cal-ws-l.t-remind { --cb: var(--c-remind-bg); --cf: var(--c-remind-fg); }
.cal-rem-li .cal-li-s { display: flex; flex-wrap: wrap; gap: 3px; }
/* тон поверх типа: сдано — зелёный, срок прошёл — красный, горит — оранжевый, выключено — серый */
.tone-done { --cc: var(--ok); --cb: var(--ok-soft); --cf: var(--ok-deep); }
.tone-late, .tone-bad { --cc: var(--err); --cb: var(--err-soft); --cf: var(--err-deep); }
.tone-hot, .tone-warn { --cc: var(--warn); --cb: var(--warn-soft); --cf: var(--warn-deep); }
.tone-live { --cc: var(--accent); --cb: var(--accent-soft); --cf: var(--accent-2); }
.tone-off { --cc: #c3cad6; --cb: #f3f5f8; --cf: var(--faint); }

/* ─── Шапка ─── */
.cal-top { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; flex-wrap: wrap; }
.cal-title { display: flex; align-items: center; gap: 11px; margin-right: auto; min-width: 0; flex: 1 1 220px; }
.cal-title > div { min-width: 0; }
.cal-title small { max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-title-ico { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 12px;
    background: linear-gradient(135deg, var(--accent), #6e8cfb); color: #fff; box-shadow: 0 6px 16px rgba(59, 100, 244, .28); flex: 0 0 38px; }
.cal-title b { display: block; font-size: 21px; font-weight: 800; letter-spacing: -.4px; line-height: 1.15; }
.cal-title small { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--muted); font-weight: 600; margin-top: 2px; }
.cal-title small svg { color: var(--faint); }
.cal-nav { display: flex; align-items: center; gap: 6px; }
.cal-nav .icon-btn { padding: 7px; }
.cal-period { min-width: 196px; text-align: center; font-size: 16px; font-weight: 800; letter-spacing: -.2px; color: var(--text); padding: 0 4px; }
.cal-top-r { display: flex; align-items: center; gap: 10px; }
.cal-views button { padding: 7px 14px; }

/* ─── Фильтры ─── */
.cal-filters { display: flex; align-items: flex-start; gap: 10px 14px; margin-bottom: 14px; flex-wrap: wrap; }
.cal-chips { display: flex; flex-wrap: wrap; gap: 6px; flex: 1 1 520px; min-width: 0; }
.cal-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 11px 4px 5px; border-radius: 999px; border: 1px solid var(--border);
    background: var(--panel); font: inherit; font-size: 12.5px; font-weight: 650; color: var(--text-2); cursor: pointer; transition: all .13s; white-space: nowrap; }
.cal-chip:hover { border-color: #cfd6e1; }
.cal-chip-ico { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 999px; background: var(--cb); color: var(--cc); }
.cal-chip.on { background: var(--cb); border-color: color-mix(in srgb, var(--cc) 32%, transparent); color: var(--cf); }
.cal-chip.on .cal-chip-ico { background: #fff; }
.cal-chip.off { color: var(--faint); background: #fafbfc; }
.cal-chip.off .cal-chip-ico { background: #eef1f5; color: var(--faint); }
.cal-chip.sub, .cal-chip.mine { padding: 4px 11px; border-style: dashed; }
.cal-chip.sub.on, .cal-chip.mine.on { border-style: solid; background: #f1f4f9; color: var(--text); border-color: #d5dbe5; }
.cal-chip.mine { gap: 5px; }
.cal-dd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cal-dd select { padding: 6px 30px 6px 11px; font-size: 13px; font-weight: 650; min-width: 140px; max-width: 220px; }
.cal-reset { padding: 7px; }
.cal-warn { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 12px; background: var(--warn-soft); color: var(--warn-deep);
    font-size: 12.5px; font-weight: 600; margin-bottom: 12px; border: 1px solid #f6dfb4; }
.cal-warn span { flex: 1; }
.cal-scope { display: flex; align-items: center; gap: 8px; padding: 7px 12px; margin: -4px 0 12px; border-radius: 11px; background: var(--accent-soft); color: var(--accent-2);
    font-size: 12.5px; }
.cal-scope svg { flex: 0 0 auto; }
.cal-scope span { flex: 1; min-width: 0; }
.cal-scope b { font-weight: 750; }
.cal-scope-x { border: none; background: none; font: inherit; font-size: 12px; font-weight: 700; color: var(--accent); cursor: pointer; padding: 2px 6px; border-radius: 6px; }
.cal-scope-x:hover { background: #dfe6ff; }

/* ─── Раскладка: сетка ~75 %, «Ближайшие» ~25 %; узко (1366 с открытым меню) — «Ближайшие» под сеткой колонками ─── */
.cal-root { container-type: inline-size; container-name: calroot; }
.cal-layout { display: grid; grid-template-columns: minmax(0, 1fr) clamp(272px, 24%, 350px); gap: 16px; align-items: start; }
@container calroot (max-width: 1180px) {
    .cal-layout { grid-template-columns: minmax(0, 1fr); }
    .cal-side { position: static; max-height: none; overflow: visible; }
    .cal-up-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 12px 14px; align-items: start; }
    .cal-hot { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 6px 8px; }
    .cal-hot-h { grid-column: 1 / -1; }
    .cal-period { min-width: 150px; }
    .cal-chip { font-size: 12px; padding: 3px 10px 3px 4px; gap: 5px; }
    .cal-chip-ico { width: 20px; height: 20px; }
    .cal-dd select { min-width: 118px; font-size: 12.5px; }
}
.cal-main { min-width: 0; display: flex; flex-direction: column; gap: 14px; container-type: inline-size; }
.cal-skel { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; padding: 12px; }

/* ─── Месяц ─── */
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); background: var(--panel); border: 1px solid var(--border);
    border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-1); }
.cal-dow { padding: 9px 10px; font-size: 11px; font-weight: 750; text-transform: uppercase; letter-spacing: .5px; color: var(--muted);
    border-bottom: 1px solid var(--border); background: #fafbfd; }
.cal-dow.wk { color: var(--err-deep); }
.cal-day { position: relative; min-height: 128px; padding: 6px 6px 7px; border-right: 1px solid var(--border-soft); border-bottom: 1px solid var(--border-soft);
    display: flex; flex-direction: column; gap: 3px; cursor: pointer; min-width: 0; transition: background .12s; }
.cal-day:nth-child(7n + 7) { border-right: none; }
.cal-day:nth-last-child(-n + 7) { border-bottom: none; }
.cal-day:hover { background: #fafbff; }
.cal-day.other { background: #fbfcfd; }
.cal-day.other .cal-dnum-n { color: var(--faint); }
.cal-day.wk .cal-dnum-n { color: var(--err-deep); }
.cal-day.other.wk .cal-dnum-n { color: #f1a9a9; }
.cal-day.on { box-shadow: inset 0 0 0 2px var(--accent); background: #fbfcff; }
.cal-day.today { box-shadow: inset 0 0 0 2px #16202e; }
.cal-day.flash { animation: calFlash 1.1s ease-out; }
@keyframes calFlash { 0% { background: #e3eaff; } 100% { background: transparent; } }
.cal-dnum { display: flex; align-items: center; justify-content: space-between; min-height: 24px; }
.cal-dnum-n { display: inline-flex; align-items: center; justify-content: center; min-width: 25px; height: 25px; padding: 0 4px; border-radius: 999px;
    font-size: 12.5px; font-weight: 750; color: var(--text-2); }
.cal-day.today .cal-dnum-n { background: #16202e; color: #fff; }
.cal-dot { width: 7px; height: 7px; border-radius: 999px; background: var(--err); box-shadow: 0 0 0 3px rgba(239, 68, 68, .14); flex: 0 0 auto; }
.cal-hol { display: flex; align-items: center; gap: 4px; width: 100%; min-width: 0; padding: 2px 6px; border: none; border-radius: 6px; background: var(--cb); color: var(--cf);
    font: inherit; font-size: 11px; font-weight: 650; cursor: pointer; text-align: left; }
.cal-hol span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-hol svg { flex: 0 0 auto; }
.cal-hol.red { box-shadow: inset 0 0 0 1px #f8b4b4; }
.cal-evs { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cal-mores { display: flex; flex-wrap: wrap; gap: 2px 6px; }
.cal-more { border: none; background: none; padding: 1px 4px; font: inherit; font-size: 11.5px; font-weight: 700; color: var(--accent); cursor: pointer; border-radius: 6px; }
.cal-more:hover { background: var(--accent-soft); }

/* плашка события */
.cal-pill { display: flex; align-items: center; gap: 5px; width: 100%; min-width: 0; padding: 3px 7px 3px 6px; border-radius: 7px; border: none;
    background: var(--cb); color: var(--cf); box-shadow: inset 2.5px 0 0 var(--cc); font: inherit; font-size: 11.5px; line-height: 1.3; text-align: left;
    cursor: pointer; transition: filter .12s, box-shadow .12s; }
.cal-pill:hover { filter: brightness(.96); }
.cal-pill-ico { display: inline-flex; flex: 0 0 auto; color: var(--cc); }
.cal-pill-tm { flex: 0 0 auto; font-weight: 800; font-variant-numeric: tabular-nums; }
.cal-pill-t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.cal-pill-n { flex: 0 0 auto; font-weight: 800; white-space: nowrap; font-variant-numeric: tabular-nums; }
.cal-pill.on { box-shadow: inset 2.5px 0 0 var(--cc), 0 0 0 1.5px var(--cc); }
.cal-pill.red { box-shadow: inset 2.5px 0 0 var(--cc), 0 0 0 1px #f8b4b4; }
.cal-pill.tone-off .cal-pill-t { text-decoration: line-through; }
.cal-pill.tone-plan { background: #fff; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cc) 40%, transparent); }
.cal-pill.tone-plan .cal-pill-n { color: var(--muted); font-weight: 650; }
.cal-pill.drag { cursor: grab; }
.cal-pill.drag:active { cursor: grabbing; }
/* срок, сбор, тариф: «сдали/обязаны» переносится на вторую строку только если подпись целиком не влезает (узкая клетка 1366) */
.cal-pill.two { flex-wrap: wrap; row-gap: 0; }
.cal-pill.two .cal-pill-t { flex: 0 1 auto; }
.cal-pill.two .cal-pill-n { margin-left: auto; }
@container (max-width: 980px) { .cal-day { min-height: 116px; } }
/* прошедшие дни — приглушённо, сегодня и дальше — в полную силу */
.cal-day.past:not(.today) .cal-pill, .cal-day.past:not(.today) .cal-hol { opacity: .72; }
.cal-day.past:not(.today) .cal-pill:hover { opacity: 1; }
.is-dragging .cal-day:not(.past), .is-dragging .cal-wk-ad, .is-dragging .cal-wk-col { outline: 1px dashed #c7d2fe; outline-offset: -3px; }
.cal-day.drop-on, .cal-wk-ad.drop-on, .cal-wk-col.drop-on { background: #eef2ff !important; outline: 2px solid var(--accent) !important; outline-offset: -2px; }

/* ─── Неделя ─── */
.cal-week { overflow: hidden; }
.cal-wk-row { display: grid; grid-template-columns: 56px repeat(7, minmax(0, 1fr)); }
.cal-wk-gut { font-size: 10.5px; font-weight: 700; color: var(--muted); text-align: right; padding: 6px 8px 0 0; text-transform: uppercase; letter-spacing: .3px; line-height: 1.25; }
.cal-wk-head { border-bottom: 1px solid var(--border); background: #fafbfd; }
.cal-wk-h { display: flex; align-items: center; justify-content: center; gap: 7px; padding: 8px 4px; border: none; background: none; font: inherit; cursor: pointer;
    border-left: 1px solid var(--border-soft); color: var(--text-2); position: relative; }
.cal-wk-h span { font-size: 11px; font-weight: 750; text-transform: uppercase; letter-spacing: .4px; color: var(--muted); }
.cal-wk-h b { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; border-radius: 999px; font-size: 14.5px; font-weight: 800; }
.cal-wk-h.wk span, .cal-wk-h.wk b { color: var(--err-deep); }
.cal-wk-h.today b { background: #16202e; color: #fff; }
.cal-wk-h.on { box-shadow: inset 0 -2px 0 var(--accent); }
.cal-wk-h:hover { background: #f4f6fb; }
.cal-wk-h .cal-dot { position: absolute; top: 8px; right: 10px; }
.cal-wk-allday { border-bottom: 1px solid var(--border); background: #fcfdff; }
.cal-wk-ad { display: flex; flex-direction: column; gap: 3px; padding: 6px 5px; min-height: 64px; max-height: 236px; overflow: auto; border-left: 1px solid var(--border-soft); min-width: 0; }
.cal-wk-ad.today, .cal-wk-col.today { background: #fbfcff; }
.cal-wk-scroll { max-height: min(600px, 62vh); overflow: auto; }
.cal-wk-body { position: relative; }
.cal-wk-body .cal-wk-gut { padding: 0; }
.cal-wk-body .cal-wk-gut span { display: block; padding: 0 8px 0 0; transform: translateY(-7px); font-size: 11px; font-weight: 650; text-transform: none; letter-spacing: 0; color: var(--faint); }
.cal-wk-body .cal-wk-gut span:first-child { transform: none; }
.cal-wk-col { position: relative; border-left: 1px solid var(--border-soft); display: flex; flex-direction: column; min-width: 0; }
.cal-wk-col.wk { background: #fdfcfc; }
.cal-wk-line { display: block; height: 46px; border-bottom: 1px solid var(--border-soft); flex: 0 0 46px; }
.cal-wk-ev { position: absolute; right: 4px; z-index: 1; }
.cal-wk-ev .cal-pill { box-shadow: inset 2.5px 0 0 var(--cc), 0 1px 3px rgba(18, 30, 55, .08); }
.cal-now { position: absolute; left: 0; right: 0; height: 2px; background: var(--err); z-index: 2; pointer-events: none; }
.cal-now::before { content: ''; position: absolute; left: -4px; top: -3px; width: 8px; height: 8px; border-radius: 999px; background: var(--err); }

/* ─── День ─── */
.cal-dayv { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 14px; }
.cal-dv-h { display: flex; align-items: center; gap: 12px; }
.cal-dv-h > div { flex: 1; min-width: 0; }
.cal-dv-h b { display: block; font-size: 17px; font-weight: 800; letter-spacing: -.2px; }
.cal-dv-h small { font-size: 12.5px; color: var(--muted); font-weight: 600; }
.cal-cnts { display: flex; flex-wrap: wrap; gap: 6px; }
.cal-cnt { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: var(--cb); color: var(--cf); font-size: 12px; font-weight: 650; }
.cal-cnt svg { color: var(--cc); }
.cal-cnt b { font-weight: 800; }
.cal-dv-g { display: flex; flex-direction: column; gap: 7px; }
.cal-dv-gh { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 750; text-transform: uppercase; letter-spacing: .4px; color: var(--cf); }
.cal-dv-gh svg { color: var(--cc); }
.cal-dv-gh span { margin-left: 2px; padding: 0 7px; border-radius: 999px; background: var(--cb); font-size: 11px; }

/* ─── Карточка события ─── */
.cal-cards { display: flex; flex-direction: column; gap: 5px; }
.cal-cards.grid2 { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 7px; }
.cal-card { display: flex; align-items: center; gap: 9px; padding: 7px 9px; border-radius: 11px; border: 1px solid var(--border); background: var(--panel); cursor: pointer;
    min-width: 0; transition: border-color .12s, box-shadow .12s, background .12s; }
.cal-card:hover { border-color: #cfd6e1; box-shadow: var(--shadow-1); }
.cal-card.on { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(59, 100, 244, .14); }
.cal-card.red { border-color: #f6a5a5; background: #fff6f6; box-shadow: inset 3px 0 0 var(--err); }
.cal-card.red .cal-card-t { color: var(--err-deep); }
.cal-card-ico { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 9px; background: var(--cb); color: var(--cc); flex: 0 0 30px; }
.cal-card-m { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cal-card-t { font-size: 12.5px; font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-card-s { font-size: 11.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-card-r { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex: 0 0 auto; }
.cal-pct { font-size: 11.5px; font-weight: 800; padding: 1px 7px; border-radius: 999px; background: var(--cb); color: var(--cf); font-variant-numeric: tabular-nums; }
.cal-st { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: var(--cb); color: var(--cf); white-space: nowrap; }
.cal-st.lg { font-size: 12px; padding: 3px 10px; align-self: center; }
.cal-st.tone-plan { background: #eef2ff; color: var(--accent-2); }
.cal-seen { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; border: 1px solid #f3b4b4; background: #fff; color: var(--err-deep);
    font: inherit; font-size: 11px; font-weight: 750; cursor: pointer; white-space: nowrap; }
.cal-seen:hover { background: var(--err-soft); }
.cal-unsee { display: inline-flex; padding: 3px; border: none; background: none; color: var(--faint); cursor: pointer; border-radius: 6px; }
.cal-unsee:hover { color: var(--text-2); background: #f1f3f7; }
/* в узкой ленте: название в две строки, «Посмотрел» компактнее */
.cal-side .cal-card { align-items: flex-start; }
.cal-side .cal-card-t { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.3; }
.cal-side .cal-card-ico { margin-top: 1px; }
.cal-side .cal-seen { padding: 1px 7px; font-size: 10.5px; }
.cal-card.seen .cal-card-t { color: var(--text-2); }
.cal-bar { display: flex; height: 4px; border-radius: 999px; background: #e9edf3; overflow: hidden; margin-top: 3px; }
.cal-bar.lg { height: 8px; margin: 0; }
.cal-bar i { display: block; height: 100%; }
.cal-bar .b-done { background: var(--accent); }
.cal-bar .b-late { background: var(--err); }
.cal-empty { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 30px 12px; color: var(--muted); text-align: center; }
.cal-empty svg { color: var(--faint); }
.cal-empty b { color: var(--text-2); font-size: 13.5px; }
.cal-empty span { font-size: 12px; }
.cal-empty.sm { padding: 18px 10px; }

/* ─── «Ближайшие события» ─── */
.cal-side { background: var(--panel); border: 1px solid var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-1); padding: 14px 12px 14px 14px;
    display: flex; flex-direction: column; gap: 10px; position: sticky; top: 12px; max-height: calc(100vh - 32px); overflow: auto; }
.cal-side-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cal-side-h > span { display: inline-flex; align-items: center; gap: 7px; font-weight: 800; font-size: 14px; }
.cal-side-h > span svg { color: var(--accent); }
.cal-side-h small { font-size: 11.5px; color: var(--muted); font-weight: 600; margin-right: auto; }
.cal-seeall { padding: 4px 10px; font-size: 12px; color: var(--err-deep); border-color: #f6caca; }
.cal-seeall:hover { background: #fff5f5; border-color: #f3b4b4; }
.cal-side-hint { font-size: 11.5px; color: var(--muted); line-height: 1.45; }
.cal-hot { border-radius: 13px; padding: 9px; background: linear-gradient(180deg, #fff7ec, #fffaf3); border: 1px solid #f8deb4; display: flex; flex-direction: column; gap: 6px; }
.cal-hot-h { display: flex; align-items: center; gap: 6px; font-weight: 800; font-size: 13px; color: var(--warn-deep); flex-wrap: wrap; }
.cal-hot-h span { padding: 0 7px; border-radius: 999px; background: #fde4bd; font-size: 11.5px; }
.cal-hot-h small { flex-basis: 100%; font-size: 11px; font-weight: 600; color: #b98a42; }
.cal-hot-r { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 8px; align-items: center; padding: 7px 9px; border-radius: 10px; border: 1px solid #f6dfba;
    background: #fff; font: inherit; text-align: left; cursor: pointer; }
.cal-hot-r:hover { border-color: #f0c98a; }
.cal-hot-t b { display: block; font-size: 12.5px; color: var(--text); font-weight: 750; }
.cal-hot-t small { font-size: 11px; color: var(--warn-deep); font-weight: 600; }
.cal-hot-n { text-align: right; }
.cal-hot-n b { display: block; font-size: 13px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
.cal-hot-n small { font-size: 11px; color: var(--muted); font-weight: 650; }
.cal-hot-r .cal-bar { grid-column: 1 / -1; }
.cal-hot-r .cal-bar .b-done { background: var(--warn); }
.cal-up-day { display: flex; flex-direction: column; gap: 5px; }
.cal-up-date { display: flex; align-items: baseline; gap: 7px; font-size: 11.5px; color: var(--muted); padding-top: 2px; }
.cal-up-date b { color: var(--text-2); font-weight: 750; }
.cal-up-date span.today { color: var(--accent); font-weight: 750; }

/* ─── Панель деталей ─── */
.cal-panel { padding: 16px 18px 18px; animation: calIn .18s ease-out; }
@keyframes calIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.cal-panel-h { display: flex; align-items: center; gap: 11px; margin-bottom: 14px; flex-wrap: wrap; }
.cal-panel-h > div { flex: 1 1 260px; min-width: 0; }
.cal-panel-h b { display: block; font-size: 15px; font-weight: 800; letter-spacing: -.1px; }
.cal-panel-h small { display: block; font-size: 12px; color: var(--muted); margin-top: 2px; font-weight: 550; }
.cal-panel-ico { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 11px; background: var(--accent-soft); color: var(--accent); flex: 0 0 36px; }
.cal-panel-ico[class*=" t-"] { background: var(--cb); color: var(--cc); }
.cal-x { margin-left: 2px; }
.cal-btn-seen { color: var(--err-deep); border-color: #f6caca; }
.cal-btn-seen:hover { background: #fff5f5; border-color: #f3b4b4; }
.cal-dl { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 8px 18px; align-items: center; padding: 12px 14px; border-radius: 13px; background: #f8f9fc;
    border: 1px solid var(--border-soft); margin-bottom: 12px; }
.cal-dl-n { display: flex; align-items: baseline; gap: 3px; flex-wrap: wrap; max-width: 150px; }
.cal-dl-n b { font-size: 26px; font-weight: 850; color: var(--accent-2); letter-spacing: -.5px; font-variant-numeric: tabular-nums; }
.cal-dl-n b.need { color: var(--text); }
.cal-dl-n span { font-size: 20px; color: var(--faint); }
.cal-dl-n small { flex-basis: 100%; font-size: 11.5px; color: var(--muted); font-weight: 600; }
.cal-dl-bar { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cal-dl-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 11.5px; }
.cal-chip-s { padding: 2px 9px; border-radius: 999px; font-size: 11.5px; font-weight: 750; background: #eef1f6; color: var(--text-2); }
.cal-chip-s.ok { background: var(--ok-soft); color: var(--ok-deep); }
.cal-chip-s.bad { background: var(--err-soft); color: var(--err-deep); }
.cal-chip-s.warn { background: var(--warn-soft); color: var(--warn-deep); }
.cal-dl-acts { display: flex; flex-direction: column; gap: 6px; }
.cal-dl-acts .btn { justify-content: flex-start; }
.cal-tabs { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.cal-tabs button { border: 1px solid var(--border); background: var(--panel); border-radius: 999px; padding: 4px 12px; font: inherit; font-size: 12.5px; color: var(--text-2); cursor: pointer; }
.cal-tabs button b { margin-left: 3px; }
.cal-tabs button.on { background: var(--accent-soft); border-color: #c9d5ff; color: var(--accent-2); font-weight: 650; }
.cal-list { display: flex; flex-direction: column; border: 1px solid var(--border-soft); border-radius: 12px; overflow: auto; max-height: 520px; }
.cal-li { display: grid; grid-template-columns: 22px minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 150px) auto; align-items: center; gap: 10px; padding: 8px 12px;
    border-bottom: 1px solid var(--border-soft); font-size: 13px; }
.cal-li:last-child { border-bottom: none; }
.cal-li:hover { background: #fafbfd; }
.cal-li-ck { color: var(--warn-deep); display: inline-flex; }
.cal-li.ok .cal-li-ck { color: var(--ok); }
.cal-li.bad .cal-li-ck { color: var(--err); }
.cal-li-n { min-width: 0; }
.cal-li-n a { color: var(--text); font-weight: 650; text-decoration: none; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-li-n a:hover { color: var(--accent); }
.cal-li-n small, .cal-li-s small { display: block; font-size: 11.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-li-s { font-size: 12.5px; color: var(--text-2); min-width: 0; }
.cal-li-s b { font-weight: 650; }
.cal-li-pill { display: inline-block; padding: 1px 9px; border-radius: 999px; font-size: 11.5px; font-weight: 700; background: #eef1f6; color: var(--text-2); }
.cal-li-pill.ok { background: var(--ok-soft); color: var(--ok-deep); }
.cal-li-pill.bad { background: var(--err-soft); color: var(--err-deep); }
.cal-li-pill.warn { background: var(--warn-soft); color: var(--warn-deep); }
.cal-li.ok .cal-li-s { color: var(--ok-deep); }
.cal-li.bad .cal-li-s { color: var(--err-deep); }
.cal-li-a { display: flex; gap: 2px; }
.cal-li-a .mini-btn { text-decoration: none; display: inline-flex; }
.cal-stage { display: inline-block; max-width: 100%; padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 750; background: #eef1f6; color: var(--text-2);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-stage.s0 { background: #e8edff; color: #2a4fd6; }
.cal-stage.s1 { background: #e4f5f2; color: #0f766e; }
.cal-stage.s2 { background: #ecf6e9; color: #3f7d20; }
.cal-stage.s3 { background: #f1ebff; color: #6d28d9; }
.cal-stage.s4 { background: #fbecf8; color: #a21caf; }
.cal-stage.s5 { background: #fdf0e8; color: #c2410c; }
.cal-stage.s6 { background: #f6efe3; color: #8a5a12; }
.cal-stage.s7 { background: #fde8ec; color: #be123c; }
.cal-list-skel { border: 1px solid var(--border-soft); border-radius: 12px; overflow: hidden; }
.cal-note { display: flex; align-items: flex-start; gap: 8px; padding: 9px 12px; border-radius: 11px; background: #f6f8fc; color: var(--text-2); font-size: 12.5px; line-height: 1.45; margin-bottom: 10px; }
.cal-note svg { flex: 0 0 auto; margin-top: 1px; color: var(--accent); }
.cal-note.bad { background: var(--err-soft); color: var(--err-deep); }
.cal-note.bad svg { color: var(--err); }
.cal-mail { display: flex; flex-direction: column; gap: 12px; }
.cal-kvs { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-bottom: 4px; }
.cal-kv span { display: block; font-size: 10.5px; font-weight: 750; text-transform: uppercase; letter-spacing: .4px; color: var(--muted); }
.cal-kv b { font-size: 13px; font-weight: 650; color: var(--text); }
.cal-kv b a { color: var(--accent); text-decoration: none; }
.cal-kv .bad { color: var(--err-deep); }
.cal-wa { padding: 12px; border-radius: 13px; background: #efeae2; max-width: 640px; }
.cal-wa-b { background: #fff; border-radius: 10px 10px 10px 3px; padding: 9px 11px; font-size: 13px; line-height: 1.45; white-space: pre-wrap; color: #111b21;
    box-shadow: 0 1px 1px rgba(11, 20, 26, .08); max-height: 220px; overflow: auto; }
.cal-occ { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 8px; padding: 8px 10px; border-radius: 11px; background: #fafbfd; border: 1px solid var(--border-soft); font-size: 12.5px; }
.cal-occ b { font-weight: 750; }
.cal-occ span { color: var(--muted); }
.cal-occ i { font-style: normal; padding: 1px 8px; border-radius: 999px; background: var(--c-holiday-bg); color: var(--c-holiday-fg); font-size: 11.5px; }
.cal-runs { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--text-2); }
.cal-chiplist { display: flex; flex-wrap: wrap; gap: 5px; }
.cal-chiplist span { padding: 2px 9px; border-radius: 999px; background: #f1f4f8; font-size: 11.5px; color: var(--text-2); }
.cal-acts { display: flex; flex-wrap: wrap; gap: 8px; }
.cal-acts .btn { text-decoration: none; }

/* ─── Полоса «Эта неделя» над «Сводкой по этапам» ─── */
.cal-wk-strip { background: var(--panel); border: 1px solid var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-1); padding: 9px 12px 10px; }
.cal-wk-strip.is-loading { opacity: .7; }
.cal-ws-h { display: flex; align-items: center; gap: 9px; min-width: 0; }
.cal-ws-h > b { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; font-weight: 800; white-space: nowrap; }
.cal-ws-h > b svg { color: var(--accent); }
.cal-ws-h small { font-size: 12px; color: var(--muted); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.cal-ws-h small.bad { color: var(--err-deep); }
.cal-ws-tg { display: inline-flex; padding: 4px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel); color: var(--muted); cursor: pointer; }
.cal-ws-tg:hover { color: var(--accent); border-color: #c9d5ff; }
.cal-ws-go { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; color: var(--accent); text-decoration: none; white-space: nowrap; }
.cal-ws-go:hover { text-decoration: underline; }
.cal-ws-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; margin-top: 8px; }
.cal-ws-d { display: flex; flex-direction: column; gap: 5px; padding: 7px 8px; border-radius: 11px; border: 1px solid var(--border-soft); background: #fafbfd; text-decoration: none;
    color: inherit; min-width: 0; transition: border-color .12s, background .12s, box-shadow .12s; position: relative; }
.cal-ws-d:hover { border-color: #c9d5ff; background: #fff; box-shadow: var(--shadow-1); }
.cal-ws-d.today { border-color: #16202e; background: #fff; }
.cal-ws-d.tone-late { box-shadow: inset 0 3px 0 var(--err); }
.cal-ws-d.tone-hot { box-shadow: inset 0 3px 0 var(--warn); }
.cal-ws-d.tone-ahead { box-shadow: inset 0 3px 0 var(--accent); }
.cal-ws-d.tone-done { box-shadow: inset 0 3px 0 var(--ok); }
.cal-ws-dt { display: flex; align-items: baseline; gap: 5px; }
.cal-ws-dt small { font-size: 11px; font-weight: 750; text-transform: uppercase; color: var(--muted); letter-spacing: .3px; }
.cal-ws-dt b { font-size: 15px; font-weight: 800; color: var(--text); }
.cal-ws-d.wk .cal-ws-dt small, .cal-ws-d.wk .cal-ws-dt b { color: var(--err-deep); }
.cal-ws-dt .cal-dot { margin-left: auto; align-self: center; }
.cal-ws-hol { font-size: 10.5px; font-weight: 650; color: var(--c-holiday-fg); background: var(--c-holiday-bg); border-radius: 6px; padding: 1px 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-ws-cs { display: flex; flex-wrap: wrap; gap: 4px; }
.cal-ws-c { display: inline-flex; align-items: center; gap: 3px; padding: 1px 6px; border-radius: 999px; font-size: 11px; font-weight: 750; background: var(--cb, #eef1f6); color: var(--cf, var(--text-2)); }
.cal-ws-c.tone-ahead, .cal-ws-c.tone-done { --cb: var(--c-deadline-bg); --cf: var(--c-deadline-fg); }
.cal-ws-c.tone-done { --cb: var(--ok-soft); --cf: var(--ok-deep); }
.cal-ws-none { font-size: 11px; color: var(--faint); }
.cal-ws-ls { display: flex; flex-direction: column; gap: 3px; }
.cal-ws-l { display: flex; align-items: center; gap: 4px; padding: 2px 6px; border-radius: 6px; font-size: 11px; background: var(--cb, var(--c-deadline-bg)); color: var(--cf, var(--c-deadline-fg)); min-width: 0; }
.cal-ws-l i { font-style: normal; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.cal-ws-l b { flex: 0 0 auto; font-weight: 800; font-variant-numeric: tabular-nums; }
.cal-ws-l.tone-ahead { --cb: var(--c-deadline-bg); --cf: var(--c-deadline-fg); }
.cal-ws-l.more { background: none; color: var(--accent); font-weight: 700; padding-left: 2px; }

/* ─── Узкие экраны: «Ближайшие» уходят под сетку ─── */
@media (max-width: 1180px) {
    .cal-layout { grid-template-columns: minmax(0, 1fr); }
    .cal-side { position: static; max-height: none; }
    .cal-period { min-width: 150px; }
}
@media (max-width: 1366px) {
    .cal-top-r .btn-primary { padding: 6px 10px; }
    .cal-dd select { min-width: 120px; }
    .cal-ws-days { gap: 5px; }
}
