/* Кабинет КиноДвиж — стили по брендбуку v1.1 (разделы 05 «Цвет», 06 «Типографика и композиция», 07 «Интерфейс»).
   Токены — output/brandbook/КиноДвиж-Брендбук-v1.1/tokens.css; шрифты Manrope и Unbounded — SIL OFL (Manrope-OFL.txt, Unbounded-OFL.txt).
   Правила: одна основная (оранжевая) кнопка на область задачи; элемент управления не ниже 44 px, отступы 12–16 px, радиус 8 px (панель — 12 px);
   фокус виден (синяя рамка 3 px); disabled отличается не только прозрачностью; статус — плашкой с текстом, а не только цветом. */

@font-face{font-family:Manrope;src:url('/manrope-cyrillic.woff2') format('woff2');font-weight:200 800;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Manrope;src:url('/manrope-latin.woff2') format('woff2');font-weight:200 800;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+20BD,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Unbounded;src:url('/unbounded-cyrillic.woff2') format('woff2');font-weight:200 900;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Unbounded;src:url('/unbounded-latin.woff2') format('woff2');font-weight:200 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ---------- 1. Токены ---------- */
:root{
  color-scheme:light;
  --kd-color-ink:#17181C;--kd-color-paper:#F3F2ED;--kd-color-white:#FFFFFF;--kd-color-graphite:#0B0C0F;
  --kd-color-signal:#FF5B28;--kd-color-signal-hover:#F04A17;--kd-color-accent-ink:#B93B13;--kd-color-accent-soft:#FFF0E7;
  --kd-color-muted:#60646E;--kd-color-blue:#275CFF;--kd-color-border:#7B808A;--kd-color-line:#D6D7D4;--kd-color-surface:#F7F7F4;
  --kd-color-disabled:#E5E6E8;--kd-color-focus:#275CFF;
  --kd-status-info-ink:#2248B5;--kd-status-info-surface:#ECF0FF;
  --kd-status-success-ink:#216543;--kd-status-success-surface:#EAF4ED;
  --kd-status-warning-ink:#805000;--kd-status-warning-surface:#FFF2CF;
  --kd-status-error-ink:#A92B34;--kd-status-error-surface:#FCEBED;
  --kd-service-transport-accent:#47778F;--kd-service-transport-surface:#ECF2F6;--kd-service-transport-ink:#304F63;
  --kd-font-display:Unbounded,Manrope,Arial,sans-serif;--kd-font-body:Manrope,Arial,sans-serif;
  --kd-radius-doc:4px;--kd-radius-control:8px;--kd-radius-card:12px;
  --kd-control-h:44px;--kd-control-px:16px;
  --kd-motion-fast:140ms;--kd-motion-panel:220ms;
  /* Прежние имена — для совместимости разметки, которую строят модули кабинета. */
  --ink:var(--kd-color-ink);--muted:var(--kd-color-muted);--line:var(--kd-color-line);--accent:var(--kd-color-signal);
  --soft:var(--kd-color-paper);--dark:var(--kd-color-graphite);
  font-family:var(--kd-font-body);font-size:16px;line-height:1.5;color:var(--kd-color-ink);background:var(--kd-color-paper);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
@media (prefers-reduced-motion: reduce){:root{--kd-motion-fast:0ms;--kd-motion-panel:0ms}}

/* ---------- 2. База ---------- */
*,*::before,*::after{box-sizing:border-box}
body{margin:0;min-height:100vh;background:var(--kd-color-paper)}
[hidden]{display:none!important}
h1,h2,h3,h4,h5,p{margin-top:0}
h1,h2,h3{font-family:var(--kd-font-display);font-weight:600;color:var(--kd-color-ink)}
h1{font-size:clamp(1.75rem,2.6vw,2.5rem);line-height:1.2;letter-spacing:-.03em;margin:6px 0 0}
h2{font-size:clamp(1.25rem,1.8vw,1.625rem);line-height:1.25;letter-spacing:-.02em;margin-bottom:6px}
h3{font-size:1.0625rem;line-height:1.35;letter-spacing:-.01em;margin-bottom:8px}
h4,h5{font-family:var(--kd-font-body);font-weight:800;font-size:1rem;line-height:1.4;margin:18px 0 10px}
p{line-height:1.5}
a{color:var(--kd-color-accent-ink);text-underline-offset:3px}
a:hover{color:var(--kd-color-ink)}
strong,b{font-weight:750}
small,.fine{font-size:.8125rem;line-height:1.45;color:var(--kd-color-muted)}
.eyebrow{display:inline-block;font-size:.75rem;line-height:1.3;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--kd-color-accent-ink)}
code,.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.875em}
.price,.totals,.cal-timer,td,.share-prices{font-variant-numeric:tabular-nums}
::selection{background:#FFD2C1}

/* ---------- 3. Элементы управления: одна высота, одни отступы, один радиус ---------- */
button,input,select,textarea{font:inherit;color:inherit;margin:0}
button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}
button{
  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 transparent;border-radius:var(--kd-radius-control);
  background:var(--kd-color-white);color:var(--kd-color-ink);border-color:var(--kd-color-border);
  font-size:.9375rem;font-weight:700;line-height:1.2;text-align:center;white-space:nowrap;cursor:pointer;
  transition:background-color var(--kd-motion-fast),border-color var(--kd-motion-fast),color var(--kd-motion-fast);
}
button:hover:not(:disabled){background:var(--kd-color-surface);border-color:var(--kd-color-ink)}
button.primary,a.download{background:var(--kd-color-signal);border-color:var(--kd-color-signal);color:var(--kd-color-ink);font-weight:800}
button.primary:hover:not(:disabled),a.download:hover{background:var(--kd-color-signal-hover);border-color:var(--kd-color-signal-hover);color:var(--kd-color-ink)}
button.secondary{background:var(--kd-color-white);border-color:var(--kd-color-border);color:var(--kd-color-ink)}
button.quiet{background:transparent;border-color:transparent;color:var(--kd-color-muted);padding:0 12px}
button.quiet:hover:not(:disabled){background:#E9E8E2;border-color:transparent;color:var(--kd-color-ink)}
button.danger{background:var(--kd-status-error-ink);border-color:var(--kd-status-error-ink);color:#fff}
button.danger:hover:not(:disabled){background:#8E2029;border-color:#8E2029}
button:disabled,button.primary:disabled,button.secondary:disabled,button.danger:disabled{
  background:var(--kd-color-disabled);border-color:var(--kd-color-disabled);color:var(--kd-color-muted);cursor:not-allowed}
button[aria-busy=true]{cursor:progress}

input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),select,textarea{
  display:block;width:100%;min-height:var(--kd-control-h);padding:10px 12px;
  border:1px solid var(--kd-color-border);border-radius:var(--kd-radius-control);background:var(--kd-color-white);
  font-size:.9375rem;line-height:1.4;color:var(--kd-color-ink);
  transition:border-color var(--kd-motion-fast),box-shadow var(--kd-motion-fast);
}
select{appearance:none;-webkit-appearance:none;padding-right:40px;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--kd-color-ink) 50%),linear-gradient(135deg,var(--kd-color-ink) 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
textarea{resize:vertical;min-height:120px;line-height:1.55}
input::placeholder,textarea::placeholder{color:#8A8E97}
input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--kd-color-ink)}
input:disabled,select:disabled,textarea:disabled{background:var(--kd-color-disabled);color:var(--kd-color-muted);border-color:var(--kd-color-disabled);cursor:not-allowed}
input[type=file]{font-size:.875rem;max-width:100%}
input[type=file]::file-selector-button{min-height:40px;margin-right:12px;padding:0 14px;border:1px solid var(--kd-color-border);border-radius:var(--kd-radius-control);background:var(--kd-color-white);font:inherit;font-weight:700;cursor:pointer}
input[type=checkbox],input[type=radio]{width:20px;height:20px;margin:0;flex:0 0 auto;accent-color:var(--kd-color-ink);cursor:pointer}

:focus{outline:none}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:3px solid var(--kd-color-focus);outline-offset:3px}
input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{border-color:var(--kd-color-ink)}

