/* С-285 (модуль G-UI) · SPEC-156, С-313 G · SPEC-160 §12: экраны вкладки «Препродакшн» (сервис «Препродакшн»; разделы проекта — в цветах своих
   сервисов через токены --service, --service-soft, --service-ink, --service-on, --service-line) поверх styles.css (токены,
   кнопки, поля, плашки брендбука v1.2), crew.css (карточки, сетки) и shell.css (цвета сервисов). Шрифты: Unbounded для заголовков,
   Manrope для текста; цвет сервиса — полоса 4 px, значок, выбранная вкладка, surface и ink; название сервиса всегда рядом с цветом.
   Контролы ≥ 44 px, радиус 8, фокус — синяя рамка 3 px. Числа — моноширинные цифры (`tabular-nums`). Телефон 375 px: страница не
   прокручивается по горизонтали, широкие таблицы — в своём контейнере `.pp-scroll`. Печатная форма КПП — в конце файла (@media print). */

/* ---------- С-313 G: цвет раздела — токены сервиса ----------
   Контейнер проекта несёт токены своего сервиса; атрибут data-service ставит оболочка по экрану (planning | budget | preproduction), группа вкладок
   переопределяет их локально. HEX здесь нет: значения берутся из shell.css (брендбук v1.2, brandbook/services.mjs). */
.pp,.pp[data-service=preproduction],.pp-tab-group[data-service=preproduction]{--service:var(--kd-service-preprod-accent);--service-soft:var(--kd-service-preprod-surface);--service-ink:var(--kd-service-preprod-ink);--service-on:var(--kd-service-preprod-on-accent);--service-line:var(--kd-service-preprod-line)}
.pp[data-service=planning],.pp-tab-group[data-service=planning]{--service:var(--kd-service-planning-accent);--service-soft:var(--kd-service-planning-surface);--service-ink:var(--kd-service-planning-ink);--service-on:var(--kd-service-planning-on-accent);--service-line:var(--kd-service-planning-line)}
.pp[data-service=budget],.pp-tab-group[data-service=budget]{--service:var(--kd-service-budget-accent);--service-soft:var(--kd-service-budget-surface);--service-ink:var(--kd-service-budget-ink);--service-on:var(--kd-service-budget-on-accent);--service-line:var(--kd-service-budget-line)}

.pp{min-width:0}
.pp-screen,.pp-body,.pp-chrome{min-width:0}
.pp-screen>*+*{margin-top:16px}
.pp-flash:not(:empty){margin:0 0 16px}
.pp-flash .notice{margin:0}
.pp-ok{background:var(--service-soft);border-color:var(--service);color:var(--service-ink);font-weight:600}
.pp .eyebrow{color:var(--service-ink)}
.pp-row{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.pp-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pp-tags .tag{white-space:normal}
.pp-num{font-variant-numeric:tabular-nums}
.pp-sub{display:block;margin-top:2px;font-size:.75rem;line-height:1.35;font-weight:600;color:var(--kd-color-muted)}
.pp-missing{font-weight:700;color:var(--kd-status-warning-ink)}

/* ---------- Заголовок, плашка сервиса, вкладки ---------- */
.pp-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;margin:6px 0 20px;padding:2px 0 2px 16px;border-left:4px solid var(--service)}
.pp-head-text{flex:1 1 320px;min-width:0}
.pp-head-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.pp-head h1{margin:4px 0 0;overflow-wrap:anywhere}
.pp-service{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:3px 12px 3px 3px;border-radius:var(--kd-radius-control);background:var(--service-soft);color:var(--service-ink);font-size:.8125rem;font-weight:800;line-height:1.2;white-space:nowrap}
.pp-service-mark{display:inline-grid;place-items:center;flex:0 0 auto;width:26px;height:26px;border-radius:6px;background:var(--service);color:var(--service-on)}
.pp-service-mark svg{display:block}
.pp-project-head{margin-bottom:0}
.pp-project-head .pp-head{margin-bottom:12px}
.pp-tabs{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 28px;margin:0 0 20px;padding:0;border-bottom:1px solid var(--kd-color-line)}
.pp-tab-group{display:flex;flex-wrap:wrap;align-items:flex-end;gap:0 4px;min-width:0}
.pp-tab-group-label{display:flex;align-items:center;gap:6px;flex:0 0 100%;padding:0 0 2px 2px;font-size:.6875rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--service-ink)}
.pp-tab-group-label::before{content:"";flex:0 0 auto;width:10px;height:10px;border-radius:3px;background:var(--service)}
.pp-tabs a{display:inline-flex;align-items:center;min-height:var(--kd-control-h);margin-bottom:-1px;padding:0 14px;border-bottom:3px solid transparent;color:var(--kd-color-muted);font-weight:700;text-decoration:none}
.pp-tabs a:hover{color:var(--kd-color-ink)}
.pp-tabs a[aria-current=page]{color:var(--service-ink);border-bottom-color:var(--service)}

/* Ссылка в виде кнопки: тот же размер и вид, что у `button`. */
.pp-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--kd-control-h);padding:0 var(--kd-control-px);border:1px solid var(--kd-color-border);border-radius:var(--kd-radius-control);background:var(--kd-color-white);color:var(--kd-color-ink);font-size:.9375rem;font-weight:700;line-height:1.2;text-align:center;text-decoration:none;white-space:nowrap}
.pp-btn:hover{background:var(--kd-color-surface);border-color:var(--kd-color-ink);color:var(--kd-color-ink)}
.pp-btn.primary{background:var(--kd-action-accent);border-color:var(--kd-action-accent);color:var(--kd-action-on);font-weight:800}
.pp-btn.primary:hover{background:var(--kd-action-hover);border-color:var(--kd-action-hover);color:var(--kd-action-on)}
.pp-btn.quiet{background:transparent;border-color:transparent;color:var(--kd-color-muted);padding:0 12px}
.pp-btn.quiet:hover{background:var(--kd-color-hover);border-color:transparent;color:var(--kd-color-ink)}

