/* Стили, часть 9 из 12: нормы и выкуп, ПФ, вопросы покупателей, «Здоровье». Подключаются в base.html строго по порядку —
   от него зависит, какое правило главнее. Один base.css разбит 30.09.2026: Cloudflare
   отдавал файлы крупнее ~20 КБ обрезанными. Файл держать меньше 15 КБ. */

/* Откуда норма — серая подпись рядом с числом (п. 5). */
.norma-otkuda { color: var(--text-muted); font-size: var(--font-size-small); }

/* «% выкупа»: процент окна крупно, процент периода — серым под ним (п. 12). */
.vyk-period { display: block; color: var(--text-muted); font-size: var(--font-size-small); }
.vyk-magazin { color: var(--text-muted); font-size: var(--font-size-small); }

/* ПФ за день в окне рекламы (обратная связь 21.09.2026, п. 9). */
.adv-pf-podpis { color: var(--text-secondary); font-size: var(--font-size-small); }
.adv-pf-zapisi { margin: var(--space-2xs) 0; padding-left: var(--space-md); font-size: var(--font-size-small); }
.adv-pf-stroka { display: flex; gap: var(--space-xs); margin-bottom: var(--space-2xs); }
.adv-pf-stroka input { padding: 6px var(--space-xs); font: inherit;
    border: var(--border-width) solid var(--border-strong); border-radius: var(--r-sm);
    background: var(--bg-surface); }
.adv-pf-stroka [data-pf-model] { flex: 1; min-width: 0; }
.adv-pf-stroka [data-pf-n] { width: 80px; }
.adv-pf-knopki { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-xs); }
.adv-pf-oshibka { color: var(--state-bad-text); font-size: var(--font-size-small); }

/* Стратегия ставок кампании: тег и фильтр (обратная связь 21.09.2026, п. 10). */
.adv-tag-tip { background: var(--bg-canvas); color: var(--text-secondary); }
.adv-tip-filtr { display: flex; flex-wrap: wrap; gap: var(--space-2xs); margin: var(--space-sm) 0 var(--space-xs); }

/* Окно «Внести ПФ» (обратная связь 21.09.2026, п. 9). */
.pf-okno { z-index: 70; }  /* поверх окна дня (.advw — 60) */
.pf-okno-window { max-width: 560px; height: auto; max-height: 90vh; }
.pf-okno-body { padding: var(--space-md); overflow-y: auto; }
.pf-okno-den { display: block; margin-bottom: var(--space-sm); }
.pf-okno-zapisi { margin: var(--space-xs) 0; padding: 0; list-style: none; }
.pf-okno-model { flex: 1; min-width: 0; }
.pf-okno-zapisi [data-pf-n] { width: 80px; }
.advc-pf { margin-top: var(--space-xs); width: 100%; }
/* Шаблон ПФ, расписание и последние 14 дней (22.09.2026). */
.pf-okno-zapomnit { font-size: var(--font-size-small); color: var(--text-secondary); }
.pf-okno-dni { margin: var(--space-xs) 0; padding: 0; list-style: none; font-size: var(--font-size-small); }
.pf-okno-dni li { display: flex; align-items: center; gap: var(--space-xs); padding: 2px 0; }
.pf-okno-dni .pf-den-knopka { min-width: 110px; text-align: left; }
.pf-okno-dni .pf-den-n { flex: 1; color: var(--text-secondary); }
.pf-shablon { margin-top: var(--space-md); }
.pf-shablon summary { cursor: pointer; font-weight: 600; }
.pf-shablon-raspisanie { display: flex; flex-wrap: wrap; gap: var(--space-sm); font-size: var(--font-size-small); }
.pf-shablon-raspisanie select, .pf-shablon-raspisanie input { font: inherit; }
.pf-shablon-raspisanie .pf-shablon-n { width: 56px; }
.pf-okno-raspisanie { margin-left: var(--space-xs); color: var(--text-secondary); font-size: var(--font-size-small); }

/* Фильтры советов (п. 4) и тег «вне оборота» (п. 15). */
.anl-filtr { display: flex; flex-wrap: wrap; gap: var(--space-sm) var(--space-md);
    align-items: flex-start; margin: var(--space-sm) 0; font-size: var(--font-size-small); }
.anl-filtr fieldset { margin: 0; padding: 0; border: 0; display: flex; flex-wrap: wrap;
    gap: var(--space-2xs) var(--space-xs); align-items: center; }
