/* Puck Rush 2.0 — scoped five-level challenge. Loaded after legacy styles. */
/* Legacy sibling selector cannot reach the nav outside the page container. */
body:has(#puckrush-page.active) #bottom-nav { display: none; }
#puckrush-page.active { color: #f7fbff; background: #071627; }
#puckrush-page #prg-c { touch-action: none; }
#puckrush-page #prg-ui { overflow: hidden; font-family: system-ui, Arial, sans-serif; }
#puckrush-page .prg-screen { box-sizing: border-box; padding: max(3.5rem, env(safe-area-inset-top)) 1rem max(5.5rem, env(safe-area-inset-bottom)); transition: opacity .18s; }
#puckrush-page .prg-screen.prg-off { visibility: hidden; opacity: 0; pointer-events: none; }
#puckrush-page .prg-screen:not(.prg-off) { visibility: visible; }
#puckrush-page #prg-menu-screen { background: linear-gradient(160deg,rgba(5,18,35,.88),rgba(13,38,71,.74)); gap: .65rem; text-align:center; }
#puckrush-page .prg-team-logo { width:clamp(92px,27vw,145px); height:auto; max-height:25vh; object-fit:contain; filter:drop-shadow(0 5px 20px #081322); }
#puckrush-page .prg-title { font-size:clamp(2.7rem,11vw,5.2rem); font-family:Impact,'Arial Black',sans-serif; color:#f7fbff; letter-spacing:.04em; text-shadow:0 4px 20px #000; }
#puckrush-page .prg-title span { color:#dfb351; font-size:.42em; vertical-align:top; }
#puckrush-page .prg-sub { margin:0; color:#e9b853; letter-spacing:.24em; font-weight:800; }
#puckrush-page .prg-intro { max-width:19rem; margin:.5rem auto 0; font-size:clamp(.88rem,3vw,1rem); line-height:1.45; color:#e2eef7; }
#puckrush-page .prg-hs-text { margin:.75rem 0; font-size:1rem; color:#efd08b; }
#puckrush-page #prg-hud-bar,
#puckrush-page #prg-break-topbar {
 position:absolute; top:0; left:0; right:0; padding:calc(env(safe-area-inset-top) + 3.65rem) 1rem .7rem;
 display:flex; justify-content:space-around; gap:.5rem;
 background:linear-gradient(#07182ff0,#07182f25); color:#f6fbff; font-family:system-ui,Arial,sans-serif;
}
#puckrush-page #prg-hud-bar { justify-content:flex-end; padding-left:6.7rem; }
#puckrush-page #prg-hud-bar .prg-hud-item { min-width:0; display:flex; flex-direction:column; gap:.15rem; text-align:center; }
#puckrush-page .prg-hud-lbl { display:block; font-size:.62rem; color:#dfb351; letter-spacing:.08em; }
#puckrush-page .prg-hud-val { display:block; font-size:clamp(1.05rem,4vw,1.5rem); color:#fff; line-height:1.1; }
#puckrush-page #prg-stack-pill { top:calc(env(safe-area-inset-top) + 6.8rem); left:.8rem; transform:none; font-weight:800; padding:.4rem .7rem; z-index:1; }
#puckrush-page #prg-swipe-hint { bottom:calc(env(safe-area-inset-bottom) + 4.9rem); color:#f7fbff; background:#071a2dcc; padding:.48rem .65rem; border-radius:1rem; letter-spacing:.03em; max-width:90%; width:max-content; white-space:normal; }
#puckrush-page #prg-level-banner { top:29%; opacity:1; background:#071a2d9c; border-radius:1rem; padding:.3rem .75rem; }
#puckrush-page .prg-lb-big { font-size:clamp(1rem,4vw,1.55rem); font-weight:900; }
#puckrush-page .prg-lb-sub { font-size:.8rem; letter-spacing:.16em; }
#puckrush-page .prg-control,
#puckrush-page #prg-btn-action {
 min-height:44px; font-family:system-ui,Arial,sans-serif; font-weight:800;
 color:#071526; border:1px solid #f7d987; border-radius:.8rem;
 background:linear-gradient(#f9d786,#d7a53d);
 box-shadow:0 4px 16px #06101e99; cursor:pointer; touch-action:manipulation; pointer-events:auto;
}
#puckrush-page #prg-btn-action { padding:.75rem 1.6rem; font-size:1rem; letter-spacing:.08em; pointer-events:auto; }
#puckrush-page #prg-action-overlay { bottom:calc(env(safe-area-inset-bottom) + 5.1rem); justify-content:center; pointer-events:none; }
#puckrush-page #prg-back-btn { top:calc(env(safe-area-inset-top) + .8rem); left:.7rem; min-height:44px; z-index:205; padding:.55rem .8rem; }
#puckrush-page #prg-break-hud { justify-content:flex-end; pointer-events:none; background:linear-gradient(0deg,#07182fe8,transparent 54%); }
#puckrush-page #prg-break-topbar { padding-left:6.5rem; text-align:center; font-size:.9rem; }
#puckrush-page #prg-break-topbar strong { color:#ffe4a0; }
#puckrush-page #prg-break-inst { position:absolute; top:calc(env(safe-area-inset-top) + 7.25rem); left:.6rem; right:.6rem; background:#071a2ca8; border-radius:.5rem; padding:.3rem; font-size:.8rem; letter-spacing:.02em; }
#puckrush-page #prg-flick-guide {
 position:absolute; left:50%; transform:translateX(-50%);
 bottom:calc(env(safe-area-inset-bottom) + 10rem);
 width:min(72vw,300px); padding:.75rem .8rem;
 display:flex; flex-direction:column; justify-content:center; align-items:center; gap:.22rem;
 border:1px solid #dfb3517a; border-radius:1rem;
 background:linear-gradient(160deg,#091a2db3,#17334cc7);
 box-shadow:0 8px 26px #020b1d8a; text-align:center;
 color:#f9d786; font-size:clamp(.8rem,2.9vw,.95rem); letter-spacing:.045em;
 pointer-events:none;
}
#puckrush-page #prg-flick-guide[hidden] { display:none; }
#puckrush-page .prg-flick-arrow {
 font-family:system-ui,Arial,sans-serif; font-size:2.1rem; line-height:1;
 text-shadow:0 0 13px #d8b05ba6;
}
#puckrush-page #prg-flick-guide span:last-child {
 color:#e0f0f9; font-size:.72rem; letter-spacing:0; font-weight:500;
}
/* Clear game-result messaging during the short post-shot hold, including a
   non-colour-only distinction for goals, saves and misses. */
