[hidden] { display: none !important; }
.scan-page, .form-page { min-height: 100vh; margin: 0; }
.scan-page { background: #050a12; color: #e6eef8; }
.boot { margin: 0; padding: 28px 16px; color: #c5d7ea; }
.gate { min-height: 100vh; display: grid; place-items: center; padding: 24px 16px; background: #050a12; }
.gate-card {
  width: min(100%, 420px); box-sizing: border-box; padding: 22px 18px;
  border: 1px solid #3a536d; border-radius: 12px; background: #0c1726;
}
.gate-card h1 { margin: 14px 0 12px; font: 500 22px/1.3 Unbounded, Manrope, sans-serif; color: #f5d78e; }
.no-qr {
  display: block; width: 100%; margin-top: 14px; border: 1px solid #d3ab54; background: #e7c36d;
  color: #171c24; border-radius: 8px; font-weight: 700; font-size: 16px; padding: 14px 16px; cursor: pointer;
}
.scanner { position: fixed; inset: 0; display: flex; flex-direction: column; background: #050a12; }
.scanner video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: #050a12; }
.viewfinder {
  position: absolute; left: 50%; top: 40%; width: min(70vw, 280px); height: min(70vw, 280px);
  transform: translate(-50%, -50%); border: 2px solid #ffc440; border-radius: 18px;
  box-shadow: 0 0 0 100vmax rgba(5, 10, 18, .45); pointer-events: none;
}
.scan-hud { position: relative; z-index: 2; margin-top: auto; padding: 22px 16px 28px; background: linear-gradient(transparent, rgba(5,10,18,.94) 28%); }
.scan-hud h1 { margin: 0 0 6px; font: 500 20px/1.3 Unbounded, Manrope, sans-serif; color: #f5d78e; }
.scan-hud p { margin: 0; color: #c5d7ea; font-size: 14px; }
.scan-tools { display: flex; gap: 14px; margin-top: 14px; }
.form-page { background: var(--bg-grad); }
.form-wrap { width: min(100%, 480px); margin: 0 auto; padding: 16px 16px 40px; }
.form-top { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; margin-bottom: 16px; }
.mark { font: 500 16px/1.3 Unbounded, Manrope, sans-serif; color: var(--text-strong); }
.sub { color: var(--muted); font-size: 12px; margin-top: 4px; }
.form-tools { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; }
.request-card, .ticket, .mine-card {
  border: 1px solid var(--line); background: var(--panel-soft); border-radius: 12px; padding: 16px; margin-bottom: 14px;
}
.request-card h1, .ticket h1 { margin: 0 0 6px; font: 500 18px/1.35 Unbounded, Manrope, sans-serif; color: var(--gold-soft); }
.fields { display: grid; gap: 12px; }
.fields label, .stack label { display: grid; gap: 6px; font-size: 12px; color: var(--muted); }
.fields select, .fields input, .fields textarea, .stack input {
  width: 100%; box-sizing: border-box; border: 1px solid var(--line-2); background: var(--field);
  border-radius: 8px; padding: 12px; font-size: 16px; color: var(--text-strong);
}
.fields select:disabled, .fields input:disabled { opacity: .85; }
.fields textarea { min-height: 72px; resize: vertical; }
.emergency {
  display: flex; align-items: center; gap: 10px; padding: 12px; border-radius: 8px;
  border: 1px solid var(--gold-edge); background: var(--gold-fill); color: var(--gold-ink); font-size: 15px;
}
.emergency input { width: 18px; height: 18px; accent-color: #e7c36d; }
.primary-button, .secondary-button, .text-button { cursor: pointer; }
.primary-button {
  border: 1px solid #d3ab54; background: #e7c36d; color: #171c24; border-radius: 8px;
  font-weight: 700; font-size: 16px; padding: 14px 16px;
}
.secondary-button { border: 1px solid var(--line-2); background: var(--panel-2); color: var(--text); border-radius: 8px; padding: 12px 14px; font-size: 14px; }
.text-button { border: 0; background: none; color: var(--cyan); padding: 0; font-size: 13px; }
.primary-button:disabled { opacity: .55; }
.submit-row { margin-top: 14px; }
a.primary-button { display: block; text-align: center; text-decoration: none; }
.meta-line { color: var(--muted); font-size: 12px; margin: 8px 0 0; }
.form-error { color: var(--danger); font-size: 13px; margin: 0; }
.hint { color: var(--muted); font-size: 12px; }
.mine-card h2 { margin: 0 0 10px; font-size: 15px; }
.req { padding: 10px 0; border-top: 1px solid var(--line-3); }
.req strong { font-weight: 650; }
.req .row-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.badge { display: inline-block; padding: 2px 7px; border-radius: 5px; background: var(--chip); color: var(--chip-ink); font-size: 11px; }
.badge.hot { background: var(--gold-fill); color: var(--gold-ink); }
.badge.bad { background: var(--overdue-bg); color: var(--overdue-ink); }
.locked { font-size: 15px; color: var(--text-strong); padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-2); }

/* Мобильный интерфейс в стиле дашбордов СГИ */
*,*:before,*:after { box-sizing: border-box; }
.form-page { background: radial-gradient(ellipse at 65% 0%,#133251 0%,transparent 52%),var(--void);color:var(--text); }
.form-wrap { width:min(100%,620px); padding:max(18px,env(safe-area-inset-top)) 16px calc(46px + env(safe-area-inset-bottom)); }
.form-top { flex-wrap:wrap; align-items:center; padding:12px 2px 17px;margin-bottom:15px;border-bottom:1px solid var(--line); }
.form-top .mark { font-size:clamp(17px,4vw,21px); }
.form-tools { justify-content:flex-start;gap:14px; }
.form-tools a { font-size:12px;font-weight:700;text-decoration:none; }
.gate { background:radial-gradient(ellipse at 50% 0%,#15314d 0%,#050a12 70%); }
.gate-card { border-color:var(--line);border-radius:22px;background:var(--panel);padding:27px 23px;box-shadow:var(--shadow); }
.gate-card .mark { font-size:18px; }
.gate-card h1 {font-family:Manrope,sans-serif;font-size:25px;letter-spacing:-.04em;}
.request-card,.ticket,.mine-card { border-radius:20px;padding:22px;background:linear-gradient(155deg,#10283c,var(--panel) 80%); box-shadow:0 10px 36px #0003; }
.request-card h1,.ticket h1 {font-size:20px;}
.fields {gap:17px;}
.fields label,.stack label { color:var(--text-strong);font-weight:650;font-size:13px; }
.fields select,.fields input,.fields textarea,.stack input { border-radius:12px;padding:14px 13px;border-color:var(--line-2);background:var(--field);min-height:49px; }
.fields select:focus,.fields input:focus,.fields textarea:focus { border-color:var(--cyan); }
.fields textarea {min-height:108px;line-height:1.55;}
.form-error {border-left:3px solid var(--over);padding:9px 12px;background:rgba(255,107,107,.08);border-radius:7px;}
.primary-button { border-radius:12px; min-height:48px; box-shadow:0 8px 25px rgba(0,0,0,.1); }
.secondary-button {border-radius:12px;display:inline-block;text-decoration:none;}
.request-card .submit-row button {width:100%;}
.emergency {display:flex!important;align-items:flex-start;gap:12px;border-radius:14px;padding:15px;background:var(--panel-2);border-color:var(--line-2);}
.emergency input { min-height:0;width:20px;height:20px; flex:0 0 20px;margin:2px 0 0; }
.emergency span {display:grid;gap:4px;}
.emergency small {color:var(--muted);font-size:11px;line-height:1.5;}
.required-mark {color:var(--over);}
.ticket {text-align:center; padding:28px 22px;}
.success-icon { margin:0 auto 16px;width:65px;height:65px;border:2px solid var(--ok);display:grid;place-items:center;color:var(--ok);font-size:33px;border-radius:50%; }
.success-actions {display:grid;gap:9px;margin-top:20px;}
.success-actions .primary-button,.success-actions .secondary-button {text-align:center;text-decoration:none;}
.scanner {background:#050b15;}
.scan-hud {padding:20px 17px calc(25px + env(safe-area-inset-bottom));}
.scan-hud h1 {font-size:clamp(17px,4vw,23px);}
.scan-hud .no-qr {border-radius:15px;min-height:54px;font-weight:800;}
.scan-tools {align-items:center;justify-content:space-between;border-top:1px solid #34455b;margin-top:18px;padding-top:17px;}
.scan-tools a {text-decoration:none;font-weight:700;}
.viewfinder {border-radius:25px; width:min(65vw,320px);height:min(65vw,320px);}
.mobile-summary {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 20px;}
.mobile-summary article {background:var(--panel);border:1px solid var(--line);border-radius:16px; padding:16px 12px;display:flex;flex-direction:column;gap:5px;}
.mobile-summary strong {font:550 clamp(22px,6vw,30px)/1.2 Unbounded,Manrope,sans-serif;color:var(--text-strong);}
.mobile-summary article.needs strong {color:var(--gold-soft);}
.mobile-summary span {color:var(--muted);font-size:11px;}
.mobile-filters {display:grid;gap:9px;margin-bottom:17px;}
.mobile-filters input,.mobile-filters select {width:100%;min-height:48px; padding:12px 14px;border-radius:13px;border:1px solid var(--line-2);background:var(--field);color:var(--text-strong);font-size:14px;}
.mine-list {display:grid;gap:12px;}
.mobile-ticket {background:linear-gradient(160deg,#132d44,var(--panel));border:1px solid var(--line);border-radius:18px;padding:18px;}
.mobile-ticket.alert {border-left:3px solid var(--over);}
.mobile-ticket-head,.mobile-meta {display:flex;justify-content:space-between;gap:12px;align-items:center;}
.mobile-ticket-head strong {color:var(--gold-soft);font-size:12px;}
.mobile-ticket .status-pill {font-size:11px;color:var(--chip-ink);background:var(--chip);border-radius:999px;padding:4px 9px;white-space:nowrap;}
.mobile-ticket-title {font-size:16px;font-weight:750;color:var(--text-strong);margin:15px 0 6px;}
.mobile-ticket p {font-size:13px;line-height:1.55;}
.mobile-meta {color:var(--muted);font-size:11px;border-bottom:1px solid var(--line-3);padding:10px 0 13px;}
.mobile-ticket details {margin-top:13px;}
.mobile-ticket summary {cursor:pointer;color:var(--cyan);font-size:12px;font-weight:700;}
.mobile-ticket-actions {display:flex;gap:10px;margin-top:14px;}
.mobile-ticket-actions button {flex:1;font-size:13px;padding:10px;}
.empty-tickets {text-align:center;background:var(--panel);border-radius:18px;border:1px solid var(--line);padding:35px 16px;}
.empty-tickets p {color:var(--muted);font-size:13px;}
.sr-only {position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
@media (max-width:360px) {.form-wrap{padding-left:10px;padding-right:10px}.form-tools{gap:9px}.mobile-summary article {padding:13px 8px}.mobile-summary span {font-size:10px}}

/* Native role-safe sign out; inline with existing toolbar buttons */
.logout-form { display:inline-flex; align-items:center; margin:0; padding:0; }

/* ===== 0.2.10 · Мягкие состояния наведения и фокуса (единые токены) =====
   Наведение — лёгкий тон фона, без толстых рамок. Фокус с клавиатуры — тонкое мягкое кольцо (:focus-visible). */
:root {
  --soft-hover: rgba(255,255,255,.045);
  --soft-hover-gold: rgba(231,195,109,.07);
  --soft-edge: rgba(231,195,109,.22);
  --soft-ring: rgba(231,195,109,.45);
  --soft-attn: rgba(231,195,109,.16);
  --soft-ease: 150ms ease;
}
button, a, summary, select, [role="button"], [role="tab"], tbody tr[data-id], .journal-click, .detail-row,
.ticket-tile, .kpi, .load-action, .schedule-load, .schedule-master, .equipment-history-link, .eq-stat, .qr-card, .down-button, .bar {
  transition: background-color var(--soft-ease), border-color var(--soft-ease), box-shadow var(--soft-ease), color var(--soft-ease), filter var(--soft-ease), transform var(--soft-ease);
}
button:not(:disabled), a, summary, select, [role="button"], [role="tab"], tbody tr[data-id], .journal-click, .detail-row, .qr-card { cursor: pointer; }
/* Мышь: никаких контуров при наведении, клике и после клика. */
:is(button, a, summary, select, input, textarea, [role="button"], [role="tab"], [tabindex], tr, .qr-card, .eq-stat):is(:hover, :focus, :active) { outline: none !important; }
/* Клавиатура: тонкое мягкое кольцо. */
:is(button, a, summary, select, input, textarea, [role="button"], [role="tab"], [tabindex], .qr-card):focus-visible { outline: 1px solid var(--soft-ring) !important; outline-offset: 2px; box-shadow: none; }
:is(tr, .journal-click, .detail-row):focus-visible { outline: 1px solid var(--soft-ring) !important; outline-offset: -1px; }
/* Строки и списки. */
tbody tr[data-id]:hover, .journal-click:hover, .detail-row:hover, .directory-layout tbody tr[data-id]:hover,
.load-action:hover, .schedule-load:hover, button.schedule-master:hover, .down-button:hover { background: var(--soft-hover-gold) !important; }
.load-action, .schedule-load, .down-button, button.schedule-master { border-radius: 8px; }
/* Плитки, карточки, KPI: лёгкий тон и мягкая кромка, без прыжков. */
.ticket-tile:hover, .kpi:hover, .qr-card[role=button]:hover, button.eq-stat:hover, .equipment-history-link:hover {
  background-color: var(--panel-3); border-color: var(--soft-edge); box-shadow: none; transform: none;
}
.equipment-history-link:hover { background: var(--soft-hover-gold); }
.panel-card:hover { border-color: var(--line); }
.kpi.bad:hover { border-color: rgba(255,107,107,.6); }
/* Кнопки. */
.primary-button:hover:not(:disabled) { filter: brightness(1.07); box-shadow: 0 4px 16px rgba(231,195,109,.16); transform: none; }
.secondary-button:hover:not(:disabled), .btn:hover:not(:disabled) { background: var(--soft-hover-gold); border-color: var(--soft-edge); }
.text-button:hover:not(:disabled) { color: var(--text-strong); background: var(--soft-hover); border-radius: 8px; }
.tab-buttons button:hover { background: var(--soft-hover); color: var(--text-strong); }
.section-switch button:hover:not([aria-pressed="true"]) { background: var(--soft-hover-gold); border-color: var(--soft-edge); }
.bar:hover { filter: brightness(1.12); }
select:hover, input:not([type=checkbox]):not([type=radio]):hover, textarea:hover { border-color: var(--soft-edge); }
.mobile-ticket summary:hover { color: var(--text-strong); }
/* Выделенное событие в истории: лёгкий тон, гаснет за ~2 с. */
.change-selected { outline: none !important; box-shadow: none !important; animation: soft-fade 2.4s ease-out forwards; }
@keyframes soft-fade { 0%, 40% { background-color: var(--soft-attn); } 100% { background-color: transparent; } }
/* Подсветка «вот он» после явного перехода: мягкий золотистый тон, держится ~3.5 с и гаснет. */
.attention-glow { animation: soft-attention 4.2s ease-out forwards; }
@keyframes soft-attention {
  0% { background-color: transparent; box-shadow: inset 0 0 0 1px transparent; }
  10%, 75% { background-color: var(--soft-attn); box-shadow: inset 0 0 0 1px var(--soft-edge); }
  100% { background-color: transparent; box-shadow: inset 0 0 0 1px transparent; }
}
@media (prefers-reduced-motion: reduce) {
  .attention-glow { animation-duration: 3.5s; }
  * { transition-duration: 0ms !important; }
}

/* ===== 0.2.15 · Камера недоступна: без рамки и видео, всё по центру ===== */
.scanner.no-camera video, .scanner.no-camera .viewfinder { display: none !important; }
.scanner.no-camera { justify-content: center; align-items: center; overflow: auto; }
.scanner.no-camera .scan-hud { margin: auto 0; width: 100%; max-width: 440px; box-sizing: border-box; background: none; text-align: center; display: grid; gap: 14px; }
.scanner.no-camera .scan-hud h1 { margin: 0; }
.scanner.no-camera .scan-hud .no-qr { width: 100%; }
.scanner.no-camera .scan-hud .form-error { margin: 0; }
.scanner.no-camera .scan-tools { margin-top: 4px; }

/* 0.3.5: блок «Место нахождения оборудования» — без рамки fieldset по умолчанию, подпись как у остальных полей. */
.fields fieldset.location-fields { border: 0; margin: 0; padding: 0; min-width: 0; }
.fields fieldset.location-fields > legend { padding: 0; margin: 0 0 9px; color: var(--text-strong); font-weight: 650; font-size: 13px; }
/* 0.3.7: неподтверждённое выполнение и напоминание заявителю. */
.mobile-ticket.unconfirmed { border-left: 3px solid var(--danger); background: var(--overdue-bg); }
.mine-unconfirmed { color: var(--danger); font-weight: 650; margin: 10px 0 0; }
.mine-reminders { border: 1px solid var(--danger); border-radius: 14px; padding: 12px 14px; margin: 12px 0 0; background: var(--overdue-bg); }
.mine-reminders p { margin: 0 0 8px; }

/* 0.4.5: separate applicant status feed; never replaces confirmation reminders. */
.mine-notifications {border:1px solid var(--line-2);border-radius:14px;padding:12px 14px;margin:12px 0;background:var(--surface,transparent)}
.mine-notifications-head,.mine-notification>div {display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.mine-notifications-head h2 {font-size:16px;margin:0}
.mine-notifications-list {max-height:320px;overflow:auto;margin-top:8px}
.mine-notification {padding:10px 0;border-top:1px solid var(--line-2);font-size:13px}
.mine-notification.unread {border-left:3px solid var(--warn);padding-left:8px}
.mine-notification p {margin:6px 0;white-space:pre-wrap;overflow-wrap:anywhere}
.mine-notification .text-button {padding-left:0}

/* R9.6 A11 */
.sgi-combobox{position:relative;min-width:0;width:100%}.sgi-combobox input{width:100%;box-sizing:border-box}.sgi-combobox-list{position:absolute;z-index:30;top:100%;left:0;right:0;max-height:280px;overflow-y:auto;background:var(--panel,#18212c);color:var(--text,inherit);border:1px solid var(--line,#536070);border-radius:10px;box-shadow:0 12px 24px #0004}.sgi-combobox-list [role=option]{padding:12px;cursor:pointer;overflow-wrap:anywhere}.sgi-combobox-list [aria-selected=true],.sgi-combobox-list [role=option]:hover{background:var(--panel-2,#304354)}.sgi-combobox-list[hidden]{display:none}

/* R9.7: narrow filter picker, below drawer and modal layers. */
@media(max-width:600px){.sgi-filter-list{width:100%;max-height:50vh;z-index:30}}
