/* One semantic system. Theme IDs are save-compatible; visual names may evolve. */
body[data-theme] {
  --font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Microsoft JhengHei', sans-serif;
  --font-display: var(--font-body);
  --type-display: 1.875rem; --type-page: 1.75rem; --type-section: 1.375rem;
  --type-quest: 1rem; --type-body: 0.9375rem; --type-meta: 0.75rem;
  --type-reward: 0.75rem; --type-button: 0.875rem; --type-caption: 0.6875rem;
  --space-unit: 4px; --page-padding-x: 22px; --nav-height: 72px;
  --page-padding-bottom: calc(96px + var(--safe-bottom));
  --motion-feedback: 160ms; --motion-page: 220ms; --motion-growth: 550ms;
  --motion-emotion: 720ms; --motion-ease: cubic-bezier(.2,.65,.25,1);
  --radius-xs: 5px; --radius-sm: 10px; --radius-md: 12px;
  --radius-lg: 18px; --radius-xl: 24px;
  --font-weight-heavy: 650; --font-weight-black: 700;
  --color-primary-hover: var(--color-primary); --color-primary-light: var(--color-primary);
  --color-primary-soft: var(--color-bg-card-soft); --color-primary-border: var(--color-border);
  --color-secondary-hover: var(--color-secondary); --color-secondary-soft: var(--color-bg-card-soft);
  --color-accent-hover: var(--color-accent); --color-accent-soft: var(--color-bg-card-soft);
  --color-success-hover: var(--color-success); --color-success-soft: var(--color-bg-card-soft);
  --color-danger-hover: var(--color-danger); --color-danger-soft: var(--color-bg-card-soft);
  --color-warning-soft: var(--color-bg-card-soft);
  --color-text-secondary: var(--color-text-muted); --color-text-soft: var(--color-text-muted);
  --color-text-disabled: var(--color-text-muted); --color-border-soft: var(--color-border);
  --color-divider: var(--color-border); --color-empty-bg: var(--color-bg-card-soft);
  --color-empty-bg-soft: var(--color-bg-card); --color-empty-border: var(--color-border);
  --priority-normal: var(--color-success); --priority-important: var(--color-warning); --priority-urgent: var(--color-danger);
  --rarity-n: var(--color-text-muted); --rarity-r: var(--color-secondary);
  --rarity-sr: var(--color-primary); --rarity-ssr: var(--color-accent); --rarity-ur: var(--color-danger);
  --shadow-sm: 0 2px 8px #00000008; --shadow-md: 0 6px 20px #0000000b;
  --shadow-lg: 0 20px 60px #00000030; --shadow-glow: none;
  /* Legacy component aliases resolve against these same semantic roles. */
  --bg-main: var(--color-bg-main); --bg-card: var(--color-bg-card); --bg-card-soft: var(--color-bg-card-soft);
  --bg-elevated: var(--color-bg-elevated); --bg-card-hover: var(--color-bg-card-soft);
  --bg: var(--color-bg-main); --bg-gradient: none; --text-main: var(--color-text-main);
  --text-muted: var(--color-text-muted); --text: var(--color-text-main);
  --accent-primary: var(--color-primary); --accent-secondary: var(--color-secondary);
  --accent-danger: var(--color-danger); --accent-warning: var(--color-warning); --accent-success: var(--color-success);
  --accent: var(--color-accent); --border: var(--color-border); --border-glow: var(--color-border);
  --primary: var(--color-primary); --primary-light: var(--color-primary-soft); --primary-glow: none;
  --danger: var(--color-danger); --success: var(--color-success); --radius: var(--radius-md);
  --radius-card: var(--radius-lg); --shadow: var(--shadow-md); --shadow-card: var(--shadow-md);
  /* Compatibility names for the shared scene/quest presenter. */
  --tw-night: var(--qn-scene); --tw-night-deep: var(--qn-scene);
  --tw-paper: var(--color-bg-main); --tw-ink: var(--color-text-main);
  --tw-muted: var(--color-text-muted); --tw-gold: var(--qn-scene-accent);
  --tw-paper-gold: var(--color-accent); --tw-green: var(--color-primary);
  --tw-line: var(--color-border); --tw-serif: var(--font-display);
  font-family: var(--font-body); font-size: var(--type-body); -webkit-font-smoothing: antialiased;
}
body[data-theme="default"] {
  color-scheme: dark;
  --color-bg-main: #101a2b; --color-bg-surface: #152237; --color-bg-card: #18263b;
  --color-bg-card-soft: #203149; --color-bg-elevated: #22344e;
  --color-text-main: #f4eee1; --color-text-muted: #b1bdcc; --color-text-inverse: #121a2a;
  --color-primary: #b9b0ed; --color-secondary: #9ac8d3; --color-accent: #e4c38c;
  --color-success: #a6c9b4; --color-warning: #e4c38c; --color-danger: #f2a6a3;
  --color-border: #35445b;
  --qn-scene: #101a2b; --qn-scene-text: #f4eee1; --qn-scene-muted: #c5d2e1;
  --qn-scene-accent: #e4c38c; --qn-scene-shade: #101a2b;
  --qn-hero: url('../assets/scenes/night-graywolf.webp');
  --radius-lg: 14px; --radius-xl: 20px;
}
body[data-theme="sweet"] {
  color-scheme: light;
  --color-bg-main: #fff8f2; --color-bg-surface: #f8eee7; --color-bg-card: #fffcf8;
  --color-bg-card-soft: #f3e6e3; --color-bg-elevated: #ffffff;
  --color-text-main: #493441; --color-text-muted: #7b6370; --color-text-inverse: #fffaf6;
  --color-primary: #914b68; --color-secondary: #526f65; --color-accent: #866235;
  --color-success: #526f65; --color-warning: #866235; --color-danger: #ab4551;
  --color-border: #dbc8cc;
  --qn-scene: #f5e8de; --qn-scene-text: #493441; --qn-scene-muted: #725662;
  --qn-scene-accent: #914b68; --qn-scene-shade: #f5e8de;
  --qn-hero: url('../assets/scenes/garden-graywolf.webp');
  --radius-lg: 22px; --radius-xl: 28px;
}
body[data-theme="twilight"] {
  color-scheme: light;
  --font-display: 'Noto Serif TC', 'Songti TC', 'PMingLiU', Georgia, serif;
  --color-bg-main: #f3efe6; --color-bg-surface: #ebe8de; --color-bg-card: #faf7ef;
  --color-bg-card-soft: #e6e9de; --color-bg-elevated: #fffcf6;
  --color-text-main: #27362f; --color-text-muted: #656e66; --color-text-inverse: #faf7ef;
  --color-primary: #476952; --color-secondary: #426275; --color-accent: #796039;
  --color-success: #476952; --color-warning: #855b25; --color-danger: #a14e3f;
  --color-border: #ced3c5;
  --qn-scene: #172330; --qn-scene-text: #f6eedf; --qn-scene-muted: #c6cfca;
  --qn-scene-accent: #dabd88; --qn-scene-shade: #172330;
  --qn-hero: url('../assets/scenes/twilight-graywolf.webp');
}