#puckrush-page #prg-break-feedback {
 position:absolute; top:32%; left:50%; transform:translateX(-50%);
 width:max-content; max-width:calc(100vw - 2rem); z-index:3;
 padding:.7rem 1rem; border-radius:1rem;
 font-size:clamp(1.15rem,5vw,1.7rem); line-height:1.2;
 font-family:Impact,'Arial Black',system-ui,sans-serif; font-weight:900;
 letter-spacing:.055em; text-align:center;
 color:#f7fbff; background:#122943ed;
 border:1px solid #7fa7c8; box-shadow:0 5px 28px #071525ad;
 pointer-events:none;
}
#puckrush-page #prg-break-feedback[hidden] { display:none; }
#puckrush-page #prg-break-feedback.prg-feedback-goal {
 color:#fff5da; background:#9c161de8; border-color:#ff6769;
 text-shadow:0 0 15px #ff2c319c;
}
#puckrush-page #prg-break-feedback.prg-feedback-save {
 color:#e7f8ff; background:#154464e8; border-color:#6cbad6;
}
#puckrush-page #prg-break-feedback.prg-feedback-miss {
 color:#ffe8ba; background:#564021ef; border-color:#e8ba64;
}
#puckrush-page #prg-break-shots-row { position:absolute; bottom:calc(env(safe-area-inset-bottom) + 4.5rem); left:0; right:0; transform:none; justify-content:center; width:auto; font-weight:750; font-size:.85rem; color:#f5fafc; }
#puckrush-page #prg-notice { position:absolute; bottom:calc(env(safe-area-inset-bottom) + 2rem); left:.8rem; right:.8rem; text-align:center; font-size:.77rem; color:#ffe5a7; font-weight:700; text-shadow:0 2px 3px #071627; pointer-events:none; }
#puckrush-page #prg-complete-screen,
#puckrush-page #prg-over-screen,
#puckrush-page #prg-pause-screen,
#puckrush-page #prg-error-screen { background:linear-gradient(155deg,#081b31f0,#0d3150f0); gap:.8rem; pointer-events:none; text-align:center; }
#puckrush-page #prg-error-screen button,
#puckrush-page #prg-pause-screen button { padding:.65rem 1.5rem; }
#puckrush-page #prg-error-screen p { max-width:19rem; line-height:1.5; }
#puckrush-page #prg-comp-progress {
  margin:.1rem 0; color:#e9c56d; font-size:.78rem; font-weight:850; letter-spacing:.14em;
}
#puckrush-page .prg-next-label {
  margin:.2rem auto 0; font-size:.88rem; max-width:19rem; color:#f1d391;
  font-weight:800; letter-spacing:.045em; line-height:1.4;
}
@media(max-width:359px), (max-height:620px){
 #puckrush-page #prg-hud-bar { padding-top:calc(env(safe-area-inset-top) + 3.5rem); }
 #puckrush-page #prg-stack-pill { top:calc(env(safe-area-inset-top) + 6.25rem); }
 #puckrush-page #prg-flick-guide { bottom:calc(env(safe-area-inset-bottom) + 7.5rem); padding:.4rem .6rem; }
 #puckrush-page .prg-flick-arrow { font-size:1.5rem; }
 #puckrush-page #prg-break-shots-row { bottom:calc(env(safe-area-inset-bottom) + 3.85rem); }
 #puckrush-page #prg-break-inst { top:calc(env(safe-area-inset-top) + 6.4rem); }
 #puckrush-page #prg-notice { bottom:calc(env(safe-area-inset-bottom) + 1.3rem); }
 #puckrush-page .prg-team-logo { width:90px; }
 #puckrush-page .prg-sub { font-size:.72rem; }
}
@media(prefers-reduced-motion:reduce){
 #puckrush-page .prg-screen, #puckrush-page #prg-level-banner { transition:none; }
}

