
:root{--ink:#213a46;--pink:#ee5382;--yellow:#ffdc5a}*{box-sizing:border-box}body{margin:0;background:#fffbee;color:var(--ink);font:16px Nunito,Arial,sans-serif}button,input,select{font:inherit}button,a,label.upload{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:2px solid #dbe3df;background:white;color:var(--ink);padding:10px 15px;border-radius:13px;font-weight:900}button:hover{transform:translateY(-2px);box-shadow:0 4px 0 #213a4615}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:4px solid #855fe9;outline-offset:3px}header{display:flex;align-items:center;justify-content:space-between;padding:24px 5%;border-bottom:2px solid #e8e4d3;background:#fffef7}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--ink);font:600 29px Fredoka,sans-serif}.brand> :first-child{line-height:1}.brand small{display:block;font:900 9px Nunito;letter-spacing:3px;margin-top:5px}.pink{color:var(--pink)}.badge{font-size:11px;letter-spacing:1.5px;background:#e7f4e4;border:1px solid #c3dfbd;padding:10px 16px;border-radius:30px;font-weight:900}main{max-width:1480px;margin:auto;padding:30px 5%}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:900;color:#688076}h1{font:600 clamp(34px,4vw,55px)/1.05 Fredoka,sans-serif;margin:12px 0}h1 span{color:#ec6688}.intro p{margin:10px 0;color:#637874}.mission{background:#fff0b7;border:2px solid #efd884;border-radius:20px;padding:20px 24px;transform:rotate(2deg);font-size:14px}.mission b{font-size:11px;letter-spacing:1.5px}.mission span{font-size:12px}.layout{display:grid;grid-template-columns:300px 1fr;gap:24px}.card,.play{background:#fff;border:2px solid #e1e6d9;border-radius:22px;box-shadow:0 6px 0 #e4e7d7}.garage{padding:22px}h2{font:500 23px Fredoka,sans-serif;margin:8px 0 18px}.garage h2{display:flex;justify-content:space-between}label{display:block;font-size:13px;font-weight:900;margin:14px 0 8px}input,select{display:block;width:100%;padding:11px;border:2px solid #e4e9e2;border-radius:10px;background:#fafcf7;color:var(--ink);margin-top:6px}.car-preview{margin-top:16px;border:2px dashed #c5ddc7;border-radius:15px;background:repeating-linear-gradient(0deg,transparent 0 19px,#dcebd64a 19px 20px),repeating-linear-gradient(90deg,#f1f8ec 0 19px,#dcebd6 19px 20px);text-align:center;overflow:hidden}.car-preview canvas{display:block;width:100%;height:115px;object-fit:contain}.car-preview span{display:block;font-size:11px;font-weight:800;margin-bottom:10px}.upload{cursor:pointer;text-align:center;border:2px solid #cfc2f0;background:#f3edff;color:#7051b0;border-radius:12px;padding:12px}.upload input{display:none}.hint{font-size:11px;color:#778580;line-height:1.6}.swatches{display:flex;gap:12px}.swatches button{width:31px;height:31px;border-radius:50%;padding:0;border:3px solid white;outline:2px solid transparent}.swatches button.selected{outline-color:var(--ink)}.primary{background:var(--yellow);border:2px solid #eec641;box-shadow:0 4px 0 #dcad34;width:100%;margin-top:16px;padding:14px;font-size:16px}.play{overflow:hidden;align-self:start}.track-top{display:flex;align-items:center;justify-content:space-between;padding:21px 24px}.track-top h2{margin:5px 0 0}.tag{font:900 9px Nunito;background:#eaf4df;padding:5px 8px;border-radius:7px;margin-left:8px;vertical-align:middle;color:#67883a}.stats{display:flex;gap:12px}.stats span{background:#faf6e8;border-radius:10px;padding:9px;font-size:13px;white-space:nowrap}.canvas-wrap{position:relative;background:#9adbb0}#game{display:block;width:100%;aspect-ratio:1000/640;outline-offset:-5px}#toast{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);background:#fffef5f2;padding:9px 18px;border-radius:24px;font-weight:900;font-size:13px;text-align:center;width:max-content;max-width:85%;box-shadow:0 3px 12px #213a4620}.pause{position:absolute;top:12px;right:12px}.controls{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;gap:12px}.controls b{font-size:10px;letter-spacing:1px}.controls p{font-size:12px;margin:8px 0 0}kbd{display:inline-block;min-width:22px;text-align:center;background:#eff2eb;padding:3px;border:1px solid #d7ddd1;border-bottom-width:3px;border-radius:5px;font:900 11px Nunito}.tip{padding:13px 24px;background:#f6f5fc;font-size:12px;color:#6b6282}.touch{display:flex;justify-content:center;gap:8px;padding:0 12px 16px}.touch button{touch-action:none}footer{display:flex;justify-content:space-between;font-size:10px;letter-spacing:2px;font-weight:900;color:#8c9985;padding:30px 0}footer span{color:#eebc36}dialog{width:min(620px,94vw);border:2px solid #d5ddcb;border-radius:22px;padding:30px;color:var(--ink);max-height:90vh}dialog::backdrop{background:#172d4180}.close{float:right}#links{max-height:260px;overflow:auto;margin:15px 0}#links a{display:block;padding:8px;color:#6749ac;overflow-wrap:anywhere}#photoTools button{font-size:11px;margin:3px;padding:6px}@media(max-width:1000px){.layout{grid-template-columns:250px 1fr}.stats{gap:4px}.track-top{padding:14px;flex-wrap:wrap;gap:12px}.controls{padding:15px}.controls span{display:none}.mission{display:none}}@media(max-width:720px){header{padding:18px}.brand{font-size:22px}.badge{display:none}main{padding:22px 16px}.layout{grid-template-columns:1fr}.garage{display:grid;grid-template-columns:1fr 1fr;gap:5px 15px}.garage>.eyebrow,.garage>h2,.garage>.primary,.garage>#saveStatus{grid-column:1/-1}.car-preview{margin:0}.garage>.hint{margin:0}.intro{margin-bottom:20px}.track-top h2{font-size:21px}.controls{flex-wrap:wrap}.touch button{font-size:12px;padding:12px}.stats span{font-size:11px}footer{letter-spacing:.5px;font-size:8px}}

.company-logo{width:150px;height:74px;object-fit:contain}.brand{gap:20px}.game-name{font-size:24px;padding-left:20px;border-left:2px solid #e4e6d8}.mission{display:flex;align-items:center;gap:10px;transform:rotate(1deg)}.mission img{width:95px;height:110px;object-fit:contain;mix-blend-mode:multiply}.crew{display:flex;justify-content:space-around;align-items:center;background:#fff;border:2px solid #e8e7d6;border-radius:22px;margin:-5px 0 25px;padding:9px 18px;box-shadow:0 5px 0 #eee9d5}.crew>div{display:flex;align-items:center;gap:8px;font:500 17px Fredoka,sans-serif}.crew img{width:68px;height:70px;object-fit:contain;mix-blend-mode:multiply}.race-rules{font-size:11px;line-height:1.8;background:#fff7d9;padding:10px;border-radius:10px;margin-top:14px}.music{position:absolute;top:12px;left:12px;font-size:12px}.canvas-wrap.offtrack{box-shadow:inset 0 0 0 5px #eb8c47}.canvas-wrap.offtrack #game{outline:5px solid #eb8c47;outline-offset:-5px}.result-mascot{display:block;width:150px;height:150px;object-fit:contain;margin:auto}#results{text-align:center;background:#fffdf2}#resultText{font-size:22px;font-weight:900;color:#0a9ba6}#bestText{font-size:14px}#closeResults{margin-top:16px}#timer{font-variant-numeric:tabular-nums}.stats .urgent{background:#ffe2db;color:#a63d35}
@media(max-width:1100px){.company-logo{width:120px}.game-name{font-size:20px}.crew>div{font-size:14px;gap:2px}.crew img{width:55px;height:60px}.mission{max-width:360px}.mission img{width:70px}}@media(max-width:720px){.company-logo{width:105px;height:52px}.game-name{display:none}.brand{gap:0}.crew{padding:10px 4px;gap:0}.crew>div{flex-direction:column;font-size:11px;gap:3px}.crew img{width:50px;height:58px}.garage>.race-rules{grid-column:1/-1}.mission{display:none}.tag{font-size:8px;margin-left:2px}.stats{gap:6px}.intro h1{font-size:37px}.music{padding:8px;font-size:10px}}
@media(max-width:720px){.garage>#photoTools{grid-column:1/-1}.garage>#photoTools[hidden]{display:none}.garage>.swatches{grid-column:1/-1}.garage>label:has(#speed){grid-column:1/-1}.garage>.swatches+label{grid-column:1/-1}}

/* Halloween edition: friendly creatures, bright orange and violet. No external assets. */
:root{--ink:#322345;--pink:#d35a18;--yellow:#ffca53}body{background:#fff3dc;background-image:radial-gradient(#f4d6b7 1.2px,transparent 1.2px);background-size:22px 22px;font-family:"Trebuchet MS",Nunito,Arial,sans-serif}header{background:#fffdf5;border-bottom:3px solid #e4cde9}.brand small{letter-spacing:2px}.pink{color:#c76510}.badge{background:#f2e7ff;border:2px solid #d2b4ed;color:#624183;font-size:12px}.intro{position:relative}.eyebrow{color:#7e518d;font-size:10px}h1{font-family:"Arial Rounded MT Bold","Trebuchet MS",sans-serif;line-height:1.12;letter-spacing:-1.7px;font-weight:900}h1 span{color:#c25b11}.intro p{color:#73617f}.mission{background:#f2e5ff;border-color:#d0b2e9;color:#56366f;box-shadow:5px 5px 0 #e2c9e3}.mission p{color:#73567f}.mission img{mix-blend-mode:multiply}.crew{background:#fffdf6;border-color:#e4cde9;box-shadow:0 5px 0 #e9d4df;position:relative}.crew>div{font-family:"Trebuchet MS",sans-serif;font-weight:900;font-size:14px;color:#795091}.crew>div:nth-child(2n){color:#be5c14}.card,.play{border-color:#e4cde9;box-shadow:0 6px 0 #e8d1db}h2{font-family:"Arial Rounded MT Bold","Trebuchet MS",sans-serif;font-weight:900;font-size:21px}.car-preview{background:repeating-linear-gradient(0deg,transparent 0 19px,#e6d7f04a 19px 20px),repeating-linear-gradient(90deg,#f6edfc 0 19px,#e6d7f0 19px 20px);border-color:#d2b4e7}.upload{background:#f0e4ff;border-color:#ccb0e5;color:#644088}.race-rules{background:#fff0d2;color:#85501a}.primary{background:#ffbb48;border-color:#efa12c;box-shadow:0 4px 0 #d99030;color:#432b21}.tag{background:#f2e4ff;color:#77449a}.stats span{background:#fff0d8}.canvas-wrap{background:#33204f}.tip{background:#f4e8ff;color:#715181}.controls{background:#fffdf7}.music,.sfx,.pause{background:#fff8e9f5;border-color:#dbc5e5}.sfx{position:absolute;top:12px;left:133px;font-size:12px}.canvas-wrap.offtrack #game{outline-color:#ffb349}#toast{background:#fff5e6f5;color:#5c3575}footer{color:#8d638b}.touch button{background:#f4eaff;border-color:#dfc5eb;color:#684484}#results{background:#fff3de;border-color:#c19bda}#resultText{color:#b46214}#teacherDialog{background:#fffcf4}input,select{background:#fffcf7}#game{border-top:3px solid #e1c7e5;border-bottom:3px solid #e1c7e5}.company-logo{mix-blend-mode:multiply}
@media(max-width:720px){.badge{display:block;font-size:9px;letter-spacing:.2px;padding:7px 9px}.brand{flex-shrink:0}.company-logo{width:88px}.badge+button{font-size:11px;padding:9px}header{gap:7px;padding:13px 15px}.crew>div{font-size:9px}.crew img{width:47px;height:54px}.sfx{left:108px;font-size:10px;padding:8px}.intro h1{font-size:36px}.intro .eyebrow{font-size:8px;letter-spacing:1px}.intro p{font-size:14px}.track-top h2{font-size:18px}.tag{display:inline-block;margin-top:7px}.music{left:8px}.pause{padding:7px 11px}.canvas-wrap #toast{font-size:11px;padding:7px 11px}}
@media(prefers-reduced-motion:reduce){button:hover{transform:none}}
