/* Tabakovo — общие токены и база.
   Подключать первым: <link rel="stylesheet" href="/tabakovo.css">
   Модуль может переопределить акцент (Radar/Сверка — синий для плотных таблиц). */

:root {
  --color-primary: #334155;
  --color-on-primary: #ffffff;
  --color-secondary: #475569;
  --color-on-secondary: #ffffff;
  --color-accent: #059669;
  --color-on-accent: #000000;
  --color-background: #f8fafc;
  --color-foreground: #0f172a;
  --color-card: #ffffff;
  --color-card-foreground: #0f172a;
  --color-muted: #f2f3f4;
  --color-muted-foreground: #475569;
  --color-border: #e6e8ea;
  --color-warning: #d97706;
  --color-on-warning: #000000;
  --color-destructive: #dc2626;
  --color-on-destructive: #ffffff;
  --color-ring: #334155;
  --color-accent-tint: rgba(5, 150, 105, .12);
  --color-warning-tint: rgba(217, 119, 6, .14);
  --color-warning-tint-strong: rgba(217, 119, 6, .24);
  --color-destructive-tint: rgba(220, 38, 38, .12);
  --color-accent-text: #047857;
  --color-warning-text: #b45309;
  --color-warning-text-strong: #92400e;
  --color-destructive-text: #b91c1c;

  --space-xs: 2px;
  --space-sm: 4px;
  --space-md: 8px;
  --space-lg: 12px;
  --space-xl: 16px;
  --space-2xl: 24px;
  --space-3xl: 32px;
  --radius: 16px;
  --radius-sm: 8px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);
  --shadow-md: 0 4px 20px rgba(0, 0, 0, .10), 0 1px 4px rgba(0, 0, 0, .05);
  --dur: 120ms;
  --ease: ease-out;
  --font: system-ui, -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI Variable', 'Segoe UI', Roboto, sans-serif;
  --page-max: 430px;
  --nav-h: 52px;
  --tg-top: env(safe-area-inset-top, 0px);
  --tg-bottom: env(safe-area-inset-bottom, 0px);
  color-scheme: light;

  /* Алиасы старых имён — чтобы Radar / админка / шахматка не ломались. */
  --bg: var(--color-background);
  --surface: var(--color-card);
  --surface-2: var(--color-muted);
  --border: var(--color-border);
  --border-soft: #eef0f3;
  --border-hover: rgba(0, 0, 0, .13);
  --text: var(--color-foreground);
  --text-1: var(--color-foreground);
  --text-2: var(--color-muted-foreground);
  --text-3: #aeaeb2;
  --accent: var(--color-accent);
  --accent-hover: #047857;
  --accent-soft: var(--color-accent-tint);
  --accent-border: #a7f3d0;
  --primary: var(--color-accent);
  --primary-hover: #047857;
  --danger: var(--color-destructive);
  --red: var(--color-destructive);
  --red-tint: var(--color-destructive-tint);
  --green: var(--color-accent);
  --green-hover: #047857;
  --blue: #2563eb;
  --blue-tint: rgba(37, 99, 235, .1);
  --r: var(--radius-lg);
  --seg: var(--color-muted);
  --shadow: var(--shadow-sm);
  --ok-bg: #dcfce7;
  --ok-fg: #15803d;
  --ok-bd: #86efac;
  --err-bg: #fef2f2;
  --err-fg: #b91c1c;
  --err-bd: #fca5a5;
}