/* Collision feedback states the exact puck/life loss (not colour-only).
   No timers or per-frame style mutation. */
#puckrush-page #prg-hit-feedback {
 position:absolute; top:31%; left:50%; transform:translateX(-50%); z-index:4;
 width:max-content; max-width:calc(100vw - 2rem); margin:0;
 padding:.62rem 1.15rem; border:2px solid #e6f3ff; border-radius:.9rem;
 color:#fff; background:#0b111ddf;
 box-shadow:0 6px 22px #0009;
 font:900 clamp(1.3rem,6vw,2rem)/1.1 Impact,'Arial Black',sans-serif;
 letter-spacing:.065em; text-align:center; pointer-events:none;
 animation:prg-impact-pop .22s ease-out both;
}
#puckrush-page #prg-hit-feedback[hidden] { display:none; }
#puckrush-page #prg-hit-feedback.prg-life-impact { border-color:#ff7777; background:#53191fee; }
@keyframes prg-impact-pop {
 from { opacity:0; transform:translate(-50%,.45rem) scale(.85); }
 to { opacity:1; transform:translate(-50%,0) scale(1); }
}
@media(prefers-reduced-motion:reduce){
 #puckrush-page #prg-hit-feedback { animation:none; }
}

/* High-contrast, camera-independent impact confirmation at the chase-camera
   puck position. The real world-space effect remains in impact-fx.js. */
#puckrush-page #prg-hit-burst {
 position:absolute; left:50%; top:66%; z-index:5; width:0; height:0;
 pointer-events:none; overflow:visible;
}
#puckrush-page #prg-hit-burst[hidden],
#puckrush-page #prg-hit-burst .prg-hit-puck[hidden] { display:none; }
#puckrush-page .prg-hit-ring {
 position:absolute; left:-35px; top:-11px; width:70px; height:22px;
 box-sizing:border-box; border:4px solid #19232d; border-radius:50%;
 box-shadow:0 0 0 2px #f8ffff,0 0 12px #fff9;
 transform-origin:center; pointer-events:none;
}
#puckrush-page .prg-hit-ring.prg-hit-life {
 border-color:#f34a51; box-shadow:0 0 0 2px #fff,0 0 16px #ff5858;
}
#puckrush-page .prg-hit-puck {
 position:absolute; left:-15px; top:-8px;
 width:30px; height:16px; box-sizing:border-box;
 border-radius:50%; border:3px solid #eefaff;
 background:linear-gradient(180deg,#505963 0%,#131920 60%);
 box-shadow:0 4px 0 #0d1117,0 5px 9px #07101b99;
 transform-origin:center; pointer-events:none;
}
@media(prefers-reduced-motion:reduce){
 #puckrush-page .prg-hit-puck {display:none !important;}
 #puckrush-page .prg-hit-ring {transform:none !important;}
}


/* Screenshot-matched circular Back to Games control. It stays reachable in
   the top corner during gameplay and moves under Start/Next/Play Again. */
#puckrush-page.active #prg-back-btn {
 display:flex;
 align-items:center;
 justify-content:center;
}
#puckrush-page #prg-back-btn {
 box-sizing:border-box;
 width:56px;
 height:56px;
 min-width:56px;
 min-height:56px;
 top:calc(env(safe-area-inset-top) + .8rem);
 left:.7rem;
 padding:0;
 border:0;
 border-radius:50%;
 background:transparent;
 color:#86dcff;
 box-shadow:none;
 line-height:1;
 cursor:pointer;
 touch-action:manipulation;
 -webkit-tap-highlight-color:transparent;
 transition:color .15s ease, transform .15s ease;
}
#puckrush-page #prg-back-btn svg {
 display:block;
 width:54px;
 height:54px;
 fill:none;
 stroke:currentColor;
 stroke-width:3.7;
 stroke-linecap:round;
 stroke-linejoin:round;
}
#puckrush-page #prg-back-btn:hover { color:#b0eeff; }
#puckrush-page #prg-back-btn:focus-visible {
 outline:2px solid #86dcff;
 outline-offset:3px;
}
#puckrush-page #prg-back-btn:active { transform:scale(.94); }
#puckrush-page.prg-back-below-action #prg-action-overlay {
 bottom:calc(env(safe-area-inset-bottom) + 8.5rem);
}
#puckrush-page.prg-back-below-action #prg-back-btn {
 top:auto;
 left:50%;
 bottom:calc(env(safe-area-inset-bottom) + 2rem);
 transform:translateX(-50%);
}
#puckrush-page.prg-back-below-action #prg-back-btn:active {
 transform:translateX(-50%) scale(.94);
}
@media (prefers-reduced-motion:reduce) {
 #puckrush-page #prg-back-btn { transition:none; }
}
