*{box-sizing:border-box}body,#app{margin:0;padding:0}body{color:#f7f8fa;font-family:Space Grotesk,Share Tech,Saira,sans-serif;font-optical-sizing:auto;font-synthesis:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{text-align:center;overflow:hidden}#app canvas{transition:background-color .45s ease}button{border:1px solid rgb(255 255 255 / 24%);border-radius:.75rem;background:#171b24e5;box-shadow:0 .5rem 1.5rem #00000038;color:#f7f8fa;cursor:pointer;font-family:Space Grotesk,Share Tech,Saira,sans-serif;font-weight:600;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease}button:hover{transform:translateY(-2px);border-color:#ffffff7a;background:#252b38;box-shadow:0 .75rem 1.75rem #0000004d}button:active{transform:translateY(0) scale(.96)}button:focus-visible{outline:3px solid #a8d8ff;outline-offset:3px}.game-turn-status{position:fixed;z-index:2;bottom:max(1rem,env(safe-area-inset-bottom));left:max(1rem,env(safe-area-inset-left));margin:0;padding:.65rem .9rem;border:1px solid rgb(255 255 255 / 18%);border-radius:999px;background:#171b24e5;box-shadow:0 .5rem 1.5rem #00000038;color:#f7f8fa;font-size:.85rem;font-weight:600}@media (prefers-reduced-motion: reduce){button,#app canvas{transition:none}}.winner-modal{--winner-color: #fff;position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;padding:1.5rem;background:#080c14ad;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:winner-modal-fade-in .4s ease both}.winner-modal__dialog{box-sizing:border-box;width:min(100%,26rem);padding:2.5rem 2rem 2rem;border:1px solid color-mix(in srgb,var(--winner-color) 55%,transparent);border-radius:1.25rem;background:radial-gradient(ellipse at 50% 0,color-mix(in srgb,var(--winner-color) 22%,transparent),transparent 58%),#171b24;box-shadow:0 1.5rem 5rem #00000073,0 0 2.5rem color-mix(in srgb,var(--winner-color) 18%,transparent);color:#f7f8fa;font-family:Space Grotesk,Share Tech,Saira,sans-serif;text-align:center;animation:winner-modal-pop-in .42s cubic-bezier(.2,.8,.2,1) both,winner-modal-glow 4.8s ease-in-out .42s infinite}.winner-modal__badge{display:grid;width:4rem;height:4rem;margin:0 auto 1.25rem;place-items:center;border:1px solid color-mix(in srgb,var(--winner-color) 75%,transparent);border-radius:50%;background:color-mix(in srgb,var(--winner-color) 18%,#171b24);box-shadow:0 0 2rem color-mix(in srgb,var(--winner-color) 35%,transparent);color:var(--winner-color);font-size:2rem;font-weight:700;animation:winner-modal-badge-pulse 3.8s ease-in-out infinite}.winner-modal__title{margin:0;color:var(--winner-color);font-size:clamp(2rem,8vw,2.75rem);font-weight:700;letter-spacing:-.055em;line-height:1.1}.winner-modal__message{margin:.85rem 0 1.75rem;color:#c3c9d4;font-size:1rem;font-weight:400;line-height:1.5}.winner-modal__button{min-width:9rem;padding:.8rem 1.4rem;border:0;border-radius:999px;background:var(--winner-color);color:#11141a;cursor:pointer;font:inherit;font-weight:700;letter-spacing:-.02em;transition:transform .16s ease,filter .16s ease}.winner-modal__button:hover{filter:brightness(1.08);transform:translateY(-2px)}.winner-modal__button:focus-visible{outline:3px solid #fff;outline-offset:4px}.winner-modal--closing{animation:winner-modal-fade-out .18s ease-in both}.winner-modal--closing .winner-modal__dialog{animation:winner-modal-pop-out .18s ease-in both}@keyframes winner-modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes winner-modal-fade-out{0%{opacity:1}to{opacity:0}}@keyframes winner-modal-pop-in{0%{opacity:0;transform:translateY(1rem) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes winner-modal-pop-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(.5rem) scale(.98)}}@keyframes winner-modal-glow{0%,to{box-shadow:0 1.5rem 5rem #00000073,0 0 1.5rem color-mix(in srgb,var(--winner-color) 13%,transparent)}25%,75%{box-shadow:0 1.5rem 5rem #00000073,0 0 1.9rem color-mix(in srgb,var(--winner-color) 19%,transparent)}50%{box-shadow:0 1.5rem 5rem #00000073,0 0 2.5rem color-mix(in srgb,var(--winner-color) 28%,transparent)}}@keyframes winner-modal-badge-pulse{0%,to{box-shadow:0 0 1rem color-mix(in srgb,var(--winner-color) 18%,transparent);transform:scale(1)}25%,75%{box-shadow:0 0 1.2rem color-mix(in srgb,var(--winner-color) 22%,transparent);transform:scale(1.01)}50%{box-shadow:0 0 1.8rem color-mix(in srgb,var(--winner-color) 34%,transparent);transform:scale(1.03)}}@media (prefers-reduced-motion: reduce){.winner-modal,.winner-modal__dialog,.winner-modal__badge,.winner-modal--closing,.winner-modal--closing .winner-modal__dialog{animation-duration:1ms}.winner-modal__button{transition:none}}button#rotateUp,button#rotateDown,button#rotateLeft,button#rotateRight,button#rotateClockwise,button#rotateCounterClockwise{z-index:4;transition:opacity .16s ease}button.tutorial-controls-muted{opacity:0;pointer-events:none}@media (prefers-reduced-motion: reduce){button#rotateUp,button#rotateDown,button#rotateLeft,button#rotateRight,button#rotateClockwise,button#rotateCounterClockwise{transition-duration:1ms}}button#rotateUp{position:fixed;bottom:12rem;right:6rem;width:3.5rem;height:3.5rem;font-size:1.15rem}button#rotateDown{position:fixed;bottom:6rem;right:6rem;width:3.5rem;height:3.5rem;font-size:1.15rem}button#rotateLeft{position:fixed;bottom:9rem;right:9rem;width:3.5rem;height:3.5rem;font-size:1.15rem}button#rotateRight{position:fixed;bottom:9rem;right:3rem;width:3.5rem;height:3.5rem;font-size:1.15rem}button#rotateClockwise{position:fixed;bottom:12rem;right:3rem;width:3.5rem;height:3.5rem;font-family:Share Tech,Space Grotesk,Saira,sans-serif;font-size:.8rem;letter-spacing:.04em}button#rotateCounterClockwise{position:fixed;bottom:12rem;right:9rem;width:3.5rem;height:3.5rem;font-family:Share Tech,Space Grotesk,Saira,sans-serif;font-size:.8rem;letter-spacing:.04em}.site-nav{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;pointer-events:none}.site-nav__home,.site-nav__toggle,.site-nav__item,.site-nav__about-close{border:1px solid rgb(255 255 255 / 24%);background:#171b2494;box-shadow:0 .5rem 1.5rem #00000038;color:#f7f8fa;pointer-events:auto}.site-nav__home,.site-nav__toggle{position:fixed;top:max(1rem,env(safe-area-inset-top));display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-width:3rem;height:3rem;padding:0 .85rem;border-radius:.75rem;text-decoration:none;transition:background-color .16s ease,border-color .16s ease,opacity .16s ease,transform .16s ease}.site-nav__home{left:max(1rem,env(safe-area-inset-left));opacity:.68}.site-nav__home:hover,.site-nav__home:focus-visible,.site-nav__home:active,.site-nav__toggle:hover,.site-nav__toggle:focus-visible,.site-nav__toggle:active{border-color:#ffffff8a;background:#171b24f5;opacity:1}.site-nav__home:hover,.site-nav__toggle:hover{transform:translateY(-2px)}.site-nav__home svg,.site-nav__toggle svg,.site-nav__item svg,.site-nav__about-close svg{width:1.25rem;height:1.25rem;flex:0 0 auto;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.site-nav__home svg{width:1.4rem;height:1.4rem}.site-nav__toggle{display:none;right:max(1rem,env(safe-area-inset-right));width:3rem;padding:0;cursor:pointer}.site-nav__language{gap:.3rem;font-size:.7rem;font-weight:700;line-height:1}.site-nav__language svg{width:1.2rem;height:1.2rem;flex:0 0 auto;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}.site-nav__language[hidden]{display:none!important}.site-nav__menu{position:fixed;top:calc(max(1rem,env(safe-area-inset-top)) + 3.75rem);right:max(1rem,env(safe-area-inset-right));display:grid;width:min(18rem,calc(100vw - 2rem));gap:.5rem;padding:.65rem;border:1px solid rgb(255 255 255 / 20%);border-radius:1rem;background:#171b24f0;box-shadow:0 1rem 3rem #00000061;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:auto}.site-nav__menu[hidden],.site-nav__about[hidden]{display:none}.site-nav__item{display:flex;width:100%;min-height:2.9rem;align-items:center;gap:.75rem;padding:.65rem .8rem;border-radius:.7rem;background:transparent;box-shadow:none;color:#f7f8fa;cursor:pointer;font:inherit;text-align:left;text-decoration:none;transition:background-color .16s ease}.site-nav__item:hover,.site-nav__item:focus-visible{border-color:#ffffff3d;background:#ffffff1f;transform:none}.site-nav__language svg{width:1.25rem;height:1.25rem}.site-nav__language-code{font-size:.75rem;font-weight:700;letter-spacing:.04em}.site-nav__about{position:fixed;z-index:1;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1.25rem;background:#080c14b8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:auto}.site-nav__about-dialog{position:relative;width:min(100%,25rem);padding:2rem;border:1px solid rgb(255 255 255 / 20%);border-radius:1.25rem;background:#171b24;box-shadow:0 1.5rem 5rem #00000073;text-align:left}.site-nav__about-dialog h2{margin:0 2rem 1.5rem 0;font-size:1.5rem}.site-nav__about-dialog p{overflow-wrap:anywhere;margin:.75rem 0}.site-nav__about-dialog a{color:#a8d8ff}.site-nav__contact-name{font-weight:700}.site-nav__about-close{position:absolute;top:1rem;right:1rem;display:grid;width:2.5rem;height:2.5rem;padding:0;place-items:center;border-radius:.7rem;cursor:pointer}.site-nav__home:focus-visible,.site-nav__toggle:focus-visible,.site-nav__item:focus-visible,.site-nav__about-close:focus-visible{outline:3px solid #a8d8ff;outline-offset:3px}body.tutorial-active .site-nav__tutorial{display:none}@media (orientation: portrait){.site-nav__home{display:none}.site-nav__toggle{display:inline-flex;opacity:.68}}@media (orientation: landscape){.site-nav__home span,.site-nav__menu>.site-nav__item>span{display:none}.site-nav__menu[hidden]{position:fixed;top:calc(max(1rem,env(safe-area-inset-top)) + 3.75rem);right:auto;left:max(1rem,env(safe-area-inset-left));display:grid!important;width:auto;gap:.5rem;padding:0;border:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.site-nav__menu>.site-nav__item:first-child{display:none}.site-nav__menu>.site-nav__item{position:relative;display:inline-flex;width:3rem;min-width:3rem;height:3rem;align-items:center;justify-content:center;padding:0;border:1px solid rgb(255 255 255 / 24%);border-radius:.75rem;background:#171b2494;box-shadow:0 .5rem 1.5rem #00000038;opacity:.68;transition:background-color .16s ease,border-color .16s ease,opacity .16s ease,transform .16s ease}.site-nav__menu>.site-nav__item:hover,.site-nav__menu>.site-nav__item:focus-visible,.site-nav__menu>.site-nav__item:active{border-color:#ffffff8a;background:#171b24f5;opacity:1}.site-nav__menu>.site-nav__item:hover{transform:translateY(-2px)}.site-nav__home:after,.site-nav__menu>.site-nav__item:after{position:absolute;top:50%;left:calc(100% + .65rem);z-index:1;width:max-content;max-width:min(18rem,70vw);padding:.4rem .65rem;border:1px solid rgb(255 255 255 / 18%);border-radius:.5rem;background:#171b24f5;box-shadow:0 .5rem 1.5rem #0000004d;color:#f7f8fa;content:attr(data-tooltip);font-size:.8rem;font-weight:500;line-height:1.2;opacity:0;pointer-events:none;transform:translate(-.25rem,-50%);transition:opacity .12s ease,transform .12s ease}.site-nav__home:hover:after,.site-nav__home:focus-visible:after,.site-nav__menu>.site-nav__item:hover:after,.site-nav__menu>.site-nav__item:focus-visible:after{opacity:1;transform:translateY(-50%)}.site-nav__home{padding:0}}@media (prefers-reduced-motion: reduce){.site-nav__home,.site-nav__toggle,.site-nav__language{transition:none}}.start-menu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;padding:1.5rem;background:#080c14b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:winner-modal-fade-in .4s ease both}.start-menu__dialog{--menu-color: #ef5350;box-sizing:border-box;width:min(100%,26rem);padding:3rem 2rem;border:1px solid var(--menu-color);border-radius:1.25rem;background:radial-gradient(ellipse at 50% 0,color-mix(in srgb,var(--menu-color) 22%,transparent),transparent 58%),#171b24;box-shadow:0 1.5rem 5rem #00000073,0 0 2.5rem color-mix(in srgb,var(--menu-color) 18%,transparent);color:#f7f8fa;font-family:Space Grotesk,Share Tech,Saira,sans-serif;text-align:center;animation:winner-modal-pop-in .42s cubic-bezier(.2,.8,.2,1) both,start-menu-color-cycle 9s ease-in-out .42s infinite,winner-modal-glow 4.8s ease-in-out .42s infinite}.start-menu__title{margin:0 0 2rem;color:var(--menu-color);font-size:clamp(2rem,9vw,3rem);font-weight:500;line-height:1}.start-menu__brand{margin:0 0 1.5rem;color:var(--menu-color);font-size:clamp(2.5rem,12vw,4rem);font-weight:700;letter-spacing:-.075em;line-height:1}.start-menu__options{display:grid;gap:.75rem}.start-menu__tutorial-actions{opacity:1}.start-menu__tutorial-actions--fading-out{pointer-events:none;animation:tutorial-actions-fade-out .22s ease both}.start-menu__tutorial-actions--pending{opacity:0;pointer-events:none}.start-menu__tutorial-actions--ready{animation:tutorial-actions-fade-in .22s ease both}@keyframes tutorial-actions-fade-out{0%{opacity:1}to{opacity:0}}@keyframes tutorial-actions-fade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.start-menu__tutorial-actions--fading-out,.start-menu__tutorial-actions--ready{animation-duration:1ms}}.start-menu__button{min-width:12rem;padding:.8rem 1.4rem;border:0;border-radius:999px;background:var(--menu-color);color:#11141a;cursor:pointer;font:inherit;font-weight:700;letter-spacing:-.02em;transition:transform .16s ease,filter .16s ease}.start-menu__description{display:block;margin-top:.25rem;font-size:.75rem;font-weight:400;line-height:1.35}.start-menu__button--secondary{border:1px solid rgb(255 255 255 / 28%);background:transparent;color:#f7f8fa}.start-menu__button--compact{justify-self:center;min-width:9rem;padding:.55rem 1rem;font-size:.85rem}.start-menu__tutorial-copy{margin:0 0 1rem;color:#d5d8de;font-size:1rem;line-height:1.55}.start-menu--tutorial{background:#080c143d;-webkit-backdrop-filter:none;backdrop-filter:none}.start-menu--tutorial .start-menu__dialog{width:min(100%,32rem);--menu-color: var(--tutorial-step-color, #ef5350);animation:winner-modal-pop-in .42s cubic-bezier(.2,.8,.2,1) both,winner-modal-glow 4.8s ease-in-out .42s infinite}@media (orientation: landscape){.start-menu--tutorial{justify-items:start;padding-left:max(1rem,env(safe-area-inset-left),4vw)}.start-menu--tutorial .start-menu__dialog{width:min(32rem,42vw);padding:2rem 1.5rem}}@media (orientation: portrait){.start-menu--tutorial{align-items:start;padding-top:max(1rem,env(safe-area-inset-top))}.start-menu--tutorial .start-menu__dialog{width:min(100%,32rem);padding:1.5rem 1.25rem}.start-menu--tutorial .start-menu__title{margin-bottom:1rem}}.start-menu__button:hover{filter:brightness(1.08);transform:translateY(-2px)}.start-menu--tutorial .start-menu__button{transition:background-color .16s ease}.start-menu--tutorial .start-menu__button:hover{background-color:#fff;filter:none;transform:none}.start-menu__button:focus-visible{outline:3px solid #fff;outline-offset:4px}.start-menu--closing{animation:winner-modal-fade-out .18s ease-in both}.start-menu--closing .start-menu__dialog{animation:winner-modal-pop-out .18s ease-in both}@keyframes start-menu-color-cycle{0%,to{--menu-color: #ef5350}33%{--menu-color: #66bb6a}66%{--menu-color: #42a5f5}}@media (prefers-reduced-motion: reduce){.start-menu,.start-menu--closing{animation-duration:1ms}.start-menu__dialog,.start-menu__brand{animation:none}.start-menu--closing .start-menu__dialog{animation-duration:1ms}.start-menu__dialog{--menu-color: #d5d8de}.start-menu__button{transition:none}}