.anl-filtr legend { float: left; margin-right: var(--space-xs); color: var(--text-muted); }
.anl-filtr input[type="text"] { padding: 3px var(--space-xs); font: inherit;
    border: var(--border-width) solid var(--border-strong); border-radius: var(--r-sm); }
.anl-filtr-itog { flex-basis: 100%; margin: 0; color: var(--text-muted); }
.anl-tag-vne { background: var(--bg-canvas); color: var(--text-muted); }

/* Модели вне оборота — серым, свёрнутым блоком внизу (п. 15). */
.vne-oborota { margin-top: var(--space-md); color: var(--text-muted); }
.vne-oborota > summary { cursor: pointer; font-size: var(--font-size-small); }
.vne-oborota td, .vne-oborota .logistics-model { color: var(--text-muted); }
.status-modeli { display: inline-block; margin-left: var(--space-xs); }
.status-modeli select { font: inherit; font-size: var(--font-size-small); padding: 1px 4px;
    border: var(--border-width) solid var(--border-strong); border-radius: var(--r-sm);
    background: var(--bg-surface); color: var(--text-secondary); }

/* Плитки-ссылки над «Разбором дня» (обратная связь 21.09.2026, п. 14). */
.anl-plitki { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: var(--space-sm); margin: var(--space-md) 0; }
.anl-plitka { display: flex; flex-direction: column; gap: var(--space-2xs);
    padding: var(--space-sm) var(--space-md); border: var(--border-width) solid var(--line);
    border-radius: var(--r-card); background: var(--bg-surface); color: inherit; text-decoration: none; }
.anl-plitka b { font-size: var(--font-size-title); line-height: 1; }
.anl-plitka span { color: var(--text-secondary); font-size: var(--font-size-small); }
.anl-plitka:hover { border-color: var(--border-strong); }

/* Под-вкладки объединённых вкладок (обратная связь 21.09.2026, п. 14). */
.podvkladki { display: flex; flex-wrap: wrap; gap: var(--space-2xs); padding: var(--space-sm) var(--space-md) 0; }
.podvkladki a { padding: 4px 14px; border: var(--border-width) solid var(--border-strong);
    border-radius: var(--r-pill); color: var(--text-secondary); text-decoration: none;
    font-size: var(--font-size-small); background: var(--bg-surface); }
.podvkladki a.active { background: var(--bg-inverse); color: var(--text-on-inverse); border-color: var(--bg-inverse); }

/* Заказы по данным Ozon в окне дня (22.09.2026). */
.advn-ozon { margin: var(--space-sm) 0 0; color: var(--text-secondary); font-size: var(--font-size-small); }

/* Ставка и бюджет у кампании, отметки изменений на графике (22.09.2026). */
.adv-nastroyki { display: block; color: var(--text-muted); font-size: var(--font-size-small); }
.advl-otmetka { stroke: var(--border-strong); stroke-dasharray: 3 3; }
.advl-izmeneniya { margin: var(--space-2xs) 0 0; padding-left: var(--space-md);
    color: var(--text-secondary); font-size: var(--font-size-small); }

/* Вопросы покупателей: список и черновики ответов (23.09.2026). */
.vop-spisok { margin: var(--space-md) 0 0; padding: 0; list-style: none; }
.vop-stroka { position: relative; padding: var(--space-sm) 0; border-top: var(--border-width) solid var(--border); }
.vop-otvechen { opacity: 0.6; }
.vop-shapka { display: flex; flex-wrap: wrap; gap: var(--space-xs);
    align-items: baseline; margin: 0 0 var(--space-2xs); font-size: var(--font-size-small); }
.vop-reshenie { margin-left: auto; color: var(--text-secondary); }
.vop-vopros { margin: 0 0 var(--space-xs); }
.vop-chernovik { width: 100%; padding: var(--space-xs); font: inherit;
    border: var(--border-width) solid var(--border-strong); border-radius: var(--r-sm);
    background: var(--bg-surface); }
.vop-otvechen-servisom { margin: 0 0 var(--space-2xs); color: var(--text-secondary);
    font-size: var(--font-size-small); }
.vop-cheloveku { margin: 0 0 var(--space-xs); color: var(--state-bad-text);
    font-size: var(--font-size-small); }
.vop-knopki { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin: var(--space-2xs) 0 0; }

/* Страница ввода ключей ролей (23.09.2026): крупные поля, шаги словами. */
.klyuchi-kak { margin: var(--space-sm) 0; padding-left: var(--space-md); }
.klyuchi-kak li { margin-bottom: var(--space-2xs); }
.klyuchi-magazin { margin-top: var(--space-lg); padding-top: var(--space-sm);
    border-top: var(--border-width) solid var(--border); }
