/* RigCheck — единый стиль кабинета (с 2026-10-09). Все цвета, отступы, скругления и высоты — только через
   переменные ниже; жёстких #fff и своих px-значений в правилах не заводить.
   Цвета бренда — из логотипа (assets/build_logo.py): тёмно-синий --brand и оранжевый --action.
   Одна главная кнопка на блок (button.primary, оранжевая); красный --bad — только опасное и сломанное.
   Страницы механика — под палец в перчатке (48 и 56px); у оператора и админа body.dense — плотнее. */
:root {
  /* поверхности и текст */
  --bg: #f4f5f7; --card: #ffffff; --ink: #161a1f; --muted: #5c6675; --line: #dfe3e8; --line-strong: #7a8594;
  /* бренд: шапка, табличка трака; действие: главная кнопка, счётчик */
  --brand: #152a42; --on-brand: #ffffff; --on-brand-muted: #b9c3d0;
  --action: #f57a1a; --action-hover: #ff8f3a; --action-press: #e56d0f; --on-action: #152a42;
  /* ссылки, «работает оператор»; выбранное; кольцо фокуса */
  --accent: #0b5cad; --accent-ink: #ffffff; --selected: #152a42; --on-selected: #ffffff; --focus: #0b5cad;
  /* статусы: текст на card/bg/*-soft; на заливке — --on-fill */
  --ok: #1a7f4b; --bad: #b3261e; --warn: #a15c00; --on-fill: #ffffff;
  --ok-soft: #eff8f3; --bad-soft: #fdecea; --warn-soft: #fff1e4;
  /* пузыри ленты */
  --bot: #eef4fb; --me: #f3f1ea; --mech: #eaf5ee;
  --overlay: rgba(0, 0, 0, .45);
  /* шкалы */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px;
  --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-pill: 999px;
  --tap-sm: 36px; --tap-md: 48px; --tap-lg: 56px; --icon: 22px; --page-mech: 640px;
  --shadow-1: 0 1px 2px rgba(21, 42, 66, .08);
  --shadow-key: inset 0 -3px 0 rgba(21, 42, 66, .22), 0 1px 2px rgba(21, 42, 66, .18);
  --shadow-2: 0 4px 12px rgba(21, 42, 66, .14);
  --shadow-3: 0 16px 40px rgba(21, 42, 66, .28);
  --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  /* шрифт логотипа: только латиница и цифры (кириллицы в нём нет); файл подключает base.html */
  --font-display: "Big Shoulders Display", "Arial Narrow", system-ui, sans-serif;
  --font-mono: ui-monospace, Consolas, monospace;
  color-scheme: light dark;
}
/* Тема (с 2026-10-09): Auto — как на телефоне (prefers-color-scheme), Light и Dark — выбор механика, кука rc_theme,
   её ставит сервер атрибутом data-theme на <html>. Значения тёмной темы записаны дважды: для Auto и для явного Dark. */
:root[data-theme="light"] { color-scheme: light; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #111418; --card: #1a1f25; --ink: #e7eaee; --muted: #94a0ae; --line: #2c333c; --line-strong: #7a8695;
    --accent: #5aa7f0; --accent-ink: #08131f; --selected: #5aa7f0; --on-selected: #08131f; --focus: #5aa7f0;
    --ok: #5dc48d; --bad: #f2837b; --warn: #e0a556; --on-fill: #10151b;
    --ok-soft: #1c2922; --bad-soft: #2d1b1a; --warn-soft: #2b2216;
    --bot: #1d2732; --me: #26241f; --mech: #1c2922;
    --overlay: rgba(0, 0, 0, .6);
    --shadow-1: 0 1px 2px rgba(0, 0, 0, .4);
    --shadow-key: inset 0 -3px 0 rgba(0, 0, 0, .28), 0 1px 2px rgba(0, 0, 0, .5);
    --shadow-2: 0 4px 12px rgba(0, 0, 0, .5);
    --shadow-3: 0 16px 40px rgba(0, 0, 0, .6);
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --bg: #111418; --card: #1a1f25; --ink: #e7eaee; --muted: #94a0ae; --line: #2c333c; --line-strong: #7a8695;
  --accent: #5aa7f0; --accent-ink: #08131f; --selected: #5aa7f0; --on-selected: #08131f; --focus: #5aa7f0;
  --ok: #5dc48d; --bad: #f2837b; --warn: #e0a556; --on-fill: #10151b;
  --ok-soft: #1c2922; --bad-soft: #2d1b1a; --warn-soft: #2b2216;
  --bot: #1d2732; --me: #26241f; --mech: #1c2922;
  --overlay: rgba(0, 0, 0, .6);
  --shadow-1: 0 1px 2px rgba(0, 0, 0, .4);
  --shadow-key: inset 0 -3px 0 rgba(0, 0, 0, .28), 0 1px 2px rgba(0, 0, 0, .5);
  --shadow-2: 0 4px 12px rgba(0, 0, 0, .5);
  --shadow-3: 0 16px 40px rgba(0, 0, 0, .6);
  color-scheme: dark;
}
/* Оператор, пульт, админ: мышь и широкий экран — кнопки и поля ниже, текст 15px. */
body.dense { --tap-md: 40px; --tap-lg: 44px; font-size: 15px; }

* { box-sizing: border-box; }
/* hidden прячет всегда, даже если у элемента свой display (select, .row, .quick, #task-file). */
[hidden] { display: none !important; }
body { margin: 0; background: var(--bg); color: var(--ink); font: 400 16px/1.45 var(--font-sans);
  -webkit-text-size-adjust: 100%; }
