/* Self-hosted fonts. Baloo 2 and Nunito are licensed under the SIL Open Font
   License; see assets/fonts/OFL-Baloo2.txt and assets/fonts/OFL-Nunito.txt.
   No request is made to any third-party font service. */
@font-face{font-family:'Baloo 2';font-style:normal;font-weight:600 800;font-display:swap;
  src:url('fonts/Baloo2-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Baloo 2';font-style:normal;font-weight:600 800;font-display:swap;
  src:url('fonts/Baloo2-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Nunito';font-style:normal;font-weight:800 900;font-display:swap;
  src:url('fonts/Nunito-800-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Nunito';font-style:normal;font-weight:800 900;font-display:swap;
  src:url('fonts/Nunito-800-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ==========================================================================
   GamePix KIDS - shared stylesheet
   Concept: the page is a sky. Game icons float in it as stickers.
   Bands (header/footer) are gradients clipped by a cloud-shaped mask, so the
   gradient flows into the puffs and there is never a flat horizontal seam.
   ========================================================================== */

:root{
  --ink:#0C2574;
  --muted:rgba(12,37,116,.60);
  --line:rgba(12,37,116,.12);

  --head:linear-gradient(112deg,#0B6BFF 0%,#12A8FF 52%,#35E0FF 100%);
  --foot:linear-gradient(112deg,#7C5CFF 0%,#FF6FA5 56%,#FFA45B 100%);
  --back-top:#B7EEFF;
  --back-bottom:#FFD9B0;

  --cloudH:120px;
  --backH:150px;

  --wrap:1240px;
  --pad:clamp(16px,4vw,32px);

  /* cloud tiles used as masks (white = keep) */
  --cloud-dn:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='120' viewBox='0 0 300 120'><g fill='white'><rect x='0' y='0' width='300' height='40'/><circle cx='0' cy='40' r='28'/><circle cx='55' cy='40' r='42'/><circle cx='125' cy='40' r='30'/><circle cx='185' cy='40' r='48'/><circle cx='250' cy='40' r='34'/><circle cx='300' cy='40' r='28'/></g></svg>");
  --cloud-up:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='120' viewBox='0 0 300 120'><g fill='white'><rect x='0' y='80' width='300' height='40'/><circle cx='0' cy='80' r='28'/><circle cx='55' cy='80' r='42'/><circle cx='125' cy='80' r='30'/><circle cx='185' cy='80' r='48'/><circle cx='250' cy='80' r='34'/><circle cx='300' cy='80' r='28'/></g></svg>");
  --cloud-dn-big:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='380' height='150' viewBox='0 0 380 150'><g fill='white'><rect x='0' y='0' width='380' height='44'/><circle cx='0' cy='44' r='34'/><circle cx='70' cy='44' r='54'/><circle cx='160' cy='44' r='38'/><circle cx='240' cy='44' r='60'/><circle cx='320' cy='44' r='42'/><circle cx='380' cy='44' r='34'/></g></svg>");
  --cloud-up-big:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='380' height='150' viewBox='0 0 380 150'><g fill='white'><rect x='0' y='106' width='380' height='44'/><circle cx='0' cy='106' r='34'/><circle cx='70' cy='106' r='54'/><circle cx='160' cy='106' r='38'/><circle cx='240' cy='106' r='60'/><circle cx='320' cy='106' r='42'/><circle cx='380' cy='106' r='34'/></g></svg>");
}

*{box-sizing:border-box}
html{background:#DCF3FF;overflow-x:clip;-webkit-text-size-adjust:100%}
body{
  margin:0;padding:0;position:relative;overflow-x:clip;
  color:var(--ink);
  font:800 16px/1.45 'Nunito',system-ui,-apple-system,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased;
  background:linear-gradient(180deg,var(--sky-1,#CFEEFF) 0%,var(--sky-2,#E4F7FF) 26%,
    var(--sky-3,#EFFAFF) 55%,var(--sky-4,#FFF3DE) 100%);
  transition:background 1.4s linear;
  background-attachment:fixed;
}
a{color:inherit;text-decoration:none}
img{max-width:100%}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:16px;top:16px;z-index:200;background:#fff;color:var(--ink);padding:10px 16px;border-radius:12px}
:focus-visible{outline:4px solid #0C2574;outline-offset:3px;border-radius:14px}

/* ---------- sky scenery ---------- */
.sky{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.sky>*{position:absolute;display:block;animation:float 10s ease-in-out infinite alternate}
.sky .pc{animation:drift 14s ease-in-out infinite alternate;filter:drop-shadow(0 8px 0 rgba(120,190,235,.28))}
@keyframes float{from{transform:translateY(0)}to{transform:translateY(-20px)}}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(28px)}}

/* ---------- bands ---------- */
.hero,.foot{position:relative;z-index:2}
.hero{margin-bottom:56px}
.foot{margin-top:120px}

.band-back{
  position:absolute;left:0;right:0;top:0;height:calc(100% + 36px);
  background:var(--back-top);z-index:0;
  -webkit-mask-image:linear-gradient(#000,#000),var(--cloud-dn-big);
          mask-image:linear-gradient(#000,#000),var(--cloud-dn-big);
  -webkit-mask-size:100% calc(100% - var(--backH)),380px var(--backH);
          mask-size:100% calc(100% - var(--backH)),380px var(--backH);
  -webkit-mask-position:0 0,22% 100%;  mask-position:0 0,22% 100%;
  -webkit-mask-repeat:no-repeat,repeat-x; mask-repeat:no-repeat,repeat-x;
}
.site-head{
  position:relative;z-index:1;overflow:hidden;background:var(--head);
  padding:56px 0 calc(48px + var(--cloudH));
  -webkit-mask-image:linear-gradient(#000,#000),var(--cloud-dn);
          mask-image:linear-gradient(#000,#000),var(--cloud-dn);
  -webkit-mask-size:100% calc(100% - var(--cloudH)),300px var(--cloudH);
          mask-size:100% calc(100% - var(--cloudH)),300px var(--cloudH);
  -webkit-mask-position:0 0,50% 100%; mask-position:0 0,50% 100%;
  -webkit-mask-repeat:no-repeat,repeat-x; mask-repeat:no-repeat,repeat-x;
}
.glow{position:absolute;left:50%;top:100px;width:min(820px,100%);height:300px;transform:translate(-50%,-50%);
  background:radial-gradient(ellipse at center,rgba(255,255,255,.34),rgba(255,255,255,0) 66%);pointer-events:none}
.bub{position:absolute;border-radius:50%;background:#fff;opacity:.2;pointer-events:none}

/* ---------- logo lockup: GamePix large and centred, KIDS a small stamp ---------- */
.lock{--lh:clamp(48px,7.4vw,108px);position:relative;display:flex;align-items:center;justify-content:center;color:#fff}
.lg{height:var(--lh);width:auto;display:block;flex:0 0 auto}
.stamp{
  position:absolute;top:50%;left:50%;display:grid;place-items:center;
  width:calc(var(--lh)*1.44);height:calc(var(--lh)*.67);
  margin-left:calc(var(--lh)*2.467 + clamp(18px,2.2vw,34px));
  transform:translateY(-30%) rotate(-7deg);
}
.sf{position:absolute;inset:0;width:100%;height:100%}
.st{position:relative;font-family:'Baloo 2',cursive;font-weight:800;line-height:1;
  font-size:calc(var(--lh)*.335);letter-spacing:.04em;padding-bottom:3px}
.head-link{
  position:absolute;right:var(--pad);top:82px;transform:translateY(-50%);
  font-family:'Baloo 2',cursive;font-weight:700;font-size:15px;letter-spacing:.05em;color:#fff;
  background:rgba(255,255,255,.26);border-radius:999px;padding:9px 21px;
}
.head-link:hover{background:rgba(255,255,255,.4)}

/* ---------- game grid ---------- */
main{position:relative;z-index:1}
/* Flex rather than grid: the last row centres when the catalogue does not
   divide evenly by the column count, instead of leaving a ragged gap. */
.grid{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;
  gap:var(--gap,16px);list-style:none;margin:0;padding:0}
.grid{--gap:16px;--cols:3}
@media(min-width:620px){.grid{--gap:18px;--cols:5}}
@media(min-width:1000px){
  .grid{--gap:24px;--cols:7}
  .tile:nth-child(7n+2),.tile:nth-child(7n+4),.tile:nth-child(7n+6){--y:20px}
}
@media(min-width:1500px){.grid{--cols:7}}
.tile{flex:0 0 calc((100% - (var(--cols) - 1) * var(--gap)) / var(--cols))}
.tile{
  display:block;width:100%;min-width:0;padding:10px;border:0;cursor:pointer;
  background:var(--c,#FFC93D);border-radius:var(--rad,28px);
  box-shadow:0 7px 0 var(--s,#E0A317),0 16px 22px rgba(12,60,120,.13);
  transform:translateY(var(--y,0)) rotate(var(--r,0deg));
  transition:transform .22s cubic-bezier(.2,1.5,.4,1),box-shadow .22s;
}
.tile:nth-child(3n){--r:1.6deg}
.tile:nth-child(3n+1){--r:-1.8deg}
.tile:nth-child(4n){--rad:36px}
.tile:nth-child(6n){--rad:42% 40% 44% 38%/40% 44% 38% 42%}
.tile img{width:100%;aspect-ratio:1;height:auto;object-fit:cover;display:block;
  border-radius:17px;background:#fff;border:4px solid #fff}
.tile:hover,.tile:focus-visible{
  transform:translateY(calc(var(--y,0px) - 10px)) rotate(-3.5deg) scale(1.05);
  box-shadow:0 17px 0 var(--s,#E0A317),0 26px 30px rgba(12,60,120,.18);
}
.tile:nth-child(even):hover,.tile:nth-child(even):focus-visible{
  transform:translateY(calc(var(--y,0px) - 10px)) rotate(3.5deg) scale(1.05);
}
.tile.skel{background:rgba(255,255,255,.55);box-shadow:none;animation:pulse 1.2s ease-in-out infinite alternate}
.tile.skel span{display:block;width:100%;aspect-ratio:1;border-radius:17px;background:rgba(255,255,255,.75)}
@keyframes pulse{from{opacity:.55}to{opacity:1}}

.notice{max-width:520px;margin:0 auto;text-align:center;background:rgba(255,255,255,.85);
  border:3px solid #fff;border-radius:22px;padding:26px 22px;box-shadow:0 8px 0 rgba(255,255,255,.5)}
.notice h2{font-family:'Baloo 2',cursive;font-weight:800;margin:0 0 6px;font-size:1.4rem}
.notice p{margin:0 0 14px;font-weight:700;color:var(--muted)}
.btn{display:inline-block;border:0;cursor:pointer;font-family:'Baloo 2',cursive;font-weight:700;
  font-size:17px;color:#fff;background:#0B7BFF;border-radius:999px;padding:12px 26px;box-shadow:0 5px 0 #0757B8}
.btn:hover{filter:brightness(1.05)}
.btn:active{transform:translateY(3px);box-shadow:0 2px 0 #0757B8}

/* ---------- footer ---------- */
.foot .band-back{
  height:calc(100% + 36px);top:-36px;background:var(--back-bottom);
  -webkit-mask-image:var(--cloud-up-big),linear-gradient(#000,#000),var(--cloud-dn-big);
          mask-image:var(--cloud-up-big),linear-gradient(#000,#000),var(--cloud-dn-big);
  -webkit-mask-size:380px var(--backH),100% calc(100% - var(--backH)*2),380px var(--backH);
          mask-size:380px var(--backH),100% calc(100% - var(--backH)*2),380px var(--backH);
  -webkit-mask-position:28% 0,0 var(--backH),22% 100%;
          mask-position:28% 0,0 var(--backH),22% 100%;
  -webkit-mask-repeat:repeat-x,no-repeat,repeat-x;
          mask-repeat:repeat-x,no-repeat,repeat-x;
}
.site-foot{
  position:relative;z-index:1;overflow:hidden;background:var(--foot);color:#fff;text-align:center;
  padding:calc(56px + var(--cloudH)) 0 calc(48px + var(--cloudH));
  -webkit-mask-image:var(--cloud-up),linear-gradient(#000,#000),var(--cloud-dn);
          mask-image:var(--cloud-up),linear-gradient(#000,#000),var(--cloud-dn);
  -webkit-mask-size:300px var(--cloudH),100% calc(100% - var(--cloudH)*2),300px var(--cloudH);
          mask-size:300px var(--cloudH),100% calc(100% - var(--cloudH)*2),300px var(--cloudH);
  -webkit-mask-position:50% 0,0 var(--cloudH),50% 100%;
          mask-position:50% 0,0 var(--cloudH),50% 100%;
  -webkit-mask-repeat:repeat-x,no-repeat,repeat-x;
          mask-repeat:repeat-x,no-repeat,repeat-x;
}
.flock{--lh:clamp(40px,5.6vw,80px);position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:34px}
.flinks{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:0;padding:0;list-style:none}
.flinks a{font-family:'Baloo 2',cursive;font-weight:700;font-size:clamp(14px,1.7vw,17px);letter-spacing:.04em;
  background:rgba(255,255,255,.24);border-radius:999px;padding:10px 22px;display:inline-block}
.flinks a:hover{background:rgba(255,255,255,.4)}

.tail{position:relative;z-index:1;padding:10px 0 44px;text-align:center}
.legalid{max-width:760px;margin:0 auto;padding:0 var(--pad);font-size:12px;line-height:1.7;
  font-weight:700;color:var(--muted)}
.copy{margin-top:10px;font-size:12.5px;font-weight:700;color:var(--muted)}

/* ---------- full-screen game player ---------- */
.player{position:fixed;inset:0;z-index:120;background:#06152E;display:none}
.player.open{display:block}
.player iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#06152E}
.pback{
  position:absolute;left:calc(12px + env(safe-area-inset-left));top:calc(12px + env(safe-area-inset-top));
  z-index:3;display:inline-flex;align-items:center;gap:9px;border:0;cursor:grab;
  font-family:'Baloo 2',cursive;font-weight:700;font-size:16px;color:#0C2574;
  background:rgba(255,255,255,.94);border-radius:999px;padding:11px 16px 11px 20px;
  box-shadow:0 5px 0 rgba(12,37,116,.28);
  touch-action:none;                /* let it be dragged instead of scrolling the page */
  user-select:none;-webkit-user-select:none;
}
.pback.dragging{cursor:grabbing;box-shadow:0 8px 18px rgba(0,0,0,.3);transition:none}
.pback:not(.dragging):active{transform:translateY(3px);box-shadow:0 2px 0 rgba(12,37,116,.28)}
/* the grip shows the button can be moved up and down */
.pgrip{display:inline-block;width:12px;height:16px;flex:0 0 auto;opacity:.42;
  background-image:radial-gradient(circle,#0C2574 1.6px,transparent 1.7px);
  background-size:6px 5.4px;background-position:0 1px}
.ptitle{
  position:absolute;left:50%;top:calc(14px + env(safe-area-inset-top));transform:translateX(-50%);z-index:2;
  font-family:'Baloo 2',cursive;font-weight:700;font-size:15px;color:#fff;background:rgba(255,255,255,.18);
  border-radius:999px;padding:9px 18px;max-width:46vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
@media(max-width:640px){.ptitle{display:none}}
.ppriv{position:absolute;right:calc(12px + env(safe-area-inset-right));
  top:calc(14px + env(safe-area-inset-top));z-index:3;
  font-family:'Baloo 2',cursive;font-weight:700;font-size:14px;color:#0C2574;
  background:rgba(255,255,255,.94);border-radius:999px;padding:9px 16px;
  box-shadow:0 4px 0 rgba(12,37,116,.24);text-decoration:none}
.ppriv:hover{background:#fff}
.pload{position:absolute;inset:0;z-index:1;display:grid;place-items:center;color:#fff;
  font-family:'Baloo 2',cursive;font-weight:700;font-size:18px;gap:14px}
.spin{width:46px;height:46px;border:5px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;
  animation:sp .8s linear infinite;margin:0 auto 12px}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- parental gate ---------- */
.modal{position:fixed;inset:0;z-index:140;display:none;place-items:center;padding:18px;background:rgba(12,37,116,.62)}
.modal.open{display:grid}
.card{width:100%;max-width:430px;background:#fff;border-radius:26px;padding:26px 24px 22px;position:relative;
  box-shadow:0 20px 60px rgba(0,0,0,.28)}
.card h2{font-family:'Baloo 2',cursive;font-weight:800;font-size:1.45rem;margin:0 0 6px}
.card p{margin:6px 0;font-size:14.5px;font-weight:700;color:var(--muted)}
.xbtn{position:absolute;top:12px;right:12px;width:40px;height:40px;border:0;cursor:pointer;border-radius:50%;
  background:#EAF6FF;font-family:'Baloo 2',cursive;font-weight:700;font-size:17px;color:var(--ink)}
.gq{font-family:'Baloo 2',cursive;font-weight:800;font-size:2rem;text-align:center;margin:16px 0 12px}
.grow{display:flex;gap:10px;justify-content:center}
.gin{width:118px;text-align:center;font-family:'Baloo 2',cursive;font-weight:800;font-size:1.4rem;
  border:3px solid var(--ink);border-radius:14px;padding:9px;background:#F3FAFF;color:var(--ink)}
.gerr{min-height:22px;text-align:center;font-weight:800;color:#D6455F;margin-top:10px;font-size:14px}
.shake{animation:shk .4s}
@keyframes shk{0%,100%{transform:translateX(0)}25%{transform:translateX(-9px)}75%{transform:translateX(9px)}}

/* ---------- content pages ---------- */
.page{position:relative;z-index:1}
.paper{background:rgba(255,255,255,.94);border:4px solid #fff;border-radius:30px;
  padding:clamp(24px,4vw,54px);box-shadow:0 12px 0 rgba(255,255,255,.55),0 26px 40px rgba(12,60,120,.10)}
.paper h1{font-family:'Baloo 2',cursive;font-weight:800;font-size:clamp(1.8rem,4.4vw,2.7rem);margin:0 0 6px;line-height:1.1}
.paper .upd{font-size:13px;font-weight:700;color:var(--muted);margin:0 0 26px}
.paper h2{font-family:'Baloo 2',cursive;font-weight:800;font-size:clamp(1.15rem,2.4vw,1.45rem);margin:32px 0 10px}
.paper h3{font-family:'Baloo 2',cursive;font-weight:700;font-size:1.05rem;margin:20px 0 8px}
.paper p,.paper li{font-weight:700;font-size:15.5px;line-height:1.65;color:#26365f}
.paper ul{padding-left:22px;margin:10px 0}
.paper li{margin:6px 0}
.paper a{color:#0B6BFF;text-decoration:underline;text-underline-offset:2px}
.lede{font-size:17px !important;color:var(--ink) !important}
.callout{background:#EAF7FF;border:3px solid #CBEAFF;border-radius:20px;padding:16px 18px;margin:22px 0}
.callout p{margin:0;font-size:14.5px}
.toc{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 0;padding:0;list-style:none}
.toc a{background:#EAF7FF;border-radius:999px;padding:8px 15px;font-size:13.5px;font-weight:800;
  color:var(--ink);text-decoration:none}
.toc a:hover{background:#D3EDFF}
.paper a.backhome,.backhome{display:inline-block;margin-top:30px;font-family:'Baloo 2',cursive;
  font-weight:700;background:#0A66E6;color:#fff;text-decoration:none;border-radius:999px;
  padding:12px 26px;box-shadow:0 5px 0 #084BAB}
.paper a.backhome:hover{background:#0A5FD0;color:#fff}
.paper a.backhome:active{transform:translateY(3px);box-shadow:0 2px 0 #084BAB}

@media(max-width:700px){
  .sky .pc{max-width:62vw}
  .sky .tw{max-width:16vw}
  .lock,.flock{flex-direction:column;gap:18px}
  .stamp{position:static;margin:0;transform:rotate(-8deg)}
  .head-link{display:none}
  .hero{margin-bottom:8px}
  .foot{margin-top:52px}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important}
}

/* ---------- easter egg: tap a logo and stars fly out ---------- */
.spark{position:fixed;z-index:150;pointer-events:none;will-change:transform,opacity;
  filter:drop-shadow(0 1px 0 rgba(12,37,116,.18))}
@keyframes logopop{0%{transform:scale(1)}32%{transform:scale(1.13) rotate(-2.5deg)}
  62%{transform:scale(.965) rotate(1deg)}100%{transform:scale(1)}}
.pop{animation:logopop .5s cubic-bezier(.2,1.6,.4,1)}
.lock,.flock{cursor:pointer}
@media(prefers-reduced-motion:reduce){.pop{animation:none}}

/* ---------- easter egg: a puppy or a kitten drops by when nobody plays ------ */
.pet{position:fixed;z-index:140;border:0;padding:0;background:none;cursor:pointer;
  width:clamp(124px,25vw,186px);line-height:0;
  transition:transform .85s cubic-bezier(.18,1.5,.4,1);-webkit-tap-highlight-color:transparent}
.pet svg{width:100%;height:auto;display:block;filter:drop-shadow(0 6px 10px rgba(12,37,116,.22))}
.pet-in{display:block;animation:petbob 1.15s ease-in-out infinite alternate}
@keyframes petbob{from{transform:translateY(0) rotate(-1.5deg)}to{transform:translateY(-9px) rotate(1.5deg)}}
.pet .paw{transform-box:fill-box;transform-origin:50% 88%;animation:petwave .62s ease-in-out infinite alternate}
@keyframes petwave{from{transform:rotate(-16deg)}to{transform:rotate(14deg)}}
.pet .tail{transform-box:fill-box;transform-origin:4% 92%;animation:pettail .45s ease-in-out infinite alternate}
@keyframes pettail{from{transform:rotate(-13deg)}to{transform:rotate(13deg)}}
.pet .bub{animation:petbub 1.5s ease-in-out infinite}
@keyframes petbub{0%,70%,100%{opacity:0;transform:translateY(4px) scale(.7)}
  18%,55%{opacity:1;transform:translateY(0) scale(1)}}
.pet.hop .pet-in{animation:pethop .5s cubic-bezier(.2,1.7,.4,1)}
@keyframes pethop{0%{transform:translateY(0)}45%{transform:translateY(-30px) scale(1.07)}100%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.pet{display:none}}

/* ---------- the sky keeps moving, slowly ---------- */
.sky .pc{animation:drift 14s ease-in-out infinite alternate, slide linear infinite}
.sky .pc:nth-of-type(1){animation-duration:14s,170s}
.sky .pc:nth-of-type(2){animation-duration:16s,230s;animation-direction:alternate,reverse}
.sky .pc:nth-of-type(3){animation-duration:13s,200s}
.sky .pc:nth-of-type(4){animation-duration:15s,260s;animation-direction:alternate,reverse}
.sky .pc:nth-of-type(5){animation-duration:17s,190s}
@keyframes slide{from{margin-left:-5vw}to{margin-left:5vw}}
.sky .sun{opacity:.85;animation:spin 240s linear infinite;transition:opacity 1.4s linear}
@keyframes spin{to{transform:rotate(360deg)}}
.sky .tw{transition:opacity 1.4s linear}

/* at night the sun dims, the stars come up and the clouds go quiet */
html[data-sky="night"] .sky .sun{opacity:.14}
html[data-sky="night"] .sky .pc{opacity:.3}
html[data-sky="night"] .sky .tw{opacity:1;animation:twinkle 3.4s ease-in-out infinite alternate}
@keyframes twinkle{from{opacity:.4}to{opacity:1}}
html[data-sky="sunset"] .sky .sun,html[data-sky="sunrise"] .sky .sun{opacity:.62}
html[data-sky="night"] .seclabel{color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.4)}

/* ---------- section headings ---------- */
.sechead{grid-column:1/-1;flex:0 0 100%;display:flex;align-items:center;gap:12px;
  margin:26px 0 2px;padding:0 2px}
.sechead:first-child{margin-top:2px}
.secico{width:clamp(38px,5vw,48px);height:clamp(38px,5vw,48px);flex:0 0 auto;
  display:grid;place-items:center;border-radius:15px;background:var(--sc);color:#fff;
  box-shadow:0 5px 0 rgba(12,37,116,.2)}
.secico svg{width:62%;height:62%;display:block}
.seclabel{font-family:'Baloo 2',cursive;font-weight:700;
  font-size:clamp(18px,2.3vw,26px);color:#0C2574;line-height:1.1}

/* ---------- tiles arrive one after another ---------- */
.tile{animation:tilein .42s cubic-bezier(.2,1.4,.4,1) backwards;animation-delay:var(--d,0ms)}
@keyframes tilein{from{opacity:0;transform:translateY(18px) scale(.88)}to{opacity:1;transform:none}}
/* ---------- and answer to the touch ---------- */
.tile.tapped{animation:tiletap .22s ease-out}
@keyframes tiletap{0%{transform:scale(1)}45%{transform:scale(.9)}100%{transform:scale(1.02)}}
.tile.tapped img{animation:icobounce .3s cubic-bezier(.2,1.7,.4,1)}
@keyframes icobounce{0%{transform:scale(1)}50%{transform:scale(1.15) rotate(-3deg)}100%{transform:scale(1)}}

@media(prefers-reduced-motion:reduce){
  .sky .pc,.sky .sun,.sky .tw,.tile,.tile.tapped,.tile.tapped img{animation:none!important}
  .tile{opacity:1;transform:none}
}
