*{box-sizing:border-box}html{background:#f4f1e9;color:#172c3b;font-family:Arial,'Noto Sans TC',sans-serif;overflow:hidden}body{position:fixed;left:var(--visible-left,0px);top:var(--visible-top,0px);width:var(--visible-width,100vw);height:var(--visible-height,100dvh);margin:0;padding:calc(var(--safe-top,0px) + 8px) calc(var(--safe-right,0px) + 8px) calc(var(--safe-bottom,0px) + 8px) calc(var(--safe-left,0px) + 8px);display:grid;grid-template-rows:40px minmax(0,1fr);gap:8px;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #e76f4b;outline-offset:3px}button:disabled{opacity:.5;cursor:wait}header{display:flex;align-items:center;gap:14px;min-width:0;height:40px}header>a{color:inherit;text-decoration:none;font-size:15px;font-weight:900;white-space:nowrap}h1{font-size:18px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nav{margin-left:auto;display:flex;gap:6px}nav button{border:1px solid #bccabb;background:#fffdf4;border-radius:10px;min-width:44px;height:40px;font-size:20px}main{display:grid;grid-template-columns:var(--side-width,100px) minmax(0,1fr) var(--side-width,100px);grid-template-rows:minmax(0,1fr);gap:8px;min-width:0;min-height:0}.arena{position:relative;grid-column:2;grid-row:1;min-width:0;min-height:0;overflow:hidden;border:1px solid #172c3b22;border-radius:18px;background:#bce2e2}#scene{position:absolute;inset:0}.arena canvas{display:block;width:100%;height:100%}.controls{display:contents}.limbs{display:flex;flex-direction:column;justify-content:center;gap:12px;min-width:0;min-height:0}.body-left{grid-column:1;grid-row:1}.body-right{grid-column:3;grid-row:1}.limbs button{flex:none;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:7px;width:100%;height:var(--limb-height,110px);min-height:56px;padding:8px 4px;background:#fffdf4;border:1px solid #c8d1c3;border-bottom:5px solid #abbfa8;border-radius:18px;color:#172c3b;touch-action:none;user-select:none;-webkit-user-select:none}.limbs kbd{font:900 30px Arial}.limbs span{font-size:18px;font-weight:700}.limbs button.active{background:#dff18d;border-bottom-width:3px;transform:translateY(2px)}.body-left button.active{background:#ffba9e}.hud{position:absolute;top:12px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:flex-start;gap:15px;pointer-events:none}.hud>strong{font-size:26px;line-height:1.1}.hud small{font-size:12px;font-weight:500}.record{text-align:right;font-size:12px}.record strong{display:block;font-size:22px}#air-guide{position:absolute;right:14px;bottom:12px;font-size:24px;color:#274b3a;pointer-events:none}#air-guide.boost{color:#709c05}
dialog{border:0;color:#172c3b;background:#fffdf4}dialog:not([open]){display:none}dialog::backdrop{background:#153c4559;backdrop-filter:blur(4px)}.card{width:min(460px,calc(var(--visible-width,100vw) - 32px - var(--safe-left,0px) - var(--safe-right,0px)));max-width:none;max-height:calc(var(--visible-height,100dvh) - 24px - var(--safe-top,0px) - var(--safe-bottom,0px));margin:auto;padding:26px;border-radius:22px;box-shadow:0 16px 80px #173c4533;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}.card.fallback[open]{position:fixed;inset:0;z-index:100}.card h2{font-size:25px;line-height:1.35;margin:0 0 15px}.card #card-text{font-size:20px;line-height:1.5;margin:0 0 20px}.card button{border:0;border-radius:12px;min-height:48px;padding:12px 14px;font-size:17px;font-weight:700}.card #start{width:100%;background:#172c3b;color:#fff}.result-score{font-size:54px;font-weight:900;line-height:1.15}.result-score small{font-size:24px}.result-status{font-size:16px;color:#b5593f;margin-top:7px}.share-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.share-buttons button:first-child{background:#dff18d;color:#293d2b}.share-buttons button:last-child{background:#e4e9df;color:#172c3b}#share-status{font-size:14px;line-height:1.4;min-height:20px;margin:9px 0 14px;color:#586f60}[hidden]{display:none!important}
html[data-layout="bottom"] main{grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) 96px;gap:8px}html[data-layout="bottom"] .arena{grid-column:1/3;grid-row:1}html[data-layout="bottom"] .limbs{grid-row:2;flex-direction:row;gap:8px}html[data-layout="bottom"] .body-left{grid-column:1}html[data-layout="bottom"] .body-right{grid-column:2}html[data-layout="bottom"] .limbs button{height:96px;min-width:0;flex:1}html[data-layout="bottom"] header>a span{display:none}html[data-layout="bottom"] h1{font-size:17px}@media(max-height:400px){.card{padding:18px}.card h2{font-size:23px;margin-bottom:10px}.card #card-text{font-size:18px;margin-bottom:13px}.result-score{font-size:42px}.hud{top:8px;left:9px;right:9px}.hud>strong{font-size:22px}.record strong{font-size:20px}.limbs kbd{font-size:27px}}

.share-buttons #copy-result{grid-column:1/-1;min-height:40px;padding:8px}#share-status{overflow-wrap:anywhere;user-select:text}

/* Four physical limbs, paired by body side: two thumbs can hold both feet. */
.limbs button{position:relative;gap:5px}.limbs small{font-size:12px;line-height:1.2;font-weight:700;white-space:nowrap;color:#587365}.limbs button[data-limb="2"].active,.limbs button[data-limb="3"].active{background:#ffd0ac}.limbs button.loading{box-shadow:inset 0 0 0 3px #ed9b52}.limbs button.armed{box-shadow:inset 0 0 0 4px #e56e3b}.limbs button.bracing{box-shadow:inset 0 0 0 4px #6293ae}.limbs button:after{content:"";position:absolute;left:8px;right:8px;bottom:5px;height:3px;border-radius:2px;background:#dc7b46;transform:scaleX(var(--load,0));transform-origin:left}.limbs button.bracing:after{background:#53829b}.basic-rule{margin:0 0 12px}.basic-rule b{white-space:nowrap}.basic-rule span{font-size:17px;color:#526b60}.route-rule{font-size:14px;color:#6b7a6b;margin:16px 0 0}.world-hud{position:absolute;left:14px;top:58px;display:flex;align-items:center;gap:10px;font-size:13px;pointer-events:none;color:#23464e}.world-hud strong{font-size:17px}.world-hud span{background:#fff9e8c9;padding:4px 7px;border-radius:7px}.world-note{position:absolute;bottom:10px;left:12px;font-size:10px;color:#34535c;pointer-events:none}#air-guide{font-size:13px;background:#fff9e8dd;border-radius:9px;padding:7px 9px;bottom:28px;right:10px}#air-guide.boost{color:#4e6e12;background:#eff9bedf}#place-cue{position:absolute;top:92px;left:50%;transform:translateX(-50%);max-width:calc(100% - 20px);padding:7px 12px;background:#173b44df;color:#fff5d9;border-radius:30px;font-size:14px;font-weight:700;text-align:center;opacity:0;transition:opacity .25s;pointer-events:none}#place-cue.visible{opacity:1}.journey-result{font-size:18px;font-weight:700;margin-top:8px;color:#527d6d}.stunt-result{font-size:14px;color:#6b7c69;margin-top:5px}.card.result h2{font-size:20px;line-height:1.45}.card.result #card-text{margin-bottom:13px}.result-score{font-size:46px}.result-score small{font-size:22px}
@media(max-height:430px){.world-hud{top:42px;left:10px;font-size:11px;gap:6px}.world-hud strong{font-size:14px}.world-hud span{padding:3px 5px}#place-cue{top:73px;font-size:12px}.limbs button{gap:3px}.limbs span{font-size:16px}.limbs kbd{font-size:25px}.limbs small{font-size:11px}.card.result{width:min(620px,calc(var(--visible-width,100vw) - 32px));padding:16px 20px}.card.result h2{font-size:18px;line-height:1.35;margin-bottom:7px}.card.result #card-text{margin-bottom:9px}.card.result .result-score{font-size:36px}.card.result .journey-result{font-size:16px;margin-top:3px}.card.result .share-buttons{grid-template-columns:1fr 1fr 1fr}.card.result .share-buttons #copy-result{grid-column:auto}.card.result .share-buttons button{font-size:13px;padding:8px;min-height:40px}.card.result #share-status:empty{display:none}.card.result #start{margin-top:9px;min-height:42px;padding:9px}.world-note{font-size:9px}}
@media(prefers-reduced-motion:reduce){#place-cue{transition:none}}

.speed-caption{display:block;font-size:10px;line-height:1.1;letter-spacing:1px}.mileage-label{font-size:12px;color:#6b7c69;margin-top:7px}.world-hud{flex-wrap:wrap;max-width:calc(100% - 28px);row-gap:4px}.world-hud #travel-distance{font-size:11px}.world-note{max-width:calc(100% - 24px);font-size:9px;line-height:1.25}.result-score{font-size:clamp(24px,7vw,46px)}

.world-hud{top:65px}#place-cue{top:120px;font-size:12px}.world-hud #place-name{font-size:15px}

.hud>strong,.record{background:#fffdf4;padding:4px 7px;border-radius:8px}.world-hud strong{background:#fffdf4;padding:4px 7px;border-radius:7px}.world-note{background:#fffdf4;padding:3px 5px;border-radius:4px}.record strong{font-size:clamp(12px,2.4vw,20px)}


.sound-status{position:absolute;top:48px;right:12px;z-index:5;font-size:11px;color:#334b42;background:#fffdf4;padding:3px 7px;border-radius:5px;pointer-events:none;max-width:80vw;}

.music-credits{font-size:11px;line-height:1.5;margin:8px 0 12px;color:#536954}.music-credits summary{cursor:pointer}.music-credits p{margin:7px 0}.music-credits a{color:inherit;text-decoration:underline;overflow-wrap:anywhere}

/* Anchor native and fallback dialogs to the current visual viewport after rotation. */
.card,.card.fallback[open]{position:fixed;inset:auto;left:calc(var(--visible-left,0px) + var(--visible-width,100vw)/2);top:calc(var(--visible-top,0px) + var(--visible-height,100dvh)/2);transform:translate(-50%,-50%);margin:0;touch-action:pan-y;}
/* Score-card hierarchy uses real text, not a scaled-down image of text. */
.card.result{display:block;padding:16px;width:min(520px,calc(var(--visible-width,100vw) - 24px - var(--safe-left,0px) - var(--safe-right,0px)));}
#result-brand{font-size:13px;font-weight:700;color:#607461;margin-bottom:8px;}
#result-score-block{margin:0 0 10px;}
.card.result h2{font-size:24px;line-height:1.3;margin:0 0 8px;overflow-wrap:anywhere;}
#card-subtitle{font-size:17px;line-height:1.45;margin:0 0 12px;color:#536954;overflow-wrap:anywhere;white-space:pre-wrap;}
#landing-preview{margin:0 0 8px;border-radius:12px;overflow:hidden;background:#c4e6e4;}
#landing-preview canvas{display:block;width:100%;height:auto;max-height:30dvh;max-height:calc(var(--visible-height,100dvh)*.30);object-fit:contain;}
.card.result #card-text{font-size:14px;line-height:1.35;margin:0 0 12px;}
.card.result .mileage-label{font-size:11px;margin:0 0 3px;}
.card.result .result-score{font-size:40px;line-height:1.1;overflow-wrap:anywhere;}
.card.result .result-score small{font-size:20px;}
.card.result .journey-result{font-size:14px;margin-top:0;overflow-wrap:anywhere;}
.card.result .stunt-result,.card.result .result-status{font-size:12px;margin-top:3px;}
.card.result .share-buttons{grid-template-columns:1fr 1fr;gap:6px;}
.card.result .share-buttons button{font-size:14px;padding:9px;min-height:44px;}
.card.result .share-buttons #save-result{grid-column:1/-1;grid-row:1;background:#dff18d;}
.card.result .share-buttons #copy-result{grid-column:auto;}
.card.result #share-result{background:#e4e9df;}
.card.result #share-status{font-size:12px;min-height:0;margin:6px 0;}
.card.result #share-status:empty{display:none;}
.card.result .music-credits{margin:7px 0;font-size:10px;}
.card.result #start{min-height:44px;padding:9px;margin-top:4px;font-size:15px;}
@media(max-width:430px){.card.result h2{font-size:22px;}}
@media(max-height:430px) and (orientation:landscape){
 .card.result{width:min(760px,calc(var(--visible-width,100vw) - 32px - var(--safe-left,0px) - var(--safe-right,0px)));display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 16px;align-items:start;}
 .card.result #result-brand{grid-column:1;grid-row:1;}
 .card.result #result-score-block{grid-column:1;grid-row:2;}
 .card.result h2{grid-column:1;grid-row:3;font-size:22px;}
 .card.result #card-subtitle{grid-column:1;grid-row:4;}
 .card.result #landing-preview{grid-column:2;grid-row:1/5;align-self:center;}
 .card.result #landing-preview canvas{max-height:calc(var(--visible-height,100dvh)*.48);}
 .card.result #card-text{grid-column:2;grid-row:5;}
 .card.result #share-actions{grid-column:1/-1;grid-row:6;}
 .card.result .share-buttons{grid-template-columns:1fr 1fr 1fr;}
 .card.result .share-buttons #save-result{grid-column:1;grid-row:1;}
 .card.result .share-buttons #share-result{grid-column:2;grid-row:1;}
 .card.result .share-buttons #copy-result{grid-column:3;grid-row:1;}
 .card.result .music-credits{grid-column:1;grid-row:7;align-self:center;}
 .card.result #start{grid-column:2;grid-row:7;}
}