/* Подпись поля — короткая метка над полем, остаётся видимой после ввода (брендбук, с. 54). */
label{display:block;margin:0 0 6px;font-size:.75rem;line-height:1.35;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--kd-color-muted)}
label:has(> input[type=checkbox]),label:has(> input[type=radio]){
  display:inline-flex;align-items:center;gap:10px;min-height:var(--kd-control-h);margin:0;
  font-size:.9375rem;font-weight:600;letter-spacing:0;text-transform:none;color:var(--kd-color-ink);cursor:pointer}
fieldset{margin:0;min-width:0;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);padding:12px 16px 14px}
legend{padding:0 6px;font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--kd-color-muted)}
summary{cursor:pointer;min-height:var(--kd-control-h);display:flex;align-items:center;gap:8px;font-weight:700;list-style:none}
summary::-webkit-details-marker{display:none}
summary::before{content:'';width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform var(--kd-motion-fast);flex:0 0 auto;margin-right:4px}
details[open]>summary::before{transform:rotate(45deg)}

/* Поля с ошибкой: рамка + текст рядом с полем, а не только цвет (брендбук, с. 54). */
.field-invalid input,.field-invalid select,.field-invalid textarea,input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--kd-status-error-ink);box-shadow:inset 0 0 0 1px var(--kd-status-error-ink)}
.field-error{display:block;margin-top:6px;font-size:.8125rem;line-height:1.4;font-weight:700;color:var(--kd-status-error-ink)}

/* Группа полей формы: подписи сверху, поля выровнены по нижнему краю строки. */
form{margin:0}

/* ---------- 4. Каркас ---------- */
/* С-274 (Р-061): каркас страницы (шапка, вход, переключатель пространств) — у оболочки кабинета (shell.css). Прежние
   боковая панель, шапка «Рабочее пространство», экран входа по коду и подвал удалены; экраны пространства «КиноДвиж»
   живут внутри .space-kinodvizh (space-kinodvizh.css). Здесь — только то, что разделяют порталы. */
.brand{display:block;text-decoration:none;color:var(--kd-color-paper)}
.brand img{display:block;width:216px;max-width:100%;height:auto}
.brand small{display:block;margin-top:12px;font-size:.6875rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#B5B8BE}
.test-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--kd-color-signal);margin-right:8px;vertical-align:1px}

/* ---------- 5. Общие компоненты ---------- */
.notice{margin:0 0 24px;padding:12px 16px;border-left:3px solid var(--kd-color-signal);background:var(--kd-color-accent-soft);font-size:.9375rem;line-height:1.45;border-radius:0 var(--kd-radius-doc) var(--kd-radius-doc) 0}
.notice:empty{display:none}
.notice.error{background:var(--kd-status-error-surface);border-color:var(--kd-status-error-ink);color:var(--kd-status-error-ink);font-weight:600}

.panel{background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card);overflow:hidden}
.panel-head{display:flex;gap:12px;align-items:center;min-height:88px;padding:20px 24px;border-bottom:1px solid var(--kd-color-line)}
.panel-head h2{margin:2px 0;font-size:1.125rem}
.label{margin-left:auto;padding:4px 8px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-doc);font-size:.6875rem;font-weight:800;letter-spacing:.1em;color:var(--kd-color-muted)}

/* Статусы: цвет всегда вместе с текстом (брендбук, с. 53). */
.tag{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:3px 9px;border-radius:var(--kd-radius-doc);
  background:#EEEEEA;color:var(--kd-color-ink);font-size:.75rem;line-height:1.3;font-weight:800;white-space:nowrap}
.tag.ready,.tag.good,.tag.verified{background:var(--kd-status-success-surface);color:var(--kd-status-success-ink)}
.tag.warn{background:var(--kd-status-warning-surface);color:var(--kd-status-warning-ink)}
.tag.bad,.tag.error{background:var(--kd-status-error-surface);color:var(--kd-status-error-ink)}
.tag.info{background:var(--kd-status-info-surface);color:var(--kd-status-info-ink)}

table{width:100%;border-collapse:collapse;font-size:.875rem;line-height:1.4}
th{text-align:left;padding:10px 12px;font-size:.6875rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--kd-color-muted);border-bottom:2px solid var(--kd-color-ink);vertical-align:bottom}
td{padding:12px;border-bottom:1px solid var(--kd-color-line);vertical-align:top}

.empty{padding:48px 20px;text-align:center;color:var(--kd-color-muted)}
.empty>span{display:block;margin-bottom:16px;font-size:.75rem;font-weight:800;letter-spacing:.14em;color:var(--kd-color-accent-ink)}
.empty h3{color:var(--kd-color-ink);font-size:1.125rem}
.empty p{max-width:360px;margin:0 auto}

