@font-face{font-family:PachaNoto;src:url('./noto-r58-c1-ff0a3e00eb25897a.woff') format('woff');font-display:swap}
:root{color-scheme:dark;--ink:#151a17;--paper:#fff8e9;--muted:#d7ddcf;--accent:#f4b447;--focus:#bfffce;--safe-bottom:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{width:100%;height:100%;min-height:100dvh;margin:0;overflow:hidden;overscroll-behavior:none;background:#222c24;color:var(--paper);font-family:PachaNoto,Arial,sans-serif}body{position:fixed;inset:0;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button,a,canvas,svg,span{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none}button{font:inherit;color:inherit;cursor:pointer;border:0;touch-action:manipulation}button:disabled{cursor:wait;opacity:.7}button:focus-visible,a:focus-visible{outline:3px solid var(--focus);outline-offset:4px}a{color:inherit;text-underline-offset:5px}svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;pointer-events:none}[hidden]{display:none!important}::selection{background:var(--accent);color:var(--ink)}
#scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}.shade{pointer-events:none;position:fixed;inset:0;background:linear-gradient(180deg,#0d1619b3,transparent 26%,transparent 72%,#0c130f70)}.hud{position:fixed;top:max(18px,env(safe-area-inset-top));left:max(22px,env(safe-area-inset-left));right:calc(max(22px,env(safe-area-inset-right)) + 58px);display:flex;justify-content:space-between;gap:16px;pointer-events:none;text-shadow:0 2px 8px #1119}.identity{display:flex;flex-direction:column;gap:5px}.game-name{font-size:14px;font-weight:850;letter-spacing:.02em}.identity>span:nth-child(2){font-size:13px}.identity>span:last-child{font-size:12px;color:var(--muted)}.telemetry{display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-variant-numeric:tabular-nums}.clock{font-size:30px;font-weight:700;line-height:1.1;letter-spacing:-.03em}#speed{font-size:18px;font-weight:700}#speed small,.record{font-size:12px;font-weight:400}.record{color:var(--muted)}.record b{font-weight:500;color:var(--paper)}.exit{z-index:4;position:fixed;top:max(16px,env(safe-area-inset-top));right:max(18px,env(safe-area-inset-right));width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#17231eec;box-shadow:0 3px 12px #11201930}
.tools{position:fixed;right:max(22px,env(safe-area-inset-right));top:125px;display:flex;gap:7px}.tools button{min-width:44px;height:44px;display:flex;align-items:center;justify-content:center;gap:7px;padding:0 11px;border-radius:10px;background:#17231eeb;font-size:12px}.tools svg{width:18px;height:18px}.tools button[aria-pressed=true]{color:var(--accent)}.course-progress{position:fixed;bottom:0;left:0;width:100%;height:3px;background:#12271b60}.course-progress i{display:block;width:0;height:100%;background:var(--accent)}.ride-info{position:fixed;left:max(25px,env(safe-area-inset-left));bottom:calc(123px + var(--safe-bottom));display:flex;gap:13px;font-size:12px;font-variant-numeric:tabular-nums;text-shadow:0 2px 6px #000}.hint{position:fixed;bottom:calc(126px + var(--safe-bottom));left:50%;transform:translateX(-50%);width:min(370px,60vw);margin:0;text-align:center;font-size:12px;line-height:1.5;text-shadow:0 2px 4px #000,0 0 12px #152218}
.controls{position:fixed;bottom:calc(23px + var(--safe-bottom));left:max(22px,env(safe-area-inset-left));right:max(22px,env(safe-area-inset-right));display:flex;justify-content:space-between;gap:16px;touch-action:none}.control-pair{display:flex;gap:9px;touch-action:none}.control-pair button{width:89px;height:83px;background:#14251df2;border:1px solid #d9e8c442;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;touch-action:none;box-shadow:0 6px 14px #14201a40;transition:background .07s,transform .07s}.control-pair button>*{pointer-events:none}.control-pair svg{width:29px;height:29px}.control-pair span{font-size:12px;font-weight:700}.control-pair button.on{background:#e5aa47;color:#18241b;transform:translateY(2px);border-color:#ffc46c}.control-pair .throttle{background:#f4b447;color:#14201a;border-color:transparent}.control-pair .throttle.on{background:#ffe3a6;box-shadow:0 4px 16px #19160c66}
.overlay{position:fixed;inset:0;display:flex;align-items:center;background:linear-gradient(90deg,#0d1716f7,#0d1716d9 32%,#0d171617 76%);padding:max(38px,env(safe-area-inset-top)) max(40px,6vw) max(25px,var(--safe-bottom));overflow:auto;touch-action:pan-y}.menu{width:min(390px,100%);padding:10px 0}.menu h1{margin:0;font-size:clamp(37px,4.4vw,58px);line-height:1.02;font-weight:850;letter-spacing:-.035em}.menu h1 em{font-style:normal;color:var(--accent);display:block}.menu>p{font-size:13px;line-height:1.6;color:var(--muted);margin:16px 0}.mode-switch{display:flex;gap:7px;margin:18px 0}.mode-switch button{min-height:40px;padding:7px 16px;border-radius:9px;background:#25332de6;color:var(--muted);font-size:12px}.mode-switch button[aria-pressed=true]{background:var(--paper);color:var(--ink);font-weight:700}.mission-detail h2{margin:0;font-size:21px;letter-spacing:-.02em}.mission-detail p{font-size:12px;line-height:1.5;margin:5px 0;color:var(--muted)}.difficulty{margin:12px 0 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted)}#difficulty-ticks{display:flex;gap:3px}#difficulty-ticks b{width:7px;height:12px;background:#d7ddcf38;border-radius:1px}#difficulty-ticks b.on{background:var(--accent)}.track-picker{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;margin:0 0 12px}.track-choice{position:relative;min-height:45px;padding:7px 0;background:#27372ddb;border-radius:8px;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.track-choice[aria-disabled=true]{color:#b1baac;background:#203029b3}.track-choice[aria-pressed=true]{background:var(--accent);color:var(--ink)}.track-choice .cleared{position:absolute;right:3px;top:3px;width:10px;height:10px;fill:none;stroke:var(--focus);stroke-width:2}.track-choice[aria-pressed=true] .cleared{stroke:var(--ink)}.campaign .reward-preview{font-size:12px;line-height:1.5;color:var(--muted);margin:12px 0 18px;min-height:36px}.primary{display:flex;align-items:center;justify-content:center;width:100%;min-height:53px;padding:14px 17px;border-radius:11px;background:var(--accent);color:#132118;font-size:12px;letter-spacing:.03em;font-weight:850;box-shadow:0 5px 15px #11190e40}.secondary{display:block;margin:10px 0 0;padding:8px 0;min-height:36px;background:transparent;text-decoration:underline;text-underline-offset:5px;font-size:12px}.menu>.instructions{font-size:12px;line-height:1.65;margin:14px 0;color:var(--muted)}.menu-links{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;margin-top:10px}.menu-links button,.return-link{background:none;color:var(--muted);padding:8px 0;font-size:12px;min-height:36px}.menu-links button{text-decoration:underline;text-underline-offset:5px}.result{font-size:14px;line-height:1.65;margin:25px 0;color:var(--muted)}.result strong{display:block;color:var(--paper);font-size:40px;font-variant-numeric:tabular-nums;letter-spacing:-.03em}.result span{display:block;font-size:13px}.result .medal{color:var(--accent);font-size:14px;font-weight:700;margin:9px 0}.result .stars{display:flex;gap:8px;margin:14px 0}.stars svg{width:25px;height:25px;fill:var(--accent);stroke:var(--accent)}.stars svg.empty{fill:transparent;stroke:#d7ddcf80}.reward-card{padding:14px 0 0;border-top:1px solid #d7ddcf30}.reward-card b{color:var(--paper);display:block}.toast{z-index:8;pointer-events:none;position:fixed;top:29%;left:50%;transform:translateX(-50%);background:#16281df5;color:var(--paper);padding:14px 20px;border-radius:11px;font-size:13px;text-align:center;width:max-content;max-width:88vw;box-shadow:0 5px 25px #10221655}.sheet{position:fixed;inset:0;z-index:6;background:#0d1716bf;display:grid;place-items:center;padding:20px;touch-action:pan-y;overflow:auto}.sheet-content{position:relative;background:#192b23;border-radius:16px;padding:30px;width:min(560px,100%);max-height:calc(100dvh - 40px);overflow:auto;scrollbar-color:#c5cdb4 #213329}.sheet h2{font-size:27px;letter-spacing:-.025em;margin:0 44px 20px 0}.sheet p,.sheet li{font-size:14px;line-height:1.65;color:var(--muted)}.sheet ol{padding-left:20px}.sheet-close{position:absolute;top:14px;right:14px;background:#304439;width:40px;height:40px;display:grid;place-items:center;border-radius:50%}.passport-list{display:grid;grid-template-columns:1fr 1fr;gap:12px}.passport-item{display:block;width:100%;text-align:left;background:#263c30;min-height:91px;border-radius:12px;padding:13px;color:var(--muted);font-size:12px}.passport-item b{display:block;color:var(--paper);margin:3px 0;font-size:14px}.passport-item.chosen{outline:2px solid var(--accent);outline-offset:2px}.passport-item .swatch{display:inline-block;width:18px;height:6px;border-radius:2px;background:var(--paint)}.error{position:fixed;inset:0;z-index:10;background:#17231e;display:flex;align-items:flex-start;justify-content:center;flex-direction:column;padding:8vw}.error h1{font-size:clamp(26px,5vw,45px);max-width:650px}.error p,.error a{font-size:14px}.error .primary{margin:20px 0;width:260px}
body.menu-open .tools,body.menu-open .controls,body.menu-open .hint,body.menu-open .ride-info{visibility:hidden}body.menu-open .hud{opacity:.7}body.sheet-open .exit{visibility:hidden}
@media(hover:hover){button:hover{filter:brightness(1.09)}.return-link:hover{color:var(--accent)}}
@media(max-width:600px){.hud{top:max(14px,env(safe-area-inset-top));left:14px;right:69px;gap:8px}.game-name{font-size:12px}.identity>span:nth-child(2){font-size:12px}.identity>span:last-child{font-size:12px}.clock{font-size:24px}#speed{font-size:14px}.record{font-size:12px}.exit{right:12px;top:max(12px,env(safe-area-inset-top));width:42px;height:42px}.tools{top:106px;right:12px;gap:6px}.tools button{width:41px;min-width:41px;height:41px;padding:0}.tools span{display:none}.controls{left:10px;right:10px;bottom:calc(18px + var(--safe-bottom));gap:12px}.control-pair{gap:6px}.control-pair button{width:65px;height:76px;border-radius:12px}.control-pair svg{width:26px;height:26px}.hint{bottom:calc(138px + var(--safe-bottom));width:85vw}.ride-info{left:13px;bottom:calc(109px + var(--safe-bottom));font-size:12px}.overlay{align-items:flex-end;padding:110px 23px calc(17px + var(--safe-bottom));background:linear-gradient(0deg,#101f1afc 4%,#101f1af2 55%,#101f1a66 86%,#101f1a20)}.menu{width:min(390px,100%);padding:0}.menu h1{font-size:35px}.menu h1 em{display:inline}.menu>p{font-size:12px;margin:10px 0}.mode-switch{margin:13px 0}.mode-switch button{min-height:37px}.mission-detail h2{font-size:21px}.mission-detail p{font-size:12px}.difficulty{margin:10px 0 12px}.track-picker{gap:6px}.track-choice{min-height:42px;font-size:13px}.campaign .reward-preview{font-size:12px;margin:12px 0;min-height:0}.primary{min-height:50px;font-size:12px}.menu>.instructions{font-size:12px;margin:11px 0}.menu-links{gap:4px 17px;margin-top:5px}.menu-links button,.return-link{font-size:12px}.result{margin:20px 0}.result strong{font-size:37px}.sheet-content{padding:25px 20px}.sheet h2{font-size:24px}.passport-list{gap:9px}.passport-item{padding:11px}.passport-item b{font-size:13px}}
@media(max-width:350px){.control-pair button{width:57px;height:72px}.control-pair{gap:5px}.controls{left:9px;right:9px;gap:9px}.overlay{padding-left:18px;padding-right:18px}.menu h1{font-size:29px}.track-picker{gap:5px}.track-choice{min-height:40px}.difficulty{font-size:12px}#difficulty-ticks{gap:2px}#difficulty-ticks b{width:5px}.telemetry .record{display:none}.mission-detail h2{font-size:19px}}
@media(max-height:670px) and (max-width:600px){.overlay{padding-top:83px}.menu h1{font-size:28px}.menu>p{margin:7px 0}.mode-switch{margin:9px 0}.mode-switch button{min-height:34px;font-size:12px}.mission-detail h2{font-size:18px}.mission-detail #mission-brief{display:none}.track-choice{min-height:36px}.track-picker{gap:5px;margin-bottom:7px}.campaign .reward-preview{font-size:12px;margin:8px 0}.difficulty{margin:7px 0 9px}.primary{min-height:44px}.menu>.instructions{margin:8px 0;font-size:12px}.menu-links button,.return-link{padding:5px 0;min-height:31px}.menu-links{gap:3px 15px}}
@media(max-height:500px) and (min-width:600px){.hud{top:max(10px,env(safe-area-inset-top));left:max(15px,env(safe-area-inset-left));right:calc(max(15px,env(safe-area-inset-right)) + 55px)}.identity>span:last-child{display:none}.clock{font-size:24px}.exit{top:max(9px,env(safe-area-inset-top))}.tools{top:96px;right:max(14px,env(safe-area-inset-right));flex-direction:column;gap:5px}.tools button{height:37px;min-width:37px;padding:0 9px}.tools span{display:none}.controls{bottom:calc(12px + var(--safe-bottom));left:max(13px,env(safe-area-inset-left));right:max(13px,env(safe-area-inset-right))}.control-pair button{width:68px;height:63px}.ride-info{bottom:calc(85px + var(--safe-bottom))}.hint{bottom:calc(87px + var(--safe-bottom));width:280px;font-size:12px}.overlay{padding:16px max(25px,5vw);align-items:center}.menu{width:min(520px,65vw);display:grid;grid-template-columns:1fr 1fr;gap:0 22px}.menu h1{font-size:29px;grid-column:1/-1}.menu h1 em{display:inline}.menu>p{margin:7px 0;font-size:12px;grid-column:1/-1}.campaign{grid-row:3/9;grid-column:1}.mode-switch{margin:7px 0}.mode-switch button{font-size:12px;min-height:32px;padding:5px 9px}.mission-detail h2{font-size:17px}.mission-detail p{font-size:12px}.mission-detail #mission-brief{display:none}.difficulty{margin:7px 0;font-size:12px}#difficulty-ticks b{width:4px;height:9px}.track-picker{gap:4px;margin-bottom:7px}.track-choice{min-height:33px;font-size:12px}.campaign .reward-preview{font-size:12px;margin:8px 0;min-height:0}.primary{min-height:44px;font-size:12px;grid-column:2;align-self:end}.menu>.instructions{grid-column:2;margin:9px 0;font-size:12px}.menu-links{grid-column:2;display:flex;gap:0 13px;margin:0}.menu-links button,.return-link{font-size:12px;padding:6px 0;min-height:29px}.secondary{grid-column:2;font-size:12px;margin-top:4px}.result{grid-column:1;grid-row:3/7;margin:10px 0}.result strong{font-size:28px}.result span,.result .medal{font-size:12px}.result .stars{margin:8px 0}.reward-card{padding-top:8px}.reward-card b{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}.control-pair button{transition:none}}

.postcard-preview{display:block;width:100%;height:auto;border-radius:10px;margin:0 0 18px;-webkit-touch-callout:default;-webkit-user-select:auto;user-select:auto}

.charge{--preload:0;position:absolute;left:50%;transform:translateX(-50%);bottom:0;width:66px;height:83px;border-radius:14px;background:#14251df2;border:1px solid #d9e8c442;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;touch-action:none;overflow:hidden;color:var(--paper)}.charge>*{pointer-events:none}.charge svg{width:27px;height:27px}.charge span{font-size:12px;font-weight:700}.charge i{position:absolute;bottom:0;left:0;width:calc(var(--preload)*100%);height:5px;background:var(--accent)}.charge.on{background:#334b37;color:#fff8e9}.charge.on svg{transform:scaleY(.72)}
@media(max-width:600px){.charge{width:54px;height:76px;border-radius:12px}.hint{bottom:calc(142px + var(--safe-bottom));font-size:12px;width:90vw}.menu-links{column-gap:14px}}
@media(max-width:350px){.charge{height:72px}.charge svg{width:24px;height:24px}}
@media(max-height:500px) and (min-width:600px){.charge{height:63px}.hint{bottom:calc(88px + var(--safe-bottom));max-width:370px}}

@media(max-height:500px) and (min-width:600px){.hint{top:70px;bottom:auto;max-width:360px;width:48vw}}
@media(max-width:350px){.menu-links{column-gap:8px}}

/* Rolling Trial: the ride is the home view; detail belongs in the hub. */
.home-route{margin:30px 0 28px}.home-route h2{font-size:24px;line-height:1.2;margin:0 0 7px}.home-route span{font-size:13px;color:var(--muted)}.home-menu{display:flex;align-items:center;justify-content:center;gap:9px;min-height:48px;width:100%;background:transparent;color:var(--paper);margin-top:10px;font-size:14px}.home-menu svg{width:20px;height:20px}.menu>.instructions{display:none}.menu .home-route:has(h2[hidden]){display:none}.tools{top:max(110px,calc(env(safe-area-inset-top) + 85px))}.tools button{min-width:44px;height:44px}.charge{height:67px;width:66px;bottom:8px;background:#17271dcc}.charge span{font-size:12px;letter-spacing:.01em}.charge svg{width:23px;height:23px}
.hub{position:fixed;inset:0;z-index:6;background:#0d1716d9;display:grid;place-items:center;padding:22px;overflow:auto;touch-action:pan-y}.hub-content{width:min(520px,100%);max-height:calc(100dvh - 44px);overflow:auto;background:#192b23;border-radius:16px;padding:22px 26px;scrollbar-color:#c5cdb4 #213329}.hub-header{display:flex;align-items:center;gap:10px;margin-bottom:18px}.hub-header h2{font-size:27px;letter-spacing:-.025em;margin:0;flex:1;outline:none}.icon-button{background:#304439;min-width:44px;height:44px;border-radius:50%;display:grid;place-items:center}.icon-button svg{width:21px;height:21px}.hub-nav{display:flex;flex-direction:column}.hub-nav>button,.hub-nav>a{min-height:60px;padding:15px 0;display:flex;align-items:center;justify-content:space-between;gap:18px;background:transparent;border-bottom:1px solid #d7ddcf26;text-decoration:none;text-align:left;font-size:17px;font-weight:600}.hub-nav>button>span{display:block}.hub-nav small{display:block;color:var(--muted);font-size:12px;font-weight:400;margin-top:4px}.hub-nav>button>svg,.hub-nav>a>svg{width:18px;height:18px;color:#aebfae}.hub-nav>.return-link{border:0;font-size:13px;color:var(--muted);margin-top:9px}.hub-page .campaign{display:block}.hub-page .mode-switch{margin-top:0}.hub-page .track-picker{gap:8px;margin:16px 0}.hub-page .track-choice{min-height:48px}.hub-page .primary{margin-top:18px}.settings{display:flex;flex-direction:column;gap:0}.settings>button{display:flex;align-items:center;gap:12px;min-height:57px;background:transparent;border-bottom:1px solid #d7ddcf26;text-align:left;font-size:15px}.settings>button svg{width:22px;height:22px;color:var(--accent)}.setting-toggle{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:64px;border-bottom:1px solid #d7ddcf26;font-size:15px;cursor:pointer}.setting-toggle small{display:block;font-size:12px;color:var(--muted);margin-top:4px}.setting-toggle input{width:23px;height:23px;accent-color:var(--accent);flex-shrink:0}.setting-toggle:focus-within{outline:2px solid var(--focus);outline-offset:4px}.sheet{z-index:8}body.hub-open .exit{visibility:hidden}
@media(max-width:600px){.overlay{align-items:flex-end;padding:120px 24px calc(44px + var(--safe-bottom));background:linear-gradient(0deg,#101f1afc 5%,#101f1ae0 48%,#101f1a00 100%)}.menu h1{font-size:clamp(36px,10vw,47px)}.menu h1 em{display:block}.menu>p{font-size:14px;margin:14px 0}.home-route{margin:23px 0}.home-route h2{font-size:23px}.home-route span{font-size:13px}.primary{min-height:54px;font-size:14px}.home-menu{min-height:46px;margin-top:9px}.hub{padding:12px}.hub-content{padding:20px;max-height:calc(100dvh - 24px)}.hub-header h2{font-size:25px}.hub-nav>button{min-height:58px;font-size:16px}.hub-page .track-choice{min-height:45px}.tools{top:102px}.tools button{width:44px;height:44px}.tools span{display:none}.charge{width:54px;height:59px;bottom:7px}.charge span{font-size:12px}.charge svg{width:23px;height:23px}}
@media(max-width:350px){.overlay{padding-left:20px;padding-right:20px;padding-bottom:32px}.menu h1{font-size:35px}.home-route{margin:20px 0}.home-route h2{font-size:21px}.hub-content{padding:17px}.hub-header{margin-bottom:12px}.hub-nav>button{min-height:54px}.charge{height:56px;bottom:8px}}
@media(max-height:500px) and (min-width:600px){.overlay{padding:25px 6vw;align-items:center}.menu{display:block;width:min(330px,45vw)}.menu h1{font-size:34px}.menu h1 em{display:block}.menu>p{margin:10px 0}.home-route{margin:15px 0 18px}.home-route h2{font-size:21px}.primary{min-height:46px}.home-menu{min-height:40px;margin-top:4px}.hub{padding:10px}.hub-content{max-height:calc(100dvh - 20px);padding:16px 23px}.hub-nav{display:grid;grid-template-columns:1fr 1fr;column-gap:26px}.hub-nav>button{min-height:54px;font-size:15px}.hub-nav>.return-link{margin:0}.hub-header{margin-bottom:8px}.hub-header h2{font-size:23px}.hub-page .track-choice{min-height:42px}.charge{height:51px;bottom:5px}.tools{top:76px}}
body.menu-open:has(#modal[data-state=ready]) .hud{visibility:hidden}

body:not(.menu-open) .toast{display:none}.ride-stats{font-size:13px;line-height:1.6;color:var(--muted);margin:12px 0}.ride-stats+ .reward-card{margin-top:14px}

/* Contact Ride: opaque captions on translucent, staggered thumb pads. */
.controls{bottom:calc(22px + var(--safe-bottom));align-items:flex-end}.control-pair{align-items:flex-end;gap:11px}.control-pair button{background:rgba(20,37,29,.72);box-shadow:0 4px 12px #10201626}.control-pair:first-child button:nth-child(2){margin-bottom:10px}.control-pair button[data-k=b]{margin-bottom:13px}.control-pair .throttle{width:96px;height:96px;background:rgba(244,180,71,.84)}.control-pair button.on{background:rgba(229,170,71,.90)}.control-pair .throttle.on{background:rgba(255,227,166,.94)}.charge{background:rgba(20,37,29,.68);bottom:5px}.control-pair span,.control-pair svg,.charge span,.charge svg{opacity:1}.version-label{font-size:12px;color:var(--muted);margin:0 0 14px}.ride-info{bottom:calc(133px + var(--safe-bottom))}
@media(max-width:600px){.controls{left:12px;right:12px;bottom:calc(20px + var(--safe-bottom))}.control-pair{gap:7px}.control-pair button{width:61px;height:70px;border-radius:14px}.control-pair:first-child button:nth-child(2){margin-bottom:9px}.control-pair button[data-k=b]{width:60px;height:68px;margin-bottom:13px}.control-pair .throttle{width:70px;height:88px}.charge{width:50px;height:58px;bottom:4px}.ride-info{bottom:calc(126px + var(--safe-bottom));left:15px}}
@media(max-width:350px){.controls{left:9px;right:9px}.control-pair{gap:5px}.control-pair button{width:54px;height:66px}.control-pair button[data-k=b]{width:54px;height:65px}.control-pair .throttle{width:64px;height:82px}.charge{width:46px;height:56px}.charge span{font-size:12px}.ride-info{bottom:calc(119px + var(--safe-bottom))}}
@media(max-height:500px) and (min-width:600px){.controls{bottom:calc(12px + var(--safe-bottom))}.control-pair button{width:68px;height:63px}.control-pair .throttle{width:76px;height:75px}.control-pair button[data-k=b]{margin-bottom:8px}.charge{height:51px;bottom:4px}.ride-info{bottom:calc(96px + var(--safe-bottom))}}

body.menu-open .controls,body.menu-open .controls *,body.hub-open .controls,body.hub-open .controls *{visibility:hidden!important}

.route-details{margin:14px 0;color:var(--muted);font-size:13px}.route-details summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--paper);text-decoration:underline;text-underline-offset:4px}.route-details p{line-height:1.55}.route-details ol{padding-left:23px;line-height:1.8;max-height:230px;overflow:auto;touch-action:pan-y}.ride-info{flex-wrap:wrap;column-gap:13px;row-gap:3px}#sections-stat{font-size:12px;color:var(--paper)}
.hub[data-panel="garage"] .hub-content{width:min(1120px,100%);max-width:1120px}.garage{display:grid;grid-template-columns:minmax(0,1fr) minmax(350px,.9fr);gap:34px}.garage[hidden]{display:none}.garage-overview{min-width:0}.garage-bike-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.garage-bike-title h3{margin:0;font-size:clamp(27px,4vw,44px);line-height:1.1;letter-spacing:-.025em}.garage-bike-title p{margin:8px 0 0;color:var(--muted);font-size:14px}.garage-bike-title>span{white-space:nowrap;font-size:14px;color:var(--accent);font-weight:700}.garage canvas{display:block;width:100%;height:auto;margin:20px 0 12px;border-radius:12px}.garage-overview>p{font-size:14px;line-height:1.55}.garage-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:20px 0}.garage-stats div{padding:11px 0;border-top:1px solid #d7ddcf30}.garage-stats dt{color:var(--muted);font-size:12px}.garage-stats dd{font-size:20px;font-weight:700;margin:5px 0 0;font-variant-numeric:tabular-nums}.garage-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;margin-bottom:15px;border-bottom:1px solid #d7ddcf30}.garage-tabs button{min-height:44px;padding:8px 2px;background:transparent;border:0;border-radius:0;color:var(--muted);font-size:12px;font-weight:700}.garage-tabs button[aria-pressed="true"]{color:var(--accent);box-shadow:inset 0 -2px var(--accent)}.garage-model,.garage-part{display:flex;gap:16px;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid #d7ddcf25}.garage-model-view{min-height:60px;flex:1;text-align:left;background:transparent;border:0;color:var(--paper);padding:0}.garage-model-view b{display:block;font-size:22px;line-height:1.2}.garage-model-view span{display:block;color:var(--muted);font-size:12px;margin-top:7px}.garage-model-view[aria-pressed="true"] b{color:var(--accent)}.garage-buy{min-height:44px;max-width:150px;padding:9px 12px;background:#d7ddcf12;border:1px solid #d7ddcf3a;border-radius:10px;font-size:12px;font-weight:700;color:var(--paper)}.garage-buy:disabled{opacity:.48;cursor:default}.garage-part>div{min-width:0}.garage-part b{display:block;font-size:15px}.garage-part span{display:block;margin-top:6px;color:var(--muted);font-size:12px}.garage-part details{font-size:12px;color:var(--muted);margin-top:4px}.garage-part summary{min-height:44px;padding-top:9px;cursor:pointer}.garage-part details p{max-width:32ch;line-height:1.55;margin:4px 0}.garage-status{min-height:38px;margin:18px 0 9px;font-size:13px;line-height:1.5;color:var(--paper)}.garage-note,.garage .garage-note{font-size:12px;line-height:1.55;color:var(--muted);margin:10px 0}.garage #garage-start{display:block;width:100%;margin-top:18px;min-height:48px}.garage-fields{padding-top:10px}.garage-fields[hidden]{display:none}.garage-fields label{display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:14px;margin:0 0 18px}.garage-fields input,.garage-fields select{max-width:62%;min-height:44px;background:#25372c;border:1px solid #d7ddcf55;border-radius:8px;padding:8px 10px;color:var(--paper);font:16px PachaNoto,Arial,sans-serif;user-select:auto;-webkit-user-select:auto}.garage-fields input[type="color"]{width:70px;padding:5px}.garage-fields input[type="number"]{width:84px}.garage-fields p{font-size:13px;line-height:1.6;color:var(--muted)}.garage-palette{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px}.garage-palette button{background:var(--colour);width:44px;height:44px;border-radius:50%;border:2px solid transparent}.garage-palette button[aria-pressed="true"]{border-color:var(--paper);box-shadow:0 0 0 2px #14251d}.garage-workbench{min-width:0}
@media(max-width:760px){.garage{grid-template-columns:1fr;gap:22px}.garage canvas{max-height:230px;object-fit:contain;margin:16px 0 9px}.garage-overview>p{margin:10px 0}.garage-stats{margin:14px 0 0}.garage-stats dd{font-size:18px}.garage-bike-title h3{font-size:30px}.garage-overview>.garage-note{display:none}.garage-tabs{position:sticky;top:-1px;z-index:1;background:#18271e}.garage-part{padding:13px 0}.garage-buy{max-width:133px}.garage .garage-note{max-width:48ch}.garage-fields select{font-size:16px}.hub[data-panel="garage"] .hub-content{padding-bottom:24px}}
@media(max-height:500px) and (min-width:761px){.garage{grid-template-columns:1fr 1fr;gap:22px}.garage canvas{max-height:190px}.garage-overview>p,.garage-overview>.garage-note{display:none}.garage-stats{margin:9px 0}.garage-bike-title h3{font-size:26px}}

/* R10 review: keep comparative meaning and readable labels on narrow phones. */
.garage-stat-basis{font-size:12px!important;line-height:1.5!important;color:var(--muted);margin:10px 0}
@media(max-width:350px){.garage-stats{grid-template-columns:1fr 1fr;gap:4px 14px}.garage-stats div{display:flex;align-items:baseline;justify-content:space-between;gap:5px;padding:7px 0}.garage-stats dd{font-size:16px;margin:0}.garage-tabs button{padding:8px 1px}.garage-bike-title{gap:8px}}

/* R11: route goals stay in the mission sheet; the ride keeps one quiet cue. */
.mission-goals{list-style:none;margin:14px 0;padding:0;font-size:12px;line-height:1.45}.mission-goals li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid #d7ddcf26}.mission-goals span{color:var(--muted)}.mission-goals b{color:var(--accent);white-space:nowrap;font-variant-numeric:tabular-nums}.mission-goals .goal-done b{color:#bfffce}.finish-goals{margin:14px 0 0;padding-top:8px;border-top:1px solid #d7ddcf30}.finish-goals p{font-size:12px;margin:4px 0}.section-cue{position:absolute;top:132px;left:28px;max-width:min(490px,calc(100% - 98px));font-size:12px;line-height:1.5;color:var(--paper);text-shadow:0 2px 5px #0b1815;pointer-events:none}.ride-info{flex-wrap:wrap;max-width:calc(100% - 32px);column-gap:16px;row-gap:3px}body.menu-open .section-cue{visibility:hidden}@media(max-width:600px){.section-cue{top:132px;left:14px;max-width:calc(100% - 82px);font-size:12px}.ride-info{column-gap:12px}.mission-goals li{padding:8px 0}}@media(max-height:500px) and (min-width:600px){.section-cue{top:77px;left:15px;max-width:60vw;font-size:12px}}

/* R12: brief physical feedback and a quiet replay control. */
.mode-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.ride-feedback{position:fixed;left:50%;top:24%;transform:translateX(-50%);padding:10px 16px;background:#14251df2;color:#fff8e9;font-size:14px;font-weight:700;border-radius:10px;box-shadow:0 4px 14px #10201638;pointer-events:none;max-width:calc(100% - 28px);text-align:center}
.replay-ui{position:fixed;left:50%;bottom:calc(24px + var(--safe-bottom));transform:translateX(-50%);display:grid;justify-items:center;gap:10px;color:var(--paper);text-shadow:0 2px 5px #102016;font-size:13px;width:calc(100% - 28px)}
.replay-ui button{background:var(--paper);color:var(--ink);min-height:48px;padding:12px 22px;border-radius:10px;font-weight:700;text-shadow:none}
.replay-ui[hidden],.ride-feedback[hidden]{display:none}
body.replay-open .controls,body.replay-open .tools,body.replay-open .hud,body.replay-open .section-cue,body.replay-open .ride-info,body.replay-open #exit{visibility:hidden!important}
#home-daily{font-size:13px;min-height:44px;margin-top:6px;text-decoration:underline;text-underline-offset:5px}
body.menu-open:not(:has(#modal[data-state=ready])) #home-daily{display:none}
@media(prefers-reduced-motion:reduce){.ride-feedback,.replay-ui{animation:none;transition:none}}

#fall-ui[hidden]{display:none}body.falling-open .controls,body.falling-open .tools{visibility:hidden!important}

/* R13 seasons are real route choices; the small profile previews actual physics. */
.season-filters{display:flex;gap:6px;margin:14px 0 9px}.season-filters button{flex:1;min-height:40px;padding:8px 5px;background:#25382c;color:#d7ddcf;border:0;border-radius:8px;font:inherit;font-size:12px}.season-filters button[aria-pressed=true]{background:#fff8e9;color:#132118;font-weight:700}.route-profile{display:block;width:100%;height:66px;margin:0 0 12px;border-radius:6px}.track-choice[hidden]{display:none}.track-picker{grid-template-columns:repeat(6,minmax(0,1fr))}.difficulty i{max-width:55%;gap:2px}#difficulty-ticks b{width:4px;flex:1;max-width:6px}.setting-toggle input:disabled{opacity:.5}.mission-detail #mission-place{color:#d7ddcf}
@media(max-width:600px){.route-profile{height:54px}.season-filters{gap:5px}.season-filters button{min-height:40px}.hub-content{overscroll-behavior:contain}.track-choice{min-height:42px}}
@media(max-height:500px){.route-profile{height:40px}.season-filters{margin-top:8px}.hub-content{max-height:calc(100dvh - 20px)}}

/* R18: raised thumb controls and a separate editor for each orientation. */
#controls{bottom:calc(62px + var(--safe-bottom))}
@media(orientation:landscape){#controls{bottom:calc(40px + var(--safe-bottom))}}
#controls.layout-ready{position:fixed;inset:0;width:100%;height:100%;display:block;pointer-events:none;z-index:3}
#controls.layout-ready .control-pair{display:contents}
#controls.layout-ready button[data-k],.controls-editor-key{
 position:absolute;left:var(--control-x);top:var(--control-y);right:auto;bottom:auto;
 width:var(--control-w,64px);height:var(--control-h,70px);min-width:48px;min-height:48px;
 margin:0;padding:5px 2px;transform:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
 border:1px solid #e8efda80;border-radius:15px;color:#fff8e9;background:rgba(17,32,25,var(--control-alpha,.72));
 box-shadow:0 3px 10px #06110b30;pointer-events:auto;touch-action:none;overflow:hidden;
 transition:background .07s,box-shadow .07s;isolation:isolate
}
#controls.layout-ready button[data-k] svg,.controls-editor-key svg{width:var(--control-icon,26px);height:var(--control-icon,26px);opacity:1}
#controls.layout-ready button[data-k] span,.controls-editor-key span{font-size:var(--control-label,12px);font-weight:700;line-height:1.15;opacity:1;letter-spacing:0;white-space:nowrap}
#controls.layout-ready button[data-k]>* , .controls-editor-key>*{pointer-events:none}
#controls.layout-ready button[data-k="g"],.controls-editor-key.is-gas{background:rgba(244,180,71,var(--control-alpha,.72));color:#102018;border-color:#f9d18aab}
#controls.layout-ready button[data-k].on{background:#e5aa47;color:#102018;box-shadow:inset 0 0 0 2px #ffe0a5,0 2px 9px #07120d45;transform:none}
#controls.layout-ready button[data-k="g"].on{background:#ffe3a6}
#controls.layout-ready button[data-k="c"] i{position:absolute;left:0;bottom:0;width:calc(var(--preload)*100%);height:5px;background:#ffd077}
#controls-safe-area{position:fixed;inset:0;visibility:hidden;pointer-events:none;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}
.settings>#controls-layout-open{min-height:72px}
#controls-layout-open small{display:block;margin-top:5px;font-size:12px;font-weight:400;line-height:1.4;color:var(--muted)}
.controls-layout-summary{margin:11px 0 17px;font-size:12px;line-height:1.55;color:var(--muted)}

.controls-editor{position:fixed;inset:0;z-index:20;overflow:hidden;background:linear-gradient(180deg,#07130fe8 0,#07130f75 34%,#07130f1a 68%,#07130f70 100%);touch-action:none}
body.controls-editing #hub,body.controls-editing #modal,body.controls-editing .hud,body.controls-editing .tools,body.controls-editing .ride-info,body.controls-editing .section-cue,body.controls-editing .exit,body.controls-editing #toast{visibility:hidden!important}
.controls-editor-header{position:absolute;top:max(12px,env(safe-area-inset-top));left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));z-index:3;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 14px;align-items:center;pointer-events:none}
.controls-editor-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
.controls-editor-title h2{font-size:25px;line-height:1.1;letter-spacing:-.025em;margin:0}
.controls-editor-title>span{font-size:12px;color:#dce6d7}
.controls-editor-actions{display:flex;gap:7px;pointer-events:auto}
.controls-editor-actions button{height:44px;padding:0 15px;border:1px solid #d7ddcf55;border-radius:9px;background:#20382cec;color:var(--paper);font-size:13px;font-weight:700;white-space:nowrap}
.controls-editor-actions .controls-editor-save{background:var(--accent);border-color:var(--accent);color:#14251d}
.controls-editor-actions button[aria-expanded="true"]{box-shadow:inset 0 0 0 1px var(--focus);color:var(--focus)}
#controls-editor-help{grid-column:1/-1;max-width:560px;margin:0;color:#e5ecdf;font-size:12px;line-height:1.5;text-shadow:0 1px 4px #07150f}
.controls-editor-preview{position:absolute;inset:0;pointer-events:none}
.controls-editor-key{cursor:grab;z-index:1;outline-offset:4px;user-select:none;-webkit-user-select:none}
.controls-editor-key.is-selected{outline:2px solid #bfffce;box-shadow:0 0 0 6px #13261b50,0 5px 20px #06110b65}
.controls-editor-key.is-dragging{cursor:grabbing;outline-color:#fff8e9;box-shadow:0 8px 26px #020b075e;z-index:2}
.controls-editor-panel{position:absolute;z-index:4;top:calc(max(12px,env(safe-area-inset-top)) + 78px);right:max(14px,env(safe-area-inset-right));width:min(350px,calc(100% - 28px));max-height:calc(100dvh - 210px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto;overscroll-behavior:contain;touch-action:pan-y;padding:16px 20px 18px;border:1px solid #c7dec151;border-radius:14px;background:#14281ff5;box-shadow:0 8px 35px #05120b66;scrollbar-color:#a3bba1 #1c3428}
.controls-editor-range{display:block;margin-bottom:12px;touch-action:pan-y}
.controls-editor-range>span{display:flex;justify-content:space-between;gap:12px;font-size:13px;line-height:1.4}
.controls-editor-range output{color:#f4c978;font-variant-numeric:tabular-nums;white-space:nowrap}
.controls-editor-range input[type="range"]{display:block;width:100%;height:44px;margin:0;padding:0;accent-color:#f4b447;touch-action:pan-x;cursor:ew-resize}
.controls-editor-switch{display:flex;justify-content:space-between;align-items:center;min-height:48px;gap:14px;font-size:14px;border-top:1px solid #d7ddcf30}
.controls-editor-switch input{width:23px;height:23px;accent-color:var(--accent)}
.controls-editor-nudge{padding:10px 0 12px;border-top:1px solid #d7ddcf30}
.controls-editor-nudge>label{display:block;margin-bottom:8px;font-size:13px;color:var(--muted)}
.controls-editor-nudge select{width:100%;height:44px;padding:0 10px;border-radius:7px;border:1px solid #d7ddcf66;background:#233c2f;color:var(--paper);font:16px PachaNoto,Arial,sans-serif}
.controls-editor-nudge>div{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:9px}
.controls-editor-nudge button{min-width:44px;height:44px;display:grid;place-items:center;border-radius:7px;background:#2b4436;border:1px solid #d7ddcf33}
.controls-editor-nudge button svg{width:22px;height:22px}
.controls-editor-reset{width:100%;min-height:48px;padding:10px;border-radius:8px;border:1px solid #d7ddcf55;background:#233c2f;font-size:13px;font-weight:700}
.controls-editor-note{font-size:12px;line-height:1.55;color:var(--muted);margin:10px 0 0}
.controls-editor-status{position:absolute;left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));bottom:calc(8px + env(safe-area-inset-bottom));z-index:2;pointer-events:none;text-align:center;margin:0;color:#f5f8ed;font-size:12px;line-height:1.5;text-shadow:0 1px 4px #07150f,0 0 8px #07150f}
@media(max-width:600px){
 .controls-editor-header{grid-template-columns:1fr;gap:9px}
 .controls-editor-title{justify-content:space-between}
 .controls-editor-title h2{font-size:23px}
 .controls-editor-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px}
 .controls-editor-actions button{padding:0 8px;font-size:12px}
 .controls-editor-panel{top:calc(max(12px,env(safe-area-inset-top)) + 126px);max-height:max(150px,calc(100dvh - 360px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));padding:15px 17px;width:calc(100% - 28px);right:14px}
 .controls-editor-status{font-size:12px}
}
@media(orientation:landscape) and (max-height:500px){
 .controls-editor-header{top:max(8px,env(safe-area-inset-top));grid-template-columns:minmax(0,1fr) auto;gap:3px 12px}
 .controls-editor-title h2{font-size:21px}
 .controls-editor-actions button{height:42px;padding:0 12px}
 #controls-editor-help{font-size:12px}
 .controls-editor-panel{top:calc(max(8px,env(safe-area-inset-top)) + 70px);right:50%;transform:translateX(50%);width:310px;max-height:calc(100dvh - 125px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:12px 17px}
 .controls-editor-range{margin-bottom:7px}
 .controls-editor-range input[type="range"]{height:38px}
 .controls-editor-status{font-size:12px;bottom:calc(5px + env(safe-area-inset-bottom))}
}
@media(prefers-reduced-motion:reduce){#controls.layout-ready button[data-k],.controls-editor-key{transition:none}}

/* R19: telemetry stays at the top; the riding line carries no instruction text. */
:root{--hud-top:max(12px,env(safe-area-inset-top));--hud-left:max(14px,env(safe-area-inset-left));--hud-right:max(14px,env(safe-area-inset-right))}
.hud{
 top:var(--hud-top);left:var(--hud-left);right:var(--hud-right);z-index:2;
 display:grid;grid-template-columns:minmax(0,1fr) 104px;gap:6px 12px;
 align-items:start;max-width:none;text-shadow:0 2px 6px #091710cc
}
.hud .identity{grid-column:1;min-width:0;min-height:44px;justify-content:center;gap:3px}
.hud .game-name{display:none}
.hud #track-name{font-size:15px;font-weight:700;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud #mission-counter{display:block;font-size:12px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud .telemetry{grid-column:1/-1;display:flex;flex-direction:row;align-items:center;gap:16px;min-width:0;min-height:24px}
.hud .clock{font-size:22px;font-weight:700;line-height:1.1;flex:0 0 auto}
.hud #speed{font-size:13px;font-weight:600;line-height:1.3;white-space:nowrap;flex:0 0 auto}
.hud #speed small{font-size:12px}
.hud .ride-info{
 position:static;inset:auto;display:flex;flex-wrap:nowrap;min-width:0;max-width:none;
 margin-left:auto;gap:16px;font-size:12px;line-height:1.35;white-space:nowrap;pointer-events:none
}
.hud .ride-feedback{
 position:static;inset:auto;transform:none;flex:1 1 auto;min-width:0;max-width:none;
 margin:0 0 0 auto;padding:0;background:none;border-radius:0;box-shadow:none;
 color:#f4d194;font-size:12px;font-weight:600;line-height:1.35;text-align:right;
 white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.hud .telemetry:has(.ride-feedback:not([hidden])) .ride-info{display:none}
#exit.exit{top:var(--hud-top);right:var(--hud-right);width:44px;height:44px}
#tools.tools{top:var(--hud-top);right:calc(var(--hud-right) + 52px);z-index:4;gap:0;flex-direction:row}
#tools.tools button{width:44px;min-width:44px;height:44px;padding:0;border-radius:50%}
#tools.tools span{display:none}
#section-cue,.hint{display:none!important}
body.menu-open .hud{opacity:.7}
@media(max-width:600px){
 :root{--hud-top:max(10px,env(safe-area-inset-top));--hud-left:max(12px,env(safe-area-inset-left));--hud-right:max(12px,env(safe-area-inset-right))}
 .hud{gap:4px 10px}
 .hud #track-name{font-size:14px}
 .hud .telemetry{gap:14px;min-height:22px}
 .hud .clock{font-size:20px}
 .hud .ride-info{gap:0}
 .hud #faults,.hud #sections-stat{display:none}
 .hud .telemetry:has(.ride-feedback:not([hidden])) #speed{display:none}
}
@media(max-height:500px) and (min-width:600px){
 :root{--hud-top:max(8px,env(safe-area-inset-top))}
 .hud{grid-template-columns:minmax(0,1fr) auto 104px;gap:6px 18px}
 .hud .identity{grid-column:1;grid-row:1;min-height:44px}
 .hud .telemetry{grid-column:2;grid-row:1;min-height:44px;gap:14px}
 .hud .ride-info{gap:0}
 .hud #faults,.hud #sections-stat{display:none}
 .hud .clock{font-size:21px}
 .hud .ride-feedback{max-width:180px}
}

/* R21: a single contextual mechanism instruction, inside the existing HUD. */
.hud .ride-feedback.mechanism-feedback{white-space:normal;text-wrap:balance;line-height:1.3;max-width:340px;}
@media(max-width:600px){.hud .ride-feedback.mechanism-feedback{max-width:245px;font-size:12px}}
@media(max-height:500px) and (min-width:600px){.hud .ride-feedback.mechanism-feedback{max-width:240px;font-size:12px}}

/* R22: the task, its controls and its world target share one clear state. */
.interaction-panel{position:fixed;z-index:3;top:calc(var(--hud-top) + 87px);left:var(--hud-left);width:min(390px,calc(100% - 28px));max-height:250px;overflow:auto;padding:12px 14px 13px;background:#15291ff5;border-radius:12px;color:#fff8e9;box-shadow:0 6px 20px #08160d40;touch-action:pan-y;scrollbar-color:#c5cdb4 #213329}
.interaction-panel[hidden],.interaction-target[hidden],.interaction-panel [hidden]{display:none!important}
.interaction-head{display:flex;align-items:center;gap:10px;min-height:36px}
.interaction-head h2{font-size:16px;line-height:1.3;letter-spacing:-.015em;flex:1;margin:0;text-wrap:balance}
#interaction-step{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:#f4d194;white-space:nowrap}
#interaction-help{width:44px;min-width:44px;height:44px;display:grid;place-items:center;background:transparent;color:#eadfc8;margin:-6px -6px -6px 0;border-radius:8px}
#interaction-help svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#interaction-prompt{font-size:14px;line-height:1.4;margin:5px 0 0;color:#fff8e9;text-wrap:pretty}
#interaction-detail{font-size:12px;line-height:1.45;margin:7px 0 0;color:#d6e0ca;max-width:62ch}
.interaction-commands{margin-top:10px}
.interaction-action{display:flex;align-items:center;justify-content:center;gap:10px;min-height:52px;width:100%;padding:10px 12px;border-radius:9px;background:#f4b447;color:#13251b;font-size:14px;font-weight:750;line-height:1.25;transition:background .15s}
.interaction-action svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linejoin:round;stroke-linecap:round;flex:0 0 auto}
.interaction-action kbd{margin-left:auto;padding:3px 6px;border:1px solid #19352255;border-radius:4px}
.interaction-action:disabled{background:#3b4d3e;color:#e0e5d4;cursor:default;opacity:1}
.interaction-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.interaction-choices button{display:flex;align-items:center;gap:8px;text-align:left;min-height:52px;border-radius:9px;background:#f4b447;color:#13251b;font-size:13px;font-weight:700;line-height:1.3;padding:9px 10px}
.interaction-choices button:disabled{background:#3b4d3e;color:#e0e5d4;cursor:default;opacity:1}
.interaction-choices button>span{min-width:0;overflow-wrap:anywhere;hyphens:auto}
.interaction-choices kbd{display:grid;place-items:center;min-width:22px;height:24px;border:1px solid #19352255;border-radius:4px;font:600 12px PachaNoto,Arial,sans-serif}
.interaction-feedback{margin:9px 0 0;font-size:12px;line-height:1.4;color:#e8ddbf}
.interaction-feedback[data-tone=ok],.interaction-panel[data-state=solved] #interaction-step{color:#bfffce}
.interaction-feedback[data-tone=retry]{color:#ffcf98}
.interaction-meter{height:5px;margin:10px 0 0;background:#52624a;border-radius:3px;overflow:hidden}
.interaction-meter i{height:100%;display:block;width:0;background:#f4c865;border-radius:3px;transition:width .08s linear}
.interaction-target{position:fixed;z-index:2;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;gap:7px;min-width:88px;min-height:48px;max-width:168px;padding:7px 10px;background:#ffe2a0;color:#15271c;border:1px solid #162a1ccc;border-radius:9px;font-size:12px;font-weight:750;line-height:1.2;box-shadow:0 4px 12px #09170f50;touch-action:manipulation}
.interaction-target svg{width:20px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.interaction-target[data-edge=right] svg{transform:rotate(-90deg)}
.interaction-target[data-edge=left] svg{transform:rotate(90deg)}
.interaction-target[data-state=solved]{background:#c4efb0}
.interaction-target:disabled{cursor:default;opacity:1}
body.menu-open .interaction-panel,body.menu-open .interaction-target,body.hub-open .interaction-panel,body.hub-open .interaction-target,body.replay-open .interaction-panel,body.replay-open .interaction-target,body.controls-editing .interaction-panel,body.controls-editing .interaction-target{visibility:hidden!important;pointer-events:none!important}
body.interaction-open .hud .ride-info{display:none}
.home-route #home-objective{font-size:13px;line-height:1.5;margin:12px 0 0;color:#ead7af;max-width:45ch}
.mission-interaction{font-size:13px;line-height:1.5;color:#f4d194;margin:13px 0 0}
.chapter-filter,.setting-select{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:14px}
.chapter-filter{margin:17px 0 8px}
.chapter-filter select,.setting-select select{min-height:44px;min-width:0;max-width:80%;background:#263e2e;border:1px solid #65795d;border-radius:8px;color:#fff8e9;font:14px PachaNoto,Arial,sans-serif;padding:8px 10px;cursor:pointer}
.setting-select{min-height:72px;border-bottom:1px solid #d7ddcf26}
.setting-select select{max-width:48%}
.setting-select small{display:block;font-size:12px;line-height:1.4;color:#d7ddcf;margin-top:4px}
.setting-toggle input:disabled{opacity:.65}
.hub-page .track-picker{grid-template-columns:repeat(10,minmax(0,1fr))}
.hub[data-panel=missions] .hub-content{width:min(680px,100%)}
::selection{background:#f4b447;color:#15271c}
.interaction-panel button:focus-visible,.interaction-target:focus-visible,.chapter-filter select:focus-visible,.setting-select select:focus-visible{outline:3px solid #bfffce;outline-offset:3px}
@media(hover:none){.interaction-action kbd,.interaction-choices kbd{display:none}}
@media(max-width:600px){
 .interaction-panel{top:calc(var(--hud-top) + 82px);width:calc(100% - 24px);padding:10px 12px 11px}
 .interaction-head h2{font-size:15px}.interaction-head{min-height:30px}
 #interaction-prompt{font-size:13px}.interaction-action,.interaction-choices button{min-height:50px;font-size:13px}
 #interaction-detail{font-size:12px}.interaction-feedback{margin-top:7px}
 .interaction-target{max-width:150px}
 .hub-page .track-picker{grid-template-columns:repeat(5,minmax(0,1fr))}
 .chapter-filter{display:block}.chapter-filter select{display:block;width:100%;max-width:100%;margin-top:7px}
 .home-route #home-objective{font-size:12px;margin-top:10px}
}
@media(max-height:700px) and (max-width:600px){.home-route{margin:17px 0}.home-route #home-objective{margin-top:8px}.overlay{padding-bottom:20px}.menu h1{font-size:32px}.menu>p{margin:9px 0}.home-route h2{font-size:20px}}
@media(max-height:500px) and (min-width:600px){
 .interaction-panel{top:calc(var(--hud-top) + 53px);left:var(--hud-left);width:calc(100% - var(--hud-left) - var(--hud-right));display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,1fr);column-gap:20px;padding:10px 14px;max-height:135px;overflow:auto;scrollbar-color:#c5cdb4 #213329}
 .interaction-head,.interaction-panel>p,.interaction-meter{grid-column:1}
 .interaction-commands{grid-column:2;grid-row:1/6;align-self:center;margin:0}
 .interaction-head h2{font-size:14px}#interaction-prompt{font-size:12px}.interaction-feedback{margin-top:6px}
 .interaction-action,.interaction-choices button{min-height:48px;font-size:12px}
 .interaction-panel[data-state=solved]{width:min(380px,calc(100% - 28px));display:block}
 .home-route #home-objective{font-size:12px;line-height:1.4}
}
@media(prefers-reduced-motion:reduce){.interaction-action,.interaction-meter i{transition:none}}

/* R23: contextual coaching, section timing and personal diagnostics. */
.split-feedback{max-width:min(330px,70vw);margin-top:7px;color:#fff4dd;font-size:13px;font-weight:650;line-height:1.35;font-variant-numeric:tabular-nums;text-shadow:0 1px 3px #122019}
.split-feedback[data-tone="ahead"]{color:#c9ffd5}.split-feedback[data-tone="behind"]{color:#ffdda1}
body.interaction-open .split-feedback{display:none}
.coach-offer{margin:18px 0;padding:16px 0;border-top:1px solid #a5b19b55;border-bottom:1px solid #a5b19b55;text-align:left}
.coach-offer h2{font-size:18px;line-height:1.3;margin:0 0 8px}.coach-offer p{font-size:14px;line-height:1.5;margin:0;color:#eee5ce}.coach-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.coach-actions button{flex:1 1 150px;min-height:48px;margin:0;font-size:13px}
.setting-range{display:block;padding:18px 0;border-bottom:1px solid #d7ddcf26;font-size:14px}.setting-range small{display:block;font-size:12px;line-height:1.5;color:#d7ddcf;margin-top:4px}.setting-range>div{display:flex;align-items:center;gap:16px;margin-top:8px}.setting-range input{flex:1;min-width:0;min-height:44px;accent-color:#f4b447;touch-action:pan-y}.setting-range output{min-width:42px;text-align:right;font-variant-numeric:tabular-nums}
.local-data-note{font-size:12px;line-height:1.5;color:#d7ddcf;margin:12px 0 20px}.report-list{margin:16px 0;padding:0}.report-list>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid #d7ddcf26}.report-list dt{color:#e5eadb}.report-list dd{margin:0;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.report-note{font-size:13px;line-height:1.5;color:#d7ddcf}.report-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.report-actions button{flex:1 1 180px;min-height:48px}.record-list{list-style:none;margin:16px 0;padding:0}.record-list li{padding:14px 0;border-bottom:1px solid #d7ddcf26}.record-list strong{display:block;font-size:16px}.record-list p{margin:5px 0;font-size:13px;line-height:1.5;color:#e1e7d5}.coach-steps{padding-left:23px}.coach-steps li{margin:14px 0;line-height:1.55}.coach-demo-caption{font-size:13px;line-height:1.5;color:#e1e7d5}
.setting-range input:focus-visible,.coach-actions button:focus-visible,.report-actions button:focus-visible{outline:3px solid #bfffce;outline-offset:3px}
@media(max-width:420px){.coach-offer{padding:12px 0;margin:12px 0}.coach-offer h2{font-size:16px}.coach-offer p{font-size:13px}.coach-actions button{flex-basis:120px}.split-feedback{font-size:12px}}

/* R24: distinguish body balance from the actual reverse gear. */
#controls.layout-ready button[data-k="b"][data-reversing="true"]{border-color:#c2e0a4;box-shadow:inset 0 0 0 2px #c2e0a4}
#controls.layout-ready button[data-k="b"] span,#controls.layout-ready button[data-k="l"] span,#controls.layout-ready button[data-k="r"] span,.controls-editor-key span{line-height:1.05}

/* R28 — result first, direct retry, optional detail. */
.run-actions,.run-links{display:contents}
.finish-retry{min-height:48px;width:100%;padding:12px 16px;border:1px solid #e4d6af70;border-radius:11px;background:#21382de8;color:var(--paper);font-size:13px;font-weight:750}
#modal[data-state="finished"]{align-items:center;justify-content:center;padding:max(18px,env(safe-area-inset-top)) max(22px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(22px,env(safe-area-inset-left));background:linear-gradient(115deg,#101f1cf2,#101f1cde 68%,#101f1c85)}
#modal[data-state="finished"] .menu{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(210px,.9fr);gap:0 36px;width:min(760px,100%);padding:0;align-items:start}
#modal[data-state="finished"] #title{grid-column:1/-1;grid-row:1;font-size:clamp(25px,3.4vw,36px);line-height:1.08;max-width:100%}
#modal[data-state="finished"] #desc{grid-column:1/-1;grid-row:2;font-size:13px;line-height:1.4;margin:8px 0 20px}
#modal[data-state="finished"] .home-route,#modal[data-state="finished"] .valley-choice{display:none}
#modal[data-state="finished"] #result{grid-column:1;grid-row:3/6;margin:0;min-width:0;line-height:1.4}
.finish-summary>strong{font-size:clamp(40px,6vw,56px);line-height:1.06;overflow-wrap:anywhere}
.finish-summary>span,.finish-summary>p:not(.medal){display:block;font-size:13px;line-height:1.5;margin:9px 0}
#result .finish-summary .stars{margin:11px 0 7px;gap:7px}
#result .finish-summary .stars svg{width:23px;height:23px}
#result .finish-summary .medal{font-size:13px;margin:6px 0 10px}
.finish-details{margin-top:10px;font-size:12px;border-top:1px solid #d7ddcf30}
.finish-details>summary{cursor:pointer;min-height:44px;padding:12px 0;color:var(--paper);font-size:12px;line-height:20px;list-style-position:inside}
.finish-details[open]>summary{color:var(--accent)}
.finish-details .reward-card{padding-top:9px}.finish-details .ride-stats{font-size:12px;margin:9px 0}.finish-details .reward-card span{font-size:12px}
#modal[data-state="finished"] #run-actions{display:flex;flex-direction:column;gap:10px;grid-column:2;grid-row:3;align-self:start}
#modal[data-state="finished"] #run-actions button{margin:0;min-height:48px}
#modal[data-state="finished"] #run-links{display:flex;flex-wrap:wrap;gap:0 16px;grid-column:2;grid-row:4;margin:8px 0 0;align-items:flex-start}
#modal[data-state="finished"] #run-links button{width:auto;min-height:44px;margin:0;padding:9px 0;font-size:12px;line-height:1.4;text-align:left}
#modal[data-state="finished"] #run-links .home-menu{gap:7px}
body.menu-open:has(#modal[data-state="finished"]) .hud{visibility:hidden}
@media(max-width:599px){
 #modal[data-state="finished"]{align-items:flex-start;padding-top:max(24px,env(safe-area-inset-top));padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}
 #modal[data-state="finished"] .menu{display:flex;flex-direction:column;width:min(420px,100%)}
 #modal[data-state="finished"] #title{font-size:27px}
 #modal[data-state="finished"] #desc{margin:8px 0 16px}
 #modal[data-state="finished"] #result{width:100%;margin-bottom:14px}
 #modal[data-state="finished"] #run-actions,#modal[data-state="finished"] #run-links{width:100%}
 .finish-summary>strong{font-size:44px}
 #modal[data-state="finished"] #run-links{column-gap:18px}
}
@media(orientation:landscape) and (max-height:500px){
 #modal[data-state="finished"]{align-items:flex-start;padding-top:max(14px,env(safe-area-inset-top));padding-bottom:max(12px,env(safe-area-inset-bottom))}
 #modal[data-state="finished"] .menu{display:grid;width:min(860px,100%);grid-template-columns:minmax(0,1fr) minmax(220px,.85fr);column-gap:30px}
 #modal[data-state="finished"] #title{font-size:27px}
 #modal[data-state="finished"] #desc{margin:6px 0 14px;font-size:12px}
 .finish-summary>strong{font-size:44px}
 #result .finish-summary .stars{margin:9px 0 5px}
 #modal[data-state="finished"] #run-actions button{min-height:46px}
 #modal[data-state="finished"] #run-links{margin-top:6px;gap:0 15px}
 #modal[data-state="finished"] #run-links button{min-height:40px;padding:8px 0}
}

/* First-five teaching stays in the existing HUD, without a card over the ride. */
.hud .ride-feedback.guided-feedback-r28{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;line-height:1.35;max-height:2.7em;overflow:hidden}

/* R30 fall recovery remains skippable and keyboard/screen-reader legible. */
#fall-status{margin:0;padding:7px 13px;border-radius:7px;background:rgba(19,29,25,.78);font-size:14px;font-weight:600}
.fall-actions-r30{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.replay-ui .fall-secondary-r30{background:rgba(22,35,28,.88);border:1px solid rgba(236,238,221,.4);color:var(--paper)}
@media(max-width:360px){.fall-actions-r30{gap:6px}.replay-ui button{padding:11px 13px;font-size:12px}}

.photo-attribution-r30{grid-column:1/-1;width:100%;font-size:12px;line-height:1.6;color:#c8cdbf;text-align:left;border-top:1px solid rgba(225,231,213,.17);padding-top:14px}
.photo-attribution-r30 summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--paper);font-size:14px;font-weight:600}
.photo-attribution-r30 p{margin:10px 0 15px}.photo-attribution-r30 strong{display:block;color:#e5e8da;font-weight:500}.photo-attribution-r30 a{color:#e8c88b;text-underline-offset:3px;overflow-wrap:anywhere}

.scene-photo-status-r30{position:fixed;left:50%;top:calc(92px + var(--safe-top));transform:translateX(-50%);z-index:4;max-width:calc(100% - 32px);border:1px solid rgba(226,234,213,.23);border-radius:8px;padding:8px 12px;background:rgba(18,30,24,.88);color:#eceddf;font-size:12px;line-height:1.4;text-align:center}
.scene-photo-status-r30[hidden]{display:none}.scene-photo-status-r30:disabled{opacity:.85}

/* R41: unobtrusive opt-in performance telemetry; never captures touches. */
.fps-r41{position:fixed;z-index:8;left:50%;bottom:calc(145px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);pointer-events:none;user-select:none;-webkit-user-select:none;white-space:nowrap;background:rgba(12,25,21,.72);border:1px solid rgba(233,236,218,.24);color:#f2f5e9;border-radius:9px;padding:5px 10px;font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:.02em;box-shadow:0 2px 9px rgba(0,0,0,.18)}
.fps-r41[hidden]{display:none!important}
@media(max-height:500px){.fps-r41{left:auto;right:max(12px,env(safe-area-inset-right,0px));bottom:calc(12px + env(safe-area-inset-bottom,0px));transform:none}}

/* R42: telemetry belongs to the safe HUD, never over movable thumb controls. */
.hud .telemetry>.fps-r41{position:static;display:inline-block;transform:none;left:auto;right:auto;top:auto;bottom:auto;z-index:auto;max-width:100%;white-space:normal;border:0;border-radius:4px;padding:2px 5px;font-size:10px;box-shadow:none;background:rgba(12,25,21,.56)}
#quality-status-r42{font-size:12px;line-height:1.5;color:#cbd8c9;margin:0 0 14px}

.tutorial-result-r42{max-width:39em;line-height:1.5;color:#e0d3ad;font-size:13px}

.hud .telemetry:has(.fps-r41:not([hidden])){flex-wrap:wrap;row-gap:3px}
.hud .telemetry>.fps-r41{order:10;flex-basis:100%;background:none;padding:0}