/* ---------- Карточки, проекты, настройки ---------- */
.pp-card>h2{margin-top:0}
.pp-card h3{margin-top:20px}
.pp-create-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;gap:12px 16px;align-items:end}
.pp-projects{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.pp-projects .crew-card+.crew-card{margin-top:0}
.pp-project{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 20px;align-items:center}
.pp-project-title{margin:0 0 8px;font-size:1.125rem;overflow-wrap:anywhere}
.pp-project .crew-actions{margin-top:0;justify-content:flex-end}
.pp-project .pp-rename{grid-column:1}
.pp-rename{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end}
.pp-rename .crew-field{flex:1 1 260px}
.pp-rename input{min-width:0}
.pp-settings{margin:0 0 12px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-settings>summary{padding:0 16px;color:var(--service-ink)}
.pp-settings-body{display:flex;flex-direction:column;gap:20px;padding:4px 16px 16px}
.pp-settings-body h3{margin:0 0 6px}
.pp-ai-warning{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.pp-ai-warning .notice{margin:0}
.pp-danger{padding-top:16px;border-top:1px solid var(--kd-color-line)}

/* ---------- Таблицы: своя прокрутка, страница не растягивается ---------- */
.pp-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;container-type:inline-size}
.pp-table{min-width:560px}
.pp-table th,.pp-table td{overflow-wrap:break-word}
.pp-table td>*+*{margin-top:4px}
.pp-libretto{min-width:1280px}
.pp-libretto td:nth-child(n+3):nth-child(-n+7){white-space:nowrap}
.pp-libretto td:nth-child(11){min-width:130px}
.pp-parts{min-width:620px}
.pp-analytics{min-width:640px}
.pp-col-check{width:44px}
.pp-col-empty{width:0;padding:0}
.pp-col-act{min-width:150px}
.pp-col-act>button+button{margin-left:4px}
.pp-table td.pp-col-act{white-space:normal}
.pp-scene-toggle{min-height:36px;padding:0 8px;font-weight:800;color:var(--service-ink);white-space:normal;text-align:left}
.pp-scene-toggle[aria-expanded=true]{background:var(--service-soft)}
.pp-synopsis{min-width:200px;max-width:340px}
.pp-items{min-width:220px;max-width:320px}
.pp-cat{margin:0 0 4px;font-size:.8125rem;line-height:1.4}
.pp-item-proposed{font-style:italic;color:var(--kd-status-warning-ink)}
.pp-row-omitted>td{opacity:.55}
.pp-row-omitted .pp-synopsis span{text-decoration:line-through}
tr.pp-row-unconfirmed>td:first-child{box-shadow:inset 3px 0 0 var(--service)}
tr.pp-detail>td{padding:0;background:var(--service-soft)}
.pp-detail-body{display:flex;flex-direction:column;gap:16px;padding:16px;min-width:0;position:sticky;left:0;width:100cqw;box-sizing:border-box}
.pp-detail-body>*{min-width:0}
.pp-block>h3{margin:0 0 8px;font-size:.9375rem;color:var(--service-ink)}
.pp-item-row-rejected>td{opacity:.6}
.pp-item-edit>td{background:var(--kd-color-white)}
.pp-group>td:first-child{min-width:160px}
.pp-day-off>td{background:var(--kd-color-fill);color:var(--kd-color-muted)}
.pp-details{padding:0 16px}
.pp-details>summary{color:var(--service-ink)}
.pp-details>*:not(summary){margin-bottom:16px}

/* ---------- Панели действий ---------- */
.pp-toolbar,.pp-filters,.pp-bulk{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.pp-bulk{margin:12px 0;padding:10px 12px;border:1px solid var(--service-line);border-radius:var(--kd-radius-control);background:var(--service-soft)}
.pp-bulk-count{font-weight:800;color:var(--service-ink)}
.pp-summary{margin:0 0 8px}
.pp-preview-host:empty{display:none}
.pp-preview{border-left:4px solid var(--service);background:var(--service-soft)}
.pp-preview .notice{margin:0 0 12px}
.pp-preview .crew-kv{margin:12px 0}
.pp-impact-items ul{margin:6px 0 0}
.pp-vanish{margin-top:12px}
.pp-vanish>h3,.pp-vanish-details>summary{margin:0 0 8px;font-size:.9375rem;font-weight:800;color:var(--service-ink)}
.pp-vanish-details>summary{display:flex;align-items:center;min-height:44px;margin:0;cursor:pointer}
.pp-vanish-body{max-height:min(50vh,420px);overflow:auto;padding:4px 12px 8px;border:1px solid var(--service-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-vanish-scene+.pp-vanish-scene{margin-top:8px}
.pp-vanish-scene h4{margin:8px 0 4px;font-size:.8125rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--kd-color-muted)}
.pp-vanish-scene ul{margin:0;padding-left:20px}
.pp-vanish-scene li{overflow-wrap:anywhere}
.pp-vanish-body>p{margin:8px 0 0}
.pp-vanish-note{margin:0 0 8px}
.pp-vanish-problem{margin-top:8px}
.pp-vanish-problem .crew-out{margin:0 0 8px}
.pp-vanish-problem .crew-actions{margin-top:0}
.pp-fields-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px 16px;align-items:start}
.pp-fields-grid .crew-field.wide{grid-column:1/-1}
.pp-fields .crew-actions,.pp-item-form .crew-actions{margin-top:12px}
.pp-note-form{display:flex;flex-wrap:wrap;gap:8px 12px;margin-top:12px}
.pp-note-form input{flex:1 1 260px;min-width:0}
.pp-upload .crew-actions{margin-top:12px}
.pp-inline-actions{margin-top:0}

/* ---------- Либретто: основание позиции ---------- */
.pp-evidence-box{background:var(--kd-color-white);border-left:4px solid var(--service)}
.pp-quote{margin:8px 0;padding:8px 12px;border-left:3px solid var(--service-line);background:var(--service-soft);font-size:.9375rem;overflow-wrap:anywhere}
.pp-lines{max-height:320px;overflow:auto;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white);font-size:.8125rem;line-height:1.5}
.pp-line{display:grid;grid-template-columns:52px minmax(0,1fr);gap:8px;padding:2px 8px}
.pp-line.hit{background:var(--service-soft);font-weight:700}
.pp-lineno{text-align:right;color:var(--kd-color-muted);font-variant-numeric:tabular-nums}
.pp-line span:last-child{overflow-wrap:anywhere;white-space:pre-wrap}

/* С-324: экран «Сценарий» — «Загруженный сценарий», «Что в проекте» и «Текст вне сцен» в один ряд. Ширина — по контейнеру экрана
   (`.pp-script-row`, не по окну: рядом может быть панель Пети): уже 1000 px — две колонки («Текст вне сцен» на всю ширину), уже 680 px —
   друг под другом. Блоки ниже ряда — на всю ширину. */
.pp-script-row{container-type:inline-size;min-width:0}
.pp-script-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.25fr);gap:16px;align-items:start}
.pp-script-top>*{min-width:0;margin:0}
.pp-script-top>.crew-card+.crew-card,.pp-script-top>.crew-empty+.crew-card{margin-top:0}
.pp-script-top .crew-kv{grid-template-columns:minmax(0,auto) minmax(0,1fr)}
.pp-script-row+*,*+.pp-script-row{margin-top:16px}
@container (max-width:999px){.pp-script-top{grid-template-columns:repeat(2,minmax(0,1fr))}.pp-script-top>:nth-child(3){grid-column:1/-1}}
@container (max-width:679px){.pp-script-top{grid-template-columns:minmax(0,1fr)}.pp-script-top>:nth-child(3){grid-column:auto}}