/* Маркер Пети: «П» на мягком акценте (брендбук, с. 27). */
.petya-mark{display:grid;place-items:center;width:52px;height:52px;flex:0 0 auto;border-radius:14px;background:var(--kd-color-accent-soft);color:var(--kd-color-accent-ink);font-family:var(--kd-font-display);font-size:1.5rem;font-weight:700}
.petya-mark.small{width:40px;height:40px;border-radius:10px;font-size:1.0625rem}

/* ---------- 7. Навигация по разделам ---------- */
.workspace-nav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 28px;padding:4px;background:#E9E8E2;border-radius:calc(var(--kd-radius-control) + 4px);width:fit-content;max-width:100%}
.workspace-nav button{border-color:transparent;background:transparent;color:var(--kd-color-ink);font-weight:700}
.workspace-nav button:hover:not(:disabled){background:var(--kd-color-white);border-color:transparent}
.workspace-nav button[aria-pressed=true],.workspace-nav button[aria-pressed=true]:hover:not(:disabled){background:var(--kd-color-graphite);border-color:var(--kd-color-graphite);color:var(--kd-color-paper)}
/* Вкладки внутри раздела: выбранная — полоса акцента 3 px (брендбук, с. 40). */
.transport-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:20px 0 24px;border-bottom:1px solid var(--kd-color-line)}
.transport-tabs button{border:0;border-radius:var(--kd-radius-control) var(--kd-radius-control) 0 0;background:transparent;color:var(--kd-color-muted);font-weight:700;box-shadow:inset 0 -3px 0 transparent}
.transport-tabs button:hover:not(:disabled){background:#E9E8E2;color:var(--kd-color-ink);border:0}
.transport-tabs button[aria-pressed=true],.transport-tabs button[aria-pressed=true]:hover:not(:disabled){color:var(--kd-color-ink);box-shadow:inset 0 -3px 0 var(--kd-color-signal)}

/* ---------- 8. Заявка и Петя ---------- */
.project-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 16px}
.project-bar output{display:block;margin-top:6px;overflow-wrap:anywhere;font-family:ui-monospace,Consolas,monospace;font-size:.875rem}
.restore{margin-bottom:24px;font-size:.875rem;color:var(--kd-color-muted)}
.restore form{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:12px 0}
.restore form>label{width:100%;margin:0}
.restore input{max-width:420px}
.work-grid{display:grid;grid-template-columns:minmax(320px,1fr) minmax(360px,1.08fr);gap:24px;align-items:start}
.messages{display:flex;flex-direction:column;gap:16px;min-height:200px;max-height:520px;overflow-y:auto;padding:24px}
.bubble{max-width:92%;padding:14px 16px;border-radius:2px 12px 12px;background:#F1F2F4;font-size:.9375rem;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.bubble.user{align-self:flex-end;background:var(--kd-color-accent-soft);border-radius:12px 2px 12px 12px}
.bubble strong{display:block;margin-bottom:4px;font-size:.6875rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--kd-color-muted)}
.composer{padding:20px 24px;border-top:1px solid var(--kd-color-line)}
.composer-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
.composer-footer .fine{max-width:220px;font-size:.75rem}
.retry-bar{padding:16px 24px;background:var(--kd-status-warning-surface);color:var(--kd-status-warning-ink);font-size:.875rem}
.retry-bar p{margin-bottom:10px}
/* Статус ожидания — рядом с отправкой, виден без прокрутки переписки (брендбук, с. 56). */
.petya-activity{margin-top:16px;padding:14px 16px;border:1px solid #F7C9B5;border-radius:var(--kd-radius-control);background:var(--kd-color-accent-soft)}
.activity-heading{display:flex;align-items:center;gap:10px;color:var(--kd-color-accent-ink);font-size:.875rem;font-weight:700}
.petya-activity p{margin:8px 0 4px;font-size:.8125rem;line-height:1.5;color:#5E4B40}
.activity-dots{display:inline-flex;gap:4px;flex-shrink:0}
.activity-dots i{width:6px;height:6px;border-radius:50%;background:var(--kd-color-accent-ink);animation:petya-pulse 1.4s ease-in-out infinite}
.activity-dots i:nth-child(2){animation-delay:.18s}
.activity-dots i:nth-child(3){animation-delay:.36s}
@keyframes petya-pulse{0%,70%,100%{opacity:.35;transform:translateY(0)}35%{opacity:1;transform:translateY(-3px)}}
@media (prefers-reduced-motion: reduce){.activity-dots i{animation:none;opacity:1}}

.results{padding:24px}
.results-head{justify-content:space-between;flex-wrap:wrap}
#download-pdf{white-space:nowrap}
.scenario{margin-bottom:16px;padding:20px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card);background:var(--kd-color-white)}
.scenario-head{display:flex;gap:12px;justify-content:space-between;align-items:center}
.scenario-head h3{margin:0}
.scenario .price{margin:16px 0 8px;font-family:var(--kd-font-display);font-size:1.5rem;font-weight:600;letter-spacing:-.02em}
.scenario ul{padding-left:18px;font-size:.875rem;line-height:1.6;color:var(--kd-color-muted)}
.scenario button{width:100%;margin-top:12px}
.line-item{padding:14px 0;border-bottom:1px solid var(--kd-color-line);font-size:.875rem;overflow-wrap:anywhere}
.line-item strong{display:block;margin-bottom:4px;color:var(--kd-color-ink)}
.line-item a{display:inline-block;margin-top:4px}
.proposal-heading{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.totals{margin:20px 0;padding-top:12px;border-top:2px solid var(--kd-color-ink)}
.totals div{display:flex;justify-content:space-between;gap:16px;padding:6px 0;font-size:.9375rem}
.totals div:last-child{margin-top:8px;padding-top:12px;border-top:1px solid var(--kd-color-line);font-size:1.25rem;font-weight:800}
a.download{display:flex;align-items:center;justify-content:center;min-height:var(--kd-control-h);padding:0 var(--kd-control-px);border-radius:var(--kd-radius-control);text-decoration:none}
.document-text{max-height:420px;overflow:auto;font-family:ui-monospace,Consolas,monospace;font-size:.8125rem;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}
.disclaimer{padding:12px 16px;border-left:3px solid var(--kd-status-warning-ink);background:var(--kd-status-warning-surface);color:var(--kd-status-warning-ink);font-size:.8125rem;border-radius:0 var(--kd-radius-doc) var(--kd-radius-doc) 0}
.question-list{padding-left:20px;line-height:1.6}
.brief-fields{font-size:.875rem;line-height:1.55;overflow-wrap:anywhere}
.brief-fields dt{margin-top:10px;font-size:.6875rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--kd-color-muted)}
.brief-fields dd{margin-left:0;color:var(--kd-color-ink)}


/* ---------- 9. Каталог ---------- */
.catalog-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin:8px 0 16px}
.catalog-heading h2{margin-top:6px;font-size:clamp(1.5rem,2.2vw,2rem)}
.category-filters{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}
.category-filter{min-height:40px;padding:0 14px;border-color:var(--kd-color-line);font-size:.875rem;font-weight:700}
.category-filter[aria-pressed=true]{background:var(--kd-color-ink);border-color:var(--kd-color-ink);color:var(--kd-color-paper)}
.category-filter[aria-pressed=true]:hover:not(:disabled){background:var(--kd-color-ink);color:var(--kd-color-paper)}
.catalog-controls{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;align-items:end;margin-bottom:20px}
.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:16px;margin:24px 0}
.catalog-card{display:flex;flex-direction:column;padding:24px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card);overflow-wrap:anywhere}
.catalog-card h3{margin:12px 0 10px;font-size:1.0625rem}
.catalog-card .eyebrow{color:var(--kd-color-muted);letter-spacing:.1em}
.catalog-card p{margin-bottom:12px}
.catalog-card details{margin-top:auto;padding-top:12px;border-top:1px solid var(--kd-color-line)}
.catalog-price-state{font-size:.875rem;font-weight:700;color:var(--kd-status-warning-ink)}
.catalog-empty{grid-column:1/-1;padding:32px;border:1px dashed var(--kd-color-border);border-radius:var(--kd-radius-card);background:var(--kd-color-white);color:var(--kd-color-muted)}
.catalog-help{max-width:780px;margin-top:32px}
.catalog-help p{margin-top:12px}
.catalog-features{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 16px;margin:12px 0;font-size:.875rem}
.catalog-features dt{color:var(--kd-color-muted);overflow-wrap:anywhere}
.catalog-features dd{margin:0;overflow-wrap:anywhere}

