/* Rush mode ("Clear the Way"): top-down furniture puzzle with Block Jam style free movement. Logic in js/rush.js. */
#scr-rush{align-items:stretch}
#scr-rush::before{content:'';position:absolute;inset:0;backdrop-filter:blur(5px) saturate(1.1);-webkit-backdrop-filter:blur(5px);background:linear-gradient(rgba(255,250,240,.3),rgba(255,250,240,.15));pointer-events:none}
#scr-rush>*{position:relative}
#scr-rush .tb-title{flex:1;min-width:0;text-align:center;padding:6px 12px;border-radius:18px;font-size:20px}
#scr-rush .tb-title>div:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#scr-rush .tb-sub{display:flex;align-items:center;justify-content:center;gap:4px;font-size:14px;color:var(--ink2)}
#scr-rush .tb-sub .ic{width:16px;height:16px}
#rush-info{display:flex;justify-content:center;gap:8px;padding:4px 10px;flex-wrap:wrap}
#rush-info .pill{padding:5px 14px;font-size:17px}
#rush-stars{gap:2px!important;padding:4px 10px!important}
#rush-stars b{display:inline-flex;width:22px;height:22px;filter:grayscale(1) opacity(.35);transition:filter .25s}
#rush-stars b.on{filter:none}
#rush-stars b .ic,#rush-stars b svg,#rush-stars b img{width:22px;height:22px}
#rush-wrap{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:8px 12px}
#rush-board{position:relative;--c:50px;border-radius:calc(var(--c)*.28);box-shadow:0 0 0 calc(var(--c)*.16) #a77a5a,0 0 0 calc(var(--c)*.22) #7d553c,0 18px 34px -10px rgba(60,30,20,.55);touch-action:none;margin-right:calc(var(--c)*.85)}
.rush-floor{position:absolute;inset:0;border-radius:inherit;overflow:hidden;
 background:repeating-linear-gradient(90deg,rgba(120,70,30,.10) 0 2px,transparent 2px var(--c)),repeating-linear-gradient(0deg,rgba(120,70,30,.10) 0 2px,transparent 2px var(--c)),
 repeating-linear-gradient(0deg,#f3d6ad 0 calc(var(--c)/4),#efcfa3 calc(var(--c)/4) calc(var(--c)/2));box-shadow:inset 0 0 calc(var(--c)*.5) rgba(120,70,30,.25)}
.rush-wall{position:absolute;width:var(--c);height:var(--c);border-radius:calc(var(--c)*.14);background:linear-gradient(#b48a6a,#8e6448);box-shadow:inset 0 3px 0 rgba(255,255,255,.35),inset 0 -4px 0 rgba(0,0,0,.18)}
.rush-wall::after{content:'';position:absolute;inset:18%;border-radius:4px;background:repeating-linear-gradient(0deg,rgba(0,0,0,.12) 0 2px,transparent 2px 33%)}
.rush-door{position:absolute;right:calc(var(--c)*-.24);width:calc(var(--c)*.3);height:var(--c);border-radius:6px;background:linear-gradient(90deg,#5fd0c2,#22b8a7);box-shadow:0 0 0 3px #fff,0 0 18px rgba(34,184,167,.8);z-index:2;animation:rushDoor 1.6s ease-in-out infinite}
.rush-door span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(90deg);font-size:calc(var(--c)*.2);color:#fff;letter-spacing:1px}
@keyframes rushDoor{50%{box-shadow:0 0 0 3px #fff,0 0 30px rgba(34,184,167,1)}}
.rush-van{position:absolute;right:calc(var(--c)*-.92);width:calc(var(--c)*.6);height:calc(var(--c)*.6);transform:translateY(-50%);z-index:1;filter:drop-shadow(0 3px 3px rgba(0,0,0,.3))}
.rush-van svg,.rush-van img{width:100%;height:100%}
.rush-piece{position:absolute;left:0;top:0;padding:calc(var(--c)*.06);cursor:grab;z-index:3;transition:transform .16s var(--ease-out);touch-action:none}
.rush-piece .rp-in{width:100%;height:100%;border-radius:calc(var(--c)*.24);display:flex;align-items:center;justify-content:center;gap:4%;overflow:hidden;
 background:linear-gradient(180deg,color-mix(in srgb,var(--tint) 55%,#fff),var(--tint) 55%,color-mix(in srgb,var(--tint) 85%,#000));
 box-shadow:inset 0 3px 0 rgba(255,255,255,.7),inset 0 -5px 0 rgba(0,0,0,.12),0 5px 0 color-mix(in srgb,var(--tint) 60%,#5a3a2a),0 10px 14px -6px rgba(60,30,20,.45)}
.rush-piece img{max-width:88%;max-height:88%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 3px 2px rgba(0,0,0,.25))}
.rush-piece.hero .rp-in{box-shadow:inset 0 3px 0 rgba(255,255,255,.7),inset 0 -5px 0 rgba(0,0,0,.12),0 5px 0 #d4493b,0 0 0 3px #fff,0 10px 16px -6px rgba(212,73,59,.6)}
.rush-piece.hero img{max-width:44%}
.rush-piece.drag{transition:none;z-index:5;cursor:grabbing}
.rush-piece.drag .rp-in{filter:brightness(1.06);box-shadow:inset 0 3px 0 rgba(255,255,255,.7),0 9px 0 color-mix(in srgb,var(--tint) 60%,#5a3a2a),0 18px 20px -6px rgba(60,30,20,.5)}
.rush-piece.bump .rp-in{animation:rushBump .28s var(--ease-back)}
@keyframes rushBump{40%{transform:scale(1.05,.94)}}
.rush-piece.hero.exit{transition:transform .6s cubic-bezier(.5,0,.8,.4),opacity .6s;opacity:0}
#rush-tip{margin:0 14px;padding:8px 14px;border-radius:16px;font-size:15px;text-align:center;color:var(--ink2);line-height:1.25}
.rush-dock{display:flex;justify-content:center;align-items:center;gap:14px;padding:12px 12px max(16px,env(safe-area-inset-bottom))}
.rush-dock .btn.round-lg{width:60px;height:60px;font-size:26px}
#rush-pop{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(40,30,70,.35);backdrop-filter:blur(3px)}
.rush-card{width:min(400px,100%);max-height:100%;overflow:auto;border-radius:26px;padding:18px 18px 20px;text-align:center;animation:rushPop .35s var(--ease-back)}
.rush-card h2{margin:0 0 6px;font-size:30px;font-weight:normal;color:var(--coral)}
.rush-card p{margin:6px 0 10px;font-size:16px;color:var(--ink2);line-height:1.3}
@keyframes rushPop{from{transform:scale(.8);opacity:0}}
.rc-stars{display:flex;justify-content:center;gap:6px}
.rc-stars b{display:inline-flex;width:48px;height:48px;filter:grayscale(1) opacity(.3);animation:rushStar .45s var(--ease-back) both}
.rc-stars b.on{filter:none}
.rc-stars b .ic,.rc-stars b svg,.rc-stars b img{width:100%;height:100%} /* run 13: the .ic wrapper was 1.15em, so the win stars drew at ~16px inside their 48px slots */
@keyframes rushStar{from{transform:scale(0) rotate(-40deg)}}
.rc-coins{display:inline-flex;align-items:center;gap:6px;font-size:22px;color:var(--sun-d);margin-bottom:12px}
.rc-coins .ic,.rc-coins svg,.rc-coins img{width:26px;height:26px}
.rc-coins.dim{font-size:15px;color:var(--ink2)}
.rc-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.rc-btns .btn{font-size:18px;padding:12px 18px}
.rs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:4px 0 14px}
.rs-lv{font:inherit;border:0;cursor:pointer;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:8px;align-items:center;text-align:left;padding:8px 10px;border-radius:16px;background:linear-gradient(#fff,#f2efe8);box-shadow:inset 0 -3px 0 rgba(40,30,90,.08),0 4px 0 #d8d2c4;color:var(--ink)}
.rs-lv b{grid-row:1/3;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--teal);color:#fff;font-weight:normal;font-size:18px}
.rs-lv span{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rs-st{display:flex;gap:1px;font-style:normal}
.rs-st em,.rs-st>svg,.rs-st>img{display:inline-flex;width:16px;height:16px;filter:grayscale(1) opacity(.3)}
.rs-st em.on{filter:none}.rs-st em svg,.rs-st em img{width:16px;height:16px}
.rs-lv.locked{opacity:.55;cursor:default}.rs-lv.locked b{background:#9aa3ba}
body.wide #scr-rush .rush-dock{padding-bottom:20px}
#scr-rush .tb-title{max-width:420px;margin:0 auto}
#rush-tip{align-self:center;max-width:520px}
.rush-van{right:calc(var(--c)*-1.02);width:calc(var(--c)*.78);height:calc(var(--c)*.78)}
/* run 3: hint ghost + arrow, first-house tutorial hand, home button star badge, win sparkles */
.rush-piece.hint .rp-in{animation:rushHint 1s ease-in-out infinite}
@keyframes rushHint{50%{filter:brightness(1.12);box-shadow:inset 0 3px 0 rgba(255,255,255,.7),0 5px 0 color-mix(in srgb,var(--tint) 60%,#5a3a2a),0 0 0 4px #fff,0 0 22px 6px rgba(255,200,60,.95)}}
.rush-ghost{position:absolute;left:0;top:0;z-index:2;pointer-events:none;border-radius:calc(var(--c)*.24);border:3px dashed rgba(255,170,30,.95);background:rgba(255,220,120,.28);display:flex;align-items:center;justify-content:center;animation:rushGhost 1s ease-in-out infinite}
.rush-ghost span{font-size:calc(var(--c)*.6);line-height:1;color:#e88a00;text-shadow:0 2px 0 #fff,0 0 8px rgba(255,255,255,.9)}
@keyframes rushGhost{50%{background:rgba(255,220,120,.45)}}
.rush-ghost.tut{border-color:rgba(255,255,255,.95);background:rgba(255,255,255,.22)}
.rush-ghost.tut span{color:#22b8a7}
.rush-hand{position:absolute;z-index:8;pointer-events:none;width:0;height:0;animation:rushHand 2s ease-in-out infinite}
.rush-hand .rh-finger{position:absolute;left:calc(var(--c)*-.343);top:calc(var(--c)*-.065);width:calc(var(--c)*.95);height:calc(var(--c)*1.135);line-height:0;transform-origin:36% 6%;filter:drop-shadow(0 calc(var(--c)*.06) calc(var(--c)*.05) rgba(60,30,10,.38));animation:rushPress 2s ease-in-out infinite}
.rush-hand .rh-svg{display:block;width:100%;height:100%;overflow:visible;transform:rotate(-12deg);transform-origin:36% 6%}
.rush-hand.rh-flip .rh-svg{transform:scaleX(-1) rotate(-12deg)}
.rush-hand .rh-dot{position:absolute;left:calc(var(--c)*-.22);top:calc(var(--c)*-.22);width:calc(var(--c)*.44);height:calc(var(--c)*.44);border-radius:50%;background:rgba(255,255,255,.7);box-shadow:0 0 0 4px rgba(255,255,255,.35);animation:rushTap 2s ease-in-out infinite}
@keyframes rushHand{0%,12%{transform:translate(0,0);opacity:0}18%{opacity:1}30%{transform:translate(0,0)}70%{transform:translate(var(--dx),var(--dy));opacity:1}88%,100%{transform:translate(var(--dx),var(--dy));opacity:0}}
@keyframes rushPress{0%,18%{transform:scale(1.14) translateY(-6%)}26%{transform:scale(.9)}32%,70%{transform:scale(.96)}80%,100%{transform:scale(1.14) translateY(-6%)}}
@keyframes rushTap{0%,22%{transform:scale(0);opacity:0}30%,70%{transform:scale(1);opacity:1}80%,100%{transform:scale(1.4);opacity:0}}
@media (prefers-reduced-motion:reduce){.rush-hand{animation:none;transform:translate(calc(var(--dx)/2),calc(var(--dy)/2))}.rush-hand .rh-finger,.rush-hand .rh-dot{animation:none}.rush-piece.hint .rp-in,.rush-ghost{animation:none}}
#rush-hint.used{filter:saturate(.75)}
#btn-rush{position:relative}
#btn-rush .rush-badge{position:absolute;top:-9px;right:4px;max-width:calc(100% - 8px);box-sizing:border-box;padding:2px 7px;border-radius:999px;background:#fff;color:#c98a00;font-size:12px;line-height:1.2;letter-spacing:0;white-space:nowrap;box-shadow:0 2px 0 rgba(0,0,0,.15);pointer-events:none}
.rush-spark{position:absolute;z-index:9;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:radial-gradient(#fff,#ffd23f 60%,rgba(255,210,63,0));pointer-events:none;animation:rushSpark .8s ease-out both}
@keyframes rushSpark{from{transform:translate(0,0) scale(1.3);opacity:1}to{transform:translate(var(--sx),var(--sy)) scale(.2);opacity:0}}
#rush-hint.nudge{animation:rushNudge 1.1s ease-in-out 4;box-shadow:0 0 0 4px rgba(255,214,90,.75),0 6px 14px rgba(0,0,0,.18)}
@keyframes rushNudge{0%,100%{transform:scale(1)}40%{transform:scale(1.12) rotate(-4deg)}70%{transform:scale(1.05) rotate(3deg)}}
@media (prefers-reduced-motion:reduce){#rush-hint.nudge{animation:none}}
/* run 5: 15 houses in the level select: three columns on wide screens, compact tiles on short screens */
@media (min-width:900px){.rush-card.rush-sel{width:min(640px,100%)}.rush-sel .rs-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-height:780px){.rush-card.rush-sel{padding:12px 14px 14px}.rush-sel h2{font-size:26px;margin-bottom:2px}.rush-sel p{font-size:14px;margin:2px 0 8px}
  .rush-sel .rs-grid{gap:6px;margin-bottom:10px}.rush-sel .rs-lv{padding:5px 8px;border-radius:14px}.rush-sel .rs-lv b{width:30px;height:30px;font-size:16px}
  .rush-sel .rc-btns .btn{padding:9px 18px;font-size:16px}}
@media (max-height:680px){.rush-sel p{display:none}}
.rs-lv.cur{box-shadow:inset 0 -3px 0 rgba(40,30,90,.08),0 4px 0 #d8d2c4,0 0 0 3px var(--teal)}
@media (max-width:420px){.rush-sel .rs-lv span{white-space:normal;font-size:13px;line-height:1.1;overflow-wrap:anywhere}.rush-sel .rs-lv{column-gap:6px;padding-left:6px;padding-right:6px}}
/* run 6: star milestones (a small progress line in the level select, a claim box on the win card, a gold dot on the home badge) */
.rush-ms{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 10px;margin:0 0 12px;padding:7px 12px;border-radius:14px;background:rgba(255,255,255,.6);box-shadow:inset 0 0 0 2px rgba(201,138,0,.18);font-size:14px;color:var(--ink2);line-height:1.25}
.rush-ms .rm-txt{flex:1 1 200px;text-align:center}
.rush-ms .rm-bar{flex:1 1 100%;height:8px;border-radius:99px;background:rgba(40,30,90,.1);overflow:hidden}
.rush-ms .rm-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ffd23f,#ffb000);transition:width .4s}
.rush-ms.ready{background:linear-gradient(#fff6d6,#ffe9a8);box-shadow:inset 0 0 0 2px #ffc93c,0 0 14px rgba(255,200,60,.55);color:#7a5200;animation:rushMs 1.6s ease-in-out 3}
.rush-ms.claimed{background:linear-gradient(#f2fff6,#dff7e8);box-shadow:inset 0 0 0 2px rgba(34,184,167,.35)}
.rush-ms .rm-claim{font-size:15px;padding:7px 14px;display:inline-flex;align-items:center;gap:5px}
.rush-ms .rm-claim .ic,.rush-ms .rm-claim svg,.rush-ms .rm-claim img{width:18px;height:18px}
@keyframes rushMs{50%{box-shadow:inset 0 0 0 2px #ffc93c,0 0 22px rgba(255,200,60,.9)}}
#btn-rush .rush-badge.ms-ready::after{content:'';position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;background:#ffc93c;box-shadow:0 0 0 2px #fff,0 0 6px rgba(255,180,0,.9)}
@media (max-height:780px){.rush-sel .rush-ms{margin-bottom:8px;padding:5px 10px;font-size:13px}.rush-sel .rush-ms .rm-claim{padding:5px 12px;font-size:14px}.rush-sel .rush-ms .rm-bar{height:6px}}
@media (prefers-reduced-motion:reduce){.rush-ms.ready{animation:none}.rush-ms .rm-bar i{transition:none}}
/* run 9: when the house name is tight on a small phone, drop the number (fitTitles in game.js) */
#scr-rush .tb-title.tight .rn-num{display:none}
/* free-movement furniture: the main game's clay piece art drawn in each piece's exact footprint (no tile, no cropping) */
.rush-piece.art{padding:0;pointer-events:none}
.rush-piece.art .rp-hit{position:absolute;width:var(--c);height:var(--c);pointer-events:auto;cursor:grab}
.rush-piece.art canvas.rp-art{position:absolute;pointer-events:none;transition:filter .15s,transform .15s}
.rush-piece.art.drag canvas.rp-art{filter:brightness(1.06) drop-shadow(0 10px 8px rgba(60,30,20,.4));transform:translateY(-3px) scale(1.03)}
.rush-piece.art.bump canvas.rp-art{animation:rushBump .28s var(--ease-back)}
.rush-piece.art.hint canvas.rp-art{animation:rushHint 1s ease-in-out infinite}
.rush-piece.drag{transition:transform .07s linear}
@media (prefers-reduced-motion:reduce){.rush-piece.art.hint canvas.rp-art,.rush-piece.art.bump canvas.rp-art{animation:none}}
/* "Clear the Way" is longer than the other mode labels: two compact lines instead of three */
#btn-rush .rl{display:block;font-size:.8em;line-height:1.02;text-align:center;letter-spacing:-.01em}
#btn-rush .rush-badge .ic{display:inline-block;width:1.1em;height:1.1em;margin:0;vertical-align:-.2em;filter:none}#btn-rush .rush-badge .ic img{width:100%;height:100%}
