/* Токены ЖДРМ (web/twin/twin-theme.css) и светлый вариант тех же имён. */
:root {
  --bg: var(--tw-bg);
  --bg-grad: var(--tw-bg-grad);
  --void: var(--tw-void);
  --bar: var(--tw-bar);
  --panel: var(--tw-panel-solid);
  --panel-soft: var(--tw-panel);
  --panel-2: var(--tw-panel-2);
  --panel-3: var(--tw-panel-3);
  --field: var(--tw-field);
  --field-2: var(--tw-field-2);
  --line: var(--tw-line);
  --line-2: var(--tw-line-2);
  --line-3: var(--tw-line-3);
  --text: var(--tw-text);
  --text-strong: var(--tw-text-strong);
  --muted: var(--tw-muted);
  --gold: var(--tw-gold);
  --gold-soft: var(--tw-gold-soft);
  --gold-ink: var(--tw-gold-ink);
  --gold-edge: var(--tw-gold-edge);
  --gold-fill: var(--tw-gold-fill);
  --cyan: var(--tw-cyan);
  --chip: var(--tw-chip);
  --chip-ink: var(--tw-chip-ink);
  --ok: var(--tw-ok);
  --warn: var(--tw-warn);
  --over: var(--tw-over);
  --danger: var(--tw-danger);
  --shadow: var(--tw-shadow);
  --radius: 12px;
  --glass-edge: var(--tw-glass-edge);
  --overdue-bg: rgba(255, 80, 70, .16);
  --overdue-ink: #ffd4d4;
  color-scheme: dark;
}
html[data-theme="light"] {
  /* 0.3.0 · Светлая тема: только цвета из согласованного с заказчиком образца (фон #f3f5f8, тёмно-синий #1d3557, белые карточки).
     Раскладка, шрифты, размеры, радиусы и форма теней — те же, что в тёмной теме. */
  color-scheme: light;
  --tw-void: #f3f5f8;
  --tw-bg: #f3f5f8;
  --tw-bg-grad: #f3f5f8;
  --tw-bar: #1d3557;
  --tw-panel: #ffffff;
  --tw-panel-solid: #ffffff;
  --tw-panel-2: #f7f9fc;
  --tw-panel-3: #f0f4fa;
  --tw-field: #ffffff;
  --tw-field-2: #f7f9fc;
  --tw-glass: rgba(255, 255, 255, .92);
  --tw-glass-edge: #cfd6df;
  --tw-line: #e3e6ea;
  --tw-line-2: #cfd6df;
  --tw-line-3: #e3e6ea;
  --tw-line-field: #cfd6df;
  --tw-line-focus: #1d4f91;
  --tw-text: #1b2430;
  --tw-text-strong: #1b2430;
  --tw-muted: #556677;
  --tw-muted-2: #777788;
  --tw-label: #556677;
  --tw-gold: #1d3557;
  --tw-gold-soft: #1d3557;
  --tw-gold-ink: #ffffff;
  --tw-gold-edge: #1d3557;
  --tw-gold-fill: #1d3557;
  --tw-cyan: #1d4f91;
  --tw-cyan-dim: #9bb7e0;
  --tw-accent: #2a9d8f;
  --tw-chip: #e8f0fb;
  --tw-chip-ink: #1d3557;
  --tw-ok: #2a7a3a;
  --tw-warn: #b5520b;
  --tw-high: #e76f51;
  --tw-over: #c0392b;
  --tw-none: #99a;
  --tw-danger: #b03a2e;
  --tw-shadow: 0 5px 30px rgba(0, 0, 0, .13);
  --overdue-bg: #fbd9dc;
  --overdue-ink: #7a1f26;
  --soft-hover: #eef1fa;
  --soft-hover-gold: #eef3fb;
  --soft-edge: #9bb7e0;
  --soft-ring: #9bb7e0;
  --soft-attn: #cfe0f7;
}
html, body { margin: 0; min-height: 100%; background: var(--void); color: var(--text); font: 13px/1.45 Manrope, system-ui, sans-serif; }
button, input, select, textarea { font-family: inherit; color: inherit; }
button:focus-visible, input:focus-visible, select:focus-visible, a:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--cyan); outline-offset: 3px;
}
a { color: var(--cyan); }
[hidden] { display: none !important; }