/* ---------- 10. Транспорт: подбор, карточка, сравнение, «Поделиться», ведение карточек ---------- */
/* Фильтры — сетка одинаковых ячеек; поля выровнены по нижнему краю, подписи сверху. */
.transport-filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;align-items:end;margin:16px 0 20px;padding:20px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card)}
.transport-filters>div{display:flex;flex-direction:column;justify-content:flex-end;min-width:0}
.transport-filters>div>label:not(:has(> input)){margin-bottom:6px}
.transport-filters>fieldset,.transport-filters>.transport-attr-filters{grid-column:1/-1}
.transport-filters>button{grid-column:1/-1;justify-self:start}
.transport-attr-filters{display:flex;flex-wrap:wrap;gap:12px}
.transport-attr{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;min-width:0;padding:12px 16px 14px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control)}
.transport-attr legend,.transport-attr>.label{font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--kd-color-muted)}
.transport-attr input[type=number]{width:96px}
.transport-group-title{margin:28px 0 12px;font-size:1.125rem}
.transport-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:16px}
.transport-card{display:flex;flex-direction:column;padding:20px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card);overflow-wrap:anywhere}
/* Фото — первым, над названием; действия — одной колонкой во всю ширину, прижаты к низу карточки (ровная линия в сетке). */
.transport-card>.transport-photo-button{order:-1;margin:0 0 14px}
.transport-card>button:not(.transport-photo-button){width:100%;margin-top:8px}
.transport-card>dl+button,.transport-card>.transport-photo-button+button{margin-top:auto}
.transport-card>.transport-select{margin:12px 0 0;padding-top:12px;border-top:1px solid var(--kd-color-line)}
.transport-card h3{margin:12px 0 8px}
.transport-card .price{margin:12px 0 4px;font-family:var(--kd-font-display);font-size:1.25rem;font-weight:600;letter-spacing:-.02em}
.transport-badges{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
/* С-291 (П8): описание для клиента — простой текст с переводами строк. */
.transport-description{margin:12px 0;max-width:720px;line-height:1.55;white-space:pre-line}
.transport-features{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 16px;margin:12px 0;font-size:.875rem}
.transport-features dt{color:var(--kd-color-muted);overflow-wrap:anywhere}
.transport-features dd{margin:0;overflow-wrap:anywhere}
.transport-select{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:12px 0}
.transport-select label{margin:0}
.transport-empty{grid-column:1/-1;padding:32px;border:1px dashed var(--kd-color-border);border-radius:var(--kd-radius-card);background:var(--kd-color-white);color:var(--kd-color-muted)}
.transport-unknown{margin:10px 0;font-size:.875rem;color:var(--kd-color-muted)}
.transport-variant{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end;margin:12px 0;padding:16px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-surface)}
.transport-variant>div{display:flex;flex-direction:column;justify-content:flex-end;flex:1 1 180px;min-width:0}
.transport-variant label{margin:0 0 6px}
.transport-compare{width:100%;border-collapse:collapse;font-size:.875rem;overflow-wrap:anywhere;background:var(--kd-color-white)}
.transport-compare th,.transport-compare td{padding:10px 12px;border:1px solid var(--kd-color-line);text-align:left;vertical-align:top}
.transport-compare thead th{border-bottom:2px solid var(--kd-color-ink)}
.transport-compare tr.differs th,.transport-compare tr.differs td{background:var(--kd-color-accent-soft)}
.transport-photo-button{padding:0;min-height:0;border:0;background:none}
.transport-photo-button:hover:not(:disabled){background:none;border:0}
.transport-photo{display:block;width:100%;max-height:200px;object-fit:cover;border-radius:var(--kd-radius-control);background:#E9E8E2}
.transport-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:12px 0}
.transport-queue{margin:12px 0;padding:16px 20px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card)}
.transport-queue h3,.transport-queue h4{margin-top:0}
.transport-queue ul{margin:8px 0 0;padding-left:20px;font-size:.875rem}
.transport-queue li{margin-bottom:6px}
/* SPEC-149: приём и изменения из Telegram — строки очередей в одну колонку на 360 px, поля во всю ширину (брендбук). */
.transport-intake{margin:24px 0 0}
.transport-intake .muted{color:var(--kd-color-muted);font-size:.875rem}
.transport-queue-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding:10px 0;border-top:1px solid var(--kd-color-line)}
.transport-queue-row:first-of-type{border-top:0}
.transport-queue-row p{margin:0;overflow-wrap:anywhere}
.transport-intake-change{flex:1 1 220px;min-width:0}
.transport-intake-filter{display:flex;flex-direction:column;max-width:320px;margin:12px 0}
.transport-form{display:flex;flex-direction:column;gap:8px;margin:16px 0}

