:root{color-scheme:light;--ink:#15363c;--yellow:#ffda66;--white:#fffdf4;--teal:#164b52;font-family:Inter,"Segoe UI","Microsoft YaHei",system-ui,sans-serif;color:var(--white)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#102d36}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0}button:focus-visible,a:focus-visible{outline:3px solid #fff;outline-offset:5px}button:disabled{cursor:wait;opacity:.75}[hidden]{display:none!important}svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}#game{position:relative;width:100%;height:100dvh;min-height:360px;overflow:hidden;isolation:isolate;touch-action:none;user-select:none}#scene,#scene canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#12374032 0%,transparent 30%,transparent 62%,#0a25289c 100%)}.topbar{position:absolute;top:max(24px,env(safe-area-inset-top));left:36px;right:36px;display:flex;justify-content:space-between;align-items:center;z-index:5}.brand{display:flex;gap:12px;align-items:center;color:inherit;text-decoration:none}.brand-mark{width:43px;height:43px;display:grid;place-content:center;position:relative;border:2px solid #fff8;font-size:24px;font-weight:950;font-style:italic;border-radius:12px;background:#1d4b5499;transform:rotate(-6deg)}.brand-mark span{position:absolute;font-size:18px;right:5px;bottom:1px;color:var(--yellow)}.brand-name{font-size:18px;font-weight:800;letter-spacing:2px;text-shadow:0 2px 10px #16434b66}.brand-name small{display:block;font-size:10px;letter-spacing:2px;font-weight:600;margin-top:3px}.top-actions{display:flex;gap:10px}.icon-button{width:44px;height:44px;border-radius:50%;color:var(--white);display:grid;place-items:center;background:#183c4a80;backdrop-filter:blur(12px);border:1px solid #ffffff38}.icon-button:hover{background:#183c4ab0}.start-screen{position:absolute;inset:0;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;padding:130px 8% 90px}.start-copy{max-width:600px}.eyebrow{font-size:12px;font-weight:750;letter-spacing:3px;display:flex;gap:10px;align-items:center}.eyebrow i{height:7px;width:7px;display:block;background:#ffda66;border-radius:50%}h1{margin:22px 0 22px;font-size:clamp(70px,8.5vw,138px);line-height:.97;letter-spacing:-6px;font-weight:950;text-shadow:0 5px 0 #164b523a,0 12px 32px #15455228;transform:skew(-6deg)}h1>span{color:var(--yellow);display:block}h1 em{display:block;font-style:normal;font-size:16px;letter-spacing:8px;line-height:2.4;padding-left:8px} .start-copy>p{font-size:16px;font-weight:550;letter-spacing:1px;margin-top:8px;text-shadow:0 2px 6px #163c55}.start-bottom{width:350px;max-width:100%;pointer-events:auto}.character-name{display:flex;gap:10px;align-items:center;margin-bottom:18px;font-size:15px;font-weight:750}.name-line{height:31px;width:3px;background:var(--yellow)}.character-name small{display:block;font-size:11px;letter-spacing:1px;opacity:.8;font-weight:450;margin-top:5px}.primary-button{min-height:61px;background:var(--yellow);color:#15363c;border-radius:17px;padding:16px 23px;display:flex;align-items:center;justify-content:space-between;width:100%;font-weight:900;font-size:20px;letter-spacing:1px;box-shadow:0 5px 0 #cf9e2f,0 10px 30px #102b4533;transition:transform .15s,filter .15s}.primary-button:hover{filter:brightness(1.07);transform:translateY(-2px)}.primary-button:active{transform:translateY(3px);box-shadow:0 2px 0 #cf9e2f}.gesture-guide{display:flex;justify-content:space-between;font-size:12px;margin-top:23px;gap:8px}.gesture-guide span{display:flex;align-items:center;gap:6px}.gesture-guide b{border:1px solid #ffffff50;border-radius:7px;padding:2px 6px;font-size:17px;line-height:22px;background:#14394260}.keyboard-hint{font-size:11px;opacity:.7;text-align:center;margin:13px 0 0}.game-footer{position:absolute;bottom:max(22px,env(safe-area-inset-bottom));left:36px;right:36px;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:2px;opacity:.85}.game-footer button{background:none;color:inherit;font-size:13px;letter-spacing:1px}.game-footer button span{font-size:18px;margin-left:8px}.hud{position:absolute;top:100px;left:36px;right:36px;display:flex;justify-content:space-between;pointer-events:none;text-shadow:0 3px 10px #102f4280}.hud-score>span{display:block;font-size:12px;letter-spacing:2px}.hud-score>strong{font-size:45px;line-height:1.25;letter-spacing:1px;font-variant-numeric:tabular-nums}.hud-side{text-align:right;display:flex;flex-direction:column;gap:8px}.coin-count{display:flex;align-items:center;justify-content:flex-end;gap:9px;font-size:26px;font-variant-numeric:tabular-nums}.coin-icon{height:28px;width:28px;display:grid;place-items:center;border:2px solid #fff3a9;border-radius:50%;background:#ffd158;color:#a87917;font-size:17px;font-style:normal;box-shadow:0 2px 0 #b98422;text-shadow:none}.distance{font-size:13px;letter-spacing:1px}.distance b{font-weight:600}.play-hint{position:absolute;left:50%;top:26%;transform:translateX(-50%);background:#15373dd9;padding:12px 20px;border:1px solid #ffffff26;border-radius:30px;font-size:14px;white-space:nowrap;box-shadow:0 5px 30px #13323725;pointer-events:none}.roof-badge{position:absolute;top:35%;left:50%;transform:translateX(-50%) rotate(-4deg);padding:8px 15px;border-radius:10px;color:#16434a;background:var(--yellow);font-size:15px;font-weight:850;box-shadow:0 4px 0 #d8a937;pointer-events:none}.touch-controls{position:absolute;bottom:max(25px,env(safe-area-inset-bottom));left:28px;right:28px;display:flex;justify-content:space-between;pointer-events:none}.touch-controls>div{display:flex;gap:10px;pointer-events:auto}.touch-controls button{width:52px;height:52px;border:1px solid #ffffff4a;background:#10313b73;backdrop-filter:blur(5px);border-radius:16px;color:#fff;font-size:27px;box-shadow:0 3px 0 #071e2d30}.touch-controls button:active{background:#ffffff65}.touch-controls .jump-control{color:var(--yellow);border-color:#ffda6680}.overlay{position:absolute;inset:0;z-index:10;background:#0e293c88;backdrop-filter:blur(9px);display:grid;place-items:center;padding:22px}.modal{background:#f8f8ee;color:var(--ink);border-radius:28px;max-width:380px;width:100%;padding:35px 29px 23px;text-align:center;box-shadow:0 25px 100px #061d3866;border:1px solid white}.modal .eyebrow{justify-content:center;color:#628182;font-size:11px}.modal h2{font-size:29px;letter-spacing:-1px;margin:16px 0 10px;font-weight:950}.modal p{font-size:14px;line-height:1.6;color:#5b7375;margin-bottom:28px}.modal .primary-button{font-size:18px;min-height:57px}.text-button{display:block;padding:18px 0 0;width:100%;font-size:14px;color:#4f6d71;background:none}.result-score{background:#e9eee5;border-radius:17px;padding:16px;margin:20px 0}.result-score>span{display:block;font-size:12px;letter-spacing:2px;color:#607778}.result-score strong{font-size:56px;line-height:1.2;font-weight:900;font-variant-numeric:tabular-nums}.result-details{display:flex;justify-content:space-between;font-size:12px;margin:20px 0 28px;color:#667f80}.result-details b{display:block;color:#183b41;font-size:24px;margin-bottom:5px}.toast{position:absolute;z-index:30;bottom:120px;left:50%;transform:translateX(-50%);max-width:85%;width:max-content;background:#102e39ee;padding:13px 20px;border-radius:12px;text-align:center;font-size:14px;line-height:1.6}.flash{position:absolute;inset:0;z-index:8;background:#ff714f;opacity:0;pointer-events:none}.flash.hit{animation:hit .4s ease-out}@keyframes hit{from{opacity:.7}to{opacity:0}}body.playing .brand-name{display:none}body.playing .vignette{background:linear-gradient(180deg,#0a324959,transparent 24%,transparent 75%,#10273c75)}
@media(min-width:1000px){.start-screen{padding-left:10%;padding-top:130px}.start-bottom{margin-top:20px}.touch-controls{left:calc(50% - 200px);right:calc(50% - 200px)}}
@media(max-width:600px){.topbar{top:max(18px,env(safe-area-inset-top));left:20px;right:20px}.brand-mark{width:36px;height:36px;font-size:21px;border-radius:10px}.brand-name{font-size:15px;letter-spacing:1px}.brand-name small{font-size:8px;letter-spacing:1.5px}.icon-button{width:39px;height:39px}.start-screen{padding:100px 25px 68px;justify-content:space-between}.eyebrow{font-size:10px;letter-spacing:2px}h1{font-size:76px;line-height:1;letter-spacing:-5px;margin:15px 0 8px}h1>span{display:inline}h1 em{font-size:11px;letter-spacing:7px;line-height:2.5}.start-copy>p{font-size:12px;margin:0;letter-spacing:.4px}.start-bottom{width:100%}.character-name{font-size:13px;margin-bottom:13px}.character-name small{font-size:10px}.primary-button{min-height:56px;font-size:18px;border-radius:14px}.gesture-guide{margin-top:19px;font-size:11px;justify-content:center;gap:18px}.gesture-guide b{font-size:16px;padding:1px 5px}.keyboard-hint{display:none}.game-footer{left:25px;right:25px;bottom:max(18px,env(safe-area-inset-bottom));font-size:8px;letter-spacing:1.3px}.game-footer button{font-size:12px}.hud{left:22px;right:22px;top:78px}.hud-score>strong{font-size:38px}.touch-controls{left:20px;right:20px}.touch-controls button{width:48px;height:48px}.play-hint{top:24%;font-size:12px;padding:10px 16px}.roof-badge{top:32%;font-size:13px}.modal{padding:28px 25px 18px}.modal h2{font-size:27px}}
@media(max-height:650px) and (max-width:600px){.start-screen{padding-top:80px;padding-bottom:58px}h1{font-size:58px;margin:10px 0 4px}.start-copy>p{display:none}.character-name{margin-bottom:9px}.gesture-guide{margin-top:15px}.game-footer{bottom:12px}.modal{padding:20px}.modal p{margin-bottom:15px}.result-score{padding:10px;margin:12px 0}.result-score strong{font-size:42px}.result-details{margin:12px 0 18px}}
@media(max-height:500px) and (min-width:600px){.start-screen{padding:78px 6% 48px;flex-direction:row;align-items:center}.start-copy h1{font-size:67px;margin:12px 0}.start-copy>p{display:none}.start-bottom{width:290px;align-self:flex-end}.character-name{display:none}.keyboard-hint{display:none}.hud{top:74px}.modal{padding:18px 25px}.result-score{margin:10px 0;padding:8px}.result-score strong{font-size:34px}.result-details{margin:10px 0}.modal p{margin:5px 0 10px}.modal h2{font-size:24px;margin:8px 0}.modal .primary-button{min-height:45px;padding:9px 15px}}
@media(max-width:360px){h1{font-size:61px}.gesture-guide{gap:10px}.touch-controls{left:14px;right:14px}.touch-controls button{width:44px;height:46px}.touch-controls>div{gap:7px}}