@media (prefers-color-scheme: dark) {
  :root:not(.theme-light) { color-scheme: dark; }
  :root:not(.theme-light) {
    --color-primary: #94a3b8;
    --color-on-primary: #0f172a;
    --color-secondary: #cbd5e1;
    --color-accent: #34d399;
    --color-on-accent: #022c22;
    --color-background: #0e0f14;
    --color-foreground: #f5f5f7;
    --color-card: #17181f;
    --color-card-foreground: #f5f5f7;
    --color-muted: #22232c;
    --color-muted-foreground: #9ca3af;
    --color-border: rgba(255, 255, 255, .09);
    --color-warning: #fbbf24;
    --color-on-warning: #1c1400;
    --color-destructive: #f87171;
    --color-on-destructive: #1f0a0a;
    --color-ring: #94a3b8;
    --color-accent-tint: rgba(52, 211, 153, .16);
    --color-warning-tint: rgba(251, 191, 36, .16);
    --color-warning-tint-strong: rgba(251, 191, 36, .28);
    --color-destructive-tint: rgba(248, 113, 113, .16);
    --color-accent-text: #34d399;
    --color-warning-text: #fbbf24;
    --color-warning-text-strong: #f59e0b;
    --color-destructive-text: #f87171;
    --shadow-sm: none;
    --shadow-md: 0 6px 24px rgba(0, 0, 0, .6);
    --border-soft: rgba(255, 255, 255, .06);
    --border-hover: rgba(255, 255, 255, .13);
    --text-3: #9ca3af;
    --accent-hover: #6ee7b7;
    --accent-border: rgba(52, 211, 153, .35);
    --primary-hover: #6ee7b7;
    --green-hover: #6ee7b7;
    --blue: #60a5fa;
    --blue-tint: rgba(96, 165, 250, .14);
    --seg: #111218;
    --ok-bg: #14532d;
    --ok-fg: #bbf7d0;
    --ok-bd: #166534;
    --err-bg: #450a0a;
    --err-fg: #fecaca;
    --err-bd: #7f1d1d;
  }
}

:root.theme-dark {
  color-scheme: dark;
  --color-primary: #94a3b8;
  --color-on-primary: #0f172a;
  --color-secondary: #cbd5e1;
  --color-accent: #34d399;
  --color-on-accent: #022c22;
  --color-background: #0e0f14;
  --color-foreground: #f5f5f7;
  --color-card: #17181f;
  --color-card-foreground: #f5f5f7;
  --color-muted: #22232c;
  --color-muted-foreground: #9ca3af;
  --color-border: rgba(255, 255, 255, .09);
  --color-warning: #fbbf24;
  --color-on-warning: #1c1400;
  --color-destructive: #f87171;
  --color-on-destructive: #1f0a0a;
  --color-ring: #94a3b8;
  --color-accent-tint: rgba(52, 211, 153, .16);
  --color-warning-tint: rgba(251, 191, 36, .16);
  --color-warning-tint-strong: rgba(251, 191, 36, .28);
  --color-destructive-tint: rgba(248, 113, 113, .16);
  --color-accent-text: #34d399;
  --color-warning-text: #fbbf24;
  --color-warning-text-strong: #f59e0b;
  --color-destructive-text: #f87171;
  --shadow-sm: none;
  --shadow-md: 0 6px 24px rgba(0, 0, 0, .6);
  --border-soft: rgba(255, 255, 255, .06);
  --border-hover: rgba(255, 255, 255, .13);
  --text-3: #9ca3af;
  --accent-hover: #6ee7b7;
  --accent-border: rgba(52, 211, 153, .35);
  --primary-hover: #6ee7b7;
  --green-hover: #6ee7b7;
  --blue: #60a5fa;
  --blue-tint: rgba(96, 165, 250, .14);
  --seg: #111218;
  --ok-bg: #14532d;
  --ok-fg: #bbf7d0;
  --ok-bd: #166534;
  --err-bg: #450a0a;
  --err-fg: #fecaca;
  --err-bd: #7f1d1d;
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur: 0ms; }
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font);
  background: var(--color-background);
  color: var(--color-foreground);
  min-height: 100vh;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}
:focus-visible {
  outline: 2px solid var(--color-ring);
  outline-offset: 2px;
}
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); border: 0;
}
.hidden { display: none !important; }
.num { font-variant-numeric: tabular-nums; }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-md);
  min-height: 40px; padding: 0 14px;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  background: var(--color-muted);
  color: var(--color-foreground);
  font: inherit; font-weight: 600; font-size: 14px;
  text-decoration: none; cursor: pointer;
}
.btn:active { opacity: .72; }
.btn-accent {
  background: var(--color-accent);
  border-color: transparent;
  color: var(--color-on-accent);
}
.notice, .error {
  padding: 10px 14px;
  border-radius: var(--radius-md);
  font-size: 14px;
  line-height: 1.4;
}
.notice.ok { background: var(--ok-bg); color: var(--ok-fg); border: 1px solid var(--ok-bd); }
.notice.err, .error {
  background: var(--color-destructive-tint);
  color: var(--color-destructive-text);
  border: 1px solid var(--color-destructive);
}