/* «Поделиться» */
.share-selection{display:flex;flex-direction:column;gap:8px;margin:16px 0}
.share-selection-item{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:var(--kd-control-h);padding:6px 8px 6px 14px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
[data-transport=share-form],[data-transport=supplier-form],.share-form{display:grid;grid-template-columns:minmax(0,320px);gap:12px;align-items:end;margin:16px 0 24px;padding:20px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card)}
[data-transport=share-form]>label:not(:has(> input)),[data-transport=supplier-form]>label{margin-bottom:-6px}
[data-transport=share-form] button,[data-transport=supplier-form] button,.share-form>button{justify-self:start}
.share-form>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.share-form>div>label:not(:has(> input)){margin-bottom:2px}
.share-url{display:block;margin:10px 0;padding:10px 12px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-surface);font-family:ui-monospace,Consolas,monospace;font-size:.8125rem;word-break:break-all}
.share-list-item{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--kd-color-line);font-size:.875rem}

/* Ведение карточек: формы — сетка полей с подзаголовками разделов на всю ширину (одна высота полей, ровные колонки). */
#transport-manage form,#equipment-manage form{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px 20px;align-items:start;margin:0 0 24px;padding:20px 24px 24px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card)}
#transport-manage form>*,#equipment-manage form>*{min-width:0;margin:0}
#transport-manage form>div,#equipment-manage form>div{display:flex;flex-direction:column}
#transport-manage form>div>label:has(> input[type=checkbox]){min-height:36px;margin-top:4px}
#transport-manage form>h4,#equipment-manage form>h4{grid-column:1/-1;margin:8px 0 -4px;padding-top:18px;border-top:1px solid var(--kd-color-line);font-size:1rem}
#transport-manage form>h4:first-child,#equipment-manage form>h4:first-child{margin-top:0;padding-top:0;border-top:0}
#transport-manage form>label,#transport-manage form>p,#transport-manage form>fieldset,#equipment-manage form>p,#equipment-manage form>.form-wide{grid-column:1/-1}
#transport-manage form>button,#equipment-manage form>button{grid-column:1/-1;justify-self:start}
#transport-manage form>div:has(textarea),#transport-manage form>div:has(> .transport-attr){grid-column:1/-1}
#transport-manage form>div:has(> label:nth-of-type(3) > input[type=checkbox]){grid-column:1/-1;flex-direction:row;flex-wrap:wrap;gap:4px 20px}
#transport-manage form>div:has(> .transport-attr){flex-direction:row;flex-wrap:wrap;gap:12px}
/* Короткие формы «создать черновик» и «открыть карточку» — в одну строку с кнопкой. */
#transport-manage form[data-manage=open-form],#equipment-manage form.open-form{grid-template-columns:minmax(0,420px) auto;align-items:end}
#transport-manage form[data-manage=open-form]>label{grid-column:1/-1;margin-bottom:-10px}
#transport-manage form[data-manage=open-form]>button,#equipment-manage form.open-form>button{grid-column:auto}
#transport-manage form[data-manage=draft-form],#equipment-manage form.draft-form{align-items:end}
#transport-manage form[data-manage=draft-form]>button,#equipment-manage form.draft-form>button{grid-column:auto;justify-self:stretch}
/* С-291 (П1): «Новый поставщик» — группы транспорта флажками в строку, как назначения карточки. */
.supplier-groups{display:flex;flex-wrap:wrap;gap:4px 20px}
/* С-291 (П1, ревью Codex п. 4): раздел «Поставщики» — форма-карточка и список с поиском, те же поля и отступы. */
#transport-suppliers{display:grid;gap:24px}
#transport-suppliers form{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px 20px;align-items:start;margin:0;padding:20px 24px 24px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card)}
#transport-suppliers form>*{min-width:0;margin:0}
#transport-suppliers form>div{display:flex;flex-direction:column}
#transport-suppliers form>h4{grid-column:1/-1;font-size:1rem}
#transport-suppliers form>fieldset,#transport-suppliers form>p{grid-column:1/-1}
#transport-suppliers form>button{grid-column:1/-1;justify-self:start}
.supplier-list-panel{display:grid;gap:12px;padding:20px 24px 24px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card)}
.supplier-list-panel>div{max-width:420px}
.supplier-list{margin:0;padding:0;list-style:none}
.supplier-item{display:flex;flex-direction:column;gap:2px;padding:12px 0;border-bottom:1px solid var(--kd-color-line)}
.supplier-item:last-child{border-bottom:0}
@media (max-width:640px){#transport-suppliers form,.supplier-list-panel{grid-template-columns:1fr;padding:16px}}
[data-manage=status-actions],.status-panel{padding:16px 20px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card)}
[data-manage=editor-status],.editor-status{margin:0 0 16px;font-weight:700}

/* ---------- 10a. С-264 / SPEC-152 FR-EQS-08: раздел «Оборудование» — те же сетки, карточки, вкладки и формы, что у транспорта.
   Цвет сервиса «оборудование» (брендбук v1.1, с. 40; service-colors.css) — только акцент раздела: полоса 4 px у заголовка,
   метка раздела и выбранная вкладка. Главное действие остаётся оранжевым; статусы — плашками с текстом. ---------- */
