@font-face{font-family:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url("./assets/press-start-2p-latin-400-normal.woff2") format("woff2"),url("./assets/press-start-2p-latin-400-normal.woff") format("woff")}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url("./assets/space-mono-latin-400-normal.woff2") format("woff2"),url("./assets/space-mono-latin-400-normal.woff") format("woff")}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url("./assets/space-mono-latin-700-normal.woff2") format("woff2"),url("./assets/space-mono-latin-700-normal.woff") format("woff")}:root{color-scheme:dark;font-family:Space Mono,Courier New,monospace;font-synthesis:none;--ink: #020d18;--ink-soft: #071725;--surface: #031321;--surface-raised: #071b2b;--bone: #f5efd7;--bone-muted: #b8b39f;--mint: #68e6ad;--mint-deep: #2ebd83;--orange: #ff921f;--danger: #ff634d;--line: rgba(245, 239, 215, .86);--line-muted: rgba(245, 239, 215, .2);--space-1: .375rem;--space-2: .625rem;--space-3: 1rem;--space-4: 1.5rem;--space-5: 2rem;--space-6: 3rem;--space-7: 4.5rem;--motion-fast: .14s;--motion-medium: .26s;background:var(--ink);color:var(--bone)}*{box-sizing:border-box}html{min-width:320px;min-height:100%;background:var(--ink)}body{min-width:320px;min-height:100svh;margin:0;overflow-x:hidden;background:var(--ink)}body:before{position:fixed;z-index:-2;inset:0;content:"";background-image:linear-gradient(#020d1838,#020d187a),url("./assets/arcade-surface.png");background-position:center;background-size:cover;opacity:.88}body:after{position:fixed;z-index:10;inset:0;pointer-events:none;content:"";background:repeating-linear-gradient(to bottom,transparent 0,transparent 3px,rgba(1,8,14,.16) 4px);mix-blend-mode:multiply;opacity:.45}button,select,input{font:inherit}button,select{color:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible,a:focus-visible{outline:3px solid var(--orange);outline-offset:4px}[hidden]{display:none!important}.skip-link{position:fixed;z-index:100;top:var(--space-3);left:var(--space-3);padding:.75rem 1rem;transform:translateY(-180%);background:var(--mint);color:var(--ink);font-weight:700;text-decoration:none}.skip-link:focus{transform:translateY(0)}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.app-shell{width:min(100%,1600px);min-height:100svh;margin:0 auto;padding:clamp(1rem,2.2vw,2.25rem)}.screen{min-height:calc(100svh - clamp(2rem,4.4vw,4.5rem))}.menu-screen{position:relative;display:grid;grid-template-columns:minmax(18rem,.72fr) minmax(32rem,1.4fr);grid-template-rows:1fr auto;gap:clamp(1.75rem,4vw,5rem);padding:clamp(1.5rem,2.5vw,3rem) clamp(1rem,3vw,3rem) clamp(.75rem,1.5vw,1.5rem);border:2px solid var(--bone);box-shadow:inset 0 0 0 1px #68e6ad14,0 22px 70px #0000004d}.menu-screen:before,.menu-screen:after{position:absolute;width:8rem;height:.25rem;content:"";background:repeating-linear-gradient(90deg,var(--bone) 0 .45rem,transparent .45rem .85rem);opacity:.8}.menu-screen:before{top:-.25rem;left:3rem}.menu-screen:after{right:3rem;bottom:-.25rem}.launch-panel{display:flex;min-width:0;flex-direction:column;justify-content:center}.game-title{display:flex;margin:0 0 clamp(2rem,5vh,4.5rem);flex-direction:column;font-family:"Press Start 2P",monospace;font-size:clamp(3.7rem,7.4vw,7.7rem);font-weight:400;letter-spacing:-.08em;line-height:.86;text-transform:uppercase;filter:drop-shadow(8px 8px 0 rgba(46,189,131,.11))}.title-gg{color:var(--mint)}.title-pong{margin-top:.2em;color:var(--bone);font-size:.55em;letter-spacing:-.04em}.main-menu{display:grid;gap:.8rem}.menu-item{position:relative;display:grid;width:100%;min-height:clamp(3.65rem,7vh,5.2rem);padding:.85rem 1.25rem .85rem 3.75rem;grid-template-columns:1.25rem 1fr;gap:.8rem;align-items:center;border:2px solid var(--line);border-radius:0;background:#020d18b3;box-shadow:none;color:var(--bone);cursor:pointer;font-size:clamp(.73rem,1.12vw,1rem);font-weight:700;letter-spacing:.14em;line-height:1.45;text-align:left;text-transform:uppercase;transition:color var(--motion-fast) ease,background var(--motion-fast) ease,border-color var(--motion-fast) ease,transform var(--motion-fast) ease}.menu-item:after{position:absolute;top:-2px;right:-2px;width:.65rem;height:.65rem;content:"";background:var(--ink);border-bottom:2px solid currentColor;border-left:2px solid currentColor}.menu-item:hover,.menu-item.is-selected,.menu-item:focus-visible{transform:translate(.35rem);border-color:var(--mint);background:var(--mint);color:var(--ink)}.menu-cursor{width:0;height:0;border-top:.55rem solid transparent;border-bottom:.55rem solid transparent;border-left:.85rem solid currentColor;opacity:0;transform:translate(-.35rem);transition:opacity var(--motion-fast) ease,transform var(--motion-fast) ease}.menu-item:hover .menu-cursor,.menu-item.is-selected .menu-cursor,.menu-item:focus-visible .menu-cursor{opacity:1;transform:translate(0)}.preview-column{display:flex;min-width:0;flex-direction:column;justify-content:center}.preview-toolbar{display:flex;min-height:3rem;margin-bottom:.75rem;align-items:center;justify-content:flex-end}.preview-label,.match-kicker,.dialog-index,.overlay-label{margin:0;color:var(--mint);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.icon-button,.utility-button{display:inline-flex;min-width:2.85rem;min-height:2.85rem;padding:.7rem;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:0;background:#020d18b3;color:var(--bone);cursor:pointer;transition:background var(--motion-fast) ease,color var(--motion-fast) ease,border-color var(--motion-fast) ease}.icon-button:hover,.utility-button:hover{border-color:var(--mint);background:var(--mint);color:var(--ink)}.icon-button svg,.utility-button svg{width:1.35rem;height:1.35rem;fill:currentColor;stroke:currentColor;stroke-width:1.8;stroke-linecap:square;stroke-linejoin:miter}.sound-off-icon,[aria-pressed=true] .sound-on-icon{display:none}[aria-pressed=true] .sound-off-icon{display:block}.arena-frame{position:relative;padding:clamp(.55rem,1.1vw,.95rem);border:3px solid var(--bone);background:#020d18b8;box-shadow:8px 8px #f5efd71f}.arena-frame:before{position:absolute;z-index:2;top:-3px;right:-3px;width:1rem;height:1rem;content:"";background:var(--ink);border-bottom:3px solid var(--bone);border-left:3px solid var(--bone)}.arena-frame canvas{display:block;width:100%;height:auto;aspect-ratio:8 / 5;background:var(--surface);touch-action:none}.frame-corner{position:absolute;z-index:3;width:1.25rem;height:1.25rem;pointer-events:none;border-color:var(--mint)}.frame-corner-tl{top:1.45rem;left:1.45rem;border-top:4px solid var(--mint);border-left:4px solid var(--mint)}.frame-corner-tr{top:1.45rem;right:1.45rem;border-top:4px solid var(--mint);border-right:4px solid var(--mint)}.frame-corner-bl{bottom:1.45rem;left:1.45rem;border-bottom:4px solid var(--mint);border-left:4px solid var(--mint)}.frame-corner-br{right:1.45rem;bottom:1.45rem;border-right:4px solid var(--mint);border-bottom:4px solid var(--mint)}.record-strip{display:flex;min-height:4rem;margin:clamp(1rem,2vw,1.5rem) clamp(0rem,4vw,3rem) 0;padding:.85rem clamp(1rem,3vw,2.5rem);align-items:center;justify-content:center;gap:clamp(.75rem,2vw,1.6rem);border:2px solid var(--mint);color:var(--bone);font-size:clamp(.7rem,1vw,.9rem);font-weight:700;letter-spacing:.1em;text-transform:uppercase}.record-strip strong{color:var(--orange)}.record-dot{width:.5rem;height:.5rem;background:var(--mint)}.menu-footer{display:grid;grid-column:1 / -1;grid-template-columns:1fr auto 1fr;gap:1rem;align-items:end;padding-top:1rem;border-top:1px dotted rgba(245,239,215,.6);font-size:clamp(.64rem,.9vw,.82rem);letter-spacing:.11em;text-transform:uppercase}.menu-footer p{margin:0}.key-hint{display:flex;flex-wrap:wrap;gap:.65rem;align-items:center}kbd{display:inline-flex;min-width:2rem;min-height:2rem;padding:.25rem .5rem;align-items:center;justify-content:center;border:1px solid var(--bone);background:#020d18a6;color:var(--bone);font-family:inherit;font-size:.75rem;box-shadow:inset 0 -3px #f5efd71f}.arcade-signoff{display:flex;gap:.8rem;align-items:center;color:var(--mint);text-align:center}.arcade-signoff a{color:var(--bone);text-underline-offset:.3rem;transition:color var(--motion-fast) ease}.arcade-signoff a:hover{color:var(--orange)}.version-label{justify-self:end;color:var(--bone-muted)}.game-screen{--arena-width: 100%;display:flex;width:min(100%,1280px);margin:0 auto;padding:clamp(.5rem,2vh,1.5rem) 0;flex-direction:column;justify-content:center}.game-toolbar{display:flex;width:var(--arena-width);align-self:center;margin-bottom:1rem;align-items:end;justify-content:space-between;gap:1rem}.game-toolbar h2{margin:.4rem 0 0;font-family:"Press Start 2P",monospace;font-size:clamp(1rem,2.5vw,1.6rem);font-weight:400;line-height:1.4;text-transform:uppercase}.toolbar-actions{display:flex;gap:.6rem}.utility-button{gap:.55rem;padding-inline:1rem;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.game-frame{width:var(--arena-width);align-self:center}.arena-overlay{position:absolute;z-index:4;inset:clamp(.55rem,1.1vw,.95rem);display:flex;flex-direction:column;align-items:center;justify-content:center;background:#020d18e3;backdrop-filter:blur(3px);text-align:center}.arena-overlay h3{margin:.75rem 0 2rem;font-family:"Press Start 2P",monospace;font-size:clamp(1.3rem,3vw,2.4rem);font-weight:400;text-transform:uppercase}.overlay-actions,.result-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.primary-button,.secondary-button{min-height:3.2rem;padding:.75rem 1.4rem;border:2px solid var(--mint);border-radius:0;background:var(--mint);color:var(--ink);cursor:pointer;font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;transition:transform var(--motion-fast) ease,background var(--motion-fast) ease,color var(--motion-fast) ease}.secondary-button{border-color:var(--bone);background:transparent;color:var(--bone)}.primary-button:hover,.secondary-button:hover{transform:translateY(-2px);background:var(--orange);border-color:var(--orange);color:var(--ink)}.game-status{display:grid;width:var(--arena-width);align-self:center;margin-top:1rem;padding:.85rem 1rem;grid-template-columns:auto auto 1fr;gap:clamp(1rem,3vw,2.5rem);border:1px solid var(--line-muted);color:var(--bone-muted);font-size:clamp(.65rem,1.2vw,.78rem);letter-spacing:.1em;text-transform:uppercase}.game-status strong{color:var(--orange)}.game-status span:last-child{justify-self:end}.touch-controls{display:none;margin-top:1rem;grid-template-columns:1fr 1fr;gap:1rem}.touch-player{display:grid;grid-template-columns:auto 1fr 1fr;gap:.5rem;align-items:center}.touch-player>span{color:var(--mint);font-size:.68rem;font-weight:700;letter-spacing:.1em}.touch-player button{min-height:3.25rem;border:1px solid var(--line);border-radius:0;background:#031321d6;color:var(--bone);touch-action:none}.touch-player button:active,.touch-player button.is-held{border-color:var(--mint);background:var(--mint);color:var(--ink)}.arcade-dialog{width:min(calc(100% - 2rem),780px);max-height:calc(100svh - 2rem);padding:clamp(1.25rem,4vw,2.75rem);overflow:auto;border:2px solid var(--bone);border-radius:0;background:var(--surface);box-shadow:12px 12px #68e6ad33;color:var(--bone)}.arcade-dialog::backdrop{background:#00070dd6;backdrop-filter:blur(4px)}.dialog-header{display:flex;margin-bottom:2rem;align-items:start;justify-content:space-between;gap:1rem}.dialog-header h2,.result-dialog h2{margin:.6rem 0 0;font-family:"Press Start 2P",monospace;font-size:clamp(1.25rem,3vw,2rem);font-weight:400;line-height:1.45;text-transform:uppercase}.dialog-close{width:2.8rem;height:2.8rem;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--bone);cursor:pointer;font-size:1.5rem;line-height:1}.dialog-close:hover{border-color:var(--orange);background:var(--orange);color:var(--ink)}.how-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-muted);border-bottom:1px solid var(--line-muted)}.how-grid article{min-width:0;padding:1.5rem;border-right:1px solid var(--line-muted)}.how-grid article:first-child{padding-left:0}.how-grid article:last-child{padding-right:0;border-right:0}.how-number{color:var(--orange);font-size:.7rem;font-weight:700}.how-grid h3{margin:.65rem 0;color:var(--mint);font-size:.9rem;letter-spacing:.08em;text-transform:uppercase}.how-grid p,.setting-row small,.result-detail{color:var(--bone-muted);font-size:.78rem;line-height:1.7}.control-table{display:grid;margin:1.5rem 0;gap:.65rem}.control-table>div{display:grid;grid-template-columns:1fr auto auto;gap:.5rem;align-items:center;font-size:.76rem}.dialog-confirm{width:100%}.setting-row{display:flex;min-width:0;margin:0;padding:1.25rem 0;align-items:center;justify-content:space-between;gap:1rem;border:0;border-top:1px solid var(--line-muted)}.setting-row>span,.setting-row legend{display:flex;min-width:0;flex-direction:column;gap:.3rem;padding:0}.setting-row strong{font-size:.83rem;letter-spacing:.06em;text-transform:uppercase}.setting-row select{min-width:9rem;padding:.7rem 2rem .7rem .8rem;border:1px solid var(--line);border-radius:0;background:var(--ink);color:var(--bone);font-size:.78rem}.target-setting{display:grid;grid-template-columns:1fr auto}.segmented-control{display:flex}.segmented-control label{position:relative}.segmented-control input{position:absolute;opacity:0}.segmented-control span{display:grid;min-width:3.3rem;min-height:2.75rem;place-items:center;border:1px solid var(--line);border-left:0;cursor:pointer;color:var(--bone)}.segmented-control label:first-child span{border-left:1px solid var(--line)}.segmented-control input:checked+span,.segmented-control input:focus-visible+span{background:var(--mint);color:var(--ink)}.toggle-setting input{width:3.7rem;height:2rem;margin:0;appearance:none;border:1px solid var(--line);border-radius:0;background:var(--ink);cursor:pointer}.toggle-setting input:before{display:block;width:1.35rem;height:1.35rem;margin:.25rem;content:"";background:var(--bone-muted);transition:transform var(--motion-fast) ease,background var(--motion-fast) ease}.toggle-setting input:checked:before{transform:translate(1.65rem);background:var(--mint)}.result-dialog{text-align:center}.result-mark{margin-bottom:1.4rem;color:var(--mint);font-family:"Press Start 2P",monospace;font-size:3rem;line-height:1}.result-score{margin:1.8rem 0 .8rem;color:var(--orange);font-family:"Press Start 2P",monospace;font-size:clamp(2rem,8vw,4.5rem)}.result-detail{margin-bottom:2rem}@media(max-width:1050px){.menu-screen{grid-template-columns:1fr;grid-template-rows:auto auto auto;padding-inline:clamp(1rem,4vw,2.5rem)}.launch-panel{display:grid;grid-template-columns:minmax(12rem,.7fr) minmax(18rem,1.2fr);gap:clamp(1.5rem,5vw,3rem);align-items:end}.game-title{margin:0}.menu-footer{grid-row:3}.preview-column{grid-row:2}}@media(min-width:721px)and (min-height:700px){.game-screen{--arena-width: min(100%, calc((100svh - 13.5rem)*1.6) );padding-block:0}}@media(max-width:720px){.app-shell{padding:.65rem}.screen{min-height:calc(100svh - 1.3rem)}.menu-screen{gap:1.5rem;padding:2rem 1rem 1rem}.launch-panel{display:flex;align-items:stretch}.game-title{margin:0 0 2rem;align-items:center;font-size:clamp(3.5rem,20vw,6rem);text-align:center}.title-pong{font-size:.42em}.menu-item{min-height:3.45rem;padding-left:2.6rem;grid-template-columns:.8rem 1fr;font-size:.68rem}.preview-toolbar{min-height:2.5rem}.record-strip{margin-inline:0}.menu-footer{grid-template-columns:1fr auto;align-items:center}.arcade-signoff{grid-row:2;grid-column:1 / -1;justify-self:center}.arcade-signoff-label{display:none}.version-label{grid-column:2;grid-row:1}.key-hint{gap:.4rem}.game-screen{justify-content:flex-start;padding-top:.5rem}.game-toolbar{align-items:center}.game-toolbar h2{font-size:.85rem}.utility-button{min-width:2.85rem;padding-inline:.7rem;font-size:0}.utility-button svg{margin:0}.game-status{grid-template-columns:1fr 1fr}.game-status span:last-child{grid-column:1 / -1;justify-self:start}.touch-controls{display:grid}.how-grid{grid-template-columns:1fr}.how-grid article,.how-grid article:first-child,.how-grid article:last-child{padding:1rem 0;border-right:0;border-bottom:1px solid var(--line-muted)}.how-grid article:last-child{border-bottom:0}.setting-row,.target-setting{display:grid;grid-template-columns:1fr}.setting-row select,.segmented-control{width:100%}.segmented-control label{flex:1}.segmented-control span{min-width:0}.toggle-setting input{justify-self:start}}@media(pointer:coarse){.touch-controls{display:grid}}@media(max-width:480px){.preview-label{display:none}.preview-toolbar{justify-content:flex-end}.record-strip{min-height:3.35rem;padding-inline:.6rem;gap:.55rem;font-size:.58rem}.frame-corner{width:.85rem;height:.85rem}.frame-corner-tl,.frame-corner-tr{top:.9rem}.frame-corner-bl,.frame-corner-br{bottom:.9rem}.frame-corner-tl,.frame-corner-bl{left:.9rem}.frame-corner-tr,.frame-corner-br{right:.9rem}.menu-footer{font-size:.56rem}.menu-footer kbd{min-width:1.65rem;min-height:1.65rem;padding:.15rem .3rem;font-size:.6rem}.touch-controls{grid-template-columns:1fr}.touch-player-two[hidden]+*{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}body:after{opacity:.2}}
.portfolio-demo-banner{position:relative;z-index:30;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 20px;padding:10px 16px;background:#111218;color:#f4f1e9;font:12px/1.5 system-ui,sans-serif;border-bottom:1px solid #34343f}.portfolio-demo-banner a{color:inherit;text-decoration:underline;text-underline-offset:3px}.portfolio-demo-banner a:focus-visible{outline:2px solid currentColor;outline-offset:4px}@media(max-width:420px){.portfolio-demo-banner{font-size:11px;padding:8px 12px}}
