
:root{--bg:#fff;--text:#16202a;--muted:#546a7b;--brand:#ff8a00;--brand-2:#7a6cff;--brand-3:#00d0ff;--card:#fff;--ring:#ffbb33;--shadow:0 10px 30px rgba(0,0,0,.08)}
:root.dark{--bg:#0f1220;--text:#f2f6ff;--muted:#b7c4d1;--card:#171a2b;--shadow:0 10px 30px rgba(0,0,0,.3)}
*{box-sizing:border-box}body{margin:0;font-family:'Nunito',system-ui;background:var(--bg);color:var(--text);line-height:1.6}
img{max-width:100%;display:block}.wrap{width:min(1100px,92%);margin-inline:auto}
.display{font-family:'Fredoka','Baloo 2',cursive;font-weight:800;font-size:clamp(2rem,4vw+1rem,3.6rem)}
h1,h2,h3,.h4{font-family:'Baloo 2','Fredoka',system-ui;margin:0 0 .4rem}.lead{font-size:1.125rem;color:var(--muted)}
.site-header{position:sticky;top:0;z-index:10;background:var(--bg);box-shadow:var(--shadow)}
.site-header .wrap{display:flex;align-items:center;gap:.8rem;padding:.5rem 0}
.brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--text);font-weight:900}
.brand-mark-img{width:44px;height:44px;border-radius:10px;flex:0 0 44px;background:url('assets/btw-mark-192.png') center/cover;border:0;box-shadow:var(--shadow)}
.brand-text{display:flex;gap:.15rem;align-items:baseline;font-family:'Baloo 2';font-weight:900}
.btw-b{color:#F05A28}.btw-u1{color:#6FC3B2}.btw-m{color:#59B368}.btw-p{color:#F29E21}.btw-i{color:#FF4ED4}.btw-t{color:#5CC0E6}.btw-u2{color:#9BD36D}.btw-n{color:#F29E21}.btw-e{color:#7A63FF}.btw-s{color:#8E5AC2}.btw-w,.btw-o,.btw-r,.btw-l,.btw-d{color:#FFD166}
.site-nav ul{display:flex;gap:.5rem;list-style:none;padding:0;margin:0}
.site-nav a{display:inline-block;padding:.6rem .9rem;border-radius:999px;text-decoration:none;color:var(--text)}
.site-nav a:focus,.site-nav a:hover{outline:2px solid var(--ring);outline-offset:2px}
.nav-toggle,.theme-toggle,.music-toggle{background:transparent;border:2px solid transparent;padding:.35rem .6rem;border-radius:.6rem}
.nav-toggle:focus,.theme-toggle:focus,.music-toggle:focus{border-color:var(--ring)}
@media (max-width:820px){.site-nav{position:absolute;right:0;top:64px;background:var(--card);padding:.6rem;border-radius:1rem;box-shadow:var(--shadow);display:none}.site-nav.open{display:block}.nav-toggle{display:inline-block}}
.btn{display:inline-block;padding:.75rem 1.1rem;border-radius:1rem;border:0;background:var(--card);box-shadow:var(--shadow);text-decoration:none;color:var(--text);font-weight:800;cursor:pointer}
.btn-primary{background:linear-gradient(90deg,var(--brand),var(--brand-2));color:#fff}.btn-secondary{background:linear-gradient(90deg,var(--brand-3),var(--brand-2));color:#fff}
.btn-ghost{background:transparent;border:2px solid var(--muted)}.btn-link{background:transparent;color:var(--brand);text-decoration:underline;box-shadow:none}
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:2rem;align-items:center;padding:2rem 0}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.card{background:var(--card);padding:1rem;border-radius:1rem;box-shadow:var(--shadow)}
.video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.video-card{background:var(--card);border-radius:1rem;box-shadow:var(--shadow);padding:.75rem}
.video-thumb{display:grid;gap:.5rem;background:#f3f5f8;border:0;border-radius:.8rem;padding:.4rem;cursor:pointer;width:100%}.video-thumb:focus{outline:3px solid var(--ring)}
dialog{border:0;border-radius:1rem;padding:0;width:min(900px,92%);box-shadow:var(--shadow);background:var(--card)}
.modal-bar{display:flex;justify-content:space-between;align-items:center;padding:.5rem .75rem;background:linear-gradient(90deg,var(--brand),var(--brand-2));color:#fff;border-top-left-radius:1rem;border-top-right-radius:1rem}
.player-area{padding:.75rem}
.game .color-controls{display:flex;flex-wrap:wrap;gap:.5rem}.scoreboard{margin-top:.5rem;font-weight:800}
.memory-grid{display:grid;grid-template-columns:repeat(4,minmax(44px,1fr));gap:.4rem;margin:.5rem 0}
.memory-card{aspect-ratio:1/1;border-radius:.6rem;background:var(--card);border:2px dashed var(--muted);display:grid;place-items:center;font-size:1.2rem;cursor:pointer}
.memory-card.revealed{border-style:solid}
.whack-grid{display:grid;grid-template-columns:repeat(3,minmax(60px,1fr));gap:.6rem;margin-top:.6rem;max-width:720px}
.hole{position:relative;aspect-ratio:1/1;border:0;background:radial-gradient(ellipse at center,#3a3a4a 0%,#1e1e28 60%,#0f0f18 100%);border-radius:50%;box-shadow:inset 0 8px 18px rgba(0,0,0,.5);overflow:hidden;cursor:pointer}
.hole:focus{outline:3px solid var(--ring)}.bear{position:absolute;left:50%;bottom:-55%;transform:translateX(-50%) translateY(0);transition:transform .18s ease;width:80%;max-width:140px;pointer-events:none}
.hole.up .bear{transform:translateX(-50%) translateY(-70%)}.hole.hidden .bear{transform:translateX(-50%) translateY(0)}.hole img{width:100%;height:auto;display:block}
.product-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.product-media{margin:0}.product-media img{border-radius:1rem;box-shadow:var(--shadow);width:100%;height:auto}
.lightbox-dialog{border:0;border-radius:1rem;padding:0;width:min(1024px,96%);background:var(--card);box-shadow:var(--shadow)}
.lightbox-bar{display:flex;justify-content:space-between;align-items:center;padding:.5rem .75rem;background:linear-gradient(90deg,var(--brand),var(--brand-2));color:#fff;border-top-left-radius:1rem;border-top-right-radius:1rem}
.lightbox-body{padding:.75rem}.rating{display:flex;align-items:center;gap:.4rem;font-weight:800}.stars{letter-spacing:2px;font-size:1.2rem}.stars .off{opacity:.25}
.flash-overlay{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity .25s ease;z-index:20;mix-blend-mode:screen}.flash-overlay.active{opacity:.35}
/* Tracer */.tracer-wrap{display:grid;grid-template-columns:1fr;gap:.75rem;max-width:900px}#tracerCanvas{width:100%;height:auto;background:linear-gradient(180deg,#f9fbff,#eef3ff);border-radius:1rem;box-shadow:var(--shadow)}.tracer-ui{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem}
/* Shapes */.shapes-wrap{display:grid;grid-template-columns:2fr 1fr;gap:1rem;align-items:start}.shape-targets{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem}.shape-target{position:relative;background:var(--card);border-radius:1rem;box-shadow:var(--shadow);display:grid;place-items:center;padding:1rem;min-height:140px;border:2px solid transparent}
.shape-target svg{width:100%;height:auto;fill:none;stroke:var(--muted);stroke-width:6}.shape-target.matched{border-color:#34c759;background:linear-gradient(180deg,#f0fff4,#e6fff6)}.shape-target .check{position:absolute;top:.5rem;right:.75rem;font-weight:900;color:#34c759;font-size:1.25rem;opacity:0;transition:opacity .2s ease}.shape-target.matched .check{opacity:1}
.shape-draggables{display:grid;grid-template-columns:1fr;gap:.5rem}.draggable{user-select:none;cursor:grab;background:var(--card);border-radius:.8rem;padding:.6rem .8rem;box-shadow:var(--shadow);border:2px dashed var(--muted);text-align:center}.draggable:active{cursor:grabbing}
@media (max-width:840px){.shapes-wrap{grid-template-columns:1fr}}
.contact-form{background:var(--card);padding:1rem;border-radius:1rem;box-shadow:var(--shadow);max-width:640px}.field{display:grid;gap:.25rem;margin:.6rem 0}
input,textarea{width:100%;padding:.7rem .8rem;border:2px solid #e0e6ed;border-radius:.7rem;background:transparent;color:var(--text)}input:focus,textarea:focus{outline:3px solid var(--ring);border-color:transparent}.error{color:#b21e35;font-size:.9rem;min-height:1.1rem}.form-success{color:green;font-weight:800}
.site-footer{margin-top:2rem;padding:1rem 0;color:var(--muted)}.site-footer a{color:inherit;text-decoration:underline}
.music-toggle{margin-left:.5rem;background:transparent;border:2px solid transparent;padding:.35rem .6rem;border-radius:.6rem}.music-toggle:focus{border-color:var(--ring)}


/* Center & size grid-based games */
.memory-match .memory-grid{max-width:420px; margin-inline:auto;}
.whack .whack-grid{max-width:480px; margin-inline:auto;}
.whack .bear{width:70%;}
.shapes .shape-targets{max-width:720px; margin-inline:auto;}
.shape-target{min-height:120px}


/* Balloon Pop */
.balloon-ui{display:flex; gap:.5rem; align-items:center; margin:.5rem 0}
.balloon-field{position:relative; width:min(820px,92%); height:420px; margin-inline:auto; background:linear-gradient(180deg,#f8fbff,#eef5ff); border-radius:1rem; box-shadow:var(--shadow); overflow:hidden}
.ballon-lane{}
.balloon{position:absolute; bottom:-120px; display:grid; place-items:center; width:80px; height:110px; border-radius:40px 40px 60px 60px / 50px 50px 60px 60px; cursor:pointer; box-shadow:0 10px 30px rgba(0,0,0,.12); animation: floatUp linear forwards; will-change: transform; touch-action: manipulation}
.balloon:focus{outline:3px solid var(--ring)}
.balloon::after{content:''; position:absolute; bottom:-12px; left:50%; transform:translateX(-50%); width:2px; height:80px; background:rgba(0,0,0,.1)}
.balloon .shine{position:absolute; inset:auto auto 48px 18px; width:14px; height:36px; border-radius:10px; background:rgba(255,255,255,.55); filter:blur(0.5px)}
@keyframes floatUp{ from{ transform: translateY(0) } to{ transform: translateY(-520px) } }
.balloons.paused .balloon{ animation-play-state: paused }
.popbits{position:absolute; width:6px; height:6px; background:#fff; border-radius:999px; pointer-events:none; will-change: transform, opacity}


.video-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;margin-top:1.5rem}
.video-card{border:none;border-radius:16px;background:#fff;box-shadow:0 8px 20px rgba(0,0,0,.08);cursor:pointer;overflow:hidden}
.video-card img{width:100%;display:block}
.video-card span{display:block;padding:.75rem;font-weight:700;text-align:center}
.video-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center;z-index:1000}
.video-modal.active{display:flex}
.video-modal-content{background:#fff;border-radius:16px;padding:1rem;max-width:900px;width:95%}
.video-frame-wrapper{position:relative;padding-top:56.25%}
.video-frame-wrapper iframe{position:absolute;inset:0;width:100%;height:100%}
.video-close{border:none;background:none;font-size:1.5rem;float:right;cursor:pointer}


/* Utility */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.muted{opacity:.75}

/* Videos header */
.videos-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem}
.videos-controls{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}
#videoCategory,#videoSearch{border:2px solid rgba(0,0,0,.1);border-radius:12px;padding:.6rem .75rem;font:inherit;background:#fff}
#videoSearch{min-width:min(320px,90vw)}

/* Featured player + Up Next */
.featured-player{display:grid;grid-template-columns:1.8fr 1fr;gap:1rem;align-items:start;margin:1rem 0 1.25rem}
@media (max-width: 900px){.featured-player{grid-template-columns:1fr}}
.featured-frame{position:relative;border-radius:18px;overflow:hidden;background:#fff;box-shadow:0 8px 20px rgba(0,0,0,.08);min-height:260px}
.featured-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:none}
.featured-frame.playing iframe{display:block}
.featured-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem;text-align:center}
.featured-title{font-weight:800;font-size:1.15rem;margin:0 0 .25rem 0}

.up-next{background:#fff;border-radius:18px;box-shadow:0 8px 20px rgba(0,0,0,.08);padding:1rem}
.up-next h3{margin:.25rem 0 .75rem 0}
.up-next-list{list-style:none;padding:0;margin:0;display:grid;gap:.65rem}
.up-next-item{display:flex;gap:.6rem;align-items:center}
.up-next-item button{display:flex;gap:.6rem;align-items:center;border:0;background:transparent;padding:.25rem;border-radius:12px;cursor:pointer;text-align:left;width:100%}
.up-next-item button:hover{background:rgba(0,0,0,.05)}
.up-next-thumb{width:86px;height:48px;border-radius:10px;overflow:hidden;flex:0 0 auto}
.up-next-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.up-next-text{display:flex;flex-direction:column}
.up-next-text strong{font-size:.95rem}
.up-next-text span{font-size:.8rem;opacity:.75}

/* Cards */
.video-card{position:relative}
.video-name{display:block;padding:.75rem .75rem 0 .75rem;font-weight:800;text-align:center}
.video-meta{display:block;padding:.2rem .75rem .75rem .75rem;font-size:.85rem;text-align:center;opacity:.75}

/* Desktop hover preview label */
@media (hover:hover) and (pointer:fine){
  .video-card[data-youtube-id]::after{
    content:"Preview";
    position:absolute;top:10px;left:10px;
    background:rgba(0,0,0,.65);color:#fff;
    padding:.35rem .55rem;border-radius:999px;
    font-size:.75rem;letter-spacing:.02em;
    opacity:0;transform:translateY(-4px);
    transition:opacity .15s ease, transform .15s ease;
    pointer-events:none;
  }
  .video-card[data-youtube-id]:hover::after{opacity:1;transform:translateY(0)}
}

/* ===== Color Pop Buttons ===== */
.color-controls{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}
.color-controls .btn{border:none;border-radius:999px;padding:.75rem 1.25rem;font-weight:800;cursor:pointer;color:#fff;transition:transform .12s ease}
.color-controls .btn[data-color="red"]{background:#FF4C4C}
.color-controls .btn[data-color="orange"]{background:#FF9F1C}
.color-controls .btn[data-color="yellow"]{background:#FFD60A;color:#222}
.color-controls .btn[data-color="green"]{background:#2EC4B6}
.color-controls .btn[data-color="blue"]{background:#3A86FF}
.color-controls .btn[data-color="indigo"]{background:#5A4FCF}
.color-controls .btn[data-color="violet"]{background:#9B5DE5}
.color-controls .btn.is-target{animation:cpPulse 1s infinite}
@keyframes cpPulse{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.color-controls .btn.pop-correct{animation:cpPop .18s}
@keyframes cpPop{0%{transform:scale(1)}60%{transform:scale(1.07)}100%{transform:scale(1)}}
.color-controls .btn.shake-wrong{animation:cpShake .28s}
@keyframes cpShake{0%{transform:translateX(0)}25%{transform:translateX(-6px)}50%{transform:translateX(6px)}75%{transform:translateX(-4px)}100%{transform:translateX(0)}}
.flash-overlay{position:fixed;inset:0;opacity:0;pointer-events:none;transition:opacity .15s ease;z-index:999}
.flash-overlay.active{opacity:.22}


/* ===== Color Pop Balloon Buttons ===== */
.color-controls .btn{
  position:relative;
  border-radius: 999px 999px 850px 850px;
  padding: .9rem 1.35rem 1.05rem 1.35rem;
  min-width: 120px;
  text-transform: capitalize;
}
.color-controls .btn::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:-18px;
  width:2px;
  height:18px;
  transform:translateX(-50%);
  background:rgba(0,0,0,.18);
  border-radius:2px;
}
.color-controls .btn::before{
  content:"";
  position:absolute;
  top:10px;
  left:14px;
  width:18px;
  height:28px;
  border-radius:999px;
  background:rgba(255,255,255,.35);
  transform:rotate(-18deg);
}
.color-controls .btn:hover{ transform: translateY(-2px); }


/* ===== Uniform site title font ===== */
:root{
  --btw-heading-font: "Baloo 2", "Fredoka", "Comic Sans MS", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
}
.site-header h1,
.brand-name,
.logo-text,
header h1{
  font-family: var(--btw-heading-font);
  letter-spacing: .02em;
}


/* Accessibility: hide skip link unless focused */
.skip-link {
  position: absolute;
  top: -100px;
  left: 0;
  background: #ffffff;
  color: #000000;
  padding: 8px 12px;
  z-index: 1000;
  text-decoration: none;
  font-weight: 600;
}
.skip-link:focus {
  top: 0;
}

/* ===== Videos fun styling ===== */
.video-hero{margin:1.25rem 0 1rem 0}
.video-hero-card{
  display:grid;
  grid-template-columns: 1.05fr 1fr;
  gap:1rem;
  align-items:center;
  padding:1.25rem;
  border-radius:24px;
  background: linear-gradient(135deg, rgba(255,255,255,.92), rgba(255,255,255,.78));
  box-shadow: 0 12px 28px rgba(0,0,0,.10);
  position:relative;
  overflow:hidden;
}
@media (max-width: 900px){ .video-hero-card{grid-template-columns:1fr} }

/* playful floating shapes */
.video-hero-card::before,
.video-hero-card::after{
  content:"";
  position:absolute;
  width:260px;
  height:260px;
  border-radius:999px;
  filter: blur(0px);
  opacity:.35;
  pointer-events:none;
}
.video-hero-card::before{left:-120px;top:-140px;background:radial-gradient(circle at 30% 30%, #FF9F1C, transparent 60%)}
.video-hero-card::after{right:-140px;bottom:-160px;background:radial-gradient(circle at 30% 30%, #9B5DE5, transparent 62%)}

.video-hero-text h2{margin:0 0 .25rem 0;font-size:2rem}
.video-hero-text p{margin:0 0 .75rem 0}

.video-badges{display:flex;gap:.5rem;flex-wrap:wrap}
.badge{
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  padding:.4rem .65rem;
  border-radius:999px;
  font-weight:800;
  font-size:.9rem;
  background:#fff;
  box-shadow: 0 6px 14px rgba(0,0,0,.08);
}
.badge-star{border:2px solid rgba(255,159,28,.35)}
.badge-heart{border:2px solid rgba(155,93,229,.35)}
.badge-note{border:2px solid rgba(58,134,255,.35)}

/* inline player */
.inline-player{width:100%}
.thumb-play{
  width:100%;
  border:0;
  padding:0;
  background:transparent;
  cursor:pointer;
  border-radius:22px;
  overflow:hidden;
  box-shadow: 0 12px 26px rgba(0,0,0,.12);
  position:relative;
}
.thumb-img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover}
.play-bubble{
  position:absolute;
  inset:auto;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  width:86px;
  height:86px;
  border-radius:999px;
  background: rgba(255,255,255,.92);
  display:grid;
  place-items:center;
  font-size:2.2rem;
  box-shadow: 0 12px 26px rgba(0,0,0,.18);
}
.thumb-play:hover .play-bubble{transform:translate(-50%,-50%) scale(1.05)}

.player-frame{
  width:100%;
  border-radius:22px;
  overflow:hidden;
  box-shadow: 0 12px 26px rgba(0,0,0,.12);
}
.player-frame .yt-iframe{
  width:100%;
  height:100%;
  aspect-ratio:16/9;
  border:0;
  display:block;
}

/* Make the videos grid feel more playful */
.video-grid{margin-top:1.25rem}
.video-card{border-radius:20px}
.video-card:hover{transform:translateY(-2px)}
