/* ==========================================================================
   The Rescue Jukebox: a simple, child-friendly player.
   Top: Back · the RESCUE Jukebox · SONGS / WORDS.  Middle: the chosen view.
   Bottom: a big, simple player bar.
   ========================================================================== */
.jb{--jb-gold:#f5b83d;--jb-gold-2:#ffd67a;--jb-ink:#0a0f1e;--jb-sky:#8fd3ff;--jb-card:rgba(255,255,255,.07);--jb-h:calc(100dvh - var(--jb-offset,0px));
  position:relative;height:var(--jb-h);min-height:520px;display:flex;flex-direction:column;overflow:hidden;color:#fff;font-family:var(--ui,system-ui,sans-serif);
  background:radial-gradient(60% 45% at 100% 0%,rgba(143,211,255,.16),transparent 70%),radial-gradient(55% 40% at 0% 100%,rgba(245,184,61,.14),transparent 70%),radial-gradient(50% 40% at 0% 20%,rgba(160,120,255,.12),transparent 70%),#0a0f1e}
.jb *{box-sizing:border-box}
.jb button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.jb svg{width:24px;height:24px;display:block;flex:none}
.jb [hidden]{display:none!important}
.jb :focus-visible{outline:4px solid var(--jb-sky);outline-offset:3px;border-radius:14px}
.jb-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- Top: Back, title, SONGS / WORDS ---------- */
.jb-top{flex:none;padding:max(10px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left));display:grid;grid-template-columns:minmax(48px,1fr) auto minmax(48px,1fr);align-items:center;gap:10px;background:linear-gradient(180deg,rgba(10,15,30,.95),rgba(10,15,30,.7));border-bottom:1px solid rgba(255,255,255,.08)}
.jb-back{grid-column:1;justify-self:start;display:inline-flex;align-items:center;gap:6px;height:48px;padding:0 16px 0 10px;border-radius:999px;background:rgba(255,255,255,.12);font-weight:800;font-size:16px}
.jb-back:hover{background:rgba(255,255,255,.2)}
.jb-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.jb-switch{grid-column:2;width:min(440px,calc(100vw - 150px));display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;border-radius:999px;background:rgba(255,255,255,.08)}
.jb-switch [role=tab]{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;min-height:54px;border-radius:999px;font-weight:800;font-size:18px;letter-spacing:.1em;color:rgba(255,255,255,.85);transition:background .2s ease,color .2s ease}
.jb-switch [role=tab]:hover{background:rgba(255,255,255,.1)}
.jb-switch [role=tab][aria-selected="true"]{background:var(--jb-gold);color:var(--jb-ink);box-shadow:0 6px 18px rgba(245,184,61,.3)}
.jb-quote{font:800 26px/0 var(--display,Georgia,serif);letter-spacing:-.1em;margin-top:10px}
.jb-dot{position:absolute;top:8px;right:14px;width:10px;height:10px;border-radius:50%;background:var(--jb-sky);display:none}
.jb.has-words[data-view="songs"] .jb-dot{display:block;animation:jbPulse 1.6s ease-in-out infinite}
@keyframes jbPulse{0%,100%{box-shadow:0 0 0 0 rgba(143,211,255,.6)}50%{box-shadow:0 0 0 8px rgba(143,211,255,0)}}

/* ---------- Middle ---------- */
.jb-main{flex:1;min-height:0;position:relative}
.jb-view{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;padding:18px max(16px,env(safe-area-inset-right)) 24px max(16px,env(safe-area-inset-left))}