main { max-width: 1240px; margin: 0 auto; padding: var(--space-4); }
h1 { font: 700 22px/1.2 var(--font-sans); margin: var(--space-1) 0 var(--space-3); }
/* Заголовок страницы механика и слово на входе — шрифтом логотипа (страницы механика по-английски). */
.mech h1, h1.display { font: 700 32px/1 var(--font-display); letter-spacing: .02em; text-transform: uppercase; }
h1.display b { color: var(--action); font-weight: 700; }
h2 { font: 600 13px/1.3 var(--font-sans); margin: 0 0 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
section > h2, main > h2, .mech > h2 { margin-top: var(--space-6); }
a { color: var(--accent); text-underline-offset: 3px; }
small { font-size: 13px; }
.muted { color: var(--muted); }
.pad { padding: var(--space-3) var(--space-4); margin: 0; }
.num { text-align: right; font-variant-numeric: tabular-nums; }
.hint { font-size: 13px; line-height: 1.4; color: var(--muted); margin: 6px 0 0; }

/* --- иконки: класс i-<имя> на кнопке, метке или строке рисует знак перед текстом цветом текста.
   Знак — маска, поэтому подпись можно менять через textContent, а цвет берётся сам в обеих темах.
   Рисунки — Lucide 0.441.0 (ISC), обводка 2.2. Эмодзи в интерфейсе не используются. --- */
[class^="i-"]::before, [class*=" i-"]::before { content: ""; display: inline-block; flex: none; width: var(--icon); height: var(--icon);
  vertical-align: -5px; margin-right: var(--space-2); background: currentColor;
  -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }
button[class*="i-"]::before, .filebtn[class*="i-"]::before, .stop::before { margin-right: 0; }  /* там зазор даёт gap */
button.link[class*="i-"]::before { width: 18px; height: 18px; vertical-align: -3px; margin-right: var(--space-1); }
:root { --i-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); }
.i-check { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E"); }
.i-circle-x { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E %3Cpath d='m15 9-6 6'/%3E %3Cpath d='m9 9 6 6'/%3E%3C/svg%3E"); }
.i-circle-help { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E %3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'/%3E %3Cpath d='M12 17h.01'/%3E%3C/svg%3E"); }
.i-headset { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 11h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5Zm0 0a9 9 0 1 1 18 0m0 0v5a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3Z'/%3E %3Cpath d='M21 16v2a4 4 0 0 1-4 4h-5'/%3E%3C/svg%3E"); }
.i-hand { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2'/%3E %3Cpath d='M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2'/%3E %3Cpath d='M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8'/%3E %3Cpath d='M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15'/%3E%3C/svg%3E"); }
.i-send { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z'/%3E %3Cpath d='m21.854 2.147-10.94 10.939'/%3E%3C/svg%3E"); }
.i-mic { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z'/%3E %3Cpath d='M19 10v2a7 7 0 0 1-14 0v-2'/%3E %3Cline x1='12' x2='12' y1='19' y2='22'/%3E%3C/svg%3E"); }
.i-square { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2'/%3E%3C/svg%3E"); }
.i-camera { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z'/%3E %3Ccircle cx='12' cy='13' r='3'/%3E%3C/svg%3E"); }
.i-image { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2' ry='2'/%3E %3Ccircle cx='9' cy='9' r='2'/%3E %3Cpath d='m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21'/%3E%3C/svg%3E"); }
.i-bell { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9'/%3E %3Cpath d='M10.3 21a1.94 1.94 0 0 0 3.4 0'/%3E%3C/svg%3E"); }
.i-plug { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22v-5'/%3E %3Cpath d='M9 8V2'/%3E %3Cpath d='M15 8V2'/%3E %3Cpath d='M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z'/%3E%3C/svg%3E"); }
.i-plus { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E %3Cpath d='M12 5v14'/%3E%3C/svg%3E"); }
.i-triangle-alert { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3'/%3E %3Cpath d='M12 9v4'/%3E %3Cpath d='M12 17h.01'/%3E%3C/svg%3E"); }
.i-file-text { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z'/%3E %3Cpath d='M14 2v4a2 2 0 0 0 2 2h4'/%3E %3Cpath d='M10 9H8'/%3E %3Cpath d='M16 13H8'/%3E %3Cpath d='M16 17H8'/%3E%3C/svg%3E"); }
.i-clock { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E %3Cpolyline points='12 6 12 12 16 14'/%3E%3C/svg%3E"); }
/* микрофон во время записи — квадрат «стоп» */
.mic.on { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2'/%3E%3C/svg%3E"); }

/* --- шапка --- */
.top { display: flex; align-items: center; gap: var(--space-4); min-height: 56px; padding: 0 var(--space-4);
  background: var(--brand); color: var(--on-brand); }
.top .back { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0 -8px 0 -10px;
  flex: none; border-radius: 50%; color: var(--on-brand); text-decoration: none; }
.top .back:hover, .top .back:focus-visible { background: var(--action); color: var(--on-action); }
.top .back:active { transform: translateX(-2px); }
.top .brand { font: 700 24px/1 var(--font-display); letter-spacing: .02em; text-transform: uppercase; color: var(--on-brand); text-decoration: none; }
.top .brand b { color: var(--action); font-weight: 700; }
.top nav { display: flex; gap: var(--space-4); flex: 1; }
.top nav a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; color: var(--on-brand); font-weight: 600;
  text-decoration: none; white-space: nowrap; }
.top nav a:hover { text-decoration: underline; }
.top .who { margin-left: auto; min-width: 0; display: flex; gap: var(--space-3); align-items: center; color: var(--on-brand-muted);
  font-size: 13px; white-space: nowrap; }
.top .who span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.top .who button.link { color: var(--on-brand); font-size: 13px; flex: none; }
.top a:focus-visible, .top button:focus-visible { outline-color: var(--on-brand); }
@media (max-width: 480px) { .top { gap: var(--space-3); } .top nav { gap: var(--space-3); } }

.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-md); padding: var(--space-4);
  margin-bottom: 14px; box-shadow: var(--shadow-1); }
.card.narrow { max-width: 360px; margin: 12vh auto 0; }
.card.list { padding: 0; overflow: hidden; }
.cols { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: var(--space-4); align-items: start; }
@media (max-width: 900px) { .cols { grid-template-columns: 1fr; } }
/* Планшет лёжа: две колонки, как на компьютере, правая уже */
@media (max-width: 900px) and (min-width: 640px) and (orientation: landscape) {
  .cols { grid-template-columns: minmax(0, 1fr) 280px; gap: var(--space-3); }
}

/* --- поля --- */
label { display: block; font: 600 14px/1.3 var(--font-sans); color: var(--ink); margin-bottom: 10px; }
/* 16px у полей всегда: с шрифтом мельче iPhone приближает страницу при фокусе. Рамка --line-strong: поле видно как поле. */
input, select, textarea { display: block; width: 100%; min-height: var(--tap-md); margin-top: var(--space-1); padding: 0 var(--space-3);
  font: 400 16px/1.4 var(--font-sans); color: var(--ink); background: var(--card);
  border: 1.5px solid var(--line-strong); border-radius: var(--radius-md); }
textarea { padding: 10px var(--space-3); resize: vertical; }
input::placeholder, textarea::placeholder { color: var(--muted); opacity: 1; }
input:focus, select:focus, textarea:focus { outline: 3px solid var(--focus); outline-offset: 1px; border-color: var(--focus); }
input[type="checkbox"], input[type="radio"] { width: 20px; height: 20px; min-height: 0; margin: 0; padding: 0; flex: none; accent-color: var(--selected); }

/* --- кнопки: без класса — вторичная; primary — главная, одна на блок; warn — позвать человека, остановить;
   danger — то, что не отменить; link — мелкое действие в строке. lg — главная кнопка блока у механика,
   small — только плотные экраны оператора, block — во всю ширину. --- */
button, .filebtn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-height: var(--tap-md); margin: 0; padding: 0 var(--space-4);
  font: 600 1em/1.2 var(--font-sans); text-align: center; text-decoration: none;
  color: var(--ink); background: var(--card);
  border: 1.5px solid var(--line-strong); border-radius: var(--radius-md); box-shadow: var(--shadow-1);
  cursor: pointer; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; touch-action: manipulation;
  transition: background-color .12s, border-color .12s, box-shadow .12s, transform .06s; }
button:hover, .filebtn:hover { border-color: var(--ink); }
button:active, .filebtn:active { transform: translateY(1px); box-shadow: none; }
button:focus-visible, .filebtn:focus-within, a:focus-visible, summary:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
button:disabled { opacity: .45; cursor: not-allowed; transform: none; box-shadow: none; }
button:disabled:hover { border-color: var(--line-strong); }
button.primary { background: var(--action); border-color: var(--action); color: var(--on-action); font-weight: 700; box-shadow: var(--shadow-key); }
button.primary:hover { background: var(--action-hover); border-color: var(--action-hover); }
button.primary:active { background: var(--action-press); border-color: var(--action-press); box-shadow: none; }
button.primary:disabled, button.primary:disabled:hover { background: var(--action); border-color: var(--action); box-shadow: none; }
button.warn { background: var(--warn-soft); border-color: var(--warn); color: var(--warn); }
button.warn:hover { border-color: var(--warn); filter: brightness(.97); }
button.danger { background: var(--bad); border-color: var(--bad); color: var(--on-fill); font-weight: 700; box-shadow: var(--shadow-key); }
button.danger:hover { border-color: var(--bad); filter: brightness(1.08); }
button.danger:active { box-shadow: none; filter: brightness(.94); }
button.danger:disabled { filter: none; box-shadow: none; }
button.link { display: inline; min-height: 0; padding: 0; border: 0; border-radius: 4px; background: none; box-shadow: none;
  color: var(--accent); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
button.link:active { transform: none; }
button.lg { min-height: var(--tap-lg); padding: 0 var(--space-6); font-size: 17px; }
button.small { min-height: var(--tap-sm); padding: 0 10px; font-size: 13px; border-radius: var(--radius-sm); flex: none; }
button.block { display: flex; width: 100%; }
button[aria-pressed="true"] { background: var(--selected); border-color: var(--selected); color: var(--on-selected); }
/* идёт запрос: слева крутится кольцо, второй раз не нажать */
button[aria-busy="true"] { pointer-events: none; }
button[aria-busy="true"]::before { content: ""; width: 18px; height: 18px; flex: none; margin: 0; border-radius: 50%; background: none;
  -webkit-mask: none; mask: none; border: 2.5px solid currentColor; border-right-color: transparent; animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { button, .filebtn { transition: none; } button[aria-busy="true"]::before { animation-duration: 2s; } }
.row { display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; margin-top: var(--space-2); }
.row .primary { margin-left: auto; }
.check { display: flex; gap: var(--space-2); align-items: center; margin: 0; font-weight: 400; }
.check input { margin: 0; }
/* Выбор файла — та же вторичная кнопка; само поле спрятано, но остаётся в фокусе клавиатуры. */
.filebtn input { position: absolute; width: 1px; height: 1px; min-height: 0; margin: 0; padding: 0; border: 0; opacity: 0; pointer-events: none; }

.jobrow, .alertrow { display: grid; grid-template-columns: 52px 70px minmax(0, 1fr) auto auto; gap: var(--space-3); align-items: center;
  padding: 11px 14px; border-bottom: 1px solid var(--line); text-decoration: none; color: var(--ink); }
.alertrow { grid-template-columns: 96px minmax(0, 1fr) auto auto; margin: 0; }
.jobrow:last-child, .alertrow:last-child { border-bottom: 0; }
.jobrow:hover { background: var(--bg); }
.jobrow a { color: var(--ink); text-decoration: none; }
.jobrow .num { color: var(--muted); text-align: left; }
.jobrow .unit { font-weight: 700; }
.jobrow .title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Новое с той стороны прямо на карточке заказа: механику — ответ оператора, оператору — сообщение механика. */
.jobrow .reply { grid-column: 3 / -1; font-size: 13px; color: var(--accent); overflow: hidden;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.jobrow .reply:empty { display: none; }
/* Сводка «Мой ход» на странице заказов: группа — заголовок со счётчиком и список; пустые группы скрыты. */
.movegroup { margin-bottom: var(--space-3); }
.movegroup h2 .count { display: inline-block; min-width: 22px; margin-left: 6px; padding: 0 7px; border-radius: var(--radius-pill);
  background: var(--line); color: var(--ink); font: 700 13px/22px var(--font-sans); text-align: center; vertical-align: middle; }
.movegroup[data-group="mine"] h2 .count { background: var(--action); color: var(--on-action); }
.jobhead .vin-tail { font-weight: 400; color: var(--muted); }
.daysep { margin: var(--space-3) 0 var(--space-1); text-align: center; color: var(--muted); font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
#m-jobs-box.hide-closed tr[data-status="closed"] { display: none; }
.hidecl { margin-left: var(--space-3); font-size: 14px; font-weight: 400; text-transform: none; letter-spacing: 0; }
select.assign { min-width: 150px; margin: 0; }
.searchbar { display: flex; gap: var(--space-2); align-items: center; margin: 0 0 var(--space-3); }
.searchbar input { flex: 1 1 auto; min-width: 0; margin: 0; }
.searchbar button { margin: 0; flex: none; }
details.visits ul { margin: var(--space-2) 0 0; padding-left: 18px; }
details.visits li { margin: 0 0 var(--space-2); overflow-wrap: anywhere; }
details.visits .outcome { display: block; margin-top: 2px; color: var(--muted); white-space: pre-line; }
.jobrow.unread { background: var(--bot); box-shadow: inset 4px 0 0 var(--action); }
/* Закрытое — цветом из палитры, а не прозрачностью: прозрачность съедает контраст текста (было .closed { opacity: .55 }
   у строк таблиц админа и менеджера: подпись закрытого читалась хуже 3:1). Плашки статуса держат свой цвет. */
tr.closed td, tr.closed td a { color: var(--muted); }
.jobrow.closed,.jobrow.closed a, .jobrow.closed .unit, .jobrow.closed .title { color: var(--muted); }
.when { font-size: 13px; white-space: nowrap; }

/* --- статус: .pill (в строке) и .station (отдельной строкой) — один вид. Слово обязательно, цвет и точка — к нему.
   attn — «твой ход»; без класса — в работе; neutral — ждём, закрыт; ok — готово; danger — ошибка, нет связи. --- */
.pill, .station { display: inline-flex; align-items: center; gap: 6px; min-height: 26px; margin: 0; padding: 2px 10px 2px 9px;
  border: 1px solid transparent; border-radius: var(--radius-pill); font: 600 13px/1.2 var(--font-sans); letter-spacing: 0;
  text-transform: none; white-space: nowrap; background: var(--bot); color: var(--accent); }
.pill::before, .station::before { content: ""; width: 8px; height: 8px; flex: none; border-radius: 50%; background: currentColor; }
.pill.neutral, .pill.turn { background: var(--bg); border-color: var(--line); color: var(--muted); }
.pill.neutral::before { background: none; border: 2px solid currentColor; }
.pill.ok, .station.on { background: var(--ok-soft); color: var(--ok); }
.pill.attn, .pill.turn.t-mechanic, .station.mine { background: var(--warn-soft); border-color: transparent; color: var(--warn); }
.pill.attn::before, .pill.turn.t-mechanic::before, .station.mine::before { background: var(--action); }
.pill.turn.t-operator { background: var(--bot); border-color: transparent; color: var(--accent); }
.pill.danger, .station.off { background: var(--bad-soft); color: var(--bad); }
.station.mine { min-height: 36px; padding: 6px 14px 6px 12px; font-size: 15px; white-space: normal; }
/* Длинный статус («чей ход», «You're confirmed ready — …») переносится по словам и не шире строки: в одну строку он тянул страницу
   шире экрана телефона (проверка выкатки 10.10: 451 px при 390). Короткие плашки в таблицах и списках остаются в одну строку. */
#mech-status, .pill.turn, .pill[data-turn] { white-space: normal; max-width: 100%; }
.jobhead { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; margin-bottom: var(--space-3); }
.jobhead h1 { margin: 0; }
.jobhead .station { margin-left: auto; }
.jobhead .pill, .jobhead .station { align-self: center; }
.vin { font-family: var(--font-mono); font-size: 13px; color: var(--muted); }

.label { font: 600 12px/1.3 var(--font-sans); text-transform: uppercase; letter-spacing: .05em; color: var(--muted); margin: 0 0 var(--space-1); }
.step .goal { margin: 0 0 var(--space-3); }
.step .next { font-size: 19px; line-height: 1.35; font-weight: 600; margin: 0 0 var(--space-3); }
.step .next.done { color: var(--ok); }
.checks { list-style: none; margin: 0 0 var(--space-1); padding: 0; border-top: 1px solid var(--line); }
.checks li { display: flex; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.checks small { color: var(--muted); }
.checks .mark { width: 20px; height: 20px; flex: none; border-radius: 50%; text-align: center; line-height: 20px;
  font-size: 12px; font-weight: 700; color: var(--on-fill); margin-top: 2px; }
.checks .ok .mark { background: var(--ok); }
.checks .bad .mark { background: var(--bad); }
.checks .unknown .mark { background: var(--warn); }
.quick { display: flex; gap: var(--space-2); flex-wrap: wrap; margin-top: var(--space-3); }
.quick button { flex: 1; min-width: 130px; min-height: var(--tap-lg); }

.confirm { border: 2px solid var(--bad); }
.confirm pre, .note { white-space: pre-wrap; font: inherit; margin: 6px 0 10px; }
.note { font-size: 17px; line-height: 1.5; }

.thread { display: flex; flex-direction: column; gap: var(--space-2); max-height: 62vh; overflow-y: auto; padding-right: var(--space-1); }
.thread:empty::before { content: "Лента пуста."; color: var(--muted); }
[lang=en] .thread:empty::before { content: "No messages yet."; }
[lang=es] .thread:empty::before { content: "Aún no hay mensajes."; }
.entry { padding: var(--space-2) var(--space-3); border-radius: var(--radius-md); border-bottom-right-radius: 4px; background: var(--me);
  max-width: 92%; align-self: flex-end; }
.entry.r-bot { background: var(--bot); align-self: flex-start; border-bottom-right-radius: var(--radius-md); border-bottom-left-radius: 4px; }
.entry.r-mechanic { background: var(--mech); }
.entry.k-system, .entry.k-billing, .entry.k-mech_info, .entry.k-draft_drop { background: none; align-self: center; color: var(--muted);
  font-size: 13px; padding: 2px var(--space-2); text-align: center; border-radius: 0; }
.entry.k-confirm { border: 1px solid var(--line); }
.entry.k-billing .meta, .entry.k-billing .text { display: inline; }
.entry .meta { font-size: 12px; color: var(--muted); margin-bottom: 2px; }
.entry.k-system .meta { display: inline; }
.entry.k-system .text { display: inline; }
.entry .tag { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--accent); }
.entry .tag[class*="i-"]::before { width: 14px; height: 14px; vertical-align: -2px; margin-right: var(--space-1); }
.entry .text { white-space: pre-wrap; overflow-wrap: anywhere; }
.entry img, .entry video { display: block; max-width: 100%; max-height: 320px; border-radius: var(--radius-sm); margin-top: 6px; }
.busy { color: var(--muted); font-size: 13px; padding: var(--space-2) 2px 0; }
.busy::after { content: ""; display: inline-block; width: 1.2em; text-align: left; animation: dots 1.2s steps(4) infinite; }
@keyframes dots { 0% { content: ""; } 25% { content: "."; } 50% { content: ".."; } 75% { content: "..."; } }
@media (prefers-reduced-motion: reduce) { .busy::after { animation: none; } }
.composer { margin-top: var(--space-3); border-top: 1px solid var(--line); padding-top: var(--space-3); }
.composer.flat { margin-top: 0; border-top: 0; padding-top: 0; }
.composer textarea { margin-top: 0; }
/* задание и прямое сообщение оператора выделены в ленте рамкой */
.entry.k-to_mech, .entry.k-tech_note { border: 1px solid var(--accent); }

#screen { width: 100%; border: 1px solid var(--line); border-radius: var(--radius-sm); margin-bottom: var(--space-2); cursor: zoom-in; }
details.card summary { cursor: pointer; font-weight: 600; }
details.card form { margin-top: var(--space-3); }

.tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: var(--space-3); }
.tile .big { font-size: 20px; font-weight: 700; margin: 0 0 var(--space-1); }
.tile.on .big { color: var(--ok); }
.tile.off .big { color: var(--bad); }
.tile p { margin: 0; }
.tablewrap { padding: 0; overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: 9px var(--space-3); border-bottom: 1px solid var(--line); vertical-align: top; }
th { font-size: 12px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 600; }
tr:last-child td { border-bottom: 0; }
th.num, td.num { text-align: right; }
.card.inline { display: flex; gap: var(--space-3); align-items: flex-end; flex-wrap: wrap; }
.card.inline h2 { width: 100%; margin: 0; }
.card.inline label { flex: 1; min-width: 150px; margin: 0; }

.mech { max-width: var(--page-mech); margin: 0 auto; }
/* Список «My jobs»: слева номер юнита шрифтом логотипа, жалоба — до двух строк (в одну строку она обрезалась
   до «Won't shift ab…»); колонка 84px — под шесть знаков VIN у заказа через Connect, статус и время — под ней, новое от оператора — третьей строкой. */
.mech .jobrow { grid-template-columns: 84px minmax(0, 1fr); grid-template-areas: "unit title" "num meta" ". reply";
  gap: 6px var(--space-3); min-height: 76px; padding: 14px var(--space-4); }
.mech .jobrow .unit { grid-area: unit; font: 700 24px/1 var(--font-display); letter-spacing: .02em; }
.mech .jobrow .num { grid-area: num; font-size: 13px; }
.mech .jobrow .title { grid-area: title; font-weight: 600; white-space: normal; display: -webkit-box; -webkit-box-orient: vertical;
  -webkit-line-clamp: 2; line-clamp: 2; }
.mech .jobrow .meta { grid-area: meta; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-3); }
.mech .jobrow .reply { grid-area: reply; font-size: 14px; }
.mech .jobrow.closed .title { font-weight: 400; }
.mech .tile .big { font: 700 32px/1 var(--font-display); letter-spacing: .02em; text-transform: uppercase; margin: 2px 0 6px; }
/* Под «Open now»: открыто / завершено за день и за всё время — подпись слева, цифры справа */
.mech .tile .tally { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 2px var(--space-3); margin: 0; color: var(--muted); }
.mech .tile .tally { align-items: center; }
.mech .tile .tally dt { font-weight: 600; color: var(--ink); }
.mech .tile .tally dd { margin: 0; display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }
/* Число в плитке — ссылка на список этих заказов (GET /mech?show=…&when=…): кнопка не ниже 44 px под палец,
   открытый сейчас список — залит цветом выбранного (как переключатели темы и языка). */
.mech .tile .tally a.tl { display: inline-flex; align-items: center; min-height: 44px; padding: 0 var(--space-3);
  border: 1.5px solid var(--line-strong); border-radius: var(--radius-pill); color: var(--ink); font-weight: 600; text-decoration: none; }
.mech .tile .tally a.tl:hover { background: var(--bg); }
.mech .tile .tally a.tl[aria-current="true"] { background: var(--selected); border-color: var(--selected); color: var(--on-selected); }
/* Заголовок списка за числом плитки: название и счётчик слева, «назад к текущим» справа */
.mech .shown-head { justify-content: space-between; margin: var(--space-4) 0 var(--space-2); }
.mech .shown-head h2 .count { display: inline-block; min-width: 22px; margin-left: 6px; padding: 0 7px; border-radius: var(--radius-pill);
  background: var(--line); color: var(--ink); font: 700 13px/22px var(--font-sans); text-align: center; vertical-align: middle; }
.mech .shown-head .back { display: inline-flex; align-items: center; min-height: 44px; color: var(--accent); font-weight: 600; }
.bell { display: inline-block; min-width: 22px; padding: 0 6px; border-radius: var(--radius-pill); background: var(--action);
  color: var(--on-action); font: 700 13px/22px var(--font-sans); text-align: center; }
.bell[hidden] { display: none; }
/* Язык задания механику: EN — оригинал, ES и RU — перевод. Кнопки крупные: руки в перчатках, цель — не ниже 44px. */
.note-head { display: flex; align-items: center; gap: var(--space-2); margin: 0 0 var(--space-1); }
.note-head .label { margin: 0; }
.langs, .field.choice .opts { display: inline-flex; padding: 3px; gap: 3px; background: var(--bg);
  border: 1.5px solid var(--line-strong); border-radius: var(--radius-md); }
.langs { margin-left: auto; }
.langs button, .field.choice .opts button { min-height: 44px; min-width: 52px; padding: 0 var(--space-3); border: 0;
  border-radius: var(--radius-sm); background: none; box-shadow: none; color: var(--ink); font-size: 15px; }
.langs button[aria-pressed="true"], .field.choice .opts button[aria-pressed="true"] { background: var(--selected); color: var(--on-selected);
  box-shadow: var(--shadow-1); }
.note-hint { font-size: 13px; margin: 0; }
.fresh { box-shadow: 0 0 0 3px var(--focus); transition: box-shadow .3s; }
dialog { border: 0; border-radius: var(--radius-lg); padding: var(--space-5); background: var(--card); color: var(--ink);
  width: min(480px, 94vw); box-shadow: var(--shadow-3); }
dialog::backdrop { background: var(--overlay); }
dialog h2 { font: 700 22px/1.2 var(--font-sans); letter-spacing: 0; text-transform: none; color: var(--ink); margin: 0 0 var(--space-4); }
dialog .row { margin-top: var(--space-4); }
dialog .row > button { flex: 1 1 0; }
dialog .row > .primary { flex: 2 1 0; margin-left: 0; }
.worklist { margin: 0; padding-left: 18px; }
.mic.on { background: var(--bad); border-color: var(--bad); color: var(--on-fill); }
.mic-msg { font-size: 13px; margin: var(--space-2) 0 0; }
.mech .composer { border: 0; padding: 0; margin: 0; }

/* --- счёт в заказе --- */
#invoice h2 { display: flex; gap: var(--space-2); align-items: center; text-transform: none; letter-spacing: 0; color: var(--ink); font-size: 15px; }
#invoice h2 .muted { font-weight: 400; }
.lines { width: 100%; border-collapse: collapse; margin-bottom: 10px; }
.lines td { padding: 6px var(--space-1); border-bottom: 1px solid var(--line); vertical-align: top; }
.lines tr.total td { border-bottom: 0; padding-top: var(--space-2); }
.lines td:last-child { width: 24px; text-align: right; }
.addline { border-top: 1px solid var(--line); padding-top: 10px; margin-top: var(--space-1); }
.addline .row label { margin: 0; }
.invoice-actions { border-top: 1px solid var(--line); padding-top: 10px; margin-top: var(--space-3); }

/* --- механик ↔ оператор: чей ход, задание, готовность, черновики --- */
.turn { font-size: 12px; color: var(--muted); }
.t-mechanic { color: var(--warn); }
.t-operator { color: var(--accent); }
.okline, .ok-text { color: var(--ok); }
.okline, .warnline, .error { margin: 6px 0; font-weight: 600; }
.error { color: var(--bad); }
.warnline { color: var(--warn); }
p.mic-msg.error { font-weight: 400; margin: var(--space-2) 0 0; }
/* Связь с траком и картина разбора на странице механика. Строка лампочек — p.link: у кнопки-ссылки тот же класс. */
p.link, .lamps { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); align-items: center; margin: 0 0 var(--space-3);
  font-size: 14px; color: var(--muted); }
.lamp { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; font-weight: 600; }
.lamp::before { content: ""; width: 12px; height: 12px; border-radius: 50%; background: var(--line-strong); }
.lamp.on { color: var(--ok); } .lamp.on::before { background: var(--ok); }
/* «нет» — пустое кольцо, а не закрашенный круг: различие не только цветом */
.lamp.off { color: var(--bad); } .lamp.off::before { background: none; border: 3px solid var(--bad); }
/* Новая работа механика: предупреждение, два вида разъёма, табличка трака */
.stop { display: flex; gap: var(--space-3); align-items: flex-start; margin: 0 0 var(--space-3); padding: var(--space-3) var(--space-4);
  border: 2px solid var(--bad); border-radius: var(--radius-md); background: var(--bad-soft); color: var(--bad);
  font-weight: 700; font-size: 17px; line-height: 1.35; }
.steps { margin: 0 0 var(--space-3); padding-left: 22px; }
.steps > li { margin-bottom: var(--space-2); }
dialog .composer { border: 0; padding: 0; margin: 0; }
.ports { display: flex; align-items: stretch; gap: var(--space-2); margin: var(--space-2) 0 var(--space-1) -22px; }
.ports figure { flex: 1 1 0; margin: 0; padding: var(--space-2) 6px; border: 1px solid var(--line); border-radius: var(--radius-md); text-align: center; }
.ports svg { display: block; width: 96px; max-width: 100%; margin: 0 auto var(--space-1); }
.ports .shell { fill: var(--bg); stroke: var(--ink); stroke-width: 2.5; stroke-linejoin: round; }
.ports .face { fill: none; stroke: var(--muted); stroke-width: 1.5; stroke-linejoin: round; }
.ports .key { fill: var(--ink); } .ports .pins { fill: var(--ink); }
.ports figcaption b { font-size: 17px; }
.ports figcaption small { display: block; color: var(--muted); line-height: 1.3; margin-top: 2px; }
.ports .or { align-self: center; font-weight: 600; color: var(--muted); text-transform: uppercase; font-size: 12px; letter-spacing: .05em; }
.connect-fail p.link { margin-bottom: var(--space-1); } .connect-fail .error { margin: 0 0 var(--space-1); }
/* Табличка трака: заголовок на цвете бренда — модель и VIN, ниже показатели */
.truckcard { border: 1px solid var(--line); border-radius: var(--radius-md); margin: 0 0 var(--space-3); background: var(--card);
  overflow: hidden; box-shadow: var(--shadow-1); }
.truckcard p { margin: 0; }
.truckcard .tc-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px var(--space-3); min-height: 40px;
  padding: var(--space-2) var(--space-4); background: var(--brand); color: var(--on-brand); font-weight: 700; font-size: 17px; line-height: 1.3; }
.truckcard .tc-vin { font-family: var(--font-mono); font-size: 14px; font-weight: 400; letter-spacing: .03em; }
.truckcard .tc-title .tc-vin { color: var(--on-brand-muted); }
.truckcard .tc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: var(--space-2) var(--space-3);
  margin: 0; padding: var(--space-2) var(--space-4) 10px; }
.truckcard .tc-grid dd { text-align: left; }
.truckcard dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px var(--space-3); margin: 0; padding: 10px var(--space-4) var(--space-3); }
.truckcard dt { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); align-self: center; }
.truckcard dd { margin: 0; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; }
.truckcard dd.tc-vin { color: var(--ink); }
/* Табличка на странице заказа механика: сверху и закреплена, как до этапа 1 (12.10.2026). Полоса цвета бренда — слева
   «‹ Jobs» к списку заказов, дальше модель и VIN; нажатие на полосу сворачивает табличку в одну строку (.folded). */
.truckcard.pin { position: sticky; top: 0; z-index: 5; box-shadow: var(--shadow-2); }
.truckcard.pin .tc-bar { display: flex; align-items: stretch; background: var(--brand); color: var(--on-brand); }
.truckcard.pin .tc-back { flex: none; display: inline-flex; align-items: center; gap: 2px; min-width: 44px; min-height: var(--tap-md);
  padding: 0 var(--space-3) 0 var(--space-2); color: var(--on-brand); font-weight: 700; font-size: 16px; text-decoration: none; }
.truckcard.pin .tc-back:hover, .truckcard.pin .tc-back:focus-visible { background: var(--action); color: var(--on-action); }
.truckcard.pin .tc-back:focus-visible, .truckcard.pin .tc-head:focus-visible { outline-color: var(--on-brand); outline-offset: -4px; }
.truckcard.pin .tc-head { flex: 1; min-width: 0; display: flex; align-items: center; justify-content: flex-start; gap: var(--space-2);
  min-height: var(--tap-md); margin: 0; padding: var(--space-1) var(--space-3); border: 0; border-radius: 0; background: none; box-shadow: none;
  color: var(--on-brand); font: 700 17px/1.3 var(--font-sans); text-align: left; }
.truckcard.pin .tc-back + .tc-head { padding-left: var(--space-1); }
.truckcard.pin button.tc-head:active { transform: none; }
.truckcard.pin .tc-full { flex: 1; min-width: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--space-3); }
/* свёрнутая: модель, хвост VIN и одометр; на узком телефоне — в две строки, а не обрезанной на «Freightliner · …» */
.truckcard.pin .tc-short { display: none; flex: 1; min-width: 0; overflow: hidden; font-size: 15px; line-height: 1.25;
  -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.truckcard.pin.folded .tc-full { display: none; }
.truckcard.pin.folded .tc-short { display: -webkit-box; }
.truckcard.pin .tc-bar .tc-vin { color: var(--on-brand-muted); }
.truckcard.pin .tc-chev { flex: none; width: var(--icon); height: var(--icon); background: currentColor; transform: rotate(180deg);
  -webkit-mask: var(--i-chevron) center / contain no-repeat; mask: var(--i-chevron) center / contain no-repeat; transition: transform .15s; }
.truckcard.pin.folded .tc-chev { transform: none; }
.truckcard.pin .tc-grid[hidden] { display: none; }
/* Показатели (12.10.2026): год · марка · модель, VIN, пробег · моточасы · марка двигателя, модель · серийный двигателя, жалоба.
   Телефон — три колонки, широкий экран — пять; VIN и серийный номер шире, жалоба — строкой во всю ширину, до двух строк. */
.truckcard.pin .tc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.truckcard.pin .tc-grid dd { overflow-wrap: anywhere; line-height: 1.25; }
.truckcard.pin .tc-grid .tc-wide, .truckcard.pin .tc-grid .tc-row { grid-column: 1 / -1; }
.truckcard.pin .tc-grid .tc-id { grid-column: span 2; }
.truckcard.pin .tc-said { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
@media (min-width: 640px) {
  .truckcard.pin .tc-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .truckcard.pin .tc-grid .tc-wide { grid-column: span 2; }
  .truckcard.pin .tc-grid .tc-id { grid-column: span 1; }
}
@media (max-width: 639px) { .truckcard.pin .tc-grid { padding: 6px var(--space-3) var(--space-2); gap: var(--space-1) var(--space-3); }
  .truckcard.pin .tc-grid dt { font-size: 11px; line-height: 1.2; }
  .truckcard.pin .tc-grid dd { font-size: 15px; line-height: 1.2; } }
/* Заказ механика: слева переписка и ответ, справа задание — свёрнутая карточка, по нажатию раскрывается.
   На телефоне один столбец: переписка, задание, ответ. */
details.task summary { position: relative; display: flex; flex-wrap: wrap; gap: 6px var(--space-2); align-items: center; padding-right: 44px;
  cursor: pointer; list-style: none; }
details.task summary::-webkit-details-marker { display: none; }
details.task summary .label { margin: 0; }
details.task .task-title { flex: 1 1 100%; font-size: 19px; line-height: 1.3; font-weight: 600; }
/* Шеврон раскрытия справа: нажимается вся шапка, шеврон только показывает, что карточка раскрывается. */
details.task .task-open { position: absolute; right: -8px; top: 0; display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 50%; }
details.task .task-open::after { content: ""; width: var(--icon); height: var(--icon); background: currentColor;
  -webkit-mask: var(--i-chevron) center / contain no-repeat; mask: var(--i-chevron) center / contain no-repeat; transition: transform .15s; }
details.task[open] .task-open::after { transform: rotate(180deg); }
details.task summary:hover .task-open { background: var(--bg); color: var(--ink); }
details.task[open] summary { margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
details.task .langs { margin: 0 0 var(--space-1); }
/* Строка над текстом задания: язык, размер шрифта (только во весь экран) и «Full screen» справа. */
.task-tools { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin: 0 0 var(--space-1); }
details.task .task-tools .langs { margin: 0; }
.task-tools .task-full-btn { margin-left: auto; min-height: 44px; padding: 0 var(--space-3); font-size: 15px; }
.task-size { display: none; gap: var(--space-1); }
.task-size button { min-width: 52px; min-height: 44px; padding: 0 var(--space-2); font-size: 17px; }
/* Задание во весь экран (12.10.2026): поверх страницы и крупно; строка инструментов прилипает сверху, кнопки ответа внизу текста.
   z-index колонки .mech-side поднят: на широком экране она липкая и держит свой слой, иначе табличка и «Call the operator» были бы сверху. */
details.task.full { position: fixed; inset: 0; z-index: 50; margin: 0; max-width: none; border: 0; border-radius: 0; box-shadow: none;
  overflow-y: auto; overscroll-behavior: contain; background: var(--card);
  padding: 0 max(var(--space-4), calc((100% - 820px) / 2)) calc(var(--space-6) + env(safe-area-inset-bottom, 0px)); }
details.task.full summary { cursor: default; padding-top: var(--space-4); padding-right: 0; }
details.task.full summary .task-open { display: none; }
details.task.full .task-title { font-size: calc(var(--task-fs, 20px) + 2px); }
details.task.full .task-tools { position: sticky; top: 0; z-index: 1; margin: 0 0 var(--space-2); padding: var(--space-2) 0;
  background: var(--card); border-bottom: 1px solid var(--line); }
details.task.full .task-size { display: inline-flex; }
details.task.full .note { font-size: var(--task-fs, 20px); line-height: 1.6; }
details.task.full .task-actions { max-width: 560px; }
/* узкий телефон: язык, A− / A+ и закрытие — одной строкой; «Close» — знаком (подпись в aria-label) */
@media (max-width: 479px) {
  details.task.full .task-size button { min-width: 44px; }
  details.task.full .task-full-btn { width: 48px; padding: 0; }
  details.task.full .task-full-btn .tf-label { display: none; }
}
body.task-full { overflow: hidden; }
body.task-full .mech-side { z-index: 60; }
/* Липкая правая колонка стоит ниже закреплённой таблички трака: --pin — её высота с запасом. */
.mech.job { --pin: 164px; }  /* телефон: показатели таблички в два ряда */
@media (min-width: 900px), (min-width: 640px) and (orientation: landscape) {
  .mech.job { max-width: 1100px; --pin: 112px; }
  .mech.home { max-width: 1100px; }  /* «My jobs» на планшете лёжа и компьютере — во всю ширину, как заказ */
  .mech-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 400px); column-gap: var(--space-4); align-items: start; }
  .mech-cols > * { grid-column: 1; min-width: 0; }
  .mech-cols > .mech-side { grid-column: 2; grid-row: 1 / span 2; position: sticky; top: var(--pin); max-height: calc(100vh - var(--pin) - 16px); overflow-y: auto; }
  .mech.job .chat .thread { max-height: 52vh; }
}
.mech .card { scroll-margin-top: var(--pin, 164px); }
/* Прежние задания без «Done» — под текущим, свёрнутые, поменьше */
.older-label { margin: var(--space-1) 0 var(--space-2); }
/* Оператор: незакрытые задания механику с кнопкой «Закрыть без ответа» */
.mech-open { margin: 0 0 10px; }
.mech-open-row { display: flex; gap: var(--space-2); align-items: center; justify-content: space-between; padding: var(--space-1) 0;
  border-bottom: 1px solid var(--line); font-size: 13px; }
.mech-open-row:last-child { border-bottom: 0; }
.mech-open-row span { min-width: 0; overflow-wrap: anywhere; }
details.task.older .task-title { font-size: 16px; }
details.task.older { border-style: dashed; box-shadow: none; }
/* ответ механика привязан к этому прежнему заданию (2026-10-09) */
details.task.older.bound { border: 2px solid var(--warn); border-style: solid; }
#say-bound { font-weight: 400; display: block; } #say-bound button.link { display: inline; font-weight: 600; }
/* «· back to a plain message» в подписи формы: цель нажатия 44px (было 14px — в перчатках не попасть). Строка подписи
   при этом не растёт: лишняя высота уходит в отрицательные поля, нажимаемая область заходит на соседние строки. */
#say-cancel { display: inline-flex; align-items: center; min-height: 44px; margin: -14px 0 -14px var(--space-1); }
#ready-stop { margin-top: var(--space-1); }
/* «Not ready» и «ready» — в ряд, пока помещаются; на телефоне — друг под другом во всю ширину */
#ready-buttons > button { flex: 1 1 200px; }
/* Планшет лёжа (и невысокий экран): всё плотнее, чтобы задание справа и переписка слева влезали в кадр */
@media (orientation: landscape) and (min-width: 640px) and (max-height: 900px) {
  body { --tap-md: 44px; --tap-lg: 48px; }
  main { padding: 10px var(--space-3); }
  .top { min-height: 48px; }
  .card { padding: 10px var(--space-3); margin-bottom: 10px; }
  .mech.job { --pin: 96px; }
  .mech-cols { column-gap: var(--space-3); grid-template-columns: minmax(0, 1fr) minmax(280px, 360px) !important; }
  .truckcard { margin-bottom: var(--space-2); }
  .truckcard .tc-title { min-height: 34px; padding: 6px var(--space-3); font-size: 15px; }
  .truckcard.pin .tc-head { font-size: 15px; }
  .truckcard .tc-grid { padding: 6px var(--space-3) var(--space-2); gap: var(--space-1) var(--space-3); }
  #mech-status, #mech-operator, p.link { margin-bottom: 6px !important; }
  details.task .task-title { font-size: 16px; }
  details.task[open] summary { margin-bottom: 6px; padding-bottom: 6px; }
  .task-actions { margin-top: var(--space-2); gap: 6px; }
  .mech.job .chat .thread { max-height: calc(100vh - 330px); min-height: 140px; }
  .note { font-size: 15px; }
}  /* страница докручивается к заданию — не под закреплённую табличку */
details.brief summary { display: flex; flex-wrap: wrap; gap: 6px var(--space-2); align-items: center; }
details.brief summary .label { margin: 0; }
/* Поля показаний задания в ответе механика */
.fields { display: grid; gap: 10px; margin: 0 0 10px; }
.field { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); margin: 0; color: var(--ink); font-size: 15px; font-weight: 600; }
.field .fname { flex: 1 1 100%; }
.field .fname small { color: var(--muted); font-weight: 400; }
.field input { flex: 1 1 120px; margin: 0; font-size: 18px; font-variant-numeric: tabular-nums; }
.field .funit { color: var(--muted); min-width: 34px; }
.field.choice .opts { display: flex; flex: 1 1 100%; }
.field.choice .opts button { flex: 1 1 0; min-height: var(--tap-md); font-size: 16px; }
.field.missing .fname { color: var(--bad); }
.field.missing input, .field.missing .opts { border-color: var(--bad); }
.say-note, .mech .say-note { display: block; margin: 0 0 10px; padding: 6px 0; }
.composer.form-mode textarea, .composer.form-mode #mic, .composer.form-mode #mic-lang, .composer.form-mode #mic-msg { display: none; }
details.brief summary .muted { font-weight: 400; }
/* у flex-summary нет своего треугольника — рисуем, иначе не видно, что карточка раскрывается */
details.brief summary { list-style: none; }
details.brief summary::-webkit-details-marker { display: none; }
details.brief summary::after { content: ""; width: var(--icon); height: var(--icon); margin-left: auto; background: var(--muted);
  -webkit-mask: var(--i-chevron) center / contain no-repeat; mask: var(--i-chevron) center / contain no-repeat; transition: transform .15s; }
details.brief[open] summary::after { transform: rotate(180deg); }
details.brief .note { font-size: 15px; margin-top: 10px; }
/* История по VIN: прошлые заказы столбиком, у каждого — заголовок, статус, проверки с показаниями и работы. */
.history-found { margin: var(--space-3) 0; padding: var(--space-3); border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--card); }
.history-found .label { margin: 0 0 var(--space-1); }
.history-found ul { margin: 0; padding-left: 20px; }
.history-found li { margin: 2px 0; overflow-wrap: anywhere; }
/* Модалка «New job» вписывается в экран (2026-10-13, просьба Зафара: «чтобы всё окно было видно»). Окно не выше экрана:
   заголовок и кнопки стоят на месте, прокручивается только середина (.dlg-body); линия над кнопками и срез карточки у края
   показывают, что ниже есть ещё. Чем ниже экран, тем плотнее отступы, рисунки и шрифт — прокрутка нужна как можно реже.
   Высота в dvh (без полос браузера на телефоне), vh — запасная. Правила под ID, чтобы не спорить с общим dialog выше по файлу.
   Фон-«тень прокрутки» здесь не работает: карточки внутри (табличка, история) закрашены и перекрывают его. */
#new-job-dialog { --dlg-x: var(--space-5); --dlg-gap: var(--space-2); padding: 0; overflow: hidden; max-width: none;
  width: min(480px, calc(100vw - 2 * var(--dlg-gap)));
  max-height: calc(100vh - 2 * var(--dlg-gap)); max-height: calc(100dvh - 2 * var(--dlg-gap)); }
#new-job-dialog[open] { display: flex; flex-direction: column; }
#new-job-dialog form { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
#new-job-dialog h2 { flex: none; margin: 0; padding: var(--space-5) var(--dlg-x) var(--space-3); }
#new-job-dialog [data-step] { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
#new-job-dialog .dlg-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 0 var(--dlg-x); }
#new-job-dialog .row { flex: none; margin: 0; padding: var(--space-3) var(--dlg-x) var(--space-5); border-top: 1px solid var(--line); }
@media (max-height: 760px) {
  #new-job-dialog { --dlg-x: var(--space-4); }
  #new-job-dialog h2 { padding-top: var(--space-4); padding-bottom: var(--space-2); font-size: 20px; }
  #new-job-dialog .row { padding-top: var(--space-2); padding-bottom: var(--space-4); }
  #new-job-dialog .stop { margin-bottom: var(--space-2); padding: var(--space-2) var(--space-3); font-size: 15px; }
  #new-job-dialog .steps { margin-bottom: var(--space-2); font-size: 15px; line-height: 1.35; }
  #new-job-dialog .steps > li { margin-bottom: var(--space-1); }
  #new-job-dialog .ports { margin-top: var(--space-1); }
  #new-job-dialog .ports figure { padding: var(--space-1) 6px; }
  #new-job-dialog .ports svg { width: 72px; }
  #new-job-dialog .ports figcaption b { font-size: 16px; }
  #new-job-dialog .ports figcaption small { font-size: 12px; }
  #new-job-dialog label { margin-bottom: var(--space-2); }
  #new-job-dialog p.link { margin-bottom: var(--space-2); }
  #new-job-dialog .truckcard { margin-bottom: var(--space-2); }
  #new-job-dialog .truckcard .tc-title { min-height: 0; padding: var(--space-1) var(--space-3); font-size: 16px; }
  #new-job-dialog .truckcard dl { gap: 2px var(--space-3); padding: var(--space-2) var(--space-3); }
  #new-job-dialog .history-found { margin: var(--space-2) 0; padding: var(--space-2) var(--space-3); }
}
@media (max-height: 600px) {
  #new-job-dialog { --tap-md: 44px; --tap-lg: 48px; }
  #new-job-dialog h2 { padding-top: var(--space-3); font-size: 18px; }
  #new-job-dialog .row { padding-top: var(--space-2); padding-bottom: var(--space-3); }
  #new-job-dialog .stop { font-size: 14px; }
  #new-job-dialog .steps { font-size: 14px; }
  #new-job-dialog .ports svg { width: 56px; }
  #new-job-dialog .ports figcaption b { font-size: 15px; }
  #new-job-dialog label { margin-bottom: var(--space-1); font-size: 13px; }
  #new-job-dialog .truckcard dl { gap: 0 var(--space-3); padding: var(--space-1) var(--space-3); font-size: 14px; }
  #new-job-dialog .error, #new-job-dialog .history-found { font-size: 14px; }
}
details.history .visit { padding: var(--space-3) 0; border-top: 1px solid var(--line); }
details.history .visit p { margin: 0 0 var(--space-1); }
details.history .visit .vs { font-size: 14px; }
details.history .visit p { overflow-wrap: anywhere; }  /* жалоба или работа с длинным словом без пробелов не растягивает страницу */
details.history summary .pill { white-space: normal; }  /* «дата · исход» на испанском шире телефона: плашка переносится, а не ползёт вбок */
details.history .visit ul { margin: 0 0 var(--space-1); padding-left: 20px; }
details.history .visit li { margin: 2px 0; overflow-wrap: anywhere; }
.checklist { list-style: none; margin: var(--space-1) 0 var(--space-2); padding: 0; }
.checklist li { border-bottom: 1px solid var(--line); }
.checklist li:last-child { border-bottom: 0; }
.checklist .check { min-height: var(--tap-md); padding: var(--space-2) 0; color: var(--ink); font-size: 16px; gap: var(--space-3); cursor: pointer; }
.checklist input { width: 24px; height: 24px; }
.card.draft { border: 2px dashed var(--accent); }
.card.draft textarea { font-family: var(--font-mono); font-size: 13px; }
.composer.mode textarea { border-color: var(--selected); }
/* Ссылка на PDF задания — строка в высоту кнопки, чтобы попадать пальцем */
#task-file, a.file { display: inline-flex; align-items: center; min-height: var(--tap-sm); font-weight: 600; }
#task-file { margin: 0 0 10px; min-height: var(--tap-md); }
.entry.k-mech_done, .entry.k-mech_stuck, .entry.k-mech_help { border: 1px solid var(--line); }
.entry.k-mech_help { border-color: var(--bad); }
.entry.k-mech_stuck .tag, .entry.k-mech_help .tag { color: var(--bad); }
.entry.k-mech_done .tag { color: var(--ok); }

/* Страница механика: переписка сверху, внизу задание и кнопки ответа. Done — главная, во всю ширину и выше;
   Can't do it и Need explanation — вторичные, в ряд под ней (три равные колонки по 14px было не различить). */
.task-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); margin-top: var(--space-4); }
.task-actions button { min-height: 52px; padding: 0 var(--space-2); line-height: 1.2; white-space: normal; overflow-wrap: anywhere; }
.task-actions .primary { grid-column: 1 / -1; min-height: var(--tap-lg); font-size: 18px; }
.task-actions [data-mode="stuck"]::before { background: var(--bad); }
.task-actions [data-mode="unclear"]::before { background: var(--accent); }
.entry.k-mech_unclear { border: 1px solid var(--warn); }
.entry.k-mech_unclear .tag { color: var(--warn); }
/* Окно чата меньше, чтобы задание с кнопками было ближе; шапка задания переносится, языки не режутся. */
.mech .chat .thread { max-height: min(35vh, 280px); }
.note-head { flex-wrap: wrap; }
.note-head .langs { flex-shrink: 0; }
@media (max-width: 340px) { .task-actions { grid-template-columns: 1fr; } }
/* Ответ механика: Camera и Gallery — две равные вторичные кнопки; ниже Speak с языком диктовки и главная Send. */
.tools { display: flex; gap: var(--space-2); margin-top: var(--space-2); }
.tools > * { flex: 1 1 0; min-width: 0; padding: 0 6px; gap: 6px; font-size: 15px; }
.files { font-size: 13px; margin: var(--space-2) 0 0; overflow-wrap: anywhere; }
.files:empty { display: none; }
.send { flex-wrap: nowrap; }
.send select { width: auto; margin: 0; flex: none; }
.send .primary { flex: 1 1 0; min-width: 0; margin-left: 0; padding: 0 var(--space-3); }
.send .mic { padding: 0 var(--space-3); }
/* Позвать оператора — отдельно от ответа, под чертой, с пояснением, когда нажимать */
.call { margin-top: var(--space-4); padding-top: var(--space-4); border-top: 1px solid var(--line); }
/* Задание в чате механика — одной строкой с многоточием, раскрывается по нажатию. */
.task-msg summary { cursor: pointer; list-style: none; display: flex; gap: 6px; align-items: baseline; }
.task-msg summary::-webkit-details-marker { display: none; }
.task-msg summary .tag { flex: none; }
.task-msg summary .head { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.task-msg summary::after { content: ""; width: 18px; height: 18px; flex: none; align-self: center; background: var(--muted);
  -webkit-mask: var(--i-chevron) center / contain no-repeat; mask: var(--i-chevron) center / contain no-repeat; }
.task-msg[open] summary::after { transform: rotate(180deg); }
.task-msg[open] summary .head { white-space: normal; }
.task-msg .text { margin-top: 6px; }
/* Плашка состояния задания не шире карточки; фото в чате механика целиком помещается в окно чата. */
#task-state { white-space: normal; }
.mech .chat .entry img, .mech .chat .entry video { max-height: min(28vh, 220px); }
/* Уголок справа внизу окна чата: тянешь — окно выше или ниже (как у поля ответа). Высота запоминается
   в этом браузере; двойное нажатие — обратно к обычной. touch-action: none — палец тянет уголок, а не страницу. */
.thread-wrap { position: relative; }
.thread-grip { position: absolute; right: 0; bottom: 0; width: 22px; height: 22px; cursor: ns-resize;
  touch-action: none; z-index: 2; border-bottom-right-radius: 6px;
  background: linear-gradient(135deg, transparent 0 50%, var(--line-strong) 50% 56%, transparent 56% 68%,
                                      var(--line-strong) 68% 74%, transparent 74% 86%, var(--line-strong) 86% 92%, transparent 92%); }
.thread-grip:hover, .thread-grip.dragging { filter: brightness(.7); }
.thread.sized { max-height: none !important; min-height: 0 !important; }

/* Версия сборки внизу каждой страницы: какая стоит и не разъехались ли с ней файлы. */
.ver { text-align: center; font-size: 12px; color: var(--muted); padding: 18px var(--space-4) 22px; }
.ver.bad { color: var(--warn); font-weight: 600; }

/* Пуш на телефон механика: одна строка и кнопка, пока уведомления на телефоне не включены. */
.pushcard { margin: 0 0 var(--space-3); display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-3); align-items: center; }
.pushcard p { margin: 0; flex: 1 1 220px; }

/* ===== Этап 1 программы удобства (09.10.2026): страница механика без лишнего тапа ===== */

/* Чей ход — первая строка страницы: крупно, во всю ширину, по состоянию (твой ход — янтарная, оператор — синяя). */
#mech-status.station { display: flex; width: 100%; min-height: var(--tap-md); margin: 0 0 var(--space-1); padding: 10px var(--space-4) 10px 14px;
  border-radius: var(--radius-md); font-size: 17px; line-height: 1.3; white-space: normal; }
#mech-status.station::before { width: 12px; height: 12px; }
.opline { margin: 0 0 var(--space-2); font-size: 14px; color: var(--muted); }
.complaint { margin: 0 0 var(--space-3); font-size: 15px; overflow-wrap: anywhere; }
.complaint .label { display: inline; margin: 0 var(--space-1) 0 0; }

/* Новое от оператора, пока механик не смотрел в переписку: текст и кнопка к ней. */
.unseen { border: 2px solid var(--accent); }
.unseen-text { margin: 0 0 var(--space-2); font-size: 17px; line-height: 1.4; white-space: pre-wrap; overflow-wrap: anywhere; }


/* Вызов оператора: на телефоне полоса прижата к низу экрана — под рукой с любого места страницы. */
.callbar { position: sticky; bottom: 0; z-index: 6; margin: var(--space-2) calc(-1 * var(--space-4)) 0;
  padding: var(--space-2) var(--space-4) calc(var(--space-2) + env(safe-area-inset-bottom, 0px));
  background: var(--bg); border-top: 1px solid var(--line); }
.callbar button { margin: 0; }

/* Переписка: сначала три последние записи, остальное — по кнопке. */
.mech .chat .thread.short { max-height: none; overflow: visible; padding-right: 0; }  /* выше по весу, чем .mech .chat .thread */
.thread.short .entry:nth-last-child(n+5) { display: none; }
.mech .chat .thread.short .entry img, .mech .chat .thread.short .entry video { max-height: 140px; }
.thread-wrap:has(.thread.short) .thread-grip { display: none; }
.mech .chat .thread.short.sized { height: auto !important; }  /* сохранённая высота действует после «Show all», а не в коротком виде */
#thread-more { margin: var(--space-2) 0 0; min-height: var(--tap-sm); }

/* Окно вместо prompt() / confirm(): на телефоне выезжает снизу, на широком экране — по центру. */
dialog.sheet:not([open]) { display: none; }  /* Safari до 15.4 не знает <dialog>: закрытое окно не висит на странице */
dialog.sheet { width: 100%; max-width: 100%; margin: auto auto 0; border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  padding: var(--space-5) var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom, 0px)); }
@media (min-width: 640px) { dialog.sheet { width: min(480px, 94vw); margin: auto; border-radius: var(--radius-lg); } }
dialog.sheet h2 { margin: 0 0 var(--space-2); }
.sheet-text { margin: 0 0 var(--space-3); color: var(--muted); white-space: pre-line; }
.chips { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: 0 0 var(--space-3); }
.chips button { border-radius: var(--radius-pill); }
dialog.sheet label { margin: 0 0 var(--space-2); }
dialog.sheet textarea { margin-top: var(--space-1); }
dialog.sheet .error { margin: 0 0 var(--space-2); }

/* Ошибка отправки — тост наверху: заметен, нажимается одной кнопкой, не пропадает сам. */
.toast { position: fixed; z-index: 100; left: var(--space-3); right: var(--space-3); top: calc(var(--space-2) + env(safe-area-inset-top, 0px));
  max-width: 560px; margin: 0 auto; display: flex; gap: var(--space-3); align-items: center; padding: var(--space-3) var(--space-4);
  border: 2px solid var(--bad); border-radius: var(--radius-md); background: var(--bad-soft); color: var(--bad);
  box-shadow: var(--shadow-3); font-weight: 600; }
.toast[data-kind="info"] { border-color: var(--line-strong); background: var(--card); color: var(--ink); }
.toast p { margin: 0; flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.toast button { flex: none; }

/* Выбранные снимки: миниатюры с «убрать», подготовка и отправка с полосой. */
.shots { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: var(--space-2) 0 0; }
.shots .shot { position: relative; width: 76px; height: 76px; border: 1.5px solid var(--line-strong); border-radius: var(--radius-sm);
  overflow: hidden; background: var(--bg); }
.shots .shot img { display: block; width: 100%; height: 100%; object-fit: cover; }
.shots .shot.file { display: flex; align-items: center; justify-content: center; padding: 4px; font-size: 12px; line-height: 1.2;
  text-align: center; overflow-wrap: anywhere; color: var(--muted); }
.shots .shot .rm { position: absolute; top: 2px; right: 2px; min-height: 0; width: 32px; height: 32px; padding: 0;
  border-radius: 50%; background: var(--card); border: 1.5px solid var(--line-strong); }
.shots .shot .rm::before { margin: 0; }
.upload { margin: var(--space-2) 0 0; }
.upload .bar { height: 10px; border-radius: var(--radius-pill); background: var(--line); overflow: hidden; }
.upload .bar i { display: block; height: 100%; width: 0; background: var(--action); transition: width .2s; }
.upload .hint { margin: 4px 0 0; }
.i-message-square { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3C/svg%3E"); }
.i-x { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18'/%3E %3Cpath d='m6 6 12 12'/%3E%3C/svg%3E"); }
.i-maximize { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E %3Cpath d='M9 21H3v-6'/%3E %3Cpath d='m21 3-7 7'/%3E %3Cpath d='m3 21 7-7'/%3E%3C/svg%3E"); }
.i-sun { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E %3Cpath d='M12 2v2'/%3E %3Cpath d='M12 20v2'/%3E %3Cpath d='m4.93 4.93 1.41 1.41'/%3E %3Cpath d='m17.66 17.66 1.41 1.41'/%3E %3Cpath d='M2 12h2'/%3E %3Cpath d='M20 12h2'/%3E %3Cpath d='m6.34 17.66-1.41 1.41'/%3E %3Cpath d='m19.07 4.93-1.41 1.41'/%3E%3C/svg%3E"); }

/* Настройки внизу страниц механика: тема и язык — те же сегменты, что у языка задания. */
.prefs { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3) var(--space-5); margin: var(--space-6) 0 0; padding: 0 var(--space-4); }
.pref { display: flex; align-items: center; gap: var(--space-2); }
.pref .label { margin: 0; }
.prefs .langs { margin-left: 0; }

/* Заголовок «чей ход» при ожидании бота: таймер рядом с текстом. */
#mech-status .timer { font-variant-numeric: tabular-nums; margin-left: var(--space-1); }

/* Телефон: задание — сразу под строкой «чей ход»; широкий экран и планшет лёжа: слева переписка и ответ, справа задание. */
@media (min-width: 900px), (min-width: 640px) and (orientation: landscape) {
  .mech-cols > .mech-side { grid-row: 1 / span 5; }
  .mech-cols > .chat { grid-row: 1; }
  .mech-cols > #mech-reply, .mech-cols > p.mech-reply { grid-row: 2; }
  .mech-cols > #brief { grid-row: 3; }
  .mech .chat .thread.short { max-height: min(35vh, 280px); overflow-y: auto; padding-right: var(--space-1); }
  .thread.short .entry:nth-last-child(n+5) { display: block; }
  #thread-more { display: none !important; }
  .thread-wrap:has(.thread.short) .thread-grip { display: block; }
  .callbar { margin-left: 0; margin-right: 0; }
}

/* Шрифт логотипа — Big Shoulders Display Bold (латиница), © The Big Shoulders Project Authors, лицензия SIL OFL 1.1.
   Вшит в этот файл: стили отдаются с меткой версии и вечным кешем, а отдельный файл шрифта — ещё один запрос
   на каждой странице по медленной линии до ноутбука. font-display: swap — текст виден сразу системным шрифтом. */
@font-face { font-family: "Big Shoulders Display"; font-weight: 700; font-style: normal; font-display: swap;
  src: url("data:font/woff2;base64,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") format("woff2"); }
