@font-face{font-family:Barlow;src:url('./fonts/Barlow-SemiBold.ttf') format('truetype');font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:BarlowCondensed;src:url('./fonts/BarlowCondensed-ExtraBoldItalic.ttf') format('truetype');font-weight:800;font-style:italic;font-display:swap}
:root{--ink:#07355d;--blue:#0968e6;--yellow:#e0fa44;--paper:#faffef;--display:BarlowCondensed,Impact,'Arial Narrow',sans-serif;--body:Barlow,'PingFang SC','Microsoft YaHei',sans-serif;--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font-family:var(--body);color:var(--ink);background:#82d0ed;touch-action:none;-webkit-tap-highlight-color:transparent}button,a,input,select{touch-action:manipulation}button,a{-webkit-user-select:none;user-select:none}button{font:inherit;color:inherit;cursor:pointer;border:0}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #ffb12b;outline-offset:5px}button,svg{flex-shrink:0}svg{height:22px;width:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}a{color:inherit;text-decoration:none}button{background:none}button:hover{filter:brightness(1.04)}[hidden]{display:none!important}#world{position:fixed;inset:0;width:100%;height:100%;outline:none}#scene-vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(242,251,233,.94) 0%,rgba(241,250,229,.87) 23%,rgba(226,249,233,.18) 53%,transparent 80%),linear-gradient(0deg,rgba(247,251,238,1) 0%,rgba(247,251,238,.7) 8%,transparent 34%);transition:opacity .5s}.topbar{position:fixed;z-index:10;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;padding:28px 4%;pointer-events:none}.topbar>*{pointer-events:auto}.arcade-mark{display:flex;align-items:center;gap:11px;font-size:14px;letter-spacing:1.6px;font-weight:800}.arcade-mark b{font-size:8px;display:block;letter-spacing:2.8px;margin-top:4px}.mark-symbol{display:grid;place-items:center;width:36px;height:39px;border-radius:7px;background:var(--ink);color:var(--paper);font-size:29px;font-style:italic;position:relative;transform:skew(-7deg);padding-left:3px}.mark-symbol span{position:absolute;right:-7px;top:-10px;font-size:24px;color:var(--blue)}.header-center{font-size:10px;font-weight:700;letter-spacing:2.8px;display:flex;align-items:center;gap:10px}.header-center i{width:6px;height:6px;background:var(--blue);border-radius:50%}.top-actions{display:flex;gap:9px}.icon-button{display:grid;place-items:center;width:41px;height:41px;border:1px solid #07355d25;border-radius:50%;background:#faffef60;backdrop-filter:blur(12px);transition:background .2s,transform .2s}.icon-button:hover{background:var(--paper);transform:translateY(-2px)}.icon-button svg{width:18px;height:18px}#pause-button{display:none}.screen{position:fixed;inset:0;z-index:3}.home{pointer-events:none}.home button,.home a{pointer-events:auto}.home-copy{position:absolute;top:16%;left:7%;width:42%;max-width:530px}.eyebrow{display:flex;align-items:center;gap:13px;font-size:9px;font-weight:800;letter-spacing:1.55px}.yellow-tag{background:var(--yellow);padding:7px 9px;transform:rotate(-2deg);letter-spacing:1.15px;box-shadow:2px 2px 0 #07355d}h1{margin:21px 0 0;display:flex;flex-direction:column;line-height:.81;letter-spacing:-3px;font-style:italic}.sonic-title{font-family:var(--display);font-size:clamp(100px,10.8vw,180px);color:var(--blue);display:block;text-shadow:3px 4px 0 var(--paper),6px 7px 0 #063e82;position:relative;width:fit-content;transform:skew(-3deg)}.title-star{font-size:28px;position:absolute;right:-28px;top:6px;color:var(--blue);text-shadow:none}.horizon-title{font-family:var(--display);font-size:clamp(29px,3.9vw,61px);letter-spacing:1.1px;line-height:1.25;margin:14px 0 2px;padding-left:3px}.home h2{font-size:clamp(20px,2.1vw,30px);letter-spacing:2px;margin:15px 0 12px;font-weight:900}.intro{font-size:13px;line-height:1.9;letter-spacing:.9px;margin:0 0 21px;color:#325971}.mode-toggle{display:flex;gap:3px;margin:0 0 12px;width:330px;background:#07355d0b;border:1px solid #07355d15;border-radius:8px;padding:4px}.mode-toggle button{border-radius:5px;padding:9px 13px;flex:1;font-size:12px;white-space:nowrap;font-weight:700}.mode-toggle button span{font-size:8px;letter-spacing:.8px;opacity:.6;margin-left:6px}.mode-toggle button.selected{background:#fffbed;box-shadow:0 2px 5px #07355d10}.start-button{display:flex;align-items:center;gap:17px;background:var(--blue);color:white;border-radius:8px;width:330px;padding:15px 18px 15px 14px;box-shadow:0 5px 0 #074a9f,0 12px 28px #0064ff20;text-align:left;transition:transform .2s,box-shadow .2s}.start-button:hover{transform:translateY(-3px);box-shadow:0 8px 0 #074a9f,0 16px 30px #0064ff30}.start-button:active{transform:translateY(3px);box-shadow:0 2px 0 #074a9f}.start-arrow{display:grid;place-items:center;background:var(--yellow);color:var(--ink);width:42px;height:42px;border-radius:50%;transform:rotate(-5deg)}.start-arrow svg{width:19px;height:19px;fill:currentColor;stroke:none;margin-left:2px}.start-button>span:nth-child(2){font-size:20px;font-weight:800;letter-spacing:2px}.start-button small{display:block;font-size:8px;letter-spacing:1.4px;opacity:.7;margin-top:6px}.start-button kbd{margin-left:auto;background:#fff2;border:1px solid #fff4;color:white}.home-links{display:flex;align-items:center;gap:14px;margin-top:21px}.home-links button{display:flex;align-items:center;gap:6px;padding:0;font-size:11px;color:#326080}.home-links button:hover{color:var(--blue)}.home-links svg{width:15px;height:15px}.home-links>span{height:11px;width:1px;background:#07355d25}.hero-caption{position:absolute;right:7%;top:21%;display:flex;align-items:center;gap:12px;transform:rotate(-4deg);color:white;text-shadow:0 1px 8px #07355d55}.hero-caption b{display:block;font-size:13px;letter-spacing:1.5px}.hero-caption small{display:block;font-size:10px;letter-spacing:.5px;margin-top:6px}.hero-line{width:32px;height:2px;background:var(--yellow)}.hero-number{font-family:var(--display);font-style:italic;font-size:48px;opacity:.4;margin-left:15px}.character-chip{position:absolute;right:8%;top:66%;display:flex;gap:13px;align-items:center;background:#faffefd9;padding:11px 16px;border:1px solid #fff9;border-radius:9px;backdrop-filter:blur(12px);box-shadow:0 8px 30px #13445b16;transform:rotate(-3deg)}.character-chip>span:nth-child(2){font-size:9px;color:#507482;letter-spacing:1px;text-align:left}.character-chip strong{display:block;margin-top:3px;font-size:14px;color:var(--ink)}.character-chip svg{width:17px;margin-left:10px}.mini-ring,.ring-symbol{display:block;border-radius:50%;border:6px solid #ffd94f;box-shadow:inset 1px 1px 1px #9f681c,1px 1px 0 #a47419,0 0 0 1px #fffaa2;width:32px;height:32px;transform:rotate(-15deg)}.zone-strip{position:absolute;bottom:76px;left:7%;right:7%;display:flex;align-items:center;gap:35px}.zone-strip-label{width:190px;flex-shrink:0}.zone-strip-label span{display:block;font-size:9px;letter-spacing:1.5px;opacity:.6}.zone-strip-label b{font-size:12px;display:block;letter-spacing:1px;margin-top:8px}.zone-cards{display:flex;gap:12px;flex:1}.zone-card{display:flex;align-items:center;gap:12px;border:1px solid #07355d25;border-radius:8px;background:#faffef90;padding:9px;flex:1;text-align:left;min-width:0;transition:transform .2s,background .2s,box-shadow .2s}.zone-card.selected{background:#fffef5;border-color:var(--blue);box-shadow:0 3px 0 var(--blue)}.zone-card:hover{transform:translateY(-4px);background:#fffef5}.zone-card small{font-size:8px;font-weight:800;letter-spacing:.6px;white-space:nowrap;opacity:.65}.zone-card b{display:block;font-size:13px;letter-spacing:1px;margin-top:5px;white-space:nowrap}.zone-dot{width:5px;height:5px;border-radius:50%;border:1px solid #07355d77;margin-left:auto;margin-right:3px}.selected .zone-dot{border-color:var(--blue);background:var(--blue)}.zone-mini{position:relative;width:56px;height:53px;border-radius:4px;overflow:hidden;display:block;flex-shrink:0;background:linear-gradient(#64cdec 60%,#1573aa 60%)}.zone-mini i{position:absolute;bottom:-9px;left:-7px;width:80px;height:34px;background:#69b72c;transform:rotate(-17deg);border-top:7px solid #9bea46}.zone-mini em{position:absolute;color:#ffe350;font-style:normal;font-size:41px;top:-3px;right:1px}.zone-mini.ruins{background:linear-gradient(#eca88c 60%,#706582 60%)}.ruins i{background:#af785a;border-top-color:#d6af77}.zone-mini.city{background:linear-gradient(#253953,#33617e)}.city i{background:repeating-linear-gradient(90deg,#315175 0 13px,#68cbe1 14px 16px);height:36px;border-top:0;bottom:-3px;transform:skewY(-13deg)}.city em{font-size:22px;color:#b7edff;top:1px;right:7px}.home-footer{position:absolute;bottom:23px;left:4%;right:4%;display:flex;justify-content:space-between;align-items:center;font-size:8px;letter-spacing:1.5px;color:#32597190}.home-footer>span:nth-child(2){letter-spacing:.6px}.home-footer i{font-style:normal;margin:0 6px}
.boot{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f5f9e8;gap:14px;transition:opacity .45s}.boot.done{opacity:0;pointer-events:none}.boot strong{font-size:19px;letter-spacing:2px;margin-top:24px}.boot>span{font-size:12px;opacity:.6}.boot-ring{width:70px;height:70px;border:12px solid #ffd941;border-radius:50%;box-shadow:inset 0 2px 0 #a57818,0 3px 0 #a57818;animation:spin-ring 1.4s infinite ease-in-out}.boot-track{width:160px;height:3px;background:#07355d15;margin-top:12px;overflow:hidden}.boot-track i{display:block;width:50%;height:100%;background:var(--blue);animation:loading 1s ease-in-out infinite alternate}@keyframes spin-ring{50%{transform:rotateY(180deg) rotateZ(-8deg)}}@keyframes loading{to{transform:translateX(100%)}}
body[data-screen="playing"] #scene-vignette,body[data-screen="paused"] #scene-vignette,body[data-screen="over"] #scene-vignette{opacity:0}body:not([data-screen="home"]) .header-center,body:not([data-screen="home"]) #settings-button{display:none}body:not([data-screen="home"]) .arcade-mark{opacity:.9;color:#fff;text-shadow:0 2px 10px #03325c50}body:not([data-screen="home"]) .topbar{padding-top:20px}body:not([data-screen="home"]) .mark-symbol{background:#fff2}body:not([data-screen="home"]) .mark-symbol span{color:var(--yellow)}body:not([data-screen="home"]) .top-actions{color:white}body:not([data-screen="home"]) .icon-button{border-color:#fff5;background:#07355d30}body[data-screen="playing"] #pause-button{display:grid}.hud{pointer-events:none;color:white;text-shadow:0 2px 10px #06305240}.hud button{pointer-events:auto}.hud-top{position:absolute;top:82px;left:4%;right:4%;display:flex;align-items:center;gap:36px}.hud-rings{display:flex;gap:15px;align-items:center}.ring-symbol{width:38px;height:44px;border-width:8px}.hud-rings small{font-size:9px;letter-spacing:2.8px;display:block;color:#fff8}.hud-rings strong{font-family:var(--display);font-style:italic;font-size:48px;line-height:1.05;font-variant-numeric:tabular-nums}.hud-score span{font-family:var(--display);font-style:italic;font-size:34px;letter-spacing:1.2px;font-variant-numeric:tabular-nums}.hud-score small{display:block;font-size:9px;letter-spacing:2px}.hud-score b{color:var(--yellow);font-size:12px;margin-left:10px}.hud-distance{margin-left:auto;text-align:right}.hud-distance strong{font-family:var(--display);font-style:italic;font-size:48px}.hud-distance>span{font-size:11px;margin-left:6px}.hud-distance small{display:block;font-size:10px;letter-spacing:2px;opacity:.65}.stage-progress{position:absolute;left:50%;top:33px;transform:translateX(-50%);width:260px}.stage-progress>div:first-child{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1px}.stage-progress>div:first-child>span:last-child{opacity:.55;font-size:9px}.progress-rail{margin-top:10px;height:3px;background:#fff3}.progress-rail i{display:block;height:100%;background:var(--yellow);width:0;box-shadow:0 0 10px #e0fa4470;transition:width .2s}.combo{position:absolute;right:7%;top:36%;transform:rotate(-9deg) scale(.8);opacity:0;transition:opacity .15s,transform .15s;text-align:center;color:var(--yellow)}.combo.visible{opacity:1;transform:rotate(-9deg) scale(1)}.combo strong{font-family:var(--display);font-style:italic;font-size:72px;display:block;line-height:.9;text-shadow:3px 3px 0 var(--blue)}.combo span{font-size:11px;letter-spacing:2px;font-weight:800}.power-list{position:absolute;top:178px;left:4%;display:flex;gap:8px}.power-chip{display:flex;align-items:center;gap:6px;font-size:10px;padding:7px 12px;background:#123e6099;border:1px solid #fff3;border-radius:20px;backdrop-filter:blur(12px)}.power-chip svg{width:15px;height:15px;color:var(--yellow)}.dash-area{position:absolute;left:50%;bottom:64px;transform:translateX(-50%);width:290px}.dash-button{width:100%;display:flex;align-items:center;gap:13px;padding:12px 16px;border:1px solid #ffffff55;background:#07355d9c;backdrop-filter:blur(15px);color:white;border-radius:8px 8px 0 0;text-align:left}.dash-button>svg{width:29px;height:29px;fill:var(--yellow);stroke:var(--yellow)}.dash-button span{font-weight:800;letter-spacing:1px;font-size:13px}.dash-button small{display:block;font-size:8px;font-weight:400;letter-spacing:.7px;color:#fff8;margin-top:4px}.dash-button kbd{margin-left:auto;color:#fff9;border-color:#fff3;font-size:8px;background:#ffffff15}.dash-button.ready{background:var(--yellow);color:var(--ink);box-shadow:0 0 35px #dffa4560}.dash-button.ready>svg{fill:var(--blue);stroke:var(--blue)}.dash-button.ready small,.dash-button.ready kbd{color:var(--ink)}.dash-button.ready kbd{border-color:#07355d40}.dash-meter{height:6px;background:#07355d66;border-radius:0 0 4px 4px;position:relative}.dash-meter i{position:absolute;top:0;left:0;bottom:0;background:var(--yellow);border-radius:0 0 4px 4px;transition:width .1s}.dash-meter span{position:absolute;right:0;bottom:-18px;font-size:8px;letter-spacing:1px;opacity:.6}.keyboard-hint{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);font-size:9px;white-space:nowrap;color:#fffb}.keyboard-hint kbd{margin:0 3px 0 8px;border-color:#fff4;background:#07355d22;color:white}kbd{display:inline-grid;place-items:center;min-width:23px;height:22px;padding:0 5px;border:1px solid #07355d28;background:#07355d08;border-radius:4px;font:11px var(--body);box-shadow:0 2px 0 #07355d12}.speedometer{position:absolute;right:4%;bottom:71px;text-align:right}.speedometer strong{font-family:var(--display);font-style:italic;font-size:44px;display:block;line-height:1}.speedometer>span{font-size:8px;letter-spacing:2px;opacity:.65}.speedometer>div{display:flex;gap:3px;margin-top:8px}.speedometer i{display:block;width:5px;height:12px;transform:skew(-20deg);background:#fff7}.speedometer i:nth-last-child(-n+3){background:var(--yellow)}.boss-hud{position:absolute;top:90px;left:50%;width:300px;transform:translateX(-50%);padding:10px 14px;background:#b21d4090;border:1px solid #ff727280;border-radius:6px;font-size:12px;font-weight:800;letter-spacing:1px}.boss-hud b{font-size:9px;font-weight:400;letter-spacing:.4px;float:right;margin-top:2px}.boss-hud>div{display:flex;gap:4px;margin-top:7px}.boss-hud i{height:5px;flex:1;background:#ffeba2;transition:opacity .2s}.boss-hud i.hit{opacity:.12}
.toast{position:fixed;z-index:35;top:20%;left:50%;transform:translate(-50%,-10px);background:#07355def;border:1px solid #fff5;color:#fff;padding:11px 22px;border-radius:8px;font-size:13px;font-weight:700;letter-spacing:.7px;text-align:center;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90vw;box-shadow:0 8px 30px #07355d20}.toast.show{opacity:1;transform:translate(-50%,0)}.tutorial-hint{position:fixed;z-index:6;left:50%;bottom:27%;transform:translate(-50%,10px);opacity:0;pointer-events:none;display:flex;align-items:center;gap:13px;color:white;background:#07355de0;border:1px solid #fff4;border-radius:10px;padding:13px 22px;transition:opacity .2s,transform .2s;box-shadow:0 10px 20px #07355d22;white-space:nowrap}.tutorial-hint.show{opacity:1;transform:translate(-50%,0)}.tutorial-hint>span{display:grid;place-items:center;width:39px;height:39px;background:var(--yellow);border-radius:7px;color:var(--ink);font-size:23px}.tutorial-hint b{font-size:14px;letter-spacing:1px}.tutorial-hint small{display:block;font-size:10px;color:#fffa;margin-top:5px}.countdown{position:fixed;inset:0;z-index:25;display:grid;place-items:center;color:var(--yellow);font:italic 180px var(--display);text-shadow:5px 5px 0 #0650a5;pointer-events:none;background:#07355d18}.zone-announcement{position:fixed;inset:33% 0 auto;z-index:25;text-align:center;pointer-events:none;transform:rotate(-5deg);color:white;text-shadow:3px 4px 0 #07355d80;animation:zone-enter .5s cubic-bezier(.1,.8,.3,1)}.zone-announcement small{display:block;font-size:14px;letter-spacing:5px;color:var(--yellow);margin-bottom:12px}.zone-announcement strong{font-size:58px;font-weight:900;letter-spacing:9px}.zone-announcement>span{display:block;font:italic 24px var(--display);letter-spacing:4px;margin-top:12px}@keyframes zone-enter{from{opacity:0;transform:translateX(-60px) rotate(-5deg)}to{opacity:1;transform:translateX(0) rotate(-5deg)}}.touch-controls{display:none}.touch-controls button{width:52px;height:52px;display:grid;place-items:center;border:1px solid #fff6;border-radius:50%;background:#07355d60;backdrop-filter:blur(8px);color:white}.touch-controls button:active{background:#e0fa44;color:var(--ink)}
dialog{color:var(--ink);padding:0;border:1px solid #fff9;border-radius:18px;background:#f8fbee;width:min(570px,calc(100vw - 32px));max-height:calc(100dvh - 40px);box-shadow:0 30px 100px #06234244;overflow:auto;overscroll-behavior:contain;touch-action:pan-y}dialog::backdrop{background:#062c5966;backdrop-filter:blur(9px)}#modal-content{padding:42px 40px 36px}.modal-close{position:absolute;top:13px;right:13px;width:31px;height:31px;backdrop-filter:none;background:#07355d06}.modal-close svg{width:16px;height:16px}.modal-eyebrow{font-size:10px;letter-spacing:2px;color:var(--blue);font-weight:800;margin:0 0 10px}.modal-title{font-size:30px;letter-spacing:1px;margin:0 0 13px;font-weight:900}.modal-subtitle{font-size:12px;line-height:1.85;color:#507082;margin:0 0 22px}.modal-big-title{font:italic 68px/.9 var(--display);color:var(--blue);margin:14px 0 15px;letter-spacing:-1px}.primary-button,.secondary-button{display:flex;align-items:center;justify-content:center;gap:10px;border-radius:7px;padding:14px 20px;width:100%;font-size:14px;font-weight:800;letter-spacing:1px}.primary-button{background:var(--blue);color:#fff;box-shadow:0 4px 0 #06448c;margin:8px 0 14px}.secondary-button{background:#07355d09;border:1px solid #07355d18;margin-top:10px}.modal-actions{display:flex;gap:10px}.modal-actions>*{flex:1}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:21px 0}.guide-item{background:#fff9;border:1px solid #07355d15;border-radius:8px;padding:15px}.guide-item>div{display:flex;gap:4px;margin-bottom:10px}.guide-item b{font-size:12px;display:block;letter-spacing:.5px}.guide-item p{font-size:10px;color:#507082;line-height:1.7;margin:5px 0 0}.guide-note{padding:13px 15px;background:#e0fa4444;border-left:3px solid #98b313;font-size:11px;line-height:1.85;margin-bottom:20px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 0;border-bottom:1px solid #07355d12}.setting-row b{font-size:13px}.setting-row small{display:block;color:#5c7c8a;font-size:10px;margin-top:5px}.setting-row select{background:white;border:1px solid #07355d28;border-radius:5px;padding:8px 10px;color:var(--ink);font:12px var(--body)}.switch{appearance:none;-webkit-appearance:none;width:42px;height:24px;background:#adbfbc;border-radius:12px;position:relative;cursor:pointer;flex-shrink:0}.switch:after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:white;transition:transform .2s}.switch:checked{background:var(--blue)}.switch:checked:after{transform:translateX(18px)}.setting-foot{font-size:10px;color:#60808e;margin-top:20px;line-height:1.8}.character-list{display:flex;flex-direction:column;gap:10px}.character-option{display:flex;align-items:center;gap:17px;padding:16px;text-align:left;border:1px solid #07355d20;border-radius:8px;background:white}.character-option.selected{border:2px solid var(--blue);padding:15px}.character-option.locked{opacity:.65}.character-avatar{width:51px;height:51px;background:var(--char);border-radius:50%;display:grid;place-items:center;color:white;font:italic 35px var(--display);box-shadow:inset 0 -6px 0 #0001;transform:rotate(-8deg)}.character-option b{display:block;font-size:15px}.character-option small{font-size:10px;display:block;color:#668593;margin-top:6px}.character-option em{font-size:9px;font-style:normal;margin-left:auto;max-width:85px;text-align:right;line-height:1.7}.wallet{display:flex;align-items:center;justify-content:space-between;font-size:12px;padding:12px 0;margin-bottom:8px;border-bottom:1px solid #07355d18}.wallet strong{color:var(--blue);font-size:20px}.mission-list{display:flex;flex-direction:column;gap:9px}.mission-item{display:flex;align-items:center;gap:13px;background:#fff9;border:1px solid #07355d12;padding:13px;border-radius:7px}.mission-item>svg{width:29px;height:29px;color:#8ba69f}.mission-item.earned>svg{color:#dc9b15;fill:#ffdb4433}.mission-item b{font-size:12px}.mission-item small{display:block;font-size:10px;margin-top:5px;color:#668593}.mission-item>span:last-child{margin-left:auto;font-size:9px;color:#789085}.mission-item.earned>span:last-child{color:#478126}.record-row{display:grid;grid-template-columns:35px 1fr auto;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid #07355d15}.record-row>b{font:italic 28px var(--display);color:#849999}.record-row:first-of-type>b{color:#d3a116}.record-row strong{font:italic 26px var(--display);color:var(--blue)}.record-row small{display:block;font-size:9px;color:#648391;margin-top:3px}.record-row>span:last-child{font-size:12px}.empty-record{text-align:center;padding:25px 0;color:#557989;font-size:13px;line-height:2}.result-rank{position:absolute;right:48px;top:49px;font:italic 76px var(--display);color:#e4b631;transform:rotate(10deg);text-shadow:2px 2px 0 #fff,3px 3px 0 #987721}.result-hero{text-align:center;margin:23px 0 8px}.result-hero>small{font-size:10px;letter-spacing:3px;color:#6b8895}.result-hero>strong{display:block;font:italic 76px/1.15 var(--display);color:var(--blue);font-variant-numeric:tabular-nums}.new-best{display:inline-block;background:var(--yellow);font-size:9px;letter-spacing:2px;padding:5px 9px;transform:rotate(-3deg)}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:22px 0;background:#fff8;border:1px solid #07355d13;border-radius:8px;padding:15px 8px}.result-stats>div{text-align:center;border-right:1px solid #07355d15}.result-stats>div:last-child{border-right:0}.result-stats b{display:block;font:italic 28px var(--display)}.result-stats small{font-size:9px;color:#6b8895}.result-meta{display:flex;justify-content:center;gap:16px;font-size:10px;color:#557684;margin:-8px 0 19px}.medal-earned{font-size:11px;text-align:center;color:#906700;margin:12px 0;padding:9px;background:#ffe78944;border-radius:5px}.result-footer{font-size:9px;text-align:center;color:#648391;line-height:1.8;margin:18px 0 0}.pause-stats{font-size:13px;color:#5d7c8b;margin:20px 0}.error-panel{position:fixed;z-index:80;inset:0;background:#f5f9e8;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center}.error-panel>span{font:italic 24px var(--display);color:var(--blue)}.error-panel h2{font-size:26px;margin:16px 0}.error-panel p{max-width:380px;line-height:1.8;font-size:13px}.error-panel button{width:240px;margin:18px}.error-panel a{font-size:12px;text-decoration:underline}#impact-flash{position:fixed;inset:0;background:#ff435450;opacity:0;z-index:5;pointer-events:none;transition:opacity .12s}#impact-flash.active{opacity:1}#speed-lines{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:0;background:repeating-conic-gradient(from 15deg at 50% 42%,transparent 0deg 12deg,#e6fcff99 12.1deg 12.3deg,transparent 12.5deg 25deg);mask-image:radial-gradient(ellipse,transparent 30%,#000a 110%);transition:opacity .35s}body.dashing #speed-lines{opacity:.5}body.reduce-motion #speed-lines{display:none}body.reduce-motion *{animation:none!important;scroll-behavior:auto!important}
@media(min-width:1500px){.home-copy{top:17%}.intro{font-size:15px}.mode-toggle{margin-top:25px}.zone-strip{bottom:92px}.zone-mini{width:70px;height:61px}.zone-card{padding:12px;gap:18px}.zone-card b{font-size:15px}.zone-card small{font-size:9px}.zone-strip-label{width:230px}.home-links{margin-top:27px}}
@media(max-height:800px) and (min-width:901px){.home-copy{top:14%}.sonic-title{font-size:120px}.horizon-title{font-size:42px}.home h2{margin:9px 0}.intro{margin-bottom:13px;font-size:12px}.eyebrow{font-size:8px}h1{margin-top:16px}.start-button{padding:11px 14px}.home-links{margin-top:16px}.zone-strip{bottom:59px}.zone-mini{height:45px;width:48px}.home-footer{bottom:18px}.hero-caption{top:20%}}
@media(max-width:1100px){.zone-strip{gap:20px;left:5%;right:5%}.zone-strip-label{width:140px}.zone-strip-label span{font-size:8px;letter-spacing:.8px}.zone-strip-label b{font-size:10px}.zone-card{gap:8px}.zone-card small{font-size:7px}.zone-card b{font-size:12px}.home-copy{left:6%}.hero-caption{right:5%}.hero-caption b{font-size:10px}.hero-caption small{font-size:8px}.hero-number{font-size:37px}.home-footer{font-size:7px;letter-spacing:.8px}}
@media(max-width:900px){.header-center{display:none}.topbar{padding:20px 5%}.home-copy{top:14%;width:52%}.sonic-title{font-size:125px}.horizon-title{font-size:42px}.home h2{font-size:22px}.zone-strip{bottom:57px;display:block}.zone-strip-label{width:auto;display:flex;justify-content:space-between;margin-bottom:12px}.zone-strip-label b{margin:0}.zone-cards{gap:8px}.zone-mini{width:41px;height:45px}.zone-card{padding:8px}.zone-dot{display:none}.hero-caption{top:19%;right:4%;max-width:32%;gap:8px}.hero-line{width:15px}.hero-number{display:none}.character-chip{right:5%;top:67%}.home-footer>span:first-child{display:none}.home-footer{bottom:17px}.hero-caption b{line-height:1.5}.stage-progress{width:190px}.hud-top{gap:23px}.hud-score span{font-size:28px}}
@media(max-width:600px){.topbar{padding:17px 5%;padding-top:max(17px,env(safe-area-inset-top))}.arcade-mark{font-size:11px;gap:9px}.arcade-mark b{font-size:6px;letter-spacing:2.1px}.mark-symbol{width:29px;height:32px;font-size:24px}.mark-symbol span{font-size:20px}.top-actions{gap:7px}.icon-button{width:34px;height:34px}.icon-button svg{width:16px;height:16px}#fullscreen-button{display:none}.home-copy{top:12%;left:6%;width:75%;max-width:none}.eyebrow{font-size:7px;gap:10px;letter-spacing:.9px}.yellow-tag{padding:5px 7px}.sonic-title{font-size:100px;text-shadow:2px 3px 0 var(--paper),4px 5px 0 #063e82}.horizon-title{font-size:32px;letter-spacing:1px;margin-top:11px}.title-star{font-size:19px;right:-18px}h1{margin-top:20px}.home h2{font-size:18px;margin:10px 0 8px;letter-spacing:1.5px}.intro{font-size:10px;line-height:1.75;margin-bottom:13px;letter-spacing:.5px}.mode-toggle{width:230px;padding:3px;margin-bottom:9px}.mode-toggle button{font-size:10px;padding:8px 7px}.mode-toggle button span{font-size:7px;margin-left:4px}.start-button{width:245px;padding:10px 13px;gap:12px;box-shadow:0 4px 0 #074a9f}.start-arrow{width:32px;height:32px}.start-arrow svg{width:14px;height:14px}.start-button>span:nth-child(2){font-size:16px;letter-spacing:1px}.start-button small{font-size:6px;letter-spacing:1px;margin-top:4px}.start-button kbd{display:none}.home-links{gap:10px;margin-top:17px}.home-links button{font-size:9px;gap:4px}.home-links svg{width:12px;height:12px}.hero-caption{top:51%;right:4%;max-width:145px;gap:5px}.hero-caption b{font-size:8px}.hero-caption small{font-size:7px;max-width:125px;line-height:1.5}.hero-line{width:12px}.character-chip{top:auto;bottom:calc(175px + var(--safe-bottom));right:5%;padding:7px 10px;gap:8px;border-radius:7px}.character-chip .mini-ring{width:22px;height:22px;border-width:4px}.character-chip>span:nth-child(2){font-size:7px}.character-chip strong{font-size:11px}.character-chip svg{width:14px;margin-left:3px}#scene-vignette{background:linear-gradient(90deg,#f2fbeef2 0%,#f1faeac9 27%,#e2f9e922 73%,transparent),linear-gradient(0deg,#f7fbee 0%,#f7fbeeba 18%,transparent 45%)}.zone-strip{left:5%;right:5%;bottom:calc(47px + var(--safe-bottom))}.zone-strip-label{margin-bottom:9px}.zone-strip-label span{font-size:7px;letter-spacing:1px}.zone-strip-label b{font-size:9px;letter-spacing:.4px}.zone-cards{gap:7px}.zone-card{display:block;padding:7px 8px}.zone-mini{width:100%;height:26px;margin-bottom:7px}.zone-mini i{height:25px;width:150px;bottom:-20px;left:-15px;border-top-width:4px}.zone-mini em{font-size:24px;top:-5px;right:8px}.zone-card small{font-size:5.8px;letter-spacing:.1px;white-space:nowrap}.zone-card b{font-size:10px;margin-top:4px;letter-spacing:.5px}.home-footer{bottom:calc(17px + var(--safe-bottom));left:5%;right:5%;font-size:6px;letter-spacing:.3px}.home-footer i{margin:0 3px}.home-footer>span:last-child{display:none}.hud-top{top:82px;left:5%;right:5%;gap:18px}.hud-rings{gap:10px}.ring-symbol{width:27px;height:33px;border-width:6px}.hud-rings strong{font-size:37px}.hud-rings small{font-size:7px;letter-spacing:2px}.hud-score span{font-size:25px}.hud-score small{font-size:7px}.hud-score b{font-size:10px;margin-left:6px}.hud-distance strong{font-size:37px}.hud-distance>span{font-size:9px}.hud-distance small{font-size:8px}.stage-progress{top:151px;width:180px}.stage-progress>div:first-child{font-size:8px}.stage-progress>div:first-child>span:last-child{font-size:7px}.progress-rail{margin-top:7px}.power-list{top:187px;left:5%;gap:5px;flex-direction:column}.power-chip{font-size:8px;padding:6px 9px;width:fit-content}.power-chip svg{width:12px;height:12px}.combo{right:7%;top:32%}.combo strong{font-size:55px}.combo span{font-size:8px;letter-spacing:1px}.dash-area{bottom:calc(93px + var(--safe-bottom));width:216px}.dash-button{padding:9px 13px;gap:10px}.dash-button>svg{width:24px;height:24px}.dash-button span{font-size:11px}.dash-button small{font-size:7px}.dash-button kbd{display:none}.dash-meter{height:5px}.dash-meter span{font-size:7px;bottom:-13px}.keyboard-hint{display:none}.speedometer{bottom:calc(162px + var(--safe-bottom));right:5%}.speedometer strong{font-size:30px}.speedometer>span{font-size:7px}.speedometer i{height:8px;width:3px}.speedometer>div{gap:2px}.touch-controls{position:absolute;bottom:calc(20px + var(--safe-bottom));left:5%;right:5%;display:flex;gap:10px;justify-content:space-between;align-items:center}.touch-controls>span{flex:1}.touch-controls button{width:47px;height:47px}.touch-controls button svg{width:21px;height:21px}.tutorial-hint{bottom:33%;gap:10px;padding:10px 15px;max-width:90vw}.tutorial-hint>span{width:31px;height:31px;font-size:19px}.tutorial-hint b{font-size:12px}.tutorial-hint small{font-size:8px}.zone-announcement strong{font-size:34px;letter-spacing:5px}.zone-announcement>span{font-size:19px}.zone-announcement small{font-size:11px}.boss-hud{top:208px;width:230px;font-size:10px}.boss-hud b{font-size:7px}.countdown{font-size:130px}.toast{font-size:11px;padding:10px 17px;top:24%}#modal-content{padding:36px 23px 26px}.modal-title{font-size:25px}.modal-big-title{font-size:58px}.modal-subtitle{font-size:11px}.guide-grid{gap:8px}.guide-item{padding:12px}.guide-item p{font-size:9px}.guide-item b{font-size:11px}.guide-note{font-size:10px}.result-rank{font-size:65px;right:32px;top:46px}.result-hero>strong{font-size:66px}.character-option{gap:12px;padding:12px}.character-option.selected{padding:11px}.character-option small{font-size:9px}.character-option em{font-size:8px;max-width:65px}}
@media(max-width:600px) and (max-height:750px){.home-copy{top:12%}.sonic-title{font-size:80px}.horizon-title{font-size:27px;margin-top:9px}.home h2{font-size:16px;margin:8px 0}.intro{display:none}.mode-toggle{margin-top:14px}.home-links{margin-top:13px}.zone-strip{bottom:39px}.zone-mini{height:20px}.character-chip{bottom:152px}.hero-caption{top:50%}.home-footer{bottom:13px}.eyebrow{font-size:6px}.yellow-tag{padding:4px 6px}.hud-top{top:72px}.stage-progress{top:137px}}
@media(max-height:540px) and (orientation:landscape){.topbar{padding:12px 3%}.home-copy{top:18%;left:5%;width:45%}.eyebrow{display:none}h1{margin:0}.sonic-title{font-size:76px}.horizon-title{font-size:27px;margin-top:10px}.home h2{font-size:16px;margin:5px 0 12px}.intro{display:none}.mode-toggle{width:250px;margin-bottom:8px}.mode-toggle button{padding:5px 8px;font-size:9px}.start-button{width:250px;padding:8px 12px;gap:11px}.start-arrow{width:29px;height:29px}.start-button>span:nth-child(2){font-size:15px}.start-button small{font-size:6px}.start-button kbd{display:none}.home-links{margin-top:12px}.home-links button{font-size:9px}.zone-strip{left:auto;right:4%;width:43%;bottom:32px}.zone-strip-label{display:none}.zone-cards{gap:7px}.zone-card{display:block;padding:8px}.zone-mini{display:none}.zone-card small{font-size:5px}.zone-card b{font-size:9px}.zone-dot{display:none}.home-footer{bottom:10px;font-size:6px}.home-footer>span:first-child{display:none}.character-chip{top:auto;bottom:109px;right:6%;padding:7px 12px}.hero-caption{top:22%}.hud-top{top:61px}.hud-rings strong,.hud-distance strong{font-size:34px}.hud-score span{font-size:24px}.stage-progress{top:21px;width:185px}.dash-area{bottom:35px;width:215px}.dash-button{padding:8px 13px}.dash-button span{font-size:11px}.dash-button small{font-size:7px}.keyboard-hint{bottom:7px;font-size:7px}.speedometer{bottom:34px}.touch-controls{display:flex;position:absolute;left:3%;right:3%;bottom:24px;gap:9px}.touch-controls>span{flex:1}.touch-controls button{width:42px;height:42px}.touch-controls~*{display:none}.speedometer{display:none}.power-list{top:127px}.combo{top:38%}.tutorial-hint{bottom:34%;padding:9px 15px}.zone-announcement strong{font-size:30px}.zone-announcement small{font-size:10px}.zone-announcement>span{font-size:19px}.boss-hud{top:70px;width:230px}.boss-hud b{font-size:7px}.boss-hud>span{font-size:10px}}
@media(prefers-reduced-motion:reduce){.boot-ring,.boot-track i{animation:none}.zone-announcement{animation:none}button{transition:none}#speed-lines{display:none}}

@media(max-width:600px){.hero-caption{display:none}}

@media(max-width:600px){.hero-caption{display:none}}

@media(max-width:600px){.hero-caption{display:none}}

.guide-item{min-width:0}.guide-item>div{flex-wrap:wrap}

@media(max-width:600px){.hero-caption{display:none}}

.guide-item{min-width:0}.guide-item>div{flex-wrap:wrap}
