/* палитра §6.2, размеры, режимы доступности, сброс */

:root {
  color-scheme: dark;

  --bg-0: #07090B;
  --bg-1: #0B0E12;
  --bg-2: #10151B;
  --bg-code: #0C1014;
  --bg-heat: #0B0708;

  --line: #1C2430;
  --line-2: #2A3542;

  --txt-0: #D6DEE8;
  --txt-1: #8A97A6;
  --txt-2: #55606D;

  --acc-user: #6FB3F2;
  --acc-ai: #7CF7A0;
  --warn: #F0B429;
  --danger: #FF4D3D;
  --money: #E8C36B;
  --rare: #C792EA;
  --safe: #2E7D57;

  --hl-kw: #C792EA;
  --hl-str: #ECC48D;
  --hl-num: #F78C6C;
  --hl-fn: #82AAFF;
  --hl-com: #4A5568;
  --hl-api: #7CF7A0;

  --font: ui-monospace, "SF Mono", "Cascadia Mono", Consolas, "Segoe UI Mono",
          "Roboto Mono", "DejaVu Sans Mono", Menlo, monospace;

  --fs-prose: 0.875rem;   --lh-prose: 1.55;
  --fs-code: 0.78125rem;  --lh-code: 1.45;
  --fs-run: 0.71875rem;
  --fs-ui: 0.6875rem;     --lh-ui: 1.4;
  --fs-meta: 0.625rem;    --lh-meta: 1.3;

  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s6: 24px;

  --w-rail: 232px;
  --w-rail-min: 44px;
  --w-side: 336px;
  --h-hud: 28px;
  --h-log: 124px;
  --h-foot: 22px;
  --h-tab: 48px;
  --prose-max: 78ch;

  --ease-drawer: cubic-bezier(.2, .7, .3, 1);
  --dur-drawer: 200ms;
  --dur-reveal: 220ms;
  --dur-focus: 120ms;
  --scan-op: .035;
}

/* три ступени шрифта: всё остальное в rem */
html[data-font="s"] { font-size: 93.75%; }
html[data-font="m"] { font-size: 100%; }
html[data-font="l"] { font-size: 112.5%; }

/* светлой темы нет, вместо неё высокий контраст (scanline выключен) */
body[data-contrast="high"] {
  --txt-0: #F2F6FA;
  --txt-1: #AEBBC9;
  --txt-2: #7E8C99;
  --line: #2A3542;
  --line-2: #41505F;
  --hl-com: #6B7A8C;
  --scan-op: 0;
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur-drawer: 0ms; --dur-reveal: 0ms; --scan-op: 0; }
}
body[data-motion="off"] { --dur-drawer: 0ms; --dur-reveal: 0ms; --scan-op: 0; }

*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; padding: 0; }
[hidden] { display: none !important; }

html, body { height: 100%; }

body {
  background: var(--bg-0);
  color: var(--txt-0);
  font: var(--fs-prose)/var(--lh-prose) var(--font);
  overflow: hidden;
  overscroll-behavior: none;
  -webkit-text-size-adjust: 100%;
  scrollbar-color: var(--line-2) transparent;
  scrollbar-width: thin;
  transition: background-color 8s linear, filter 900ms linear;
}
body[data-heat="2"], body[data-heat="3"],
body[data-heat="4"], body[data-heat="5"] { background: var(--bg-heat); }
body.is-banned { filter: saturate(.15); }

button, input, textarea, select { font: inherit; color: inherit; background: none; border: 0; }
button { cursor: pointer; text-align: left; }
a { color: var(--acc-user); }
kbd { color: var(--txt-1); }
ul, ol { list-style: none; }

:focus-visible { outline: 1px solid var(--acc-user); outline-offset: 1px; }
:focus:not(:focus-visible) { outline: none; }
::selection { background: #1D3A2B; color: #F2F6FA; }

::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: var(--line-2); }
::-webkit-scrollbar-track { background: transparent; }

.sr-only {
  position: absolute; width: 1px; height: 1px; margin: -1px;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}
.noscript {
  position: fixed; inset: auto 0 0 0; padding: var(--s3);
  background: var(--bg-2); border-top: 1px solid var(--line);
  color: var(--warn); font-size: var(--fs-ui);
}
