/* ============================================================
   Мостик: paper-mono → роли шасси Basecoat
   Подключается ПОСЛЕ CSS шасси — перебивает его дефолты.
   Источник значений: visual/paper-mono.md. Здесь ничего не изобретается:
   если значение разошлось с карточкой — права карточка.
   Заведён 19.08.2026, проверен на трёх артефактах.
   ============================================================ */

:root {
  /* --- сырьё paper-mono, единственное место со значениями --- */
  --pm-bg: #F8F7F7;        --pm-bg-alt: #FDFCFC;   --pm-paper: #FFFFFF;
  --pm-panel: #F1EFEE;     --pm-line-soft: #EFEEEE; --pm-line: #E4E2E2;
  --pm-dot: #CCCAC9;       --pm-faint: #B0ADAD;    --pm-muted: #898584;
  --pm-ink-soft: #555151;  --pm-ink: #2D2928;
  --pm-accent: #1D6EC9;    --pm-accent-soft: #6DA1E4;
  --pm-ok: #2F8F5B;   --pm-ok-bg: #EEF7F1;
  --pm-warn: #C2701C; --pm-warn-bg: #FBF3E8;

  /* --- роли шасси через сырьё --- */
  --background: var(--pm-bg);            --foreground: var(--pm-ink);
  --card: var(--pm-paper);               --card-foreground: var(--pm-ink);
  --popover: var(--pm-paper);            --popover-foreground: var(--pm-ink);
  --primary: var(--pm-accent);           --primary-foreground: #FFFFFF;
  --secondary: var(--pm-panel);          --secondary-foreground: var(--pm-ink);
  --muted: var(--pm-panel);              --muted-foreground: var(--pm-muted);
  --accent: var(--pm-panel);             --accent-foreground: var(--pm-ink);
  --destructive: var(--pm-warn);
  --border: var(--pm-line);              --input: var(--pm-line);
  --ring: var(--pm-accent);
  /* ⚠️ accent — поверхность наведения, не фирменный цвет.
     Наш индиго идёт в primary и ring. См. chassis/basecoat.md */

  /* --- геометрия карточки: радиус 3–6px, а не 10px от шасси --- */
  --radius: 5px;

  /* --- своя семантика диффов, за акцент не считается --- */
  --ok: var(--pm-ok);     --ok-bg: var(--pm-ok-bg);
  --warn: var(--pm-warn); --warn-bg: var(--pm-warn-bg);

  /* --- гарнитуры --- */
  --font-display: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --font-hand: "Shantell Sans", "Comic Sans MS", cursive;

  /* --- шкала и ритм --- */
  --step-xs: 4px; --step-sm: 8px; --step-md: 16px; --step-lg: 24px;
  --step-xl: 40px; --step-section: 72px;
  --measure: 65ch; --column: 52rem;

  color-scheme: light;
}

/* тёмный вариант. :root[data-theme] весит 0-2-0 и бьёт .dark шасси (0-1-0) */
:root[data-theme="dark"] { color-scheme: dark;
  --pm-bg: #161211; --pm-bg-alt: #0F0B0B; --pm-paper: #1E1919; --pm-panel: #221D1C;
  --pm-line-soft: #2B2524; --pm-line: #3A3432; --pm-dot: #534B49; --pm-faint: #5D5655;
  --pm-muted: #8B8483; --pm-ink-soft: #BBB6B5; --pm-ink: #EBE6E6;
  --pm-accent: #6BA7F3; --pm-accent-soft: #5682BB;
  --pm-ok: #6BC894; --pm-ok-bg: #17251C; --pm-warn: #E0A05A; --pm-warn-bg: #291E12;
  --primary-foreground: #10171F;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { color-scheme: dark;
    --pm-bg: #161211; --pm-bg-alt: #0F0B0B; --pm-paper: #1E1919; --pm-panel: #221D1C;
    --pm-line-soft: #2B2524; --pm-line: #3A3432; --pm-dot: #534B49; --pm-faint: #5D5655;
    --pm-muted: #8B8483; --pm-ink-soft: #BBB6B5; --pm-ink: #EBE6E6;
    --pm-accent: #6BA7F3; --pm-accent-soft: #5682BB;
    --pm-ok: #6BC894; --pm-ok-bg: #17251C; --pm-warn: #E0A05A; --pm-warn-bg: #291E12;
    --primary-foreground: #10171F;
  }
}

/* --- типографика поверх базового слоя шасси --- */
body {
  background: var(--background); color: var(--foreground);
  font-family: var(--font-body); font-size: 0.975rem; line-height: 1.6; margin: 0;
}
h1, h2, h3, h4, .display {
  font-family: var(--font-display); font-weight: 500;
  letter-spacing: -0.03em; text-wrap: balance;
}
code, pre, kbd, .mono, .num { font-family: var(--font-mono); }
.num, table { font-variant-numeric: tabular-nums; }
.hand { font-family: var(--font-hand); font-weight: 400; }
.label {
  font-family: var(--font-mono); font-size: 0.8125rem; font-weight: 500;
  letter-spacing: 0.09em; text-transform: uppercase; color: var(--muted-foreground);
}

/* --- у paper-mono теней нет; шасси приносит их от shadcn --- */
.card, .btn, .badge, .alert, .input, .table-container { box-shadow: none !important; }

/* --- возврат гарнитуры там, где селектор шасси специфичнее нашего
       (.card>header>h3 весит 0-1-2 против h3 0-0-1) --- */
.card > header > :is(h1,h2,h3,h4,.card-title),
.alert > :is(h2,h3,h4,h5,h6,strong,[data-title]),
.accordion > details > summary,
.tabs > [role=tablist] > [role=tab],
.dialog header > :is(h2,h3),
.btn, .badge, .label, .kbd {
  font-family: var(--font-display); letter-spacing: -0.01em;
}
.label { letter-spacing: 0.09em; }
.btn, .badge { font-weight: 500; }

:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }
