:root{--p-lavender: #e2d9e4;--p-sea: #6c9a9a;--p-moss: #52675d;--p-moss-dark: #37403b;--p-sand: #f3c893;--p-coral: #e5987d;--p-red: #cb5e5c;--p-plum: #72334c;--p-rose: #c0a5a9;--p-mauve: #bf7d85;--p-wine: #804d53;--p-plum-dark: #403038;--p-blue: #7c8fb2;--p-blue-dark: #4c5274;--p-navy: #2e334d;--p-ink: #1f2025;--bg: var(--p-ink);--surface: var(--p-navy);--surface-dark: var(--p-plum-dark);--text: var(--p-lavender);--muted: var(--p-rose);--line: var(--p-sand);--accent: var(--p-coral);--accent-strong: var(--p-red);--shadow: var(--p-plum);--board-light: var(--p-lavender);--board-dark: var(--p-moss-dark);--board-size: clamp(9rem, 34vmin, 19rem);--target-board-size: clamp(7.25rem, 26vmin, 14rem);--gap: 1.3rem;color:var(--text);background:var(--bg);font-family:Courier New,Courier,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-synthesis:none;text-rendering:geometricPrecision;-webkit-font-smoothing:none}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg)}button{font:inherit}.boot,.auth-screen,.game-screen{min-height:100vh;min-height:100svh}.boot{display:grid;place-items:center;background:var(--bg)}.boot:before{width:3rem;height:3rem;background:var(--line);animation:load .7s infinite steps(1);content:""}.auth-screen,.game-screen{display:grid;place-items:center;padding:2rem}.auth-panel,.play-panel,.home-panel{border:4px solid var(--line);background:var(--surface);box-shadow:8px 8px 0 var(--shadow)}.auth-panel{display:grid;justify-items:center;gap:1.3rem;width:min(100%,27rem);padding:2.2rem;text-align:center}.home-panel{display:grid;gap:1.2rem;width:min(100%,38rem);padding:1.4rem}.daily-menu-panel{width:min(100%,32rem)}.home-header{display:flex;align-items:start;justify-content:space-between;gap:1rem}.auth-panel h1,.home-panel h1,.panel-header h1,.rules-modal h2{margin:0;color:var(--text);font-weight:900;letter-spacing:0}.auth-panel h1{font-size:4rem;line-height:.9;text-shadow:4px 4px 0 var(--shadow);white-space:nowrap}.home-panel h1{font-size:2rem;line-height:1}.panel-header h1{font-size:2rem;line-height:1;white-space:nowrap}.google-button,.icon-button,.rules-button,.mode-card{border:3px solid var(--line);border-radius:0;background:var(--surface-dark);color:var(--text)}.google-button,.icon-button,.rules-button,.mode-card{cursor:pointer;box-shadow:4px 4px 0 var(--shadow);transition:box-shadow 80ms steps(1),transform 80ms steps(1)}.google-button{display:inline-flex;align-items:center;justify-content:center;gap:.65rem;min-height:3.25rem;padding:0 1rem;font-size:.95rem;font-weight:900;text-transform:uppercase}.google-button span:first-child{display:grid;place-items:center;width:1.55rem;height:1.55rem;background:var(--accent);color:var(--bg)}.google-button:disabled{background:var(--p-moss);color:var(--muted);cursor:default}.icon-button:disabled{color:var(--muted);cursor:default;opacity:.55}.icon-button--blink{animation:restart-blink .7s infinite steps(1)}.google-button:not(:disabled):hover,.icon-button:not(:disabled):hover,.rules-button:hover,.mode-card:hover{box-shadow:2px 2px 0 var(--shadow);transform:translate(2px,2px)}.piece-preview{display:flex;justify-content:center;gap:.5rem;padding:.65rem;border:3px solid var(--accent);background:var(--surface-dark)}.game-shell{width:min(100%,58rem)}.play-panel{display:grid;gap:1.2rem;padding:1.4rem}.mode-grid{display:grid;gap:.8rem}.mode-card{display:grid;gap:.35rem;min-height:4rem;padding:.9rem;text-align:left}.mode-card span,.mode-card strong{display:block;line-height:1}.mode-card span{color:var(--text);font-size:1.1rem;font-weight:900}.mode-card strong{color:var(--accent);font-size:.85rem;font-weight:900;text-transform:uppercase}.mode-card--soon{border-color:var(--muted)}.mode-card:disabled,.google-button:disabled{cursor:default;opacity:.6}.panel-header{display:flex;align-items:end;justify-content:space-between;gap:1rem}.session-meta{margin-top:.4rem;color:var(--accent);font-size:.85rem;font-weight:900;text-transform:uppercase}.status-strip,.soon-panel{border:3px solid var(--accent);background:var(--surface-dark);color:var(--text);padding:.8rem;font-size:.95rem;font-weight:900}.status-strip--error{border-color:var(--accent-strong);color:var(--accent-strong)}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}.stats-grid--summary{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-box{display:grid;gap:.3rem;min-height:3.6rem;border:3px solid var(--accent);background:var(--surface-dark);padding:.55rem}.stat-box span,.stat-box strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-box span{color:var(--muted);font-size:.72rem;font-weight:900;text-transform:uppercase}.stat-box strong{color:var(--text);font-size:1rem;font-weight:900;font-variant-numeric:tabular-nums;line-height:1}.soon-panel{min-height:8rem;display:grid;place-items:center;text-transform:uppercase}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.8rem;border:3px solid var(--line);background:var(--surface-dark);padding:.65rem}.calendar-toolbar__title{color:var(--accent);font-size:.95rem;font-weight:900;line-height:1;text-transform:uppercase}.calendar-arrows{display:flex;gap:.55rem;margin-left:auto}.pixel-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;border:3px solid var(--accent);background:var(--surface-dark);padding:.65rem}.calendar-weekday{display:grid;place-items:center;min-height:1.6rem;color:var(--muted);font-size:.75rem;font-weight:900;line-height:1}.calendar-cell{display:grid;place-items:center;width:100%;aspect-ratio:1;border:3px solid var(--line);border-radius:0;background:var(--surface);color:var(--text);font-size:.95rem;font-weight:900;line-height:1;box-shadow:3px 3px 0 var(--shadow)}button.calendar-cell{cursor:pointer;transition:box-shadow 80ms steps(1),transform 80ms steps(1)}button.calendar-cell:not(:disabled):hover{box-shadow:1px 1px 0 var(--shadow);transform:translate(2px,2px)}.calendar-cell--empty{border-color:transparent;background:transparent;box-shadow:none}.calendar-cell--unavailable{border-color:var(--muted);background:var(--bg);color:var(--muted);cursor:default;opacity:.55;box-shadow:none}.calendar-cell--today{border-color:var(--accent);color:var(--accent)}.calendar-cell--completed{background:var(--accent);color:var(--bg)}.calendar-cell--completed.calendar-cell--today{border-color:var(--line)}.calendar-loading-overlay{position:fixed;inset:0;z-index:8;display:grid;place-items:center;pointer-events:none;background:#0000001f}.calendar-loading-overlay>span{border:3px solid var(--accent);background:var(--surface-dark);color:var(--text);font-weight:900;font-size:.95rem;padding:.65rem .95rem;box-shadow:4px 4px 0 var(--shadow)}.game-stage{display:flex;align-items:end;justify-content:center;gap:var(--gap)}.board{display:grid;flex:0 0 auto;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:var(--board-size);aspect-ratio:1;border:4px solid var(--line);overflow:hidden;background:var(--bg);box-shadow:6px 6px 0 var(--shadow)}.board--target{width:var(--target-board-size);border-color:var(--accent);box-shadow:none}.square{position:relative;display:grid;place-items:center;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;background:var(--board-light);box-shadow:inset 0 0 0 2px var(--bg)}.square:nth-child(2n){background:var(--board-dark)}.square--blocked,.square--blocked:nth-child(2n){background:#5b2532;box-shadow:inset 0 0 0 2px var(--bg),inset 0 0 0 4px var(--accent-strong)}.square--blocked:before,.square--blocked:after{position:absolute;width:58%;height:.16rem;background:var(--p-rose);content:"";opacity:.78;pointer-events:none}.square--blocked:before{transform:rotate(45deg)}.square--blocked:after{transform:rotate(-45deg)}.square--over:after,.square--correct:after{position:absolute;inset:.3rem;content:"";pointer-events:none}.square--over:after{border:4px solid var(--accent-strong)}.board--target .square--correct{background:var(--accent)}.board--target .square--correct:after{border:3px solid var(--shadow)}.piece{z-index:1;display:grid;place-items:center;width:88%;height:88%;min-width:0;min-height:0;border:0;border-radius:0;background:transparent;cursor:default;touch-action:none;-webkit-user-select:none;user-select:none;image-rendering:pixelated}.board--target .piece--correct{background:var(--shadow)}.piece--draggable{cursor:grab}.piece--draggable:active{cursor:grabbing}.piece--dragging{visibility:hidden}.piece--floating{width:calc(var(--board-size) / 3.35);height:calc(var(--board-size) / 3.35);pointer-events:none}.piece-image{width:100%;aspect-ratio:1;object-fit:contain;image-rendering:pixelated;pointer-events:none}.piece-preview .piece-image{width:2.6rem;height:2.6rem}.score{display:grid;place-items:center;min-width:4.25rem;height:2.65rem;border:3px solid var(--line);background:var(--surface-dark);color:var(--accent);font-size:1rem;font-weight:900;font-variant-numeric:tabular-nums;line-height:1;box-shadow:4px 4px 0 var(--shadow)}.score--done{background:var(--accent);color:var(--bg)}.panel-footer{display:flex;align-items:start;justify-content:space-between;gap:1rem}.hud{display:flex;justify-content:flex-end;gap:.7rem;margin-left:auto}.icon-button{display:grid;place-items:center;width:2.65rem;height:2.65rem}.rules-button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.65rem;padding:0 .8rem;font-size:.9rem;font-weight:900;text-transform:uppercase}.modal-backdrop{position:fixed;inset:0;z-index:10;display:grid;place-items:center;padding:1rem;background:var(--bg)}.modal-backdrop--overlay{background:#1f2025d6}.rules-modal{display:grid;gap:1rem;width:min(100%,32rem);border:4px solid var(--line);background:var(--surface);padding:1.2rem;box-shadow:8px 8px 0 var(--shadow)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.rules-modal h2{font-size:1.55rem;line-height:1}.modal-close{flex:0 0 auto}.rules-modal ul{display:grid;gap:.65rem;margin:0;padding:0 0 0 1rem;border-left:3px solid var(--accent);list-style:none}.rules-modal li{color:var(--text);font-size:.92rem;line-height:1.4}.alias-modal{width:min(100%,23rem)}.alias-form{display:grid;gap:.8rem}.alias-field{display:grid;gap:.45rem}.alias-field span{color:var(--muted);font-size:.78rem;font-weight:900;text-transform:uppercase}.alias-input{width:100%;min-height:3.1rem;border:3px solid var(--line);border-radius:0;background:var(--surface-dark);color:var(--text);padding:0 .75rem;font:inherit;font-size:1.15rem;font-weight:900;outline:none;box-shadow:inset 3px 3px 0 var(--shadow)}.alias-input:focus{border-color:var(--accent)}.alias-input[aria-invalid=true]{border-color:var(--accent-strong)}.alias-help,.alias-error{margin:0;min-height:1.25rem;font-size:.8rem;font-weight:900;line-height:1.25;text-transform:uppercase}.alias-help{color:var(--muted)}.alias-error{color:var(--accent-strong)}.alias-actions{display:flex;justify-content:flex-end}.alias-save-button{min-width:8.5rem}.versus-panel{width:min(100%,42rem)}.versus-actions,.versus-settings,.join-room-form,.player-list,.results-panel{display:grid;gap:.8rem}.mode-card--command{min-height:4.8rem}.join-room-form{grid-template-columns:minmax(0,1fr) auto;align-items:end}.room-code-input{min-height:4rem;text-align:center;font-size:1.7rem;text-transform:uppercase}.room-lobby-meta{display:grid;grid-template-columns:minmax(0,2fr) minmax(7rem,1fr);gap:.8rem}.room-code-display,.room-capacity{display:grid;place-items:center;gap:.45rem;border:4px solid var(--line);background:var(--surface-dark);padding:.85rem;box-shadow:5px 5px 0 var(--shadow)}.room-capacity{border-color:var(--accent)}.room-code-display span,.room-capacity span{color:var(--muted);font-size:.78rem;font-weight:900;line-height:1;text-transform:uppercase}.room-code-display strong{color:var(--accent);font-size:2.6rem;font-weight:900;line-height:.95}.room-capacity strong{color:var(--text);font-size:1.65rem;font-weight:900;line-height:1}.versus-settings{border:3px solid var(--accent);background:var(--surface-dark);padding:.8rem}.versus-rules-title{margin:0;color:var(--accent);font-size:.9rem;font-weight:900;line-height:1;text-transform:uppercase}.versus-rules-summary{display:grid;gap:.65rem}.range-field{display:grid;gap:.55rem}.range-field__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:var(--muted);font-size:.82rem;font-weight:900;text-transform:uppercase}.range-field__header strong{color:var(--accent);font-size:1rem}.retro-slider{appearance:none;width:100%;height:2rem;background:transparent;cursor:pointer}.retro-slider::-webkit-slider-runnable-track{height:.9rem;border:3px solid var(--line);background:repeating-linear-gradient(90deg,var(--surface) 0 .55rem,var(--surface-dark) .55rem 1.1rem);box-shadow:3px 3px 0 var(--shadow)}.retro-slider::-webkit-slider-thumb{appearance:none;width:1.45rem;height:1.45rem;margin-top:-.55rem;border:3px solid var(--line);background:var(--accent);box-shadow:3px 3px 0 var(--shadow)}.retro-slider::-moz-range-track{height:.9rem;border:3px solid var(--line);background:repeating-linear-gradient(90deg,var(--surface) 0 .55rem,var(--surface-dark) .55rem 1.1rem);box-shadow:3px 3px 0 var(--shadow)}.retro-slider::-moz-range-thumb{width:1.45rem;height:1.45rem;border:3px solid var(--line);border-radius:0;background:var(--accent);box-shadow:3px 3px 0 var(--shadow)}.room-toast{position:fixed;top:1rem;left:50%;z-index:20;width:min(calc(100% - 2rem),24rem);transform:translate(-50%);border:3px solid var(--accent-strong);background:var(--surface-dark);color:var(--text);padding:.75rem .9rem;box-shadow:5px 5px 0 var(--shadow);font-size:.88rem;font-weight:900;line-height:1.25;text-align:center;text-transform:uppercase}.leave-room-modal{width:min(100%,28rem)}.leave-room-copy{margin:0;border-left:3px solid var(--accent-strong);color:var(--text);padding-left:.8rem;font-size:.95rem;font-weight:900;line-height:1.35}.leave-room-actions{display:flex;justify-content:flex-end;gap:.7rem}.pixel-checkbox{display:flex;align-items:center;gap:.65rem;color:var(--text);font-size:.88rem;font-weight:900;text-transform:uppercase;cursor:pointer}.pixel-checkbox input{position:absolute;opacity:0;pointer-events:none}.pixel-checkbox span{display:grid;place-items:center;flex:0 0 auto;width:1.45rem;height:1.45rem;border:3px solid var(--line);background:var(--surface);box-shadow:3px 3px 0 var(--shadow)}.pixel-checkbox input:checked+span{background:var(--accent)}.pixel-checkbox input:checked+span:before{width:.65rem;height:.65rem;background:var(--bg);content:""}.player-list{border:3px solid var(--accent);background:var(--surface-dark);padding:.65rem}.player-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto auto;align-items:center;gap:.55rem;min-height:2.6rem;color:var(--text);font-weight:900}.player-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connection-dot{width:.75rem;height:.75rem;background:var(--muted);box-shadow:2px 2px 0 var(--shadow)}.connection-dot--online{background:var(--accent)}.player-badge{border:2px solid var(--line);background:var(--surface);color:var(--accent);padding:.25rem .35rem;font-size:.68rem;font-weight:900;line-height:1;text-transform:uppercase}.icon-button--small{width:2.2rem;height:2.2rem}.start-room-button{width:100%}.panel-header--versus{align-items:start}.versus-game-hud{display:flex;align-items:flex-start;justify-content:flex-end;gap:.8rem;min-width:min(100%,20rem)}.versus-play-layout{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;gap:.9rem}.versus-board-area{min-width:0}.versus-target-progress{display:flex;align-items:flex-end;gap:.75rem}.versus-progress-list{display:grid;gap:.35rem;width:min(14rem,36vw);border:3px solid var(--accent);background:var(--surface-dark);padding:.5rem}.versus-progress-list--mobile{display:none}.versus-progress-row{display:grid;grid-template-columns:minmax(4rem,1fr) minmax(4rem,1fr);align-items:center;gap:.45rem}.versus-progress-row span{overflow:hidden;color:var(--muted);font-size:.68rem;font-weight:900;line-height:1;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.versus-progress-track{height:.8rem;border:2px solid var(--line);background:var(--bg)}.versus-progress-fill{height:100%;background:var(--accent)}.result-victory-title{border:3px solid var(--accent);background:var(--surface-dark);color:var(--accent);padding:.65rem;font-size:.9rem;font-weight:900;text-align:center;text-transform:uppercase}.round-outcome-panel{place-items:center;min-height:12rem;text-align:center}.round-outcome-panel h1{margin:0;font-size:clamp(2.3rem,12vw,5rem);line-height:.9;text-shadow:5px 5px 0 var(--shadow);text-transform:uppercase}.round-outcome-panel--victory{border-color:var(--accent)}.round-outcome-panel--victory h1{color:var(--accent)}.round-outcome-panel--defeat{border-color:var(--accent-strong)}.round-outcome-panel--defeat h1{color:var(--accent-strong)}@keyframes load{50%{background:var(--accent)}}@keyframes restart-blink{0%,to{box-shadow:4px 4px 0 var(--shadow);background:var(--surface-dark)}50%{box-shadow:1px 1px 0 var(--shadow);background:var(--accent-strong)}}@media(max-width:680px){:root{--board-size: clamp(13rem, 73vw, 18rem);--target-board-size: clamp(8rem, 43vw, 10.8rem);--gap: .78rem}.auth-screen,.game-screen{padding:.9rem}.auth-panel,.play-panel,.home-panel{box-shadow:5px 5px 0 var(--shadow)}.auth-panel{padding:1.4rem}.auth-panel h1{font-size:2.8rem}.play-panel{gap:1.05rem;padding:.95rem}.home-panel{padding:1rem}.panel-header{align-items:start}.panel-header h1,.home-panel h1{font-size:1.55rem}.game-stage{flex-direction:column-reverse;align-items:center;gap:.68rem}.panel-footer{flex-wrap:wrap;gap:.8rem}.stats-grid{grid-template-columns:1fr}.hud{margin-left:0}.rules-modal{padding:1rem;box-shadow:5px 5px 0 var(--shadow)}.join-room-form,.room-lobby-meta{grid-template-columns:1fr}.panel-header--versus{display:flex;align-items:start}.versus-game-hud{justify-content:flex-end;min-width:0;width:auto}.versus-play-layout{--board-size: clamp(10.3rem, 51vw, 14rem);--target-board-size: clamp(6.1rem, 30vw, 8.4rem);grid-template-columns:minmax(0,1fr);gap:.45rem}.versus-target-progress{align-items:stretch;gap:.4rem}.versus-progress-list--desktop{display:none}.versus-progress-list{align-self:stretch;align-content:start;width:100%;padding:.35rem}.versus-progress-list--mobile{display:grid;width:5.55rem}.versus-progress-row{grid-template-columns:1fr;gap:.25rem}.versus-progress-row span{font-size:.58rem;white-space:normal;overflow-wrap:anywhere}.versus-progress-track{height:.65rem}.leave-room-actions{display:grid;grid-template-columns:1fr}}
