@font-face{font-family:Pixel;src:url('assets/pixel.ttf') format('truetype');font-display:swap}
:root{color-scheme:dark;--black:#050508;--blue:#164bff;--yellow:#fff485;--cream:#f3f0d8;--muted:#aaaabd;--pixel:Pixel,'Courier New',monospace;--body:'Courier New',monospace}
*{box-sizing:border-box}body{margin:0;background:var(--black);color:var(--cream);font-family:var(--body);-webkit-tap-highlight-color:transparent}button,input{font:inherit;border-radius:0}button{cursor:pointer;color:inherit;touch-action:manipulation}button:disabled{cursor:default}button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--yellow);outline-offset:5px}::selection{background:var(--yellow);color:var(--black)}
.arcade-frame{width:min(100% - 32px,560px);min-height:calc(100svh - 32px);border:3px solid var(--blue);margin:16px auto;padding:0 18px;display:flex;flex-direction:column}.hud{display:flex;align-items:center;gap:9px;min-height:65px;border-bottom:3px solid var(--blue)}.brand{background:none;border:0;padding:14px 0;min-height:44px;font:10px/1.5 var(--pixel);white-space:nowrap}.hud-count{margin-left:auto;font:9px/1.6 var(--pixel);white-space:nowrap;color:var(--yellow)}.icon-button{border:0;background:none;position:relative;width:36px;height:44px;padding:8px;flex-shrink:0;font:26px var(--body)}.icon-button svg{width:20px;height:20px}.mute-slash{position:absolute;left:8px;top:6px;font-size:25px;color:#9999aa}.sound-on .mute-slash{display:none}.menu-icon{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px}.menu-icon span{width:14px;height:2px;background:var(--cream)}#screen{flex:1;display:flex;flex-direction:column}.footer{font:8px/1.8 var(--pixel);text-align:center;color:var(--muted);padding:24px 0 25px}.home{padding:28px 0 0;text-align:center}.home h1{font:clamp(51px,10vw,76px)/1.17 var(--pixel);letter-spacing:-3px;margin:0 0 18px;position:relative;display:inline-block}.title-pellet{display:inline-block;background:var(--yellow);width:14px;height:14px;margin-left:10px;vertical-align:baseline;animation:pelletPulse 3s infinite steps(2)}.tagline{font:16px/1.65 var(--body);margin:0 0 22px;color:var(--cream)}.board-heading{font:17px/1.7 var(--pixel);margin:25px 0 12px}.board-caption{font:13px/1.6 var(--body);color:var(--muted);margin:0 0 14px}.maze-board{position:relative;width:100%;aspect-ratio:420/526;isolation:isolate;margin:auto}.maze-board>.arcade-maze{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.board-ghost{position:absolute;left:calc(var(--x)*1%);top:calc(var(--y)*1%);transform:translate(-50%,-50%);width:46px;height:48px;padding:0;background:none;border:0;z-index:3}.board-ghost:focus-visible{outline-offset:1px}.ghost-sprite{display:block;width:100%;height:100%;image-rendering:pixelated}.board-ghost .ghost-sprite{width:64px;height:64px;position:absolute;left:-9px;top:-8px;animation:patrol 4.8s var(--delay,0s) infinite steps(6);pointer-events:none}.board-ghost:nth-of-type(3n) .ghost-sprite{animation-name:patrolY}.board-ghost.known:after{content:'';position:absolute;right:3px;bottom:3px;width:5px;height:5px;background:var(--ghost-color);border:1px solid var(--black)}.gift-button{position:absolute;left:50%;top:42.7756653992%;transform:translate(-50%,-50%);width:56px;min-height:60px;padding:4px;background:var(--black);border:0;z-index:4}.gift-button svg{display:block;width:42px;height:42px;margin:auto;image-rendering:pixelated}.gift-button:disabled{opacity:1}.gift-button[aria-disabled="false"]{animation:giftBob 3.8s infinite steps(4)}.gift-lock{font:8px var(--pixel);color:var(--muted);display:block;padding-top:3px}.board-toast{font:12px/1.6 var(--body);min-height:22px;margin:12px 0 9px;color:var(--yellow)}.guest-roster{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:2px;margin:20px -3px 12px}.roster-button{padding:0;border:0;background:none;position:relative;min-height:44px;min-width:0}.roster-button .ghost-sprite{width:100%;height:auto;max-width:46px;margin:auto;opacity:.45}.roster-button.known .ghost-sprite{opacity:1}.roster-button:after{content:attr(data-number);display:block;font:7px var(--body);color:#77778d;margin-top:-7px}.roster-button.known:after{color:var(--ghost-color)}.button{display:flex;align-items:center;justify-content:center;width:100%;min-height:56px;border:0;padding:17px 12px;font:13px/1.8 var(--pixel);gap:12px}.primary{background:var(--yellow);color:#050508;clip-path:polygon(4px 0,calc(100% - 4px) 0,calc(100% - 4px) 4px,100% 4px,100% calc(100% - 4px),calc(100% - 4px) calc(100% - 4px),calc(100% - 4px) 100%,4px 100%,4px calc(100% - 4px),0 calc(100% - 4px),0 4px,4px 4px)}.primary:hover{background:#fff8b0}.primary:active{translate:0 2px}.primary:disabled{opacity:.6}.secondary{border:2px solid var(--blue);background:transparent;color:var(--cream);font-size:10px}.helper{font:12px/1.7 var(--body);color:var(--muted);margin:15px 0}.round{padding:20px 0 0}.round-top{display:flex;justify-content:space-between;align-items:center;font:9px/1.6 var(--pixel);color:var(--muted);gap:10px}.round-top button{font:9px/1.5 var(--pixel);padding:12px 0;min-height:44px;color:var(--cream);background:none;border:0}.portrait{height:172px;display:flex;justify-content:center;align-items:center;position:relative;margin:10px 0 20px;overflow:hidden}.portrait-maze{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.portrait-actor{width:146px;height:146px;z-index:2;position:relative;animation:portraitFloat 4s infinite steps(7)}.portrait-actor .ghost-sprite{width:146px;height:146px}.reveal .portrait-actor{animation:successJump .65s ease-out,portraitFloat 4s .65s infinite steps(7)}.eyebrow{font:10px/1.7 var(--pixel);color:var(--blue);margin:0 0 15px}.message-heading{font:22px/1.6 var(--pixel);letter-spacing:-.8px;margin:0 0 23px}.message{font:17px/1.65 var(--body);white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 25px;color:var(--cream)}.answer-label{display:block;font:11px/1.7 var(--body);color:var(--muted);margin-bottom:9px}.answer-input{display:block;width:100%;min-height:55px;border:2px solid var(--blue);padding:14px 13px;background:transparent;color:var(--cream);font:17px var(--body)}.answer-input::placeholder{color:#9393a7}.answer-form .button{margin-top:16px}.feedback{font:13px/1.6 var(--body);color:var(--yellow);margin:13px 0 0;min-height:0}.feedback:empty{display:none}.hint-button{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:52px;padding:16px 0;background:none;border:0;font:11px/1.7 var(--pixel);gap:12px;margin-top:8px}.hint-button:disabled{opacity:.5}.hint-counter{font:11px var(--body);white-space:nowrap}.hint-boxes{display:flex;gap:5px;align-items:center}.hint-boxes i{display:block;width:15px;height:15px;border:2px solid var(--blue)}.hint-boxes i.open{background:var(--yellow);border-color:var(--yellow)}.hints{list-style:none;margin:0;padding:0}.hints li{margin:7px 0}.hints details{border:1px solid #164bff77}.hints summary{list-style:none;cursor:pointer;font:10px/1.6 var(--body);color:var(--yellow);padding:13px 12px;min-height:44px;display:flex;justify-content:space-between}.hints summary::-webkit-details-marker{display:none}.hints details p{font:14px/1.65 var(--body);white-space:pre-wrap;padding:0 12px 15px;margin:0}.goal-line{position:relative;display:flex;align-items:center;gap:10px;justify-content:center;padding:18px 0 0;margin-top:21px;border-top:3px solid var(--blue)}.goal-line span{font:10px/1.7 var(--body);color:var(--muted)}.goal-line svg{width:25px;height:25px;image-rendering:pixelated}.reveal-title{font:23px/1.6 var(--pixel);color:var(--ghost-color);margin:0 0 15px;letter-spacing:-.8px}.reveal .message{border-left:3px solid var(--ghost-color);padding-left:15px;font-size:16px}.revealed-note{font:14px/1.6 var(--body);margin:0 0 24px;color:var(--muted)}.reveal .button{margin-top:20px}.motion-transform .portrait-actor{animation:none}.motion-transform .portrait-actor .ghost-sprite{animation:turnPixels .8s steps(5)}.wrong .portrait-actor{animation:nope .45s ease-out}.wrong .answer-input{animation:nudge .3s ease-out;border-color:var(--yellow)}.finale{padding:34px 0 0;text-align:center;position:relative;overflow:hidden}.finale h1{font:26px/1.6 var(--pixel);margin:15px 0 20px;letter-spacing:-1px}.finale .eyebrow{color:var(--yellow);font-size:9px}.final-gift{position:relative;width:170px;height:160px;display:grid;place-items:center;margin:10px auto 20px}.final-gift svg{width:130px;height:130px;image-rendering:pixelated}.gift-open .gift-lid{animation:lidOpen .8s .2s both steps(6);transform-box:fill-box;transform-origin:center}.final-gift .gift-rays{opacity:0;animation:raysOn .7s .6s both}.finale .congratulations{font:21px/1.6 var(--pixel);margin:0 0 18px;color:var(--yellow)}.finale p{font:15px/1.75 var(--body);color:var(--muted);margin:0 auto 25px}.confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;height:390px}.confetti i{position:absolute;top:80px;left:50%;width:5px;height:5px;background:var(--confetti-color);animation:confettiFall 2.8s var(--delay) both ease-out}.menu-head{display:flex;justify-content:space-between;align-items:center;font:11px var(--pixel);color:var(--yellow)}dialog{width:calc(100% - 40px);max-width:410px;padding:23px;border:3px solid var(--blue);background:var(--black);color:var(--cream)}dialog::backdrop{background:#000e}dialog h2{font:18px/1.8 var(--pixel);margin:20px 0 12px}dialog p{font:14px/1.65 var(--body);color:var(--muted)}dialog .button{font-size:10px;margin-top:13px}.reset{display:block;margin:10px auto 0;border:0;padding:15px;background:none;font:12px var(--body);color:var(--muted)}.menu-note{font-size:11px!important;text-align:center;margin-bottom:0}.view-enter{animation:enter .22s ease-out}.route.done{stroke-dasharray:1;stroke-dashoffset:0}.route.celebrate{animation:routeLight 1.3s both ease-out}.arcade-maze .pellet{animation:pelletPulse 3s var(--delay,0s) infinite steps(2)}
@keyframes patrol{0%,100%{translate:-4px 0}50%{translate:4px 0}}@keyframes patrolY{0%,100%{translate:0 -3px}50%{translate:0 3px}}@keyframes portraitFloat{0%,100%{translate:0 0}50%{translate:0 -5px}}@keyframes pelletPulse{0%,70%,100%{opacity:1}85%{opacity:.45}}@keyframes giftBob{0%,82%,100%{translate:0 0}88%{translate:0 -3px}93%{translate:0 0}}@keyframes successJump{0%{translate:0 0;scale:.9}50%{translate:0 -15px;scale:1.08}100%{translate:0 0;scale:1}}@keyframes nope{0%,100%{rotate:0deg}25%{rotate:-10deg}75%{rotate:10deg}}@keyframes nudge{25%{translate:-3px 0}75%{translate:3px 0}}@keyframes turnPixels{0%{opacity:1}40%{opacity:.1;translate:5px -6px}60%{opacity:.4;translate:-4px 3px}100%{opacity:1;translate:0 0}}@keyframes routeLight{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes lidOpen{from{transform:translateY(0) rotate(0)}to{transform:translateY(-13px) rotate(-14deg)}}@keyframes raysOn{to{opacity:1}}@keyframes lateGuest{from{opacity:0;translate:20px 0}to{opacity:1;translate:0 0}}@keyframes confettiFall{0%{opacity:0;transform:translate(0,0)}10%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(500deg)}}@keyframes enter{from{opacity:0;translate:0 4px}to{opacity:1;translate:0 0}}
@media(max-width:440px){.arcade-frame{width:calc(100% - 20px);margin:10px auto;min-height:calc(100svh - 20px);padding:0 13px;border-width:3px}.hud{gap:6px;min-height:62px}.brand{font-size:8px}.hud-count{font-size:7px}.icon-button{width:30px;padding:6px}.icon-button svg{width:19px}.mute-slash{left:6px}.menu-icon span{width:12px}.home{padding-top:25px}.home h1{font-size:58px;letter-spacing:-2px}.tagline{font-size:14px;margin-bottom:20px}.title-pellet{width:11px;height:11px;margin-left:8px}.guest-roster{margin-top:15px}.button{font-size:12px;min-height:55px}.footer{font-size:7px;padding-top:22px}.board-heading{font-size:15px}.board-caption{font-size:12px}.board-ghost{width:44px;height:44px}.board-ghost .ghost-sprite{width:58px;height:58px;left:-7px;top:-7px}.gift-button{width:51px;min-height:55px}.gift-button svg{width:35px;height:35px}.round{padding-top:13px}.round-top{font-size:8px}.portrait{height:155px;margin:5px 0 19px}.message-heading{font-size:19px;letter-spacing:-.8px;margin-bottom:19px}.message{font-size:16px;line-height:1.65}.eyebrow{font-size:9px}.reveal-title{font-size:21px}.reveal .message{font-size:15px}.finale h1{font-size:22px}.finale .congratulations{font-size:19px}.finale p{font-size:14px}.roster-button:after{font-size:6px}}
@media(max-width:350px){.arcade-frame{padding:0 10px}.hud{gap:4px}.brand{font-size:7px}.hud-count{font-size:6px}.home h1{font-size:49px}.tagline{font-size:13px}.button{font-size:10px}.message-heading{font-size:17px}.message{font-size:15px}.hint-button{font-size:10px}.hint-boxes{gap:3px}.hint-boxes i{width:12px;height:12px}.roster-button:after{font-size:6px}.gift-lock{font-size:6px}.finale h1{font-size:20px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.gift-open .gift-lid{transform:translateY(-13px) rotate(-14deg)}.final-gift .gift-rays{opacity:1}.confetti{display:none}}
body.motion-off *,body.motion-off *:before,body.motion-off *:after{animation:none!important;transition:none!important}body.motion-off .confetti{display:none}body.motion-off .gift-open .gift-lid{transform:translateY(-13px) rotate(-14deg)}body.motion-off .final-gift .gift-rays{opacity:1}

.arcade-maze .maze-walls{stroke:var(--blue);stroke-width:3}.arcade-maze .maze-pellets{fill:var(--yellow)}
@media(max-height:800px) and (max-width:600px){body[data-view="home"] .home{padding-top:16px}body[data-view="home"] .home h1{font-size:48px;margin-bottom:13px}body[data-view="home"] .tagline{font-size:13px;margin-bottom:12px}body[data-view="home"] .guest-roster{margin-top:10px;margin-bottom:8px}body[data-view="home"] .board-toast{margin-top:8px;margin-bottom:8px}.footer{padding:14px 0 16px}}
@media(max-width:440px){.finale h1{font-size:18px;letter-spacing:-1px}}
@media(max-width:350px){.finale h1{font-size:16px}}
@media(max-width:350px){.gift-button{width:44px;min-height:44px;padding:0}.gift-button svg{width:32px;height:32px}}

.gift-finale{padding-top:28px;overflow:visible}.gift-finale>.eyebrow{margin-bottom:0;color:var(--yellow);font:9px/1.7 var(--pixel)}.gift-finale .confetti{height:250px}.yacht-scene{display:block;width:100%;height:auto;max-width:420px;margin:0 auto 21px;overflow:hidden;image-rendering:pixelated}.yacht-drift{animation:yachtSail 12s -6s ease-in-out infinite alternate}.yacht-boat{transform-origin:158px 132px;animation:yachtRock 3.6s -.8s steps(6) infinite}.yacht-waves-back{animation:yachtSea 4.5s linear infinite}.yacht-waves-front{animation:yachtSea 3s linear infinite}.yacht-wake{animation:yachtWake 2.4s steps(4) infinite}.gift-finale h1{font:clamp(16px,4.6vw,22px)/1.65 var(--pixel);letter-spacing:-.7px;margin:0 0 26px;color:var(--cream)}.gift-finale .gift-paragraph{font:16px/1.7 var(--body);color:var(--cream);text-align:left;margin:0 0 22px;overflow-wrap:anywhere}.gift-finale .gift-closing{font:15px/1.8 var(--pixel);color:var(--yellow);margin:26px 0}.gift-closing span{display:inline-block;font:24px var(--body);vertical-align:middle;margin-left:3px}.certificate-link{text-decoration:none;font-size:11px;line-height:1.9;min-height:58px}.certificate-format{display:block;margin:13px 0 32px;color:var(--muted);font:11px/1.5 var(--body)}.gift-finale #return-board{font-size:9px}
@keyframes yachtSail{from{transform:translateX(-10px)}to{transform:translateX(10px)}}@keyframes yachtRock{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-3px) rotate(1deg)}}@keyframes yachtSea{from{transform:translateX(0)}to{transform:translateX(-24px)}}@keyframes yachtWake{0%,100%{opacity:.85;transform:translateX(0)}50%{opacity:.35;transform:translateX(-5px)}}
@media(max-width:350px){.gift-finale{padding-top:22px}.gift-finale .gift-paragraph{font-size:15px}.gift-finale .gift-closing{font-size:13px}.certificate-link{font-size:10px}}

