.game-lobby{max-width:1120px;margin:auto;padding:0 30px 70px}.game-nav{display:flex;justify-content:space-between;align-items:center;padding:27px 0;border-bottom:1px solid #eadbd6;font-size:12px}.game-nav a,.game-nav>span{display:flex;align-items:center;gap:8px}.game-nav>span{font-size:9px;letter-spacing:1.5px;color:#a54e76}.game-intro{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:50px;padding:58px 0 40px}.game-intro h1{font-size:68px;font-weight:1000;line-height:1.05;letter-spacing:-2px;margin:20px 0}.game-intro p{color:#776971;font-size:14px;max-width:450px}.game-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.game-tags span{background:#fae7ee;color:#aa4876;border-radius:20px;padding:7px 12px;font-size:10px;font-weight:700}.game-cover{position:relative;border-radius:45% 50% 42% 44%;background:radial-gradient(circle at 30% 30%,#fff8e8,#f2d1e4);padding:25px;aspect-ratio:1.2}.game-cover>img{width:100%;height:100%;object-fit:contain;animation:bob 5s ease-in-out infinite}.cover-cake{position:absolute;right:15px;top:20px;font-size:47px;transform:rotate(12deg)}.cover-letter{position:absolute;bottom:5px;left:8px;background:#ffe6a7;color:#ad4e85;font:1000 40px Nunito;padding:3px 18px;border-radius:50%;transform:rotate(-12deg)}.cover-flower{position:absolute;right:35px;bottom:-10px;color:#d476a1}.lobby-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px}.play-card,.ranking-card{background:#fffdfb;border:1px solid #ecdadf;border-radius:27px;padding:32px}.play-card{background:#faeaf0}.play-card h2,.ranking-card h2{font-size:31px}.play-card label{font-size:12px;font-weight:700;display:block;margin-top:20px}.play-card input{margin:8px 0;font-size:16px}.play-card form>small{font-size:10px;color:#836976}.play-card fieldset{border:0;padding:0;margin:22px 0}.play-card legend{font-size:12px;font-weight:700;margin-bottom:10px}.character-choice{display:flex;gap:12px}.character-choice button{flex:1;display:flex;gap:9px;align-items:center;border:2px solid transparent;border-radius:16px;padding:9px;background:#fffcf8;color:#936b7e;font-weight:800;font-size:13px}.character-choice .chosen{border-color:#ca578e;color:#a73870;box-shadow:0 4px 0 #edc6d6}.character-portrait{width:49px;height:53px;display:block;background-image:url(/playmates.webp);background-size:102px 77px;background-repeat:no-repeat}.stitch-portrait{background-position:0 0}.angel-portrait{background-position:-51px -7px}.play-card .button{width:100%}.ranking-card>p{font-size:12px;color:#87717b}.ranking-card ol{list-style:none;padding:0;margin:22px 0;max-height:310px;overflow:auto}.ranking-card li{display:flex;align-items:center;gap:13px;padding:12px 0;border-bottom:1px solid #f1e6e5;font-size:13px}.ranking-card li>span:nth-child(2){min-width:0;overflow-wrap:anywhere;flex:1}.ranking-card li>b{color:#a84b7a;font-variant-numeric:tabular-nums;white-space:nowrap}.ranking-card li small{font-size:9px;font-weight:400}.rank-number{background:#f6edf0;color:#a3788d;width:28px;height:28px;display:grid;place-items:center;border-radius:50%;font-weight:800;flex-shrink:0}.rank-0{background:#f9e3a1;color:#8c611b}.rank-1{background:#e6ebef;color:#6d7e8b}.rank-2{background:#f4d6bc;color:#a26d3c}.rank-empty{min-height:210px;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:15px;text-align:center;color:#b689a0}.rank-empty p{font-size:12px;color:#8a727d}.game-error{font-size:12px!important;color:#aa2d5b!important;padding-top:12px}.how-to{padding-top:65px}.how-to h2{font-size:32px}.how-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:25px;margin-top:30px}.how-grid svg{color:#bd638e;margin-bottom:15px}.how-grid h3{font-size:15px;font-weight:900;margin-bottom:8px}.how-grid p{font-size:12px;color:#86717a}.hazard-list{font-size:11px;text-align:center;margin-top:30px;background:#e9f0e9;color:#617863;padding:15px;border-radius:15px}.game-shell{height:100dvh;overflow:hidden;display:flex;flex-direction:column;background:#fff8f1;touch-action:none;overscroll-behavior:none;user-select:none}.game-topbar{justify-content:space-between;height:72px;flex-shrink:0;padding:10px 25px;gap:12px;background:#fff9f3}.game-player,.game-topbar{display:flex;align-items:center}.game-player{gap:8px;min-width:0;flex:1}.mini-avatar{width:38px;height:42px;background:url(/playmates.webp) no-repeat;background-size:85px 64px;flex-shrink:0}.mini-avatar.angel{background-position:-42px -6px}.game-player div{min-width:0}.game-player b{font-size:13px;max-width:180px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-player small{display:block;font-size:9px;color:#9a798b}.score-display{display:flex;align-items:center;gap:8px;background:#f7e3ec;padding:7px 18px;border-radius:20px;color:#a63d73}.score-display>span{font-size:23px}.score-display>b{font-size:27px;font-family:Nunito,sans-serif;font-weight:1000;font-variant-numeric:tabular-nums}.score-display>small{font-size:8px;letter-spacing:1px}.pause-game{border:1px solid #dcc9d1;background:#fff;color:#ad4b7a;border-radius:50%;width:44px;height:44px;display:grid;place-items:center;margin-left:auto;flex:1;max-width:44px}.game-status{justify-content:space-between;padding:5px 25px 10px;font-size:10px;color:#8f7181;gap:10px;flex-shrink:0}.game-status,.game-status>span{display:flex;align-items:center}.game-status>span{gap:5px}.saved-status{font-size:8px}.game-stage{flex:1;position:relative;overflow:hidden;min-height:140px;background:#c7e7eb;border-top:1px solid #d8e7df;border-bottom:1px solid #ddc29f}.game-stage canvas{width:100%;height:100%;display:block}.power-hud{position:absolute;top:70px;right:15px;display:flex;flex-direction:column;gap:8px}.power-hud>button,.power-hud>span{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:7px;background:#fffcf1e8;color:#97718c;border:1px solid #fff;border-radius:15px;padding:9px 12px;font-size:10px;max-width:180px;box-shadow:0 3px 15px #6c577d12}.power-hud>span{background:#f3e3fae8}.power-hud b{font-size:15px;font-variant-numeric:tabular-nums}.power-hud small{display:block;width:100%;font-size:8px}.biome-label{position:absolute;bottom:12px;right:15px;font-size:8px;color:#8f7357;letter-spacing:1px;text-transform:uppercase}.game-controls{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;height:160px;padding:12px 45px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(#fff9f3,#f6e5ed);gap:25px}.joystick-wrap,.jump-wrap{display:flex;flex-direction:column;align-items:center;gap:8px}.joystick-wrap>span,.jump-wrap>span{font-size:8px;font-weight:700;letter-spacing:1.5px;color:#a97a92}.joystick{width:108px;height:108px;position:relative;border:2px solid #e5c5d4;border-radius:50%;background:radial-gradient(circle,#eed5e1,#fff9f4);touch-action:none;box-shadow:inset 0 5px 15px #b3879b10}.joy-left,.joy-right{position:absolute;top:44px;color:#b695a5;pointer-events:none}.joy-left{left:7px}.joy-right{right:7px}.joy-knob{position:absolute;left:29px;top:29px;display:block;width:46px;height:46px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#faf0f6,#c987ab);box-shadow:0 5px 8px #9c668546;border:2px solid #f8e5ee;pointer-events:none}.jump-button{width:85px;height:85px;border:4px solid #f4cfe1;border-radius:50%;display:grid;place-items:center;color:#fff;background:radial-gradient(circle at 30% 25%,#df83b0,#b7407f);box-shadow:0 6px 0 #d5a0ba;touch-action:none}.jump-button:active{transform:translateY(3px);box-shadow:0 3px 0 #d5a0ba}.control-hint{text-align:center;color:#9e6d86}.control-hint>span{font-size:24px}.control-hint b{display:block;font-size:11px;margin-top:4px}.control-hint small{display:block;font-size:9px;margin-top:5px}.game-modal-scrim{position:fixed;inset:0;z-index:50;background:#303e5866;backdrop-filter:blur(5px);display:grid;place-items:center;padding:22px}.game-modal{background:#fff9f3;border:2px solid white;border-radius:28px;padding:35px;max-width:440px;text-align:center;box-shadow:0 15px 90px #25304233}.game-modal .eyebrow{justify-content:center}.game-modal h2{font-size:30px;margin:18px 0}.game-modal p{font-size:12px;color:#8d7182;margin:10px 0}.game-modal p b{font-size:30px;color:#b34b83}.game-modal .button{width:100%;margin-top:15px}.game-modal .text-button{margin-top:15px}@media(max-width:700px){.game-lobby{padding:0 22px 40px}.game-nav{font-size:10px;padding:20px 0}.game-nav>span{font-size:8px;letter-spacing:.5px}.game-intro{grid-template-columns:1fr;gap:30px;padding-top:35px;text-align:center}.game-intro .eyebrow{justify-content:center}.game-intro h1{font-size:52px}.game-intro p{font-size:13px}.game-tags{justify-content:center}.game-cover{width:80%;max-width:350px;margin:auto}.lobby-grid{grid-template-columns:1fr;gap:20px}.play-card,.ranking-card{padding:25px}.how-to{text-align:center;padding-top:40px}.how-to .eyebrow{justify-content:center}.how-to h2{font-size:28px}.how-grid{grid-template-columns:1fr 1fr;text-align:left;gap:24px}.game-topbar{height:64px;padding:10px 14px}.score-display{padding:5px 12px;gap:5px}.score-display>small{display:none}.score-display>b{font-size:25px}.game-player b{max-width:115px;font-size:12px}.game-status{font-size:8px;padding:3px 14px 9px;gap:7px}.saved-status{max-width:120px;text-align:right;font-size:7px}.game-controls{height:155px;padding:12px 25px calc(12px + env(safe-area-inset-bottom));gap:15px}.control-hint b{font-size:9px}.control-hint small{font-size:7px;max-width:100px}.control-hint>span{font-size:22px}.game-modal{padding:27px}.game-modal h2{font-size:28px}.power-hud{top:70px;right:8px}.power-hud>button,.power-hud>span{max-width:140px;font-size:9px;padding:7px 8px}}@media(max-height:500px) and (orientation:landscape){.game-topbar{height:46px;padding:3px 18px}.game-status{padding:0 18px 4px;font-size:8px}.game-controls{position:absolute;bottom:10px;left:0;right:0;height:105px;background:transparent;pointer-events:none;align-items:center}.joystick,.jump-button{pointer-events:auto;opacity:.8}.joystick{width:88px;height:88px}.joy-knob{left:22px;top:22px;width:40px;height:40px}.joy-left,.joy-right{top:34px}.jump-button{width:70px;height:70px}.game-controls .control-hint,.joystick-wrap>span,.jump-wrap>span{display:none}.biome-label{bottom:5px}.power-hud{top:55px}.game-stage{border-bottom:0}}@media(prefers-reduced-motion:reduce){.game-cover>img{animation:none}}.sound-game{border:1px solid #dcc9d1;background:#fff;color:#ad4b7a;border-radius:50%;width:44px;height:44px;display:grid;place-items:center;flex-shrink:0}.game-topbar .pause-game{margin-left:0}.joy-down,.joy-up{position:absolute;left:45px;color:#b695a5;pointer-events:none}.joy-up{top:7px}.joy-down{bottom:7px}@media(max-width:700px){.game-topbar{gap:7px}.score-display{padding:5px 9px}.game-player b{max-width:92px}.pause-game,.sound-game{width:40px;height:40px}.pause-game{max-width:40px}}@media(max-height:500px) and (orientation:landscape){.joy-down,.joy-up{left:35px}.sound-game{height:36px;width:36px}.game-topbar .pause-game{height:36px;max-width:36px}}.life-bar{display:flex;justify-content:center;align-items:center;gap:7px;flex-shrink:0;padding:3px 15px 9px;background:#fff9f3}.life-bar>span{font-size:8px;letter-spacing:1.5px;color:#a48294;margin-right:4px}.life-bar>b{font-size:10px;color:#a7678a;margin-left:5px;font-variant-numeric:tabular-nums}.over-modal h2{overflow-wrap:anywhere}.over-trophy{color:#d6a75d;margin-top:18px}.final-score{font:1000 52px Nunito,sans-serif;color:#b34881;margin:10px 0}.final-score small{display:block;font:700 10px DM Sans,sans-serif;letter-spacing:2px;text-transform:uppercase}.over-saved{display:block;font-size:9px;color:#a98a9a;margin-top:15px}@media(max-height:500px) and (orientation:landscape){.life-bar{position:absolute;top:53px;left:18px;z-index:2;background:#fff9f3c9;border-radius:20px;padding:5px 9px}.life-bar svg{width:13px;height:13px}.life-bar>b,.life-bar>span{font-size:7px}.over-modal{padding:20px}.over-modal .over-trophy{display:none}.over-modal h2{font-size:24px;margin:8px 0}.final-score{font-size:36px;margin:4px}.game-modal p{margin:5px 0}.game-modal .button{padding:12px;margin-top:8px}.game-modal .text-button{margin-top:5px}}.play-card,.ranking-card{min-width:0}.play-card fieldset{min-inline-size:0}.character-choice,.character-choice button{min-width:0}.character-choice button{justify-content:center}@media(max-width:700px){.lobby-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:360px){.character-choice button{flex-direction:column;gap:5px}.game-controls .control-hint{display:none}.game-controls{padding-left:24px;padding-right:24px;gap:15px}}.registered-player{display:flex;gap:10px;align-items:center;background:#fffcf9;border:1px solid #e9cddc;border-radius:15px;padding:15px;margin-top:20px;color:#a94b7d}.registered-player>div{min-width:0}.registered-player small{display:block;font-size:8px;letter-spacing:1.3px}.registered-player b{display:block;font-size:16px;overflow-wrap:anywhere;margin-top:4px}.registered-help{font-size:11px;color:#896a7c;margin:12px 0}.guest-lock{text-align:center}.guest-lock>svg{color:#b65c88;margin-top:15px}.guest-lock h3{font-size:21px;font-weight:900;margin:10px 0}.guest-lock>p{font-size:12px;color:#856a79;margin-bottom:20px}.guest-lock>small{font-size:10px;color:#8f7181;line-height:1.7;display:block}.guest-lock form{margin-top:25px;padding-top:5px;border-top:1px solid #e7cdd8}.guest-lock .button,.guest-lock form label{font-size:11px}.code-login{margin-top:9px}.checking-guest{font-size:13px;margin-top:25px;color:#917082}.letter-hud{position:absolute;top:12px;left:12px;display:flex;gap:4px;z-index:3;pointer-events:none}.letter-hud>span{display:grid;place-items:center;width:27px;height:32px;border-radius:9px;border:1px solid #e1c9d8;background:#fff9f0dc;color:#b9a5b2;font:1000 21px Nunito,sans-serif;transition:background .25s,transform .25s,color .25s}.letter-hud .letter-filled{background:#edb6d1;color:#9e386c;border-color:#d99bb9;transform:translateY(-2px);box-shadow:0 3px 0 #b97a9f30}.letter-hud .letter-next{border:2px solid #ce79a2}.letter-hud small{position:absolute;top:37px;left:0;width:160px;font-size:8px;color:#95627f;letter-spacing:.3px}.celebration-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.game-stage .power-hud{top:115px}@media(max-width:700px){.letter-hud>span{width:25px;height:29px;font-size:19px}.letter-hud small{top:33px;font-size:7px}}@media(max-height:500px) and (orientation:landscape){.letter-hud{top:42px}.letter-hud>span{width:22px;height:25px;font-size:17px}.letter-hud small{top:28px}.life-bar{top:50px}.game-stage .power-hud{top:95px;right:10px}}