:root{--kd-service-equipment-accent:#555D91;--kd-service-equipment-surface:#EFF0F7;--kd-service-equipment-ink:#393F68}
.service-heading{align-items:center;padding-left:16px;border-left:4px solid var(--kd-service-equipment-accent)}
.service-label{display:inline-flex;align-items:center;min-height:26px;padding:3px 10px;border-radius:var(--kd-radius-doc);background:var(--kd-service-equipment-surface);color:var(--kd-service-equipment-ink);font-size:.75rem;line-height:1.3;font-weight:800}
.service-section .transport-tabs button[aria-pressed=true],.service-section .transport-tabs button[aria-pressed=true]:hover:not(:disabled){box-shadow:inset 0 -3px 0 var(--kd-service-equipment-accent)}
.transport-tabs.subtabs{margin:4px 0 20px}
.tab-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--kd-color-disabled);color:var(--kd-color-ink);font-size:.75rem;font-weight:800;font-variant-numeric:tabular-nums}
/* Карточка выдачи: фото сверху одной высоты (или плашка «Фото не загружено»), действия — ровной колонкой у низа карточки. */
.equipment-card>.equipment-photo,.equipment-card>.equipment-photo-empty{order:-1;margin:0 0 14px}
.transport-photo-button.equipment-photo{position:relative;display:block;width:100%}
.equipment-card .transport-photo{height:180px;max-height:none}
.equipment-photo-empty{display:grid;place-items:center;height:180px;border-radius:var(--kd-radius-control);background:#E9E8E2;color:var(--kd-color-muted);font-size:.8125rem;font-weight:700}
.photo-note{position:absolute;left:8px;bottom:8px;padding:3px 8px;border-radius:var(--kd-radius-doc);background:var(--kd-color-white);color:var(--kd-color-ink);font-size:.75rem;line-height:1.3;font-weight:800}
.transport-gallery .equipment-photo .transport-photo{height:140px;max-height:none}
.card-actions{display:flex;flex-direction:column;gap:8px;margin-top:auto;padding-top:12px}
.card-actions>button{width:100%}
.equipment-detail{margin:0 0 24px}
.equipment-detail>.quiet{align-self:flex-end;width:auto}
.equipment-variant-view{flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:4px}
.equipment-variant-view>p{margin:0}
.equipment-variant-view>strong{font-size:1rem}
.equipment-variant-view>button{margin-top:8px}
.equipment-detail .card-actions{flex-direction:row;flex-wrap:wrap;margin-top:16px}
.equipment-detail .card-actions>button{width:auto;flex:1 1 200px}
.equipment-card .price{margin-top:4px}
.deposit-note{margin:4px 0 0}
.kit-contents,.compat-box{margin:10px 0;font-size:.875rem}
.compat-box>p{margin:12px 0 0}
.kit-contents ul,.kit-expanded{margin:6px 0 0;padding-left:18px;font-size:.875rem}
.label-text{display:block;margin:0 0 6px;font-size:.75rem;line-height:1.35;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--kd-color-muted)}
.compat-notes{margin:8px 0 0;padding-left:18px;font-size:.8125rem;color:var(--kd-status-warning-ink)}
.compat-list{list-style:none;display:flex;flex-direction:column;gap:8px;margin:12px 0 0;padding:0}
.compat-list li{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:.875rem}
.transport-attr .attr-unknown{font-size:.8125rem;color:var(--kd-color-muted)}
/* Корзина: позиция · количество · сумма · «Убрать» — одна сетка; итог по поставщикам — .totals, залог — отдельной плашкой. */
.cart-list{display:flex;flex-direction:column;gap:12px}
.cart-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,150px) minmax(0,240px) auto;gap:16px;align-items:start;padding:16px 20px;background:var(--kd-color-white);border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card)}
.cart-info{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;overflow-wrap:anywhere}
.cart-qty{display:flex;flex-direction:column;min-width:0}
.cart-sum{display:flex;flex-direction:column;gap:2px;min-width:0}
.cart-sum .price{margin:0;font-family:var(--kd-font-display);font-size:1.125rem;font-weight:600;letter-spacing:-.01em}
.cart-row>button{align-self:start;margin-top:22px} /* на одной линии с полем количества: 22 px — подпись-метка над полем */
.deposit-box{margin:16px 0;padding:12px 16px;border-left:3px solid var(--kd-status-info-ink);background:var(--kd-status-info-surface);border-radius:0 var(--kd-radius-doc) var(--kd-radius-doc) 0}
.deposit-box p{margin:6px 0 0}
.table-scroll{max-width:100%;overflow-x:auto}
/* Поле даты в Chromium на доли пикселя выше остальных — фиксируем высоту, чтобы ряд фильтров стоял ровно. */
#equipment input[type=date]{height:var(--kd-control-h)}
/* Сравнение оборудования: колонки карточек равной ширины; на узком экране таблица прокручивается внутри .table-scroll. */
.equipment-compare{table-layout:fixed;min-width:36rem}
.equipment-compare tr:first-child>:first-child{width:22%}
/* Ведение карточек оборудования: сетка полей транспорта; флажок рядом с полем — на линии поля; тарифы — вложенная сетка. */
.form-meta{margin:0;font-weight:700}
.check-row{display:flex;flex-wrap:wrap;gap:0 20px}
.check-cell,#equipment-manage form>.check-cell{display:flex;flex-direction:row;align-items:center;min-height:var(--kd-control-h);margin-top:22px}
.inline-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px 20px;align-items:start}
.inline-fields>div{display:flex;flex-direction:column;min-width:0}
.attr-field{display:flex;flex-direction:column;min-width:0}
.attr-field>label:has(> input[type=checkbox]),#equipment-manage form>div>label:has(> input[type=checkbox]){min-height:36px;margin-top:4px}
/* Вложенные сетки формы — прямые потомки формы, поэтому перекрывают общее «form>div — колонка». */
#equipment-manage form>.inline-fields,#equipment-manage form>.equipment-variant,#equipment-manage form>.kit-row{display:grid}
#equipment-manage form>.check-row,.inline-fields>.check-cell,.equipment-variant>.check-cell,.kit-row>.check-cell{flex-direction:row}
.equipment-variant{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px;align-items:start;padding:16px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-surface)}
.equipment-variant>h5,.equipment-variant>.field-error,.equipment-variant>.button-cell{grid-column:1/-1}
.equipment-variant>h5{margin:4px 0 -4px}
/* Кнопки «Добавить …» и «Убрать …» — по своей ширине, у левого края, а не на всю строку. */
#equipment-manage .button-cell{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px}
.equipment-variant>div{display:flex;flex-direction:column;min-width:0}
.kit-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,140px) auto;gap:12px 16px;align-items:start;margin:0 0 12px}
.kit-row>button{margin-top:22px}
.kit-row>div{display:flex;flex-direction:column;min-width:0}
.queue-row{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid var(--kd-color-line);font-size:.875rem;overflow-wrap:anywhere}
.queue-actions{display:flex;flex-wrap:wrap;gap:8px}
[data-eqmanage=media-list]{margin:0 0 16px}

