:root{--color-bg: #faf8f4;--color-bg-warm: #f4f0e8;--color-bg-card: #ffffff;--color-surface: #eee9df;--color-primary: #1b3d4f;--color-primary-light: #2a5a6e;--color-primary-muted: #3d7a8a;--color-accent: #c07a5a;--color-accent-hover: #a8644a;--color-accent-soft: #d4a088;--color-sage: #6b8f7a;--color-sage-light: #8aab96;--color-sage-bg: #e8f0eb;--color-text: #1a1a1a;--color-text-secondary: #5a5a56;--color-text-muted: #8a8a84;--color-text-on-dark: #f0ede6;--color-border: #d8d2c6;--color-border-light: #e8e4da;--color-error: #c0463a;--color-success: #3a7a5a;--font-display: "Noto Serif SC", "Songti SC", "SimSun", serif;--font-body: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--space-2xl: 4rem;--space-3xl: 6rem;--space-4xl: 8rem;--max-width: 1120px;--max-width-narrow: 720px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 3px rgba(27, 61, 79, .06);--shadow-md: 0 4px 16px rgba(27, 61, 79, .08);--shadow-lg: 0 8px 32px rgba(27, 61, 79, .1);--shadow-card: 0 2px 12px rgba(27, 61, 79, .06), 0 0 0 1px rgba(27, 61, 79, .03);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--duration-fast: .2s;--duration-normal: .4s;--duration-slow: .7s}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-body);color:var(--color-text);background-color:var(--color-bg);line-height:1.7;letter-spacing:.01em;overflow-x:hidden}img{max-width:100%;display:block}a{color:var(--color-primary-light);text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}a:hover{color:var(--color-accent)}.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-lg)}.container--narrow{max-width:var(--max-width-narrow)}section{padding:var(--space-3xl) 0}@media(max-width:768px){section{padding:var(--space-2xl) 0}}.section-label{font-family:var(--font-body);font-size:.75rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--color-accent);margin-bottom:var(--space-md);display:block}.section-title{font-family:var(--font-display);font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;line-height:1.3;color:var(--color-primary);margin-bottom:var(--space-lg)}.section-desc{font-size:1.05rem;color:var(--color-text-secondary);max-width:560px;line-height:1.8}.reveal{opacity:0;transform:translateY(24px);transition:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-stagger>*{opacity:0;transform:translateY(20px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}.reveal-stagger.visible>*:nth-child(1){transition-delay:0s}.reveal-stagger.visible>*:nth-child(2){transition-delay:.08s}.reveal-stagger.visible>*:nth-child(3){transition-delay:.16s}.reveal-stagger.visible>*:nth-child(4){transition-delay:.24s}.reveal-stagger.visible>*:nth-child(5){transition-delay:.32s}.reveal-stagger.visible>*:nth-child(6){transition-delay:.4s}.reveal-stagger.visible>*{opacity:1;transform:translateY(0)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);font-family:var(--font-body);font-weight:600;font-size:.95rem;padding:.85rem 2rem;border-radius:var(--radius-sm);border:none;cursor:pointer;transition:all var(--duration-fast) var(--ease-out);text-decoration:none;line-height:1}.btn--primary{background:var(--color-primary);color:var(--color-text-on-dark);box-shadow:0 2px 8px #1b3d4f33}.btn--primary:hover{background:var(--color-primary-light);box-shadow:0 4px 16px #1b3d4f40;transform:translateY(-1px)}.btn--accent{background:var(--color-accent);color:#fff;box-shadow:0 2px 8px #c07a5a40}.btn--accent:hover{background:var(--color-accent-hover);box-shadow:0 4px 16px #c07a5a4d;transform:translateY(-1px)}.btn--large{font-size:1.05rem;padding:1rem 2.5rem}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.form-group{margin-bottom:var(--space-xl)}.form-label{display:block;font-weight:600;font-size:.95rem;color:var(--color-primary);margin-bottom:var(--space-sm)}.form-label .required{color:var(--color-error);margin-left:2px}.form-hint{font-size:.82rem;color:var(--color-text-muted);margin-top:var(--space-xs)}.form-input,.form-textarea{width:100%;font-family:var(--font-body);font-size:.95rem;padding:.75rem 1rem;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out);outline:none}.form-input:focus,.form-textarea:focus{border-color:var(--color-primary-muted);box-shadow:0 0 0 3px #2a5a6e1a}.form-input.error,.form-textarea.error{border-color:var(--color-error);box-shadow:0 0 0 3px #c0463a14}.form-textarea{min-height:100px;resize:vertical}.form-error{font-size:.82rem;color:var(--color-error);margin-top:var(--space-xs);display:none}.form-error.show{display:block}.option-group{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.option-item{position:relative}.option-item input[type=radio],.option-item input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}.option-item label{display:inline-block;padding:.55rem 1.15rem;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);font-size:.9rem;color:var(--color-text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);user-select:none;background:var(--color-bg-card)}.option-item label:hover{border-color:var(--color-primary-muted);color:var(--color-primary)}.option-item input:checked+label{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.divider{width:48px;height:2px;background:var(--color-accent-soft);border:none;margin:var(--space-lg) 0}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px}
