@font-face{font-family:'DM Sans';src:url('../grid-rush/assets/fonts/DMSans.woff2') format('woff2');font-weight:100 1000;font-display:swap}
@font-face{font-family:'Fredoka';src:url('../grid-rush/assets/fonts/Fredoka.woff2') format('woff2');font-weight:300 700;font-display:swap}
:root{--paper:#f6f4e9;--ink:#344c40;--muted:#667765;--mint:#dce7cd;--coral:#df967a;--line:#d9ddcc;--display:'Fredoka',system-ui,sans-serif}
*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);color-scheme:light}body{margin:0;font-family:'DM Sans',system-ui,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid #4e7b82;outline-offset:4px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;clip-path:inset(50%);overflow:hidden;white-space:nowrap}.skip-link{position:fixed;top:-100px;left:12px;z-index:20;background:var(--paper);padding:12px}.skip-link:focus{top:12px}
.site-top{max-width:1200px;margin:auto;min-height:86px;display:flex;align-items:center;gap:24px;padding:18px 28px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font:400 25px var(--display);text-decoration:none;color:var(--ink);white-space:nowrap}.brand b{font-weight:500}.brand i{color:var(--coral);font-style:normal}.header-note{margin-left:auto;font-size:12.1px;letter-spacing:1.4px;color:var(--muted)}main{max-width:1144px;margin:auto;padding:36px 28px 24px}.intro{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:30px}.eyebrow{font-size:12.1px;letter-spacing:1.35px;font-weight:700;margin:0 0 12px;color:var(--muted)}h1{font:500 clamp(38px,5vw,64px)/1.06 var(--display);letter-spacing:-1.5px;margin:0}em{font-style:normal;color:#829875}.intro>p{font-size:14px;line-height:1.8;color:var(--muted);margin:0 0 4px}h2{font:500 27px/1.2 var(--display);letter-spacing:-.5px;margin:0 0 16px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;align-items:start;gap:26px}.play-panel{border:1px solid var(--line);border-radius:26px;background:#fffdf5;overflow:hidden;box-shadow:0 12px 40px #405c3d07}.hud{padding:20px 24px 16px;display:flex;align-items:center;gap:16px}.hud .eyebrow{font-size:10px;margin-bottom:5px}.distance{display:flex;align-items:baseline;gap:7px}.distance output{font:500 45px/1 var(--display);font-variant-numeric:tabular-nums;letter-spacing:-1.5px}.distance>span{font-size:16px;color:var(--muted)}.best-block{margin-left:auto;text-align:right}.best-block .eyebrow{display:block}.best-block strong{font:400 21px var(--display)}.reset-button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink);font-size:25px}.reset-button:active{transform:rotate(-35deg) scale(.94)}
.runway{height:440px;position:relative;isolation:isolate;background:#c8dbc0;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab;outline-offset:-5px!important}.runway[data-input=pointer]:focus{outline:none}.runway[data-state=dragging]{cursor:grabbing}.runway[data-state=coasting]{cursor:default}.runway canvas{display:block;width:100%;height:100%;pointer-events:none}.track-top{position:absolute;inset:18px 22px auto;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.track-stamp{border:1px solid #829e7944;border-radius:6px;padding:6px 8px;font-size:10px;letter-spacing:1.6px;font-weight:700;color:#536b4e;background:#edf2df80}#direction{font:400 24px var(--display);color:#526e4b}.ready-hint{position:absolute;inset:30% 10px auto;display:flex;align-items:center;flex-direction:column;text-align:center;gap:8px;pointer-events:none}.ready-hint strong{font:500 25px var(--display)}.ready-hint>span:not(.hint-arrow){font-size:12px}.ready-hint small{font-size:12.1px;color:#5e7654}.hint-arrow{font:400 50px var(--display);color:#6e8b60;animation:invite 2.8s ease-in-out infinite}.runway:focus-visible .hint-arrow{color:#365c65}@keyframes invite{0%,100%{transform:translateY(-6px)}50%{transform:translateY(6px)}}
.effort-pill,.coast-pill{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);background:#fff9e8e6;border:1px solid #fffdf4;border-radius:99px;white-space:nowrap;box-shadow:0 5px 18px #3c533515;pointer-events:none}.effort-pill{display:flex;align-items:center;gap:8px;padding:12px 20px;overflow:hidden;font-size:12px}.effort-pill>span{z-index:1}.effort-pill i{position:absolute;inset:0;background:#e8c8a0;transform:scaleX(var(--effort,0));transform-origin:left;opacity:.5}.coast-pill{font-size:12.1px;padding:10px 16px}.status-row{padding:14px 22px 10px;display:flex;align-items:center;gap:9px;min-height:48px}.status-row p{margin:0;font-size:12.1px;line-height:1.6}.status-dot{width:7px;height:7px;background:#8ea67b;border-radius:50%;flex-shrink:0}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding:0 22px 14px}.metrics>div{display:grid;grid-template-columns:1fr auto;gap:7px;font-size:12.1px;color:var(--muted)}.metrics b{font-size:12.1px;color:var(--ink);font-weight:500;font-variant-numeric:tabular-nums}.metrics meter{grid-column:1/-1;width:100%;height:6px;border:0;border-radius:9px;background:#e8edde}.metrics meter::-webkit-meter-bar{background:#e8edde;border:0;border-radius:9px}.metrics meter::-webkit-meter-optimum-value{background:#8fa77c;border-radius:9px;transition:width .4s ease}.metrics meter::-moz-meter-bar{background:#8fa77c}.measurement-note{padding:0 22px 16px;margin:0;color:var(--muted);font-size:12.1px;line-height:1.6}
.sidebar{display:grid;gap:20px}.how-card,.records{border:1px solid var(--line);border-radius:22px;padding:25px;background:#efefe1}.how-card ol{list-style:none;margin:22px 0;padding:0;display:grid;gap:18px}.how-card li{display:flex;gap:12px}.how-card li>span{font:400 14px var(--display);color:#8b9b7c;padding-top:1px}.how-card li b{font-size:12px;font-weight:600}.how-card li p{margin:5px 0 0;font-size:12.1px;line-height:1.7;color:var(--muted)}.pointer-help{border-top:1px solid var(--line);margin:0;padding-top:14px;font-size:12.1px;line-height:1.8;color:var(--muted)}.records{background:#fffdf5}.records h2{font-size:24px}.records h2>span{color:var(--coral)}.records ol{margin:0;padding:0;list-style:none}.record{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid var(--line)}.record>span{font:400 18px var(--display);color:#9ca88c}.record>div{flex:1}.record strong{font:400 23px var(--display);font-variant-numeric:tabular-nums}.record small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.record i{font-style:normal;font-size:18px;color:#91a37c}.record.is-new{color:#557249}.empty-records{font-size:12px;color:var(--muted);line-height:1.8}.records>p:last-child{font-size:12.1px;color:var(--muted);margin:16px 0 0}.little-note{text-align:center;font:400 17px/1.5 var(--display);color:#8e9f80;margin:0}.footer-tip{text-align:center;font-size:12.1px;color:var(--muted);margin:22px 0}footer{display:flex;justify-content:space-between;gap:20px;margin-top:28px;padding-top:20px;border-top:1px solid var(--line);font-size:12.1px;color:var(--muted)}
.result-overlay,.pause-overlay{position:absolute;inset:0;display:grid;place-items:center;background:#d9e5c370;backdrop-filter:blur(3px);padding:18px;cursor:default}.result-card,.pause-overlay>div{text-align:center;width:min(100%,330px);padding:22px;background:#fffdf4f5;border:1px solid #fff;border-radius:24px;box-shadow:0 16px 45px #34512a18}.result-star{display:block;font:400 35px var(--display);color:#d7a67c;margin-bottom:8px}.result-card h2{font-size:26px;margin-bottom:10px}.result-card .eyebrow{font-size:10px;margin-bottom:8px}.final-distance{display:flex;align-items:baseline;justify-content:center;gap:7px}.final-distance strong{font:500 53px/1.1 var(--display);font-variant-numeric:tabular-nums;letter-spacing:-1.5px}.final-distance span{font-size:19px;color:var(--muted)}.result-card>p:not(.eyebrow),.pause-overlay p{font-size:12px;line-height:1.6;color:var(--muted);margin:12px 0 18px}.primary-button{width:100%;min-height:48px;border:1px solid #466345;border-radius:14px;background:#526f4e;color:#fffdf4;font-weight:600;font-size:13px;padding:12px 18px;transition:transform .2s,background .2s}.primary-button:hover{background:#405d3e}.primary-button:active{transform:scale(.97)}.primary-button>span{margin-left:8px}.pause-overlay>div>span{font-size:40px;color:#9db28e}.pause-overlay{z-index:2}
@media(max-width:900px){.game-layout{grid-template-columns:minmax(0,1fr) 270px;gap:18px}.how-card,.records{padding:20px}.header-note{display:none}.intro>p{max-width:240px}}
@media(max-width:700px){.site-top{min-height:68px;padding:14px 18px;justify-content:space-between;gap:12px}.brand{font-size:22px}.brand svg{width:27px;height:30px}main{padding:25px 16px calc(25px + env(safe-area-inset-bottom))}.intro{margin-bottom:22px;display:block}.intro .eyebrow{font-size:10px}h1{font-size:40px;line-height:1.07}.intro>p{font-size:12px;line-height:1.7;margin-top:15px;max-width:none}.game-layout{display:block}.play-panel{border-radius:22px}.hud{padding:17px 18px 14px}.distance output{font-size:39px}.best-block .eyebrow{display:block}.best-block strong{font-size:19px}.hud .eyebrow{font-size:10px}.runway{height:clamp(320px,54dvh,480px)}.track-top{inset:14px 16px auto}.track-stamp{font-size:10px}.ready-hint strong{font-size:23px}.ready-hint{inset:26% 10px auto}.status-row{padding:12px 16px 10px}.metrics{gap:13px;padding:0 16px 12px}.measurement-note{padding:0 16px 15px}.sidebar{margin-top:20px;grid-template-columns:1fr}.how-card{order:2}.records{order:1}.little-note{order:3}.records h2{font-size:26px}.how-card h2{font-size:28px}.how-card li b{font-size:13px}.how-card li p,.pointer-help{font-size:12px}.result-card{padding:20px}.result-star{font-size:28px;margin-bottom:6px}.result-card h2{font-size:23px}.final-distance strong{font-size:48px}footer{flex-direction:column;align-items:center;gap:10px;text-align:center}.footer-tip{font-size:12.1px}}
@media(max-height:500px) and (min-aspect-ratio:4/3){.intro{display:none}main{padding-top:18px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px}.runway{height:300px}.sidebar{margin-top:0}.how-card{display:none}.hud{padding:12px 16px}.result-card{padding:15px}.result-star{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.result-overlay{backdrop-filter:none}}

/* A pastel toy-town road, with one shared vector car in the game and cover. */
:root{--paper:#fff8f1;--ink:#654e4a;--muted:#88756c;--mint:#e0eee1;--coral:#e8a0a8;--line:#edddd1}
html{background:#fff8f1}body{background:radial-gradient(circle at 5% 10%,#f9dfdc88 0,transparent 24%),radial-gradient(circle at 95% 28%,#dcebdc99 0,transparent 23%),#fff8f1}
.intro{position:relative}.intro em{color:#bc7f88}.intro .eyebrow{display:inline-block;padding:7px 11px;background:#f7e3df;border:1px solid #edcfca;border-radius:99px;letter-spacing:.8px}
.play-panel{border:2px solid #ead6c8;border-radius:30px;box-shadow:0 9px 0 #efdfd03b,0 19px 42px #b3846910;background:#fffdf7}.hud{background:#fff9ed}.distance output{color:#795952}.best-block strong{color:#9c7774}
.runway{background:#f4e0d5}.track-top{z-index:2}.track-stamp{background:#fff4e5dd;border-color:#e3c5b6;color:#977465;border-radius:13px;letter-spacing:1px}.ready-hint{z-index:2;inset:15% 10px auto;gap:6px}.ready-hint strong{font-size:26px;color:#775a54}.ready-hint>span:not(.hint-arrow){color:#826e60}.ready-hint small{color:#8d8070}.hint-arrow{color:#c58f98;font-size:42px}
.hero-car{position:absolute;z-index:1;left:50%;top:0;width:clamp(144px,39%,182px);aspect-ratio:1.1;transform:translate(-50%,calc(var(--car-y,310px) - 50%)) rotate(var(--car-roll,0deg));pointer-events:none;will-change:transform}
.hero-car svg{display:block;width:100%;height:100%;overflow:visible}.car-body{transform:translateY(var(--car-bob,0px)) rotate(var(--car-lean,0deg));transform-origin:110px 145px;transform-box:view-box}.wheel-spin{transform:translateY(var(--tread-shift,0px));transform-box:view-box}.car-sweat{transform:translateY(var(--sweat-y,0px));transform-box:view-box}.car-ribbon{transform:rotate(var(--ribbon-wave,0deg));transform-origin:170px 105px;transform-box:view-box}
.car-face-effort,.car-headband,.car-sweat{display:none}.hero-car[data-mood=effort] .car-face-rest{display:none}.hero-car[data-mood=effort] .car-face-effort,.hero-car[data-mood=effort] .car-headband,.hero-car[data-mood=effort] .car-sweat{display:block}.hero-car[data-mood=happy] .car-blink{animation:car-blink 6.2s infinite;transform-origin:center;transform-box:fill-box}.hero-car[data-paused=true] *{animation-play-state:paused}
@keyframes car-blink{0%,86%,91%,100%{transform:scaleY(1)}88%,89%{transform:scaleY(.12)}}
.effort-pill,.coast-pill{z-index:2;border:2px solid #fff4df;background:#fff9eff0;color:#9a676f;box-shadow:0 5px 0 #caa09018}.coast-pill:before{content:'✦';margin-right:7px;color:#d39871}.coast-pill:after{content:'✦';margin-left:7px;color:#d39871}.effort-pill i{background:#edb5bd}.status-dot{background:#d79c9e}.metrics meter::-webkit-meter-optimum-value{background:#c9a3a5}.metrics meter::-moz-meter-bar{background:#c9a3a5}
.how-card{background:#f6eae0;border:2px solid #ecdbce;border-radius:26px}.records{border:2px solid #e8d8cc;background:#fffdf5;border-radius:26px}.records h2>span{color:#cb919d}.record:first-child>span{color:#c4946f}.record:first-child{background:#fff5df;border-radius:14px;padding:13px 10px;margin:0 -10px;border-color:transparent}.record.is-new{color:#a76d79}.little-note{color:#b08a8b}.pointer-help{border-color:#e6d1c3}
.primary-button{background:#f0b5bc;color:#68484d;border:2px solid #d89ca4;border-radius:18px;box-shadow:0 4px 0 #c88d9633;font-weight:700}.primary-button:hover{background:#edabb4}.primary-button:active{box-shadow:0 1px 0 #c88d9633;transform:translateY(2px) scale(.98)}.reset-button{background:#f8e8e0;border-color:#e5c9c0;color:#ad7c7c}.pause-overlay{z-index:5}.result-overlay{z-index:4;background:#f4e8df73}.result-card,.pause-overlay>div{border:2px solid #fff8e6;background:#fffaf3f5;border-radius:29px;box-shadow:0 10px 0 #ddbdad22,0 20px 45px #9a71671a}.result-star{color:#d49d9d}.final-distance strong{color:#a27077}
@media(max-width:700px){.ready-hint{inset:13% 10px auto;gap:6px}.ready-hint strong{font-size:23px}.ready-hint small{font-size:10px}.hint-arrow{font-size:37px}.track-stamp{font-size:10px;letter-spacing:.6px}.coast-pill{font-size:12.1px;padding:9px 13px;bottom:18px}.hero-car{width:clamp(144px,42%,165px)}.play-panel{border-radius:26px}.pointer-help{font-size:12px}}
@media(prefers-reduced-motion:reduce){.hero-car *{animation:none!important}}

.zoom-burst{position:absolute;z-index:2;left:calc(50% + 52px);color:#b67c89;background:#fff7eac9;border:1px solid #ebc2c5;border-radius:45% 55% 50% 40%;padding:5px 9px;font:500 italic 15px var(--display);pointer-events:none;transform:rotate(-13deg);animation:whoosh-pop 650ms ease-in-out infinite alternate}@keyframes whoosh-pop{to{transform:translate(3px,-2px) rotate(-9deg) scale(1.06)}}

.skip-link{opacity:0;pointer-events:none}.skip-link:focus{opacity:1;pointer-events:auto}

.car-exhaust{display:none;pointer-events:none}.hero-car[data-mood=effort] .car-exhaust{display:block}.exhaust-puff{transform-box:view-box;transform-origin:0 0;animation:car-exhaust 1600ms ease-out infinite;filter:blur(.35px)}.exhaust-puff:nth-child(2){animation-delay:-533ms}.exhaust-puff:nth-child(3){animation-delay:-1066ms}@keyframes car-exhaust{0%{opacity:0;transform:translate(0px,0px) scale(.25)}15%{opacity:var(--exhaust-strength,.65)}55%{opacity:calc(var(--exhaust-strength,.65) * .8)}100%{opacity:0;transform:translate(-27px,-70px) scale(1.9)}}@media(prefers-reduced-motion:reduce){.hero-car[data-mood=effort] .car-exhaust{display:none}}
