:root{--p-cream:#fdfaf6;--p-peach:#f2d0a4;--p-rose:#f1abb9;--p-coral:#e76f51;--p-mint:#a2d5ab;--p-sage:#6fb89c;--p-sky:#7fc8f8;--p-sea:#4a6fa5;--p-ink:#2c3e50;--p-night:#1a2332;--p-gold:#f4b860;--p-mud:#8b6f47;--font-display:"Chakra Petch", "Inter", sans-serif;--font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-hand:"Caveat", cursive;--font-mono:"Share Tech Mono", monospace;--font-stencil:"Oswald", sans-serif;--bg-primary:var(--p-night);--bg-surface:var(--p-ink);--bg-surface-hover:#345;--bg-panel:#1a2332f0;--bg-panel-solid:var(--p-night);--text-primary:var(--p-cream);--text-secondary:#a8b5c4;--text-dim:#6b7a8c;--border-subtle:#fdfaf614;--border-glow:#fdfaf629;--accent-painter:var(--p-rose);--accent-builder:var(--p-gold);--accent-commander:var(--p-coral);--accent-city:var(--p-sage);--accent-courier:var(--p-sky);--hud-height:52px;--panel-width:340px;--hud-glass-bg:#141c2ab8;--panel-glass-bg:#141c2ab8;--bubble-ai-bg:#ffffff0d}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg-primary);width:100%;height:100%;color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5;overflow:hidden}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,textarea{color:inherit;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:8px;outline:none;padding:8px 12px;font-family:inherit;transition:border-color .2s}input:focus,textarea:focus{border-color:var(--border-glow)}input::placeholder,textarea::placeholder{color:#fdfaf673}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--text-dim);border-radius:3px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes timerShake{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}@keyframes countdownPop{0%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.2)}to{opacity:0;transform:scale(1)}}@keyframes typingBounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}@keyframes slideInFromLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes glowBurst{0%{opacity:.8;transform:scale(0)}to{opacity:0;transform:scale(2.5)}}@keyframes confettiBurst{0%{opacity:1;transform:translate(0)rotate(0)scale(1)}to{transform:translate(var(--confetti-x), var(--confetti-y)) rotate(var(--confetti-r)) scale(0);opacity:0}}@keyframes hintFadeOut{0%{opacity:1}to{opacity:0}}@keyframes builderPulse{0%,to{box-shadow:0 0 #ff6d0066}50%{box-shadow:0 0 0 6px #ff6d0000}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes eventSlideIn{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideOutToLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-60px)}}@keyframes slideOutToRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(60px)}}@keyframes zoomIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes shrinkFlyAway{0%{opacity:1;transform:scale(1)translateY(0)}to{opacity:0;transform:scale(.4)translateY(-150px)}}@keyframes screenFlash{0%{background:#fff0}15%{background:#ffffff40}to{background:#fff0}}@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes msgAppear{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes particleFloat{0%{opacity:0;transform:translateY(0)}10%{opacity:.35}90%{opacity:.35}to{opacity:0;transform:translateY(-220px)}}
