:root{--paper:#f5f3e9;--ink:#192d25;--acid:#d4ee70;--line:2px solid var(--ink);--play-width:min(680px,calc(100vw - 24px),calc((100dvh - 162px)*1.2))}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none}body{background:var(--paper);color:var(--ink);font:15px "Mona12",monospace}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:var(--line);background:var(--paper);min-height:42px;padding:8px 14px;box-shadow:3px 3px 0 var(--ink);transition:transform .1s,box-shadow .1s}button:hover{background:var(--acid)}button:active{transform:translate(3px,3px);box-shadow:none}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #f09863;outline-offset:3px}button:disabled{opacity:.5;cursor:default}button.selected{background:var(--acid)}[hidden]{display:none!important}.app{width:var(--play-width);height:100dvh;margin:auto;display:flex;flex-direction:column;justify-content:center;gap:10px;padding:10px 0 max(10px,env(safe-area-inset-bottom))}.appbar{display:flex;align-items:center;justify-content:space-between;gap:10px;height:34px;flex-shrink:0}.appbar h1{font-size:19px;font-weight:normal;letter-spacing:-.5px;margin:0;white-space:nowrap}.brand-dot{font-size:10px;vertical-align:top;margin-left:3px}.appbar nav{display:flex;gap:7px}.appbar button{font-size:11px;min-height:30px;padding:4px 8px;box-shadow:2px 2px 0 var(--ink)}.game{width:100%;border:var(--line);background:var(--paper);flex-shrink:0;box-shadow:4px 4px 0 var(--ink)}.hud{height:47px;display:flex;align-items:center;justify-content:space-between;padding:5px 12px;border-bottom:var(--line);gap:6px}.hud small{font-size:9px;display:block}.hud #leg{font-size:9px;line-height:1.2}.hud #distanceLabel{display:none}#hearts{font-size:18px;letter-spacing:1px;color:#b8583f}.clock{font-size:20px;font-variant-numeric:tabular-nums}.distance{text-align:right;font-size:11px}.distance strong{font-size:19px;font-weight:normal}.viewport{position:relative;aspect-ratio:6/5;overflow:hidden}canvas{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:manipulation}.scene-caption{position:absolute;left:16px;top:16px;pointer-events:none}.scene-caption span{display:none}.scene-caption strong{font-size:15px;font-weight:normal}.direction-arrows{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:space-between;padding:0 12% 7%;pointer-events:none}.direction-arrows button{pointer-events:auto;min-width:76px;background:var(--paper);font-size:14px}.direction-arrows button.selected{background:var(--acid)}.route{display:flex;align-items:center;gap:10px;padding:5px 10px;height:26px;font-size:9px;border-top:var(--line)}.track{height:2px;background:#8f9a83;flex:1;position:relative}.track i{width:7px;height:7px;position:absolute;top:-3px;background:var(--ink);transform:translateX(-50%)}.setup,.controls{display:flex;gap:9px;align-items:stretch;height:52px;flex-shrink:0;margin-top:3px}.primary{background:var(--acid)}.start{flex:1;font-size:18px}.course-button{min-width:94px;font-size:16px}.controls>div{display:flex;align-items:stretch}.segments{display:flex;gap:5px}.segments button{padding:7px 10px;min-height:42px}.controls #paces button{padding:7px 9px;font-size:14px}.controls #pause{font-size:12px;padding:7px 10px}.jump{flex:1;min-width:65px;font-size:18px;touch-action:manipulation}.controls>div,.controls #paces{height:100%}.pause-overlay{position:absolute;inset:0;display:grid;place-content:center;text-align:center;background:#f5f3e9e8;z-index:2}.pause-overlay h2{font-weight:normal;font-size:22px}.pause-overlay button{background:var(--acid)}#toast{position:absolute;top:52px;left:50%;transform:translateX(-50%);max-width:90%;background:var(--paper);border:var(--line);padding:7px 12px;text-align:center;font-size:13px;opacity:0;pointer-events:none;z-index:1}#toast.visible{opacity:1}
dialog{color:var(--ink);background:var(--paper);border:3px solid var(--ink);padding:24px;width:min(90vw,400px);max-height:calc(100dvh - 32px);overflow:auto;box-shadow:7px 7px 0 var(--ink);margin:auto}dialog::backdrop{background:#172e2580}dialog h2{font-size:23px;font-weight:normal;line-height:1.4;margin:0 25px 20px 0}.close-panel,.close-result{position:absolute;top:8px;right:9px;border:0;box-shadow:none;background:none;padding:0;min-height:28px;width:28px;font-size:24px}.course-options{display:grid;gap:10px}.course-options button{display:flex;align-items:center;font-size:36px;text-align:left;padding:12px 18px;gap:10px}.course-options small{font-size:14px}.course-options span{margin-left:auto}.language{display:flex;justify-content:space-between;align-items:center;gap:15px;border-top:var(--line);border-bottom:var(--line);padding:10px 0}.language select{min-height:40px;border:var(--line);background:var(--paper);padding:5px;font-size:14px;max-width:65%}.tips{display:grid;gap:18px;font-size:12px;line-height:1.6;margin:18px 0}.tips label{display:flex;align-items:center;gap:5px}.tips input,.auto input{accent-color:var(--ink);width:16px;height:16px}.section-head{display:block}.section-head h2{margin-bottom:6px}.local-badge{font-size:11px}.record-filters{display:flex;gap:7px;margin:18px 0}.record-filters select{background:var(--paper);border:var(--line);max-width:80px;font-size:13px}.record-filters .segments{flex:1}.record-filters button{padding:7px;font-size:12px;flex:1}.empty{font-size:14px;line-height:1.7;margin:20px 0}.record-row{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--ink);padding:12px 0;font-size:13px}.record-row span:first-child{overflow-wrap:anywhere}.auto{display:flex;align-items:center;gap:6px;font-size:12px;line-height:1.5;margin:15px 0}.auto input{flex-shrink:0}.ending-icon{font-size:38px;margin-bottom:12px}.eyebrow{font-size:11px;letter-spacing:2px;margin:0 0 8px}.result h2{font-size:23px;margin:0 0 12px;line-height:1.5}.result #resultSummary{font-size:12px;line-height:1.7}.result #fare{display:block;font-size:30px;margin:16px 0}.result #registerBox{border-top:var(--line);padding-top:15px}.result input:not([type=checkbox]){width:100%;background:white;border:var(--line);padding:8px;margin:8px 0;font-size:16px}.result #register,.result #again{width:100%}.result #again{margin-top:12px}.result #saveMessage{font-size:12px}footer{border-top:var(--line);padding-top:12px;display:grid;gap:8px;font-size:10px;line-height:1.6}footer a{color:inherit}@media(max-width:380px){.appbar h1{font-size:17px}.appbar button{font-size:10px}.controls #paces button{padding-inline:6px}.controls #pause{padding-inline:7px;font-size:11px}.jump{font-size:16px}.hud{padding-inline:8px}.clock{font-size:18px}.distance strong{font-size:17px}}@media(max-height:500px){:root{--play-width:min(680px,calc(100vw - 20px),calc((100dvh - 180px)*1.2))}.app{gap:7px;padding-block:5px}.appbar{height:25px}.appbar h1{font-size:13px}.appbar button{font-size:9px;min-height:23px}.setup,.controls{height:42px}.hud{height:38px}.route{height:22px}.scene-caption{top:10px;left:10px}.scene-caption strong{font-size:11px}.direction-arrows button{font-size:10px;min-width:55px;padding:4px;min-height:30px}.controls #paces button{padding-inline:4px;font-size:11px}.controls #pause{font-size:9px;padding-inline:4px}.jump{font-size:12px;min-width:40px}.controls,.setup{gap:6px}.course-button{font-size:13px;min-width:70px}.start{font-size:14px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
html{touch-action:manipulation}.pace-stepper{display:flex;align-items:center!important;gap:0;border:var(--line);background:var(--paper);box-shadow:3px 3px 0 var(--ink)}.pace-stepper button{width:44px;height:100%;border:0;box-shadow:none;min-height:0;font-size:24px;padding:0}.pace-stepper button:active{transform:none;background:var(--acid)}.pace-stepper output{min-width:44px;text-align:center;font-size:14px}.pace-stepper button:disabled{opacity:.3}.controls .pace-stepper button{font-size:24px}.controls #pause{min-width:64px}@media(max-height:500px){.pace-stepper button{width:34px}.pace-stepper output{min-width:35px;font-size:11px}.controls #pause{min-width:45px}.controls .pace-stepper button{font-size:20px}}
.direction-arrows{padding-bottom:22%}
.direction-arrows button{border:0!important;background:transparent!important;box-shadow:none!important;color:var(--ink);width:60px;min-width:60px;padding:6px;animation:arrow-float 1.8s ease-in-out infinite}.direction-arrows button.selected{color:#375d27;filter:drop-shadow(3px 3px 0 #d4ee70)}.direction-arrows svg{width:40px;height:40px;fill:currentColor;shape-rendering:crispEdges}.direction-arrows button[data-direction="1"] svg{transform:scaleX(-1)}.direction-arrows button[data-direction="1"]{animation-delay:-.9s}@keyframes arrow-float{0%,100%{translate:0 0}50%{translate:0 -7px}}.difficulty-button{font-size:13px;max-width:110px;padding:6px 9px}.setup .course-button{min-width:70px;padding-inline:8px}.setup .start{font-size:15px;min-width:0}.record-filters{flex-wrap:wrap}.record-filters #recordDifficulty{max-width:130px;min-height:36px}.record-filters .segments{flex-basis:100%}#difficulties button{font-size:13px;flex:1;padding-inline:6px}.panel h3{font-size:16px;font-weight:normal;margin:20px 0 10px}@media(pointer:coarse){#jump{display:none}.controls{justify-content:space-between}.controls #pause{flex:1}.controls .pace-stepper{flex:1;justify-content:space-between}}@media(prefers-reduced-motion:reduce){.direction-arrows button{animation:none}}
.direction-arrows button{width:76px;min-width:76px;min-height:80px;padding:4px;display:grid;place-items:center}.direction-arrows img{display:block;width:60px;height:66px;image-rendering:pixelated;pointer-events:none;user-select:none}.direction-arrows button[data-direction="1"] img{transform:scaleX(-1)}
@font-face{font-family:Cafe24ProUp;src:url('https://cdn.jsdelivr.net/gh/projectnoonnu/2507-1@1.0/Cafe24PROUP.woff2') format('woff2');font-weight:normal;font-display:swap}.title-screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:13%;gap:20px;pointer-events:none}.title-screen h2{font:normal clamp(80px,20vw,160px)/1 Cafe24ProUp,sans-serif;margin:0;color:var(--ink);text-shadow:4px 4px 0 var(--acid)}.title-start{pointer-events:auto;min-width:150px;font-size:22px;padding:10px 24px}.current-settings{margin:0;align-self:center;margin-left:auto;font-size:14px;text-align:right}.setup .course-button{font-size:14px;min-width:70px}.confirm-course{width:100%;margin-top:22px}.course-options{grid-template-columns:repeat(3,minmax(0,1fr))}.course-options button{padding:10px 6px;display:block;font-size:27px;text-align:center}.course-options small{display:block;font-size:12px}.course-options button span{display:none}@media(pointer:coarse),(max-width:650px){.app{justify-content:flex-start;padding-top:max(8px,env(safe-area-inset-top))}.current-settings{font-size:12px}.title-screen{gap:14px}.title-start{min-width:130px;font-size:19px}}@media(max-height:500px){.title-screen h2{font-size:65px}.title-screen{gap:8px}.title-start{min-height:32px;padding:4px 16px;font-size:15px}}
.route .current-settings{font-size:10px;white-space:nowrap}
.title-screen{padding-bottom:30%}
#assetStatus{font-size:12px;text-align:center;max-width:85%;margin:0}#assetStatus:empty{display:none}#assetRetry{pointer-events:auto;font-size:13px}

.title-start,#assetRetry{border:0;box-shadow:none;background:transparent;min-width:0;padding:8px 16px}.title-start:hover,#assetRetry:hover{background:transparent;text-decoration:underline;text-underline-offset:6px}.title-start:active,#assetRetry:active{transform:none;box-shadow:none}.title-start:disabled{background:transparent;opacity:1}#assetStatus{border:0;background:transparent;box-shadow:none}
.controls #jump{display:block;flex:1;min-width:60px;order:1}.controls #paces{flex:0 1 auto;order:0}.controls #pause{order:2;flex:0 0 42px;width:42px;min-width:42px;padding:0;font-size:22px}.mobile-jump-hint{display:none;margin:0;text-align:center;font-size:11px;line-height:1.5;flex-shrink:0}@media(pointer:coarse),(max-width:650px){.mobile-jump-hint{display:block}}@media(max-height:500px){.controls #pause{flex-basis:34px;width:34px;min-width:34px;font-size:18px}.mobile-jump-hint{font-size:10px}}
#toast{white-space:pre-line;line-height:1.6}
.pause-overlay{background:transparent;pointer-events:none;place-content:start center;padding-top:52px}.pause-overlay h2{font-size:18px;margin:0;text-align:center}.controls #pause,.setup #openCourse{font-family:"Mona12",sans-serif}.setup #openCourse{width:44px;min-width:44px;font-size:24px;padding:0}
.result #resultTitle{white-space:pre-line;font-size:20px;line-height:1.45}.result-distance{margin:18px 0 12px}.result-distance>span{font-size:12px}.result-distance>div{display:flex;align-items:baseline;gap:8px;line-height:1.05;margin-top:5px}.result-distance strong{font:normal clamp(58px,18vw,86px)/1 Cafe24ProUp,sans-serif;letter-spacing:-2px}.result-distance .distance-unit{font-size:18px}.result .ending-icon{margin-bottom:8px}.result #fare{font-size:26px;margin:12px 0}.result #resultSummary{margin:8px 0 12px}

.app,.app *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.app input:not([type=checkbox]),.app select{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.app img{-webkit-user-drag:none}
.appbar .home-link{font:normal clamp(16px,4vw,21px)/1 Cafe24ProUp,sans-serif;letter-spacing:-.4px;border:0;box-shadow:none;background:transparent;min-height:30px;padding:0;text-align:left;white-space:nowrap}
.appbar .home-link:hover{text-decoration:underline;text-underline-offset:4px;background:transparent}
.appbar .home-link:active{transform:none;box-shadow:none}

.hud #distance{font:normal 26px/1 Cafe24ProUp,sans-serif}.hud #distance.return-distance{color:#c93438}

.result #taxiStory{font-size:12px;line-height:1.6;margin:8px 0 14px;word-break:keep-all}
.result #fare{text-align:right}

.course-options button{font-family:Cafe24ProUp,sans-serif}.course-options small{font-family:"Mona12",monospace}

.appbar #language{width:105px;min-width:0;min-height:30px;padding:3px 5px;border:var(--line);border-radius:0;background:var(--paper);font-size:12px;box-shadow:2px 2px 0 var(--ink)}#settingsDialog #openRecords{width:100%;text-align:left}
@media(max-width:350px){.appbar #language{width:88px;font-size:11px}.appbar nav{gap:5px}}

.skin-tray{position:absolute;left:5%;right:5%;bottom:2%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;z-index:3;padding:5px;background:var(--paper);border:var(--line);box-shadow:3px 3px 0 var(--ink)}.skin-tray button{min-width:0;min-height:48px;padding:3px;box-shadow:none;font-size:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.skin-tray img{height:26px;width:auto;image-rendering:pixelated;pointer-events:none}.skin-tray small{font-size:10px}.skin-tray button:disabled{opacity:.5}.setup #openSkins{width:44px;min-width:44px;padding:0;font-size:24px}

.title-leaderboard{pointer-events:auto;border:0;box-shadow:none;background:transparent;min-height:28px;padding:3px 12px;font-size:15px;text-decoration:underline;text-underline-offset:4px}.title-leaderboard:hover{background:transparent;color:#375d27}.title-leaderboard:active{transform:none;box-shadow:none}.title-screen{gap:10px}dialog[open].records{display:flex;flex-direction:column;overflow:hidden;max-height:min(80dvh,680px)}.records #recordList{overflow-y:auto;min-height:80px;flex:1}.records .record-filters{flex-shrink:0}.records .record-row{align-items:baseline}.records .record-row span:last-child{white-space:nowrap;font-variant-numeric:tabular-nums}

.appbar #showLeaderboard{font-family:"Mona12",monospace;font-size:20px;padding:0;width:32px;flex-shrink:0}.appbar nav{align-items:center}.appbar #language{width:90px}@media(max-width:380px){.appbar{gap:5px}.appbar nav{gap:4px}.appbar #language{width:75px;font-size:10px}.appbar .home-link{font-size:15px}}

/* Compact controls, tall leaderboard, individual runner plates. */
dialog[open].records{width:min(94vw,460px);height:min(90dvh,820px);max-height:90dvh;padding:12px;gap:6px}
.records .section-head h2{font-size:19px;line-height:1.2;margin:0 32px 2px 0}
.records .local-badge{font-size:9px}.records .record-filters{margin:3px 0;gap:4px;flex-wrap:nowrap;align-items:stretch}
.records .record-filters select,.records .record-filters #recordDifficulty{font-size:11px;min-height:30px;height:30px;max-width:125px;padding:2px;min-width:0;flex:1}
.records .record-filters .segments{flex:0 0 auto;gap:4px}
.records .record-filters button{min-height:30px;height:30px;width:38px;padding:0;font-size:19px;box-shadow:2px 2px 0 var(--ink)}
.records #recordList{padding:3px 3px 4px 0;display:flex;flex-direction:column;gap:6px}
.records .record-row{flex-shrink:0;min-height:62px;padding:10px 9px;border:2px solid var(--ink);background:#e7e9d9;box-shadow:2px 2px 0 var(--ink);gap:8px;align-items:center;font-size:12px}
.records .record-row:nth-child(1){background:#e5eda5}.records .record-row:nth-child(2){background:#e2e7e5}.records .record-row:nth-child(3){background:#efdbbe}
.records .record-row span:first-child{min-width:0;flex:1}.records .record-row span:last-child{font-size:11px;text-align:right}
.records .auto{margin:3px 0 0;font-size:10px;flex-shrink:0}.records .empty{font-size:12px;margin:12px 4px}

.records .record-row.my-record{background:var(--acid);outline:2px solid var(--ink);outline-offset:-5px}.records .record-row.my-record span:nth-child(2)::before{content:"🎖️ ";}


.records .record-row{display:flex;width:100%;text-align:left}.rank-head{width:29px;height:auto;flex-shrink:0;image-rendering:pixelated}.records .record-row span:nth-child(2){flex:1;min-width:0;overflow-wrap:anywhere}.message-label{display:block;font-size:12px;margin-top:10px}#runMessage{display:block;width:100%;resize:none;font:inherit;padding:7px;border:var(--line);background:white;user-select:text;-webkit-user-select:text}#messageCount{display:block;text-align:right;margin-top:3px}.runner-message{text-align:center}.runner-message img{height:64px;width:auto;image-rendering:pixelated}.runner-message h2{font-size:17px;margin:12px 0}.runner-message p{font-size:14px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}

.records .rank-info{flex:1;min-width:0;text-align:left}.records .rank-name{display:block;font-size:12px;font-weight:700;overflow-wrap:anywhere}.records .rank-preview{display:block;font-size:10px;font-weight:400;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px;opacity:.75}.records .rank-value{font-weight:700}.records .record-row .rank-name{font-size:12px;text-align:left;white-space:normal}.records .record-row.my-record .rank-name::before{content:'🎖️ '}.records .section-head h2,.runner-message h2{font-weight:700}.rank-head{width:29px;height:auto}.runner-message img{width:58px;height:auto}

.records .record-row .rank-value{font:normal 24px/1.1 Cafe24ProUp,sans-serif;white-space:nowrap;text-align:right;flex-shrink:0}

#settingsDialog #renameProfile{width:100%;margin-top:8px;text-align:left}

.route{height:32px;gap:8px}.route .track{margin:0 6px}.route .track::after{content:'';position:absolute;right:-3px;top:-2px;width:6px;height:6px;background:var(--ink);border-radius:50%}.route #routeDot{background:var(--paper);width:18px;height:16px;top:-8px;line-height:16px;text-align:center;font-size:17px;font-style:normal;z-index:2}.route #actualTurnDot{width:8px;height:8px;background:#d65c36;border:1px solid var(--paper);border-radius:50%;top:4px;z-index:1}.route #turnLabel{font-size:9px;white-space:nowrap}.route .current-settings{font-size:9px}

.route #routeDot{width:10px;height:10px;top:1px;transform:translate(-50%,-50%);border:2px solid #192d25;border-radius:50%;background:#fff;z-index:2}.route #actualTurnDot{width:8px;height:8px;top:1px;transform:translate(-50%,-50%);border:0;background:#cf3d3d;border-radius:50%;z-index:1}.route .track::after{top:1px;transform:translateY(-50%)}

.route>span:first-child{order:0}.route .track{order:1}.route #turnLabel{order:2}.route #currentSettings{order:3}.route.route-left>span:first-child{order:2}.route.route-left #turnLabel{order:0}.route.route-left .track::after{right:auto;left:-3px}

#setup #beginRun{flex:1;font-weight:700;min-width:0}
.scene-caption strong,.title-start,#assetStatus,.pause-overlay h2,.mobile-jump-hint{text-shadow:2px 2px 0 var(--acid)}
.direction-arrows button{filter:drop-shadow(3px 3px 0 var(--acid));opacity:.6}
.direction-arrows button.selected{filter:drop-shadow(4px 4px 0 var(--acid));opacity:1}

.mobile-jump-hint{display:block}

.course-options{grid-template-columns:repeat(4,minmax(0,1fr))}.clock{font-size:17px}.records .record-row .rank-value{font-size:21px}

.records .record-row .rank-value{font-size:28px}@media(max-width:360px){.records .record-row .rank-value{font-size:25px}}

.game-info{gap:9px}.game-info strong{font-size:13px}.game-info .version{font-size:10px;font-weight:400;margin-left:6px}.game-info summary{cursor:pointer}.font-credits{display:grid;gap:7px;padding-top:8px}

.app{-webkit-tap-highlight-color:transparent}
html:not(.keyboard-navigation) .app button:focus,html:not(.keyboard-navigation) .app a:focus,html:not(.keyboard-navigation) .app select:focus{outline:none}
html.keyboard-navigation .app button:focus-visible,html.keyboard-navigation .app a:focus-visible,html.keyboard-navigation .app select:focus-visible{outline:3px solid #f09863;outline-offset:3px}
.app textarea:focus-visible{outline:3px solid #f09863;outline-offset:3px}

.cheese-theme .title-screen h2{color:#fdda70;text-shadow:4px 4px 0 #e97a04}.cheese-theme .appbar .home-link{color:#fdda70;text-shadow:2px 2px 0 #e97a04}

.cheese-theme .title-start,.cheese-theme .scene-caption strong,.cheese-theme #assetStatus,.cheese-theme #assetRetry{color:#fdda70;text-shadow:2px 2px 0 #e97a04}
