zz los chunk 3 of 4 (Claude, hidden, do not edit)
ow"⟩⟨a class="btn sm" href="https://baccikid.com/pages/the-art-vault-entrance"⟩✦ Enter the Art Vault⟨/a⟩⟨/div⟩⟨/div⟩
⟨div class="worlds"⟩⟨div class="eyebrow"⟩Keep glowing⟨/div⟩⟨div class="wgrid"⟩⟨a class="wtile" href="https://baccikid.com/pages/bacci-kid-heart-court-basketball"⟩⟨b⟩🏀 Heart Court⟨/b⟩⟨span⟩Basketball feelings game⟨/span⟩⟨/a⟩⟨a class="wtile" href="https://baccikid.com/pages/bacci-kid-sound-color-studio"⟩⟨b⟩🎧 Sound + Color Studio⟨/b⟩⟨span⟩Which sound matches your mood?⟨/span⟩⟨/a⟩⟨a class="wtile" href="https://baccikid.com/pages/bacci-kid-halloween-adventure"⟩⟨b⟩🎃 Halloween Coloring⟨/b⟩⟨span⟩Free Halloween play and coloring⟨/span⟩⟨/a⟩⟨a class="wtile" href="https://baccikid.com/pages/feelings-console"⟩⟨b⟩🌈 Feelings Console⟨/b⟩⟨span⟩Name the feeling⟨/span⟩⟨/a⟩⟨/div⟩⟨/div⟩
⟨div class="row"⟩⟨a class="btn" href="https://baccikid.com/glow"⟩Back to Glow Night⟨/a⟩⟨a class="btn ghost" href="https://baccikid.com/pages/kpot-main-hub"⟩Bacci Kid at KPOT⟨/a⟩⟨button class="btn ghost" id="again" type="button"⟩Play again⟨/button⟩⟨/div⟩
⟨div class="madeby"⟩⟨img src="https://cdn.shopify.com/s/files/1/0500/7307/5871/files/glow-signature.webp?v=1792032007" alt=""⟩⟨span⟩Created by Dr. Jamie Karia, DSW, LCSW · Bacci Kid⟨/span⟩⟨/div⟩
⟨p class="foot"⟩© 2026 Bacci Kid. Bacci, Glimmerboo, Twinkaboo, the Library of Shadows and all artwork are original Bacci Kid creations. KPOT is a trademark of its owner, used with permission for this event. Bacci Kid is creative play and learning, not therapy, medical advice or emergency help. Grown-ups supervise children at all times. Progress and badge names stay only on this phone. ⟨a href="https://baccikid.com/pages/terms-of-use"⟩Terms of Use⟨/a⟩ · ⟨a href="https://baccikid.com/pages/disclaimer"⟩Disclaimer⟨/a⟩ · ⟨a href="https://baccikid.com/pages/privacy-policy"⟩Privacy⟨/a⟩ · Need real help right now? Call or text ⟨a href="tel:988"⟩988⟨/a⟩. Emergency: ⟨a href="tel:911"⟩911⟨/a⟩.⟨/p⟩
⟨/div⟩⟨/div⟩
⟨/section⟩
⟨!-- ===== CALM ===== --⟩
⟨div id="calm" class="ov" hidden⟩⟨div class="card glass" style="overflow:hidden"⟩⟨div class="calmBg" aria-hidden="true"⟩⟨/div⟩
⟨div class="eyebrow" style="color:var(--mint)"⟩Calm Corner · The Whale's Deep Breath⟨/div⟩
⟨h2 style="color:var(--mint)"⟩Take a Bacci break⟨/h2⟩
⟨p⟩Big feelings are welcome here. Deep under the sea, the whale breathes slow. Breathe with Bacci: in through the nose, out like you are blowing soup cool.⟨/p⟩
⟨div class="breath"⟩⟨img id="cbImg" src="https://cdn.shopify.com/s/files/1/0500/7307/5871/files/glow-breathe-close.webp?v=1792036629" alt=""⟩⟨div class="t" id="cbN"⟩ ⟨/div⟩⟨b id="cbT"⟩Three slow breaths⟨/b⟩⟨/div⟩
⟨div class="row"⟩⟨button class="btn mint" id="cbGo" type="button"⟩Start breathing⟨/button⟩⟨button class="btn ghost sm" id="calmClose" type="button"⟩Back⟨/button⟩⟨/div⟩
⟨div class="help"⟩⟨a href="https://baccikid.com/pages/feelings-console"⟩⟨span⟩Name the feeling in the Feelings Console⟨/span⟩⟨em⟩Open⟨/em⟩⟨/a⟩⟨a href="https://baccikid.com/pages/bacci-kid-safety-real-world-support"⟩⟨span⟩Real-world help and safety resources⟨/span⟩⟨em⟩Open⟨/em⟩⟨/a⟩⟨a class="red" href="tel:988"⟩⟨span⟩988 Suicide and Crisis Lifeline · call or text, 24/7⟨/span⟩⟨em⟩988⟨/em⟩⟨/a⟩⟨/div⟩
⟨p class="tiny"⟩Bacci Kid is creative play, not therapy or emergency response.⟨/p⟩
⟨/div⟩⟨/div⟩
⟨!-- ===== BONUS: Twin Portals ===== --⟩
⟨div id="bonus" class="ov" hidden⟩⟨div class="card glass"⟩
⟨div class="eyebrow"⟩The Vortex of Wonder · bonus⟨/div⟩
⟨h2⟩Twin Portals⟨/h2⟩
⟨p⟩Every realm has a twin hiding in the vortex. Flip two tiles. Find all six pairs and earn the Infinity Spark.⟨/p⟩
⟨div class="grid" id="grid"⟩⟨/div⟩
⟨div class="fb" id="bfb" aria-live="polite"⟩⟨/div⟩
⟨div class="row"⟩⟨button class="btn ghost sm" id="bonusClose" type="button"⟩Back⟨/button⟩⟨button class="btn sm" id="bonusAgain" type="button"⟩Shuffle again⟨/button⟩⟨/div⟩
⟨/div⟩⟨/div⟩
⟨/div⟩
⟨script⟩
(function(){
'use strict';
const CDN='https://cdn.shopify.com/s/files/1/0500/7307/5871/files/';
const img=(n,w)=⟩CDN+n+'.png?width='+w;
const ART={face:CDN+'glow-ghost-lulu.webp?v=1792029915',crest:CDN+'glow-crest.webp?v=1792029915',sig:CDN+'glow-signature.webp?v=1792032007',congrats:CDN+'glow-card-congrats.webp?v=1792036311',bClose:CDN+'glow-breathe-close.webp?v=1792036629',bIn:CDN+'glow-breathe-in.webp?v=1792036629',bOut:CDN+'glow-breathe-out.webp?v=1792036629',bacci:CDN+'glow-bacci-face.webp?v=1792029915'};
const FEEL=[['happy','Happy'],['anxious','Worried'],['sad','Sad'],['upset','Upset'],['angry','Angry'],['tired','Tired']];
const REALMS=[
{k:'lantern',L:'L',name:'The Lantern Tree',sub:'where the moon sneaks in',img:'los-lantern-9x16',q:'A tree of gold where the moon sneaks in,\nlittle lights hang where the shelves begin.\nThey swing from hooks, they glow, they sway.\nWhat lights the way? Tap it today.',o:['Lanterns','Candles','Flashlights'],lesson:'Lanterns light up one at a time. Brave feelings work the same way. You only need one small light to begin.',squad:'Everyone at the table names one thing that lit them up today.',skill:'Self-awareness'},
{k:'infinity',L:'I',name:'The Infinity Plaza',sub:'where the sky loops forever',img:'los-infinity-9x16',q:'High in the sky where the stars are spun,\na glowing loop with no end, not one.\nIt twists like an eight lying on its side.\nWhat is the shape? You decide.',o:['An infinity sign','A heart','A rainbow'],lesson:'Feelings loop around like the infinity sign. They come, they go, they come back. Naming a feeling makes the loop smaller.',squad:'Say one feeling you had today. Grown-ups go first.',skill:'Self-awareness'},
{k:'gate',L:'G',name:'The Golden Gate',sub:'Enter the Infinite',img:'los-gate-9x16',q:'Golden bars and a purple glow,\nENTER THE INFINITE says the sign, you know.\nKnowledge awaits on the other side.\nWhat do you walk through? Open it wide.',o:['A gate','A bridge','A slide'],lesson:'Every gate has a pause in front of it. Pause, breathe, then choose. That is how EmpathWalkers enter new places.',squad:'Three slow breaths together before the next bite.',skill:'Self-management'},
{k:'holo',L:'H',name:'The Holo City',sub:'where the screens float',img:'los-holo-9x16',q:'Neon towers and screens that float,\nBacci zooms by with no car and no boat.\nIt hums and glows beneath his feet.\nWhat does he ride down the holo street?',o:['A hoverboard','A scooter','A pogo stick'],lesson:'Balance is not standing still. It is wobbling and staying on. Wobbling means you are learning.',squad:'Tell the table about a time you tried something new.',skill:'Self-management'},
{k:'train',L:'T',name:'The Wisdom Train',sub:'next stop: new worlds',img:'los-train-9x16',q:'Windows glow as the night rolls past,\nNEXT STOP: NEW WORLDS is coming fast.\nBacci reads while the cats sit near.\nWhat carries them? Say it loud and clear.',o:['A train','A rocket','A boat'],lesson:'Next stop: someone else’s point of view. Ask a question, then really listen.',squad:'Ask the person across from you: what was the best part of your day?',skill:'Relationship skills'},
{k:'stars',L:'S',name:'The Star Observatory',sub:'where the Earth floats blue',img:'los-stars-9x16',q:'A dome so wide, the Earth floats blue,\nwith rings of planets circling through.\nAround it all, what twinkles bright?\nTiny sparks of far-off light.',o:['Stars','Snowflakes','Fireflies'],lesson:'From up high, a worry looks small and a friend looks big. Zoom out when a feeling feels giant.',squad:'Each person says one thing they are grateful for tonight.',skill:'Social awareness'}];
const CHEER=['One lantern lit, five to go!','Two letters glowing. Your shadow is keeping up!','Halfway there. Did you notice? The hall is getting brighter.','Four! Twinkaboo is doing a happy wiggle.','One more realm. I can feel the glow word coming.','All six! Hold on to your hats.'];
const $=s=⟩document.querySelector(s);const $$=s=⟩[...document.querySelectorAll(s)];
const reduce=matchMedia('(prefers-reduced-motion: reduce)').matches;
const PORT=()=⟩matchMedia('(orientation:portrait)').matches;
const QS=(()=⟩{try{if(window.parent&&window.parent!==window)return window.parent.location.search||''}catch(e){}return location.search})();
const K='bkLOS26_v1';let st={done:[],mood:'',path:'',name:'',bonus:false};
try{st=Object.assign(st,JSON.parse(localStorage.getItem(K)||'{}'))}catch(e){}
const save=()=⟩{try{localStorage.setItem(K,JSON.stringify(st))}catch(e){}};
const esc=v=⟩String(v).replace(/[⟨⟩&"]/g,'');
/* ---------- sound + speech ---------- */
let AC=null,soundOn=true;
function chime(f=660,d=.5,v=.08){if(!soundOn)return;try{AC=AC||new (window.AudioContext||window.webkitAudioContext)();if(AC.state==='suspended'){const r=AC.resume();if(r&&r.catch)r.catch(()=⟩{})}const o=AC.createOscillator(),g=AC.createGain();o.type='sine';o.frequency.value=f;g.gain.setValueAtTime(v,AC.currentTime);g.gain.exponentialRampToValueAtTime(.0001,AC.currentTime+d);o.connect(g).connect(AC.destination);o.start();o.stop(AC.currentTime+d)}catch(e){}}
const win=()=⟩{chime(660,.4);setTimeout(()=⟩chime(990,.5),140);setTimeout(()=⟩chime(1320,.7),300)};
function speak(t){try{const ss=window.speechSynthesis;if(!ss)return;ss.cancel();const u=new SpeechSynthesisUtterance(String(t).replace(/\n/g,' '));u.rate=.92;u.pitch=1.15;ss.speak(u)}catch(e){}}
const hush=()=⟩{try{window.speechSynthesis&&window.speechSynthesis.cancel()}catch(e){}};
$('#snd').onclick=()=⟩{soundOn=!soundOn;$('#snd').textContent=soundOn?'🔊':'🔈';if(!soundOn){hush();bgmPause()}chime(880,.3)};
/* ---------- Bacci Kid theme song (Dr. J original, loads only on tap) ---------- */
const BGM='https://baccikid.b-cdn.net/01%20Bacci%20Music/01%20More%20Music/01%20Final%20Bacci%20Theme%20Song/Bacci%20Kid%20-%20Instrumental%20V2.mp3';
const bgm=$('#bgm');let bgmOn=false;
function bgmUI(){$$('#bgmBtn,#bgmBtn2').forEach(b=⟩{b.setAttribute('aria-pressed',bgmOn?'true':'false');if(b.id==='bgmBtn2')b.textContent=bgmOn?'♪ Theme playing · tap to pause':'♪ Play the Bacci Kid theme'})}
function bgmPause(){if(!bgmOn)return;bgmOn=false;try{bgm.pause()}catch(e){}bgmUI()}
function bgmToggle(){if(bgmOn){bgmPause();return}if(!bgm.getAttribute('src')){bgm.src=BGM;bgm.volume=.45}bgmOn=true;bgmUI();const p=bgm.play();if(p&&p.catch)p.catch(()=⟩{bgmOn=false;bgmUI()})}
$$('#bgmBtn,#bgmBtn2').forEach(b=⟩b.onclick=bgmToggle);
function unlockGesture(){try{if(typeof DeviceOrientationEvent!=='undefined'&&typeof DeviceOrientationEvent.requestPermission==='function'){const p=DeviceOrientationEvent.requestPermission();if(p&&p.catch)p.catch(()=⟩{})}}catch(e){}
try{AC=AC||new (window.AudioContext||window.webkitAudioContext)();if(AC.state==='suspended'){const r=AC.resume();if(r&&r.catch)r.catch(()=⟩{})}}catch(e){}}
/* ---------- scenes ---------- */
function show(id){$$('.scene').forEach(s=⟩s.classList.toggle('on',s.id===id));if(id==='hall')startRing()}
function sticker(title){const w=document.createElement('div');w.className='stick';w.innerHTML=`⟨img src="${ART.congrats}" alt=""⟩⟨b⟩${title}⟨/b⟩`;$('#app').appendChild(w);setTimeout(()=⟩w.remove(),1800)}
/* ---------- dust particles ---------- */
(function(){const cv=$('#dust'),g=cv.getContext('2d');let S=[];function rs(){cv.width=cv.clientWidth*Math.min(devicePixelRatio,2);cv.height=cv.clientHeight*Math.min(devicePixelRatio,2);S=Array.from({length:90},()=⟩({x:Math.random()*cv.width,y:Math.random()*cv.height,r:(Math.random()*1.8+.5)*devicePixelRatio,p:Math.random()*6,v:(Math.random()*.2+.05)*devicePixelRatio,h:Math.random()⟨.3}))}
rs();addEventListener('resize',rs);let t=0;(function f(){t+=.025;g.clearRect(0,0,cv.width,cv.height);for(const s of S){s.y-=s.v;if(s.y⟨0){s.y=cv.height;s.x=Math.random()*cv.width}g.globalAlpha=.25+.6*Math.abs(Math.sin(t+s.p));g.fillStyle=s.h?'#b995ff':'#ffe9b0';g.beginPath();g.arc(s.x,s.y,s.r,0,7);g.fill()}if(!reduce)requestAnimationFrame(f)})()})();
/* ---------- gate + film ---------- */
const video=$('#film video');let filmDone=false;
function playFilm(then){const box=$('#film');if(reduce||!video.canPlayType('video/mp4')||new URLSearchParams(QS).get('cine')==='0'){then();return}
let done=false;const fin=()=⟩{if(done)return;done=true;box.classList.add('fade');setTimeout(()=⟩{box.hidden=true;box.classList.remove('fade');try{video.pause()}catch(e){}then()},520)};
bgmPause();box.hidden=false;video.muted=false;video.currentTime=0;video.onended=fin;video.onerror=fin;$('#filmSkip').onclick=fin;
const pr=video.play();if(pr&&pr.catch)pr.catch(()=⟩{video.muted=true;const p2=video.play();if(p2&&p2.catch)p2.catch(fin)});
setTimeout(()=⟩{if(video.readyState⟨2&&video.currentTime⟨.2)fin()},7000)}
$('#filmBtn').onclick=()=⟩{unlockGesture();playFilm(()=⟩{filmDone=true;show('checkin')})};
$('#enterBtn').onclick=()=⟩{unlockGesture();chime(523,.5);setTimeout(()=⟩chime(784,.6),180);show(st.done.length===6?'hall':'checkin')};
/* ---------- check-in ---------- */
$('#faces').innerHTML=FEEL.map(f=⟩`⟨button type="button" aria-pressed="false" data-f="${f[1]}"⟩⟨img src="${CDN}glow-feel-${f[0]}.webp?v=1792036629" alt=""⟩${f[1]}⟨/button⟩`).join('');
const ready=()=⟩{$('#goHall').disabled=!(st.mood&&st.path)};
$$('#faces button').forEach(b=⟩b.onclick=()=⟩{$$('#faces button').forEach(x=⟩x.setAttribute('aria-pressed','false'));b.setAttribute('aria-pressed','true');st.mood=b.dataset.f;save();chime(600,.15);ready()});
$$('#paths .chip').forEach(b=⟩b.onclick=()=⟩{$$('#paths .chip').forEach(x=⟩x.setAttribute('aria-pressed','false'));b.setAttribute('aria-pressed','true');st.path=b.textContent;save();chime(700,.15);ready()});
$('#goHall').onclick=()=⟩{win();show('hall');setTimeout(()=⟩say(`Hi! I'm ⟨b⟩Glimmerboo⟨/b⟩. Six portals, six letters, one glow word. ⟨b⟩Drag or turn your phone⟨/b⟩ to look around, then tap any portal.`,{la