/* ---------- Разметка сцен: нераспознанные фрагменты и правка границ ---------- */
.pp-fragments{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.pp-fragments-ignored{margin-top:16px}
.pp-fragments-ignored>summary,.pp-fragment-text>summary{display:flex;align-items:center;min-height:44px;cursor:pointer;font-weight:700;color:var(--service-ink)}
.pp-fragment{display:flex;flex-direction:column;gap:8px;min-width:0;padding:12px 14px;border:1px solid var(--service-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-fragment-head{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.pp-fragment .crew-actions{margin-top:0}
.pp-fragment .pp-lines{margin-top:4px}
.pp-bounds:empty{display:none}
.pp-bounds{margin-top:12px}
.pp-bounds-bar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 8px}
.pp-bounds-status{margin:0 0 8px}
.pp-bounds-list{max-height:min(60vh,520px);overflow:auto;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white);font-size:.8125rem;line-height:1.5}
.pp-bline{display:grid;grid-template-columns:52px minmax(0,1fr);gap:0 8px;align-items:start;width:100%;min-height:28px;margin:0;padding:3px 8px;border:0;border-top:2px solid transparent;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--kd-color-muted);font:inherit;text-align:left;cursor:pointer}
.pp-bline.inside{background:var(--service-soft);color:var(--kd-color-ink)}
.pp-bline.first{border-top-color:var(--service)}
.pp-bline.last{border-bottom-color:var(--service)}
.pp-bline:hover{background:var(--service-line);color:var(--kd-color-ink)}
.pp-bline.selected,.pp-bline.selected:hover{background:var(--service);color:var(--service-on);font-weight:700}
.pp-bline.selected .pp-lineno,.pp-bline.selected .pp-bmark{color:inherit}
.pp-btext{overflow-wrap:anywhere;white-space:pre-wrap}
.pp-bmark{grid-column:2;font-size:.6875rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--service-ink)}
.pp-bounds-gap{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:8px;border-top:1px dashed var(--kd-color-line);border-bottom:1px dashed var(--kd-color-line);background:var(--kd-color-white)}

/* ---------- Сводки и карточки-числа ---------- */
.pp-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
.pp-stat{display:flex;flex-direction:column;gap:4px;min-width:0;padding:14px 16px;border:1px solid var(--service-line);border-radius:var(--kd-radius-control);background:var(--service-soft)}
.pp-stat-label{font-size:.6875rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--service-ink)}
.pp-stat-value{font-family:var(--kd-font-display);font-size:1.375rem;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.pp-stat small{font-size:.8125rem;line-height:1.4;color:var(--kd-color-muted)}
.pp-scene-links{display:inline-flex;flex-wrap:wrap;gap:4px 8px}
.pp-scene-links a{font-weight:700;color:var(--service-ink)}
.pp-sub-table{margin-top:12px}

/* ---------- КПП ---------- */
.pp-shifts{display:flex;flex-direction:column;gap:12px}
.pp-shift{padding:16px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-shift-locked{border-color:var(--service);box-shadow:inset 3px 0 0 var(--service)}
.pp-shift-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;margin-bottom:8px}
.pp-shift-head h3{margin:0;font-size:1rem}
.pp-load{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-bottom:8px}
.pp-load meter{width:160px;height:14px}
.pp-load-text{font-size:.875rem;font-weight:700;font-variant-numeric:tabular-nums}
.pp-load-over{color:var(--kd-status-error-ink)}
.pp-load-full{color:var(--kd-status-warning-ink)}
.pp-conflicts{display:flex;flex-direction:column;gap:12px;margin:12px 0 0;padding:0;list-style:none}
.pp-conflicts li{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;padding:12px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-status-warning-surface)}
.pp-conflicts li>span{flex:1 1 280px;min-width:0}
.pp-check input{margin:0}

/* ---------- Вводные ---------- */
.pp-accepted,.pp-entry-list{margin:0;padding:0;list-style:none}
.pp-accepted li,.pp-entry-list li{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--kd-color-line)}
.pp-accepted li:last-child,.pp-entry-list li:last-child{border-bottom:0}
.pp-accepted blockquote{flex:1 1 100%;margin:4px 0 0}
.pp-chat-result>*+*,.pp-entries>*{margin-top:16px}
.pp-question .crew-actions{margin-top:12px}
.pp-question button[aria-pressed=true]{background:var(--service);border-color:var(--service);color:var(--service-on)}

