:root{
  --grass:#7bd36b;--grass2:#4fb35a;--sky:#bfe9ff;--sky2:#fff6d6;
  --ink:#2b2d42;--card:#fff;--r:28px;
  --c1:#ff6b6b;--c2:#ffa94d;--c3:#ffd43b;--c4:#69db7c;--c5:#4dabf7;--c6:#b197fc;--c7:#f783ac;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%}
body{font-family:Rubik,system-ui,sans-serif;color:var(--ink);
  background:linear-gradient(180deg,var(--sky) 0%,var(--sky2) 62%,var(--grass) 62.1%,var(--grass2) 100%);
  background-attachment:fixed;overflow-x:hidden}
button{font:inherit;cursor:pointer;border:0}

/* decorative scenery */
.sky{position:fixed;inset:0;pointer-events:none;z-index:0}
.sun{position:absolute;right:4vw;top:2vh;font-size:clamp(48px,8vw,96px);animation:spin 30s linear infinite}
.cloud{position:absolute;font-size:clamp(48px,9vw,110px);opacity:.9;animation:drift 60s linear infinite}
.c1{top:6vh;left:-15vw}.c2{top:16vh;left:-30vw;animation-duration:85s;animation-delay:-30s}.c3{top:3vh;left:-20vw;animation-duration:70s;animation-delay:-50s}
.bfly{position:absolute;font-size:34px;animation:flutter 7s ease-in-out infinite}
.b1{left:8vw;top:44vh}.b2{right:10vw;top:52vh;animation-delay:-2s}.b3{left:46vw;bottom:2vh;animation:none;font-size:30px}
.forest{position:fixed;left:0;right:0;bottom:-6px;font-size:clamp(40px,6vw,72px);white-space:nowrap;overflow:hidden;
  letter-spacing:-.2em;pointer-events:none;z-index:0;opacity:.95;filter:drop-shadow(0 4px 0 rgba(0,0,0,.12))}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes drift{to{transform:translateX(140vw)}}
@keyframes flutter{0%,100%{transform:translate(0,0) rotate(-8deg)}50%{transform:translate(40px,-30px) rotate(10deg)}}

#app{position:relative;z-index:1;max-width:1200px;margin:0 auto;padding:16px 16px 140px}

/* home */
.hero{text-align:center;margin:10px 0 18px}
.hero h1{font-weight:900;font-size:clamp(40px,8vw,88px);margin:0;line-height:1;
  text-shadow:0 5px 0 #fff,0 10px 0 rgba(0,0,0,.12)}
.hero p{font-size:clamp(18px,2.6vw,26px);font-weight:800;margin:10px 0 0;color:#3d5a2a}
.chips{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:18px 0}
.chip{background:#fff;border-radius:999px;padding:12px 20px;font-size:20px;font-weight:800;
  box-shadow:0 5px 0 rgba(0,0,0,.15);transition:transform .15s}
.chip.on{background:var(--c3);transform:translateY(-3px) rotate(-2deg)}
.chip:active{transform:translateY(3px)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:18px}
.card{background:var(--card);border-radius:var(--r);padding:12px 12px 14px;text-align:center;
  box-shadow:0 8px 0 rgba(0,0,0,.13);transition:transform .2s;position:relative}
.card:hover{transform:translateY(-6px) rotate(-1.5deg)}
.card:nth-child(even):hover{transform:translateY(-6px) rotate(1.5deg)}
.card img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:50% 46% 52% 44%/48% 52% 46% 54%;
  border:6px solid var(--bc,var(--c4));background:#eee}
.card b{display:block;font-size:22px;font-weight:900;margin-top:8px}
.card .em{position:absolute;top:4px;right:8px;font-size:30px}
.random{display:block;margin:26px auto 0;background:var(--c7);color:#fff;font-size:24px;font-weight:900;
  padding:16px 30px;border-radius:999px;box-shadow:0 7px 0 #c2255c}

/* animal page */
.top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.btn{background:#fff;border-radius:22px;min-width:64px;height:64px;font-size:30px;font-weight:900;
  box-shadow:0 6px 0 rgba(0,0,0,.15);padding:0 16px}
.btn:active{transform:translateY(4px);box-shadow:0 2px 0 rgba(0,0,0,.15)}
.name{flex:1;text-align:center;margin:0;font-weight:900;font-size:clamp(46px,11vw,128px);line-height:1.05;
  cursor:pointer;user-select:none;word-break:break-word}
.name span{display:inline-block;animation:hop 2.2s ease-in-out infinite;
  -webkit-text-stroke:3px #fff;paint-order:stroke fill;text-shadow:0 6px 0 rgba(0,0,0,.18)}
@keyframes hop{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.latin{text-align:center;font-weight:500;font-style:italic;opacity:.55;margin-top:-4px}

.stage{position:relative;display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin:18px 0 8px}
.ph{position:relative;border-radius:40% 55% 45% 60%/55% 45% 60% 40%;overflow:hidden;cursor:zoom-in;
  border:8px solid #fff;box-shadow:0 10px 0 rgba(0,0,0,.14);aspect-ratio:1;animation:bob 6s ease-in-out infinite;background:#e9f5e9}
.ph img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.ph:hover img{transform:scale(1.08)}
.ph.big{grid-column:span 3;grid-row:span 2;border-radius:46% 54% 50% 50%/52% 48% 52% 48%}
.ph:nth-child(2){animation-delay:-1s;grid-column:span 3}
.ph:nth-child(3){animation-delay:-2s;grid-column:span 3}
.ph:nth-child(n+4){grid-column:span 2;animation-delay:-3s}
.ph:nth-child(odd){--rot:-2deg}.ph:nth-child(even){--rot:2deg}
@keyframes bob{0%,100%{transform:translateY(0) rotate(var(--rot,0))}50%{transform:translateY(-8px) rotate(calc(var(--rot,0) * -1))}}

.sounds{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;margin:26px 0 6px}
.snd{width:clamp(92px,15vw,130px);height:clamp(92px,15vw,130px);border-radius:50%;color:#fff;
  font-size:clamp(30px,5vw,46px);font-weight:900;position:relative;
  box-shadow:0 9px 0 rgba(0,0,0,.22);transition:transform .12s}
.snd small{display:block;font-size:.42em;margin-top:-4px}
.snd:active{transform:translateY(6px);box-shadow:0 3px 0 rgba(0,0,0,.22)}
.snd.playing{animation:pulse .5s ease-in-out infinite alternate}
.snd.playing::after{content:"";position:absolute;inset:-10px;border-radius:50%;border:6px solid currentColor;
  color:inherit;opacity:.5;animation:ring 1s ease-out infinite}
@keyframes pulse{to{transform:scale(1.12) rotate(4deg)}}
@keyframes ring{from{transform:scale(.9);opacity:.7}to{transform:scale(1.35);opacity:0}}
.hint{text-align:center;font-weight:800;font-size:20px;opacity:.7}
.foot{text-align:center;margin-top:18px}
.foot button{background:none;text-decoration:underline;opacity:.6;font-size:14px}

dialog{border:0;border-radius:var(--r);padding:0;max-width:min(94vw,1000px);box-shadow:0 20px 60px rgba(0,0,0,.4)}
dialog::backdrop{background:rgba(20,40,20,.7)}
#zoom img{display:block;max-width:94vw;max-height:86vh}
.close{position:absolute;top:10px;right:10px;width:48px;height:48px;border-radius:50%;background:#fff;font-size:22px;
  box-shadow:0 4px 0 rgba(0,0,0,.2)}
.credits-body{padding:22px 24px;max-height:80vh;overflow:auto;font-size:13px}
.credits-body h3{margin:12px 0 4px}
.credits-body a{color:#1971c2}

@media (max-width:640px){
  .stage{grid-template-columns:repeat(2,1fr)}
  .ph.big{grid-column:span 2;grid-row:auto}
  .ph:nth-child(n+2){grid-column:span 1}
  .btn{min-width:54px;height:54px;font-size:24px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important}}
