*, *::before, *::after {
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}

html, body {
  margin: 0;
  height: 100%;
  overflow: hidden;
  background: #ffc4d6;
  color: var(--text);
  font-family: var(--font-body);
  font-weight: 600;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  overscroll-behavior: none;
}

body { position: fixed; inset: 0; }

#app { position: absolute; inset: 0; overflow: hidden; }

#scene {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  touch-action: none;
}

.hidden { display: none !important; }

button {
  font: inherit;
  color: inherit;
  border: 0;
  background: none;
  padding: 0;
  cursor: pointer;
}

.ic { width: 1em; height: 1em; fill: currentColor; flex: none; }

:focus-visible { outline: 3px dashed var(--pink); outline-offset: 3px; }

.sr-only {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Shared keyframes */
@keyframes popIn {
  from { opacity: 0; transform: translateY(26px) scale(0.7) rotate(var(--r, 0deg)); }
  to   { opacity: 1; transform: none; }
}
@keyframes fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes wiggle {
  0%, 100% { transform: rotate(0); }
  25% { transform: rotate(-9deg) scale(1.08); }
  60% { transform: rotate(7deg) scale(1.04); }
}
@keyframes bump {
  0% { transform: scale(1); }
  40% { transform: scale(1.45) rotate(-6deg); }
  100% { transform: scale(1); }
}
@keyframes breathe {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.045); }
}

.pop-in { animation: popIn 0.55s var(--ease-pop) both; animation-delay: var(--d, 0s); }
.breathe { animation: popIn 0.55s var(--ease-pop) both, breathe 1.9s ease-in-out 1s infinite; animation-delay: var(--d, 0s), 1s; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}