/* SONGS: a song list, like a music app playlist */
.jb-songs{padding-top:0}
.jb-list-head{max-width:900px;margin:0 auto;display:flex;align-items:flex-end;gap:18px;padding:20px 0 18px}
.jb-list-cover{flex:none;width:clamp(116px,32vw,180px);aspect-ratio:1;border-radius:14px;overflow:hidden;box-shadow:0 18px 40px -10px rgba(0,0,0,.6);background:rgba(255,255,255,.08);display:grid;place-items:center}
.jb-list-cover img{width:100%;height:100%;object-fit:cover}
.jb-list-info{min-width:0}
.jb-list-info h2{margin:0;font:800 clamp(24px,6.4vw,34px)/1.1 var(--ui,system-ui);letter-spacing:-.01em}
.jb-list-info p{margin:4px 0 14px;color:rgba(255,255,255,.65);font-size:15px;font-weight:600}
.jb-list-btns{display:flex;flex-wrap:wrap;gap:10px}
.jb-pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;min-width:120px;padding:0 20px;border-radius:14px;background:rgba(255,255,255,.12)!important;font-weight:800;font-size:16px;color:var(--jb-gold)!important}
.jb-pill svg{width:20px;height:20px}
.jb-pill-play{background:var(--jb-gold)!important;color:var(--jb-ink)!important}
.jb-pill[aria-pressed="true"]{background:var(--jb-sky)!important;color:var(--jb-ink)!important}
.jb-group{max-width:900px;margin:0 auto}
.jb-group-head{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 2px 8px;background:linear-gradient(180deg,#0e1427 75%,rgba(14,20,39,0));font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.jb-group-head b{color:var(--jb-sky);font-weight:800}
.jb-group-head a{flex:none;color:var(--jb-gold);font-weight:800;text-decoration:none;text-transform:none;letter-spacing:0;font-size:14px;padding:6px 0}
.jb-rows{list-style:none;margin:0 0 14px;padding:0}
.jb-row{width:100%;display:flex;align-items:center;gap:14px;padding:8px 6px;border-radius:12px;text-align:left;min-height:72px}
.jb-row:hover{background:rgba(255,255,255,.06)}
.jb-row:active{background:rgba(255,255,255,.1)}
.jb-row-cover{position:relative;flex:none;width:56px;height:56px;border-radius:8px;overflow:hidden;background:rgba(255,255,255,.08);box-shadow:0 4px 10px rgba(0,0,0,.3)}
.jb-row-cover img{width:100%;height:100%;object-fit:cover;display:block}
.jb-row-text{flex:1;min-width:0;display:grid;gap:2px;align-self:stretch;align-content:center;border-bottom:1px solid rgba(255,255,255,.08);padding:4px 0}
.jb-rows li:last-child .jb-row-text{border-bottom:0}
.jb-row-text b{font-size:17px;font-weight:700;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jb-row-text small{display:flex;align-items:center;gap:5px;font-size:14px;color:rgba(255,255,255,.6)}
.jb-row-text small svg{width:14px;height:14px}
.jb-row-end{flex:none;min-width:40px;text-align:right;font-size:14px;font-weight:600;color:rgba(255,255,255,.55);font-variant-numeric:tabular-nums}
.jb-row.is-current .jb-row-text b{color:var(--jb-gold)}
.jb-row.is-locked,.jb-row.is-soon{opacity:.5}
.jb-row.is-locked .jb-row-cover img{filter:grayscale(.7)}
.jb-bars{position:absolute;inset:0;display:none;align-items:flex-end;justify-content:center;gap:3px;padding-bottom:12px;background:rgba(10,15,30,.55)}
.jb-bars i{width:5px;height:30%;border-radius:3px;background:var(--jb-gold)}
.jb-row.is-current .jb-bars{display:flex}
.jb.is-playing .jb-row.is-current .jb-bars i{animation:jbBounce .9s ease-in-out infinite}
.jb.is-playing .jb-row.is-current .jb-bars i:nth-child(2){animation-delay:.2s}
.jb.is-playing .jb-row.is-current .jb-bars i:nth-child(3){animation-delay:.4s}
@keyframes jbBounce{0%,100%{height:25%}50%{height:65%}}

/* WORDS */
.jb-words{max-width:none}
.jb-words-head{max-width:900px;margin:0 auto 14px;display:flex;align-items:center;gap:14px}
.jb-words-head img{width:64px;height:64px;border-radius:10px;object-fit:cover;flex:none}
.jb-words-head div{display:grid;gap:2px;min-width:0}
.jb-words-head b{font-size:20px;font-weight:800}
.jb-words-head span{font-size:14px;font-weight:600;color:rgba(255,255,255,.6)}
.jb-lines{max-width:900px;margin:0 auto}
.jb-tip{margin:0 0 18px;font-size:13px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--jb-sky)}
.jb-line{margin:0 0 .55em;font-weight:800;line-height:1.25;color:rgba(255,255,255,.55);cursor:pointer;transition:color .25s ease,opacity .25s ease}
.jb-words.size-1 .jb-line{font-size:clamp(26px,7.4vw,38px)}
.jb-words.size-2 .jb-line{font-size:clamp(32px,9vw,48px)}
.jb-words.size-3 .jb-line{font-size:clamp(40px,11vw,60px)}
.jb-line span{padding:.06em .3em;margin-left:-.3em;border-radius:.35em;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background .25s ease,color .25s ease}
.jb-line.is-next{color:rgba(255,255,255,.88)}
.jb-line.is-done{color:rgba(255,255,255,.3)}
.jb-line.is-now{color:var(--jb-ink)}
.jb-line.is-now span{background:var(--jb-gold);box-shadow:0 8px 24px rgba(245,184,61,.35)}
.jb-line.is-now{animation:jbPop .35s ease;transform-origin:left center}
@keyframes jbPop{0%{transform:scale(.96)}60%{transform:scale(1.03)}100%{transform:scale(1)}}
.jb-gap{color:rgba(245,184,61,.5);cursor:default}
.jb-gap.is-now{color:var(--jb-gold)}
.jb-gap.is-now span{background:none;box-shadow:none}
.jb-lines.is-plain .jb-line{color:#fff;cursor:default}
.jb-break{height:.9em;margin:0}
.jb-end{height:45vh;margin:0}
.jb-empty{max-width:420px;margin:12vh auto 0;text-align:center;display:grid;justify-items:center;gap:10px}
.jb-empty svg{width:56px;height:56px;color:var(--jb-gold)}
.jb-empty h2{margin:0;font:800 24px/1.25 var(--ui,system-ui)}
.jb-empty p{margin:0;color:rgba(255,255,255,.7);font-size:17px}
.jb-bigbtn{margin-top:8px;min-height:56px;padding:0 26px;border-radius:999px;background:var(--jb-gold)!important;color:var(--jb-ink)!important;font-weight:800;font-size:18px;letter-spacing:.06em}

/* ---------- Bottom player ---------- */
.jb-player{flex:none;margin:0 auto;width:100%;max-width:900px;padding:12px max(16px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:rgba(18,26,46,.96);border-radius:26px 26px 0 0;box-shadow:0 -12px 30px rgba(0,0,0,.35)}
.jb-now{display:flex;align-items:center;gap:12px;min-width:0}
.jb-now-art{flex:none;width:52px;height:52px;border-radius:8px;overflow:hidden;display:grid;place-items:center;background:rgba(255,255,255,.08)}
.jb-now-art img{width:100%;height:100%;object-fit:cover;display:block}
.jb-now-text{min-width:0;display:grid}
.jb-now-text b{font-size:17px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jb-now-text small{font-size:13px;color:rgba(255,255,255,.65);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jb-progress{margin-top:10px}
.jb-progress input{--v:0%;width:100%;height:28px;margin:0;background:none;-webkit-appearance:none;appearance:none;cursor:pointer}
.jb-progress input::-webkit-slider-runnable-track{height:10px;border-radius:10px;background:linear-gradient(90deg,var(--jb-gold) var(--v),rgba(255,255,255,.2) var(--v))}
.jb-progress input::-moz-range-track{height:10px;border-radius:10px;background:linear-gradient(90deg,var(--jb-gold) var(--v),rgba(255,255,255,.2) var(--v))}
.jb-progress input::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:#fff;border:4px solid var(--jb-gold);margin-top:-7px}
.jb-progress input::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:4px solid var(--jb-gold)}
.jb-times{display:flex;justify-content:space-between;font-size:13px;font-weight:700;color:rgba(255,255,255,.6);font-variant-numeric:tabular-nums}
.jb-controls{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.jb-side{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;color:rgba(255,255,255,.8);background:rgba(255,255,255,.08)!important}
.jb-side[aria-pressed="true"]{background:var(--jb-sky)!important;color:var(--jb-ink)}
.jb-skip{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.12)!important}
.jb-skip svg{width:30px;height:30px}
.jb-play{width:84px;height:84px;border-radius:50%;display:grid;place-items:center;background:var(--jb-gold)!important;color:var(--jb-ink)!important;box-shadow:0 10px 28px rgba(245,184,61,.4);transition:transform .15s ease}
.jb-play:active{transform:scale(.94)}
.jb-play svg{width:38px;height:38px}
.jb-toast{position:absolute;left:50%;bottom:230px;transform:translateX(-50%);z-index:5;background:#fff;color:var(--jb-ink);font-weight:800;font-size:15px;padding:12px 18px;border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.4);max-width:calc(100% - 32px);text-align:center}

/* Wide screens: roomier lists */
@media (min-width:900px){
  .jb-view{padding-inline:clamp(24px,4vw,56px)}
}
@media (max-width:560px){
  .jb-back{width:48px;padding:0;justify-content:center}
  .jb-back span{display:none}
  .jb-switch [role=tab]{font-size:16px;letter-spacing:.06em;min-height:50px;gap:6px}
  .jb-switch{width:min(440px,calc(100vw - 152px))}
  .jb-dot{top:5px;right:7px;width:8px;height:8px}
}
@media (max-height:640px){.jb-play{width:72px;height:72px}.jb-skip{width:56px;height:56px}.jb-now{display:none}}
@media (prefers-reduced-motion:reduce){.jb *{animation:none!important;transition:none!important}}
