@import url('https://fonts.googleapis.com/css2?family=Baloo+2:wght@600;700;800&family=Nunito:wght@500;600;700;800;900&display=swap');
:root{color-scheme:dark;--ink:#25143c;--paper:#faf7ff;--muted:#c5b6d9;--lime:#d1ff78;--purple:#ac85ff;--pink:#ff92c4;--line:#ffffff23;font-family:'Nunito',system-ui,sans-serif;font-weight:700;color:var(--paper);background:var(--ink)}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 26%,#402451 0,transparent 60%),var(--ink);min-height:100svh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible,input:focus-visible+.character{outline:3px solid var(--lime);outline-offset:5px}button:disabled{opacity:.5;cursor:wait}.hidden{display:none!important}.topbar{max-width:1350px;margin:auto;padding:23px 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font-family:'Baloo 2',sans-serif;font-size:39px;line-height:1;color:#fff;text-decoration:none;letter-spacing:-5px;font-weight:800;display:flex;align-items:center}.brand span{color:var(--lime)}.brand i{color:var(--pink);font-size:19px;margin-left:10px;letter-spacing:0;font-style:normal}.top-note{font-size:12px;letter-spacing:2px;color:var(--muted)}.small-button{border:1px solid #ffffff30;border-radius:100px;background:#ffffff09;color:#faf7ff;padding:10px 17px;font-size:14px;white-space:nowrap}.small-button:hover{background:#ffffff18}.selection{max-width:1220px;margin:auto;padding:28px 35px 20px;text-align:center}.eyebrow{font-size:12px;letter-spacing:2px;font-weight:900;color:var(--lime)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:'Baloo 2','Trebuchet MS',sans-serif}h1{font-size:clamp(52px,6.3vw,85px);line-height:1.08;letter-spacing:-2.5px;font-weight:800;margin:9px 0}.intro h1>span{color:var(--lime);position:relative;display:inline-block;transform:rotate(-3deg)}.title-spark{position:absolute;font-size:44px;color:var(--pink);top:-12px;right:-44px;transform:rotate(10deg)}.intro>p{font-size:18px;color:#dfd3ea;margin-top:9px}.rules{display:flex;justify-content:center;gap:28px;color:#cbbbd9;font-size:14px;margin:22px 0 29px}.character-picker{border:0;padding:0;margin:0;min-width:0}.character-picker legend{margin:auto auto 18px;font-size:18px}.characters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;text-align:left}.character-label{display:block;position:relative;min-width:0}.character-label input{position:absolute;opacity:0;width:1px;height:1px}.character{border-radius:19px;background:var(--character-color);color:var(--ink);border:3px solid transparent;box-shadow:0 5px 0 #130b2466;position:relative;cursor:pointer;transition:transform .18s,box-shadow .18s;padding:9px 9px 15px;overflow:hidden;height:100%}.character-label:hover .character{transform:translateY(-6px) rotate(-1deg)}.character-label input:checked+.character{border-color:var(--lime);box-shadow:0 0 0 3px var(--ink),0 0 0 5px var(--lime),0 10px 25px #10051a55;transform:translateY(-5px)}.character .portrait{width:100%;aspect-ratio:1;background-color:#fff;border-radius:12px;mix-blend-mode:multiply}.portrait{background-image:url('/assets/characters.png');background-size:300% 200%;background-repeat:no-repeat;background-color:#fff;aspect-ratio:1}.portrait-0{background-position:0% 0%}.portrait-1{background-position:50% 0%}.portrait-2{background-position:100% 0%}.portrait-3{background-position:0% 100%}.portrait-4{background-position:50% 100%}.portrait-5{background-position:100% 100%}.character h2{font-size:27px;line-height:1.2;margin:10px 6px 1px}.character .role{font-size:12px;letter-spacing:1.3px;font-weight:900;margin:0 6px 7px;opacity:.75}.character .quote{font-size:14px;line-height:1.35;margin:0 6px;min-height:38px}.checkmark{position:absolute;top:14px;right:14px;display:grid;place-items:center;height:25px;width:25px;border-radius:50%;border:2px solid #25143c55;font-size:0;background:#ffffff66;z-index:1}.character-label input:checked+.character .checkmark{background:var(--ink);color:var(--lime);font-size:15px;border-color:var(--ink)}.launch{margin:28px 0 22px}.primary-button{background:var(--lime);border:0;border-bottom:5px solid #9bbd50;border-radius:15px;padding:15px 31px;color:var(--ink);font-size:20px;font-weight:900;box-shadow:0 5px 20px #0e021c22;transition:transform .15s}.primary-button:hover{transform:translateY(-3px);background:#ddff9b}.primary-button:active{transform:translateY(2px)}.primary-button span{margin-left:25px}.launch p{margin-top:13px;color:var(--muted);font-size:14px}.selection-footer{display:flex;gap:28px;justify-content:center;color:#b6a5ca;font-size:12px;line-height:1.5}.game{max-width:1190px;padding:20px 32px 28px;margin:auto}.game-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.round-label{font-family:'Baloo 2',sans-serif;color:var(--lime);font-size:24px;font-weight:800}.round-label span{display:block;font:800 10px 'Nunito',sans-serif;letter-spacing:1.8px;color:var(--muted);text-align:center}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:24px}.scoreboard{display:flex;justify-content:space-between;align-items:center;margin:0 2px 13px}.stat-label{display:block;font-size:10px;letter-spacing:1.7px;color:var(--muted)}.scoreboard strong{font:800 35px 'Baloo 2',sans-serif;line-height:1.2;display:block;font-variant-numeric:tabular-nums}.chase-status{text-align:center;display:flex;flex-direction:column;gap:6px}.status-badge{font-size:11px;letter-spacing:1px;color:var(--lime);background:#d1ff7814;border:1px solid #d1ff7830;border-radius:100px;padding:6px 13px}.status-badge.chasing{color:#ffabc5;background:#ff759923;border-color:#ff759955}.chase-status>span:last-child{font-size:12px;color:var(--muted)}.boop-stat{text-align:right}.time-track{height:7px;background:#ffffff15;border-radius:20px;margin:0 0 19px;position:relative}.time-track>span{display:block;width:0;height:100%;border-radius:20px;background:var(--lime);transition:width .1s linear}.half-marker{position:absolute;top:-3px;left:50%;height:13px;width:2px;background:#f9efff;font-size:10px;font-weight:700;padding-top:15px;color:var(--muted)}.maze-wrap{position:relative;border:7px solid #8563b1;border-radius:18px;background:#f3edff;overflow:hidden;box-shadow:0 8px 0 #120b2477}canvas{display:block;width:100%;height:auto;touch-action:none;outline:none}.below-maze{display:flex;justify-content:space-between;gap:12px;margin-top:17px;color:var(--muted);font-size:12px}.below-maze>span:first-child{display:flex;align-items:center;gap:6px;white-space:nowrap}.you-dot,.cat-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--lime)}.cat-dot{background:#ff729b;margin-left:8px}.game-aside{padding-top:0;display:flex;flex-direction:column;gap:16px}.player-panel{padding:15px;text-align:center;border:1px solid #ffffff20;background:#ffffff06;border-radius:18px}.player-panel .portrait{width:89px;margin:0 auto 10px;border-radius:50%;border:3px solid var(--purple)}.player-panel>span{font-size:10px;letter-spacing:1.6px;color:var(--muted)}.player-panel h2{font-size:28px;line-height:1.2}.player-panel p{font-size:13px;color:#d4c3e4;line-height:1.4;margin-top:5px}.joke-panel{background:#f9da88;color:var(--ink);border-radius:18px;padding:20px 17px;text-align:center;min-height:226px;transform:rotate(1deg);box-shadow:0 5px 0 #120b2466}.joke-panel .eyebrow{color:#59432e;font-size:10px;letter-spacing:1.4px}.joke-emoji{font-size:42px;margin:6px 0}.joke-panel h3{font-size:22px;line-height:1.12;margin:5px 0 8px}.joke-panel p{font-size:14px;line-height:1.4}.joke-panel.pop{animation:pop .4s ease}.desktop-help{text-align:center;color:var(--muted)}kbd{display:inline-grid;place-items:center;border:1px solid #ffffff25;min-width:27px;height:27px;border-radius:6px;font:16px 'Nunito';margin:2px;background:#ffffff09}.desktop-help p{font-size:12px;margin-top:6px;line-height:1.5}.desktop-help p span{opacity:.65}.reveal,.pause-overlay{position:absolute;inset:0;z-index:3;background:#25143cf5;display:flex;align-items:center;justify-content:center;text-align:center;flex-direction:column;padding:20px}.reveal .cat-portrait{width:clamp(85px,17vw,150px);border:5px solid #ff7599;border-radius:50%;margin:13px 0 5px;animation:cat-entry .55s cubic-bezier(.2,1.6,.5,1)}.reveal h2{font-size:clamp(28px,4.6vw,54px);line-height:.95;color:#ff91b6;transform:rotate(-3deg)}.reveal p{font-size:14px;color:#dfd3ea;margin:15px 0 10px;max-width:310px}.reveal>strong{font-size:13px;letter-spacing:2px;color:var(--lime)}.pause-overlay h2{font-size:38px;line-height:1.1}.pause-overlay p{margin:10px 0 24px;color:var(--muted)}.boop-flash{position:absolute;z-index:2;top:45%;width:100%;text-align:center;font:800 65px 'Baloo 2';color:#e94b83;text-shadow:3px 3px #fff,-3px -3px #fff;pointer-events:none;animation:pop .5s ease}.touch-controls{display:none;grid-template-columns:repeat(3,54px);grid-template-rows:repeat(2,48px);gap:6px;justify-content:center;margin:18px auto 0;touch-action:none}.touch-controls button{border:1px solid #ffffff25;border-bottom:4px solid #0f051f;color:var(--ink);background:#c2a5ed;border-radius:12px;font-size:28px;user-select:none;touch-action:none}.touch-controls button:active{background:var(--lime)}.touch-controls button:nth-child(1){grid-column:2}.touch-controls button:nth-child(2){grid-column:1;grid-row:2}.touch-controls button:nth-child(3){grid-column:2;grid-row:2}.touch-controls button:nth-child(4){grid-column:3;grid-row:2}.results{max-width:950px;margin:auto;text-align:center;padding:45px 25px}.results>.portrait{width:145px;border-radius:50%;border:6px solid var(--lime);margin:25px auto}.results h1{font-size:clamp(48px,6vw,74px)}.results h1 span{color:var(--lime)}.results>p:not(.selection-footer){font-size:18px;line-height:1.5;color:#dfd3ea;max-width:520px;margin:10px auto 25px}.result-stats{display:flex;justify-content:center;gap:45px;margin:32px 0}.result-stats>div{display:flex;flex-direction:column}.result-stats strong{font:800 54px 'Baloo 2';line-height:1.1;color:#d2b5ff}.result-stats strong>span{font-size:27px}.result-stats div>span{font-size:11px;letter-spacing:1px;color:var(--muted)}.text-button{display:block;color:#d9c9e8;border:0;border-bottom:1px solid #d9c9e850;background:none;padding:6px;margin:20px auto 30px;font-size:15px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.confetti{position:fixed;pointer-events:none;z-index:10;width:9px;height:16px;top:-30px;animation:fall 2.8s ease-in forwards}@keyframes fall{to{transform:translateY(110vh) rotate(650deg)}}@keyframes pop{0%{transform:scale(.8) rotate(-4deg)}60%{transform:scale(1.04) rotate(2deg)}100%{transform:scale(1) rotate(1deg)}}@keyframes cat-entry{from{transform:translateY(70px) scale(.2) rotate(-30deg)}to{transform:translateY(0) scale(1) rotate(0)}}
@media(hover:none),(pointer:coarse){.touch-controls{display:grid}.desktop-help{display:none}}
@media(min-width:1400px){.selection{padding-top:45px}.characters{gap:20px}.launch{margin-top:33px}}
@media(max-width:900px){.selection{padding:25px}.characters{gap:10px}.character{padding:6px 6px 13px}.character h2{font-size:24px}.character .quote{font-size:12px}.character .role{font-size:10px}.game{padding:18px}.game-layout{grid-template-columns:minmax(0,1fr) 175px;gap:15px}.joke-panel{padding:15px 12px}.joke-panel h3{font-size:20px}.topbar{padding:18px 25px}.top-note{font-size:10px}.rules{gap:16px;font-size:12px}}
@media(max-width:650px){.topbar{padding:14px 18px}.brand{font-size:33px}.top-note{display:none}.small-button{padding:8px 12px;font-size:12px}.selection{padding:25px 18px 24px}.intro h1{font-size:54px;letter-spacing:-2px}.title-spark{font-size:27px;right:-23px;top:-4px}.eyebrow{font-size:10px;letter-spacing:1.4px}.intro>p{font-size:16px}.rules{flex-wrap:wrap;gap:6px 15px;margin:18px 0 23px;font-size:12px}.character-picker legend{font-size:17px;margin-bottom:14px}.characters{grid-template-columns:repeat(6,minmax(0,1fr));gap:13px}.character-label{grid-column:span 2}.character-label:nth-child(4){grid-column:2 / span 2}.character-label:nth-child(5){grid-column:4 / span 2}.character{border-radius:13px;padding:5px 5px 11px}.character h2{font-size:22px;margin:7px 3px 0}.character .role{font-size:9px;letter-spacing:.65px;margin:0 3px 3px}.character .quote{font-size:12px;margin:0 3px;line-height:1.3;min-height:45px}.checkmark{width:19px;height:19px;top:8px;right:8px}.launch{margin-top:23px}.primary-button{font-size:18px;padding:13px 23px}.selection-footer{flex-wrap:wrap;gap:6px 17px;font-size:11px}.game{padding:14px 12px 22px}.game-heading{gap:6px;margin-bottom:18px}.round-label{font-size:19px}.round-label span{font-size:7px;letter-spacing:1px}.game-layout{display:flex;flex-direction:column;gap:15px}.scoreboard strong{font-size:29px}.stat-label{font-size:9px;letter-spacing:1px}.status-badge{font-size:9px;padding:5px 9px}.chase-status>span:last-child{font-size:10px}.maze-wrap{border-width:4px;border-radius:12px}.below-maze{font-size:10px;gap:7px;margin-top:12px}.game-aside{display:block}.player-panel,.desktop-help{display:none}.joke-panel{min-height:78px;padding:12px 15px;display:grid;grid-template-columns:44px 1fr;text-align:left;column-gap:12px;transform:none}.joke-panel>.eyebrow{display:none}.joke-emoji{font-size:31px;grid-row:1 / span 2;margin:auto}.joke-panel h3{font-size:19px;margin:0 0 2px}.joke-panel p{font-size:12px;line-height:1.3}.touch-controls{display:grid;margin-top:14px;grid-template-columns:repeat(3,59px);grid-template-rows:repeat(2,44px)}.reveal{padding:10px}.reveal .cat-portrait{width:70px;margin:7px 0}.reveal h2{font-size:28px}.reveal p{font-size:11px;margin:8px 0;max-width:260px}.reveal>strong{font-size:10px}.pause-overlay h2{font-size:27px}.pause-overlay p{font-size:13px}.results{padding-top:30px}.results>.portrait{width:115px;margin:20px auto}.result-stats{gap:22px}.result-stats strong{font-size:42px}.result-stats div>span{font-size:9px;max-width:90px}.results>p:not(.selection-footer){font-size:16px}.boop-flash{font-size:45px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti{display:none}}

/* The original character selection remains intact; the play surface now hosts a 3D world. */
.title-spark{font-size:22px;letter-spacing:0;right:-49px;top:1px;background:#ff92c4;color:#25143c;border-radius:9px;padding:3px 8px;transform:rotate(10deg);line-height:1.2}
.game{max-width:1420px}.game-layout{grid-template-columns:minmax(0,1fr) 220px}.maze-wrap{background:#211738;border-color:#8060af}
#maze{width:100%;height:clamp(390px,57vh,650px);aspect-ratio:auto;display:block}
.maze-wrap.chase-active{border-color:#ad3e69;transition:border-color 1s}
.maze-wrap::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;box-shadow:inset 0 0 70px 6px #08091460;transition:box-shadow .7s}
.maze-wrap.chase-active::after{box-shadow:inset 0 0 85px 14px #750b344d}
.maze-wrap.cat-close::after{box-shadow:inset 0 0 95px 27px #b214486f}
.map-window{position:absolute;left:12px;top:12px;border:1px solid #d2b6ff66;border-radius:8px;overflow:hidden;z-index:2;background:#211738d9;pointer-events:none}
.map-window>span{display:block;font-size:10px;letter-spacing:1px;padding:4px 7px;color:#dcff9c;text-align:center}
#minimap{width:120px;height:88px;opacity:.9}
.rear-label{position:absolute;right:12px;top:12px;width:29%;height:21px;z-index:2;text-align:center;font-size:10px;letter-spacing:1.6px;font-weight:900;background:#8b2448;color:#fff;padding:3px;pointer-events:none;border-radius:6px 6px 0 0}
.rear-label::after{content:'';position:absolute;top:20px;left:0;width:100%;aspect-ratio:1/.57;border:1px solid #ed799e;border-radius:0 0 6px 6px}
.forward-tip{position:absolute;bottom:13px;left:50%;transform:translateX(-50%);z-index:2;color:#fff;background:#241339d6;border:1px solid #c7a9e133;padding:8px 14px;border-radius:100px;font-size:13px;text-align:center;max-width:95%;width:max-content;pointer-events:none}
.below-maze{align-items:center}.below-maze .small-button{font-size:12px;touch-action:none;user-select:none}
.reveal{background:linear-gradient(transparent 22%,#16061918 40%,#160619ed 100%);justify-content:flex-end;padding-bottom:30px;pointer-events:none}
.reveal>.eyebrow{position:absolute;top:24px;background:#170a18b8;padding:8px 14px;border-radius:7px;color:#ffd9df;font-size:11px}
.reveal h2{color:#ff385e;font-size:clamp(36px,5vw,68px);text-shadow:0 3px 0 #42122b,0 0 30px #ec154870;letter-spacing:-1px;transform:rotate(-2deg);line-height:.9}
.reveal p{font-size:17px;color:#fff;margin:12px 0 7px}.reveal>strong{color:#ffc5cc;font-size:13px;letter-spacing:3px}
.pause-overlay{z-index:5}.pause-overlay p{max-width:380px}
@media(max-width:900px){.game-layout{grid-template-columns:minmax(0,1fr) 175px}.game{padding:18px}#maze{height:460px}.map-window>span{font-size:9px}#minimap{width:95px;height:70px}.forward-tip{font-size:11px}}
@media(max-width:650px){.game-layout{display:flex}.game{padding:14px 12px 22px}.title-spark{right:-34px;top:-4px;font-size:15px;padding:4px 6px}#maze{height:clamp(320px,44svh,420px)}#minimap{width:78px;height:57px}.map-window{top:9px;left:9px}.map-window>span{font-size:8px;padding:3px}.rear-label{font-size:8px;letter-spacing:.7px}.forward-tip{bottom:9px;font-size:10px;padding:6px 9px}.reveal{padding-bottom:27px}.reveal h2{font-size:38px}.reveal>.eyebrow{font-size:9px;top:19px;padding:6px 8px;letter-spacing:1px}.reveal p{font-size:14px}.reveal>strong{font-size:10px;letter-spacing:2px}.below-maze{margin-top:10px}.below-maze .small-button{font-size:10px;padding:6px 8px}.round-label{font-size:17px}.touch-controls{margin-top:10px}.game-aside .joke-panel{min-height:73px}}

/* Round endings and the exit key. */
.you-dot{background:#fff}.exit-key{color:#a4ff63;margin-left:12px;font-weight:900}
.ending-overlay{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;background:#1c102cdc}
.ending-overlay h2{font-size:clamp(40px,7vw,84px);line-height:1;color:#d1ff78;margin:14px 0}.ending-overlay p{font-size:16px;max-width:340px;color:#fff}.ending-overlay>.portrait{width:145px;height:145px;border-radius:50%;border:4px solid #d1ff78;background-color:#fff}
.ending-overlay.victory{background:radial-gradient(circle,#5a872ab8,#172313ed)}.ending-overlay.victory>.portrait{animation:cat-poof 1.3s .2s ease-in forwards}.ending-overlay.defeat h2{color:#ff7a99}.ending-overlay.defeat>.portrait{filter:grayscale(1);border-color:#ff7a99}.results.lost h1{color:#ff7a99}.results.lost>.portrait{filter:grayscale(1)}
@keyframes cat-poof{0%{transform:scale(1) rotate(0);opacity:1}45%{transform:scale(1.2) rotate(30deg);opacity:1}100%{transform:scale(0) rotate(270deg);opacity:0}}
@media(prefers-reduced-motion:reduce){.ending-overlay.victory>.portrait{animation:none;opacity:.25}}
@media(max-width:650px){.ending-overlay{padding:16px}.ending-overlay>.portrait{width:110px;height:110px}.ending-overlay p{font-size:14px}.result-stats strong{font-size:38px}}

/* The pursuer stays completely hidden until the reveal. */
.chaser-cat{background-image:url('/assets/pursuer.png');background-size:contain;background-position:center;background-color:transparent}
.maze-wrap::after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .8s;background:radial-gradient(ellipse at 50% 43%,transparent 30%,#17001499 78%,#09000ae8 100%)}
.maze-wrap.chase-active::after{opacity:1}.maze-wrap.cat-close::after{animation:dread-breath 1.4s ease-in-out infinite}
@keyframes dread-breath{0%,100%{opacity:.65}50%{opacity:1}}
.reveal h2{text-shadow:0 3px 0 #230513,0 0 24px #fc164799}.reveal>strong{color:#ffe7df}.ending-overlay.defeat>.portrait{filter:none;background-color:transparent;border:0;width:190px;height:220px;animation:last-lunge .35s ease-out both}.ending-overlay.victory>.portrait{background-color:transparent;border:0}
@keyframes last-lunge{from{transform:scale(.65)}to{transform:scale(1.25)}}
@media(prefers-reduced-motion:reduce){.maze-wrap.cat-close::after,.ending-overlay.defeat>.portrait{animation:none}.maze-wrap::after{transition:none}}
.chaser-demogorgon{background-image:url('/assets/demogorgon.png');background-size:contain;background-position:center;background-color:transparent}
#reveal-title{white-space:pre-line;font-size:clamp(28px,4.8vw,60px)}

.portrait-5{background-image:url("/assets/eleven-cartoon.png");background-size:contain;background-position:center;background-repeat:no-repeat}
.characters{grid-template-columns:repeat(3,minmax(0,1fr));max-width:900px;margin-inline:auto}
@media(max-width:650px){.characters{grid-template-columns:repeat(2,minmax(0,1fr))}.character-label,.character-label:nth-child(4),.character-label:nth-child(5){grid-column:auto}}

.weis-return{position:relative;z-index:20;display:flex;align-items:center;min-height:44px;padding:4px 18px;background:#243cdc;color:#fff;font:700 14px/1.5 system-ui,sans-serif}.weis-return a{display:inline-flex;align-items:center;min-height:36px;color:inherit;text-decoration:none;border-radius:4px;padding:4px 8px}.weis-return a:hover{text-decoration:underline}.weis-return a:focus-visible{outline:3px solid #e7fc69;outline-offset:1px}

