/* Общая тема подключается последней: дополняет site/admin/page CSS, сохраняя исходную светлую палитру. */
:root { color-scheme: light; }
.top__preferences { display: flex; align-items: center; gap: 10px; flex: none; }
.theme-toggle { display: inline-flex; flex: none; align-items: center; justify-content: center;
  width: 44px; height: 44px; padding: 0; border: 1px solid var(--line); border-radius: 50%;
  background: var(--card); color: var(--ink); cursor: pointer; }
/* Место зарезервировано до DOMContentLoaded; без JS скрытая кнопка не занимает места. */
[data-theme-ready] .theme-toggle[hidden] { display: inline-flex !important; visibility: hidden; }
.theme-toggle:hover { background: var(--sand); border-color: var(--ink-soft); }
.theme-toggle:focus-visible { outline: 3px solid var(--teal); outline-offset: 3px; }
.theme-toggle svg { display: block; pointer-events: none; }
.theme-toggle .theme-toggle__sun { display: none; }
[data-theme="dark"] .theme-toggle .theme-toggle__moon { display: none; }
[data-theme="dark"] .theme-toggle .theme-toggle__sun { display: block; }
/* SVG QR имеет прозрачный фон. Белая подложка сохраняет код и его тихую зону в обеих темах. */
.ticket__qr svg, .access__qr svg, .sheet__qr svg { background: #fff; color: #000; }
.theme-notice { max-width: 640px; margin: 0 auto; padding: 24px 20px 56px; }
.theme-notice__controls { display: flex; justify-content: flex-end; margin-bottom: 20px; }

@media screen {
  :root[data-theme="dark"] {
    color-scheme: dark;
    --ink: #e6edf7;
    --ink-soft: #a9b8cc;
    --deep: #d2e2ff;
    --teal: #82b4ff;
    --teal-dark: #a1c6ff;
    --brand-dark: #e6edf7;
    --accent: #5dddf7;
    --amber: #ffd895;
    --paper: #0a1221;
    --card: #131f32;
    --line: #344763;
    --sand: #1c2c44;
    --red: #ffaaa2;
    --green: #187b46;
    --hero-bg: #122d59;
    --success-bg: #143c2b;
    --success-ink: #a0e4bc;
    --warning-bg: #40301a;
    --warning-ink: #ffd895;
    --danger-bg: #3a202a;
    --danger-ink: #ffb3ad;
  }
  /* Логотипы не перекрашиваются: белая подложка поддерживает их исходные цвета без изменения сетки. */
  [data-theme="dark"] .top__logo, [data-theme="dark"] .adm-top__logo {
    background: #fff; border-radius: 3px; box-shadow: 0 0 0 4px #fff;
  }
  [data-theme="dark"] .sheet__logo { background: #fff; padding: 10px; border-radius: 12px; }
  [data-theme="dark"] .ticket, [data-theme="dark"] .card, [data-theme="dark"] .tablewrap,
  [data-theme="dark"] .ops-card, [data-theme="dark"] .ops-delivery, [data-theme="dark"] .adm-skip {
    background: var(--card);
  }
  [data-theme="dark"] .ticket__qr { background: #fff; }
  [data-theme="dark"] .ticket, [data-theme="dark"] .card, [data-theme="dark"] .box,
  [data-theme="dark"] .tile, [data-theme="dark"] .dash-kpi, [data-theme="dark"] .dash-panel,
  [data-theme="dark"] .page > .form, [data-theme="dark"] .login, [data-theme="dark"] .grant,
  [data-theme="dark"] .langlist a { box-shadow: 0 6px 24px #00000024; }
  [data-theme="dark"] .adm-more-links { box-shadow: 0 12px 28px #00000050; }
  [data-theme="dark"] .input, [data-theme="dark"] .adm-theme .input,
  [data-theme="dark"] .choice label, [data-theme="dark"] .langs { border-color: #637997; }
  [data-theme="dark"] .input::placeholder, [data-theme="dark"] .adm-theme .input::placeholder { color: #a1b0c5; }
  [data-theme="dark"] .input:focus, [data-theme="dark"] .adm-theme .input:focus {
    border-color: var(--teal); box-shadow: 0 0 0 3px #82b4ff40;
  }
  [data-theme="dark"] .input--error, [data-theme="dark"] .input[aria-invalid="true"],
  [data-theme="dark"] .adm-theme .input--error, [data-theme="dark"] .adm-theme .input[aria-invalid="true"] {
    border-color: var(--red);
  }
  [data-theme="dark"] .input--error:focus, [data-theme="dark"] .input[aria-invalid="true"]:focus,
  [data-theme="dark"] .adm-theme .input--error:focus, [data-theme="dark"] .adm-theme .input[aria-invalid="true"]:focus {
    box-shadow: 0 0 0 3px #ffaaa230;
  }
  [data-theme="dark"] .consent input { background-color: var(--card); }
  [data-theme="dark"] .consent input:checked { background-color: var(--brand-blue); border-color: var(--brand-blue); }
  [data-theme="dark"] .check input { accent-color: var(--brand-blue); }
  [data-theme="dark"] .choice input:checked + label { border-color: var(--brand-blue); }
  [data-theme="dark"] .alert, [data-theme="dark"] .badge--bad, [data-theme="dark"] .status--bad,
  [data-theme="dark"] .netbar--bad, [data-theme="dark"] .tag--off {
    background: var(--danger-bg); color: var(--danger-ink); border-color: #80505c;
  }
  [data-theme="dark"] .badge--ok, [data-theme="dark"] .status--ok, [data-theme="dark"] .tag--ok,
  [data-theme="dark"] .ops-summary, [data-theme="dark"] .ops-label {
    background: var(--success-bg); color: var(--success-ink);
  }
  [data-theme="dark"] .status--warn, [data-theme="dark"] .ready, [data-theme="dark"] .netbar,
  [data-theme="dark"] .carry, [data-theme="dark"] .ops-summary--warning, [data-theme="dark"] .ops-label--warning {
    background: var(--warning-bg); color: var(--warning-ink);
  }
  /* Специальные состояния после общих: предупреждение не перекрывает ошибку/готовность. */
  [data-theme="dark"] .netbar--bad, [data-theme="dark"] .ops-summary--critical, [data-theme="dark"] .ops-label--critical {
    background: var(--danger-bg); color: var(--danger-ink);
  }
  [data-theme="dark"] .ready--ok { background: none; color: var(--success-ink); }
  [data-theme="dark"] .sync__state--ok, [data-theme="dark"] .leadlist__sub.logstate--sent,
  [data-theme="dark"] .copy-status { color: var(--success-ink); }
  [data-theme="dark"] .queue, [data-theme="dark"] .sync__state--warn, [data-theme="dark"] .leadlist__sub.logstate--wait,
  [data-theme="dark"] .leadlist__sub.logstate--gone, [data-theme="dark"] .leadlist__flag { color: var(--warning-ink); }
  [data-theme="dark"] .sync__state--bad, [data-theme="dark"] .leadlist__sub.logstate--missed,
  [data-theme="dark"] .copy-status--error, [data-theme="dark"] .adm-field-error,
  [data-theme="dark"] .linkbtn--danger { color: var(--danger-ink); }
  [data-theme="dark"] .btn--danger { background: var(--card); color: var(--danger-ink); border-color: #80505c; }
  [data-theme="dark"] .btn--danger:hover { background: var(--danger-bg); }
  [data-theme="dark"] .gate--again { background: #775020; }
  [data-theme="dark"] .gate--other { background: #86421b; }
  [data-theme="dark"] .gate--kept { background: #5a431d; }
  [data-theme="dark"] .dash-text-link, [data-theme="dark"] .dash-cities__city, [data-theme="dark"] .dash-ranking__stand a,
  [data-theme="dark"] .dash-edits a, [data-theme="dark"] .dash-reach__head > strong { color: var(--teal); }
  [data-theme="dark"] .dash-chart__bar { fill: #6aa6ff; }
  [data-theme="dark"] .dash-meter::-webkit-meter-optimum-value,
  [data-theme="dark"] .dash-meter::-webkit-meter-suboptimum-value,
  [data-theme="dark"] .dash-meter::-webkit-meter-even-less-good-value { background: #6aa6ff; }
  [data-theme="dark"] .dash-meter::-moz-meter-bar { background: #6aa6ff; }
}

/* У новых кнопок есть своё место: разделы панели не прыгают при смене темы. */
@media (min-width: 900px) and (max-width: 1099px) {
  .adm-top__in { column-gap: 10px; }
  .adm-top__brand { flex-basis: 190px; }
  .adm-nav a, .adm-more-toggle { padding-left: 8px; padding-right: 8px; font-size: 13px; }
}
@media (max-width: 479px) {
  .adm-top:not(.adm-top--auth) .adm-top__in { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
  .adm-top:not(.adm-top--auth) .adm-top__brand { grid-column: 1 / -1; }
  .adm-top:not(.adm-top--auth) .theme-toggle { grid-column: 2; grid-row: 2; }
  .adm-top:not(.adm-top--auth) .adm-menu-toggle { grid-column: 1; grid-row: 2; justify-self: start; }
  .adm-top:not(.adm-top--auth) .adm-menu { grid-column: 1 / -1; }
  .adm-top--auth .adm-top__brand { flex: 1; }
  .top__preferences { gap: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .theme-toggle { transition: none; }
}
@media print {
  :root, :root[data-theme="dark"] { color-scheme: light; }
  .theme-toggle, .theme-notice__controls { display: none !important; }
  .ticket__qr, .ticket__qr svg, .access__qr svg, .sheet__qr svg { background: #fff; }
}