@media (max-width:1150px){
  .brand img{width:192px}
  .work-grid{grid-template-columns:1fr}
}
@media (max-width:680px){
  .brand{display:flex;align-items:center;justify-content:space-between;gap:12px}
  .brand img{width:180px}
  .brand small{margin:0;text-align:right}
  .workspace-nav{width:100%}
  .workspace-nav button{flex:1 1 calc(50% - 8px);white-space:normal}
  .transport-tabs button{flex:1 1 auto;white-space:normal}
  .project-bar{align-items:flex-start}
  .panel-head,.composer,.messages,.results{padding:16px}
  .composer-footer{align-items:flex-end}
  .catalog-heading{display:block}
  .catalog-controls,.transport-filters{grid-template-columns:1fr;padding:16px}
  .catalog-card,.transport-card{padding:16px}
  [data-transport=share-form],[data-transport=supplier-form]{grid-template-columns:1fr;padding:16px}
  #transport-manage form,#transport-manage form[data-manage=open-form],#equipment-manage form,#equipment-manage form.open-form{grid-template-columns:1fr;padding:16px}
  #transport-manage form[data-manage=open-form]>button,#transport-manage form[data-manage=draft-form]>button,#equipment-manage form.open-form>button,#equipment-manage form.draft-form>button{justify-self:start}
  .share-form{grid-template-columns:1fr;padding:16px}
  .service-heading{display:block}
  .service-label{margin-top:10px}
  .cart-row{grid-template-columns:minmax(0,1fr) auto;padding:16px}
  .cart-info,.cart-qty{grid-column:1/-1}
  .cart-row>button{align-self:center;margin-top:0}
  .kit-row{grid-template-columns:minmax(0,1fr) auto}
  .kit-row>div:first-child{grid-column:1/-1}
  .equipment-detail .card-actions>button{flex-basis:100%}
}