/* ===== 0.3.0 · Вложения: миниатюры, файлы, кнопки выбора и просмотр фото (все приложения) ===== */
.files-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: 10px; margin: 6px 0 10px; }
.files-item { position: relative; margin: 0; display: grid; gap: 6px; font-size: 12px; color: var(--text); min-width: 0; }
.files-item figcaption { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.files-thumb, .files-doc { display: grid; place-items: center; width: 100%; aspect-ratio: 4 / 3; padding: 0; overflow: hidden; border: 1px solid var(--line-2); border-radius: 10px; background: var(--panel-2); color: var(--muted); cursor: pointer; }
.files-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.files-thumb:hover, .files-doc:hover { border-color: var(--soft-edge, var(--line)); }
.files-ext { font-weight: 800; font-size: 15px; letter-spacing: .06em; color: var(--cyan); }
.files-ph { font-size: 12px; }
.files-del { position: absolute; top: 4px; right: 4px; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--line-2); background: var(--panel); color: var(--text); cursor: pointer; font-size: 12px; line-height: 1; }
.files-chip .files-del { position: static; width: 22px; height: 22px; margin-left: 4px; }
.files-pick { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0; }
.files-btn { cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
.files-hint, .files-progress { font-size: 12px; margin: 4px 0; }
.files-empty { margin: 4px 0 8px; }
.files-pending { display: flex; flex-wrap: wrap; gap: 6px; }
.files-chip { display: inline-flex; align-items: center; gap: 4px; border: 1px solid var(--line-2); border-radius: 999px; padding: 4px 6px 4px 10px; font-size: 12px; background: var(--panel-2); }
.sgi-viewer { position: fixed; inset: 0; z-index: 100; display: flex; flex-direction: column; background: rgba(2, 6, 12, .92); }
.sgi-viewer-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 14px; background: var(--bar); border-bottom: 1px solid var(--line); color: var(--text-strong); }
.sgi-viewer-title { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 60vw; }
.sgi-viewer-tools { display: flex; gap: 8px; flex-wrap: wrap; }
.sgi-viewer-tools .secondary-button { padding: 8px 12px; font-size: 13px; min-height: 0; }
.sgi-viewer-stage { flex: 1; display: grid; place-items: center; overflow: auto; padding: 12px; cursor: zoom-out; }
.sgi-viewer-stage img { max-width: 100%; max-height: calc(100vh - 90px); object-fit: contain; border-radius: 6px; cursor: default; box-shadow: 0 8px 40px rgba(0,0,0,.5); }
.sgi-viewer-wait { color: #e6eef8; }
.theme-toggle, [data-theme-toggle] { white-space: nowrap; }

/* ===== 0.3.0 · Светлая тема: цвета жёстко заданных мест (только цвета; размеры и формы не меняются) ===== */
html[data-theme="light"] body { background: var(--void); }
html[data-theme="light"] .primary-button,
html[data-theme="light"] .gate-card .primary-button { border-color: #1d3557; background: #1d3557; color: #fff; }
html[data-theme="light"] .primary-button:hover:not(:disabled) { box-shadow: 0 4px 16px rgba(29, 53, 87, .18); }
html[data-theme="light"] .secondary-button { color: #1d3557; }
html[data-theme="light"] .load .fill { background: #1d3557; }
html[data-theme="light"] .notice { border-color: #9bb7e0; background: #fff; color: #1b2430; }
html[data-theme="light"] .modal { background: rgba(27, 36, 48, .35); }
html[data-theme="light"] .drawer-overlay { background: rgba(27, 36, 48, .35); }
html[data-theme="light"] .drawer-panel { box-shadow: -24px 0 90px rgba(0, 0, 0, .18); }
html[data-theme="light"] .auth-page,
html[data-theme="light"] .form-page,
html[data-theme="light"] .gate { background: #f3f5f8; }
html[data-theme="light"] .toolbar { background: #1d3557; }
html[data-theme="light"] .toolbar, html[data-theme="light"] .toolbar .mark { color: #fff; }
html[data-theme="light"] .toolbar .sub, html[data-theme="light"] .toolbar .text-button,
html[data-theme="light"] .toolbar #accountName { color: #dbe6f5; }
html[data-theme="light"] .toolbar .text-button:hover { color: #fff; }
html[data-theme="light"] .app-nav { background: #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .13); }
html[data-theme="light"] .tab-buttons button { color: #1d3557; }
html[data-theme="light"] .tab-buttons button[aria-selected="true"] { background: #e8f0fb; color: #1d3557; }
html[data-theme="light"] .kpi,
html[data-theme="light"] .record-card, html[data-theme="light"] .settings-card, html[data-theme="light"] .panel-card,
html[data-theme="light"] .request-card, html[data-theme="light"] .ticket, html[data-theme="light"] .mine-card,
html[data-theme="light"] .mobile-ticket { background: #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .13); }
html[data-theme="light"] .kpi::after { background: rgba(29, 53, 87, .04); }
html[data-theme="light"] .kpi.bad { border-color: #e9a0a8; background: #fff; }
html[data-theme="light"] .kpi:hover { background-image: none; background-color: #eef3fb; border-color: #9bb7e0; box-shadow: 0 6px 22px rgba(0, 0, 0, .1); }
html[data-theme="light"] .kpi.bad:hover { background-image: none; background-color: #fdf0f1; border-color: #e76f51; }
html[data-theme="light"] .down-tile { border-color: #f1b9be; }
html[data-theme="light"] .down-tile .tile-status { background: #fbd9dc; color: #8a1f2b; }
html[data-theme="light"] .load-action, html[data-theme="light"] .schedule-load,
html[data-theme="light"] .equipment-history-link { background: #f7f9fc; }
html[data-theme="light"] .change-selected { box-shadow: 0 0 0 3px #cfe0f7; }
html[data-theme="light"] .form-error { background: #fbd9dc; }
html[data-theme="light"] .status-pill { background: #e8f0fb; color: #1d3557; }
html[data-theme="light"] .emergency input { accent-color: #1d3557; }
html[data-theme="light"] .scan-tools { border-top-color: #cfd6df; }
html[data-theme="light"] .gate-card { border-color: #cfd6df; background: #fff; }
html[data-theme="light"] .gate-card h1 { color: #1d3557; }
html[data-theme="light"] .boot { color: #556677; }
html[data-theme="light"] .auth-card { box-shadow: 0 22px 70px rgba(0, 0, 0, .1); }
html[data-theme="light"] .auth-card .auth-submit .primary-button:hover:not(:disabled) { background: #24426b; box-shadow: 0 12px 34px rgba(29, 53, 87, .2); }
html[data-theme="light"] .auth-card .form-grid input:focus { box-shadow: 0 0 0 3px #cfe0f7; }
html[data-theme="light"] .qr-card { border-color: #e3e6ea; }
html[data-theme="light"] .exec-sheet { background: rgba(27, 36, 48, .35); }
html[data-theme="light"] .sgi-viewer { background: rgba(27, 36, 48, .88); }
html[data-theme="light"] .sgi-viewer-bar .secondary-button { color: #1d3557; }
html[data-theme="light"] .exec-tabs button[aria-selected="true"] { color: #fff; }
html[data-theme="light"] .exec-sheet-card h2 { color: #1d3557; }
html[data-theme="light"] input[type="date"], html[data-theme="light"] input[type="datetime-local"],
html[data-theme="light"] input[type="month"], html[data-theme="light"] select { color-scheme: light; }
/* Сканер QR остаётся тёмным (видео камеры) в обеих темах. */
html[data-theme="light"] .auth-card .auth-submit .primary-button { border-color: #1d3557; background: #1d3557; color: #fff; box-shadow: 0 10px 30px rgba(29, 53, 87, .16); }
html[data-theme="light"] .badge.hot { background: #fff1c7; color: #b5520b; }

/* 0.3.5: окно «Замещение». */
.delegation-list { display: grid; gap: 8px; margin: 10px 0 16px; }
.delegation-item { border: 1px solid var(--line-2); border-radius: 12px; padding: 10px 12px; background: var(--panel-2); display: grid; gap: 4px; }
.delegation-item .delegation-head { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.delegation-item.is-off { opacity: .65; }

.role-workspaces{font-size:12px;margin-left:auto;padding:5px 10px;color:var(--muted,#778597)}.role-workspaces a{color:var(--accent,#409de8);text-decoration:underline}

/* R9.7.2: scanner controls sit on a permanently dark camera overlay.
   Keep their contrast when global light-theme tokens change --cyan. */
html[data-theme="light"] .scan-page .scan-tools a,
html[data-theme="light"] .scan-page .scan-tools .text-button {
  color: #e6eef8;
}
