html{height:100%}.player-shell{--player-bg:black;--player-fg:lightblue;--control-size:56px;--action-width:60px;--movement-width:176px;--actions-width:124px;--deck-inset:24px;--control-lift:32px;height:100%;color:var(--player-fg);flex-direction:column;margin:0;font-family:Courier New,Courier,monospace;display:flex;overflow:hidden}body.player-shell{height:100dvh}.player-toolbar{min-height:48px;padding:env(safe-area-inset-top)max(8px,env(safe-area-inset-right))0 max(8px,env(safe-area-inset-left));-webkit-user-select:none;user-select:none;flex:none;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:4px;display:grid}.player-identity{text-align:center;flex-direction:column;justify-content:center;min-width:0;min-height:44px;display:flex;position:relative}.player-toolbar h1{white-space:nowrap;text-overflow:ellipsis;min-width:0;margin:0;font-size:20px;font-weight:400;line-height:24px;overflow:hidden}#homepagelink{text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent);text-underline-offset:3px;touch-action:manipulation;font:12px/16px system-ui,sans-serif;display:block;overflow:hidden}.touch-enabled #homepagelink:after{content:"";position:absolute;inset:0}body.player-shell:not(.touch-enabled)>.player-toolbar{grid-template-columns:44px minmax(0,max-content) 44px;justify-content:center;gap:12px;padding:12px 16px 8px}body.player-shell:not(.touch-enabled) .player-identity{align-items:center;gap:4px}body.player-shell:not(.touch-enabled) .player-toolbar h1{max-width:100%;font-size:clamp(24px,2.5vw,32px);line-height:1.2}body.player-shell:not(.touch-enabled) #homepagelink{font-size:16px;line-height:22px}.player-controls{align-items:center;min-height:44px;display:flex}.player-controls:last-child{justify-content:flex-end}.player-button{box-sizing:border-box;min-width:44px;height:44px;color:inherit;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:7px;flex-direction:column;flex:0 0 44px;justify-content:center;align-items:center;gap:2px;padding:0;font:500 11px/14px system-ui,sans-serif;display:flex;position:relative}.player-button:before{content:"";border-radius:inherit;opacity:0;pointer-events:none;background:currentColor;border:1px solid;position:absolute;inset:0}.player-button svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;opacity:.8;pointer-events:none;width:22px;height:22px;display:block;position:relative}.player-button span{pointer-events:none;position:relative}.player-deck{display:none}.touch-enabled .player-deck{padding:4px calc(var(--deck-inset) + env(safe-area-inset-right))calc(var(--control-lift) + env(safe-area-inset-bottom))calc(var(--deck-inset) + env(safe-area-inset-left));flex:none;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.player-movement{grid-template:repeat(2,var(--control-size))/repeat(3,var(--control-size));gap:4px;display:grid;position:relative}.movement-surface{pointer-events:none;width:100%;height:100%;fill:color-mix(in srgb,currentColor 8%,var(--player-bg));stroke:currentColor;stroke-opacity:.18;stroke-width:1px;position:absolute;inset:0;overflow:visible}.movement-surface path{vector-effect:non-scaling-stroke}.movement-surface-landscape{display:none}.player-movement .move-up{grid-area:1/2}.player-movement .move-left{grid-area:2/1}.player-movement .move-down{grid-area:2/2}.player-movement .move-right{grid-area:2/3}.player-actions{grid-template:repeat(2,var(--control-size))/repeat(2,var(--action-width));gap:4px;display:grid}.player-deck .player-button{height:var(--control-size);border-radius:14px}.player-deck .player-button svg{stroke-width:1.75px;opacity:.9;width:28px;height:28px}.player-actions .player-button svg{width:24px;height:24px}.player-actions .player-button{width:var(--action-width)}.player-actions #restartButton{grid-area:1/2}.player-actions #undoButton{grid-area:2/1}.player-actions #actionButton{grid-area:1/1}.player-actions.no-action #undoButton{grid-area:2/2}.player-deck .player-button{border:1px solid #0000}.player-deck .player-button:before{inset:-1px}.player-actions .player-button{border-color:color-mix(in srgb,currentColor 32%,transparent);background:color-mix(in srgb,currentColor 12%,var(--player-bg));border-radius:18px}.player-actions .player-button svg{opacity:1}.player-shell:not(.controls-labels) .player-actions .player-button span{display:none}.controls-swapped .player-deck{flex-direction:row-reverse}.controls-stacked .player-actions{grid-template:repeat(3,var(--control-size))/var(--action-width)}.controls-stacked .player-actions #restartButton{grid-area:1/1}.controls-stacked .player-actions #undoButton{grid-area:2/1}.controls-stacked .player-actions #actionButton{grid-area:3/1}.controls-stacked .player-actions.no-action{grid-template-rows:repeat(2,var(--control-size))}.touch-enabled .player-toolbar{grid-template-columns:48px minmax(0,1fr) 48px;min-height:52px}.touch-enabled .player-toolbar .player-button{flex-basis:48px;width:48px;height:48px}.touch-enabled .player-toolbar .player-button svg{width:24px;height:24px}@media (hover:hover){.player-button:hover:not(:disabled):before{opacity:.16}.player-button:hover:not(:disabled) svg{opacity:1}}.player-button:active:not(:disabled):before,.player-button.is-held:before{opacity:.26}.player-button:focus-visible,.player-menu :is(button,input,select,a):focus-visible{outline-offset:2px;outline:2px solid}#gameCanvas:focus,.player-menu-panel:focus{outline:none}.player-button:disabled{opacity:.3;cursor:default}.player-button[hidden],.player-shell:not(.touch-enabled) .touch-control{display:none}.gameContainer{min-width:0;min-height:0;margin-left:env(safe-area-inset-left);margin-right:env(safe-area-inset-right);touch-action:none;flex:1;position:relative}#gameCanvas{-webkit-tap-highlight-color:transparent;width:100%;height:100%;image-rendering:-moz-crisp-edges;image-rendering:pixelated;image-rendering:crisp-edges;border:0;position:absolute;inset:0}#errormessage{text-align:center;flex:none;padding:8px 12px;font-size:14px;line-height:20px;display:block}#errormessage:empty{display:none}.player-menu{z-index:10;padding:max(8px,env(safe-area-inset-top))max(8px,env(safe-area-inset-right))max(8px,env(safe-area-inset-bottom))max(8px,env(safe-area-inset-left));background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.player-menu[hidden]{display:none}.player-menu-panel{box-sizing:border-box;border:1px solid color-mix(in srgb,currentColor 24%,transparent);width:340px;max-width:100%;max-height:100%;color:var(--player-fg);background:var(--player-bg);border-radius:18px;gap:4px;padding:4px 12px 12px;display:grid;overflow-y:auto;box-shadow:0 16px 64px #00000059}.player-menu button,.player-menu a,.player-menu label{box-sizing:border-box;min-height:44px;color:inherit;touch-action:manipulation;cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:space-between;align-items:center;padding:8px 12px;font:14px/20px system-ui,sans-serif;display:flex}.player-menu-header,.player-menu-footer{grid-column:1/-1;align-items:center;gap:8px;display:flex}.player-menu-header{justify-content:flex-end;margin-right:-4px}.player-menu .player-menu-header button{flex:none;width:44px;height:44px;padding:0}.player-menu label{gap:12px;padding:0 8px}.player-menu-toggles{display:contents}.player-menu-footer{border-top:1px solid color-mix(in srgb,currentColor 16%,transparent)}.player-menu-footer button{flex:1}.player-menu button{justify-content:center}.player-menu button:disabled{opacity:.3;cursor:default}.player-menu select{border:1px solid color-mix(in srgb,currentColor 24%,transparent);max-width:160px;min-height:44px;color:inherit;background:var(--player-bg);border-radius:8px;padding:4px 8px;font:16px system-ui,sans-serif}.player-menu input{-webkit-appearance:none;appearance:none;box-sizing:border-box;width:36px;height:22px;color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:12px;flex:none;margin:0 0 0 8px;position:relative}.player-menu input:before{content:"";background:currentColor;border-radius:50%;width:14px;height:14px;position:absolute;top:3px;left:3px}.player-menu input:checked{background:var(--player-fg)}.player-menu input:checked:before{background:var(--player-bg);left:17px}.player-menu #backToTitleButton{justify-content:flex-start}.footer-links{flex:none;justify-content:center;align-items:center;min-width:0;max-width:100%;padding:8px 16px;font:16px/22px Courier New,Courier,monospace;display:flex}.footer-links #homepagelink{min-width:0;max-width:80%;color:inherit;font:inherit;padding:0;text-decoration:underline;display:block}.footer-links #homepagelink:after{content:none}#playerLinks{font:inherit;flex:none;align-items:center;display:inline-flex}#playerLinks[hidden],.footer-links:empty{display:none}#playerLinks :is(a,button){min-height:0;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:0;margin:0;padding:0;text-decoration:underline}#playerLinks .footer-separator{opacity:.5;flex:none;padding:0 6px}#playerLinks form{margin:0;display:inline-flex}.player-menu #playerLinks .footer-separator,.mobile-menu #playerLinks .footer-separator{display:none}.player-menu-footer #playerLinks{flex:1;justify-content:center;font:14px/20px system-ui,sans-serif}.player-menu-footer #playerLinks :is(a,button){align-items:center;min-height:44px;padding:0 8px;display:flex}@media (orientation:landscape) and (width>=560px) and (height<=400px){.player-menu-toggles{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.player-menu-toggles label{border:1px solid color-mix(in srgb,currentColor 24%,transparent);gap:8px;padding:0 4px}.player-menu-panel{grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 16px;width:560px;padding:4px 8px 8px}}.disable-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}@media (width<=400px){.player-toolbar h1{font-size:18px}}@media (orientation:landscape){.movement-surface-portrait{display:none}.movement-surface-landscape{display:block}.player-movement{grid-template:repeat(3,var(--control-size))/repeat(2,var(--control-size))}.player-movement .move-up{width:var(--control-size);grid-area:1/1/2/3;justify-self:center}.player-movement .move-left{grid-area:2/1}.player-movement .move-right{grid-area:2/2}.player-movement .move-down{width:var(--control-size);grid-area:3/1/4/3;justify-self:center}.player-shell.touch-enabled:not(.controls-overlay){grid-template-columns:calc(var(--movement-width) + var(--deck-inset) + 12px + env(safe-area-inset-left))minmax(0,1fr)calc(var(--actions-width) + var(--deck-inset) + 12px + env(safe-area-inset-right));grid-template-rows:auto minmax(0,1fr) auto;display:grid}.touch-enabled:not(.controls-overlay) .player-toolbar{grid-area:1/1/2/4}.touch-enabled:not(.controls-overlay) .gameContainer{grid-area:2/2;margin:0}.touch-enabled:not(.controls-overlay) .player-deck{display:contents}.touch-enabled:not(.controls-overlay) .player-movement{margin:0 0 calc(var(--control-lift) + env(safe-area-inset-bottom))calc(var(--deck-inset) + env(safe-area-inset-left));grid-area:2/1;place-self:end start}.touch-enabled:not(.controls-overlay) .player-actions{margin:0 calc(var(--deck-inset) + env(safe-area-inset-right))calc(var(--control-lift) + env(safe-area-inset-bottom))0;grid-area:2/3;place-self:end}.touch-enabled:not(.controls-overlay) #errormessage{grid-area:3/1/4/4}.player-shell.touch-enabled.controls-swapped:not(.controls-overlay){grid-template-columns:calc(var(--actions-width) + var(--deck-inset) + 12px + env(safe-area-inset-left))minmax(0,1fr)calc(var(--movement-width) + var(--deck-inset) + 12px + env(safe-area-inset-right))}.touch-enabled.controls-swapped:not(.controls-overlay) .player-movement{margin-left:0;margin-right:calc(var(--deck-inset) + env(safe-area-inset-right));grid-column:3;justify-self:end}.touch-enabled.controls-swapped:not(.controls-overlay) .player-actions{margin-right:0;margin-left:calc(var(--deck-inset) + env(safe-area-inset-left));grid-column:1;justify-self:start}}.touch-enabled.controls-overlay .player-deck{z-index:2;pointer-events:none;position:absolute;bottom:0;left:0;right:0}.controls-overlay .player-deck .player-button{pointer-events:auto}.controls-overlay .movement-surface{fill:color-mix(in srgb,var(--player-bg)72%,transparent);stroke-opacity:.28}.controls-overlay .player-actions .player-button{background:var(--player-bg);background:color-mix(in srgb,var(--player-bg)72%,transparent);border-color:color-mix(in srgb,currentColor 48%,transparent)}.controls-overlay .player-actions .player-button:is(:active,.is-held){background:var(--player-bg);background:color-mix(in srgb,var(--player-bg)90%,transparent)}@media (forced-colors:active){.player-deck .player-button,.player-menu-panel,.player-menu select{border:1px solid buttontext}.movement-surface{fill:canvas;stroke:buttontext;stroke-opacity:1}.player-menu input{-webkit-appearance:auto;appearance:auto}.player-menu input:before{display:none}}