@charset "UTF-8";
:root{--ink:#253e3b;--muted:#7c8c80;--paper:#f8f8ed;--green:#4d775f;--coral:#e67c64;--line:#d8dfcf;--font:ui-rounded,"Microsoft YaHei","PingFang SC",sans-serif}
*{box-sizing:border-box}body{margin:0;background:#eef2e8;color:var(--ink);font:14px var(--font);background-image:linear-gradient(#69856808 1px,transparent 1px),linear-gradient(90deg,#69856808 1px,transparent 1px);background-size:28px 28px}button,select,input{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,canvas:focus-visible,select:focus-visible{outline:3px solid #ecac58;outline-offset:3px}button{transition:background .15s,transform .15s}button:active{transform:translateY(2px)}button:disabled{cursor:default;opacity:.55}[hidden]{display:none!important}.site-header{max-width:1300px;margin:auto;height:87px;padding:0 42px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}.brand strong{font-size:20px;letter-spacing:2px}.brand-cloud{font-size:30px;color:#628a72;text-shadow:2px 2px #d3dfc8}.build-tag{font:10px monospace;letter-spacing:1px;padding:5px 7px;background:#dce8d5;border:1px solid #cfddc7}.header-right{display:flex;align-items:center;gap:7px;color:#758277;font-size:12px}.online-dot{width:6px;height:6px;background:#72a676;border-radius:50%}.text-button{border:0;background:none;padding:6px 0;font-size:12px}.header-right .text-button{margin-left:25px;color:#425f4e}.layout{max-width:1200px;margin:32px auto;display:grid;grid-template-columns:minmax(210px,1fr) 360px minmax(240px,1fr);gap:42px;align-items:start;padding:0 30px}.left-column{padding-top:36px}.eyebrow,.note-index,.section-heading>span,.mini-label{font-size:9px;letter-spacing:1.7px;font-weight:600}.eyebrow{color:#8a987f;font-family:monospace}h1{font-size:43px;line-height:1.42;margin:23px 0 17px;letter-spacing:2px;font-weight:800}h1 span{color:#698d63}.intro{color:#7a8877;line-height:1.95;margin:0;font-size:13px}.control-note{margin-top:36px}.note-index{color:#91a086}.key-row{display:flex;align-items:center;gap:6px;margin-top:15px}kbd{display:inline-grid;place-items:center;width:30px;height:29px;background:#fafbf2;border:1px solid #b7c6ad;box-shadow:0 3px #d5dfcc;font-size:18px}.key-row>span{font-size:11px;margin-left:6px;color:#65765f}.control-note p{font-size:12px;line-height:1.9;color:#7d8a76;margin-bottom:9px}.shortcut{font-size:10px;letter-spacing:.5px;color:#96a18f}.legend{display:grid;gap:12px;margin-top:27px;font-size:11px}.legend>span{display:flex;align-items:center;gap:8px}.legend small{font-size:10px;color:#929d89;margin-left:8px}.cloud-dot{display:inline-block;width:20px;height:9px;box-shadow:0 -3px 0 -1px currentColor,3px 3px 0 #40535a;background:currentColor}.normal{color:#fffbed}.moving{color:#9bdaeb}.fragile{color:#edbb86}.test-disclaimer{font-size:10px;color:#9aa58f;line-height:1.8;margin-top:30px}.game-column{min-width:0}.game-frame{width:360px;height:640px;position:relative;border:3px solid #344d49;box-sizing:content-box;box-shadow:5px 5px 0 #d1dbc8,0 15px 50px #5c735113;overflow:hidden;background:#89cfe1}.game-frame canvas#game{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:none;outline-offset:-5px}.hud{position:absolute;top:18px;left:18px;right:18px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}.height-display{background:#133d5199;padding:8px 13px 9px;min-width:102px;color:#fffde9;box-shadow:3px 3px #ffffff18}.height-display>small{display:block;font-size:9px;letter-spacing:2px;color:#deefe3;margin-bottom:2px}.height-display strong{font-family:monospace;font-size:26px;letter-spacing:1px}.unit{font-size:13px}.hud-right{display:flex;gap:8px;align-items:center}.pixel-icon{pointer-events:auto;width:34px;height:34px;border:2px solid #fff8d1aa;background:#163e4d77;color:white;font-size:19px;box-shadow:2px 2px #143c4e44}.hud-right>span{font-size:10px;padding:4px;background:#f5d082;color:#5c4829}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#1c4a5d17;padding:20px}.home-panel{width:100%;text-align:center;background:#fffeedeb;border:2px solid #fff9dc;box-shadow:5px 5px #244b492b;padding:23px 24px 18px;max-width:302px}.home-panel>.mini-label{color:#7c9475;font-size:10px;letter-spacing:3px}.home-panel h2{font-size:36px;letter-spacing:5px;line-height:1.2;margin:10px 0 0;color:#385745;text-shadow:2px 2px #dce5c8}.home-panel h2 span{display:block;font:10px monospace;letter-spacing:5px;margin-top:8px;color:#91a17c}.home-panel>canvas{image-rendering:pixelated;display:block;width:90px;height:100px;margin:9px auto 0}.character-name{font-size:11px;color:#7c8b71;margin:0 0 13px}.character-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0 0 19px}.character{border:2px solid #d8dfc9;background:#eff2df;padding:4px 1px;width:auto;min-width:0;display:grid;place-items:center;gap:2px;box-shadow:0 3px #d2dbc5}.character canvas{width:100%;max-width:44px;height:auto;aspect-ratio:44/48;image-rendering:pixelated}.character span{font-size:10px;color:#748267}.character.selected{border-color:#d58769;background:#fff0d8;box-shadow:0 3px #d58769}.primary-button{display:block;width:100%;border:2px solid #c86851;background:#e98a6b;box-shadow:0 4px #b9614e;color:#fffbe9;padding:12px 18px;font-weight:700;letter-spacing:2px;font-size:15px}.primary-button:hover{background:#ed9a7e}.primary-button span{float:right}.home-best{font-size:10px;color:#8e9b7c;margin:16px 0 12px}.home-best strong{color:#61775a;margin-left:9px;font-family:monospace;font-size:13px}.home-links{display:flex;justify-content:center;gap:7px;color:#a2af91;align-items:center;font-size:10px}.home-links button{border:0;background:none;font-size:10px;color:#7d8f6c;padding:4px}.game-footer{display:flex;justify-content:space-between;font-size:9px;color:#84957f;margin-top:14px;letter-spacing:.2px;width:366px}.right-column{padding-top:17px}.progress-card,.settings-card{background:#f9faef;border:1px solid #d9e0ce;padding:20px;box-shadow:3px 3px #e2e8d8}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:5px}.section-heading h3{font-size:13px;letter-spacing:1px;margin:0}.section-heading>span{font:8px monospace;color:#9aa88e;letter-spacing:.7px}.best-number{font:bold 48px monospace;letter-spacing:-2px;margin:19px 0 6px;color:#517359}.best-number small{font:13px var(--font);letter-spacing:0;margin-left:7px;color:#96a68b}.next-goal{font-size:10px;color:#8d9a7f;line-height:1.6;min-height:16px}.progress-track{height:5px;background:#e5ead9;margin:12px 0 15px}.progress-track i{height:100%;display:block;background:#88a87d;width:0;transition:width .3s}.row-link{display:flex;justify-content:space-between;width:100%;font-size:11px;padding:13px 0 0;margin-top:12px;border:0;border-top:1px solid #e2e7d7;background:none}.row-link span{color:#96a486;font-size:10px}.settings-card{margin-top:22px}.setting-label{display:flex;justify-content:space-between;font-size:11px;margin:22px 0 9px;align-items:center}.setting-label span,.setting-label output{font-size:9px;color:#99a58d}select{width:100%;background:#f1f4e7;border:1px solid #d6dfc9;color:#68805b;padding:10px 8px;font-size:11px;border-radius:0}input[type=range]{width:100%;accent-color:#709365;margin:1px 0 15px}.secondary-button{width:100%;border:1px solid #b4c6a4;background:#e8efdf;color:#66815b;padding:10px;font-size:11px;box-shadow:0 2px #d0ddc3}.calibrate{width:100%;color:#64855c;margin-top:6px}.small-note{font-size:9px;line-height:1.8;color:#99a58e;margin:11px 0 17px}.switch-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e1e7d5;padding-top:13px;font-size:11px;color:#7a8c6d}.switch-row input{accent-color:#719462;width:16px;height:16px}.right-footnote{color:#a2ad96;font-size:11px;line-height:1.8;text-align:center;margin-top:24px}.tiny-star{display:block;color:#9cb78c;font-size:22px;margin-bottom:6px}.page-footer{display:flex;justify-content:space-between;max-width:1216px;margin:28px auto 20px;padding:16px 30px 0;border-top:1px solid var(--line);font:9px monospace;color:#9aa790;letter-spacing:.5px}.landing-hint{position:absolute;bottom:27px;left:0;right:0;text-align:center;color:#fffbe7;text-shadow:1px 2px #365f59;font-size:11px;pointer-events:none}.toast{position:absolute;top:97px;left:24px;right:24px;text-align:center;background:#fff8d8f5;border:2px solid #dec28c;padding:11px;color:#775731;font-size:11px;line-height:1.6;z-index:5;opacity:0;transform:translateY(-6px);transition:.2s;pointer-events:none}.toast.visible{opacity:1;transform:translateY(0)}.countdown{position:absolute;inset:0;display:grid;place-items:center;background:#193f4b24;color:#fffce4;font:bold 90px monospace;text-shadow:5px 5px #2d5e65;pointer-events:none}.modal-panel{width:100%;max-height:92%;overflow-y:auto;background:#fffeedfa;border:2px solid #f3e6bc;padding:20px;box-shadow:4px 4px #28484744;scrollbar-width:thin}.modal-top{display:flex;align-items:center;justify-content:space-between}.modal-top .mini-label{color:#a5ad8c;font-size:8px}.close-button{background:none;border:0;font-size:23px;color:#899a77;padding:0 4px}.modal-panel h2{font-size:23px;letter-spacing:2px;margin:10px 0 18px}.modal-copy{font-size:11px;line-height:1.9;color:#829070}.modal-panel .primary-button{margin-top:20px;font-size:13px}.modal-panel .secondary-button{margin-top:12px}.score-big{font:bold 57px monospace;color:#5d805e;margin:5px 0}.score-big small{font-size:17px}.result-tag{display:inline-block;background:#f5d48b;padding:5px 9px;font-size:10px;color:#8a6229}.result-stats{font-size:11px;line-height:2;color:#8a9879}.result-stats strong{float:right;color:#5e7856}.achievement-list{display:grid;gap:9px}.achievement-item{display:flex;gap:12px;align-items:center;border:1px solid #e2e6d4;padding:10px;background:#f1f2e6}.achievement-item.unlocked{background:#f8edd3;border-color:#e8d19b}.achievement-symbol{display:grid;place-items:center;background:#e3e8d7;border:2px solid #c6d2b5;width:35px;height:35px;flex:none;color:#a2af90;font-size:20px}.unlocked .achievement-symbol{color:#bd8645;background:#ffe6a9;border-color:#d6b26d}.achievement-item strong{display:block;font-size:11px;color:#68815d;margin-bottom:3px}.achievement-item small{font-size:9px;color:#99a48b}.tiny-track{height:3px;background:#dde4d0;margin-top:7px}.tiny-track i{display:block;background:#b5c39b;height:100%}.tab-row{display:flex;border:1px solid #cbd7bc;margin-bottom:12px}.tab-row button{flex:1;border:0;padding:9px;background:#eef1e2;font-size:11px}.tab-row button.active{background:#6e8b63;color:#fff9df}.rank-notice{font-size:10px;color:#b08a54;background:#fff2d3;padding:8px;line-height:1.7;margin-bottom:12px}.rank-row{display:grid;grid-template-columns:24px 1fr auto;gap:7px;align-items:center;padding:13px 3px;border-bottom:1px solid #e0e6d5;font-size:11px}.rank-row strong{font-family:monospace;color:#788d66}.rank-row.me{background:#e3ebd8;padding-left:8px;padding-right:8px}.touch-controls{display:none}.settings-in-modal{display:grid;gap:10px}.settings-in-modal label{font-size:11px;color:#7f906e}.settings-in-modal .small-note{margin:0}.record-note{color:#b29259;font-size:10px;line-height:1.8}.result-achievements{font-size:11px;line-height:1.8;color:#ae8150;margin-top:10px}
@media(min-width:1100px) and (min-height:920px){.layout{margin-top:55px}.site-header{height:100px}}
@media(max-width:1050px){.layout{gap:24px;grid-template-columns:minmax(160px,1fr) 360px 240px;padding:0 22px}h1{font-size:34px}.right-column{padding-top:17px}.progress-card,.settings-card{padding:16px}.site-header{padding:0 25px}.left-column{padding-top:30px}}
@media(max-width:880px){.layout{grid-template-columns:360px 250px;max-width:690px;gap:35px;margin-top:24px}.left-column{display:none}.header-right{font-size:10px}.site-header{height:66px}.page-footer{max-width:680px}.brand strong{font-size:17px}.build-tag{font-size:8px}}
@media(max-width:650px){body{background:#263c40;overscroll-behavior:none}.site-header,.left-column,.right-column,.page-footer,.game-footer{display:none}.layout{display:block;margin:0;padding:0;width:100%;max-width:none;height:100dvh;display:flex;justify-content:center;align-items:center}.game-column{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.game-frame{height:min(calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom)),calc(100vw * 640 / 360));width:auto;aspect-ratio:360/640;border:0;box-shadow:none;flex:none;max-width:100vw}.touch-controls{display:flex;width:100%;height:58px;justify-content:space-between;align-items:center;padding:5px 20px;background:#263c40;gap:18px}.touch-controls button{touch-action:none;border:1px solid #6a8580;background:#36534f;color:#e0e9ce;font-size:23px;width:70px;height:48px;box-shadow:0 3px #1c302d}.touch-controls #mobileMenu{font-size:12px;border:0;background:none;box-shadow:none;color:#acbea9}.hud{top:18px;left:16px;right:16px}.home-panel{padding-top:18px;padding-bottom:15px}.home-panel h2{font-size:31px}.home-panel>canvas{height:90px;width:81px}.overlay{padding:18px}.modal-panel{max-width:315px}.toast{top:90px}.landing-hint{bottom:15px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.revive-offer{margin-top:16px;padding:14px 12px;background:#edf3df;border:1px solid #bfd0ad}.revive-offer>strong{display:block;font-size:14px;letter-spacing:1px;margin-top:5px;color:#56744e}.revive-counter{font-size:9px;color:#8a9c76}.revive-offer p{font-size:10px;color:#82936e;line-height:1.8;margin:8px 0}.revive-offer small{display:block;font-size:9px;line-height:1.7;color:#8e9b7e;margin-top:12px}.modal-panel .revive-offer .primary-button{font-size:12px;margin-top:12px;padding:11px 7px}.revive-spent{font-size:10px;color:#9b997b;margin:14px 0 0}.share-card{border:2px solid #bbceb0;background:#e7efda;text-align:center;padding:16px;color:#5e7c53}.share-card>span{font-size:8px;letter-spacing:2px}.share-card>strong{display:block;font:40px monospace;margin:10px 0}.share-card strong small{font-size:13px}.share-card p{font-size:10px;margin:0;color:#849775}.share-content{width:100%;height:95px;resize:none;background:#f5f5e8;border:1px solid #d5dfc8;color:#7d8d70;padding:10px;font:10px/1.7 var(--font);overflow-wrap:anywhere}.hud-right>#protectionBadge{background:#c1efd3;color:#3f7659;white-space:nowrap}.countdown[data-mode=revive]::after{content:'安全踏板已就绪';position:absolute;top:calc(50% + 62px);left:0;right:0;text-align:center;font:12px var(--font);letter-spacing:2px;text-shadow:1px 2px #2d5e65}
.demo-share-link{display:block;width:100%;font-size:10px;color:#80966c;margin-top:10px}

.result-panel h2{font-size:21px;margin:8px 0 10px}.result-panel .score-big{font-size:50px;margin:0}.result-panel .revive-offer{margin-top:12px;padding:12px}.result-panel .revive-offer p{margin:8px 0;line-height:1.6}.modal-panel .end-run-button{min-height:43px;font-size:12px;font-weight:700;background:#f7f8eb;color:#425f4b;border-color:#8fa683;margin-top:10px}.end-run-button:hover{background:#e5edda}.result-panel .demo-share-link{margin-top:6px;padding:6px 0;min-height:32px}.result-panel .revive-offer small{margin-top:4px;font-size:9px}.result-status{font-size:11px;line-height:1.8;color:#71866a;margin:12px 0 0}.result-actions .text-button{display:block;width:100%;min-height:40px;margin-top:7px;color:#74866c}.modal-panel:focus{outline:none}

.journey-hint{position:absolute;top:78px;left:18px;max-width:calc(100% - 36px);padding:4px 7px;background:#17394b9c;color:#e4efe3;font-size:9px;letter-spacing:.5px;pointer-events:none}.hud-right{gap:6px}.height-display{flex-shrink:0}.hud-right{flex-shrink:0}

.touch-controls button.held{background:#708a69;color:#fffde6;border-color:#b9d59b;box-shadow:0 1px #1c302d;transform:translateY(2px)}

.modal-panel[data-kind=achievements]{display:flex;flex-direction:column;overflow:hidden}
.modal-panel[data-kind=achievements]>.modal-top,.modal-panel[data-kind=achievements]>h2{flex-shrink:0}
.modal-panel[data-kind=achievements]>#modalBody{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}

.home-extras{display:grid;grid-template-columns:1.3fr 1fr;gap:8px;margin-top:13px}.home-extras .secondary-button{padding:8px 3px;font-size:10px}
.home-panel{max-height:100%;overflow-y:auto;scrollbar-width:thin}.home-best{margin-top:12px}
.wardrobe-preview{display:flex;gap:16px;align-items:center;background:#eef2df;border:1px solid #d8e1c9;padding:8px}.wardrobe-preview canvas{width:67px;height:75px;image-rendering:pixelated}.wardrobe-preview p{font-size:10px;line-height:1.8;color:#879675}.wardrobe-heading{font-size:12px;letter-spacing:1px;margin:18px 0 10px}.wardrobe-list{display:grid;gap:8px}.wardrobe-item{display:flex;align-items:center;gap:9px;text-align:left;padding:11px 8px;border:1px solid #d3dec4;background:#f1f4e6;min-height:60px}.wardrobe-item.equipped{border-color:#c18561;background:#fff0d7}.wardrobe-item:disabled{opacity:.7}.wardrobe-item strong{display:block;font-size:11px}.wardrobe-item small{display:block;font-size:9px;color:#8a987c;line-height:1.7;margin-top:4px}.wardrobe-item b{margin-left:auto;white-space:nowrap;font-size:9px;color:#8e9b7d}.wardrobe-swatch{width:23px;height:23px;flex:none;box-shadow:3px 3px #354a3c24}.reward-label{color:#ad8752;font-style:normal;font-size:9px;line-height:1.8}
.room-stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #dbe1cc;background:#f0f3e3}.room-stats>span{text-align:center;padding:10px 3px;font-size:9px;color:#869674;border-right:1px solid #dbe1cc}.room-stats>span:last-child{border:0}.room-stats strong{display:block;font:700 20px monospace;color:#577951;margin-bottom:3px}
.room-intro{font-size:11px;line-height:1.9;color:#80946c;margin:17px 0}.room-label{font-size:10px;color:#7c8f6b;display:block;margin:12px 0 7px}.room-input{width:100%;border:1px solid #cdd9bd;background:#f5f7e9;color:#4d6746;padding:12px 10px;font-size:13px;border-radius:0;outline-offset:1px}.room-join{border-top:1px solid #dbe2cd;margin-top:22px;padding-top:8px}.room-history-link,.room-leave{display:block;margin:16px auto 0;min-height:36px;color:#859674;font-size:10px}.room-error{font-size:11px;line-height:1.8;color:#a55a49}.room-code{text-align:center;border:1px solid #d3dfc2;background:#edf2df;padding:10px}.room-code small{font-size:9px;color:#8a9a79}.room-code strong{display:block;font:700 33px monospace;letter-spacing:5px;color:#597650;margin:5px 0}.room-code button{font-size:10px;color:#7c916a}.room-players{margin:10px 0}.room-player{display:flex;gap:9px;align-items:center;border-bottom:1px solid #e0e6d2;padding:12px 0}.room-avatar{width:29px;flex:none;color:#86a37b;font-size:22px}.room-player strong{font-size:11px;display:block;overflow-wrap:anywhere}.room-player small{display:block;color:#9ba68a;font-size:9px;margin-top:4px}.room-player>b{font:12px monospace;margin-left:auto;white-space:nowrap;color:#71895e}.room-rules{font-size:9px;color:#9a9e80;line-height:1.9;margin-top:16px}.room-cloud-status{font-size:10px;line-height:1.8;color:#7c936d;text-align:center}.room-result-height{font:700 48px monospace;text-align:center;color:#5b7a50}.room-result-height small{font-size:15px}.room-hud{position:absolute;top:108px;left:18px;right:18px;padding:5px 7px;background:#17394bb3;color:#fff4d5;font-size:9px;line-height:1.8;pointer-events:none}.history-row{display:flex;gap:12px;align-items:center;border-bottom:1px solid #dfe5d1;padding:12px 0;font-size:10px;color:#7c8d6b}.history-row small{display:block;font-size:8px;margin-top:4px;color:#a0ab90}.history-row>strong{margin-left:auto;font-family:monospace}.history-row>b{display:grid;place-items:center;width:27px;height:27px;background:#e9eedb}.history-row .result-win{color:#779d62;background:#e1edcf}.history-row .result-loss{color:#b4826c;background:#f4e6d9}
.modal-panel[data-kind=wardrobe],.modal-panel[data-kind=rooms]{display:flex;flex-direction:column;overflow:hidden}
.modal-panel[data-kind=wardrobe]>.modal-top,.modal-panel[data-kind=wardrobe]>h2,.modal-panel[data-kind=rooms]>.modal-top,.modal-panel[data-kind=rooms]>h2{flex-shrink:0}
.modal-panel[data-kind=wardrobe]>#modalBody,.modal-panel[data-kind=rooms]>#modalBody{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
@media(max-width:650px) and (max-height:700px){.home-panel>canvas{height:68px;width:61px;margin-top:5px}.home-panel{padding:12px 18px}.home-panel h2{font-size:27px}.character-picker{margin-bottom:13px}.home-extras{margin-top:10px}.home-best{margin:11px 0 8px}}

/* A compact invitation flow; historical stats live only in My Records. */
.records-rank-actions{display:grid;grid-template-columns:1fr 1fr;gap:16px}.records-rank-actions .row-link{gap:6px}.home-links{gap:5px}.home-links button{white-space:nowrap}
.lobby-tagline{font-size:12px;line-height:1.8;color:#7c916d;margin:0 0 18px}.capacity-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:9px 0 20px}.capacity-picker button{min-height:58px;border:1px solid #cdd8bd;background:#eff3e3;color:#809470;font:700 26px monospace;box-shadow:0 2px #d7dfca}.capacity-picker button small{font:10px var(--font);margin-left:3px}.capacity-picker button.selected{border:2px solid #d18564;background:#fff0d9;color:#996b50;box-shadow:0 2px #d18564}.lobby-join-link{display:block;width:100%;min-height:42px;margin-top:13px;color:#829570;font-size:10px}.lobby-note{margin:9px 0 0;color:#9aa78a;text-align:center;font-size:9px;letter-spacing:.5px}.lobby-room-heading{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#6d855b}.lobby-room-heading>strong{font:700 20px monospace;color:#c18259}.compact-room-code{font-size:10px;margin:7px 0 12px;color:#a0ab8f}.compact-room-code b{font:12px monospace;letter-spacing:2px;color:#7f926c;margin-left:6px}
.lobby-slots{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.lobby-slot{display:flex;gap:7px;align-items:center;min-height:66px;border:1px solid #d9e2ca;padding:9px 7px;background:#f1f4e6;min-width:0}.slot-avatar{display:grid;place-items:center;flex:none;width:26px;height:29px;color:#6f895e;background:#dbe7cf;box-shadow:2px 2px #bfd0ad;font-size:13px}.slot-avatar.you{background:#f6dfb4;color:#a07a4e;box-shadow:2px 2px #d6bc94}.lobby-slot>span:nth-child(2){min-width:0;flex:1}.lobby-slot strong{display:block;font-size:10px;line-height:1.5;overflow-wrap:anywhere;color:#677f59}.lobby-slot small{display:block;font-size:8px;color:#99a688;line-height:1.6;margin-top:3px}.lobby-slot>b{font:10px monospace;color:#7d9368}.lobby-slot.empty{border-style:dashed;background:#f7f8ed;color:#a7b196;font-size:9px}.lobby-slot.empty .slot-avatar{background:#edf1df;box-shadow:none;color:#b0bc9d}.lobby-invite{min-height:43px!important;margin-top:8px!important}.lobby-wait{font-size:11px;text-align:center;color:#8b9c78;margin:20px 0 0}.room-rule-details{border-top:1px solid #e1e6d2;padding-top:10px;margin-top:10px;color:#99a78c;font-size:9px}.room-rule-details summary{cursor:pointer}.room-rule-details p{font-size:9px;line-height:1.9}.room-empty-symbol{text-align:center;font-size:45px;color:#b6c5a5;margin:22px 0}.room-code-input{font:24px monospace;letter-spacing:4px;text-align:center}
.invite-card{text-align:center;border:1px solid #d2dec2;background:#edf3df;padding:16px;margin-bottom:14px}.invite-card small{font-size:10px;color:#82966d}.invite-card strong{display:block;font:700 33px monospace;letter-spacing:5px;color:#5e7e50;margin:9px 0}.invite-card p{font-size:10px;color:#98a584;margin:0}
.modal-panel[data-kind=records]{display:flex;flex-direction:column;overflow:hidden}.modal-panel[data-kind=records]>.modal-top,.modal-panel[data-kind=records]>h2{flex-shrink:0}.modal-panel[data-kind=records]>#modalBody{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.records-tabs{position:sticky;top:0;z-index:1;background:#fffeed;margin-top:0}.records-metrics{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #dbe2cc;background:#f1f4e5;margin-bottom:12px}.records-metrics>span{padding:12px 3px;text-align:center;font-size:9px;color:#91a17e;border-right:1px solid #dbe2cc}.records-metrics>span:last-child{border:0}.records-metrics strong{display:block;font:700 21px monospace;color:#607f50;overflow-wrap:anywhere;margin-bottom:6px}.records-caption{font-size:9px;color:#93a080;margin:12px 0}.solo-record{display:flex;align-items:center;gap:10px;padding:15px 0;border-bottom:1px solid #e1e6d3}.record-cloud{color:#a7bc92;font-size:23px}.solo-record>span:nth-child(2){flex:1}.solo-record strong{display:block;color:#7a8e65;font-size:11px}.solo-record small{display:block;font-size:8px;color:#a0aa90;margin-top:4px}.solo-record>b{font:700 20px monospace;color:#71895c;white-space:nowrap}.solo-record>b>small{font:9px var(--font);display:inline}.records-empty{padding:30px 10px;text-align:center;color:#9eac8f}.records-empty>span{display:block;font-size:35px;color:#bac8a8}.records-empty p{font-size:10px;line-height:1.8}.pk-record{border-bottom:1px solid #dde4cf}.pk-record>summary{display:flex;gap:9px;align-items:center;padding:13px 0;cursor:pointer;font-size:10px;color:#8a9b74;list-style:none}.pk-record>summary::-webkit-details-marker{display:none}.pk-record>summary>b{display:grid;place-items:center;background:#e7eed9;width:24px;height:27px;flex:none;color:#7e9766}.pk-record>summary .result-win{background:#e1edcf;color:#70965d}.pk-record>summary .result-loss{background:#f5e6d9;color:#b17e64}.pk-record summary small{display:block;font-size:8px;margin-top:5px;color:#a0ac90}.pk-record summary strong{margin-left:auto;font:12px monospace;white-space:nowrap;color:#7d9367}.pk-participants{background:#f1f4e5;padding:5px 8px;margin-bottom:10px}.pk-participants>div{display:flex;align-items:center;gap:7px;padding:9px 2px;font-size:9px;color:#8a9a75;border-bottom:1px solid #e0e5d1}.pk-participants>div:last-child{border:0}.pk-participants .me{color:#a17c50}.pk-participants b{margin-left:auto;font-family:monospace;white-space:nowrap}.pk-participants small{font-size:9px}.record-sync-note{font-size:9px;line-height:1.8;color:#b28e61}.record-sync-note button{font-size:9px;color:#8e9d77}

.hud>.game-name{position:absolute;left:50%;top:3px;transform:translateX(-50%);white-space:nowrap;font-size:10px;letter-spacing:1px;font-weight:700;color:#fffde9;background:#173f4d70;padding:5px 8px}

/* Shared, readable game UI. The optional portrait view renders the same UI at
   1080 x 1920 for high resolution review, without changing game state or data. */
.modal-top .mini-label{font-size:10px;letter-spacing:1px;color:#607454}
.modal-panel{display:flex;flex-direction:column;overflow:hidden}
.modal-top,.modal-panel>h2{flex-shrink:0}
.modal-panel>#modalBody{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.modal-panel h2{letter-spacing:1px}
.modal-copy{font-size:12px;color:#5c7155;line-height:1.85}
.small-note,.record-note{font-size:10px;color:#63765a;line-height:1.8}
.achievement-item strong,.wardrobe-item strong{font-size:12px;color:#425d3f}
.achievement-item small,.wardrobe-item small{font-size:10px;color:#69785c}
.achievement-item{gap:10px;padding:11px 9px}
.reward-label{font-size:10px;color:#91632c}
.home-best,.home-links,.home-links button,.character-name{font-size:11px;color:#607654}
.home-links{gap:4px}.home-links button{padding:7px 2px}
.home-panel h2{letter-spacing:3px;margin:12px 0 4px}
.home-panel>.mini-label{letter-spacing:1px}
.home-panel>canvas{margin-top:4px}
.home-extras .secondary-button{font-size:11px}
.close-button{color:#52684b;min-width:30px;min-height:30px;line-height:1}
.result-stats,.result-status{color:#617754}
.revive-counter,.revive-offer p,.revive-offer small{font-size:10px;color:#617754}
.room-rule-details,.lobby-note,.lobby-tagline,.room-label{color:#617754}
.build-tag,.eyebrow,.section-heading>span,.page-footer{display:none}

html.portrait-view{width:1080px;min-width:1080px;background:#eef2e8}
.portrait-view body{width:1080px;min-width:1080px;margin:0;background:#eef2e8;overflow:visible}
.portrait-view .site-header,.portrait-view .left-column,.portrait-view .right-column,.portrait-view .page-footer,.portrait-view .game-footer,.portrait-view .touch-controls{display:none!important}
.portrait-view .layout{display:block!important;width:1080px!important;max-width:none!important;height:1920px!important;margin:0!important;padding:0!important}
.portrait-view .game-column{display:block!important;width:1080px!important;height:1920px!important}
.portrait-view .game-frame{width:360px!important;height:640px!important;max-width:none!important;aspect-ratio:auto!important;border:0!important;box-shadow:none!important;zoom:3;flex:none}
.portrait-view .overlay{padding:18px}
.portrait-view .home-panel{padding:22px 20px 18px;max-width:302px}
.portrait-view .home-panel h2{font-size:34px}
.portrait-view .home-panel>canvas{width:90px;height:100px}
.portrait-view .modal-panel{width:100%;max-width:324px;max-height:92%;padding:18px}
.portrait-view .hud{top:18px;left:16px;right:16px}
.portrait-view .toast{top:96px}
.portrait-view .landing-hint{bottom:18px;font-size:11px}

.capture-tools{display:none}.portrait-view .capture-tools{display:flex;width:1080px;gap:24px;align-items:center;padding:24px;background:#edf1e7;font-size:22px}.capture-tools button{font-size:24px;padding:14px 24px;border:1px solid #a6b99b;background:#f9faeb}.portrait-view body::-webkit-scrollbar{width:0;height:0}

.portrait-view .touch-controls{display:flex!important;width:1080px;height:180px;position:relative;padding:12px 60px;justify-content:space-between;align-items:center;background:#263c40}.portrait-view .touch-controls button{width:210px;height:140px;border:1px solid #6a8580;background:#36534f;color:#e0e9ce;font-size:60px}.portrait-view .touch-controls #mobileMenu{font-size:30px}.portrait-view .capture-tools{margin-top:190px}

.photo-anchor{display:none}.portrait-view body{min-height:3000px}.portrait-view .photo-anchor{display:block;position:absolute;left:0;width:1px;height:1px;pointer-events:none}.portrait-view .photo-a{top:0}.portrait-view .photo-b{top:640px}.portrait-view .photo-c{top:1280px}

html.portrait-view,.portrait-view body{width:900px;min-width:900px}.portrait-view .layout,.portrait-view .game-column{width:900px!important;height:1600px!important}.portrait-view .game-frame{zoom:2.5}.portrait-view .touch-controls,.portrait-view .capture-tools{width:900px}

/* Spring platforms use a distinct pink pixel palette. */
.cloud-dot.spring{color:#ffbadb}

/* Softer interface; pixel art remains crisp and unchanged. */
:root{--ink:#3d5a50;--muted:#7b8e81;--paper:#fffdf4;--coral:#e99e88;--line:#dfe6d8}
body{background:#f3f5ee;background-image:radial-gradient(ellipse at top,#edf5f6 0,transparent 65%)}
.game-frame{border:1px solid #b8d2cb;border-radius:18px;box-shadow:0 10px 32px #44665b20}
.overlay{background:#477d7c0d}.home-panel{background:#fffdf4f5;border:1px solid #f8f6e9;border-radius:22px;box-shadow:0 10px 24px #335f5720;padding:24px 20px 19px}
.home-panel h2{text-shadow:none;color:#476458;letter-spacing:3px;font-weight:800}.home-panel>.mini-label{color:#81968a;letter-spacing:1px}.character-name{margin-bottom:15px;color:#748d7b}
.character{border:1px solid #e1e7d9;border-radius:10px;background:#f4f7ef;box-shadow:none;padding:5px 1px}.character.selected{border:1px solid #e6b29b;background:#fff0e5;box-shadow:0 2px 6px #d5a48c18}.character span{color:#71836b}
.primary-button{background:#e99e88;border:1px solid #de9781;border-radius:12px;box-shadow:0 3px 8px #b9755a1a;color:#fffdf5;letter-spacing:1px;min-height:44px}.primary-button:hover{background:#e6a18d}.secondary-button{background:#eef4e9;border:1px solid #dbe5d3;border-radius:10px;box-shadow:none;color:#617d63;min-height:38px}.home-extras{gap:10px}.home-best{margin:17px 0 10px}.home-links button{color:#758b76;min-height:32px}.home-links>span{color:#c7d1bd}
.progress-card,.settings-card{border:1px solid #e0e6d8;border-radius:16px;box-shadow:0 4px 16px #4a665509;background:#fffdf5}.height-display,.pixel-icon,.hud>.game-name{border-radius:8px;box-shadow:none}.pixel-icon{border:1px solid #fff8d188}.modal-panel{background:#fffdf6;border:1px solid #e7e7d7;border-radius:18px;box-shadow:0 8px 25px #28484722}.modal-panel h2{color:#3e5d4e;letter-spacing:1px}.close-button{border-radius:8px;min-width:36px;min-height:36px;background:#f1f4e9}.toast{border:1px solid #e4d5b0;border-radius:12px;box-shadow:0 4px 12px #52735a13}.result-tag{border-radius:6px}.tiny-track,.progress-track{border-radius:4px;overflow:hidden}
#achievementTools{flex:none;padding-bottom:13px;border-bottom:1px solid #e8ecdf;margin-bottom:12px}.achievement-summary strong{font:bold 27px monospace;color:#55775d}.achievement-summary small{font:11px var(--font);color:#7a8b70}.achievement-summary .progress-track{margin:9px 0 13px}.achievement-summary .progress-track i{background:#a0b798;transition:none}
.achievement-filters{display:flex;gap:7px}.achievement-filters button{flex:1;border:1px solid #e2e7d9;border-radius:8px;padding:8px 2px;background:#f5f7ee;font-size:11px;color:#7c8b71}.achievement-filters button[aria-pressed=true]{background:#e5eedf;border-color:#b8caaa;color:#516e4d;font-weight:700}
.modal-panel[data-kind=achievements] #modalBody{touch-action:pan-y;overflow-anchor:none;-webkit-overflow-scrolling:touch;contain:layout paint}.achievement-list{display:grid;gap:10px}.achievement-item{border:1px solid #e3e8d9;border-radius:12px;padding:13px 10px;background:#f5f7ef;content-visibility:auto;contain-intrinsic-size:auto 104px}.achievement-item.unlocked{background:#fff5e3;border-color:#ead9b8}.achievement-symbol{border:0;border-radius:10px;background:#e8eedf;color:#95a587}.unlocked .achievement-symbol{background:#f4e5c6;color:#ac8a48}.achievement-detail{flex:1;min-width:0}.achievement-item strong{font-size:12px;color:#486647}.achievement-item small{font-size:10px;line-height:1.6;color:#7a8971}.achievement-progress{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:9px;color:#819274;margin-top:6px}.achievement-progress em{font-style:normal;color:#a4824c}.achievement-item .tiny-track{margin-top:8px}.achievement-item .tiny-track i{background:#a6ba97}.achievement-empty{padding:25px 6px;color:#7a8d70;line-height:1.8;font-size:12px}
.replay-skip{position:absolute;bottom:26px;right:17px;z-index:4;border:1px solid #ffffff55;border-radius:18px;background:#294859aa;color:#fffbea;padding:10px 15px;font-size:11px;min-height:38px}.game-frame:has(.replay-skip:not([hidden])) .landing-hint{bottom:78px}
@media(max-width:650px) and (max-height:700px){.home-panel{padding:15px 18px}.home-panel>canvas{height:68px;width:61px}.character-name{margin-bottom:10px}.home-best{margin:11px 0 6px}}
@media(prefers-reduced-motion:reduce){button,.toast,.progress-track i{transition:none}}

/* Live chase race: compact by default, full ranks only on demand. */
.race-intro{background:#eef5e9;border:1px solid #dce8d4;border-radius:12px;padding:15px 12px;margin:15px 0}.race-intro strong{color:#52735b;font-size:14px}.race-intro p{font-size:11px;line-height:1.8;color:#7d9075;margin-bottom:0}.room-input{border-radius:9px}.lobby-slot,.lobby-slot.empty{border-radius:10px}.race-result-medal{text-align:center;color:#d4a15e;font-size:35px}.room-hud{top:97px;left:auto;right:15px;width:156px;border:1px solid #ffffff33;border-radius:11px;background:#234755dc;padding:8px 9px;pointer-events:auto;z-index:3;box-shadow:0 3px 10px #17394b22}.race-hud-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;padding:3px 0;background:none;border:0;color:#fff8de;text-align:left;font-size:10px}.race-hud-toggle span{font-size:9px;color:#d3e4da}.room-hud p{margin:4px 0;font-size:9px;line-height:1.7;overflow-wrap:anywhere}.race-ranking{max-height:220px;overflow:auto;margin-top:6px}.race-ranking>div{display:grid;grid-template-columns:1fr auto;gap:3px 5px;border-top:1px solid #ffffff22;padding:6px 0}.race-ranking>div.me{color:#ffe6a6}.race-ranking small{grid-column:1/-1;color:#cbdcce;font-size:8px}.race-danger{background:#b65d4c;color:#fff6db;padding:5px;border-radius:6px}.race-reconnecting{color:#ffdda1}.watch-controls{display:flex;flex-wrap:wrap;gap:5px;border-top:1px solid #ffffff33;padding-top:6px}.watch-controls button{font-size:9px;border:1px solid #ffffff44;border-radius:5px;background:none;color:#fff8de;padding:5px}.watch-controls button.active{background:#fff7d933}.modal-panel[data-kind=rooms] .room-result-height{font-size:39px}.modal-panel[data-kind=rooms] .room-cloud-status{color:#6b8368}

/* Fill phone height; project world positions without stretching character sprites. */
@media(max-width:650px){html,body{height:100%;overflow:hidden}.layout{height:100vh;height:100dvh;min-height:0}.game-column{width:100%;min-height:0}.game-frame{width:min(100vw,calc(100dvh * 360 / 640));height:100vh;height:100dvh;max-width:100vw;aspect-ratio:auto;border:0;border-radius:0;box-shadow:none}.hud{top:max(18px,calc(env(safe-area-inset-top) + 8px));left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right))}.overlay{padding-top:max(18px,env(safe-area-inset-top));padding-bottom:max(18px,env(safe-area-inset-bottom))}.landing-hint{bottom:max(18px,calc(env(safe-area-inset-bottom) + 8px))}.modal-panel{max-height:100%}.replay-skip{bottom:max(26px,calc(env(safe-area-inset-bottom) + 10px))}}

.wardrobe-characters{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.wardrobe-characters button[aria-pressed=true]{border-color:#dda58b;background:#fff0df}.wardrobe-preview canvas#wardrobeHero{width:140px;height:auto;image-rendering:pixelated}

/* Mode selection remains within the phone home card. */
.mode-picker{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:8px 0 0}.mode-picker button{border:1px solid #dce3d4;border-radius:9px;background:#eef2e3;color:#647b60;padding:8px 5px;font:inherit;font-size:12px;cursor:pointer}.mode-hint{margin:5px 0 9px;font-size:10px;color:#8a806d}.mode-picker button:focus-visible{outline:2px solid var(--mode-border);outline-offset:2px}
@media(max-height:700px){.home-panel .mode-picker button{padding:5px}.mode-hint{margin:3px 0 5px}.home-panel h2{margin-bottom:3px}.home-panel #hero{height:70px;width:63px}.home-panel .character-name{margin-top:0}}


/* Mode colors are scoped to launch buttons and difficulty selectors. */
.game-frame{--launch:#9fc9d8;--launch-border:#779fae;--launch-ink:#294d5b;--launch-shadow:#79a5b3}
.game-frame.extreme-mode{--launch:#d99b91;--launch-border:#b47c73;--launch-ink:#613d38;--launch-shadow:#b47c73}
#startBtn,.tab-row~[data-room-action=start],button[data-room-action=start]{background:var(--launch);border-color:var(--launch-border);color:var(--launch-ink);box-shadow:0 3px var(--launch-shadow)}
#startBtn:hover,button[data-room-action=start]:hover{filter:brightness(1.04)}
#modeNormal,.tab-row button[data-room-action=difficulty-normal],.tab-row button[data-room-action=record-difficulty-normal],.tab-row button[data-action=rank-normal]{--mode-fill:#9fc9d8;--mode-border:#779fae;--mode-ink:#294d5b}
#modeExtreme,.tab-row button[data-room-action=difficulty-extreme],.tab-row button[data-room-action=record-difficulty-extreme],.tab-row button[data-action=rank-extreme]{--mode-fill:#d99b91;--mode-border:#b47c73;--mode-ink:#613d38}
.mode-picker #modeNormal,.mode-picker #modeExtreme,.tab-row button[data-room-action*=difficulty-],.tab-row button[data-action^=rank-]{background:var(--mode-fill);border:1px solid var(--mode-border);color:var(--mode-ink);position:relative;box-shadow:none}
.mode-picker button[aria-pressed=true],.tab-row button[data-room-action*=difficulty-].active,.tab-row button[data-action^=rank-].active{outline:2px solid var(--mode-border);outline-offset:2px;font-weight:800}
#startBtn:disabled,button[data-room-action=start]:disabled{background:#e8ebe4;color:#71806c;border-color:#d7ded1;box-shadow:none;filter:none;opacity:1}

/* PK compact leaderboard stays at the upper left. */
.room-hud{top:18px;left:15px;right:auto;width:190px;pointer-events:none}.room-hud .race-ranking{margin:0;max-height:none}.room-hud .race-ranking>div:first-child{border-top:0;color:#d3e4da}
