:root{color:#f5f1df;font-synthesis:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#192822;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,select,input{font:inherit}button,select{cursor:pointer}button{color:inherit;background:#263b32;border:1px solid #ffffff30;border-radius:9px;padding:10px 14px}button:hover{background:#405849}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #ffad62}button.primary{color:#222e25;background:#f68b4e;border:0;font-weight:750}button.danger{color:#ffc1ae}button:disabled{opacity:.4;cursor:default}canvas#field{width:100vw;height:100dvh;display:block;position:fixed;inset:0}header,.course,.hud,.actions,.welcome,.notice,.drawer,.touch-controls{z-index:2;position:fixed}header{background:linear-gradient(#14271cc9,#0000);justify-content:space-between;align-items:center;gap:15px;padding:22px 28px;display:flex;top:0;left:0;right:0}header .brand{letter-spacing:3px;font-size:20px;font-weight:800}.brand b{color:#f79958}.eyebrow{letter-spacing:2px;color:#c8d3bd;text-transform:uppercase;font:11px ui-monospace,monospace}.brand .eyebrow{letter-spacing:1px;margin-top:6px;display:block}nav{gap:7px;display:flex}nav button{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1e3028be}.course{background:#1c3028d9;border:1px solid #ffffff23;border-radius:12px;min-width:205px;padding:18px;top:108px;left:28px}.course strong{margin:7px 0;font-size:24px;display:block}.course small{color:#c7d2bf}.gates{gap:7px;margin-top:14px;display:flex}.gate-dot{border:1px solid #788778;border-radius:6px;place-items:center;width:27px;height:27px;font:12px monospace;display:grid}.gate-dot.current{color:#ffaf6d;border-color:#f79958}.gate-dot.passed{color:#1d3025;background:#91bf91}.welcome{background:#192d24ed;border:1px solid #b5c6ad33;border-radius:18px;width:min(470px,86vw);padding:30px;top:50%;left:7%;transform:translateY(-40%);box-shadow:0 20px 80px #0d211d3a}.welcome h1{letter-spacing:-2px;margin:15px 0;font-size:clamp(32px,4vw,53px);line-height:1.05}.welcome h1 span{color:#ffa66b}.welcome p{color:#c4cfbb;line-height:1.65}.welcome .primary{margin-top:8px;padding:14px 24px}.fineprint{font-size:11px!important;line-height:1.5!important}.hud{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#172a23e0;border:1px solid #c1d1b52b;border-radius:12px;gap:0;display:flex;bottom:25px;left:28px;overflow:hidden}.metric{border-right:1px solid #ffffff15;min-width:100px;padding:13px 20px}.metric:last-child{border:0}.metric label{color:#b6c6ae;letter-spacing:1.5px;margin-bottom:5px;font:10px monospace;display:block}.metric strong{font:22px ui-monospace,monospace}.metric small{color:#bccab2;font:11px monospace}.actions{flex-wrap:wrap;justify-content:flex-end;gap:7px;max-width:320px;display:flex;bottom:25px;right:28px}.notice{text-align:center;color:#e6e9d6;pointer-events:none;background:#172a23d9;border-radius:7px;max-width:80vw;padding:9px 15px;font-size:12px;bottom:123px;left:50%;transform:translate(-50%)}.drawer{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:5;background:#182a23f7;border-left:1px solid #bccdb044;width:min(430px,100vw);height:100dvh;padding:24px;top:0;right:0;overflow:auto;box-shadow:-20px 0 70px #10201955}.drawer header{background:0 0;margin-bottom:18px;padding:0;position:static}.drawer h2{margin:0;font-size:22px}.drawer p{color:#bfceb7;line-height:1.6}.drawer label{margin:15px 0;font-size:13px;display:block}.drawer label>span{color:#d9e2cf;margin-bottom:7px;display:block}.drawer select{background:#2b4035;border:1px solid #79917355;border-radius:7px;width:100%;padding:9px}.drawer input[type=range]{accent-color:#f99a59;width:100%}.drawer input[type=number]{background:#294035;border:1px solid #6d846766;border-radius:4px;width:70px;padding:5px}.drawer fieldset{border:1px solid #6d846766;border-radius:8px;margin:13px 0;padding:10px}.drawer fieldset label{margin:6px;font-size:11px;display:inline-block}.drawer pre{white-space:pre-wrap;overflow-wrap:anywhere;color:#bfceb7;font:11px/1.6 monospace}.drawer .row{flex-wrap:wrap;gap:7px;display:flex}.drawer a{color:#ffb57e}.touch-controls{pointer-events:none;justify-content:space-between;display:none;bottom:126px;left:20px;right:20px}.stick{touch-action:none;pointer-events:auto;background:#20392b55;border:1px solid #f4edd150;border-radius:50%;width:118px;height:118px;position:relative}.stick:before,.stick:after{content:"";background:#e5e9d62b;position:absolute}.stick:before{width:100%;height:1px;top:50%}.stick:after{width:1px;height:100%;left:50%}.stick i{background:#ffad6d80;border-radius:50%;width:36px;height:36px;position:absolute;top:calc(50% - 18px);left:calc(50% - 18px)}.stick span{text-align:center;color:#e9ecd9;width:100%;font:10px monospace;position:absolute;bottom:-22px}.hidden,[hidden]{display:none!important}.fatal{max-width:650px;padding:40px;line-height:1.7}.loading{z-index:10;background:#192d24;place-items:center;display:grid;position:fixed;inset:0}@media (pointer:coarse){.touch-controls{display:flex}}@media (max-width:850px){header{padding:16px}.brand{font-size:15px!important}header nav{gap:4px}nav button{padding:8px;font-size:11px}.course{min-width:170px;padding:12px;top:90px;left:16px}.course strong{font-size:20px}.hud{justify-content:space-between;bottom:12px;left:12px;right:12px}.metric{flex:1;min-width:0;padding:10px 8px}.metric strong{font-size:17px}.metric label{letter-spacing:.5px;font-size:8px}.actions{max-width:270px;bottom:92px;right:16px}.actions button{padding:8px;font-size:11px}.notice{font-size:11px;bottom:148px}.welcome{padding:24px;left:7%}.touch-controls{bottom:190px}.course small{font-size:10px}}@media (max-height:550px){.welcome{padding:18px;top:45%}.welcome h1{font-size:30px}.welcome p{margin:9px 0}.course{top:75px}.touch-controls{bottom:100px}.notice{bottom:85px}.hud .metric{padding:8px}.actions{bottom:22px}.hud{max-width:65%;right:auto}}@media (max-width:480px){header{flex-wrap:wrap;gap:8px;padding:10px 12px}header .brand{white-space:nowrap;letter-spacing:2px;align-items:baseline;gap:6px;display:flex}header .brand .eyebrow{display:none}header nav{gap:5px;width:100%}header nav button{flex:1;min-width:0;padding:8px 5px}.course{top:96px;left:12px}.hud{grid-template-columns:repeat(3,minmax(0,1fr));gap:0;display:grid}.metric{min-width:0;padding:8px 10px}.metric:nth-child(3){border-right:0}.metric:nth-child(-n+3){border-bottom:1px solid #ffffff15}.metric label{font-size:9px}.metric strong{font-size:17px}.actions{bottom:132px;right:12px}.notice{max-width:90vw;bottom:200px}.touch-controls{bottom:245px;left:14px;right:14px}.stick{width:100px;height:100px}.welcome{max-height:65dvh;overflow:auto}}#race-class,#race-splits,#legacy-best{overflow-wrap:anywhere;max-width:100%;margin-top:3px;font-size:10px;line-height:1.35;display:block}.course{max-width:min(360px,100vw - 40px)}@media (max-width:600px){.course{max-width:calc(100vw - 24px)}}.course>label{align-items:center;gap:8px;margin:5px 0;font-size:11px;display:flex}.course>label select{background:#2b4035;border:1px solid #79917355;border-radius:4px;min-width:0;max-width:100%;padding:3px 5px}#ghost-toggle{color:#8af7ff;border-color:#45f4ff70;margin-top:6px;padding:5px 8px;font-size:11px}#ghost-status{overflow-wrap:anywhere;margin:4px 0;font-size:10px;display:block}#ghost-splits table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font:10px/1.5 ui-monospace,monospace}#ghost-splits th{text-align:right;color:#c7d2bf;border-bottom:1px solid #ffffff25;font-weight:400}#ghost-splits td{text-align:right;padding:1px 3px}#ghost-splits th:first-child,#ghost-splits td:first-child{text-align:left}#ghost-splits .ahead{color:#94e2bc}#ghost-splits .behind{color:#ffb68e}#race-splits{max-height:2.7em;font-size:9px;overflow:auto}@media (max-width:480px){:where(#app:has(>#school-panel[hidden])) .course{width:250px;max-width:calc(100vw - 24px);padding:9px 10px}:where(#app:has(>#school-panel[hidden])) .course strong{margin:4px 0;font-size:18px}:where(#app:has(>#school-panel[hidden])) .gates{gap:5px;margin-top:7px}:where(#app:has(>#school-panel[hidden])) .gate-dot{width:22px;height:22px}:where(#app:has(>#school-panel[hidden])) .course .fineprint{margin:5px 0}:where(#app:has(>#school-panel[hidden])) #ghost-splits table{font-size:10px;line-height:1.25}}.language-control{align-items:center;gap:6px;font-size:11px;display:flex}.language-control select{color:inherit;background:#263b32;border:1px solid #ffffff30;border-radius:7px;max-width:130px;padding:7px}html[lang=zh-TW] .welcome h1{letter-spacing:0;line-height:1.2}html[lang=zh-TW] .actions{max-width:380px}html[lang=zh-TW] .eyebrow{letter-spacing:1px}@media (max-width:850px){header{flex-wrap:wrap}.language-control{margin-left:auto}.course{top:130px}}@media (max-width:480px){header .language-control{position:absolute;top:7px;right:12px}.language-control>span{display:none}.language-control select{max-width:100px;padding:5px;font-size:11px}header .brand{letter-spacing:1px;font-size:13px!important}.course{top:96px}html[lang=zh-TW] .actions{max-width:330px}html[lang=zh-TW] .actions button{padding:7px;font-size:10px}}.language-control{z-index:6;position:fixed;top:16px;right:28px}header{padding-right:190px}.drawer{padding-top:65px}.drawer header{padding-right:0}@media (max-width:850px){header{padding-right:165px}.language-control{top:12px;right:16px}}@media (max-width:480px){header{padding-right:12px}.language-control{top:7px;right:12px}.drawer header{padding-right:0}}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stick span{pointer-events:none;background:#172a23e8;border-radius:4px;padding:3px 2px;bottom:5px}.drawer .file-picker{cursor:pointer;background:#2b4035;border:1px solid #79917355;border-radius:7px;padding:9px;display:inline-block}.drawer label:focus-within .file-picker{outline-offset:2px;outline:3px solid #ffad62}#app:has(>.drawer:not([hidden])):after{content:"";z-index:5;background:#182a23;width:min(430px,100vw);height:56px;position:fixed;top:0;right:0}.drawer{height:calc(100dvh - 56px);padding-top:24px;top:56px}.school-panel{z-index:2;background:#182a23ed;border:1px solid #79917355;border-radius:12px;width:300px;max-height:350px;padding:12px;font-size:12px;position:absolute;top:100px;right:28px;overflow:auto}.school-panel[hidden]{display:none}.school-panel p{margin:7px 0}.school-panel small{font-size:10px;display:block}.school-panel .row{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.school-panel button{padding:7px;font-size:11px}#school-open{margin-top:5px;padding:5px 9px;font-size:11px}@media (max-width:600px){.school-panel{width:auto;max-height:135px;padding:9px;font-size:11px;inset:auto 12px 357px}.school-panel .row{gap:4px}.school-panel button{padding:5px;font-size:10px}.school-panel p{margin:4px 0}}.school-panel .row{background:#182a23;padding-top:4px;position:sticky;bottom:0}@media (max-width:600px){#app{--school-bottom:275px;--course-top:130px}.school-panel{bottom:var(--school-bottom)}#app:has(>#school-panel:not([hidden])) .course{max-height:calc(100dvh - var(--course-top) - var(--school-bottom) - 143px);overflow-y:auto}}@media (max-width:600px) and (pointer:coarse){#app{--school-bottom:357px}}@media (max-width:480px){#app{--course-top:96px}}.school-panel:not([hidden]){flex-direction:column;display:flex;overflow:hidden}.school-panel .school-body{flex:0 auto;min-height:0;overflow:auto}.school-panel .school-foot{border-top:1px solid #ffffff14;flex:none;margin-top:8px;padding-top:6px}.school-panel .school-foot small{font-size:10px;line-height:1.3;display:block}.school-panel .row{background:0 0;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:6px;padding-top:0;display:grid;position:static}.school-panel .row button{white-space:normal;overflow-wrap:anywhere;min-height:44px;padding:4px 6px;line-height:1.15}@media (min-width:601px) and (max-width:850px){#app:has(>#school-panel:not([hidden])) .course{max-width:310px}.school-panel{width:auto;left:max(342px,100vw - 344px);right:16px}}@media (max-width:600px){#app:has(>#school-panel:not([hidden])) .course{grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:8px;height:46px;max-height:none;padding:8px 12px;display:grid;overflow:hidden}#app:has(>#school-panel:not([hidden])) .course>:not(#course-clock):not(.gates){display:none}#app:has(>#school-panel:not([hidden])) .course .gates{margin-top:0}.school-panel{top:min(calc(var(--course-top) + 54px),calc(100dvh - var(--school-bottom) - 72px));max-height:max(calc(100dvh - var(--course-top) - 54px - var(--school-bottom)),72px);padding-top:4px;bottom:auto}.school-panel .school-foot{grid-template-columns:72px minmax(0,1fr);align-items:center;column-gap:6px;margin-top:4px;display:grid}.school-panel .school-foot .row{margin-top:0}}@media (max-width:480px) and (max-height:600px){#app:has(>#school-panel:not([hidden])){--course-top:83px}#app:has(>#school-panel:not([hidden])) .course{top:83px}}@media (max-width:480px) and (max-height:600px) and (pointer:coarse){#app{--school-bottom:345px}}@media (min-width:481px) and (max-width:600px) and (pointer:coarse){#app{--school-bottom:316px}}@media (min-width:481px) and (max-width:600px) and (max-height:550px) and (pointer:coarse){#app{--school-bottom:226px;--welcome-bottom:226px}}@media (max-width:600px){#app{--welcome-bottom:167px}.welcome{top:calc(var(--course-top) - 12px);max-height:max(calc(100dvh - var(--course-top) + 12px - var(--welcome-bottom)),131px);flex-direction:column;display:flex;overflow:hidden;transform:none}.welcome .welcome-body{flex:0 auto;min-height:0;overflow:auto}.welcome .primary{flex:none;align-self:flex-start}.welcome .fineprint{flex:none}}@media (max-width:600px) and (pointer:coarse){#app{--welcome-bottom:316px}}@media (max-width:480px){#app{--welcome-bottom:207px}}@media (max-width:480px) and (pointer:coarse){#app{--welcome-bottom:353px}}@media (max-width:480px) and (max-height:600px){.welcome{padding:12px 16px}}@media (max-width:600px) and (pointer:fine){.welcome{top:auto;bottom:var(--welcome-bottom)}}@media (min-width:851px) and (min-height:551px) and (pointer:coarse){.welcome{left:max(146px,7%)}}@media (min-width:601px) and (max-width:850px) and (min-height:551px) and (pointer:coarse){.school-panel{max-height:min(350px,100dvh - 416px)}}@media (min-width:851px) and (min-height:551px) and (pointer:coarse){.school-panel{max-height:min(350px,100dvh - 352px)}}@media (min-width:601px) and (max-width:850px) and (min-height:551px) and (pointer:coarse){.welcome{flex-direction:column;max-height:max(100dvh - 514px,131px);display:flex;top:auto;bottom:316px;overflow:hidden;transform:none}.welcome .welcome-body{flex:0 auto;min-height:0;overflow:auto}.welcome .primary{flex:none;align-self:flex-start}.welcome .fineprint{flex:none}}@media (max-height:550px) and (orientation:landscape){#app{--ls-top:53px}.course{top:var(--ls-top);max-height:calc(100dvh - var(--ls-top) - 226px);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 8px;padding:8px 12px;display:grid;overflow:auto}.course>label{grid-area:1/1;margin:0}.course #school-open{grid-area:1/2;margin:0}.course #course-clock{grid-area:2/1}.course .gates{grid-area:2/2;margin-top:0}.course>:not(label):not(#school-open):not(#course-clock):not(.gates){grid-column:1/-1}header{padding-top:6px;padding-bottom:6px}header .brand .eyebrow{display:none}#app:has(>#school-panel:not([hidden])) .course{top:var(--ls-top);width:min(360px,100vw - 420px);height:auto;max-height:calc(100dvh - var(--ls-top) - 226px);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0 8px;padding:8px 12px;display:grid;overflow:hidden}#app:has(>#school-panel:not([hidden])) .course>:not(#course-clock):not(.gates){display:none}#app:has(>#school-panel:not([hidden])) .course .gates{margin-top:0}.school-panel{top:var(--ls-top);width:min(380px,100vw - 32px);max-height:calc(100dvh - var(--ls-top) - 218px);padding-top:4px;padding-bottom:9px;bottom:auto;left:auto;right:16px}#school-title,#school-feedback{display:inline}#school-feedback:not(:empty):before{content:" · "}.school-panel .school-foot{grid-template-columns:80px minmax(0,1fr);align-items:center;column-gap:6px;margin-top:2px;padding-top:3px;display:grid}.school-panel .school-foot .row{margin-top:0}.welcome{top:var(--ls-top);width:min(470px,max(300px,100vw - 292px));max-height:calc(100dvh - var(--ls-top) - 103px);flex-direction:column;display:flex;bottom:auto;left:146px;overflow:hidden;transform:none}.welcome .welcome-body{flex:0 auto;min-height:0;overflow:auto}.welcome .primary{flex:none;align-self:flex-start}.welcome .fineprint{flex:none}}@media (max-height:550px) and (min-width:481px) and (orientation:landscape){header{flex-wrap:nowrap;gap:10px}header .brand{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}header nav{flex:none}}@media (max-height:550px) and (min-width:481px) and (max-width:850px) and (orientation:landscape){header .brand{letter-spacing:1px}}@media (min-width:601px) and (max-width:850px){header{flex-wrap:nowrap;gap:10px}header .brand{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}header nav{flex:none}}@media (max-height:550px) and (max-width:480px) and (orientation:landscape){#app{--ls-top:77px}}@media (max-height:550px) and (min-width:851px) and (orientation:landscape){#app{--ls-top:61px}.welcome{left:212px}}@media (max-width:480px) and (min-height:568px) and (orientation:portrait) and (pointer:coarse),(min-width:481px) and (max-width:850px) and (orientation:portrait) and (pointer:coarse){:where(#app:has(>#school-panel[hidden])) .course{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 8px;max-height:calc(100dvh - 449px);display:grid;overflow-y:auto}:where(#app:has(>#school-panel[hidden])) .course>label{grid-area:1/1;margin:0}:where(#app:has(>#school-panel[hidden])) .course #school-open{grid-area:1/2;margin:0}:where(#app:has(>#school-panel[hidden])) .course #course-clock{grid-area:2/1/auto/-1}:where(#app:has(>#school-panel[hidden])) .course .gates{grid-area:3/1/auto/-1;margin-top:0}:where(#app:has(>#school-panel[hidden])) .course>:not(label):not(#school-open):not(#course-clock):not(.gates){grid-column:1/-1}}@media (min-width:481px) and (max-width:850px) and (orientation:portrait) and (pointer:coarse){:where(#app:has(>#school-panel[hidden])) .course{max-height:calc(100dvh - 446px)}}@media (min-width:481px) and (max-width:850px) and (max-height:550px) and (orientation:portrait) and (pointer:coarse){:where(#app:has(>#school-panel[hidden])) .course{max-height:calc(100dvh - 356px)}}
