#adventureChoice{position:absolute;z-index:7;left:12px;right:12px;top:220px;max-width:400px;margin:auto;background:#fff9eaf5;color:#28595b;border-radius:20px;padding:14px;box-shadow:0 4px 18px #174e5825;font:600 14px Nunito,sans-serif}
#adventureChoice strong{font-size:18px}#adventureChoice p{margin:5px 0 10px;line-height:1.35}#adventureChoice div{display:flex;gap:8px}#adventureChoice button{flex:1;border:0;border-radius:14px;background:#28595b;color:#fff9ea;min-height:44px;padding:8px;font:800 14px Nunito,sans-serif}#adventureChoice [data-skip]{background:#e1ede5;color:#28595b}
#adventureNote{position:absolute;z-index:6;left:12px;top:220px;max-width:calc(100% - 24px);border-radius:12px;padding:7px 10px;background:#fff9eae8;color:#28595b;font:800 12px Nunito,sans-serif;pointer-events:none}
#adventureJump{position:absolute;z-index:7;right:20px;bottom:calc(22px + env(safe-area-inset-bottom));width:150px;height:78px;background:#d96948;color:#fff9ea;border:0;border-radius:25px;box-shadow:0 6px 0 #ad4b36;font:800 24px Nunito,sans-serif;touch-action:manipulation}
.fetch-playing .lane-controls,.fetch-playing .zoom-wrap,.fetch-playing #callout,.fetch-playing #retentionMoment{visibility:hidden}.game-paused #adventureNote{visibility:hidden}
@media(min-width:700px){#adventureChoice,#adventureNote{top:174px}}
@media(max-height:600px){#adventureChoice{top:155px;font-size:12px;padding:10px}#adventureChoice p{margin-block:4px}#adventureNote{top:160px}}

body:has(#adventureNote:not([hidden])) #callout{visibility:hidden}

/* A completion signal, deliberately distinct from the Game Over card. */
#routeReturn{position:absolute;z-index:7;left:50%;top:45%;transform:translate(-50%,-50%);width:min(300px,calc(100% - 40px));box-sizing:border-box;padding:12px 8px;color:#205445;text-align:center;pointer-events:none;animation:route-recap-in .2s ease-out}
.route-complete-check{display:grid;place-items:center;width:86px;height:86px;margin:0 auto 12px;border-radius:50%;background:#278153;color:white;font:900 58px/1 Nunito,sans-serif;box-shadow:0 0 0 9px #27815318}
#routeReturn small{display:block;font:900 27px/1.15 Nunito,sans-serif;color:#246e49}
#routeReturn strong{display:block;font:700 16px/1.3 Nunito,sans-serif;margin:5px 0 12px}
.route-rewards{display:flex;justify-content:center;gap:18px;font:800 17px Nunito,sans-serif}.route-rewards [data-points],.route-rewards [data-xp]{color:#28595b}
#routeReturn p{font:800 18px/1.3 Nunito,sans-serif;margin:14px 0 0}
.route-countdown{display:none}
.route-return .lane-controls,.route-return #retentionMoment,.route-return #callout{visibility:hidden}
@keyframes route-recap-in{from{opacity:0;transform:translate(-50%,-42%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@media(prefers-reduced-motion:reduce){#routeReturn{animation:none}}

#bonusBird{position:absolute;z-index:6;transform:translate(-50%,-50%);width:92px;height:76px;background:none;border:0;padding:0;color:#28595b;touch-action:manipulation}
#bonusBird canvas{position:static;display:block;width:92px;height:58px;pointer-events:none}
#bonusBird span{display:block;white-space:nowrap;font:800 10px Nunito,sans-serif;background:#fff9eae8;border-radius:8px;padding:2px 6px}
#adventureJump{touch-action:none}

/* Gameplay gestures must never open Safari/Android text-selection callouts. */
body.playing #game,body.playing #game *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#adventureJump:active{transform:translateY(3px);box-shadow:0 3px 0 #ad4b36;background:#c85c3d}

/* Fade the cleared route underneath the HUD before its recap appears. */
#routeFade{position:absolute;inset:0;z-index:2;background:#fff9ea;pointer-events:none}
#routeFade[hidden]{display:none}

/* A protected 1.6-second route entrance, distinct from the return fade. */
#routePortal{position:absolute;inset:0;z-index:3;overflow:hidden;pointer-events:none;--portal-rgb:26,189,215;--portal-dark:#087b9c;--portal-x:50%;--portal-y:66%;--wash:0}
#routePortal[data-route="promenade"]{--portal-rgb:255,187,62;--portal-dark:#c27a17}
#routePortal:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at var(--portal-x) var(--portal-y),#fff 0%,rgba(var(--portal-rgb),.92) 55%,var(--portal-dark) 100%);opacity:var(--wash)}
#routePortal[hidden]{display:none}
#routePortal .portal-ring{position:absolute;left:var(--portal-x);top:var(--portal-y);width:52vmin;height:52vmin;border:7px solid var(--portal-dark);border-radius:50%;box-shadow:0 0 0 3px #fff,0 0 28px 12px rgba(var(--portal-rgb),.8),inset 0 0 22px #fff;will-change:transform}
#routePortal .portal-ring-inner{width:32vmin;height:32vmin;border:5px dashed #fff;box-shadow:0 0 0 2px var(--portal-dark),0 0 20px 8px rgba(var(--portal-rgb),.8)}
#routePortal i{position:absolute;left:var(--portal-x);top:var(--portal-y);background:#fff;border:1px solid var(--portal-dark);box-shadow:0 0 12px #fff;border-radius:2px;will-change:transform}
@media(prefers-reduced-motion:reduce){#routePortal .portal-ring,#routePortal i{display:none}}
#routePortal[data-route="beach"]{--portal-rgb:255,219,143;--portal-dark:#c98a2c}
#routePortal[data-route="bonus"]{--portal-rgb:195,155,250;--portal-dark:#8054bd}
/* A bonus discovery uses the normal unlock toast; avoid covering the chase hint. */
.fetch-playing #retentionMoment[data-kind=outfit]{visibility:visible}
.fetch-playing:has(#retentionMoment[data-kind=outfit]:not([hidden])) #adventureNote{visibility:hidden}

/* Five-second route cue replaces the Zoomies label without growing the HUD. */
.route-choice #zoomLabel,.route-choice #multiplier{visibility:hidden}
.hud-top #adventureFork{position:absolute;inset:1px 7px 15px;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:1fr 1fr;column-gap:8px;padding:1px 9px;border:0;border-radius:9px;overflow:hidden;isolation:isolate;background:#123eab;color:#fff;text-align:left;pointer-events:auto;touch-action:manipulation;font-family:Nunito,sans-serif;animation:fork-ocean 1s ease-in-out infinite}
#adventureFork[hidden]{display:none}
#adventureFork strong{font-size:14px;line-height:16px;white-space:nowrap;color:#fff}
#adventureFork span{grid-row:2;font-size:10px;line-height:12px;font-weight:800}
#adventureFork b{grid-column:2;grid-row:1/3;align-self:center;font-size:18px;line-height:1;font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 1px 2px #102e6260}
#adventureFork:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 25%,#ffffff30 48%,transparent 72%);transform:translateX(100%);animation:fork-sweep-left 1s ease-in-out infinite}
.hud-top #adventureFork[data-side="right"]{background:#6418a0;color:#fff;animation:fork-promenade 1s ease-in-out infinite}
#adventureFork[data-side="right"]:before{background:repeating-linear-gradient(115deg,transparent 0 22px,#ffffff25 23px 28px,transparent 29px 50px);animation:fork-sweep-right 1s ease-in-out infinite}
@keyframes fork-ocean{0%,100%{background:#123eab}50%{background:#0962ce;box-shadow:inset 0 0 14px #72d9ff65}}
@keyframes fork-promenade{0%,100%{background:#6418a0}50%{background:#9631b7;box-shadow:inset 0 0 14px #f1a5ff65}}
@keyframes fork-sweep-left{to{transform:translateX(-100%)}}
@keyframes fork-sweep-right{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){.hud-top #adventureFork,#adventureFork:before{animation:none}#adventureFork:before{display:none}}
#routePortal .portal-title{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);width:90%;text-align:center;color:white;font:900 clamp(26px,6vw,44px)/1.2 Nunito,sans-serif;text-shadow:0 2px 3px #174d54,2px 0 #174d54,-2px 0 #174d54;z-index:2}

/* Keep both readouts visible; Zoomies smoothly makes room on the route's side. */
.hud-top .zoom-wrap{position:relative}
.zoom-progress{width:100%;margin-left:0;transition:width .35s ease,margin-left .35s ease}
.hud-top .zoom-wrap:has(#adventureFork:not([hidden])) .zoom-progress{width:43%}
.hud-top .zoom-wrap:has(#adventureFork[data-side="left"]:not([hidden])) .zoom-progress{margin-left:57%}
.hud-top .zoom-wrap:has(#adventureFork:not([hidden])) .zoom-label{font-size:11px;letter-spacing:0;gap:3px}
.hud-top #adventureFork{position:absolute;inset:5px 7px 5px auto;width:51%;min-width:0;padding:2px 7px;column-gap:4px;animation:fork-ocean 1s ease-in-out infinite,route-slide-right .35s ease both}
.hud-top #adventureFork[data-side="left"]{left:7px;right:auto;animation:fork-ocean 1s ease-in-out infinite,route-slide-left .35s ease both}
.hud-top #adventureFork[data-side="right"]{animation:fork-promenade 1s ease-in-out infinite,route-slide-right .35s ease both}
.hud-top #adventureFork strong{font-size:12px;line-height:14px}
.hud-top #adventureFork span{font-size:9px;line-height:11px}
.hud-top #adventureFork b{font-size:15px}
@keyframes route-slide-left{from{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:translateX(0)}}
@keyframes route-slide-right{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.zoom-progress{transition:none}.hud-top #adventureFork{animation:none!important}}
