:root {
 --bs-gutter-x:0;
 --bs-gutter-y:0;
 --primary-500: #106ebe;
 --accent-500: #f4a12e;
 --neutral-500: #6a5f56;
 --success-500: #2e7d32;
 --warning-500: #e09500;
 --danger-500: #d64545;
 --radius: 14px;
 --radius-sm: 10px;
 --shadow: 0 18px 40px rgba(15, 30, 50, 0.12);
 --shadow-sm: 0 8px 16px rgba(15, 30, 50, 0.08);
 --page-bg: #f5f7fa;
 --text: #1f2937;
 --muted: #52606d;
 --border: #e0e6ef;
 --family-monospace: courrier new, courier;
 --family-logo: mrrobotregular, courrier new, courier;
 --family-heading: "Space Grotesk", "Segoe UI";
 --family-body: "IBM Plex Sans", "Segoe UI";
}

.contrast.primary {
    background: var(--primary, #106ebe);
    color: var(--primary-contrast, #ffffff);
}

.contrast.neutral {
    background: var(--surface, #ffffff);
    color: var(--text);
    border: 1px solid var(--border);
}

.message.info {
    background: var(--info-bg, #e7f5ff);
    border-color: var(--info-border, #bcdff5);
    color: var(--info-text, #0b5bb7);
}

.message.warning {
    background: var(--warning-bg, #fff4e0);
    border-color: var(--warning-border, #f8d28f);
    color: var(--warning-text, #a15f00);
}

.message.danger {
    background: var(--danger-bg, #ffe9e9);
    border-color: var(--danger-border, #f5b5b5);
    color: var(--danger-text, #b02a2a);
}

[data-bs-theme="light"] {
    --bg: var(--neutral-50, #f5f7fa);
    --page-bg: var(--neutral-50, #f5f7fa);
    --surface: #ffffff;
    --text: var(--neutral-900, #1f2937);
    --muted-color: var(--neutral-600, #52606d);
    --border: var(--neutral-200, #e0e6ef);
    --link: #0b5bb7;
    --link-hover: #0b5bb7;
    --link-visited: #0a2b3a;
    --primary: var(--primary-700, #0b5bb7);
    --primary-contrast: #ffffff;
    --accent: var(--accent-500, #00a6d6);
    --accent-contrast: #ffffff;
    --code-bg: var(--neutral-100, #f1f5f9);
    --info-bg: var(--primary-50, #e7f5ff);
    --info-border: var(--primary-200, #bcdff5);
    --info-text: var(--primary-700, #0b5bb7);
    --warning-bg: var(--warning-50, #fff4e0);
    --warning-border: var(--warning-200, #f8d28f);
    --warning-text: var(--warning-700, #a15f00);
    --danger-bg: var(--danger-50, #ffe9e9);
    --danger-border: var(--danger-200, #f5b5b5);
    --danger-text: var(--danger-700, #b02a2a);
}

[data-bs-theme="dark"] {
    --bg: var(--neutral-900, #0f172a);
    --page-bg: var(--neutral-900, #0f172a);
    --surface: var(--neutral-700, #1f2937);
    --text: var(--neutral-50, #f8fafc);
    --muted-color: var(--neutral-300, #cbd5f0);
    --border: var(--neutral-700, #1f2937);
    --link: var(--accent-500);
    --link-hover: var(--accent-500);
    --link-visited: #ba771a;
    --primary: var(--primary-300, #5a98e6);
    --primary-contrast: var(--neutral-900, #0f172a);
    --accent: var(--accent-300, #68cfe9);
    --accent-contrast: var(--neutral-900, #0f172a);
    --code-bg: rgba(255, 255, 255, 0.06);
    --info-bg: var(--primary-900, #0a2b3a);
    --info-border: var(--primary-700, #2a6bb4);
    --info-text: var(--primary-100, #d9f0ff);
    --warning-bg: var(--warning-900, #4a3200);
    --warning-border: var(--warning-700, #b36a00);
    --warning-text: var(--warning-100, #ffe6b3);
    --danger-bg: var(--danger-900, #4a1d1d);
    --danger-border: var(--danger-700, #b94242);
    --danger-text: var(--danger-100, #ffd1d1);
}
