:root{--color-primary: #1e293b;--color-primary-light: #334155;--color-accent: #22c55e;--color-accent-hover: #16a34a;--color-danger: #ef4444;--color-warning: #fbbf24;--color-player: #3b82f6;--color-player-light: #60a5fa;--color-player-dark: #2563eb;--color-opponent: #f97316;--color-opponent-light: #fb923c;--color-opponent-dark: #ea580c;--color-grass: #166534;--color-grass-light: #15803d;--color-line: #ffffff;--color-bg: #0f172a;--color-bg-elevated: #1e293b;--color-text: #f8fafc;--color-text-muted: #94a3b8;--color-text-subtle: #64748b;--color-border: #334155;--color-overlay: rgba(15, 23, 42, .9);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .5);--transition-fast: .15s ease;--transition-normal: .25s ease;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SF Mono", "Fira Code", "Fira Mono", Menlo, monospace;--z-dropdown: 100;--z-modal: 200;--z-toast: 300}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{margin:0;min-height:100dvh;font-family:var(--font-sans);line-height:1.5;color:var(--color-text);background:var(--color-bg);overflow-x:hidden}#root{min-height:100dvh}canvas{touch-action:none;user-select:none;-webkit-user-select:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-primary)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}::selection{background:var(--color-accent);color:var(--color-bg)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@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{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.animate-fade-in{animation:fadeIn var(--transition-normal)}.animate-slide-up{animation:slideUp var(--transition-normal)}.animate-pulse{animation:pulse 1s ease-in-out infinite}.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}
