/* Palettes and shared surface tokens. Decorative reward colours remain intrinsic. */
:root { --bg-card: var(--panel); --text-dim: #95a0b2; --text-muted: #a6b0c0; }
:root[data-theme='classic'] { --text-dim: #6c6381; --text-muted: #68638c; --warm: #96540b; --success-bright: #18783d; }
:root[data-theme='white'] { --text-dim: #636c7d; --warm: #9a5b10; --success-bright: #14793a; }
:root[data-theme='pink'] { --text-dim: #805269; --text-muted: #80566b; --accent: #be185d; --accent-bright: #a51452; --warm: #945415; --success-bright: #18783d; }
:root[data-theme='green'] { --text-dim: #82b18b; --text-muted: #a1cba7; }
:root[data-theme='red'] { --text-dim: #c09299; --text-muted: #d7a6ad; --accent: #ce2737; }
/* Океан */
:root[data-theme='ocean'] {
  color-scheme: dark;
  --bg: #0b202b;
  --bg-soft: #102e3d;
  --panel: #153747;
  --panel-soft: #1c4353;
  --panel-elevated: #265367;
  --border: #355d70;
  --border-soft: #355d70;
  --text: #d3eaf0;
  --text-bright: #f1fbff;
  --text-muted: #a4c3cf;
  --text-dim: #99b8c6;
  --accent: #44c8df;
  --accent-bright: #7ae2ed;
  --success: #7dd6ae;
  --success-bright: #7dd6ae;
  --warm: #f2ca86;
  --error: #ff97a0;
  --accent-dim: color-mix(in srgb, var(--accent) 13%, transparent);
  --accent-glow: color-mix(in srgb, var(--accent) 38%, transparent);
  --success-dim: color-mix(in srgb, var(--success) 13%, transparent);
  --success-glow: color-mix(in srgb, var(--success) 38%, transparent);
  --warm-dim: color-mix(in srgb, var(--warm) 13%, transparent);
  --warm-glow: color-mix(in srgb, var(--warm) 38%, transparent);
  --error-dim: color-mix(in srgb, var(--error) 13%, transparent);
  --error-glow: color-mix(in srgb, var(--error) 38%, transparent);
  --warm-border: color-mix(in srgb, var(--warm) 35%, transparent);
  --accent-ink: #0b202b;
  --success-ink: #0b202b;
  --topbar-bg: color-mix(in srgb, var(--bg) 94%, transparent);
  --glow-a: color-mix(in srgb, var(--accent) 7%, transparent);
  --glow-b: color-mix(in srgb, var(--warm) 5%, transparent);
  --shadow: 0 20px 50px -26px color-mix(in srgb, var(--text-bright) 20%, transparent), 0 0 0 1px var(--border);
  --shadow-sm: 0 8px 24px -14px color-mix(in srgb, var(--text-bright) 20%, transparent);
  --radius-lg: 22px; --radius-md: 14px; --radius-sm: 10px;
  --font-ui: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;
}
/* Лес */
:root[data-theme='forest'] {
  color-scheme: dark;
  --bg: #13231d;
  --bg-soft: #1a3027;
  --panel: #213b30;
  --panel-soft: #2a4839;
  --panel-elevated: #355745;
  --border: #486855;
  --border-soft: #486855;
  --text: #dbeadd;
  --text-bright: #f5fbef;
  --text-muted: #b0c6b4;
  --text-dim: #a5bda7;
  --accent: #a3d287;
  --accent-bright: #c5e9a9;
  --success: #91d8ac;
  --success-bright: #91d8ac;
  --warm: #e9c58a;
  --error: #f4a69b;
  --accent-dim: color-mix(in srgb, var(--accent) 13%, transparent);
  --accent-glow: color-mix(in srgb, var(--accent) 38%, transparent);
  --success-dim: color-mix(in srgb, var(--success) 13%, transparent);
  --success-glow: color-mix(in srgb, var(--success) 38%, transparent);
  --warm-dim: color-mix(in srgb, var(--warm) 13%, transparent);
  --warm-glow: color-mix(in srgb, var(--warm) 38%, transparent);
  --error-dim: color-mix(in srgb, var(--error) 13%, transparent);
  --error-glow: color-mix(in srgb, var(--error) 38%, transparent);
  --warm-border: color-mix(in srgb, var(--warm) 35%, transparent);
  --accent-ink: #13231d;
  --success-ink: #13231d;
  --topbar-bg: color-mix(in srgb, var(--bg) 94%, transparent);
  --glow-a: color-mix(in srgb, var(--accent) 7%, transparent);
  --glow-b: color-mix(in srgb, var(--warm) 5%, transparent);
  --shadow: 0 20px 50px -26px color-mix(in srgb, var(--text-bright) 20%, transparent), 0 0 0 1px var(--border);
  --shadow-sm: 0 8px 24px -14px color-mix(in srgb, var(--text-bright) 20%, transparent);
  --radius-lg: 22px; --radius-md: 14px; --radius-sm: 10px;
  --font-ui: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;
}
/* Аметист */
:root[data-theme='amethyst'] {
  color-scheme: dark;
  --bg: #231a32;
  --bg-soft: #30233f;
  --panel: #392b4b;
  --panel-soft: #473558;
  --panel-elevated: #58426c;
  --border: #67507c;
  --border-soft: #67507c;
  --text: #e9dbf5;
  --text-bright: #fff4ff;
  --text-muted: #c6afda;
  --text-dim: #bea6d2;
  --accent: #c2a1f4;
  --accent-bright: #e0c5ff;
  --success: #8ed6c2;
  --success-bright: #8ed6c2;
  --warm: #f0c893;
  --error: #ff9dae;
  --accent-dim: color-mix(in srgb, var(--accent) 13%, transparent);
  --accent-glow: color-mix(in srgb, var(--accent) 38%, transparent);
  --success-dim: color-mix(in srgb, var(--success) 13%, transparent);
  --success-glow: color-mix(in srgb, var(--success) 38%, transparent);
  --warm-dim: color-mix(in srgb, var(--warm) 13%, transparent);
  --warm-glow: color-mix(in srgb, var(--warm) 38%, transparent);
  --error-dim: color-mix(in srgb, var(--error) 13%, transparent);
  --error-glow: color-mix(in srgb, var(--error) 38%, transparent);
  --warm-border: color-mix(in srgb, var(--warm) 35%, transparent);
  --accent-ink: #231a32;
  --success-ink: #231a32;
  --topbar-bg: color-mix(in srgb, var(--bg) 94%, transparent);
  --glow-a: color-mix(in srgb, var(--accent) 7%, transparent);
  --glow-b: color-mix(in srgb, var(--warm) 5%, transparent);
  --shadow: 0 20px 50px -26px color-mix(in srgb, var(--text-bright) 20%, transparent), 0 0 0 1px var(--border);
  --shadow-sm: 0 8px 24px -14px color-mix(in srgb, var(--text-bright) 20%, transparent);
  --radius-lg: 22px; --radius-md: 14px; --radius-sm: 10px;
  --font-ui: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;
}
/* Космос */
:root[data-theme='cosmos'] {
  color-scheme: dark;
  --bg: #101629;
  --bg-soft: #18213b;
  --panel: #202b46;
  --panel-soft: #2a3655;
  --panel-elevated: #354367;
  --border: #455578;
  --border-soft: #455578;
  --text: #dce5fc;
  --text-bright: #f3f6ff;
  --text-muted: #aebede;
  --text-dim: #a5b4d5;
  --accent: #9faaff;
  --accent-bright: #c6ceff;
  --success: #81d7c8;
  --success-bright: #81d7c8;
  --warm: #f6c791;
  --error: #ff9cab;
  --accent-dim: color-mix(in srgb, var(--accent) 13%, transparent);
  --accent-glow: color-mix(in srgb, var(--accent) 38%, transparent);
  --success-dim: color-mix(in srgb, var(--success) 13%, transparent);
  --success-glow: color-mix(in srgb, var(--success) 38%, transparent);
  --warm-dim: color-mix(in srgb, var(--warm) 13%, transparent);
  --warm-glow: color-mix(in srgb, var(--warm) 38%, transparent);
  --error-dim: color-mix(in srgb, var(--error) 13%, transparent);
  --error-glow: color-mix(in srgb, var(--error) 38%, transparent);
  --warm-border: color-mix(in srgb, var(--warm) 35%, transparent);
  --accent-ink: #101629;
  --success-ink: #101629;
  --topbar-bg: color-mix(in srgb, var(--bg) 94%, transparent);
  --glow-a: color-mix(in srgb, var(--accent) 7%, transparent);
  --glow-b: color-mix(in srgb, var(--warm) 5%, transparent);
  --shadow: 0 20px 50px -26px color-mix(in srgb, var(--text-bright) 20%, transparent), 0 0 0 1px var(--border);
  --shadow-sm: 0 8px 24px -14px color-mix(in srgb, var(--text-bright) 20%, transparent);
  --radius-lg: 22px; --radius-md: 14px; --radius-sm: 10px;
  --font-ui: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;
}
/* Мята */
:root[data-theme='mint'] {
  color-scheme: light;
  --bg: #edf7f2;
  --bg-soft: #f8fcfa;
  --panel: #ffffff;
  --panel-soft: #e3f1e9;
  --panel-elevated: #d2e8dd;
  --border: #bbd7c9;
  --border-soft: #bbd7c9;
  --text: #24463b;
  --text-bright: #143629;
  --text-muted: #4d7163;
  --text-dim: #4e7063;
  --accent: #197a61;
  --accent-bright: #12604b;
  --success: #227345;
  --success-bright: #227345;
  --warm: #8d611b;
  --error: #b74452;
  --accent-dim: color-mix(in srgb, var(--accent) 13%, transparent);
  --accent-glow: color-mix(in srgb, var(--accent) 38%, transparent);
  --success-dim: color-mix(in srgb, var(--success) 13%, transparent);
  --success-glow: color-mix(in srgb, var(--success) 38%, transparent);
  --warm-dim: color-mix(in srgb, var(--warm) 13%, transparent);
  --warm-glow: color-mix(in srgb, var(--warm) 38%, transparent);
  --error-dim: color-mix(in srgb, var(--error) 13%, transparent);
  --error-glow: color-mix(in srgb, var(--error) 38%, transparent);
  --warm-border: color-mix(in srgb, var(--warm) 35%, transparent);
  --accent-ink: #ffffff;
  --success-ink: #ffffff;
  --topbar-bg: color-mix(in srgb, var(--bg) 94%, transparent);
  --glow-a: color-mix(in srgb, var(--accent) 7%, transparent);
  --glow-b: color-mix(in srgb, var(--warm) 5%, transparent);
  --shadow: 0 20px 50px -26px color-mix(in srgb, var(--text-bright) 20%, transparent), 0 0 0 1px var(--border);
  --shadow-sm: 0 8px 24px -14px color-mix(in srgb, var(--text-bright) 20%, transparent);
  --radius-lg: 22px; --radius-md: 14px; --radius-sm: 10px;
  --font-ui: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;
}
/* Лаванда */
:root[data-theme='lavender'] {
  color-scheme: light;
  --bg: #f2effa;
  --bg-soft: #faf8ff;
  --panel: #ffffff;
  --panel-soft: #e9e2f5;
  --panel-elevated: #ded4ef;
  --border: #cbbde1;
  --border-soft: #cbbde1;
  --text: #453554;
  --text-bright: #302240;
  --text-muted: #6e5b7d;
  --text-dim: #705b80;
  --accent: #7950ad;
  --accent-bright: #613991;
  --success: #266f56;
  --success-bright: #266f56;
  --warm: #8a580f;
  --error: #b93661;
  --accent-dim: color-mix(in srgb, var(--accent) 13%, transparent);
  --accent-glow: color-mix(in srgb, var(--accent) 38%, transparent);
  --success-dim: color-mix(in srgb, var(--success) 13%, transparent);
  --success-glow: color-mix(in srgb, var(--success) 38%, transparent);
  --warm-dim: color-mix(in srgb, var(--warm) 13%, transparent);
  --warm-glow: color-mix(in srgb, var(--warm) 38%, transparent);
  --error-dim: color-mix(in srgb, var(--error) 13%, transparent);
  --error-glow: color-mix(in srgb, var(--error) 38%, transparent);
  --warm-border: color-mix(in srgb, var(--warm) 35%, transparent);
  --accent-ink: #ffffff;
  --success-ink: #ffffff;
  --topbar-bg: color-mix(in srgb, var(--bg) 94%, transparent);
  --glow-a: color-mix(in srgb, var(--accent) 7%, transparent);
  --glow-b: color-mix(in srgb, var(--warm) 5%, transparent);
  --shadow: 0 20px 50px -26px color-mix(in srgb, var(--text-bright) 20%, transparent), 0 0 0 1px var(--border);
  --shadow-sm: 0 8px 24px -14px color-mix(in srgb, var(--text-bright) 20%, transparent);
  --radius-lg: 22px; --radius-md: 14px; --radius-sm: 10px;
  --font-ui: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;
}
/* Персик */
:root[data-theme='peach'] {
  color-scheme: light;
  --bg: #fff2e9;
  --bg-soft: #fffaf5;
  --panel: #ffffff;
  --panel-soft: #f9e5d8;
  --panel-elevated: #f0d6c4;
  --border: #dfbfa8;
  --border-soft: #dfbfa8;
  --text: #593c31;
  --text-bright: #40291f;
  --text-muted: #805c4c;
  --text-dim: #805d4d;
  --accent: #b34c2c;
  --accent-bright: #903c23;
  --success: #30764b;
  --success-bright: #30764b;
  --warm: #895d14;
  --error: #b93149;
  --accent-dim: color-mix(in srgb, var(--accent) 13%, transparent);
  --accent-glow: color-mix(in srgb, var(--accent) 38%, transparent);
  --success-dim: color-mix(in srgb, var(--success) 13%, transparent);
  --success-glow: color-mix(in srgb, var(--success) 38%, transparent);
  --warm-dim: color-mix(in srgb, var(--warm) 13%, transparent);
  --warm-glow: color-mix(in srgb, var(--warm) 38%, transparent);
  --error-dim: color-mix(in srgb, var(--error) 13%, transparent);
  --error-glow: color-mix(in srgb, var(--error) 38%, transparent);
  --warm-border: color-mix(in srgb, var(--warm) 35%, transparent);
  --accent-ink: #ffffff;
  --success-ink: #ffffff;
  --topbar-bg: color-mix(in srgb, var(--bg) 94%, transparent);
  --glow-a: color-mix(in srgb, var(--accent) 7%, transparent);
  --glow-b: color-mix(in srgb, var(--warm) 5%, transparent);
  --shadow: 0 20px 50px -26px color-mix(in srgb, var(--text-bright) 20%, transparent), 0 0 0 1px var(--border);
  --shadow-sm: 0 8px 24px -14px color-mix(in srgb, var(--text-bright) 20%, transparent);
  --radius-lg: 22px; --radius-md: 14px; --radius-sm: 10px;
  --font-ui: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;
}
/* Песок */
:root[data-theme='sand'] {
  color-scheme: light;
  --bg: #f6f1e6;
  --bg-soft: #fdfaf3;
  --panel: #fffdf8;
  --panel-soft: #eee6d6;
  --panel-elevated: #e3d6bc;
  --border: #cfc0a2;
  --border-soft: #cfc0a2;
  --text: #51462f;
  --text-bright: #352c1d;
  --text-muted: #71624a;
  --text-dim: #74644d;
  --accent: #856027;
  --accent-bright: #694819;
  --success: #39724b;
  --success-bright: #39724b;
  --warm: #8b5718;
  --error: #ac3e3b;
  --accent-dim: color-mix(in srgb, var(--accent) 13%, transparent);
  --accent-glow: color-mix(in srgb, var(--accent) 38%, transparent);
  --success-dim: color-mix(in srgb, var(--success) 13%, transparent);
  --success-glow: color-mix(in srgb, var(--success) 38%, transparent);
  --warm-dim: color-mix(in srgb, var(--warm) 13%, transparent);
  --warm-glow: color-mix(in srgb, var(--warm) 38%, transparent);
  --error-dim: color-mix(in srgb, var(--error) 13%, transparent);
  --error-glow: color-mix(in srgb, var(--error) 38%, transparent);
  --warm-border: color-mix(in srgb, var(--warm) 35%, transparent);
  --accent-ink: #ffffff;
  --success-ink: #ffffff;
  --topbar-bg: color-mix(in srgb, var(--bg) 94%, transparent);
  --glow-a: color-mix(in srgb, var(--accent) 7%, transparent);
  --glow-b: color-mix(in srgb, var(--warm) 5%, transparent);
  --shadow: 0 20px 50px -26px color-mix(in srgb, var(--text-bright) 20%, transparent), 0 0 0 1px var(--border);
  --shadow-sm: 0 8px 24px -14px color-mix(in srgb, var(--text-bright) 20%, transparent);
  --radius-lg: 22px; --radius-md: 14px; --radius-sm: 10px;
  --font-ui: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;
}
:root {
  --surface-art: radial-gradient(ellipse at 10% 0%, var(--accent-dim), transparent 65%), var(--panel);
  --surface-warm: radial-gradient(ellipse at 80% 15%, var(--warm-dim), transparent 60%), var(--panel);
  --surface-deep: var(--bg-soft);
  --surface-inset: var(--panel-soft);
  --surface-line: var(--border);
  --scene-ink: var(--text-bright);
  --scene-muted: var(--text-muted);
  --scene-gold: var(--warm);
  --scene-green: var(--success-bright);
  --scene-scrim: color-mix(in srgb, var(--bg) 75%, transparent);
  --terrain: #254a43; --terrain-soft: #305b4d; --terrain-ink: #f1f8e9; --terrain-muted: #cadfcc;
}
:root[data-theme-tone='light'] { --terrain: #d8e9d1; --terrain-soft: #c5ddbc; --terrain-ink: #234432; --terrain-muted: #3a6047; }
