/* ── Font families (standard HTML5, no downloads) ─────────── */

/* Per-theme defaults set via :root on each [data-theme] */
[data-theme="tavern"] {
    --font-heading: Georgia, 'Times New Roman', serif;
    --font-body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
}
[data-theme="slate"] {
    --font-heading: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --font-body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
[data-theme="parchment"] {
    --font-heading: Georgia, 'Times New Roman', serif;
    --font-body: Georgia, 'Times New Roman', serif;
}

/* User overrides via data-font-* attributes on <html> */
[data-font-heading="system"]  { --font-heading: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; }
[data-font-heading="serif"]   { --font-heading: Georgia, 'Times New Roman', Times, serif; }
[data-font-heading="sans"]    { --font-heading: Arial, Helvetica, sans-serif; }

[data-font-body="system"]     { --font-body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; }
[data-font-body="serif"]      { --font-body: Georgia, 'Times New Roman', Times, serif; }
[data-font-body="sans"]       { --font-body: Arial, Helvetica, sans-serif; }

/* ── Base ─────────────────────────────────────────────────── */
html body {
    font-family: var(--font-body);
    background-color: var(--bg-page);
    color: var(--text-primary);
    transition: background-color 0.3s ease, color 0.3s ease;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: 700;
    letter-spacing: 0.02em;
}

/* ── Tavern ──────────────────────────────────────────────── */
:root, [data-theme="tavern"] {
    --bg-page: #1c140f;
    --bg-nav: #11100a;
    --bg-card: #2a211b;
    --bg-card-alt: #1f1814;
    --bg-input: #1f1814;
    --text-primary: #fffbeb;
    --text-secondary: #fde68a;
    --text-muted: #fbbf24;
    --text-dim: #d97706;
    --text-dimmer: #b45309;
    --accent: #f59e0b;
    --accent-hover: #fbbf24;
    --accent-bg: #78350f;
    --accent-bg-hover: #92400e;
    --border: #78350f;
    --border-hover: #b45309;
    --border-light: #92400e;
    --hp: #34d399;
    --danger: #f87171;
    --danger-hover: #fca5a5;
    --danger-bg: #7f1d1d;
    --nav-logo: #fcd34d;
    --nav-link: #fde68a;
    --nav-link-hover: #fbbf24;
    --nav-link-dim: #f59e0b;
    --btn-primary-bg: #d97706;
    --btn-primary-bg-hover: #f59e0b;
    --btn-secondary-bg: #3a2c24;
    --btn-secondary-bg-hover: #78350f;
    --shadow: 0 10px 30px -10px rgb(0 0 0 / 0.5);
}

/* ── Slate ─────────────────────────────────────────────────── */
[data-theme="slate"] {
    --bg-page: #0f172a;
    --bg-nav: #020617;
    --bg-card: #1e293b;
    --bg-card-alt: #0f172a;
    --bg-input: #1e293b;
    --text-primary: #f8fafc;
    --text-secondary: #e2e8f0;
    --text-muted: #94a3b8;
    --text-dim: #64748b;
    --text-dimmer: #475569;
    --accent: #38bdf8;
    --accent-hover: #7dd3fc;
    --accent-bg: #0369a1;
    --accent-bg-hover: #0284c7;
    --border: #334155;
    --border-hover: #475569;
    --border-light: #1e293b;
    --hp: #4ade80;
    --danger: #f87171;
    --danger-hover: #fca5a5;
    --danger-bg: #7f1d1d;
    --nav-logo: #e2e8f0;
    --nav-link: #cbd5e1;
    --nav-link-hover: #38bdf8;
    --nav-link-dim: #94a3b8;
    --btn-primary-bg: #0284c7;
    --btn-primary-bg-hover: #0ea5e9;
    --btn-secondary-bg: #334155;
    --btn-secondary-bg-hover: #475569;
    --shadow: 0 10px 30px -10px rgb(0 0 0 / 0.5);
}

/* ── Parchment ─────────────────────────────────────────────── */
[data-theme="parchment"] {
    --bg-page: #f5f0e8;
    --bg-nav: #e8e0d0;
    --bg-card: #faf7f0;
    --bg-card-alt: #f0ebe0;
    --bg-input: #ffffff;
    --text-primary: #2c1810;
    --text-secondary: #4a3728;
    --text-muted: #8b7355;
    --text-dim: #a09080;
    --text-dimmer: #c0b0a0;
    --accent: #8b4513;
    --accent-hover: #a0522d;
    --accent-bg: #d4a574;
    --accent-bg-hover: #c4956a;
    --border: #d4c4a8;
    --border-hover: #b8a890;
    --border-light: #e0d5c0;
    --hp: #2e7d32;
    --danger: #c62828;
    --danger-hover: #e53935;
    --danger-bg: #ffcdd2;
    --nav-logo: #2c1810;
    --nav-link: #4a3728;
    --nav-link-hover: #8b4513;
    --nav-link-dim: #8b7355;
    --btn-primary-bg: #8b4513;
    --btn-primary-bg-hover: #a0522d;
    --btn-secondary-bg: #e8e0d0;
    --btn-secondary-bg-hover: #d4c4a8;
    --shadow: 0 4px 12px -2px rgb(0 0 0 / 0.1);
}

/* ── Shared utility mapping ────────────────────────────────── */
.character-sheet {
    background: var(--parchment, #f5f5dc);
    color: #2c1810;
    box-shadow: var(--shadow);
    border: 8px solid #4a3728;
}

.nav-link {
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.nav-link:hover {
    transform: translateY(-1px);
    color: var(--nav-link-hover);
}

@media print {
    nav, footer, .no-print { display: none !important; }
    body { background: white !important; color: black !important; }
    .character-sheet { box-shadow: none; margin: 0; border: 4px solid #4a3728; }
}
