/* Separate public login CSS: never depend on engineer-only app.css */
*,:before,:after {box-sizing:border-box;}
html,body {margin:0;min-height:100%;background:var(--void);color:var(--text);font:14px/1.55 Manrope,system-ui,sans-serif;-webkit-font-smoothing:antialiased;}
button,input {font:inherit;color:inherit;}
button {cursor:pointer;}
a {color:var(--cyan);}
[hidden] {display:none!important;}
button:focus-visible,input:focus-visible {outline:2px solid var(--cyan);outline-offset:3px;}
.auth-page {display:grid;place-items:center;min-height:100vh; background:radial-gradient(ellipse at 50% 20%,#193b5b,transparent 65%),var(--void);}
.auth-card {width:min(100%,468px);background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);}
.auth-card .brand .mark {font-family:Unbounded,Manrope,sans-serif; color:var(--text-strong);}
.auth-card .brand .sub {color:var(--muted);}
.auth-card .form-grid input {color:var(--text-strong);}
.primary-button {cursor:pointer;transition:background .17s, box-shadow .17s, transform .17s;}
.primary-button:disabled {opacity:.65;cursor:wait;}
.text-button {cursor:pointer;color:var(--cyan);border:0;background:none;padding:6px 12px;}

.auth-page { min-height:100dvh; box-sizing:border-box; padding:clamp(16px,4vw,36px); }
.auth-card { box-sizing:border-box; width:min(100%,468px); padding:clamp(24px,5vw,37px); border-radius:24px; border-color:var(--line-2); box-shadow:0 22px 70px rgba(0,0,0,.25); }
.auth-card .brand .mark { font-size:clamp(17px,4vw,21px); line-height:1.25; font-weight:750; }
.auth-card .brand .sub {font-size:13px;line-height:1.5;margin-top:6px;}
.auth-card h1 { margin:28px 0 4px; font-size:clamp(25px,5vw,30px); font-weight:800; letter-spacing:-.035em; color:var(--gold-soft); }
.auth-lead { margin:0 0 24px; color:var(--muted); font-size:13px; }
.auth-card .form-grid {display:grid; gap:19px;}
.auth-card .form-grid label {display:grid;gap:9px;font-size:14px;font-weight:650;color:var(--text);}
.auth-card .form-grid input {box-sizing:border-box;width:100%;min-height:54px;padding:14px 16px;border:1px solid var(--line-2);border-radius:13px;font-size:16px;background:var(--field);transition:border-color .17s,box-shadow .17s;}
.auth-card .form-grid input:focus {outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(94,185,238,.13);}
.auth-card .auth-submit {display:flex;justify-content:center;margin-top:14px;}
.auth-card .auth-submit .primary-button {width:min(100%,290px);min-height:54px;padding:13px 22px;font-size:15px;font-weight:800;display:flex;justify-content:center;align-items:center;gap:17px;border-radius:14px;border-color:#d6ae5e;background:linear-gradient(125deg,#f5d98c,#e7be65);color:#192435;box-shadow:0 10px 30px rgba(214,165,65,.16);}
.auth-card .auth-submit .primary-button:hover:not(:disabled) {background:linear-gradient(125deg,#ffe5a6,#efc76d);box-shadow:0 12px 34px rgba(214,165,65,.22);}
.auth-card .auth-submit .primary-button:active {transform:translateY(1px);}
.auth-card .auth-note {margin:26px 0 0;padding-top:19px;border-top:1px solid var(--line-3);color:var(--muted);font-size:12px;line-height:1.6;text-align:center;}
.auth-footer {display:flex;justify-content:center;margin-top:17px;}
.auth-footer .text-button {font-size:12px;}
.auth-card .form-error {margin:0;border-left:3px solid var(--over);padding:10px 13px;border-radius:9px;background:rgba(255,107,107,.09);}
@media(max-width:480px) {.auth-card {padding:25px 20px;border-radius:20px;} .auth-page {padding:16px;} .auth-card h1 {margin-top:23px;} .auth-card .auth-submit .primary-button {width:100%;}}

.auth-footer {position:relative;align-items:center;min-height:30px;}
.auth-version {position:absolute;right:0;color:var(--muted);font-size:10px;opacity:.75;}
@media(max-width:480px){.auth-version{font-size:9px;}}

.auth-card .form-grid input[type="hidden"] {display:none;}

/* ===== 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.3.0: переключатель темы на странице входа */
.auth-theme { position: fixed; top: 14px; right: 16px; z-index: 5; border: 0; background: none; color: var(--cyan); font: 600 13px Manrope, sans-serif; cursor: pointer; padding: 6px 8px; border-radius: 8px; }
.auth-theme:hover { background: var(--soft-hover, rgba(255,255,255,.05)); }

/* 0.3.2: рабочее название; короткий подзаголовок «ОЛРЗ» — запасной, по умолчанию скрыт. */
.sub-short { display: none; }

/* 0.3.5: страница сброса пароля по коду (/reset) — сообщение об успехе. */
.auth-card .form-error.form-ok {border-left-color:var(--ok);background:var(--panel-2);color:var(--text-strong);}

/* 0.3.6: «Забыли пароль?» — ссылка под формой входа, запрос на сброс и смена временного пароля. */
.auth-forgot {margin:14px 0 0;text-align:center;font-size:13px;}
.auth-forgot a {color:var(--cyan);text-decoration:none;}
.auth-forgot a:hover {text-decoration:underline;}
.auth-extra h2 {margin:0 0 16px;font-size:18px;font-weight:750;color:var(--text-strong);}
.auth-status {margin-top:16px;padding:14px 16px;border:1px solid var(--line-2);border-radius:13px;background:var(--panel-2);color:var(--text);font-size:14px;line-height:1.55;}
.auth-status p {margin:0 0 8px;} .auth-status p:last-child {margin-bottom:0;}
.auth-temp {display:block;margin:10px 0;padding:12px 14px;border-radius:11px;background:var(--field);border:1px dashed var(--gold-soft);color:var(--text-strong);font:700 24px/1.2 ui-monospace,Consolas,monospace;letter-spacing:.12em;text-align:center;user-select:all;}
.auth-back {margin:14px 0 0;text-align:center;}
.auth-status .muted {color:var(--muted);font-size:12px;}