.klyuchi-para { margin-bottom: var(--space-sm); }
.klyuchi-para label { display: block; margin-bottom: var(--space-2xs); }
.klyuchi-para input { display: block; width: 100%; max-width: 560px; padding: var(--space-xs);
    font: inherit; border: var(--border-width) solid var(--border-strong);
    border-radius: var(--r-sm); background: var(--bg-surface); }
.klyuchi-itog { color: var(--text-secondary); }
.klyuchi-novyy { margin: var(--space-md) 0; padding: var(--space-sm);
    border: var(--border-width) solid var(--border-strong); border-radius: var(--r-sm); }
.klyuchi-znachenie code { font-size: var(--font-size-small); word-break: break-all; }
.klyuchi-tablica { width: 100%; margin: var(--space-sm) 0; font-size: var(--font-size-small); }
.klyuchi-tablica th { text-align: left; color: var(--text-secondary); font-weight: 500; }
.klyuchi-vydat { display: flex; flex-wrap: wrap; gap: var(--space-sm); align-items: flex-end; }
.vop-skryt { position: absolute; top: var(--space-xs); right: 0; padding: 0 var(--space-xs);
    font-size: 20px; line-height: 1; color: var(--text-muted); background: none;
    border: 0; cursor: pointer; }
.vop-skryt:hover { color: var(--text-primary); }
.vop-arhiv { margin-top: var(--space-md); }
.vop-arhiv summary { cursor: pointer; color: var(--text-secondary); }
.vop-podvkladki { margin-bottom: var(--space-sm); }
.vop-filtr { display: flex; flex-wrap: wrap; gap: var(--space-sm); align-items: flex-end;
    margin: var(--space-sm) 0; font-size: var(--font-size-small); }
.vop-ocenka { font-weight: 600; }
.vop-zhaloby { width: 100%; margin: var(--space-sm) 0; font-size: var(--font-size-small); }
.vop-zhaloby caption { text-align: left; color: var(--text-secondary); padding-bottom: var(--space-2xs); }
.vop-zhaloby th { text-align: left; font-weight: 500; color: var(--text-secondary); }

/* --- Здоровье: календарь заданий (23.09.2026) --- */
.zd-head { display: flex; justify-content: space-between; align-items: flex-start;
    gap: var(--space-md); flex-wrap: wrap; }
.zd-podzagolovok { color: var(--text-secondary); font-size: var(--font-size-small);
    margin: var(--space-2xs) 0 0; }
.zd-mesyac { display: flex; align-items: center; gap: var(--space-xs);
    font-size: var(--font-size-small); }
.zd-mesyac .is-off { color: var(--text-muted); }
.zd-itog-mesyaca { margin-left: var(--space-sm); color: var(--text-secondary); }
.zd-telo { display: flex; gap: var(--space-md); align-items: flex-start;
    margin-top: var(--space-sm); flex-wrap: wrap; }
.zd-kalendar-obertka { flex: 1 1 560px; overflow-x: auto; }
.zd-kalendar { border-collapse: collapse; width: 100%; font-size: var(--font-size-small);
    table-layout: fixed; }
.zd-kalendar th:first-child, .zd-kalendar td:first-child { width: 56px; }
.zd-kalendar th, .zd-kalendar td { border: 1px solid var(--border-strong);
    padding: var(--space-2xs) var(--space-xs); text-align: center; }
.zd-kalendar thead th { font-weight: 500; color: var(--text-secondary);
    vertical-align: bottom; }
/* Подписи столбцов длинные, а столбцов тринадцать: пишем их снизу вверх,
   иначе они налезают друг на друга (проверено на стенде 23.09.2026). */
.zd-kalendar thead th span { display: inline-block; writing-mode: vertical-rl;
    transform: rotate(180deg); line-height: 1.1; max-height: 130px;
    font-size: var(--font-size-table-head); font-weight: 500; }
.zd-kalendar thead th { padding: var(--space-xs) 2px; vertical-align: bottom; }
.zd-kletka i { display: block; font-style: normal; font-size: 10px;
    color: var(--text-muted); }
.zd-proshlo { background: var(--state-good-bg); color: var(--state-good-text); }
.zd-upalo { background: var(--state-bad-bg); color: var(--state-bad-text);
    cursor: pointer; }
.zd-net { color: var(--text-muted); }
/* Пропущено намеренно — не поломка, поэтому спокойный жёлтый. */
.zd-propusk { background: var(--state-warn-bg); color: var(--state-warn-text); }
