/* Harmony Hopz Virtual World — Stage 1 bunny maker + park preview. */
.world-page{background:linear-gradient(#8fdcff 0 28%, #d8f7c8 28% 62%, #fff3cf 62% 100%);min-height:100vh}
.world-page .site-header{background:rgba(255,255,255,.9)}
.world-wrap{max-width:1080px;margin:0 auto;padding:18px 16px 48px}
.world-title{text-align:center;margin:8px 0 6px}
.world-title h1{font-size:clamp(28px,6vw,46px);margin:0 0 6px;color:var(--ink,#3a2a14);text-shadow:0 3px 0 rgba(255,255,255,.6)}
.world-lead,.world-tokens{max-width:640px;margin:0 auto 12px;text-align:center;font-size:clamp(16px,3.2vw,20px);font-weight:600;color:var(--ink,#3a2a14);line-height:1.4}
.world-tokens{background:#fff8dc;border-radius:22px;padding:12px 16px;box-shadow:0 4px 0 rgba(0,0,0,.08)}
.world-tokens .tok-n{display:inline-flex;align-items:center;gap:6px;background:#fff;border-radius:999px;padding:4px 12px;margin-top:8px;font-weight:800;box-shadow:0 3px 0 rgba(0,0,0,.08)}

.world-maker{display:grid;gap:18px;grid-template-columns:minmax(240px,340px) 1fr;align-items:start;margin-top:16px}
@media (max-width:820px){.world-maker{grid-template-columns:1fr}}

.world-preview{background:linear-gradient(#b8ecff,#fff6d8);border-radius:32px;padding:16px 12px 18px;box-shadow:inset 0 0 0 5px rgba(255,255,255,.8),0 8px 0 rgba(0,0,0,.08);text-align:center}
@media (max-width:820px){.world-preview{position:static}}
.world-preview .hh-bunny{margin:0 auto;width:min(220px,62vw)}
.world-save{width:100%;margin-top:12px;font-size:22px;min-height:64px}
.world-save-msg{min-height:1.4em;margin:8px 0 0;font-weight:700}

/* Name tag above the bunny's head (reused later for every player in the park). */
.hh-bunny{position:relative;display:flex;flex-direction:column;align-items:center;width:100%}
.hh-nametag{position:relative;z-index:2;width:max-content;max-width:min(200px,90vw);margin:0 auto -6px;padding:6px 14px;background:#fff;color:var(--ink,#3a2a14);font-weight:800;font-size:clamp(14px,3.4vw,18px);line-height:1.2;border-radius:999px;box-shadow:0 4px 0 rgba(0,0,0,.12);text-align:center}
.hh-nametag-text{display:block;white-space:nowrap}
.hh-nametag:after{content:"";position:absolute;left:50%;bottom:-7px;width:12px;height:12px;background:#fff;transform:translateX(-50%) rotate(45deg);box-shadow:3px 3px 0 rgba(0,0,0,.06)}
.hh-nametag.is-placeholder{opacity:.85;font-weight:700}
.hh-bunny-stage{width:100%;line-height:0}
.hh-bunny-svg{width:100%;height:auto;display:block;overflow:visible}

.world-pick h2{font-size:clamp(20px,4vw,26px);margin:0 0 10px}
.world-row{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 16px}
#items-hat,#items-top,#items-bottom,#items-shoes{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));}
.world-chip,.world-item{font-family:inherit;font-weight:800;border:0;border-radius:20px;background:#fff;color:var(--ink,#3a2a14);box-shadow:0 4px 0 rgba(0,0,0,.1);cursor:pointer;min-height:56px;padding:10px 14px;font-size:16px;-webkit-tap-highlight-color:transparent}
.world-chip{flex:1 1 140px;font-size:20px;min-height:64px}
.world-item{min-height:88px;width:auto;flex:none}
.world-chip[aria-pressed="true"],.world-item[aria-pressed="true"]{background:#ffe066;box-shadow:0 4px 0 #e0a800;transform:translateY(-1px)}
.world-chip:active,.world-item:active{transform:translateY(2px);box-shadow:0 2px 0 rgba(0,0,0,.1)}
.world-swatch{width:58px;height:58px;flex:none;border-radius:50%;padding:0;border:4px solid #fff;box-shadow:0 4px 0 rgba(0,0,0,.12)}
.world-swatch[aria-pressed="true"]{box-shadow:0 0 0 4px #fff,0 0 0 8px #ff8a1f,0 4px 0 rgba(0,0,0,.12)}
.world-item{flex:1 1 140px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center;min-height:76px}
.world-item .ico{font-size:26px;line-height:1}
.world-item.is-locked{opacity:.72;background:#f3f0ea}
.world-item .soon{font-size:13px;font-weight:700;color:#7a5a20}
.world-name-hint{margin:8px 0 0;font-weight:700}
.world-name-hint button{font-family:inherit;font-weight:800;border:0;background:transparent;color:#1e9be6;text-decoration:underline;cursor:pointer;font-size:inherit}

/* Park opening soon */
.world-park{display:none;text-align:center;background:linear-gradient(#c9f0ff,#fff3cf 55%,#ffd0e4);border-radius:32px;padding:22px 16px 28px;box-shadow:inset 0 0 0 5px rgba(255,255,255,.8),0 8px 0 rgba(0,0,0,.08);margin-top:8px}
.world-park.is-open{display:block}
.world-maker.is-hidden{display:none}
.world-park h2{font-size:clamp(28px,6vw,42px);margin:8px 0}
.world-park p{max-width:560px;margin:0 auto 12px;font-size:clamp(17px,3.4vw,21px);font-weight:600}
.world-park .hh-bunny{max-width:240px;margin:8px auto}
.world-park-art{font-size:clamp(36px,8vw,56px);letter-spacing:2px;margin:8px 0 12px;filter:drop-shadow(0 4px 0 rgba(0,0,0,.08))}
.world-park .cta-row{margin-top:16px}

/* Home enter button (loaded via site.css addition too; this file is world-only) */
@media (prefers-reduced-motion:reduce){
  .world-chip,.world-item,.world-save{transition:none}
}


.world-item .ico-svg{display:flex;align-items:center;justify-content:center;width:52px;height:52px;line-height:0}
.world-item .ico-svg svg{width:48px;height:48px;display:block}
.world-maker.is-hidden{display:none}

/* Walkable theme park */
.world-page.is-in-park .world-title,
.world-page.is-in-park .world-lead,
.world-page.is-in-park .world-tokens{display:none}
.world-page.is-in-park .world-wrap{max-width:none;padding:8px 8px 12px;padding-bottom:max(12px,env(safe-area-inset-bottom,0px))}
.world-park{display:none;position:relative;text-align:center;background:linear-gradient(#c9f0ff,#d8f7c8);border-radius:24px;padding:8px;box-shadow:inset 0 0 0 4px rgba(255,255,255,.8),0 8px 0 rgba(0,0,0,.08);margin-top:0}
.world-park.is-open{display:flex;flex-direction:column;gap:8px}
.park-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:4px 4px 0;position:relative;z-index:30;pointer-events:auto;touch-action:manipulation;overflow:visible;max-width:100%}
.park-bar .btn,.park-bar a.btn{pointer-events:auto;touch-action:manipulation;flex:0 0 auto;opacity:1;white-space:nowrap}
.park-now-playing{margin:0;background:#fff6d6;border-radius:999px;padding:8px 14px;font-weight:800;font-size:15px;box-shadow:0 3px 0 rgba(0,0,0,.08);color:#3b2a14;max-width:min(100%,280px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.park-now-playing[hidden]{display:none!important}
.park-now-playing.is-fading{opacity:0;transition:opacity .6s ease}
#park-next-song{min-width:44px}
.park-bar .btn{min-height:44px;padding:8px 12px;font-size:15px}
.park-tok,.park-live{margin:0;background:#fff;border-radius:999px;padding:8px 12px;font-weight:800;font-size:15px;box-shadow:0 3px 0 rgba(0,0,0,.08);color:var(--ink,#3a2a14)}
.park-stage{position:relative;flex:1 1 auto;width:100%;min-height:240px;height:auto;overflow:hidden;border-radius:20px;background:#7edc6a;touch-action:none;overscroll-behavior:none;cursor:pointer}
.park-world{position:absolute;top:0;left:0;width:2400px;height:1680px;will-change:transform;transform-origin:0 0}
.park-scenery{display:block;width:2400px;height:1680px;pointer-events:none}
.park-entity{position:absolute;top:0;left:0;width:100px;z-index:3;will-change:transform;pointer-events:none;overflow:visible}
.park-entity .hh-bunny{width:100%}
.park-player{z-index:5;width:110px}
.park-remote{z-index:4;width:100px}
.park-npc{width:96px;z-index:2}
.park-npc-art img{width:96px;height:96px;object-fit:contain;filter:drop-shadow(0 4px 0 rgba(0,0,0,.15))}
.park-entity.is-left .hh-bunny-stage,.park-entity.is-left .park-npc-art{transform:scaleX(-1)}
.world-park{
  --park-stick-size:112px;
  --park-stick-bottom:max(18px, env(safe-area-inset-bottom, 0px));
  --park-hud-bottom:max(90px, calc(env(safe-area-inset-bottom, 0px) + 90px), calc(var(--park-stick-bottom) + var(--park-stick-size) + 12px));
}
.park-hint{margin:0;font-size:clamp(15px,3.2vw,18px);font-weight:700;color:var(--ink,#3a2a14);min-height:48px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:6px 8px;background:rgba(255,253,246,.94);border-radius:14px;flex:0 0 auto}
.park-ride-cta{position:absolute;left:50%;bottom:var(--park-hud-bottom);transform:translateX(-50%);z-index:20;width:max-content;max-width:min(520px,86vw);pointer-events:none;text-align:center}
.park-ride-cta[hidden]{display:none!important}
.park-ride-cta .park-go{pointer-events:auto;min-height:56px;min-width:min(280px,86vw);padding:12px 22px;font-size:clamp(16px,3.6vw,20px);box-shadow:0 5px 0 rgba(0,0,0,.16)}
.park-stick{position:absolute;left:max(10px,env(safe-area-inset-left,0px));bottom:var(--park-stick-bottom);width:var(--park-stick-size);height:var(--park-stick-size);border-radius:50%;background:rgba(255,255,255,.6);border:4px solid rgba(59,42,0,.22);z-index:8;touch-action:none;box-shadow:0 6px 0 rgba(0,0,0,.08)}
.park-stick-knob{position:absolute;left:50%;top:50%;width:50px;height:50px;margin:-25px 0 0 -25px;border-radius:50%;background:#ffd45c;box-shadow:0 4px 0 #e0a800;pointer-events:none}
.park-bar #park-map-btn,.park-bar .park-map-btn{position:static;right:auto;bottom:auto;z-index:auto;min-width:0;min-height:44px;padding:8px 12px;border:0;border-radius:999px;background:#fff;color:#3b2a14;font-family:inherit;font-weight:800;font-size:15px;line-height:1.15;box-shadow:0 3px 0 rgba(0,0,0,.08);cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:6px;opacity:1}
.park-bar #park-map-btn:active,.park-bar .park-map-btn:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(0,0,0,.08)}
.park-bar #park-map-btn .park-map-ico,.park-bar .park-map-btn .park-map-ico{font-size:18px;line-height:1}
.world-park.is-busy:not(.is-3d-ride):not(.is-jetski-ride):not(.is-horse-ride) .park-bar{visibility:hidden}
.world-park.is-3d-ride .park-bar,.world-park.is-jetski-ride .park-bar,.world-park.is-horse-ride .park-bar{visibility:visible}
.park-map{position:fixed;inset:0;z-index:170;display:flex;align-items:center;justify-content:center;padding:12px 12px max(16px, env(safe-area-inset-bottom, 0px));background:rgba(30,18,8,.45);pointer-events:auto;touch-action:manipulation}
.park-map-card{position:relative;z-index:171;display:flex;flex-direction:column;width:min(720px,96vw);max-height:min(90dvh,840px);overflow:hidden;background:#fffaf0;color:#3b2a14;border-radius:24px;box-shadow:0 8px 0 rgba(0,0,0,.14);padding:14px 14px 12px}

.park-map-card h2{margin:0 44px 6px 0;font-size:clamp(22px,5vw,28px)}
.park-map-card p.park-map-help{margin:0 8px 8px 0;font-size:14px;font-weight:600;color:#6a4c2a}
.park-map-canvas-wrap{position:relative;flex:1 1 auto;min-height:220px;border-radius:16px;overflow:hidden;background:#7cb86a;box-shadow:inset 0 0 0 3px rgba(59,42,20,.12);touch-action:manipulation}
.park-map-canvas-wrap canvas{display:block;width:100%;height:auto;max-height:min(62dvh,560px);cursor:pointer;touch-action:manipulation}
.park-map-actions{display:flex;justify-content:center;margin-top:10px}
.park-map-actions .btn{min-height:48px;min-width:140px;pointer-events:auto}

.park-overlay{position:absolute;inset:0;z-index:40;background:rgba(20,40,70,.45);display:flex;align-items:center;justify-content:center;padding-top:max(60px,calc(env(safe-area-inset-top,0px) + 56px));padding-right:max(12px,env(safe-area-inset-right,0px));padding-bottom:calc(var(--park-hud-bottom, 90px) + 64px);padding-left:max(12px,env(safe-area-inset-left,0px));border-radius:20px}
.park-overlay[hidden]{display:none!important}
.world-park.is-busy:not(.is-3d-ride):not(.is-jetski-ride):not(.is-horse-ride) .park-bar,.world-park.is-busy .park-hint,.world-park.is-busy .park-stick,.world-park.is-busy .park-ride-cta{visibility:hidden}
.world-park.is-busy.is-jetski-ride .park-stick,.world-park.is-busy.is-horse-ride .park-stick{visibility:visible;z-index:50}
.park-overlay.is-3d-ride.is-card-faded{pointer-events:none;background:transparent}
.park-overlay.is-3d-ride.is-card-faded .park-exit-ride,
.park-overlay.is-3d-ride.is-card-faded .park-ov-x,
.park-overlay.is-3d-ride.is-card-faded #ride-with-chip{pointer-events:auto;z-index:50}
.park-ov-x{position:absolute;top:max(8px,env(safe-area-inset-top,0px));right:max(8px,env(safe-area-inset-right,0px));z-index:45;min-width:48px;min-height:48px;height:auto;width:auto;padding:8px 14px 8px 10px;border:2px solid #9a0008;border-radius:999px;background:#e30613;color:#fff;font-size:16px;font-weight:800;line-height:1.1;font-family:inherit;box-shadow:0 4px 0 #9a0008;display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-tap-highlight-color:transparent;text-shadow:0 1px 0 rgba(0,0,0,.25)}
.park-ov-x:active{transform:translateY(2px);box-shadow:0 2px 0 #9a0008}
.park-overlay{touch-action:auto}
.park-ov-card{position:relative;z-index:1;background:#fffdf6;border-radius:24px;padding:14px 14px 16px;max-width:min(560px,100%);width:100%;max-height:100%;overflow:hidden;box-shadow:0 10px 0 rgba(0,0,0,.12);text-align:center;display:flex;flex-direction:column;touch-action:auto;overscroll-behavior:contain}
.park-ov-card h2,.park-ov-card #ov-close,.park-ov-msg,.park-ov-card .ride-guests{flex:none}
.park-ov-card #ov-close{position:relative;bottom:auto;z-index:2;background:#fffdf6;padding-top:4px}
.park-ov-card h2{margin:4px 8px 8px;padding-right:0;font-size:clamp(22px,5vw,32px);color:#3b2a00}
.park-ov-stage{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;border-radius:18px;background:#c9f0ff;margin-bottom:8px;touch-action:auto}
.park-overlay.is-list,.park-overlay:has(.shop-tabs),.park-overlay:has(.shop-scroll),.park-overlay:has(.castle-menu){align-items:stretch;justify-content:flex-start;padding-bottom:max(16px, calc(env(safe-area-inset-bottom, 0px) + 16px))}
.park-overlay.is-list .park-ov-card,.park-ov-card:has(.shop-tabs),.park-ov-card:has(.shop-scroll),.park-ov-card:has(.castle-menu){height:100%;max-height:100%;align-self:stretch;flex:1 1 auto;min-height:0}
.park-ov-stage:has(.shop-tabs),.park-ov-stage:has(.shop-scroll),.park-ov-stage:has(.castle-menu),.park-ov-stage:has(.shop-row){background:#fff8e8;min-height:0}
.shop-balance,.shop-tabs,.shop-soon,.castle-intro{flex:none}
.castle-menu{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:hidden;height:100%}
.shop-pane,.shop-scroll,.park-ask-list{
  flex:1 1 auto;min-height:12.5rem;overflow-x:hidden;overflow-y:auto;
  -webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain;
}
.shop-soon{margin:8px 0 0;font-size:15px}
.park-ov-msg{min-height:1.4em;margin:6px 0 10px;font-weight:700;font-size:17px}
.ride{position:relative;height:220px;overflow:hidden}
.ride-bunny{position:absolute;width:90px;z-index:3}
.ride-guests{display:flex;justify-content:center;gap:4px;flex-wrap:wrap;min-height:0}
.ride-guest{width:72px}
.ride-coaster{background:linear-gradient(#7ec8ff 40%,#8a5a3c 40%)}
.ride-volcano{position:absolute;left:12px;bottom:20px;font-size:64px}
.ride-track{position:absolute;left:10%;right:10%;top:50%;height:8px;background:#c45c2c;border-radius:8px}
.ride-cart{position:absolute;top:28%;left:8%;width:110px;animation:hh-coaster 4.4s ease-in-out infinite}
@keyframes hh-coaster{0%{left:8%;top:28%}25%{left:40%;top:8%}55%{left:70%;top:30%}80%{left:40%;top:50%}100%{left:8%;top:28%}}
.ride-ferris{background:linear-gradient(#7ec8ff,#fff);display:flex;align-items:center;justify-content:center;height:240px}
.ferris-wheel{width:180px;height:180px;border:8px solid #ff6fa8;border-radius:50%;position:relative;animation:hh-spin 6s linear infinite}
.ferris-car{position:absolute;left:50%;top:-10px;width:80px;margin-left:-40px;animation:hh-spin-back 6s linear infinite}
@keyframes hh-spin{to{transform:rotate(360deg)}}
@keyframes hh-spin-back{to{transform:rotate(-360deg)}}
.ride-carousel{background:radial-gradient(circle at 50% 80%,#ffd0e4,#fff6a8);height:230px}
.carousel-mount{font-size:80px;position:absolute;left:50%;top:20px;margin-left:-40px;animation:hh-bob 1s ease-in-out infinite}
.carousel-seat{position:absolute;left:50%;bottom:16px;width:100px;margin-left:-50px;animation:hh-bob 1s ease-in-out infinite}
@keyframes hh-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}
.ride-train{background:linear-gradient(#c9f0ff 60%,#8fdc6c 60%);height:220px}
.train-letters{display:flex;gap:8px;justify-content:center;padding-top:10px;font-weight:800;font-size:28px}
.train-letters span{background:#fff;border-radius:10px;padding:2px 8px;box-shadow:0 3px 0 rgba(0,0,0,.1)}
.train-car{position:absolute;bottom:18px;left:-20%;width:140px;display:flex;align-items:flex-end;gap:4px;animation:hh-train 4.5s linear infinite}
.train-body{font-size:48px}
@keyframes hh-train{from{left:-25%}to{left:90%}}
.ride-boats{background:linear-gradient(#7ec8ff,#1e9be6);height:220px}
.boat-water{position:absolute;inset:40% 0 0;background:repeating-linear-gradient(90deg,transparent,transparent 20px,#fff3 20px,#fff3 22px)}
.boat-seat{position:absolute;bottom:24px;left:10%;width:120px;display:flex;align-items:flex-end;animation:hh-boat 3.5s ease-in-out infinite}
.boat-seat>span{font-size:36px}
@keyframes hh-boat{0%,100%{left:10%;transform:rotate(-3deg)}50%{left:55%;transform:rotate(3deg)}}
.ride-dance{background:#3a2a14;height:230px}
.dance-floor{position:absolute;inset:16px;border-radius:12px;background:conic-gradient(#ff6fa8 0 90deg,#5ec8ff 0 180deg,#ffd45c 0 270deg,#7fdc6a 0);animation:hh-flash 1.2s steps(2) infinite}
@keyframes hh-flash{50%{filter:brightness(1.25)}}
.ride-dance .ride-bunny.dance-hop{position:absolute;left:50%;bottom:18px;margin-left:-45px;animation:hh-hopd 0.6s ease-in-out infinite}
@keyframes hh-hopd{0%,100%{transform:translateY(0)}40%{transform:translateY(-22px)}}
.ride-wash{background:linear-gradient(#5ec8ff,#c9f0ff);height:230px}
.wash-tub{position:absolute;left:50%;bottom:10px;width:110px;margin-left:-55px;z-index:2}
.wash-bubbles i{position:absolute;bottom:20px;width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.8);border:2px solid #fff;animation:hh-bub 2.8s linear infinite}
.wash-bubbles i:nth-child(1){left:20%;animation-delay:0s}
.wash-bubbles i:nth-child(2){left:35%;width:26px;height:26px;animation-delay:.4s}
.wash-bubbles i:nth-child(3){left:50%;animation-delay:.8s}
.wash-bubbles i:nth-child(4){left:65%;width:22px;height:22px;animation-delay:1.1s}
.wash-bubbles i:nth-child(5){left:78%;animation-delay:1.6s}
@keyframes hh-bub{to{transform:translateY(-180px);opacity:0}}
.shop-peek{padding:12px 10px;font-size:17px;font-weight:600}
.shop-soon{background:#fff8dc;border-radius:16px;padding:10px;margin:10px 0}
.shop-icons{font-size:42px;letter-spacing:6px}
.game-help{margin:6px 8px 8px;font-weight:700}
.park-ov-stage:has(.game-rings),
.park-ov-stage:has(.game-balloons),
.park-ov-stage:has(.game-ducks){
  flex:1 1 auto;
  min-height:min(46vh, 380px);
  overflow:visible;
  background:#c9f0ff;
}
.game-rings{
  position:relative;
  flex:1 1 auto;
  min-height:240px;
  height:min(42vh, 320px);
  margin:0 0 10px;
  background:linear-gradient(#fff8dc,#f3d9a4 70%,#e8c57a);
  border-radius:18px;
  overflow:hidden;
  box-shadow:inset 0 -18px 0 #d4a85a;
}
.ring-score{position:absolute;top:8px;left:10px;right:10px;z-index:2;font-weight:800;font-size:15px;color:#3b2a14;text-align:center;pointer-events:none}
.ring-bottles{position:absolute;left:8%;right:8%;bottom:34px;display:flex;justify-content:space-between;align-items:flex-end;height:130px;z-index:1}
.ring-bottle{width:36px;display:flex;flex-direction:column;align-items:center;filter:drop-shadow(0 3px 0 rgba(0,0,0,.12))}
.ring-bottle .neck{width:14px;height:22px;border-radius:3px 3px 0 0;background:#fff8;box-shadow:inset 0 0 0 2px rgba(255,255,255,.45)}
.ring-bottle .body{width:32px;height:72px;border-radius:8px 8px 6px 6px}
.ring-bottle.is-mid .body{height:88px}
.ring-bottle.is-hit .body{outline:3px solid #2b7a20;outline-offset:2px}
.ring-aim{
  position:absolute;bottom:18px;width:44px;height:44px;margin-left:-22px;
  border:6px solid #ff6fa8;border-radius:50%;box-shadow:inset 0 0 0 4px #fff,0 3px 0 rgba(0,0,0,.12);
  z-index:3;pointer-events:none;background:transparent;
}
.ring-aim.is-flying{transition:none}
.game-ducks{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;padding:16px 10px;min-height:140px}
.duck-btn{font-family:inherit;font-size:32px;border:0;background:#fff;border-radius:16px;min-width:56px;min-height:56px;box-shadow:0 3px 0 rgba(0,0,0,.1);cursor:pointer}
.game-balloons{position:relative;flex:1 1 auto;min-height:min(42vh, 320px);height:min(46vh, 360px);background:linear-gradient(#7ec8ff 0%,#c9f0ff 55%,#e8f8ff 100%);border-radius:16px;margin:0 0 8px;overflow:hidden;touch-action:manipulation}
.balloon-score{position:absolute;top:8px;left:10px;right:10px;z-index:3;font-weight:800;font-size:16px;color:#3b2a14;text-align:center;pointer-events:none;text-shadow:0 1px 0 #fff}
.balloon-btn{position:absolute;left:0;bottom:8px;width:68px;height:92px;min-width:68px;min-height:92px;padding:0;margin:0;border:0;background:transparent!important;box-shadow:none;border-radius:0;z-index:2;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.balloon-btn .bb-body{display:block;width:54px;height:66px;margin:0 auto;border-radius:50% 50% 50% 50% / 58% 58% 42% 42%;box-shadow:inset -9px -12px 0 rgba(255,255,255,.38),0 3px 0 rgba(0,0,0,.14);position:relative}
.balloon-btn .bb-body:after{content:"";position:absolute;left:50%;bottom:-7px;width:12px;height:10px;margin-left:-6px;background:inherit;clip-path:polygon(50% 100%,0 0,100% 0)}
.balloon-btn .bb-string{display:block;width:2px;height:18px;margin:8px auto 0;background:#3b2a14;border-radius:1px;opacity:.65}
.balloon-btn.is-pop{pointer-events:none;transform:scale(1.2)!important;opacity:0;transition:transform .16s ease-out,opacity .16s ease-out}
#balloon-again{display:block;margin:8px auto 0;min-height:48px}
@media (orientation:landscape) and (max-height:520px){
  .park-stage{min-height:180px}
  .park-bar .park-live{display:none}
  .world-page.is-in-park .site-header .nav{display:none}
  .ride{height:160px}
}
@media (prefers-reduced-motion:reduce){
  .ride-cart,.ferris-wheel,.ferris-car,.carousel-mount,.carousel-seat,.train-car,.boat-seat,.dance-hop,.wash-bubbles i,.dance-floor{animation:none!important}
}
@media (max-width:720px){
  .world-park{--park-stick-size:100px}
  .park-stage{min-height:220px}
}

/* Big Save & Enter the Park button: fixed at the bottom so it stays on screen on phones, even while scrolling outfits. */
.world-save-dock{position:fixed;left:0;right:0;bottom:0;z-index:60;background:linear-gradient(#fff8dc,#ffd45c);border-top:4px solid #e0a800;padding:10px 14px max(12px,env(safe-area-inset-bottom,0px));box-shadow:0 -8px 18px rgba(0,0,0,.12);text-align:center}
.world-save-dock .world-save{width:100%;max-width:640px;margin:0 auto;display:block;font-size:clamp(20px,5.2vw,26px);min-height:64px;line-height:1.15;text-wrap:balance}
.world-save-dock .world-save-msg{margin:6px 0 0;min-height:1.2em}
.world-page:not(.is-in-park){overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.world-page:not(.is-in-park) .world-wrap{padding-bottom:132px}
.world-maker,.world-pick,.world-row{touch-action:pan-y}
.world-maker.is-hidden .world-save-dock,.is-in-park .world-save-dock{display:none}
@media (max-width:720px){
  .world-preview .hh-bunny{width:min(200px,58vw)}
  .world-maker{grid-template-columns:1fr}
}
#edit-bunny,#park-fs,#park-quiet,#park-map-btn{font-weight:800;min-height:48px;opacity:1!important;color:#3b2a14}

.world-page.is-in-park .a2hs-bar{display:none}
.world-page.is-in-park .world-wrap{display:flex;flex-direction:column;min-height:calc(100dvh - 148px);padding:6px 8px max(8px,env(safe-area-inset-bottom,0px))}
.world-park.is-open{flex:1 1 auto;min-height:0}
.park-entity .hh-nametag,.park-npc .hh-nametag{max-width:200px;font-size:14px;padding:4px 10px}
.hh-bunny{overflow:visible}

[hidden]{display:none!important}

.shop-balance{margin:0 0 10px;font-weight:800;font-size:18px}
.shop-tabs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:10px}
.shop-tab.is-on{background:#ffe066;box-shadow:0 3px 0 #e0a800}
.shop-row{display:flex;align-items:center;gap:10px;background:#fff;border-radius:16px;padding:8px 10px;margin:0 0 8px;text-align:left;box-shadow:0 3px 0 rgba(0,0,0,.08)}
.shop-thumb{width:52px;height:52px;flex:none;display:flex;align-items:center;justify-content:center}
.shop-thumb svg{width:48px;height:48px}
.shop-thumb.big{width:72px;height:72px;margin:8px auto}
.shop-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;font-weight:700}
.shop-meta b{font-size:16px;color:#3b2a00}
.shop-meta span{font-size:14px;font-weight:700;color:#7a5a20}
.shop-owned{font-weight:800;color:#2b7a20;font-size:14px;white-space:nowrap}
.shop-h{margin:14px 0 8px;font-size:18px;text-align:left;color:#3b2a00}
.shop-body{text-align:left}
.gift-pop{padding:8px 6px;font-size:18px;font-weight:700}
.gift-pop p{margin:6px 0}
.park-remote{pointer-events:auto;cursor:pointer}
.hh-media-toast{position:fixed;left:50%;bottom:max(16px,env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:80;background:#fff8dc;color:#3b2a00;font-weight:800;font-size:16px;padding:12px 16px;border-radius:16px;box-shadow:0 6px 0 rgba(0,0,0,.12);max-width:min(420px,92vw);text-align:center;text-wrap:balance}
.hh-media-toast[hidden]{display:none!important}

.park-stage canvas.park-3d{position:absolute;inset:0;width:100%!important;height:100%!important;display:block;touch-action:none;background:#7ec8ff}
.world-park.is-3d .park-stage{background:#7ec8ff;min-height:min(68vh,760px)}
.park-overlay.is-3d-ride{background:linear-gradient(to bottom,rgba(20,40,70,.1),rgba(20,40,70,.02) 40%,rgba(20,40,70,.22));align-items:flex-end;padding-top:max(64px,calc(env(safe-area-inset-top,0px) + 56px));padding-bottom:calc(var(--park-hud-bottom, 90px) + 64px)}
.park-overlay.is-3d-ride .park-ov-card{background:rgba(255,253,246,.92);max-width:min(400px,100%);padding:10px 14px 12px}
.park-overlay.is-3d-ride .park-ov-stage{min-height:0!important;margin:0 0 4px;background:transparent}
.park-overlay.is-3d-ride .park-ov-card h2{font-size:clamp(20px,4vw,26px);margin:0 0 4px}
.park-overlay.is-3d-ride .park-ov-msg{margin:4px 0 0}
.ride-join{margin:0;font-weight:700;font-size:17px;text-wrap:balance}

.world-page.is-in-park .site-footer{display:none}
.world-page.is-in-park .world-wrap{min-height:calc(100dvh - 92px)}

/* 3D ride chrome: fade the intro card, keep X and Exit Ride */
.park-overlay.is-3d-ride .park-ov-card{transition:opacity .5s ease,transform .5s ease}
.park-overlay.is-3d-ride.is-card-faded .park-ov-card{opacity:0;transform:translateY(18px);pointer-events:none}
.park-exit-ride{position:absolute;left:50%;bottom:var(--park-hud-bottom, max(90px, calc(env(safe-area-inset-bottom, 0px) + 90px)));transform:translateX(-50%);z-index:46;min-height:56px;min-width:min(280px,82vw);padding:12px 28px;border:0;border-radius:999px;background:#fff;color:#3b2a14;font-family:inherit;font-size:clamp(20px,4.4vw,26px);font-weight:800;box-shadow:0 5px 0 rgba(0,0,0,.18);cursor:pointer;-webkit-tap-highlight-color:transparent}
.park-exit-ride:active{transform:translateX(-50%) translateY(3px);box-shadow:0 2px 0 rgba(0,0,0,.18)}

/* Floating exit while inside the Castle Restaurant — sits above the joystick, stays visible in fullscreen. */
.park-exit-castle{position:absolute;left:max(10px,env(safe-area-inset-left,0px));bottom:calc(var(--park-stick-bottom) + var(--park-stick-size) + 12px);z-index:48;min-height:48px;padding:10px 18px;border:0;border-radius:999px;background:#e30613;color:#fff;font-family:inherit;font-size:clamp(16px,4.2vw,20px);font-weight:800;border:2px solid #9a0008;box-shadow:0 5px 0 #9a0008;cursor:pointer;-webkit-tap-highlight-color:transparent;pointer-events:auto;display:inline-flex;align-items:center;gap:6px;text-shadow:0 1px 0 rgba(0,0,0,.25)}
.park-exit-castle:active{transform:translateY(3px);box-shadow:0 2px 0 #9a0008}
.park-exit-castle[hidden]{display:none!important}
.world-page.is-park-fs .park-exit-castle,.world-park.is-fs .park-exit-castle{z-index:48;visibility:visible}

/* Fullscreen: native Fullscreen API plus CSS fallback that hides header/nav */
#park-fs{min-width:48px}
.world-page.is-park-fs .site-header,
.world-page.is-park-fs .site-footer,
.world-page.is-park-fs .park-hint,
.world-page.is-park-fs .a2hs-bar{display:none!important}
.world-page.is-park-fs .world-wrap{max-width:none;padding:0;min-height:100dvh;height:100dvh}
.world-page.is-park-fs .world-park.is-open{position:fixed;inset:0;z-index:40;margin:0;border-radius:0;box-shadow:none;min-height:100dvh;height:100dvh;padding:0;gap:0}
.world-page.is-park-fs .park-stage{border-radius:0;min-height:0;flex:1 1 auto;height:auto}
.world-page.is-park-fs .world-park{--park-hud-bottom:max(100px, calc(env(safe-area-inset-bottom, 0px) + 100px), calc(var(--park-stick-bottom) + var(--park-stick-size) + 16px));}
.world-page.is-park-fs .park-bar{padding:6px 8px;background:rgba(255,253,246,.94);z-index:5;flex-wrap:wrap;overflow:visible;justify-content:flex-start;-webkit-overflow-scrolling:touch}
.world-page.is-park-fs .park-bar .btn,.world-page.is-park-fs .park-tok,.world-page.is-park-fs .park-live{flex:0 0 auto;min-height:40px;font-size:14px;padding:6px 10px}
.world-park.is-fs .park-stage{min-height:min(78vh,860px)}

/* Castle restaurant menu */
.castle-menu{display:flex;flex-direction:column;gap:8px;text-align:left}
.castle-menu .shop-row{display:flex;align-items:center;gap:10px;background:#fff;border-radius:16px;padding:8px 10px}
.castle-menu .shop-meta{flex:1;display:flex;flex-direction:column}
.castle-menu .free-tag{font-size:13px;font-weight:700;color:#3b9a2c}

.park-overlay.is-3d-ride.is-card-faded .park-ov-card,
.park-overlay.is-3d-ride.is-card-faded #ov-title,
.park-overlay.is-3d-ride.is-card-faded .ride-guests{opacity:0;pointer-events:none}
.ride-with-chip{position:absolute;top:max(12px,env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);z-index:46;max-width:min(420px,70vw);padding:8px 16px;border-radius:999px;background:rgba(255,253,246,.94);color:#3b2a14;font-family:inherit;font-weight:800;font-size:clamp(14px,3.2vw,17px);box-shadow:0 3px 0 rgba(0,0,0,.14);text-align:center;text-wrap:balance;pointer-events:none}
.ride-with-chip[hidden]{display:none!important}
.park-ride-toast{position:fixed;left:50%;bottom:var(--park-hud-bottom, max(90px, calc(env(safe-area-inset-bottom, 0px) + 90px)));transform:translateX(-50%);z-index:85;max-width:min(420px,90vw);padding:12px 18px;border-radius:16px;background:#fff8dc;color:#3b2a00;font-family:inherit;font-weight:800;font-size:16px;box-shadow:0 5px 0 rgba(0,0,0,.12);text-align:center;text-wrap:balance;pointer-events:none}
.park-ride-toast[hidden]{display:none!important}

.hh-quiet-bell{display:inline-block;margin-right:4px;font-size:1em;line-height:1;vertical-align:middle}
.hh-nametag.has-quiet .hh-nametag-text{display:inline}

.park-ask{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:12px 12px max(18px, env(safe-area-inset-bottom, 0px));background:rgba(30,18,8,.4);pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.park-ask[hidden]{display:none!important}
.park-ask-card{position:relative;z-index:201;pointer-events:auto;touch-action:manipulation;display:flex;flex-direction:column;width:min(640px,94vw);max-height:min(86dvh,720px);overflow:hidden;background:#fffaf0;color:#3b2a14;border-radius:24px;box-shadow:0 8px 0 rgba(0,0,0,.14);padding:16px 16px 14px;text-align:center}
.park-ask-actions,.park-ask-actions .btn{pointer-events:auto;touch-action:manipulation;position:relative;z-index:202}
.park-ask-list button{pointer-events:auto;touch-action:pan-y;position:relative;z-index:202}
.park-ask .park-ov-x,.park-map .park-ov-x{position:absolute;top:8px;right:8px;z-index:203;pointer-events:auto;touch-action:manipulation}
.park-ask-card h2{margin:0 0 6px;font-size:clamp(18px,4.2vw,22px);line-height:1.25;text-wrap:balance}
.park-ask-card p{margin:0 0 10px;font-weight:700;line-height:1.35}
.park-ask-card{max-height:min(86dvh,720px)}
.park-ask-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 10px;text-align:left;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain}
@media (max-width:640px){.park-ask-card{width:min(440px,94vw);padding:12px 12px 10px}.park-ask-list{gap:6px;margin:6px 0 8px}.park-ask-list button{font-size:13px;padding:8px 10px}}
.park-ask-list button{font-family:inherit;font-weight:800;font-size:14px;line-height:1.3;text-align:left;width:100%;border:0;border-radius:16px;padding:10px 12px;background:#fff;color:#3b2a14;box-shadow:0 3px 0 rgba(0,0,0,.1);cursor:pointer;text-wrap:balance;display:flex;align-items:center;gap:10px;min-height:56px}
.park-ask-list .ask-ico,.park-ask-prompt .ask-ico{flex:0 0 36px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;pointer-events:none}
.park-ask-list .ask-ico svg,.park-ask-prompt .ask-ico svg,.park-ask-list .ask-ico img,.park-ask-prompt .ask-ico img{width:36px;height:36px;display:block}
.park-ask-list .ask-label{flex:1 1 auto;min-width:0}
.park-ask-prompt{display:flex;align-items:center;gap:12px;text-align:left;margin:0 0 10px}
.park-ask-prompt p{margin:0;font-weight:800;line-height:1.35;flex:1 1 auto}
@media (max-width:640px){
  .park-ask-list{grid-template-columns:1fr}
  .park-ask-list button{font-size:15px;padding:10px 12px;min-height:58px}
  .park-ask-list .ask-ico,.park-ask-prompt .ask-ico{flex-basis:40px;width:40px;height:40px}
  .park-ask-list .ask-ico svg,.park-ask-prompt .ask-ico svg{width:40px;height:40px}
}
.park-ask-list button:active{transform:translateY(2px);box-shadow:0 1px 0 rgba(0,0,0,.1)}
.park-ask-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:8px;flex:none}
.park-ask-actions .btn{min-width:120px}
.btn.park-exit-red,.park-ask-actions #ask-exit{
  background:#e30613!important;
  color:#fff!important;
  border:2px solid #9a0008;
  box-shadow:0 4px 0 #9a0008;
  text-shadow:0 1px 0 rgba(0,0,0,.25);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
}
.btn.park-exit-red:active,.park-ask-actions #ask-exit:active{box-shadow:0 2px 0 #9a0008;transform:translateY(2px)}
#park-quiet[aria-pressed="true"]{background:#efe8dc}
.park-ask-list button.ask-gift{grid-column:1/-1;justify-content:flex-start}

/* Phones and narrow tablets: the 3D park fills the remaining screen under the header. */
@media (max-width:900px){
  .world-page.is-in-park{display:flex;flex-direction:column;height:100dvh;max-height:100dvh;overflow:hidden}
  .world-page.is-in-park .site-header{padding:4px 8px;flex:none;position:relative;z-index:80;pointer-events:auto}
  .world-page.is-in-park .site-header .wrap{position:relative;z-index:81;pointer-events:auto}
  .world-page.is-in-park .world-nav-toggle{display:inline-flex;align-items:center;justify-content:center;margin-left:auto}
  .world-page.is-in-park .site-header .nav{display:none}
  .world-page.is-in-park .site-header.is-nav-open .nav{display:flex;flex-direction:column;flex-wrap:nowrap;position:absolute;left:0;right:0;top:100%;z-index:90;background:#fffaf0;padding:8px;gap:4px;box-shadow:0 10px 24px rgba(0,0,0,.16);border-bottom:3px solid var(--line,#ffe4b8);max-height:70vh;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;pointer-events:auto}
  .world-page.is-in-park .site-header.is-nav-open .nav a{flex-direction:row;justify-content:flex-start;gap:10px;min-height:48px;padding:10px 14px;font-size:17px;width:100%;border-radius:16px}
  .world-page.is-in-park .site-header.is-nav-open .nav-long{display:inline}
  .world-page.is-in-park .site-header.is-nav-open .nav-short{display:none}
  .world-page.is-in-park .world-wrap{flex:1 1 auto;min-height:0;height:auto;padding:0;padding-bottom:env(safe-area-inset-bottom,0px)}
  .world-page.is-in-park .world-park.is-open{min-height:0;height:100%;border-radius:0;box-shadow:none;padding:0;gap:0;margin:0;overflow:hidden}
  .world-page.is-in-park .park-bar{flex-wrap:wrap;overflow-x:auto;overflow-y:hidden;justify-content:flex-start;gap:6px;padding:6px 8px;background:rgba(255,253,246,.94);z-index:40;position:relative;pointer-events:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x;overscroll-behavior-x:contain;width:100%;max-width:100%;min-width:0;flex:0 0 auto}
  .world-page.is-in-park .park-bar .btn,
  .world-page.is-in-park .park-bar a.btn,
  .world-page.is-in-park .park-tok,
  .world-page.is-in-park .park-live{flex:0 0 auto;min-height:40px;font-size:14px;padding:6px 10px;pointer-events:auto;touch-action:manipulation}
  .world-page.is-in-park .park-hint{display:none}
  .world-page.is-in-park .park-stage{flex:1 1 auto;min-height:0;border-radius:0;z-index:1}
  .world-page.is-in-park .world-park.is-3d .park-stage{min-height:0}
  .world-page.is-in-park .world-park{--park-hud-bottom:max(92px, calc(env(safe-area-inset-bottom, 0px) + 92px), calc(var(--park-stick-bottom) + var(--park-stick-size) + 16px))}
}

/* Playable song game launched from the park (Bubble Wash, etc.) */
.park-overlay.is-park-game{align-items:stretch;justify-content:stretch;padding-top:max(52px,calc(env(safe-area-inset-top,0px) + 48px));padding-bottom:max(10px,env(safe-area-inset-bottom,0px));padding-left:max(8px,env(safe-area-inset-left,0px));padding-right:max(8px,env(safe-area-inset-right,0px));background:rgba(20,40,70,.5)}
.park-overlay.is-park-game .park-ov-card{max-width:min(1100px,100%);width:100%;height:100%;max-height:100%;display:flex;flex-direction:column;padding:8px 8px 10px}
.park-overlay.is-park-game .park-ov-stage{flex:1 1 auto;min-height:0;display:flex;overflow:hidden;background:transparent;margin:0 0 8px}
.park-overlay.is-park-game .park-game-root,.park-overlay.is-park-game .hh-game{flex:1 1 auto;min-height:0;height:100%;width:100%;max-width:none;padding:0;display:flex;flex-direction:column}
.park-overlay.is-park-game .hh-stage{flex:1 1 auto;min-height:min(58vh,520px);height:100%}
.park-overlay.is-park-game #ov-close{flex:none;min-height:48px}
.world-page.is-park-fs .park-overlay.is-park-game .hh-stage{min-height:min(68dvh,640px)}
@media (max-width:430px){
  .park-overlay.is-park-game .hh-stage{min-height:min(54vh,480px)}
  .park-overlay.is-park-game .hh-bar h1{font-size:16px}
}


/* Every screen size: the park fills the visible viewport so the joystick, Map, and Exit Ride stay on screen. */
html:has(body.world-page.is-in-park),
body.world-page.is-in-park{
  height:var(--park-vvh, 100dvh);
  max-height:var(--park-vvh, 100dvh);
  overflow:hidden;
}
.world-page.is-in-park{
  display:flex;
  flex-direction:column;
  height:var(--park-vvh, 100dvh);
  max-height:var(--park-vvh, 100dvh);
  overflow:hidden;
}
.world-page.is-in-park .site-header{flex:0 0 auto}
.world-page.is-in-park .world-wrap{
  flex:1 1 auto;
  min-height:0 !important;
  height:auto;
  max-width:none;
  padding:0;
  padding-bottom:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.world-page.is-in-park .world-park.is-open{
  flex:1 1 auto;
  min-height:0;
  height:auto;
  display:flex;
  flex-direction:column;
  margin:0;
  border-radius:0;
  box-shadow:none;
  overflow:hidden;
}
.world-page.is-in-park .park-bar{flex:0 0 auto}
.world-page.is-in-park .park-hint{flex:0 0 auto}
.world-page.is-in-park .park-stage,
.world-page.is-in-park .world-park.is-3d .park-stage{
  flex:1 1 auto;
  min-height:0 !important;
  height:auto;
}
.world-page.is-in-park .park-stick{
  position:fixed;
  bottom:max(12px, env(safe-area-inset-bottom, 0px));
  z-index:60;
  visibility:visible;
}
.world-page.is-in-park .park-stick{left:max(10px, env(safe-area-inset-left, 0px)); display:block}
.world-page.is-in-park .park-bar #park-map-btn,.world-page.is-in-park #park-map-btn{
  position:static;
  right:auto;
  bottom:auto;
  z-index:auto;
  opacity:1;
}
.world-page.is-in-park .park-exit-ride{display:none!important}
.world-page.is-in-park .park-exit-castle{
  position:fixed;
  left:max(10px, env(safe-area-inset-left, 0px));
  bottom:calc(max(12px, env(safe-area-inset-bottom, 0px)) + var(--park-stick-size, 112px) + 12px);
  z-index:61;
}
.world-page.is-in-park .park-ride-cta{
  position:fixed;
  left:50%;
  bottom:calc(max(12px, env(safe-area-inset-bottom, 0px)) + var(--park-stick-size, 112px) + 12px);
  transform:translateX(-50%);
  z-index:58;
}
/* Busy shop/game overlays still hide the stick; keep it on jet ski and horse rides. */
.world-page.is-in-park.is-busy .park-stick,
.world-park.is-busy .park-stick{visibility:hidden}
.world-park.is-busy.is-jetski-ride .park-stick,
.world-park.is-busy.is-horse-ride .park-stick,
.world-page.is-in-park .world-park.is-busy.is-jetski-ride .park-stick,
.world-page.is-in-park .world-park.is-busy.is-horse-ride .park-stick{visibility:visible;z-index:60}


/* Always-visible Back to park / Exit Ride — fixed to the visual viewport, above game canvases. */
.park-back-btn{
  position:fixed;
  /* Just below the site header (logo + nav). --park-header-h is the header's bottom edge. */
  top:calc(var(--park-header-h, 72px) + 8px);
  left:max(10px, env(safe-area-inset-left, 0px));
  right:auto;
  bottom:auto;
  transform:none;
  z-index:20000;
  pointer-events:auto;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  min-height:48px;
  min-width:0;
  max-width:calc(100vw - 24px);
  padding:8px 14px 8px 10px;
  border:2px solid #9a0008;
  border-radius:999px;
  background:#e30613;
  color:#fff;
  font-family:inherit;
  font-size:clamp(16px,3.6vw,18px);
  font-weight:800;
  box-shadow:0 4px 0 #9a0008;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:6px;
  line-height:1.1;
  text-shadow:0 1px 0 rgba(0,0,0,.25);
}
.park-back-x,.park-ov-x .park-back-x,.park-exit-red .park-back-x,.park-exit-castle .park-back-x{
  display:flex;align-items:center;justify-content:center;
  width:22px;height:22px;flex:0 0 22px;
  font-size:26px;font-weight:900;line-height:1;color:#fff;
}
.park-back-btn:active{transform:translateY(2px);box-shadow:0 2px 0 #9a0008}
@keyframes hh-exit-pulse{
  0%,100%{box-shadow:0 4px 0 #9a0008,0 0 0 0 rgba(227,6,19,.55);transform:scale(1)}
  50%{box-shadow:0 4px 0 #9a0008,0 0 18px 7px rgba(255,90,90,.9);transform:scale(1.07)}
}
.park-back-btn.is-exit-pulse,.park-ov-x.is-exit-pulse,.park-exit-red.is-exit-pulse{
  animation:hh-exit-pulse 1.05s ease-in-out infinite;
}
@media (prefers-reduced-motion:reduce){
  .park-back-btn.is-exit-pulse,.park-ov-x.is-exit-pulse,.park-exit-red.is-exit-pulse{
    animation:none;
    box-shadow:0 4px 0 #9a0008,0 0 14px 5px rgba(255,70,70,.95);
  }
}
.park-back-btn[hidden]{display:none!important}
body:has(#park-back-btn:not([hidden])) .park-overlay > .park-ov-x,
body:has(#park-back-btn:not([hidden])) .park-overlay #ov-close,
body:has(#park-back-btn:not([hidden])) .park-exit-ride{display:none!important}
.world-page.is-park-fs .park-back-btn,
.world-page.is-in-park.is-park-fs .park-back-btn{
  top:max(10px, env(safe-area-inset-top, 0px));
}
.world-page.is-in-park .park-overlay,
.world-page.is-in-park .park-overlay.is-park-game,
.world-page.is-in-park .park-overlay.is-list{
  padding-top:calc(var(--park-header-h, 72px) + 56px);
  padding-bottom:max(16px, env(safe-area-inset-bottom, 0px));
}
.park-overlay.is-park-game .park-ov-card{padding-bottom:8px}

.world-item .soon,.world-item .shop-owned{display:block;font-size:12px;font-weight:800;white-space:normal;line-height:1.2;margin-top:2px}
.world-item.is-locked{opacity:1;filter:none}
.world-item.is-locked .soon{color:#9a3a16}
.world-swatch{position:relative}
.world-swatch.is-locked{outline:2px dashed rgba(59,42,20,.35)}
.world-swatch .soon{position:absolute;left:50%;bottom:-2px;transform:translate(-50%,50%);background:#fff8dc;color:#9a3a16;font-size:10px;font-weight:800;padding:2px 5px;border-radius:999px;white-space:nowrap;box-shadow:0 2px 0 rgba(0,0,0,.08);pointer-events:none}
.shop-row{flex-wrap:wrap}
.shop-row .btn,.shop-row .shop-owned{flex:0 0 auto}

.park-bar-pair{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;flex-wrap:nowrap}
.shop-body{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:hidden;text-align:left}
.shop-body .shop-scroll,.shop-body .shop-pane{min-height:0;padding:4px 0 24px;flex:1 1 auto}
.shop-body{padding-bottom:0}
.park-ov-msg{position:relative;z-index:2;background:#fffdf6}

/* List overlays (backpack, shops, castle): clear only the red Exit, not the hidden park bar. */
.world-page.is-in-park .park-overlay.is-list,
.world-page.is-in-park .park-overlay:has(.shop-scroll),
.world-page.is-in-park .park-overlay:has(.shop-body),
.world-page.is-in-park .park-overlay:has(.castle-menu){
  padding-top:calc(var(--park-header-h, 72px) + 56px);
}

.hh-game-exit{position:fixed;top:calc(var(--park-header-h, 72px) + 8px);left:max(10px, env(safe-area-inset-left, 0px));z-index:20000}