/* ---------- AI-задания: панель, карточка задания, предложения ---------- */
.pp-ai-action{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:16px;padding:12px 14px;border:1px solid var(--service-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-ai-action>p{margin:0}
.pp-ai-action .crew-actions{margin-top:0}
.pp-ai-scenes{width:100%}
.pp-ai-scenes>summary{display:flex;align-items:center;min-height:44px;cursor:pointer;font-weight:700;color:var(--service-ink)}
.pp-ai-scene-list{display:flex;flex-direction:column;max-height:min(40vh,320px);overflow:auto;margin-top:8px;padding:4px 8px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-ai-scene{display:flex;align-items:center;gap:8px;min-height:36px;overflow-wrap:anywhere}
.pp-ai-job{border-left:4px solid var(--service)}
.pp-ai-job-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 4px}
.pp-ai-job-head h2{margin:0}
.pp-ai-meta{margin:8px 0}
.pp-ai-meta p{margin:0 0 4px;font-variant-numeric:tabular-nums}
.pp-ai-wait{margin:8px 0}
.pp-ai-halt{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:8px 0;padding:10px 12px;border:1px solid var(--service-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-ai-halt>p{margin:0}
.pp-ai-halt .crew-actions{margin-top:0}
.pp-ai-job h3{margin:16px 0 8px}
.pp-ai-group{margin-top:16px}
.pp-ai-group h4{margin:0 0 8px;font-size:.8125rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--service-ink)}
.pp-ai-group h4 a{color:inherit}
.pp-ai-list{margin:0;padding:0;list-style:none}
.pp-ai-row{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--kd-color-line)}
.pp-ai-row:last-child{border-bottom:0}
.pp-ai-row.applied{opacity:.7}
.pp-ai-pick{display:flex;flex:1 1 280px;min-width:0;align-items:flex-start;gap:8px}
.pp-ai-pick input{flex:0 0 auto;margin-top:3px}
.pp-ai-text{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}
.pp-ai-kind{font-size:.6875rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--kd-color-muted)}
.pp-ai-detail{font-size:.875rem;color:var(--kd-color-muted)}
.pp-ai-row blockquote{flex:1 1 100%;margin:4px 0 0}

.pp-d1>td:first-child{padding-left:24px}
.pp-d2>td:first-child{padding-left:40px}
.pp-d3>td:first-child{padding-left:56px}
.pp-fold{min-height:36px;padding:0 6px;white-space:normal;text-align:left;font-weight:800;color:var(--service-ink)}
.pp-fold::before{content:'';flex:0 0 auto;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform var(--kd-motion-fast)}
.pp-fold[aria-expanded=true]::before{transform:rotate(45deg)}
.pp-b[hidden]{display:none}
.pp-compare-result>*+*{margin-top:16px}
.pp-compare-result h3{margin-bottom:0}

/* ---------- Фокус ---------- */
.pp a:focus-visible,.pp button:focus-visible,.pp summary:focus-visible,.pp input:focus-visible,.pp select:focus-visible,.pp textarea:focus-visible{outline:3px solid var(--kd-color-focus);outline-offset:3px}

/* ---------- Узкий экран: 375 px без горизонтальной прокрутки страницы ---------- */
@media (max-width:760px){
  .pp-head{padding-left:12px;gap:10px}
  .pp-head-text{flex-basis:100%}
  .pp-tabs a{padding:0 10px;font-size:.875rem}
  .pp-create-grid{grid-template-columns:minmax(0,1fr)}
  .pp-project{grid-template-columns:minmax(0,1fr)}
  .pp-project .crew-actions{justify-content:flex-start}
  .pp-shift{padding:12px}
  .pp-detail-body{padding:12px}
  .pp-stats{grid-template-columns:minmax(0,1fr)}
  .pp-load meter{width:100%}
  .pp-bulk .pp-bulk-count{flex:1 1 100%}
  .pp-bulk button{flex:1 1 auto}
  .pp-btn{white-space:normal}
  .pp-bline{min-height:40px}
  .pp-bounds-bar button{flex:1 1 100%}
}

/* ---------- Печатная форма КПП (FR-PP-43, Б.3): экран ---------- */
.pp-print{min-width:0}
.pp-print-bar{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:0 0 16px}
.pp-print-bar p{flex:1 1 320px;margin:0}
.pp-sheet-scroll{max-width:100%;overflow-x:auto;padding-bottom:8px}
.pp-sheet{min-width:1480px;padding:16px;background:#FFFFFF;border:1px solid var(--kd-color-line);color:#000000;font-family:Manrope,Arial,sans-serif}
.pp-sheet-title{margin:0 0 6px;font-family:var(--kd-font-display);font-size:1.125rem;font-weight:600;line-height:1.3;letter-spacing:-.01em;color:#000000}
.pp-sheet-period{margin:0 0 12px;font-size:.9375rem;font-weight:700}
.pp-kpp{width:100%;table-layout:fixed;border-collapse:collapse;font-size:11px;line-height:1.3;font-variant-numeric:tabular-nums}
.pp-kpp th{padding:4px;border:1px solid #6B6B6B;background:#FFFFFF;color:#000000;font-size:11px;font-weight:800;letter-spacing:0;text-transform:none;text-align:center;vertical-align:middle;overflow-wrap:anywhere}
.pp-kpp td{padding:3px 4px;border:1px solid #6B6B6B;vertical-align:top;overflow-wrap:anywhere}
.pp-kpp col.pp-w-s{width:3.33%}
.pp-kpp col.pp-w-m{width:7.34%}
.pp-kpp col.pp-w-l{width:11.8%}
.pp-kpp col.pp-w-xl{width:12.11%}
.pp-kpp col.pp-w-xxl{width:12.05%}
.pp-kpp-shift>td{background:#CCC0DA;font-size:12px;font-weight:800;vertical-align:middle}
.pp-kpp-shift>td.pp-kpp-date{font-size:14px}
.pp-kpp-shift>td.pp-kpp-note{background:#FFFF00;font-size:10px}
.pp-kpp-off>td{height:33pt;background:#A5A5A5;font-size:12px;font-weight:800;vertical-align:middle}
.pp-kpp-off>td.pp-kpp-date{font-size:14px}
.pp-kpp-off>td.pp-kpp-note{background:#FFFF00;font-size:10px}
.pp-kpp-scene>td.pp-kpp-num{font-size:12px;text-align:center}
.pp-kpp-scene>td.pp-kpp-txt{font-size:11px}
.pp-kpp-scene>td.pp-kpp-small{font-size:10px}
.pp-kpp-line{margin:0 0 2px}
.pp-kpp-line strong{font-weight:800}

/* Лист A2 альбомный по геометрии эталона (AC-PP-26, приложение Б.3; печать на A3 — масштабом принтера). Страница именованная: размер действует только у печатной формы КПП (`.pp-sheet`), прочая печать кабинета не меняется. */
@page pp-kpp{size:A2 landscape;margin:8mm;@bottom-center{content:counter(page);font-family:Manrope,Arial,sans-serif;font-size:8pt}}

@media print{
  /* Чужое — прочь: остаётся только лист КПП. Режим включает код печатного вида (`body.pp-printing`). */
  body.pp-printing{display:block;min-height:0;background:#FFFFFF;overflow:visible}
  body.pp-printing .kd-top,body.pp-printing .kd-footer,body.pp-printing .kd-test,body.pp-printing .kd-skip,body.pp-printing #crew-limit,
  body.pp-printing .kd-service-tabs,body.pp-printing .pp-chrome,body.pp-printing .pp-flash,body.pp-printing .pp-noprint{display:none!important}
  body.pp-printing .kd-main{max-width:none;padding:0}
  body.pp-printing .pp-sheet-scroll{overflow:visible;padding:0}
  body.pp-printing .pp-sheet{page:pp-kpp;min-width:0;width:100%;padding:0;border:0;font-size:8pt}
  body.pp-printing .pp-sheet-title{font-size:13pt}
  body.pp-printing .pp-sheet-period{font-size:10pt}
  body.pp-printing .pp-kpp{font-size:7.5pt}
  body.pp-printing .pp-kpp th{font-size:8pt}
  body.pp-printing .pp-kpp-shift>td{font-size:9pt}
  body.pp-printing .pp-kpp-shift>td.pp-kpp-date,body.pp-printing .pp-kpp-off>td.pp-kpp-date{font-size:11pt}
  body.pp-printing .pp-kpp-shift>td.pp-kpp-note,body.pp-printing .pp-kpp-off>td.pp-kpp-note{font-size:7.5pt}
  body.pp-printing .pp-kpp-scene>td.pp-kpp-num{font-size:9pt}
  body.pp-printing .pp-kpp-scene>td.pp-kpp-txt{font-size:8pt}
  body.pp-printing .pp-kpp-scene>td.pp-kpp-small{font-size:7.5pt}
  /* Шапка таблицы — только на первой странице, как в эталоне; строки не рвутся между листами. */
  body.pp-printing .pp-kpp thead{display:table-row-group}
  body.pp-printing .pp-kpp tr{break-inside:avoid;page-break-inside:avoid}
  body.pp-printing .pp-kpp-shift,body.pp-printing .pp-kpp-off{break-after:avoid;page-break-after:avoid}
  body.pp-printing .pp-sheet,body.pp-printing .pp-sheet *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ---------- С-313 G: плашка «скрыто», шапка проекта, «Требует внимания», история, участники, диалоги ---------- */
/* Поле, скрытое признаком участника (FR-PM-16): текст, а не пустое место; подсказка — в title и aria-label. */
.pp-hidden{display:inline-flex;align-items:center;min-height:24px;padding:2px 10px;border:1px dashed var(--kd-color-border);border-radius:var(--kd-radius-doc);background:var(--kd-color-surface);color:var(--kd-color-muted);font-size:.75rem;font-weight:800;letter-spacing:.02em;white-space:nowrap;cursor:help}
.pp-hidden-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}

.pp-project-tools{margin:0 0 12px}
.pp-dialogs:empty{display:none}
.pp-dialogs{margin:0 0 12px}
.pp-project .pp-dialogs{grid-column:1 / -1;margin:0}
.pp-duplicate{display:flex;flex-direction:column;gap:12px;border-left:4px solid var(--service)}
.pp-duplicate h2{margin:0}
.pp-dup-people{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;border:0}
.pp-dup-people legend{padding:0;font-weight:800}
.pp-dup-choice{display:flex;align-items:center;gap:10px;min-height:var(--kd-control-h);font-weight:600}

/* «Требует внимания»: раскрывающийся список под шапкой проекта; счётчик — плашка с текстом. */
.pp-attention{margin:0 0 12px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-attention>summary{flex-wrap:wrap;padding:0 16px;color:var(--service-ink)}
.pp-attention[data-count]:not([data-count="0"]){border-color:var(--kd-status-warning-ink)}
.pp-attention-body{display:flex;flex-direction:column;gap:12px;padding:4px 16px 16px}
.pp-attention-group h3{margin:0 0 6px;font-size:.9375rem;color:var(--service-ink)}
.pp-attention-list{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.pp-attention-item{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:8px 0;border-top:1px solid var(--kd-color-line)}
.pp-attention-text{flex:1 1 240px;min-width:0;overflow-wrap:anywhere}

/* История: вкладки «Все разделы» / «Ядро», фильтры по сетке, лента. */
.pp-subtabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.pp-subtab[aria-pressed=true]{border-color:var(--service);box-shadow:inset 0 -3px 0 var(--service);color:var(--service-ink)}
.pp-history-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 16px;align-items:end}
.pp-history-list{margin-top:16px}
.pp-history-what{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.pp-diff-host:empty{display:none}
.pp-diff-host .pp-card{border-left:4px solid var(--service)}

/* Участники и признаки: карточка на участника, переключатели ≥ 44 px, причина закрытия — текстом. */
.pp-members{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.pp-members .crew-card+.crew-card{margin-top:0}
.pp-member{border-left:4px solid var(--service)}
.pp-member-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:12px}
.pp-member-title{margin:0;font-size:1.0625rem;overflow-wrap:anywhere}
.pp-flags-set{display:flex;flex-direction:column;gap:4px;margin:0 0 12px;padding:0;border:0}
.pp-flags-set legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pp-flag{display:flex;align-items:flex-start;gap:12px;min-height:var(--kd-control-h);padding:8px 0;border-top:1px solid var(--kd-color-line)}
.pp-flag input{flex:0 0 auto;width:24px;height:24px;margin-top:2px}
.pp-flag-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.pp-flag-lock{color:var(--kd-status-warning-ink);font-weight:700}
.pp-myaccess{display:flex;flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none}
.pp-myaccess li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:8px 0;border-top:1px solid var(--kd-color-line)}

/* Шаблоны смет организации. */
.pp-template-detail:empty{display:none}
.pp-template-detail .pp-card{border-left:4px solid var(--service)}
.pp-templates{display:flex;flex-direction:column;gap:16px;margin-top:16px}
.pp-templates .crew-card+.crew-card{margin-top:0}

/* ---------- С-302 C2: вкладка «Из мастерской» в окне загрузки сценария ----------
   Цвет — токены сервиса экрана (--service*), HEX нет. Вкладки и строки списка ≥ 44 px, фокус — общее правило `.pp … :focus-visible` (синяя рамка 3 px). */
.pp-ed-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 16px;border-bottom:1px solid var(--kd-color-line)}
.pp-ed-tabs [role=tab]{flex:0 1 auto;min-height:var(--kd-control-h);padding:0 16px;border:0;border-bottom:3px solid transparent;border-radius:var(--kd-radius-control) var(--kd-radius-control) 0 0;background:transparent;color:var(--kd-color-muted);font-weight:700}
.pp-ed-tabs [role=tab]:hover:not(:disabled){background:var(--kd-color-surface);color:var(--kd-color-ink)}
.pp-ed-tabs [role=tab][aria-selected=true]{background:var(--service-soft);border-bottom-color:var(--service);color:var(--service-ink)}
.pp-ed [role=tabpanel][hidden]{display:none}
.pp-ed-panel>.fine{margin:0 0 12px}
.pp-ed-list{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.pp-ed-row{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;width:100%;min-height:56px;padding:8px 16px;text-align:left;white-space:normal;border-color:var(--service-line);background:var(--kd-color-white)}
.pp-ed-row:hover:not(:disabled){background:var(--service-soft);border-color:var(--service)}
.pp-ed-title{font-size:1rem;overflow-wrap:anywhere}
.pp-ed-facts{font-size:.8125rem;font-weight:600;color:var(--kd-color-muted);font-variant-numeric:tabular-nums}
.pp-ed-sheet{border-left:4px solid var(--service);background:var(--service-soft)}
.pp-ed-sheet h3{margin:0 0 12px;font-size:1rem;color:var(--service-ink)}
.pp-ed-sheet .notice{margin:12px 0}
.pp-ed-sheet .fine{margin:0}
.pp-ed-host .empty{margin-bottom:0}

/* Телефон 375 px: группы вкладок друг под другом, переключатели и кнопки на всю ширину, страница не прокручивается вбок. */
@media (max-width:640px){
  .pp-tabs{gap:8px 16px}
  .pp-tab-group{flex:1 1 100%}
  .pp-tabs a{padding:0 10px}
  .pp-project-tools .pp-btn,.pp-project-tools button{flex:1 1 auto}
  .pp-history-filters{grid-template-columns:minmax(0,1fr)}
  .pp-attention>summary,.pp-attention-body{padding-left:12px;padding-right:12px}
  .pp-duplicate .crew-actions button{flex:1 1 auto}
  .pp-ed-tabs [role=tab]{flex:1 1 0;padding:0 8px}
  .pp-ed-sheet .crew-actions button{flex:1 1 auto}
}

/* Раскадровка: размеры через классы, совместимые с CSP кабинета. */
.pp-storyboard .pp-storyboard-player-image{max-width:100%;max-height:60vh;object-fit:contain}
.pp-storyboard .pp-storyboard-frame-image{max-width:100%;max-height:280px;object-fit:contain}
.pp-storyboard .pp-storyboard-text{width:100%;box-sizing:border-box}

/* С-322 Т-2: строка пути проекта «Сценарий · Аналитика · Либретто · КПП · Смета», служебные вкладки вторым рядом, «Дальше». */
.pp-steps{margin:0 0 16px}
.pp-steps-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;counter-reset:none}
.pp-step{flex:1 1 150px;min-width:0}
.pp-step-link{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;height:100%;padding:10px 12px;border:1px solid var(--kd-color-line);border-radius:12px;background:var(--kd-color-surface);color:var(--kd-color-ink);text-decoration:none}
.pp-step-link:hover{border-color:var(--service)}
.pp-step-link:focus-visible{outline:3px solid var(--service);outline-offset:2px}
.pp-step-num{grid-row:1 / span 2;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--kd-color-line);font-weight:800;font-size:.875rem}
.pp-step-label{font-weight:800}
.pp-step-text{font-size:.8125rem;color:var(--kd-color-muted)}
.pp-step.is-done .pp-step-num{background:var(--service-soft);color:var(--service-ink)}
.pp-step.is-done .pp-step-num::after{content:" ✓"}
.pp-step.is-current .pp-step-link{border-color:var(--service);box-shadow:inset 0 -3px 0 var(--service)}
.pp-tab-group-secondary{flex:0 0 100%;padding-top:4px;border-top:1px dashed var(--kd-color-line)}
.pp-tab-group-secondary a{min-height:calc(var(--kd-control-h) - 8px);font-size:.875rem}
.pp-next-step{justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--kd-color-line)}
@media (max-width:640px){.pp-step{flex:1 1 100%}}

/* С-322 Т-10: постоянные разделы аналитики, меню экспорта; рабочая ширина Т-5 сохранена.
   С-324: одна колонка — полоса сводных показателей, ряд вкладок-чипов разделов (переносится в несколько строк), таблица на всю ширину. */
.step2-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}
/* С-323 Т-3: колонка содержимого не растёт по ширине таблицы — таблица прокручивается в своей области, а не уходит под список разделов. */
.step2-content{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;min-width:0;max-width:100%}
.step2-content>*{min-width:0}
.step2-sections{display:flex;flex-wrap:wrap;gap:8px;min-width:0;max-width:100%}
.step2 .step2-section{display:inline-flex;align-items:center;gap:8px;flex:0 1 auto;width:auto;max-width:100%;min-height:44px;padding:6px 6px 6px 14px;border:1px solid var(--kd-color-line);border-radius:999px;background:var(--kd-color-white);color:var(--step2-ink);font:inherit;font-size:.9375rem;line-height:1.2;text-align:left;cursor:pointer;white-space:normal;overflow-wrap:normal;word-break:normal}
.step2 .step2-section:hover{background:var(--kd-color-surface);border-color:var(--step2-accent)}
.step2 .step2-section[aria-pressed=true]{border-color:var(--step2-accent);background:var(--step2-accent);color:var(--step2-on);font-weight:700}
.step2-section-count{font-variant-numeric:tabular-nums;flex:none;min-width:2.25em;padding:3px 8px;border-radius:999px;background:var(--kd-color-surface);color:var(--step2-ink);font-size:.8125rem;font-weight:700;text-align:center}
.step2 .step2-section[aria-pressed=true] .step2-section-count{background:var(--kd-color-white);color:var(--step2-ink)}
.step2-export{position:relative;align-items:start}
.step2-export-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:8;display:grid;gap:4px;min-width:240px;max-width:calc(100vw - 48px);padding:8px;border:1px solid var(--kd-color-line);border-radius:12px;background:var(--kd-color-white);box-shadow:0 8px 24px color-mix(in srgb,var(--kd-color-ink) 13%,transparent)}
.step2 .step2-export-menu a{justify-content:flex-start;text-align:left}
.step2 [hidden]{display:none!important}
@media(max-width:480px){.step2-sections{gap:6px}.step2 .step2-section{font-size:.875rem;padding-left:12px}}
@media print{.step2-sections,.step2-controls,.step2-content>.step2-settings-host,.step2-content>.step2-resources{display:none}.step2-layout{display:block}}

/* С-324: раздел «Аналитика хронометража» под отчётами Плана — плашка-заголовок, открыт по умолчанию. */
.pp-timing-analytics{margin-top:24px;border:1px solid var(--service-line);border-radius:var(--kd-radius-card);background:var(--kd-color-white);overflow:hidden}
.pp-timing-analytics-head{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;min-height:56px;padding:14px 20px 14px 52px;border-left:6px solid var(--service);background:var(--service-soft);color:var(--service-ink);cursor:pointer;list-style:none}
.pp-timing-analytics-head::-webkit-details-marker{display:none}
.pp-timing-analytics-head::before{content:"";position:absolute;left:22px;top:28px;width:9px;height:9px;border-right:3px solid currentColor;border-bottom:3px solid currentColor;transform:translateY(-75%) rotate(45deg)}
.pp-timing-analytics:not([open])>.pp-timing-analytics-head::before{transform:translateY(-50%) rotate(-45deg)}
.pp-timing-analytics-head:hover{background:color-mix(in srgb,var(--service) 16%,var(--kd-color-white))}
.pp-timing-analytics-head:focus-visible{outline:3px solid var(--service-ink);outline-offset:-3px}
.pp-timing-analytics-head>h2{margin:0;font-size:1.25rem;line-height:1.3;color:var(--service-ink)}
.pp-timing-analytics-head>.fine{margin:0;color:var(--kd-color-muted)}
.pp-timing-analytics[open]>.pp-timing-analytics-head{border-bottom:1px solid var(--service-line)}
.pp-timing-analytics-body{padding:16px}
@media (max-width:640px){.pp-timing-analytics-head{padding:12px 14px 12px 44px}.pp-timing-analytics-head::before{left:18px}.pp-timing-analytics-body{padding:12px}}

/* С-322 Т-19: AI-задания — список сцен слева, предложения выбранной сцены справа; на телефоне — список сверху */
.pp-ai-split{display:grid;grid-template-columns:minmax(200px,280px) minmax(0,1fr);gap:16px;align-items:start;margin-top:16px}
.pp-ai-nav{display:flex;flex-direction:column;gap:4px;position:sticky;top:8px;max-height:70vh;overflow:auto;padding-right:4px}
.pp-ai-nav-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:44px;padding:8px 12px;text-align:left;white-space:normal;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.pp-ai-nav-item[aria-pressed=true]{border-color:var(--service);background:var(--service-soft);color:var(--service-ink)}
.pp-ai-nav-title{font-weight:700;overflow-wrap:anywhere}
.pp-ai-nav-count{font-size:.8125rem;color:var(--kd-color-muted)}
.pp-ai-split .pp-ai-group{margin-top:0}
.pp-ai-group[hidden]{display:none}
@media (max-width:760px){.pp-ai-split{grid-template-columns:minmax(0,1fr)}.pp-ai-nav{position:static;flex-direction:row;overflow-x:auto;max-height:none}.pp-ai-nav-item{flex:0 0 auto;max-width:70vw}}
/* С-322 Т-15/Т-18 */
.pp-review-banner { padding: var(--kd-control-px); border: 1px solid var(--kd-color-line); background: var(--service-soft); }
.pp-doubt-reason { display: block; text-align: left; color: var(--kd-color-ink); white-space: normal; height: auto; min-height: 0; }
/* С-322 Т-5: статус с причинами и действием строки — одна колонка с переносом по словам. */
.pp-col-status { min-width: 9rem; max-width: 11rem; }
.pp-row-act { margin-top: calc(var(--kd-space-unit) * 2); }
/* «Снять подтверждение» переносится по словам: иначе колонка статуса 208 px и либретто на 1440 px шире окна. */
.pp-table.pp-libretto td.pp-col-status .pp-row-act button { white-space: normal; height: auto; text-align: left; }
.pp-description { white-space: pre-wrap; min-width: 16rem; }
/* С-322 Т-12: описание и предложение способа съёмки объектов. */
.step2-object-suggestion{color:var(--kd-color-muted);background:var(--kd-color-surface);border-inline-start:solid var(--kd-color-line);padding:calc(var(--kd-space-unit)*2)}
.step2-object-card{grid-template-columns:minmax(0,1fr)}

/* ---------- С-329 Г3: «Что устарело после новой версии сценария» — сводка в шапке, карточки разделов, список записей ---------- */
.pp-source-changes-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 12px;padding:8px 16px;border:1px solid var(--kd-status-warning-ink);border-radius:var(--kd-radius-control);background:var(--kd-status-warning-surface);color:var(--kd-status-warning-ink)}
.pp-source-changes-card{border-color:var(--kd-status-warning-ink)}
.pp-source-changes{display:flex;flex-direction:column;gap:0;margin:0;padding:0;list-style:none}
.pp-source-change{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:8px 0;border-top:1px solid var(--kd-color-line)}
.pp-source-change:first-child{border-top:0}
.pp-source-change-text{flex:1 1 240px;min-width:0;overflow-wrap:anywhere;color:var(--kd-color-ink)}
.pp-source-change .crew-actions{margin:0}
.pp-source-changes-done>summary{cursor:pointer;color:var(--kd-color-muted)}
.pp-ai-where{margin:4px 0 0}
@media (max-width:767px){.pp-source-changes-banner{padding:8px 12px}}

/* С-331 E: раскадровка — две строки управления, список сцен для разбивки строкой (флажок · номер · заголовок), автоэскиз 16:9. */
.pp-storyboard .pp-sb-controls{display:flex;flex-direction:column;gap:0}
.pp-storyboard .pp-sb-row{align-items:flex-end;margin-top:12px}
.pp-storyboard .pp-sb-split{margin-top:16px}
.pp-storyboard .pp-sb-bulk{margin-top:8px}
.pp-storyboard .pp-sb-counter{margin:0;color:var(--kd-color-muted)}
.pp-storyboard .pp-sb-scenes{display:flex;flex-direction:column;gap:2px;margin-top:8px;max-height:420px;overflow:auto;border:1px solid var(--kd-color-line);border-radius:8px;padding:4px}
.pp-storyboard .pp-sb-scene{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer;line-height:1.35}
.pp-storyboard .pp-sb-scene:hover{background:var(--kd-color-selection)}
.pp-storyboard .pp-sb-scene input{flex:0 0 auto;margin:2px 0 0;width:18px;height:18px}
.pp-storyboard .pp-sb-scene-text{display:flex;flex-wrap:wrap;column-gap:4px;min-width:0}
.pp-storyboard .pp-sb-scene-text b{white-space:nowrap}
.pp-storyboard .pp-sb-scene-sub{flex-basis:100%;color:var(--kd-color-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-storyboard .pp-sb-frame .pp-storyboard-frame-image{display:block;width:100%;max-width:560px;aspect-ratio:16/9;max-height:none;object-fit:contain;border:1px solid var(--kd-color-line);border-radius:6px;background:var(--kd-color-white);margin:8px 0}
.pp-storyboard .pp-sb-auto-note{margin:0 0 8px;color:var(--kd-color-muted)}
.pp-storyboard textarea.pp-storyboard-text[rows="1"]{min-height:var(--kd-control-h);height:auto;resize:vertical}
@media (max-width:760px){
  .pp-storyboard .pp-sb-row>*{flex:1 1 100%}
}

/* С-335 D: либретто — номер и галочка высокой строки держатся под закреплённой шапкой таблицы, номер ведёт на карточку сцены. */
.kd-main-wide .pp-libretto .pp-scene-stick{position:sticky;top:var(--pp-libretto-head,52px)}
.pp-scene-stick>*+*{margin-top:4px}
.pp-scene-link{display:inline-block;padding:4px 8px 0;font-weight:800;color:var(--service-ink);white-space:nowrap}
.pp-scene-stick .pp-scene-toggle{display:block;min-height:24px;padding:0 8px;font-size:12px;font-weight:600}
/* С-335 E: окно «Построить КПП» и норма в сводке. Цвета — токены кабинета, они же в тёмной теме. */
.pp-stat .pp-norm-hint{color:var(--kd-color-muted)}
.pp-stat .pp-norm-plan{font-weight:700;color:var(--service-ink)}
.pp-stat .pp-norm-over{color:var(--kd-status-error-ink)}
.ws-ed-dialog.pp-kpp-dialog{width:min(760px,calc(100vw - 32px));max-height:min(88vh,860px);max-height:min(88dvh,860px)}
.pp-kpp-dialog h3{margin:8px 0 0;font-size:1rem}
.pp-kpp-quick{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pp-kpp-quick button{min-width:48px}
.pp-kpp-params{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.pp-kpp-dialog label:has(>input[type="checkbox"]){display:flex;gap:8px;align-items:center;font-weight:600}
.pp-kpp-estimate{padding:10px 12px;border:1px solid var(--service-line);border-radius:var(--kd-radius-control);background:var(--service-soft);font-size:.875rem;line-height:1.45}
.pp-kpp-estimate:empty{display:none}
.pp-kpp-estimate-over{border-color:var(--kd-status-error-ink);color:var(--kd-color-ink)}
.pp-kpp-groups{display:grid;gap:10px;min-width:0}
.pp-kpp-group{padding:10px 12px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control)}
.pp-kpp-group-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.pp-kpp-group-head strong{overflow-wrap:anywhere}
.pp-kpp-group-head small,.pp-kpp-object small{color:var(--kd-color-muted)}
.pp-kpp-objects{display:grid;gap:4px;margin:6px 0 0;padding:0;list-style:none}
.pp-kpp-object{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0;min-height:32px}
.pp-kpp-object-name{min-width:0;overflow-wrap:anywhere}
.pp-kpp-object button{margin-left:auto}
.pp-kpp-singles summary{cursor:pointer;font-weight:600}
.pp-kpp-preview:empty{display:none}
.pp-kpp-preview{display:grid;gap:8px}
@media (max-width:560px){
  .pp-kpp-params{grid-template-columns:minmax(0,1fr)}
  .ws-ed-dialog.pp-kpp-dialog{width:100vw;max-width:100vw;max-height:100dvh;margin:0;border:0;border-radius:0}
}

/* С-342 E: карточки проектов Плана и Бюджета — белое свечение по периметру при наведении и фокусе внутри (`--kd-glow-white` из shell.css). */
.crew-card.pp-project{transition:border-color var(--kd-motion-fast),box-shadow var(--kd-motion-fast)}
.crew-card.pp-project:hover,.crew-card.pp-project:focus-within{border-color:var(--kd-glow-edge);box-shadow:var(--kd-glow-white)}
@media (prefers-reduced-motion:reduce){.crew-card.pp-project{transition:none}}
