/* =========================================================
   Beyond Science | Power-Ups (pups.js)
   ========================================================= */
#pupDock{position:fixed;inset:auto 0 0 0;pointer-events:none;z-index:65}
#pupDock > *{pointer-events:auto}
/* Time Freeze button */
.pup-ice{position:fixed;left:14px;bottom:calc(84px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  width:82px;height:82px;border-radius:50%;border:2px solid #bff6ff;font-size:32px;line-height:1;cursor:pointer;color:#05202a;
  background:radial-gradient(circle at 35% 30%,#ffffff,#9ff3ff 45%,#3EF0FF 80%);box-shadow:0 0 0 4px rgba(62,240,255,.25),0 0 28px rgba(62,240,255,.8);animation:pupBob 1.4s ease-in-out infinite}
.pup-ice span{font-family:Orbitron,"Chakra Petch",sans-serif;font-weight:900;font-size:10.5px;letter-spacing:1px}
.pup-ice.on{animation:none;background:radial-gradient(circle,#e8fdff,#7fe9ff);box-shadow:0 0 0 6px rgba(191,246,255,.5),0 0 40px #bff6ff}
.pup-ice.on span{font-size:20px}
body.pup-frozen .arcadepage,body.pup-frozen .book{box-shadow:inset 0 0 0 4px #bff6ff,inset 0 0 60px rgba(191,246,255,.55)}
body.pup-frozen #hT,body.pup-frozen #tm{color:#7fe9ff!important;text-shadow:0 0 12px #3EF0FF}
/* Flash banners */
.pup-flash{position:fixed;left:50%;top:22%;transform:translateX(-50%);z-index:90;padding:14px 22px;border-radius:18px;font-family:"Chakra Petch",Fredoka,sans-serif;font-weight:700;font-size:clamp(18px,4.4vw,26px);
  color:#fff;text-align:center;max-width:92vw;pointer-events:none;animation:pupPop 1.7s ease forwards}
.pup-flash.ice{background:rgba(10,60,90,.92);border:2px solid #bff6ff;box-shadow:0 0 30px #3EF0FF}
.pup-flash.shield{background:rgba(60,30,100,.92);border:2px solid #FFC94D;box-shadow:0 0 30px rgba(255,201,77,.8)}
/* Lab Assistant: Apollo */
#pupAssistWrap{position:fixed;right:14px;bottom:calc(150px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.pup-apollo{width:70px;height:70px;border-radius:50%;border:2px solid #FFC94D;background:radial-gradient(circle,#2a2f7a,#0d1233);box-shadow:0 0 22px rgba(255,201,77,.6);cursor:pointer;padding:6px;animation:pupBob 2.2s ease-in-out infinite}
.pup-apollo img{width:100%;height:100%;object-fit:contain}
.pup-apollo.nudge{animation:pupWiggle .6s ease-in-out infinite;box-shadow:0 0 0 6px rgba(255,201,77,.3),0 0 34px #FFC94D}
.pup-bubble{width:min(300px,78vw);background:rgba(13,18,51,.96);color:#EEF4FF;border:1px solid #3EF0FF;border-radius:18px 18px 4px 18px;padding:12px 14px;box-shadow:0 0 24px rgba(62,240,255,.4);text-align:left;animation:pupIn .25s ease}
.pup-bubble b{display:block;font-size:17px;color:#FFC94D}
.pup-bubble .pb-m{display:block;font-weight:700;font-size:16px;margin:4px 0 2px}
.pup-bubble small{display:block;color:#A9B8DD;font-size:13px}
.pup-bubble .pb-row{display:flex;gap:8px;margin:10px 0 6px;flex-wrap:wrap}
.pup-bubble .pb-t{font-size:11px;opacity:.75}
/* Study Scanner */
.scanbox{position:relative;max-height:220px;overflow:hidden;border-radius:14px;border:2px solid #3EF0FF;transition:max-height .5s ease}
.scanbox img{display:block;width:100%;filter:saturate(.6) brightness(.8)}
.scanbox .laser{position:absolute;left:0;right:0;height:4px;top:0;background:#3EF0FF;box-shadow:0 0 18px 6px rgba(62,240,255,.7);animation:pupScan 1.2s ease-in-out}
.scanbox .scanlabel{position:absolute;right:10px;bottom:10px;font-family:Orbitron,sans-serif;font-size:11px;letter-spacing:2px;color:#3EF0FF;background:rgba(0,0,0,.6);padding:4px 10px;border-radius:99px;animation:pupBlink .5s steps(2) infinite}
.scanbox.done{max-height:70px}
.scanbox.done .laser,.scanbox.done .scanlabel{display:none}
.scancards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-top:12px;text-align:left}
.scard{position:relative;display:flex;flex-direction:column;gap:4px;padding:12px 34px 12px 14px;border-radius:14px;cursor:pointer;color:inherit;font:inherit;text-align:left;
  background:rgba(255,201,77,.1);border:1px solid rgba(255,201,77,.55);animation:pupIn .35s ease both}
.scard.w{background:rgba(62,240,255,.08);border-color:rgba(62,240,255,.45)}
.scard b{font-size:16px;color:#FFC94D}
.scard.w b{color:#3EF0FF}
.scard span{font-size:15px;line-height:1.4}
.scard em{position:absolute;right:10px;top:10px;font-style:normal}
/* Focus Mode: a quiet, clean screen */
#top .iconbtn.on{box-shadow:0 0 0 2px #5CFFB0,0 0 14px rgba(92,255,176,.6)}
body.focus{background-image:none!important;background-color:#070a1c!important}
body.focus::before,body.focus::after{display:none!important}
body.focus .practice,body.focus #bsMusic,body.focus .sideart,body.focus .unitart,body.focus .confetti,body.focus .hide-sm{display:none!important}
body.focus .book{box-shadow:none!important}
body.focus *:not(.pup-ice):not(.pup-apollo):not(.laser){animation-duration:.001s!important;animation-iteration-count:1!important}
@keyframes pupBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes pupWiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}}
@keyframes pupPop{0%{opacity:0;transform:translate(-50%,10px) scale(.8)}15%{opacity:1;transform:translate(-50%,0) scale(1.05)}25%{transform:translate(-50%,0) scale(1)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-14px)}}
@keyframes pupIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes pupScan{0%{top:0}100%{top:calc(100% - 4px)}}
@keyframes pupBlink{50%{opacity:.4}}
@media (prefers-reduced-motion: reduce){.pup-ice,.pup-apollo,.pup-flash,.scard{animation:none!important}}
#pupDock [hidden],.pup-bubble[hidden]{display:none!important}
