/* ===================== 基础样式：变量、重置、字体 ===================== */
* { margin:0; padding:0; box-sizing:border-box; }
:root {
  --paper: #f0e6d2; --paper-dark: #e5d8be; --ink: #1a1a1a; --ink-soft: #3a3a3a;
  --vermillion: #b22222; --gold: #9a7b1f; --gold-light: #c4a547; --jade: #4a7c59;
  --border: rgba(154,123,31,0.25); --shadow: rgba(26,26,26,0.08);
  --c-parents: #2d5a8e; --c-brother: #4a7c59; --c-children: #c47a1f;
  --c-wealth: #b8860b; --c-official: #b22222;
}
html { scroll-behavior: smooth; }
body { font-family: 'Noto Serif SC', 'Songti SC', 'SimSun', 'STSong', serif; background: var(--paper); color: var(--ink); min-height: 100vh; overflow-x: hidden; position: relative; }
body::before { content:''; position:fixed; inset:0; background:radial-gradient(ellipse at 20% 10%,rgba(154,123,31,0.06),transparent 50%),radial-gradient(ellipse at 80% 90%,rgba(178,34,34,0.04),transparent 50%); pointer-events:none; z-index:0; }
body::after { content:''; position:fixed; inset:0; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.1 0 0 0 0 0.1 0 0 0 0 0.1 0 0 0 0.08 0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E"); opacity:0.5; pointer-events:none; z-index:0; }
