:root{--cream: #FAF7F2;--warm-white: #FDF9F4;--paper: #F5EFE4;--tan: #E8DFD0;--tan-dark: #D4C4AE;--brown-light: #C4A882;--brown: #8B6F4E;--brown-dark: #5C4433;--brown-ink: #2E2019;--ink-deep: #1A110C;--green-sage: #7A8C6E;--amber: #D48B3A;--amber-light: #F5E6CC;--red-soft: #C4665A;--red-light: #F5E0DC;--gold: #C9A84C;--gold-light: #F0DFA0;--text-primary: #2E2019;--text-secondary: #7A6555;--text-hint: #B09A87;--shadow-warm: rgba(139,111,78,.15);--shadow: rgba(46,32,25,.1);--font-serif: "Lora", Georgia, serif;--font-display: "DM Serif Display", Georgia, serif;--font-sans: "DM Sans", sans-serif;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 100px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;-webkit-text-size-adjust:100%}body{height:100%;background:var(--cream);color:var(--text-primary);font-family:var(--font-sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}#root{height:100%}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:400;line-height:1.2;color:var(--text-primary)}em{font-style:italic;color:var(--brown)}button{font-family:var(--font-sans);cursor:pointer;border:none;background:none}input,textarea,select{font-family:var(--font-sans);font-size:16px}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--tan-dark);border-radius:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.text-serif{font-family:var(--font-serif)}.text-display{font-family:var(--font-display)}.text-italic{font-style:italic}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-hint{color:var(--text-hint)}.text-brown{color:var(--brown)}.text-gold{color:var(--gold)}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{transform:scale(1);opacity:.35}50%{transform:scale(1.12);opacity:.12}}@keyframes bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-6px)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes micPulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}