/* ---------- 11. С-265 / SPEC-151: «Запросы и календарь» — очереди, карточка запроса, календарь борта, форма запроса. Ширина 360 px без горизонтальной прокрутки (NFR-TR-13). ---------- */
.cal-request{flex-direction:column;align-items:stretch}
.cal-request-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.cal-request-head h3{margin:0}
.cal-request p{margin:0}
.cal-timer{font-weight:800;color:var(--kd-color-ink)}
.cal-timer-urgent{color:var(--kd-status-error-ink)}
.tag.cal-urgent-tag{background:var(--kd-status-error-surface);color:var(--kd-status-error-ink)}
.cal-events{margin:6px 0 12px;padding-left:18px;font-size:.875rem;overflow-wrap:anywhere}
.cal-events li{margin-bottom:6px}
.cal-form{display:flex;flex-direction:column;gap:12px;margin-top:16px;padding-top:12px;border-top:1px solid var(--kd-color-line)}
.cal-field{display:flex;flex-direction:column;min-width:0}
.cal-field label{margin:0 0 6px}
.cal-field textarea{min-height:88px}
.cal-date-rows{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.cal-date-row{display:flex;gap:8px;align-items:center}
.cal-date-row input{flex:1;min-width:0}
.cal-legend{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.cal-legend-item{padding:4px 8px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-doc);font-size:.75rem;font-weight:700}
.cal-month-title{margin:18px 0 8px;font-size:.9375rem}
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.cal-weekday{text-align:center;font-size:.6875rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--kd-color-muted)}
.cal-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:0;min-height:48px;padding:2px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white);font-weight:700;overflow:hidden;white-space:normal}
.cal-num{font-size:.9375rem;line-height:1.1;font-variant-numeric:tabular-nums}
.cal-lvl{font-size:.625rem;line-height:1.1;font-weight:800;color:var(--kd-color-muted)}
.cal-free-l1{background:var(--kd-status-success-surface);border-color:#9CC9AE}
.cal-free-l1 .cal-lvl{color:var(--kd-status-success-ink)}
.cal-free-l0{background:var(--kd-status-warning-surface);border-color:#E3C76F}
.cal-free-l0 .cal-lvl{color:var(--kd-status-warning-ink)}
.cal-busy{background:var(--kd-status-error-surface);border-color:#DDA1A7}
.cal-busy .cal-lvl{color:var(--kd-status-error-ink)}
.cal-unavailable{background:#E6E7EB;border-color:#B3B8C2}
.cal-held{background:var(--kd-color-accent-soft);border-color:#F2B196}
.cal-held .cal-lvl{color:var(--kd-color-accent-ink)}
.cal-confirmed{background:var(--kd-status-info-surface);border-color:#9DB2F0}
.cal-confirmed .cal-lvl{color:var(--kd-status-info-ink)}
.cal-past{opacity:.45}
.cal-selected{outline:3px solid var(--kd-color-focus);outline-offset:-2px}
.cal-day:disabled{cursor:default}
.cal-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:12px 0}
.cal-detail{min-height:8px;margin-top:8px}
.cal-detail p{margin:6px 0}
@media (max-width: 620px){
  .cal-day{min-height:44px}
  .cal-actions>button{flex:1 1 100%}
  .cal-legend-item{flex:1 1 100%}
}

/* ---------- 12. SPEC-154: «Брони транспорта» — очереди, список и карточка брони, счета и отметки, факт, корзина проекта, комиссия, лента.
   Ширина 360 px без горизонтальной прокрутки страницы (NFR-TR-167): таблицы прокручиваются внутри своей рамки. ---------- */
.bk-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.bk-chip{display:inline-flex;align-items:center;gap:8px}
.bk-hot{color:var(--kd-status-error-ink);font-weight:800}
.bk-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:16px;align-items:start;margin:12px 0;min-width:0}
fieldset.bk-form{padding:12px 16px 16px}
.bk-form>.cal-field{justify-content:flex-start}
.bk-form-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;grid-column:1/-1}
.bk-card{margin:0 0 20px}
.bk-card>h4,.bk-card .transport-queue h4{margin:20px 0 8px}
.bk-card .transport-queue h4{margin-top:0}
.bk-list{display:flex;flex-direction:column}
.bk-scroll{max-width:100%;overflow-x:auto;margin:8px 0;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.bk-table{background:var(--kd-color-white)}
.bk-table td{white-space:normal}
.bk-total{margin:12px 0 0;font-weight:800;font-variant-numeric:tabular-nums}
.bk-behalf{margin:16px 0;padding:16px 20px;border-left:3px solid var(--kd-color-signal);background:var(--kd-color-accent-soft);border-radius:0 var(--kd-radius-control) var(--kd-radius-control) 0}
.bk-behalf h4{margin:0 0 6px}
.bk-doc{margin:8px 0;padding:12px 16px;border:1px dashed var(--kd-color-border);border-radius:var(--kd-radius-doc);background:var(--kd-color-white)}
.bk-unread{border-left:3px solid var(--kd-color-signal)}
/* Строки списков раздела — карточки .transport-variant.cal-request: блоки внутри идут сверху вниз по высоте содержимого
   (у полей подбора .transport-variant>div растягивается на 180 px и прижимается вниз — здесь это не нужно). */
.bk-root .transport-variant>div{display:block;flex:0 0 auto;min-width:0}
.bk-root .transport-variant>.cal-request-head{display:flex;flex-direction:row;align-items:center;justify-content:space-between}
.bk-root .transport-variant>.transport-select{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;margin-bottom:0}
.bk-root .transport-variant.cal-request{display:block}
.bk-root .transport-variant.cal-request>*+*{margin-top:8px}
.bk-row .transport-select{margin-bottom:0}
.bk-card .transport-select>span{flex:1 1 220px;min-width:0;overflow-wrap:anywhere}
@media (max-width:680px){
  .bk-form{grid-template-columns:minmax(0,1fr)}
  .bk-root button{max-width:100%;white-space:normal}
  .bk-table{min-width:36em}
  .bk-form-actions>button,.bk-card .transport-select>button{flex:1 1 100%}
  .bk-chip{flex:1 1 calc(50% - 8px);justify-content:space-between;white-space:normal}
  .bk-behalf{padding:12px 16px}
}

/* SPEC-154 FR-TR-64: шахматка поставщика (transport-chess.mjs) — общая для портала и кабинета менеджера. Дни прокручиваются
   внутри таблицы, колонка бортов закреплена; цвета — статусные токены брендбука. */
.chess{display:grid;gap:12px;min-width:0}
.chess-bar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.chess-fields{display:flex;flex-wrap:wrap;gap:12px}
.chess-field{display:grid;gap:4px;font-size:.8125rem;font-weight:700;color:var(--kd-color-muted);text-transform:uppercase;letter-spacing:.04em}
.chess-field input,.chess-field select{min-height:var(--kd-control-h);padding:0 12px;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:400;text-transform:none;letter-spacing:0}
.chess-nav{display:flex;flex-wrap:wrap;gap:8px}
.chess-legend{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:.8125rem;color:var(--kd-color-muted)}
.chess-legend-item{display:inline-flex;align-items:center;gap:6px}
.chess-swatch{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:20px;padding:0 4px;border-radius:4px;font-size:.6875rem;font-weight:700;border:1px solid var(--kd-color-line)}
.chess-scroll{max-width:100%;overflow-x:auto;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-control);background:var(--kd-color-white)}
.chess-scroll:focus-visible{outline:2px solid var(--kd-color-focus);outline-offset:2px}
.chess-table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:.8125rem}
.chess-table th,.chess-table td{padding:3px;border-bottom:1px solid var(--kd-color-line);text-align:center;vertical-align:middle}
.chess-table thead th{position:sticky;top:0;background:var(--kd-color-white);font-weight:700}
.chess-day{min-width:44px}
.chess-day span{display:block;font-size:.875rem}
.chess-day small{display:block;font-weight:400;color:var(--kd-color-muted)}
.chess-day.weekend{background:var(--kd-color-surface)}
.chess-table .chess-board{position:sticky;left:0;z-index:1;min-width:11.25rem;max-width:13.75rem;padding:6px 10px;background:var(--kd-color-white);text-align:left;font-weight:700;white-space:normal;border-right:1px solid var(--kd-color-line)}
.chess-table tbody .chess-board{text-transform:none;letter-spacing:0;font-size:.8125rem;color:var(--kd-color-ink)}
.chess-cell{display:flex;align-items:center;justify-content:center;width:100%;min-width:40px;min-height:32px;padding:0 2px;border-radius:4px;border:1px solid transparent;font-size:.6875rem;font-weight:700;line-height:1.1;white-space:nowrap}
button.chess-cell{min-height:32px;padding:0 2px;font-size:.6875rem}
.chess-cell.free,.chess-swatch.free{background:var(--kd-color-white);border-color:var(--kd-color-line);color:var(--kd-color-muted)}
.chess-cell.l0,.chess-swatch.l0{background:var(--kd-color-surface);border-color:var(--kd-color-line);color:var(--kd-color-muted)}
.chess-cell.hold,.chess-swatch.hold{background:var(--kd-status-info-surface);border-color:var(--kd-status-info-surface);color:var(--kd-status-info-ink)}
.chess-cell.pay,.chess-swatch.pay{background:var(--kd-status-warning-surface);border-color:var(--kd-status-warning-surface);color:var(--kd-status-warning-ink)}
.chess-cell.booked,.chess-swatch.booked{background:var(--kd-status-success-surface);border-color:var(--kd-status-success-surface);color:var(--kd-status-success-ink)}
.chess-cell.busy,.chess-swatch.busy{background:var(--kd-color-graphite);border-color:var(--kd-color-graphite);color:var(--kd-color-white)}
.chess-cell.overdue{box-shadow:inset 0 -3px 0 var(--kd-status-error-ink)}
.chess-cell.conflict,.chess-swatch.conflict{border:2px solid var(--kd-status-error-ink)}
.chess-swatch.conflict{background:var(--kd-status-error-surface);color:var(--kd-status-error-ink)}
button.chess-cell:hover:not(:disabled){border-color:var(--kd-color-ink)}
.chess-lists{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:12px}
.chess-list{padding:12px 16px;border:1px solid var(--kd-color-line);border-radius:var(--kd-radius-card);background:var(--kd-color-white);min-width:0}
.chess-list h3{margin:0 0 8px;font-size:1rem}
.chess-list ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.chess-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding-top:8px;border-top:1px solid var(--kd-color-line);font-size:.875rem;overflow-wrap:anywhere}
.chess-list li:first-child{padding-top:0;border-top:0}
.chess-list li button{min-height:36px}
.chess-hot{color:var(--kd-status-error-ink);font-weight:700}
.chess-error{color:var(--kd-status-error-ink)}
@media (max-width:640px){
  .chess-bar,.chess-fields{display:grid;grid-template-columns:1fr;width:100%}
  .chess-nav>button{flex:1 1 calc(33% - 8px)}
  .chess-table .chess-board{min-width:7.5rem;max-width:8.75rem}
  .chess-list li button{flex:1 1 100%}
}