.revealed-hints{border-top:2px solid var(--blue);border-bottom:2px solid var(--blue);margin:23px 0 0}.revealed-hints>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:54px;padding:13px 2px;list-style:none;cursor:pointer;font:10px/1.8 var(--pixel);color:var(--yellow)}.revealed-hints>summary::-webkit-details-marker{display:none}.revealed-hints>summary>span:last-child{font:22px var(--body)}.revealed-hints[open]>summary>span:last-child{rotate:45deg}.revealed-hints .hints{padding-bottom:8px}.revealed-hints .hints li{border:1px solid #164bff77;padding:12px;margin:7px 0}.revealed-hint-number{font:10px/1.6 var(--body);color:var(--yellow);margin:0 0 8px}.revealed-hint-text{font:14px/1.65 var(--body);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;color:var(--cream)}

.crew-photo{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 12px;margin:24px 0 0;padding:0 0 25px;isolation:isolate}.crew-photo:after{content:'';position:absolute;left:12%;right:12%;bottom:0;height:2px;background:var(--blue);pointer-events:none}.photo-friend{display:flex;flex-direction:column;align-items:center;align-self:start;gap:5px;min-width:0;width:100%;border:0;padding:0 2px;background:transparent}.photo-avatar{display:block;width:min(100%,92px);aspect-ratio:92/72;overflow:hidden;pointer-events:none}.photo-avatar .ghost-sprite{display:block;width:100%;height:auto;aspect-ratio:1;transform:translateY(var(--photo-lift,0px)) rotate(var(--photo-tilt,0deg));pointer-events:none}.photo-name{display:block;position:static;width:100%;min-height:2.8em;font:10px/1.4 var(--body);text-align:center;color:var(--cream);overflow-wrap:anywhere;pointer-events:none}.photo-friend:focus-visible{outline-offset:3px}.photo-friend:hover .photo-name,.photo-friend:focus-visible .photo-name{color:var(--yellow)}
@media(max-width:360px){.crew-photo{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 12px}.photo-friend:last-child:nth-child(3n + 1){grid-column:2}}


.gift-finale .photo-caption{font:11px/1.6 var(--body);color:var(--muted);margin:22px 0 0}

button.portrait-actor{border:0;background:transparent;padding:0;flex-shrink:0;touch-action:manipulation}button.portrait-actor:disabled{cursor:default}
.yacht-control{display:block;position:relative;width:100%;max-width:420px;margin:0 auto;border:0;padding:0;background:transparent;overflow:hidden;touch-action:manipulation}.yacht-control>.yacht-scene{margin:0;pointer-events:none}.yacht-control:focus-visible{outline-offset:0}.yacht-control:disabled{cursor:default}.gift-finale .yacht-caption{font:11px/1.6 var(--body);color:var(--muted);min-height:18px;margin:4px 0 24px}.wind-gust{position:absolute;inset:13% 3% 34%;pointer-events:none;opacity:0}.wind-gust i{position:absolute;left:5%;top:var(--wind-y);width:var(--wind-width);height:2px;background:var(--cream);box-shadow:-9px 4px 0 -0.5px var(--yellow);opacity:0}.boosting .wind-gust{opacity:1}.boosting .wind-gust i{animation:windSweep .75s var(--wind-delay) 4 both linear}.boosting .yacht-drift{animation:yachtBoost 3s both ease-out}.boosting .yacht-waves-back{animation-duration:1s}.boosting .yacht-waves-front{animation-duration:.65s}.boosting .yacht-wake{animation-duration:.45s}.boosting .yacht-boat{animation-duration:1.2s}.boosting .yacht-pennant{transform-origin:158px 34px;animation:pennantFlutter .3s steps(2) infinite}
@keyframes windSweep{0%{opacity:0;transform:translateX(-35px)}18%{opacity:.75}78%{opacity:.45}100%{opacity:0;transform:translateX(145px)}}@keyframes yachtBoost{0%{transform:translateX(-4px)}20%{transform:translateX(18px)}70%{transform:translateX(26px)}100%{transform:translateX(8px)}}@keyframes pennantFlutter{from{transform:scaleY(1)}to{transform:scaleY(.65)}}
body.motion-off .wind-gust{display:none}@media(prefers-reduced-motion:reduce){.wind-gust{display:none}}
