:root {
  --bg-page: #f3f5f9;
  --bg-surface: rgba(255, 255, 255, 0.78);
  --bg-panel: #ffffff;
  --bg-soft: #f7f8fc;
  --bg-soft-2: #eef2f8;
  --text-strong: #18233b;
  --text-base: #48536d;
  --text-muted: #7a859d;
  --line-soft: rgba(139, 154, 181, 0.18);
  --line-strong: rgba(122, 133, 157, 0.28);
  --shadow-soft: 0 20px 45px rgba(26, 42, 74, 0.08);
  --shadow-card: 0 10px 28px rgba(37, 55, 93, 0.08);
  --accent-primary: #456ef5;
  --accent-primary-soft: rgba(69, 110, 245, 0.12);
  --accent-secondary: #0ea5a1;
  --success: #28b67a;
  --success-soft: rgba(40, 182, 122, 0.14);
  --danger: #ef5f65;
  --danger-soft: rgba(239, 95, 101, 0.12);
  --warning: #e8a33b;
  --warning-soft: rgba(232, 163, 59, 0.14);
  --weak: #7c6cf2;
  --weak-soft: rgba(124, 108, 242, 0.14);
  --unused: #b8c1d3;
  --radius-xl: 28px;
  --radius-lg: 22px;
  --radius-md: 16px;
  --radius-sm: 12px;
  --container: 1440px;
  --font-sans: "Manrope", "Segoe UI", sans-serif;
  --font-mono: "IBM Plex Mono", "Consolas", monospace;
}

body[data-contrast="warm"] {
  --bg-page: #f7f4ef;
  --bg-surface: rgba(255, 253, 250, 0.82);
  --bg-panel: #fffdfa;
  --bg-soft: #faf6ef;
  --bg-soft-2: #f1ece4;
  --text-strong: #2d261f;
  --text-base: #5e5247;
  --text-muted: #8a7c6f;
  --line-soft: rgba(151, 128, 104, 0.16);
  --line-strong: rgba(151, 128, 104, 0.26);
  --shadow-soft: 0 20px 45px rgba(76, 57, 39, 0.08);
  --shadow-card: 0 10px 28px rgba(83, 60, 38, 0.08);
  --accent-primary: #3f6de0;
}

body[data-theme="dark"] {
  --bg-page: #111724;
  --bg-surface: rgba(25, 34, 51, 0.86);
  --bg-panel: #1a2435;
  --bg-soft: #202c40;
  --bg-soft-2: #28364d;
  --text-strong: #f0f4fc;
  --text-base: #c1cad9;
  --text-muted: #8f9bb0;
  --line-soft: rgba(164, 182, 210, 0.14);
  --line-strong: rgba(184, 199, 224, 0.28);
  --shadow-soft: 0 18px 44px rgba(0, 0, 0, 0.28);
  --shadow-card: 0 9px 24px rgba(0, 0, 0, 0.2);
  --accent-primary: #80a0ff;
  --accent-primary-soft: rgba(128, 160, 255, 0.16);
  --success: #4fd29a;
  --danger: #ff7f87;
  --warning: #f3b95d;
  --weak: #a99cff;
  --unused: #66738a;
}
