:root{color-scheme:dark;--white:#fffef4;--outline:#111c23;--font:'Bowlby',Impact,sans-serif;--text:'Roboto Condensed',Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 35%,#406679,#142330 72%);color:var(--white);font-family:var(--text);overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible{outline:3px solid #ffff87;outline-offset:4px}#app{position:relative;width:min(100%,620px);height:100svh;min-height:640px;max-height:1100px;margin:auto;overflow:hidden;isolation:isolate;background:linear-gradient(#429ee8 0%,#8bd0f6 44%,#c6ab89 75%);box-shadow:0 0 90px #0006}header{position:absolute;top:13px;left:13px;right:13px;z-index:5;display:grid;grid-template-columns:52px 1fr 135px;align-items:start;gap:10px;pointer-events:none}header>*{pointer-events:auto}.brand{font-family:var(--font);text-align:center;line-height:1.08;padding:12px 7px 14px;background:linear-gradient(115deg,#57616a,#293039 50%,#404b50);border:3px solid #121c22;border-radius:13px;box-shadow:inset 0 3px 0 #a4acac,inset 0 -5px 0 #1b2126,0 4px 0 #0007;transform:rotate(-2deg);text-shadow:0 3px 0 #13181b,2px 0 0 #13181b,-2px 0 0 #13181b}.brand>span{font-size:clamp(16px,3.6vw,25px);display:block;white-space:nowrap}.brand strong{display:block;font-size:clamp(26px,5vw,39px);font-weight:400;color:#ffcd37;text-shadow:0 4px 0 #925023,0 6px 0 #14181c,-2px 0 0 #2a2011,2px 0 0 #2a2011}.round,.yard,#auto{border:3px solid #101b24;border-radius:11px;background:linear-gradient(135deg,#436078 0,#223a4b 55%,#162935 100%);box-shadow:inset 0 3px 0 #7492a3,inset 3px 0 0 #4c697c,inset -3px -5px 0 #101e2b,0 4px 2px #0005}.round{width:52px;height:55px;padding:6px}.art-icon{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 3px 1px #0005)}.cash{display:flex;align-items:center;background:linear-gradient(#30485d,#132938);border:3px solid #101b24;border-radius:11px;min-height:57px;box-shadow:inset 0 3px 0 #6e8899,inset 0 -4px 0 #14232e,0 4px 2px #0005;padding:3px 8px 5px 2px;position:relative}.cash>.art-icon{width:39px;height:42px;flex-shrink:0;margin-right:3px}.cash>strong{color:#8eff43;font-size:29px;font-weight:850;white-space:nowrap;text-shadow:0 3px 0 #142b20;letter-spacing:-1px}.cash>span{position:absolute;right:0;top:62px;width:170px;font-size:11px;font-weight:800;text-align:right;text-shadow:0 2px 2px #193440;color:#fff9c6}.dashboard{position:absolute;z-index:4;right:13px;top:119px;width:74px}.yard{width:100%;padding:7px 4px 9px;text-align:center}.yard>.art-icon{width:47px;height:46px;margin:auto}.yard .eyebrow{font-family:var(--font);font-size:11px;margin-top:4px;display:block;text-shadow:0 2px #091923}.yard strong,.yard small{display:none}.objective{position:absolute;top:121px;left:13px;z-index:4;background:linear-gradient(125deg,#344e62,#192e3e);border:3px solid #142431;border-radius:12px;box-shadow:inset 0 2px 0 #658597,0 4px 2px #0003;max-width:207px;width:42%;padding:10px 11px;display:flex;flex-direction:column;gap:6px}.objective>div:first-child{display:flex;flex-direction:column;gap:4px}.objective #objective{font-size:10px;color:#bbd5e4;font-weight:800}.objective strong{font-family:var(--text);font-size:17px;font-weight:850;line-height:1.05;text-shadow:0 2px #0c202e}.track{background:#172635;box-shadow:inset 0 2px 3px #000b,0 1px #5a7280;border:2px solid #0e1e2a;border-radius:9px;height:15px;overflow:hidden}.track i{height:100%;display:block;width:0;background:linear-gradient(#c1ff5a,#54e526 45%,#29ad03);box-shadow:inset 0 2px 0 #dcff9a;transition:width .2s;border-radius:5px}.objective #count{font-size:15px;position:absolute;right:11px;top:7px;font-weight:900;color:#eaffce}.objective #objective{padding-right:35px;min-height:13px}.objective #next{min-height:32px}#scene{position:absolute;inset:0;z-index:-1;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:pan-y}.scene-top{position:absolute;left:15px;right:15px;bottom:261px;display:flex;justify-content:space-between;font-size:10px;font-weight:900;text-shadow:0 2px 3px #14241e;pointer-events:none}.scene-top .live{display:none}.scene-top>span:last-child{margin-left:auto}.scene-bottom{position:absolute;left:15px;bottom:261px;font-size:10px;font-weight:900;text-shadow:0 2px 3px #14241e;pointer-events:none}.recycle{display:none}.vehicle-label{position:absolute;bottom:285px;left:50%;transform:translateX(-50%);display:flex;gap:8px;align-items:center;background:linear-gradient(#344953ee,#172a35ee);padding:6px 13px;border:2px solid #17232b;border-radius:9px;box-shadow:inset 0 1px #68888f,0 3px 4px #0003;white-space:nowrap;text-shadow:0 2px #102122;font-weight:900;font-size:13px}.vehicle-label b{color:#9cff4c;font-size:20px}.controls{position:absolute;bottom:0;left:0;right:0;padding:0 12px 9px;background:linear-gradient(transparent,#c3a07c44 25%,#bb977a99);z-index:4}.crush-row{height:97px;position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:17px}#crush{height:94px;width:70%;max-width:385px;position:relative;border:4px solid #181c22;border-radius:16px;background:linear-gradient(135deg,#ff6c62 0%,#f7423b 23%,#f5222e 70%,#ca0c23 100%);box-shadow:inset 0 4px 0 #ffb297,inset 5px 0 0 #ff6960,inset -5px -9px 0 #b31326,0 7px 0 #321d25,0 11px 6px #0007;touch-action:none;user-select:none;transition:filter .1s,transform .07s}#crush::before{content:'';position:absolute;inset:7px 9px 13px;border:2px solid #ff958154;border-bottom-color:#ff626577;border-radius:8px;pointer-events:none}#crush strong{font-family:var(--font);font-size:43px;font-weight:400;letter-spacing:1px;line-height:1.1;text-shadow:0 4px 0 #961e29,0 6px 0 #6f1720,2px 0 0 #7d1921,-2px 0 0 #7d1921}#crush small{display:block;font-family:var(--text);font-size:10px;font-weight:850;letter-spacing:.6px;text-shadow:0 2px #90121f;margin-top:2px}#crush:hover{filter:brightness(1.08)}#crush:active,#crush.held{transform:translateY(6px);box-shadow:inset 0 3px 0 #ff9f8d,inset -4px -6px 0 #b31326,0 2px 0 #321d25,0 4px 5px #0006}#auto{position:absolute;right:0;top:12px;width:62px;height:71px;display:flex;flex-direction:column;align-items:center;padding:4px 2px 6px}.auto-icon{width:30px;height:30px}#auto strong{font-family:var(--font);font-size:10px;font-weight:400;text-shadow:0 2px #12222b}#auto small{font-weight:850;font-size:11px;color:#c5dded}#auto.on{background:linear-gradient(#68d843,#1b8736);box-shadow:inset 0 3px #b9ff7d,inset 0 -4px #14582a,0 4px #142523}#auto.available{filter:drop-shadow(0 0 6px #baff41)}.upgrades{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.upgrade{--light:#a4ff89;--mid:#24bb24;--dark:#08741a;--edge:#074818;position:relative;padding:10px 8px 11px;border:3px solid #142021;border-radius:13px;background:linear-gradient(130deg,var(--light) 0%,var(--mid) 13%,var(--dark) 77%);box-shadow:inset 0 3px 0 var(--light),inset 4px 0 0 var(--mid),inset -4px -6px 0 var(--edge),0 5px 0 #292b22,0 8px 5px #0005;text-align:left;transition:filter .12s,transform .08s;min-width:0}.upgrade.speed{--light:#92ecff;--mid:#04a8e9;--dark:#0065a6;--edge:#003f70}.upgrade.value{--light:#fff292;--mid:#ffb600;--dark:#bd7600;--edge:#775000}.upgrade>div{display:flex;align-items:center;gap:4px;background:#00321626;border-radius:6px;padding:1px 0 3px}.upgrade .up-icon{width:42%;height:48px;flex-shrink:0}.upgrade>div>span:nth-child(2){font-family:var(--font);font-size:clamp(12px,2.7vw,20px);font-weight:400;letter-spacing:-.7px;line-height:1;text-shadow:0 2px 0 #152d37,1px 0 #152d37,-1px 0 #152d37;white-space:nowrap}.upgrade small{display:block;font-family:var(--text);font-size:18px;font-weight:850;letter-spacing:0;margin-top:7px;text-shadow:0 2px #143634}.upgrade i{display:none}.upgrade p{font-size:10px;text-align:center;font-weight:800;margin:5px 0 6px;color:#edffe1;text-shadow:0 1px 2px #113928;white-space:nowrap}.upgrade>strong{display:flex;align-items:center;justify-content:space-between;gap:3px;background:#00250d45;border:1px solid #16381b99;border-radius:6px;padding:4px 4px 4px 6px;font-size:25px;font-weight:900;text-shadow:0 3px #1e3931;line-height:1;box-shadow:0 1px 0 #ddffac55}.upgrade>strong>span{font-family:Arial;font-size:25px;display:flex;align-items:center;justify-content:center;width:29px;height:31px;flex-shrink:0;border:2px solid #184f1b;border-radius:6px;background:linear-gradient(#baff68,#52d527 50%,#199c0d);box-shadow:inset 0 2px #e1ffb3,inset 0 -3px #147d16;color:white;text-shadow:0 2px #186a1a}.upgrade:disabled{cursor:default}.upgrade:disabled>strong>span{background:linear-gradient(#8aad86,#4b7750);box-shadow:inset 0 2px #b2c6ac,inset 0 -3px #36533b;border-color:#334e36;color:#b9c9b6}.upgrade:not(:disabled):hover{filter:brightness(1.1);transform:translateY(-2px)}.upgrade:not(:disabled):active{transform:translateY(4px)}footer{display:flex;justify-content:center;gap:8px;font-size:9px;font-weight:800;color:#3d392b;text-shadow:0 1px #e3ceac77;padding-top:12px}footer>span:last-child{display:none}#toast{position:absolute;left:50%;top:27%;transform:translate(-50%,-12px);opacity:0;transition:.2s;z-index:8;max-width:85%;width:max-content;background:linear-gradient(#3d5269,#192b3e);border:2px solid #111d2c;border-radius:10px;box-shadow:inset 0 2px #74929e,0 5px 10px #0005;color:white;padding:11px 15px;font-size:16px;font-weight:850;text-align:center;text-shadow:0 2px #102031;pointer-events:none}#toast.show{opacity:1;transform:translate(-50%,0)}#goldEvent{position:absolute;left:50%;top:25%;width:88%;transform:translateX(-50%);z-index:9;padding:9px 13px;color:#fffbe2;background:linear-gradient(#ffd850,#de9808);border:3px solid #6a430e;border-radius:10px;box-shadow:inset 0 2px #fff7b7,0 5px #6a430e;text-shadow:0 2px #87551c;font-size:14px}#goldEvent>strong{font-family:var(--font);font-size:12px;font-weight:400}#goldEvent>span{float:right;font-size:18px;font-weight:900}#goldEvent>div{height:6px;background:#926317;border-radius:5px;margin-top:6px;overflow:hidden}#goldEvent i{display:block;height:100%;background:#fffac1}.money-float{position:absolute;top:53%;left:50%;font-family:var(--font);font-size:43px;white-space:nowrap;line-height:1.1;color:#acff4d;text-shadow:0 4px #28552a,0 6px #102124,2px 0 #142f1d,-2px 0 #142f1d;animation:profit 1.15s cubic-bezier(.17,.7,.3,1) forwards;pointer-events:none;z-index:6}.money-float small{font-family:var(--text);display:block;text-align:center;font-size:14px;font-weight:900;letter-spacing:.4px;color:#fffecb;text-shadow:0 2px #22391b} @keyframes profit{0%{transform:translate(-50%,10px) scale(.65);opacity:0}12%{opacity:1;transform:translate(-50%,-5px) scale(1.2)}30%{transform:translate(-50%,-12px) scale(1)}80%{opacity:1}100%{transform:translate(-50%,-100px);opacity:0}}.impact-ring{position:absolute;left:50%;top:56%;width:170px;height:85px;border:8px solid #ffe99bcc;border-radius:50%;pointer-events:none;animation:ring .28s ease-out forwards}@keyframes ring{from{transform:translate(-50%,-50%) scale(.2);opacity:1}to{transform:translate(-50%,-50%) scale(2.6);opacity:0}}dialog{font-family:var(--text);width:min(440px,92vw);max-height:88svh;overflow:auto;border:4px solid #101c27;border-radius:17px;padding:23px;background:linear-gradient(135deg,#3b566b,#182f42);color:#fff;box-shadow:inset 0 3px #7794a6,0 10px 50px #0008}dialog::backdrop{background:#0d1b2bc7;backdrop-filter:blur(4px)}dialog h2{font-family:var(--font);font-size:23px;font-weight:400;line-height:1.2;color:#ffdf65;text-shadow:0 3px #18222b;margin:8px 0 14px}dialog p{font-size:16px;line-height:1.4;color:#d8e6ef}.eyebrow{font-size:11px;font-weight:900;color:#bbd9ee}.setting-btn,.dialog-close{font-family:var(--font);font-size:12px;font-weight:400;width:100%;padding:13px 9px;border:2px solid #112335;border-radius:8px;color:white;text-shadow:0 2px #12314b;background:linear-gradient(#31bff6,#006eaf);box-shadow:inset 0 2px #9aeaff,inset 0 -4px #084b7c,0 3px #0d1d2b;margin-top:9px}.dialog-close{background:linear-gradient(#67d943,#21992e);box-shadow:inset 0 2px #bdff8e,inset 0 -4px #126024,0 3px #0d1d2b}.setting-btn.danger{background:linear-gradient(#ff785b,#d53036);box-shadow:inset 0 2px #ffb998,inset 0 -4px #8f2031,0 3px #0d1d2b}.yard-card{display:flex;justify-content:space-between;gap:8px;padding:14px 0;border-bottom:1px solid #5b7684}.yard-card strong{font-family:var(--font);font-size:12px;font-weight:400}.yard-card small{display:block;font-size:13px;color:#b3cfdf;margin-top:5px}.yard-card>b{color:#baff67;font-size:14px}#fallback{position:absolute;inset:30% 15px;background:#233d4f;padding:25px;z-index:20;font-size:18px;line-height:1.4;border:3px solid #17242c;border-radius:10px}[hidden]{display:none!important}@media(min-width:700px){#app{border-left:3px solid #172735;border-right:3px solid #172735}header{grid-template-columns:61px 1fr 167px;top:18px;gap:14px}.round{width:61px;height:65px}.cash{height:65px}.cash strong{font-size:37px}.cash>.art-icon{width:48px;height:49px}.brand>span{font-size:29px}.brand strong{font-size:46px}.dashboard{top:145px;width:85px}.objective{top:145px;padding:13px}.objective strong{font-size:20px}.objective #objective{font-size:12px}.objective #next{min-height:38px}.objective #count{font-size:18px}.controls{padding:0 17px 13px}.crush-row{height:114px;margin-bottom:22px}#crush{height:109px}#crush strong{font-size:54px}#crush small{font-size:12px}#auto{height:83px;width:72px}.auto-icon{width:37px;height:37px}.upgrades{gap:12px}.upgrade{padding:12px 10px}.upgrade .up-icon{height:66px}.upgrade>div>span:nth-child(2){font-size:22px}.upgrade small{font-size:23px}.upgrade p{font-size:12px}.upgrade>strong{font-size:31px}.vehicle-label{bottom:340px;font-size:15px}.vehicle-label b{font-size:24px}.scene-top,.scene-bottom{bottom:313px;font-size:12px}footer{font-size:10px}}@media(max-width:365px){header{left:8px;right:8px;gap:6px;grid-template-columns:43px 1fr 103px}.round{width:43px;height:47px}.brand{padding:9px 4px 11px}.brand>span{font-size:14px}.brand strong{font-size:25px}.cash{min-height:47px;padding-right:4px}.cash>.art-icon{width:28px;height:33px}.cash strong{font-size:24px}.cash>span{top:53px;font-size:9px;width:145px}.objective{top:108px;left:8px;width:46%;padding:8px}.objective #objective{font-size:8px}.objective strong{font-size:15px}.dashboard{top:108px;right:8px;width:62px}.yard>.art-icon{width:38px;height:37px}.controls{padding:0 8px 8px}.crush-row{height:85px;margin-bottom:14px}#crush{height:83px;width:69%;margin-left:-12px}#crush strong{font-size:36px}#crush small{font-size:8px}#auto{width:54px;height:65px;top:9px}.upgrades{gap:5px}.upgrade{padding:8px 5px}.upgrade .up-icon{height:39px}.upgrade>div>span:nth-child(2){font-size:12px}.upgrade small{font-size:16px}.upgrade p{font-size:8px}.upgrade>strong{font-size:21px;padding:3px}.upgrade>strong>span{width:23px;height:27px;font-size:22px}.vehicle-label{bottom:251px;font-size:10px}.scene-top,.scene-bottom{bottom:230px;font-size:8px}}@media(prefers-reduced-motion:reduce){.money-float{animation-duration:.5s}.upgrade,.track i{transition:none}}
#crush{width:calc(100% - 82px);margin-right:80px} .scene-top,.scene-bottom{bottom:267px}.scene-bottom{max-width:43%;overflow:hidden;white-space:nowrap}@media(min-width:700px){.scene-top,.scene-bottom{bottom:326px}}@media(max-width:365px){#crush{width:calc(100% - 67px);margin-right:66px}.scene-top,.scene-bottom{bottom:238px}}

/* The stage ends before the control deck: vehicles cannot pass behind CRUSH. */
#scene{bottom:var(--dock-height,290px)}
.controls{background:linear-gradient(#d2b594,#b99574);padding-top:8px;border-top:2px solid #ecd2ac66}
.scene-top,.scene-bottom{bottom:7px!important;font-size:10px!important}
.vehicle-label{bottom:28px!important;font-size:12px}
.vehicle-label b{font-size:19px}
#toast{top:38%;font-size:15px;max-width:78%}
#goldEvent{top:35%}
#floatLayer{position:absolute;inset:0;pointer-events:none;z-index:15;overflow:hidden}
.money-float{top:var(--hit-y,45%);font-size:clamp(35px,7vw,52px);animation-duration:1.35s}
.impact-ring{top:var(--hit-y,45%)}
.slam-word{position:absolute;left:50%;top:calc(var(--hit-y) - 90px);font-family:var(--font);font-size:clamp(25px,5vw,39px);color:#fff7af;white-space:nowrap;text-shadow:3px 3px #db5521,0 5px #4e241c,-2px 0 #4e241c,2px 0 #4e241c;animation:slamtext 1.05s both}
.streak-tag{position:absolute;left:50%;top:calc(var(--hit-y) + 62px);font-family:var(--font);font-size:15px;color:#fff;white-space:nowrap;background:#207fc3;border:2px solid #143651;border-radius:7px;padding:5px 12px;box-shadow:0 3px #112e46;animation:chain 1.2s both}
.flying-bill{position:absolute;left:50%;top:var(--hit-y);width:53px;height:28px;display:grid;place-items:center;color:#176730;background:linear-gradient(135deg,#c3ff8a,#64d23d);border:3px solid #23863c;border-radius:3px;box-shadow:inset 0 0 0 2px #dbffb1,0 3px 1px #13342b55;font:bold 21px var(--text);animation:bankflight 1.35s var(--delay) both;will-change:transform,opacity}
.flying-bill b{border:1px solid #35904c;border-radius:50%;line-height:21px;width:22px;text-align:center}.flying-bill::before,.flying-bill::after{content:'•';position:absolute;top:0;font-size:20px;color:#278d36}.flying-bill::before{left:3px}.flying-bill::after{right:3px}
@keyframes bankflight{0%{opacity:0;transform:translate(-50%,0) scale(.4) rotate(0)}12%{opacity:1}48%{opacity:1;transform:translate(var(--dx),var(--dy)) scale(1.15) rotate(var(--turn))}90%{opacity:1}100%{opacity:0;transform:translate(120px,calc(-1 * var(--hit-y) + 35px)) scale(.3) rotate(15deg)}}
@keyframes slamtext{0%{opacity:0;transform:translate(-50%,0) rotate(-7deg) scale(2.2)}13%{opacity:1;transform:translate(-50%,0) rotate(-7deg) scale(.93)}25%,68%{opacity:1;transform:translate(-50%,0) rotate(-7deg) scale(1)}100%{opacity:0;transform:translate(10%,-45px) rotate(8deg) scale(.8)}}
@keyframes chain{0%{opacity:0;transform:translate(-170%,0)}20%,75%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(70%,0)}}
@media(min-width:700px){.scene-top,.scene-bottom{font-size:12px!important}.vehicle-label{font-size:14px}.vehicle-label b{font-size:22px}}
@media(prefers-reduced-motion:reduce){.flying-bill{animation-duration:.7s}.slam-word,.streak-tag{animation-duration:.7s}}
.objective{width:35%;max-width:188px}.objective strong{font-size:15px}.dashboard{width:61px}.yard>.art-icon{width:38px;height:39px}.yard .eyebrow{font-size:10px}@media(min-width:700px){.objective strong{font-size:19px}.dashboard{width:72px}.yard>.art-icon{width:46px;height:46px}}
/* Reference layout on a single, fixed 720 x 1280 design surface. */
html,body{width:100%;height:100%;overflow:hidden}body{background:#172936}
#app{position:absolute;left:50%;top:50%;width:720px!important;height:1280px!important;min-height:0!important;max-height:none!important;border:0!important;margin:0!important;transform:translate(-50%,-50%) scale(var(--game-scale,1));transform-origin:center;box-shadow:0 0 50px #0007}
header{top:14px;left:14px;right:14px;display:block;height:116px}
.round{position:absolute;left:0;top:0;width:65px;height:65px;padding:9px;border-radius:12px}
.brand{position:absolute;left:187px;top:6px;width:268px;height:114px;padding:13px 6px;transform:none;border-radius:13px}
.brand>span{font-size:29px;line-height:1.05}.brand strong{font-size:48px;line-height:1.18}
.cash{position:absolute;right:0;top:0;width:216px;height:63px;padding:4px 9px 6px 3px}.cash>.art-icon{width:59px;height:58px;margin-right:5px}.cash>strong{font-size:43px;letter-spacing:-1.2px}.cash>span{top:66px;right:0;width:232px;font-size:12px}
.objective{left:14px;top:120px;width:181px;max-width:none;height:163px;padding:13px;border-radius:11px;gap:8px}.objective #objective{font-family:var(--font);font-size:12px;padding-right:0;min-height:20px}.objective #count{top:41px;left:14px;right:auto;font-size:25px}.objective #next{font-size:21px;min-height:48px;padding-top:66px;line-height:1.05}.objective .track{position:absolute;left:12px;right:12px;top:77px;height:18px}
.dashboard{top:109px;right:14px;width:85px}.yard{height:93px;padding:7px 5px}.yard>.art-icon{width:52px;height:53px}.yard .eyebrow{font-size:14px;margin-top:4px}
#scene{inset:0!important;bottom:0!important;width:720px;height:1280px}#world{width:720px;height:1280px}
.controls{left:0;right:0;top:876px;bottom:auto;height:404px;padding:0 13px!important;border:0;background:transparent}
.crush-row{height:133px;margin:0 0 22px;display:block;position:relative}
#crush{position:absolute;left:171px;top:0;width:352px!important;height:128px!important;margin:0!important;max-width:none;border-width:4px;border-radius:17px}
#crush strong{font-size:57px;letter-spacing:1px}#crush small{font-size:12px;margin-top:5px;letter-spacing:.4px}
#auto{position:absolute;left:auto;right:4px;top:20px;width:73px;height:83px;padding:5px}.auto-icon{width:37px;height:37px}#auto strong{font-size:12px}#auto small{font-size:13px}
.upgrades{gap:12px;grid-template-columns:repeat(3,1fr);margin:0}.upgrade{height:187px;padding:14px 11px 13px;border-width:3px;border-radius:14px}.upgrade .up-icon{width:39%;height:67px}.upgrade>div{gap:6px}.upgrade>div>span:nth-child(2){font-size:23px;letter-spacing:-.8px}.upgrade small{font-size:25px;margin-top:10px}.upgrade p{font-size:12px;margin:9px 0}.upgrade>strong{font-size:34px;padding:6px;line-height:1}.upgrade>strong>span{width:38px;height:39px;font-size:30px}
footer{padding-top:15px;font-size:10px;color:#5a452e}.vehicle-label{top:828px;bottom:auto!important;font-size:15px;padding:6px 12px}.vehicle-label b{font-size:23px}.scene-top,.scene-bottom{top:865px;bottom:auto!important;left:17px;right:17px;font-size:11px!important;height:15px}.scene-bottom{max-width:45%}
#toast{top:295px;font-size:20px;max-width:460px;padding:13px 18px}#goldEvent{top:300px;width:440px;padding:11px 15px}#goldEvent>strong{font-size:16px}#goldEvent>span{font-size:22px}
.money-float{font-size:56px}.money-float small{font-size:17px}.slam-word{font-size:38px}.streak-tag{font-size:18px}.flying-bill{width:65px;height:34px;font-size:25px}.flying-bill b{line-height:27px;width:26px}

.objective #objective{font-size:25px;font-weight:400;color:#fffef4;text-shadow:0 3px #0c202e}.objective #next{font-size:19px;padding-top:65px}.objective #next::before{content:"Next unlock:";display:block;font-size:16px;font-weight:600;color:#bbd5e4;margin-bottom:5px}

.objective #next{position:absolute;top:99px;left:13px;right:10px;padding:0;min-height:0;font-size:19px}

.dashboard{display:flex;flex-direction:column;gap:12px}.dashboard .yard{flex-shrink:0}

.yard .eyebrow{color:#fffef4;font-weight:400}.setting-btn:disabled{opacity:.5;cursor:default}

/* Recurring contract board, within the fixed portrait surface. */
.contract-hud{position:absolute;bottom:23px;left:55px;width:610px;height:29px;border:0;border-radius:7px;background:#263d49e8;color:#edf4d9;font-family:var(--text);font-weight:800;font-size:15px;line-height:25px;box-shadow:inset 0 1px #96aaaf55,0 2px 2px #0004}.contract-hud.ready{background:linear-gradient(#79de38,#329d1e);color:white;text-shadow:0 1px #234f1b}.contract-card{margin:14px 0;padding:14px;border:2px solid #102535;border-radius:10px;background:#183343;box-shadow:inset 0 1px #698291}.contract-card>strong{font-family:var(--font);font-weight:400;font-size:15px;color:#fff3c4}.contract-track{height:12px;background:#0b202b;border-radius:6px;margin:12px 0 7px;overflow:hidden}.contract-track i{display:block;height:100%;background:linear-gradient(#b2fa62,#47c326)}.contract-meta{display:flex;justify-content:space-between;color:#c5d9e3;font-size:15px}.contract-meta b{color:#b6ff60}.contract-card p{font-size:14px;margin-bottom:8px}#goals{position:relative}#goals[data-ready]:not([data-ready=""])::after{content:attr(data-ready);position:absolute;right:-6px;top:-7px;border:2px solid #fff1ae;border-radius:50%;width:25px;height:25px;background:#ff573b;color:#fff;font:800 18px var(--text);box-shadow:0 2px 3px #0007}.objective #next::before{content:attr(data-caption)}

#modal{overflow:hidden}#modalContent{max-height:calc(88svh - 130px);overflow-y:auto;overscroll-behavior:contain;padding-right:4px}#modalContent h2:focus{outline:none}.dialog-close{flex-shrink:0}

#splash{position:absolute;inset:0;z-index:50;background:#1a242b;overflow:hidden}.splash-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.splash-title{position:absolute;top:48px;left:52px;width:616px;height:auto;border-radius:18px;box-shadow:0 12px 30px #0009;animation:title-breathe 4s ease-in-out infinite;pointer-events:none}.splash-studio{position:absolute;bottom:42px;left:50%;transform:translateX(-50%);width:260px;text-align:center;pointer-events:none}.splash-studio img{width:260px;display:block}.splash-studio strong{display:block;color:#ff3414;font:400 28px var(--font);letter-spacing:9px;text-shadow:0 3px #420c05,0 0 8px #fff;margin-top:-4px}#playSplash{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;background:transparent}#playSplash>span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);white-space:nowrap;padding:22px 25px;border-radius:14px;background:#0c202adc;border:3px solid #fbd552;color:#fff4c4;font:400 28px var(--font);text-shadow:0 3px #171f2a;box-shadow:0 8px 25px #0008;animation:play-blink 1.5s ease-in-out infinite}@keyframes title-breathe{50%{transform:scale(1.025)}}@keyframes play-blink{50%{opacity:.55}}#crush strong{display:block;transform:translateY(-8px);font-size:53px}#crush small{transform:translateY(-5px);font-size:11px}#timingMeter{position:absolute;display:block;bottom:10px;left:34px;right:34px;height:12px;border:2px solid #682932;background:#6d1424;border-radius:8px;overflow:visible}#timingMeter>i{display:block;position:absolute;left:41.5%;width:17%;height:100%;background:#91ff48;box-shadow:0 0 8px #8bff3d}#timingCursor{display:block;position:absolute;top:-4px;width:5px;height:17px;border-radius:3px;transform:translateX(-50%);background:#fff6cf;box-shadow:0 0 3px #25111d}#timingMeter.inactive{opacity:.5}#timingMeter.perfect{opacity:1;box-shadow:0 0 15px #b1ff68}@media(prefers-reduced-motion:reduce){.splash-title,#playSplash>span{animation:none}}

.splash-title{box-shadow:none;filter:drop-shadow(0 12px 15px #000a)}

.reduced-motion .splash-title,.reduced-motion #playSplash>span{animation:none}.cash>strong{min-width:0}.upgrade>strong{font-size:30px}

/* ============================================================ LOADER
   Sits where the play prompt goes, so the splash art is the only screen
   the player ever sees before the yard opens. */
#loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:74%;max-width:430px;text-align:center;z-index:2;transition:opacity .35s}
.load-track{height:20px;border:3px solid #101b24;border-radius:11px;background:#12232ecc;box-shadow:inset 0 3px 6px #000a,0 3px 0 #0006;overflow:hidden}
#loadBar{display:block;height:100%;width:0;border-radius:6px;background:linear-gradient(#c1ff5a,#54e526 45%,#29ad03);box-shadow:inset 0 2px 0 #dcff9a;transition:width .25s}
#loadText{display:block;margin-top:11px;font:400 17px var(--font);color:#fff4c4;text-shadow:0 3px #171f2a,0 0 12px #000a}
#splash #playSplash>span{opacity:0;transition:opacity .3s}
#splash.ready #playSplash>span{opacity:1}
#splash.ready #loader{opacity:0;pointer-events:none}
#splash:not(.ready) #playSplash{pointer-events:none}

/* ====================================================== PAUSE CURTAIN
   Nothing restarts on its own. Coming back to the tab shows this, and the
   press only turns over again when the player says so. */
#pauseScreen{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:#0a1720d9;padding:20px}
#pauseScreen[hidden]{display:none}
.pause-card{width:100%;max-width:430px;text-align:center;padding:26px 22px 22px;border:3px solid #101b24;border-radius:16px;background:linear-gradient(#31536a,#152a38);box-shadow:inset 0 3px 0 #7ea3b6,0 10px 0 #0b1a24,0 18px 40px #000a}
.pause-card h2{font:400 34px var(--font);margin:6px 0 10px;color:#ffcd37;text-shadow:0 4px 0 #925023,0 6px 0 #14181c}
.pause-card p{font-size:15px;color:#cfe3ee;margin:0 0 18px;line-height:1.35}

/* ========================================================= MEGA CRUSH */
#boost small{display:block;font-size:10px;font-weight:900;color:#cfe3ee;margin-top:1px;text-shadow:0 2px #091923}
#boost .eyebrow{color:#ffd76a}
#boost.available{animation:boost-pulse 1.7s ease-in-out infinite}
#boost.on{background:linear-gradient(135deg,#ffb84d 0,#f07c14 55%,#c94e05 100%)}
#boost.on small,#boost.on .eyebrow{color:#fff6d8}
@keyframes boost-pulse{0%,100%{filter:none}50%{filter:drop-shadow(0 0 9px #ffb03acc)}}
#boostEvent{position:absolute;left:50%;top:25%;width:88%;transform:translate(-50%,86px);z-index:9;padding:9px 13px;color:#fff5e2;background:linear-gradient(#ff9f3d,#e2560a);border:3px solid #6a2f0e;border-radius:10px;box-shadow:inset 0 2px #ffd9a8,0 5px #6a2f0e;text-shadow:0 2px #8a3a12;font-size:14px}
#boostEvent[hidden]{display:none}
#boostEvent>strong{font-family:var(--font);font-size:12px;font-weight:400}
#boostEvent>span{float:right;font-size:18px;font-weight:900}
#boostEvent>div{height:6px;background:#93400f;border-radius:5px;margin-top:6px;overflow:hidden}
#boostEvent i{display:block;height:100%;background:#ffe6bd}

/* ============================================ NIGHT SHIFT AND CROWNS */
.offline-take,.crown-take{margin:14px 0;padding:14px 16px;text-align:center;border:3px solid #143a20;border-radius:12px}
.offline-take,.crown-take{background:linear-gradient(#2c6b39,#144427);box-shadow:inset 0 2px #79c37e}
.offline-take small,.crown-take small{display:block;font-size:11px;font-weight:900;letter-spacing:2px;color:#c8ffbe}
.offline-take strong,.crown-take strong{display:block;font:400 40px var(--font);color:#c9ff6b;text-shadow:0 4px #0f3a1d}
.crown-take{background:linear-gradient(#6d5a1d,#3b2f0c);box-shadow:inset 0 2px #d9be62;border-color:#3b2f0c}
.crown-take small{color:#ffe9a8}
.crown-take strong{color:#ffd34f;text-shadow:0 4px #3a2a05}
.crown-card{border-color:#4a3a10;background:#2c2410}
.crown-card>strong{color:#ffd34f}
.crown-locked{color:#c6b98f;font-size:14px}
.setting-btn.gold{background:linear-gradient(#ffcf4a,#e08a10);border-color:#6a430e;color:#3a2405;text-shadow:none;font-weight:900}

/* ====================================================== WIDE SCREENS
   The playfield keeps its 9:16 shape, so on a desktop the space beside it
   gets the yard art rather than two empty bars. */
@media(min-width:900px){
 body::before{content:'';position:fixed;inset:-50px;background:url('../assets/images/splash.webp') center/cover no-repeat;filter:blur(30px) saturate(.7) brightness(.4);z-index:-3}
 body::after{content:'';position:fixed;inset:0;background:radial-gradient(ellipse at 50% 38%,#0000 25%,#050d13d9 80%);z-index:-2}
 #app{border-radius:18px;box-shadow:0 0 0 4px #0d1b24,0 26px 70px #000c}
}
@media(min-width:700px){
 #boostEvent{top:300px;width:440px;padding:11px 15px;transform:translate(-50%,96px)}
 #boostEvent>strong{font-size:16px}
 #boostEvent>span{font-size:22px}
}
@media(prefers-reduced-motion:reduce){
 #boost.available{animation:none}
 #loadBar{transition:none}
}

/* V10: every overlay uses the fixed 720 x 1280 design coordinates. */
#boostEvent{top:382px;left:206px;width:380px;transform:none;padding:10px 13px;font-size:14px}#boostEvent>strong{font-size:14px}#boostEvent>span{font-size:20px}
#loadActions{position:relative;z-index:60;display:flex;gap:12px;justify-content:center;margin-top:16px}#loadActions[hidden]{display:none}#loadActions button{border:2px solid #ffe09a;border-radius:8px;background:#243d50;padding:14px;color:#fff;font:700 18px var(--text)}#loader{z-index:55}#splash.ready #loader{visibility:hidden}
#perfectLesson{display:none;position:absolute;z-index:10;left:205px;top:736px;width:310px;padding:12px;text-align:center;border:3px solid #c5ff54;border-radius:12px;background:#143542f5;box-shadow:0 6px 15px #0007}#perfectLesson strong{display:block;font:800 17px var(--text);color:#c8ff63}#perfectLesson span{font-size:16px;display:block;margin:4px 0}#skipTutorial{font:800 14px var(--text);border:0;border-radius:5px;background:#a4e647;color:#173b27;padding:6px 16px}.learn-perfect #perfectLesson{display:block}.learn-perfect #timingMeter{box-shadow:0 0 0 4px #c0ff76,0 0 20px #9aff6c}
.reduced-motion #boost{animation:none}

#perfectLesson{top:714px}

.route-panel{margin-bottom:22px;border-bottom:2px solid #6b8790;padding-bottom:20px}.route-card{border:2px solid var(--route);border-radius:10px;padding:13px;margin:12px 0;background:#132b3ccc}.route-card>strong{color:var(--route);font:400 15px var(--font)}.route-card p{font-size:16px;margin:9px 0}.route-lock{color:#cafa87;font-weight:800}#shop.path-ready{box-shadow:inset 0 3px #93d784,0 0 0 3px #b6f65e,0 0 18px #7cdc6480}#shop.path-ready::after{content:'!';position:absolute;right:-6px;margin-top:-83px;border:2px solid #213c32;border-radius:50%;background:#b7f548;color:#14302c;font:900 19px var(--text);width:25px;height:25px;text-align:center}

#shop{position:relative}#shop.path-ready::after{top:0;margin:0}
/* V12: timing stays far above the player's tapping thumb, at all viewport sizes. */
#perfectGauge{position:absolute;left:210px;top:298px;width:300px;height:60px;z-index:8;pointer-events:none;border:3px solid #142c3a;border-radius:12px;background:linear-gradient(#29495b,#142e3c);box-shadow:inset 0 2px #7799a8,0 4px #0d2029;text-align:center}
#perfectGauge>strong{display:block;padding-top:6px;font:800 14px var(--text);letter-spacing:1px;color:#e1f0d6}
#perfectGauge #timingMeter{box-sizing:border-box;left:17px;right:auto;bottom:9px;width:260px;height:15px;background:#0e222d;border:2px solid #071821;border-radius:8px}
#perfectGauge #timingCursor{left:0;top:-5px;width:6px;height:21px;will-change:transform}
#crush strong{transform:none;font-size:56px}#crush small{transform:none;margin-top:4px}#perfectLesson{top:376px}
#upgradeEffects{position:absolute;inset:0;z-index:14;pointer-events:none;overflow:hidden}.upgrade-celebration{position:absolute;top:1050px;color:var(--upgrade-color);animation:upgrade-reward 1.1s ease-out forwards;pointer-events:none}.upgrade-celebration strong{display:block;min-width:175px;transform:translateX(-50%);padding:9px 12px;border:3px solid var(--upgrade-color);border-radius:12px;background:#183440;font:400 18px var(--font);text-align:center;box-shadow:0 4px #0c202b}.upgrade-celebration small{display:block;font:900 23px var(--text);color:#fff}.upgrade-celebration i{position:absolute;left:0;top:10px;font:28px var(--text);font-style:normal;animation:upgrade-spark .9s ease-out forwards}
@keyframes upgrade-reward{0%{opacity:0;transform:translateY(10px) scale(.7)}15%{opacity:1;transform:translateY(-25px) scale(1.08)}35%{transform:translateY(-32px) scale(1)}75%{opacity:1}100%{opacity:0;transform:translateY(-80px)}}@keyframes upgrade-spark{0%{opacity:1;transform:translate(0,0) scale(.4)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1.1)}}
.reduced-motion .upgrade-celebration{animation:none;transform:translateY(-50px)}@media(prefers-reduced-motion:reduce){.upgrade-celebration{animation:none;transform:translateY(-50px)}.upgrade-celebration i{display:none}}
#toast{top:465px!important;bottom:auto!important;width:400px;max-width:400px;left:50%;transform:translate(-50%,-12px)}#toast.show{transform:translate(-50%,0)}.learn-perfect #toast{top:515px!important}
/* V12.1: separate, fixed UI zones and readable mobile goal text. */
#perfectGauge{left:184px;top:800px;width:352px;height:70px}#perfectGauge>strong{font-size:22px;letter-spacing:.5px;padding-top:6px}#perfectGauge #timingMeter{left:21px;width:304px;height:19px;bottom:10px}#perfectGauge #timingCursor{height:27px;top:-6px;width:7px}
.vehicle-label{left:210px;top:290px;width:300px;height:48px;transform:none;box-sizing:border-box;display:flex;justify-content:center;align-items:center;gap:8px;font-size:20px;padding:6px 8px;white-space:normal;text-align:center;line-height:1.05}.vehicle-label b{font-size:26px;white-space:nowrap}.vehicle-label #vehicle{max-width:180px}
.contract-hud{left:35px;width:650px;height:46px;bottom:8px;font-size:27px;line-height:40px;border-radius:9px;padding:0 8px;white-space:nowrap}
#noticeStack{position:absolute;left:206px;top:352px;width:380px;z-index:9;display:flex;flex-direction:column;gap:12px;pointer-events:none}
#noticeStack #goldEvent,#noticeStack #boostEvent,#noticeStack #toast,#app.learn-perfect #noticeStack #toast{position:relative;inset:auto!important;left:auto!important;top:auto!important;bottom:auto!important;transform:none!important;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:12px;font-size:22px;line-height:1.15}
#noticeStack #goldEvent>strong,#noticeStack #boostEvent>strong{font-size:19px}#noticeStack #goldEvent>span,#noticeStack #boostEvent>span{font-size:25px}#noticeStack #toast{display:none}#noticeStack #toast.show{display:block}
#perfectLesson{left:210px;top:146px;width:300px;padding:9px}#perfectLesson strong{font-size:19px}#perfectLesson span{font-size:18px;margin:5px 0}#skipTutorial{font-size:18px;padding:5px 17px}
/* Reward text has its own band, above the timing gauge. */
.slam-word{top:640px;font-size:30px;line-height:36px;z-index:8;animation:feedback-visible 1.05s both}.money-float{top:684px;font-size:42px;line-height:1.1;z-index:8;animation:feedback-visible 1.25s both}.money-float small{font-size:17px}.streak-tag{top:758px;font-size:20px;line-height:23px;padding:4px 12px;z-index:8;animation:feedback-visible 1.2s both}.flying-bill{z-index:0}
@keyframes feedback-visible{0%{opacity:0;transform:translateX(-50%) scale(.85)}15%,80%{opacity:1;transform:translateX(-50%) scale(1)}100%{opacity:0;transform:translateX(-50%) scale(1)}}
/* V12.2: compact upgrade cards free 50px for the conveyor view. */
.controls{top:926px;height:354px}
#perfectGauge{top:850px}
.upgrade{height:137px;padding:7px 10px}
.upgrade .up-icon{height:46px;width:32%}
.upgrade>div>span:nth-child(2){font-size:22px}
.upgrade small{font-size:22px;margin-top:3px}
.upgrade p{font-size:12px;margin:4px 0;line-height:14px}
.upgrade>strong{font-size:32px;padding:3px 6px;line-height:1}
.upgrade>strong>span{width:32px;height:32px;font-size:27px}
.upgrade-celebration{top:1100px}
/* V12.3: narrower upgrade row, lower action button and compact timing gauge. */
.controls{top:946px;height:334px}
.crush-row{height:123px;margin-bottom:12px}
#crush{height:118px!important}
.upgrades{width:620px;margin:0 auto;gap:12px}
#perfectGauge{left:219px;top:890px;width:282px;height:50px;border-radius:10px}
#perfectGauge>strong{font-size:20px;line-height:22px;padding-top:2px;letter-spacing:0}
#perfectGauge #timingMeter{left:18px;width:240px;height:13px;bottom:6px}
#perfectGauge #timingCursor{width:6px;height:19px;top:-5px}
.upgrade-celebration{top:1070px;animation:upgrade-zoom 1.4s cubic-bezier(.2,.7,.25,1) both;transform-origin:center top}
.upgrade-celebration strong{min-width:160px;font-size:17px;padding:7px 10px;box-shadow:0 4px #0c202b,0 0 12px var(--upgrade-color)}
.upgrade-celebration small{font-size:22px}
@keyframes upgrade-zoom{0%{opacity:0;transform:translateY(0) scale(.65)}18%{opacity:1;transform:translateY(-28px) scale(1.05)}30%,72%{opacity:1;transform:translateY(-28px) scale(1)}100%{opacity:0;transform:translateY(-35px) scale(.78)}}
.reduced-motion .upgrade-celebration{animation:none;transform:translateY(-28px)}@media(prefers-reduced-motion:reduce){.upgrade-celebration{animation:none;transform:translateY(-28px)}}
.upgrade-celebration{top:1104px;transform-origin:0 top}
@keyframes upgrade-zoom{0%{opacity:0;transform:translateY(0) scale(.65)}18%{opacity:1;transform:translateY(-24px) scale(1.05)}30%,72%{opacity:1;transform:translateY(-24px) scale(1)}100%{opacity:0;transform:translateY(-30px) scale(.78)}}
.yard-unlock{text-align:center;padding:8px 0}.yard-unlock .eyebrow{font-size:15px;color:#bad7df}.yard-unlock-icon{font-size:65px;line-height:1.2;color:#ffd94a;text-shadow:0 4px #94652a;animation:yard-reveal .4s ease-out both}.yard-unlock h2{font-size:25px;margin:12px 0}.yard-unlock h3{font:400 22px var(--font);color:#b6ff6d;margin:10px 0}.yard-unlock p{font-size:18px}.yard-multiplier{padding:15px;border:2px solid #94d36a;border-radius:12px;background:#163c3d}.yard-multiplier>span{display:block;font:800 15px var(--text);color:#c5e8d8}.yard-multiplier strong{display:block;font:900 36px var(--text);color:#bdff70;margin-top:5px}.yard-multiplier b{color:#e7f1e6;padding:0 12px}.yard-unlock .dialog-close{font-size:17px;padding:16px;margin-top:20px}@keyframes yard-reveal{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.yard-unlock-icon{animation:none}}

/* Eight-area collection; scroll contained within the existing dialog. */
.map-progress{padding:14px;background:#162c38;border-radius:10px;margin-bottom:16px;font:700 22px 'Roboto Condensed',sans-serif}.map-progress>div{height:12px;background:#091c24;border-radius:9px;margin-top:10px;overflow:hidden}.map-progress i{height:100%;display:block;background:#85ed36}.yard-card.map-yard{display:flex;gap:16px;align-items:center;border-left:7px solid var(--yard-color);padding:16px;margin:10px 0}.map-yard.current{box-shadow:inset 0 0 0 2px #8de550;background:#274137}.map-yard.locked{opacity:.70}.map-number{font:32px 'Bowlby',sans-serif;color:var(--yard-color)}.map-yard>div{min-width:0}.map-yard strong{font-size:22px}.map-yard small{display:block;font-size:21px;line-height:1.2;margin:5px 0}.map-yard b{display:block;font:700 19px 'Roboto Condensed',sans-serif;color:#b9ef78;margin-top:6px}

#adBreak[hidden]{display:none}#adBreak{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:rgba(9,25,34,.92);color:#fff;text-align:center}#adBreak strong{display:block;font:clamp(24px,5vw,42px) Bowlby,sans-serif;color:#ffd65d}#adBreak span{display:block;margin-top:16px;font:22px 'Roboto Condensed',sans-serif}
