:root{--color-background: #fafafa;--color-surface: #ffffff;--color-border: #000000;--color-text: #0a0a0a;--color-text-muted: #666666;--color-accent: #ffd700;--color-accent-dark: #b8860b;--color-accent-light: #fff4bf;--color-success: #10b981;--color-warning: #f59e0b;--color-danger: #ef4444;--color-disabled: #9ca3af;--color-signal-live: #059669;--color-signal-busy: #dc2626;--color-signal-sys: #d946ef;--color-signal-muted: #6b7280;--lobby-ticker-bg: var(--color-text);--lobby-ticker-fg: var(--color-accent);--lobby-card-shadow: 4px 4px 0px 0px var(--color-border);--lobby-card-shadow-hover: 6px 6px 0px 0px var(--color-border);--color-optimal: var(--color-success);--color-good: #22c55e;--color-acceptable: var(--color-warning);--color-suboptimal: #f97316;--color-poor: var(--color-danger);--heat-best: var(--color-accent);--heat-good: #ffeb80;--heat-mid: #fff4bf;--heat-low: #fffae6;--heat-none: transparent;--color-felt: #1a5928;--color-felt-light: #2d7a3e;--font-sans: "Inter Variable", "SF Pro", -apple-system, system-ui, sans-serif;--font-mono: "JetBrains Mono", "IBM Plex Mono", "SF Mono", "Courier New", monospace;--text-display: 3rem;--text-h1: 2.375rem;--text-h2: 1.875rem;--text-h3: 1.5rem;--text-body: 1rem;--text-small: .875rem;--text-tiny: .75rem;--text-micro: .625rem;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-black: 900;--tracking-tight: -.025em;--tracking-normal: 0;--tracking-wide: .025em;--tracking-wider: .05em;--tracking-widest: .1em;--space-0: 0;--space-1: .5rem;--space-2: 1rem;--space-3: 1.5rem;--space-4: 2rem;--space-5: 3rem;--space-6: 4rem;--space-7: 6rem;--space-8: 8rem;--border-thin: 1px solid var(--color-border);--border-medium: 2px solid var(--color-border);--border-thick: 3px solid var(--color-border);--border-heavy: 4px solid var(--color-border);--border-accent: 3px solid var(--color-accent);--border-success: 3px solid var(--color-success);--transition-instant: 50ms ease;--transition-fast: .15s ease;--transition-medium: .3s ease;--transition-slow: .5s ease;--shadow-brutal: 4px 4px 0 0 var(--color-border);--shadow-brutal-lg: 6px 6px 0 0 var(--color-border);--shadow-brutal-sm: 2px 2px 0 0 var(--color-border);--radius-none: 0;--radius-sm: 2px;--radius-md: 4px;--z-background: 0;--z-game: 100;--z-hud: 300;--z-tooltip: 400;--z-modal: 500;--z-bottomsheet: 600;--z-alert: 1000;--die-size: 60px;--die-size-mobile: 50px;--die-size-large: 80px;--touch-target-min: 44px;--touch-target-comfortable: 56px;--zone-action: 30vh;--zone-decision: 60vh;--zone-context: 10vh}@media(prefers-reduced-motion:reduce){:root{--transition-instant: 0ms;--transition-fast: 0ms;--transition-medium: 0ms;--transition-slow: 0ms}}:root{--cartridge-flamingo: #ff9f9f;--cartridge-mint: #7eeac4;--cartridge-sky: #8fc7ff;--cartridge-orchid: #d89ef7;--cartridge-sherbet: #ffb870;--cartridge-slime: #c5f25e;--cartridge-concrete: #d4d4d4;--cartridge-coral: #ff7a7a;--cartridge-teal: #5ed4c7;--cartridge-lavender: #c8b3f0;--cartridge-peach: #ffad8a;--cartridge-sage: #b3d8a4;--cartridge-plum: #d89fc9;--cartridge-pattern-opacity: .08;--cartridge-border: var(--border-thick);--cartridge-shadow: 2px 2px 0 0 var(--color-border);--cartridge-shadow-hover: 4px 4px 0 0 var(--color-border);--cartridge-gap: -2px;--cartridge-rotation-range: .7deg;--cartridge-name-size: 1.25rem;--cartridge-name-weight: 900;--cartridge-name-tracking: -.03em;--cartridge-code-size: var(--text-tiny);--cartridge-transition-transform: transform var(--transition-fast), box-shadow var(--transition-fast);--cartridge-transition-background: background var(--transition-fast);--cartridge-animation-shake: shake .3s ease-in-out}[data-theme=dark]{--cartridge-flamingo: #c45858;--cartridge-mint: #3daa85;--cartridge-sky: #4a8ed4;--cartridge-orchid: #9a5cb8;--cartridge-sherbet: #d4854a;--cartridge-slime: #8bbf3a;--cartridge-concrete: #4a4a4a;--cartridge-coral: #d45454;--cartridge-teal: #3aa897;--cartridge-lavender: #9f7cc6;--cartridge-peach: #d4825a;--cartridge-sage: #8ba876;--cartridge-plum: #b86fa9;--cartridge-pattern-opacity: .12;--cartridge-shadow: 2px 2px 0 0 rgba(255, 255, 255, .3);--cartridge-shadow-hover: 4px 4px 0 0 rgba(255, 255, 255, .4)}.cartridge-pattern-hazard{background-image:repeating-linear-gradient(45deg,transparent,transparent 8px,rgba(0,0,0,var(--cartridge-pattern-opacity)) 8px,rgba(0,0,0,var(--cartridge-pattern-opacity)) 10px)}.cartridge-pattern-dots{background-image:radial-gradient(circle,rgba(0,0,0,var(--cartridge-pattern-opacity)) 1.5px,transparent 1.5px);background-size:10px 10px}.cartridge-pattern-grid{background-image:linear-gradient(rgba(0,0,0,var(--cartridge-pattern-opacity)) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,var(--cartridge-pattern-opacity)) 1px,transparent 1px);background-size:16px 16px}.cartridge-pattern-waves{background-image:repeating-linear-gradient(-45deg,transparent,transparent 4px,rgba(0,0,0,calc(var(--cartridge-pattern-opacity) * .6)) 4px,rgba(0,0,0,calc(var(--cartridge-pattern-opacity) * .6)) 5px,transparent 5px,transparent 9px)}[data-theme=dark] .cartridge-pattern-hazard,[data-theme=dark] .cartridge-pattern-dots,[data-theme=dark] .cartridge-pattern-grid,[data-theme=dark] .cartridge-pattern-waves{filter:invert(1);mix-blend-mode:overlay}@media(prefers-reduced-motion:reduce){:root{--cartridge-transition-transform: none;--cartridge-transition-background: none;--cartridge-animation-shake: none}}:root{--viewport-height-dynamic: 100dvh;--viewport-height-small: 100svh;--viewport-height-large: 100lvh;--vh-fallback: 1vh;--viewport-height: 100vh;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--keyboard-height: 0px}@supports not (height: 100dvh){:root{--viewport-height-dynamic: calc(var(--vh-fallback) * 100)}}.no-dvh{--viewport-height-dynamic: var(--viewport-height)}.h-screen-safe{height:100vh;height:100svh}.h-screen-dynamic{height:100vh;height:100dvh}.no-dvh .h-screen-dynamic{height:var(--viewport-height)}.h-screen-keyboard{height:100vh;height:calc(100svh - var(--keyboard-height, 0px))}.keyboard-aware-bottom{padding-bottom:env(keyboard-inset-height,var(--keyboard-height, 0px))}.safe-area-bottom{padding-bottom:var(--safe-bottom)}.safe-area-top{padding-top:var(--safe-top)}.safe-area-all{padding-top:var(--safe-top);padding-bottom:var(--safe-bottom);padding-left:var(--safe-left);padding-right:var(--safe-right)}.app-shell{display:flex;flex-direction:column;height:100dvh;height:var(--viewport-height-dynamic);width:100%;overflow:hidden}.app-shell__header{flex-shrink:0;padding-top:var(--safe-top)}.app-shell__content{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;min-height:0}.app-shell__footer{flex-shrink:0;padding-bottom:var(--safe-bottom)}.touch-action-pan-x{touch-action:pan-x}.touch-action-manipulation{touch-action:manipulation}.touch-action-none{touch-action:none}html.viewport-corrupted body{transform:translateZ(0)}html.viewport-repair body{opacity:.999}@media(max-width:768px){html.keyboard-open .hide-on-keyboard{display:none}html.keyboard-open .shrink-on-keyboard{max-height:120px;overflow:hidden}html.keyboard-open .keyboard-aware-max-height{max-height:calc(100svh - var(--keyboard-height, 0px));overflow:hidden}html.keyboard-open .keyboard-align-top{align-items:flex-start}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-mono);font-size:var(--text-body);font-weight:var(--weight-normal);line-height:1.5;color:var(--color-text);background-color:var(--color-background)}h1,h2,h3,h4,h5,h6{font-weight:var(--weight-bold);line-height:1.2;letter-spacing:var(--tracking-wide)}h1{font-size:var(--text-h1);font-weight:var(--weight-black);letter-spacing:var(--tracking-widest);text-transform:uppercase}h2{font-size:var(--text-h2);font-weight:var(--weight-bold);letter-spacing:var(--tracking-wider);text-transform:uppercase}h3{font-size:var(--text-h3);font-weight:var(--weight-semibold)}p{margin-bottom:var(--space-2)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none}button:disabled{cursor:not-allowed;opacity:.5}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide);background:var(--color-accent);border:var(--border-thick);transition:transform var(--transition-fast),background var(--transition-fast)}.btn:hover:not(:disabled){background:var(--color-accent-dark);transform:translateY(-2px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{background:var(--color-disabled)}.btn-secondary{background:var(--color-surface)}.btn-secondary:hover:not(:disabled){background:var(--color-background)}.btn-ghost{background:transparent;border:var(--border-thin)}.btn-ghost:hover:not(:disabled){background:var(--color-accent-light)}.card{background:var(--color-surface);border:var(--border-medium);padding:var(--space-3)}.card-header{padding-bottom:var(--space-2);margin-bottom:var(--space-2);border-bottom:var(--border-thin);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide)}*:focus-visible{outline:3px solid var(--color-accent);outline-offset: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-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}
