:root, [data-stage="personal"] {
  --font-ui: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", sans-serif;
  --bg: #f5f2fc;
  --paper: #fff;
  --ink: #1c214b;
  --muted: #6f7492;
  --line: #e4e5f4;
  --accent: #6267c8;
  --accent-strong: #464cae;
  --accent-soft: #e9eafa;
  --secondary: #f7e8df;
  --visual-1: #d9dffb;
  --visual-2: #fff0de;
  --shadow: 0 18px 42px rgba(61, 57, 120, .10);
  --base-size: 16px;
  --radius: 24px;
}
[data-stage="pregnancy"] {
  --bg: #fff9f4; --paper: #fffcf9; --ink: #473941; --muted: #806e74;
  --line: #f2e3df; --accent: #bb7687; --accent-strong: #925765;
  --accent-soft: #fae9ed; --secondary: #eef3e9; --visual-1: #f9d8dc;
  --visual-2: #e1efdc; --shadow: 0 18px 42px rgba(145, 92, 101, .09);
}
[data-stage="infant"] {
  --bg: #fff8ed; --paper: #fffefa; --ink: #514233; --muted: #827364;
  --line: #f2e4ce; --accent: #c77f52; --accent-strong: #9b603a;
  --accent-soft: #fff0dd; --secondary: #e9f1de; --visual-1: #f8d5ac;
  --visual-2: #d9e9c8; --shadow: 0 18px 42px rgba(137, 89, 48, .09);
}
[data-stage="preschool"] {
  --bg: #f7fbf3; --paper: #fffefa; --ink: #315048; --muted: #71857e;
  --line: #e2ecd8; --accent: #6caa86; --accent-strong: #4c8666;
  --accent-soft: #e4f5e9; --secondary: #fff0c9; --visual-1: #d3f0d4;
  --visual-2: #ffebc1; --shadow: 0 18px 42px rgba(83, 133, 100, .09);
}
[data-stage="primary"] {
  --bg: #fff9ed; --paper: #fffefa; --ink: #52402b; --muted: #84735b;
  --line: #f1e3c8; --accent: #dc9650; --accent-strong: #a76c34;
  --accent-soft: #fff1d9; --secondary: #e9f5df; --visual-1: #ffe1ab;
  --visual-2: #dbeccb; --shadow: 0 18px 42px rgba(150, 100, 39, .10);
}
[data-stage="middle"] {
  --bg: #fff8ef;
  --paper: #fffefa;
  --ink: #47352e;
  --muted: #816e68;
  --line: #f0dfd1;
  --accent: #d46f67;
  --accent-strong: #a74d4a;
  --accent-soft: #fdece7;
  --secondary: #fff0d6;
  --visual-1: #ffcda9;
  --visual-2: #fff2c7;
  --shadow: 0 18px 42px rgba(140, 91, 56, .10);
}
[data-stage="high"] {
  --bg: #f4f8ff;
  --paper: #fff;
  --ink: #22375e;
  --muted: #6c7c9b;
  --line: #dce8f4;
  --accent: #5285bd;
  --accent-strong: #366699;
  --accent-soft: #e8f2fc;
  --secondary: #fff3dc;
  --visual-1: #cae7fc;
  --visual-2: #fff0cd;
  --shadow: 0 18px 42px rgba(58, 100, 156, .10);
}
[data-stage="college"] {
  --bg: #f4f6ff;
  --paper: #fff;
  --ink: #24295d;
  --muted: #777eaa;
  --line: #e2e6f5;
  --accent: #595de0;
  --accent-strong: #4249b5;
  --accent-soft: #ebeaff;
  --secondary: #e4f7f4;
  --visual-1: #cbd8ff;
  --visual-2: #d6f5ed;
  --shadow: 0 18px 42px rgba(68, 73, 157, .10);
}
[data-stage="graduate"] {
  --bg: #f5f7fc; --paper: #fff; --ink: #26354d; --muted: #708199;
  --line: #dfe7f0; --accent: #587db5; --accent-strong: #3c5d91;
  --accent-soft: #e8eef9; --secondary: #f1e9f8; --visual-1: #dce8fa;
  --visual-2: #e9dff5; --shadow: 0 18px 42px rgba(59, 88, 133, .10);
}
[data-stage="young"] {
  --bg: #f7f8f5; --paper: #fff; --ink: #2d403f; --muted: #6c817d;
  --line: #e1eae6; --accent: #4e9b8e; --accent-strong: #35776c;
  --accent-soft: #e6f4f0; --secondary: #f6eada; --visual-1: #cfeae4;
  --visual-2: #f4e7d6; --shadow: 0 18px 42px rgba(60, 119, 107, .09);
}
[data-stage="midlife"] {
  --bg: #f7f7f1; --paper: #fffefa; --ink: #334337; --muted: #718070;
  --line: #e2e8d9; --accent: #638367; --accent-strong: #46694d;
  --accent-soft: #eaf1e6; --secondary: #f4e8d4; --visual-1: #dbe9d8;
  --visual-2: #f3e4d3; --shadow: 0 18px 42px rgba(71, 105, 75, .09);
}
[data-stage="elder"] {
  --bg: #f9f4e9;
  --paper: #fffdf7;
  --ink: #243c2c;
  --muted: #596c5b;
  --line: #e7ddc7;
  --accent: #486d4d;
  --accent-strong: #30523a;
  --accent-soft: #e8efe5;
  --secondary: #f3e5c9;
  --visual-1: #d2e1cd;
  --visual-2: #f4e3ba;
  --shadow: 0 18px 42px rgba(51, 83, 49, .10);
  --base-size: 19px;
  --radius: 18px;
}
[data-stage="family"] {
  --bg: #f5f7ff; --paper: #fff; --ink: #243163; --muted: #7181a7;
  --line: #e0e7f7; --accent: #6672cb; --accent-strong: #4b58af;
  --accent-soft: #ecf0ff; --secondary: #edf7f4; --visual-1: #dbe6ff;
  --visual-2: #f1e8fa; --shadow: 0 14px 34px rgba(64, 82, 148, .08);
}

/* Palette is a user preference layered over stage layout and illustration. */
[data-palette="pink"] { --accent: #be758f; --accent-strong: #904964; --accent-soft: #faedf3; }
[data-palette="blue"] { --accent: #568ac2; --accent-strong: #35699c; --accent-soft: #eaf3fc; }
[data-palette="purple"] { --accent: #806bc4; --accent-strong: #604ba4; --accent-soft: #f0ecfb; }
[data-palette="yellow"] { --accent: #a77a36; --accent-strong: #795522; --accent-soft: #fbf2dc; }
[data-palette="green"] { --accent: #548a6b; --accent-strong: #32694b; --accent-soft: #eaf5ec; }
