:root {
  --brown-950: #261208;
  --brown-900: #3a1f0f;
  --brown-800: #573116;
  --brown-700: #74451f;
  --cream-50: #fffdf7;
  --cream-100: #fff6dc;
  --cream-200: #f8e6b2;
  --gold-300: #ffd969;
  --gold-400: #f7bd35;
  --gold-500: #ed9c12;
  --orange: #f36b2b;
  --green: #4fbe72;
  --red: #e84b3c;
  --sky: #bfe9ef;
  --ink: #3b2413;
  --shadow: 0 20px 55px rgba(74, 37, 12, .19);
}

* { box-sizing: border-box; }

html { min-width: 320px; }

body {
  min-height: 100vh;
  margin: 0;
  overflow-x: hidden;
  color: var(--ink);
  font-family: "Nunito", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background:
    radial-gradient(circle at 12% 14%, rgba(255, 217, 105, .86) 0 4%, transparent 4.2%),
    radial-gradient(circle at 88% 22%, rgba(79, 190, 114, .17) 0 7%, transparent 7.2%),
    linear-gradient(135deg, #fff8df 0%, #fffdf7 48%, #f8edc8 100%);
}

button, a { font: inherit; }
button { touch-action: manipulation; }

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

.pageGlow {
  position: fixed;
  z-index: -1;
  width: 420px;
  height: 420px;
  border-radius: 50%;
  filter: blur(10px);
  opacity: .55;
  pointer-events: none;
}

.pageGlowOne {
  top: 28%;
  left: -250px;
  background: rgba(247, 189, 53, .36);
}

.pageGlowTwo {
  right: -240px;
  bottom: -100px;
  background: rgba(79, 190, 114, .2);
}

.pageShell {
  width: min(1180px, calc(100% - 32px));
  margin: 0 auto;
  padding: 22px 0 30px;
}

.topBar {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 18px;
  min-height: 68px;
  padding: 12px 16px 12px 20px;
  color: #fff7e4;
  border: 2px solid rgba(74, 37, 12, .2);
  border-radius: 22px;
  background: linear-gradient(110deg, var(--brown-950), var(--brown-800));
  box-shadow: 0 13px 0 rgba(87, 49, 22, .12), var(--shadow);
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  justify-self: start;
  color: var(--gold-300);
  font-family: "Anta", sans-serif;
  font-size: clamp(17px, 2vw, 21px);
  letter-spacing: .02em;
  text-decoration: none;
}

.brandDot {
  width: 13px;
  height: 13px;
  border: 3px solid #fff4b2;
  border-radius: 50%;
  background: var(--gold-400);
  box-shadow: 0 0 18px var(--gold-400);
}

.kidsBadge {
  padding: 8px 15px;
  color: var(--brown-950);
  border-radius: 999px;
  background: var(--gold-300);
  font-family: "Anta", sans-serif;
  font-size: 11px;
  letter-spacing: .13em;
}

.homeButton {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  justify-self: end;
  padding: 10px 15px;
  color: #fff7e4;
  border: 1px solid rgba(255,255,255,.27);
  border-radius: 13px;
  font-weight: 900;
  text-decoration: none;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}

.homeButton:hover,
.homeButton:focus-visible {
  transform: translateY(-2px);
  border-color: var(--gold-300);
  background: rgba(255,255,255,.08);
}

.hero {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr);
  align-items: end;
  gap: 30px;
  padding: 58px 10px 30px;
}

.eyebrow,
.typePrompt,
.keyboardHeading,
.boneShelfLabel > span {
  margin: 0;
  color: var(--brown-700);
  font-family: "Anta", sans-serif;
  font-size: 11px;
  letter-spacing: .16em;
}

.hero h1 {
  max-width: 780px;
  margin: 8px 0 12px;
  color: var(--brown-950);
  font-family: "Anta", sans-serif;
  font-size: clamp(46px, 7.1vw, 86px);
  font-weight: 400;
  line-height: .93;
  letter-spacing: -.045em;
}

.hero h1 span {
  color: var(--orange);
  text-shadow: 4px 4px 0 rgba(237, 156, 18, .17);
}

.heroText {
  max-width: 680px;
  margin: 0;
  color: #72563f;
  font-size: clamp(16px, 2vw, 19px);
  font-weight: 700;
  line-height: 1.55;
}

.rules {
  display: grid;
  gap: 10px;
}

.rule {
  display: grid;
  grid-template-columns: 48px 1fr;
  align-items: center;
  gap: 12px;
  min-height: 67px;
  padding: 10px 14px;
  border: 2px solid rgba(87, 49, 22, .13);
  border-radius: 18px;
  background: rgba(255,255,255,.64);
  box-shadow: 0 7px 18px rgba(87, 49, 22, .08);
}

.ruleIcon {
  display: grid;
  place-items: center;
  width: 45px;
  height: 45px;
  border: 2px solid var(--brown-950);
  border-radius: 14px;
  color: var(--brown-950);
  font-family: "Anta", sans-serif;
  font-size: 17px;
  box-shadow: 3px 3px 0 var(--brown-950);
}

.ruleGood .ruleIcon { background: #8ee6aa; }
.ruleOops .ruleIcon { background: #ffad86; }
.ruleWin .ruleIcon { background: var(--gold-300); }

.rule span:last-child {
  display: grid;
  color: #7f624b;
  font-size: 13px;
  line-height: 1.25;
}

.rule strong {
  color: var(--ink);
  font-size: 15px;
}

.gameCard {
  position: relative;
  overflow: hidden;
  border: 3px solid var(--brown-950);
  border-radius: 28px;
  background: var(--cream-50);
  box-shadow: 10px 12px 0 var(--brown-950), var(--shadow);
}

.scoreBar {
  display: grid;
  grid-template-columns: repeat(4, minmax(110px, 1fr)) minmax(180px, 1.4fr);
  color: #fff7e4;
  border-bottom: 3px solid var(--brown-950);
  background: linear-gradient(105deg, var(--brown-950), var(--brown-800));
}

.scoreItem,
.missMeter {
  min-height: 78px;
  border-right: 1px solid rgba(255,255,255,.14);
}

.scoreItem {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 13px 16px;
}

.scoreIcon { font-size: 25px; }
.scoreCopy { display: grid; }
.scoreCopy small,
.missLabel {
  color: rgba(255,247,228,.65);
  font-family: "Anta", sans-serif;
  font-size: 9px;
  letter-spacing: .13em;
}

.scoreCopy strong {
  color: var(--gold-300);
  font-family: "Anta", sans-serif;
  font-size: 23px;
  line-height: 1.1;
}

.scoreCopy em {
  margin-left: 2px;
  font-family: "Nunito", sans-serif;
  font-size: 14px;
  font-style: normal;
}

.scoreBones .scoreCopy em {
  margin-left:4px;
  color:rgba(255,247,228,.62);
}

.missMeter {
  display: grid;
  grid-template-columns: 1fr auto;
  align-content: center;
  gap: 6px 10px;
  padding: 13px 18px;
  border-right: 0;
}

.missDots { display: flex; gap: 7px; }

.missDot {
  width: 17px;
  height: 17px;
  border: 2px solid rgba(255,255,255,.4);
  border-radius: 50%;
  background: rgba(255,255,255,.08);
  transition: transform .2s ease, background .2s ease, box-shadow .2s ease;
}

.missDot.isFilled {
  transform: scale(1.1);
  border-color: #ff8f78;
  background: var(--red);
  box-shadow: 0 0 13px rgba(232,75,60,.78);
}

.missDot.isPenalty { animation: missPenalty .55s ease; }

.missText {
  grid-column: 1 / -1;
  color: #fff7e4;
  font-size: 12px;
  font-weight: 900;
}

.playArea {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(330px, .85fr);
  min-height: 440px;
  outline: none;
}

.dogScene {
  position: relative;
  overflow: hidden;
  min-height: 440px;
  border-right: 3px solid var(--brown-950);
  background:
    linear-gradient(180deg, transparent 0 72%, rgba(255,255,255,.22) 72% 73%, transparent 73%),
    linear-gradient(180deg, var(--sky) 0 72%, #8fd180 72% 100%);
}

.dogScene::after {
  content: "";
  position: absolute;
  right: -10%;
  bottom: 3%;
  left: -10%;
  height: 19%;
  border-radius: 50% 50% 0 0;
  background: #70bd67;
  box-shadow: inset 0 12px 0 rgba(255,255,255,.12);
}

.sun {
  position: absolute;
  top: 28px;
  right: 34px;
  width: 82px;
  height: 82px;
  border: 4px solid rgba(87,49,22,.13);
  border-radius: 50%;
  background: var(--gold-300);
  box-shadow: 0 0 0 14px rgba(255,217,105,.24);
}

.cloud {
  position: absolute;
  width: 95px;
  height: 30px;
  border-radius: 999px;
  background: rgba(255,255,255,.86);
}

.cloud::before,
.cloud::after {
  content: "";
  position: absolute;
  bottom: 0;
  border-radius: 50%;
  background: inherit;
}

.cloud::before { left: 13px; width: 43px; height: 43px; }
.cloud::after { right: 12px; width: 34px; height: 34px; }
.cloudOne { top: 44px; left: 8%; }
.cloudTwo { top: 120px; left: 56%; transform: scale(.72); opacity: .72; }

.dogRunner {
  position: absolute;
  z-index: 3;
  left: 5%;
  bottom: 10%;
  width: min(70%, 410px);
  transform-origin: center bottom;
  transition:opacity .14s ease;
}

.dogRunner img {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border: 3px solid var(--brown-950);
  border-radius: 45% 45% 40% 44%;
  box-shadow: 6px 7px 0 rgba(58,31,15,.75);
}

.dogRunner.isCollecting { animation: dogCollect .62s cubic-bezier(.2,.85,.3,1); }
.dogRunner.isOops { animation: dogOops .36s ease; }
.dogScene.isEating .dogRunner,
.dogScene.isEating .waitingBone,
.dogScene.isEating .dogName { opacity:0; }

.eatCelebration {
  position:absolute;
  z-index:12;
  inset:0;
  display:grid;
  place-items:center;
  padding:22px;
  visibility:hidden;
  opacity:0;
  pointer-events:none;
}

.eatCelebration.isVisible {
  visibility:visible;
  animation:eatCelebrationPop .92s cubic-bezier(.2,.85,.3,1) both;
}

.eatCelebrationCard {
  position:relative;
  width:min(76%, 350px);
  overflow:hidden;
  border:3px solid var(--brown-950);
  border-radius:28px;
  background:var(--cream-100);
  box-shadow:9px 10px 0 rgba(58,31,15,.78), 0 18px 42px rgba(58,31,15,.28);
  transform:rotate(-2deg);
}

.eatCelebrationCard img {
  display:block;
  width:100%;
  aspect-ratio:1;
  object-fit:cover;
}

.eatCelebrationCard span {
  position:absolute;
  right:12px;
  bottom:12px;
  padding:8px 11px;
  color:var(--brown-950);
  border:2px solid var(--brown-950);
  border-radius:999px;
  background:var(--gold-300);
  box-shadow:3px 4px 0 var(--brown-950);
  font-family:"Anta", sans-serif;
  font-size:10px;
  letter-spacing:.08em;
}

.waitingBone {
  position: absolute;
  z-index: 4;
  right: 7%;
  bottom: 18%;
  display: grid;
  place-items: center;
  width: 68px;
  height: 68px;
  border: 3px solid var(--brown-950);
  border-radius: 50%;
  background: var(--cream-50);
  box-shadow: 5px 6px 0 rgba(58,31,15,.75);
  font-size: 34px;
  animation: boneWait 1.4s ease-in-out infinite;
}

.flyingBone {
  position: absolute;
  z-index: 8;
  right: 9%;
  bottom: 22%;
  font-size: 38px;
  pointer-events: none;
  animation: boneFly .7s ease-in forwards;
}

.dogName {
  position: absolute;
  z-index: 9;
  bottom: 18px;
  left: 18px;
  padding: 8px 13px;
  color: var(--brown-950);
  border: 2px solid var(--brown-950);
  border-radius: 999px;
  background: var(--gold-300);
  font-family: "Anta", sans-serif;
  font-size: 11px;
  letter-spacing: .12em;
}

.grass {
  position: absolute;
  z-index: 2;
  bottom: 15%;
  width: 4px;
  height: 30px;
  background: #3e913e;
  transform: rotate(-22deg);
}

.grass::before,
.grass::after {
  content: "";
  position: absolute;
  bottom: 0;
  width: 4px;
  height: 24px;
  background: inherit;
  transform-origin: bottom;
}

.grass::before { transform: rotate(45deg); }
.grass::after { transform: rotate(-35deg); }
.grassOne { left: 48%; }
.grassTwo { right: 21%; transform: scale(.8) rotate(20deg); }

.typingPanel {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 30px;
  text-align: center;
  background:
    linear-gradient(rgba(87,49,22,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(87,49,22,.055) 1px, transparent 1px),
    var(--cream-100);
  background-size: 28px 28px;
}

.typePrompt { margin-bottom: 14px; }

.letterFrame {
  position: relative;
  display: grid;
  place-items: center;
  width: clamp(150px, 19vw, 205px);
  aspect-ratio: 1;
  border: 4px solid var(--brown-950);
  border-radius: 31px;
  background: var(--gold-300);
  box-shadow: 10px 11px 0 var(--brown-950), inset 0 0 0 8px rgba(255,255,255,.26);
  transform: rotate(-2deg);
  transition: background .18s ease, transform .18s ease;
}

.letterFrame::before {
  content: "TYPE";
  position: absolute;
  top: 10px;
  left: 13px;
  color: rgba(58,31,15,.54);
  font-family: "Anta", sans-serif;
  font-size: 8px;
  letter-spacing: .14em;
}

.targetLetter {
  color: var(--brown-950);
  font-family: "Anta", sans-serif;
  font-size: clamp(84px, 12vw, 132px);
  line-height: 1;
  text-shadow: 3px 3px 0 rgba(255,255,255,.55);
}

.letterFrame.isCorrect {
  background: #8ee6aa;
  animation: correctPop .42s ease;
}

.letterFrame.isWrong {
  background: #ffad86;
  animation: wrongShake .34s ease;
}

.feedback {
  min-height: 27px;
  margin: 21px 0 15px;
  color: #76543a;
  font-size: 16px;
  font-weight: 900;
}

.feedback.good { color: #237e42; }
.feedback.bad { color: #bc382d; }

.gameControls {
  display: flex;
  gap: 10px;
  width: min(100%, 320px);
}

.primaryButton,
.resetButton {
  min-height: 50px;
  border: 2px solid var(--brown-950);
  border-radius: 14px;
  color: var(--brown-950);
  font-family: "Anta", sans-serif;
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
  box-shadow: 4px 5px 0 var(--brown-950);
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}

.primaryButton {
  display: flex;
  flex: 1;
  align-items: center;
  justify-content: space-between;
  padding: 0 18px;
  background: var(--gold-300);
}

.resetButton { padding: 0 15px; background: var(--cream-50); }

.primaryButton:hover,
.resetButton:hover,
.primaryButton:focus-visible,
.resetButton:focus-visible,
.keyButton:focus-visible {
  transform: translateY(-2px);
  outline: 3px solid rgba(243,107,43,.25);
  outline-offset: 3px;
}

.primaryButton:active,
.resetButton:active,
.keyButton:active {
  transform: translate(3px, 3px);
  box-shadow: 1px 2px 0 var(--brown-950);
}

.keyboardSection {
  padding: 24px 28px 27px;
  border-top: 3px solid var(--brown-950);
  background: #ffe9a5;
}

.keyboardHeading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 15px;
}

.playingStatus {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: #725129;
  font-family: "Nunito", sans-serif;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
}

.playingStatus i {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #aa8e6b;
}

.playingStatus.isPlaying i {
  background: var(--green);
  box-shadow: 0 0 11px var(--green);
}

.playingStatus.isWinner i {
  background:var(--gold-500);
  box-shadow:0 0 13px var(--gold-500);
}

.keyboard { display: grid; gap: 9px; }
.keyRow { display: flex; justify-content: center; gap: 8px; }

.keyButton {
  display: grid;
  place-items: center;
  width: clamp(32px, 6.25vw, 65px);
  height: clamp(42px, 5.5vw, 57px);
  padding: 0;
  border: 2px solid var(--brown-950);
  border-radius: 11px;
  color: var(--brown-950);
  background: var(--cream-50);
  box-shadow: 3px 4px 0 var(--brown-950);
  font-family: "Anta", sans-serif;
  font-size: clamp(13px, 2vw, 19px);
  cursor: pointer;
  transition: transform .12s ease, background .12s ease, box-shadow .12s ease;
}

.keyButton:hover { background: var(--gold-300); transform: translateY(-2px); }
.keyButton.isPressed { background: var(--gold-400); transform: translate(2px, 2px); box-shadow: 1px 2px 0 var(--brown-950); }
.keyButton:disabled { cursor: not-allowed; opacity: .62; }

.boneShelf {
  display: grid;
  grid-template-columns: minmax(180px, .32fr) 1fr;
  align-items: center;
  min-height: 92px;
  padding: 17px 27px;
  color: #fff7e4;
  border-top: 3px solid var(--brown-950);
  background: var(--brown-900);
}

.boneShelfLabel { display: grid; gap: 4px; }
.boneShelfLabel > span { color: var(--gold-300); }
.boneShelfLabel small { color: rgba(255,247,228,.68); font-weight: 800; }

.boneCollection {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-height: 50px;
  gap: 1px;
  overflow: hidden;
  font-size: 31px;
}

.collectedBone { display: inline-block; animation: shelfPop .36s ease both; }
.emptyBag { color: rgba(255,247,228,.45); font-size: 13px; font-weight: 900; }
.extraBones { margin-left: 8px; color: var(--gold-300); font-family: "Anta", sans-serif; font-size: 15px; }

body.victoryOpen {
  overflow:hidden;
}

.victoryDialog {
  width:min(920px, calc(100% - 32px));
  max-width:none;
  max-height:calc(100dvh - 32px);
  margin:auto;
  padding:0;
  overflow:auto;
  color:var(--ink);
  border:3px solid var(--brown-950);
  border-radius:28px;
  background:var(--cream-50);
  box-shadow:12px 14px 0 var(--brown-950), 0 30px 90px rgba(38,18,8,.48);
}

.victoryDialog[open] {
  display:grid;
  grid-template-columns:minmax(0, 1.08fr) minmax(360px, .92fr);
  animation:victoryIn .42s cubic-bezier(.2,.85,.3,1) both;
}

.victoryDialog::backdrop {
  background:rgba(38,18,8,.76);
  backdrop-filter:blur(8px);
  animation:backdropIn .28s ease both;
}

.victoryClose {
  position:absolute;
  z-index:4;
  top:14px;
  right:14px;
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  padding:0;
  color:var(--brown-950);
  border:2px solid var(--brown-950);
  border-radius:50%;
  background:rgba(255,253,247,.92);
  box-shadow:3px 4px 0 var(--brown-950);
  font-size:27px;
  font-weight:900;
  line-height:1;
  cursor:pointer;
}

.victoryArt {
  min-height:500px;
  overflow:hidden;
  border-right:3px solid var(--brown-950);
  background:var(--cream-100);
}

.victoryArt img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}

.victoryContent {
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:48px 34px 34px;
  background:
    linear-gradient(rgba(87,49,22,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(87,49,22,.05) 1px, transparent 1px),
    var(--cream-100);
  background-size:26px 26px;
}

.victoryEyebrow {
  margin:0 0 8px;
  color:var(--orange);
  font-family:"Anta", sans-serif;
  font-size:10px;
  letter-spacing:.16em;
}

.victoryContent h2 {
  margin:0;
  color:var(--brown-950);
  font-family:"Anta", sans-serif;
  font-size:clamp(46px, 7vw, 72px);
  font-weight:400;
  line-height:.95;
  text-transform:uppercase;
  text-shadow:4px 4px 0 var(--gold-300);
}

.victoryContent > p:not(.victoryEyebrow) {
  margin:18px 0 22px;
  color:#72563f;
  font-size:16px;
  font-weight:800;
  line-height:1.5;
}

.victoryStats {
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:7px;
}

.victoryStats > div {
  display:grid;
  gap:3px;
  min-width:0;
  padding:11px 9px;
  border:2px solid rgba(58,31,15,.16);
  border-radius:13px;
  background:rgba(255,255,255,.67);
  text-align:center;
}

.victoryStats small {
  color:#8a684b;
  font-family:"Anta", sans-serif;
  font-size:7px;
  letter-spacing:.09em;
}

.victoryStats strong {
  color:var(--brown-950);
  font-family:"Anta", sans-serif;
  font-size:17px;
}

.victoryActions {
  display:grid;
  gap:10px;
  margin-top:24px;
}

.victoryPlayAgain,
.victoryHome {
  min-height:52px;
  border:2px solid var(--brown-950);
  border-radius:14px;
  font-family:"Anta", sans-serif;
  font-size:11px;
  font-weight:900;
  cursor:pointer;
}

.victoryPlayAgain {
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 18px;
  color:var(--brown-950);
  background:var(--gold-300);
  box-shadow:4px 5px 0 var(--brown-950);
}

.victoryHome {
  display:grid;
  place-items:center;
  color:var(--brown-950);
  background:var(--cream-50);
  text-decoration:none;
}

.victoryClose:hover,
.victoryClose:focus-visible,
.victoryPlayAgain:hover,
.victoryPlayAgain:focus-visible,
.victoryHome:hover,
.victoryHome:focus-visible {
  outline:3px solid rgba(243,107,43,.3);
  outline-offset:3px;
}

footer {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 7px;
  padding: 32px 10px 5px;
  color: #795b42;
  font-size: 12px;
  font-weight: 800;
}

footer strong { color: var(--gold-500); font-family: "Anta", sans-serif; }

.footerMark {
  width: 9px;
  height: 9px;
  background: var(--gold-400);
  box-shadow: 3px 3px 0 var(--brown-950);
}

@keyframes dogCollect {
  0%, 100% { transform: translateX(0) rotate(0); }
  45% { transform: translateX(12%) translateY(-12px) rotate(2deg); }
  70% { transform: translateX(8%) translateY(0) rotate(-1deg); }
}

@keyframes dogOops {
  0%, 100% { transform: rotate(0); }
  33% { transform: rotate(-3deg); }
  66% { transform: rotate(3deg); }
}

@keyframes eatCelebrationPop {
  0% { opacity:0; transform:translateY(20px) scale(.72) rotate(-3deg); }
  16% { opacity:1; transform:translateY(0) scale(1.04) rotate(1deg); }
  26%, 74% { opacity:1; transform:translateY(0) scale(1) rotate(0); }
  100% { opacity:0; transform:translateY(-12px) scale(.94) rotate(1deg); }
}

@keyframes boneWait {
  0%, 100% { transform: translateY(0) rotate(-8deg); }
  50% { transform: translateY(-9px) rotate(8deg); }
}

@keyframes boneFly {
  0% { transform: translate(0,0) rotate(0) scale(1); opacity: 1; }
  70% { opacity: 1; }
  100% { transform: translate(-220px,-70px) rotate(-160deg) scale(.45); opacity: 0; }
}

@keyframes correctPop {
  0%, 100% { transform: rotate(-2deg) scale(1); }
  55% { transform: rotate(1deg) scale(1.07); }
}

@keyframes wrongShake {
  0%, 100% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(-8px) rotate(-3deg); }
  75% { transform: translateX(8px) rotate(-1deg); }
}

@keyframes shelfPop {
  0% { transform: translateY(-10px) scale(.3) rotate(-20deg); opacity: 0; }
  70% { transform: translateY(2px) scale(1.15) rotate(6deg); }
  100% { transform: translateY(0) scale(1) rotate(0); opacity: 1; }
}

@keyframes missPenalty {
  0%, 100% { transform: scale(1.1); }
  45% { transform: scale(1.45); box-shadow: 0 0 22px rgba(255,143,120,.95); }
}

@keyframes victoryIn {
  0% { transform:translateY(30px) scale(.9); opacity:0; }
  65% { transform:translateY(-4px) scale(1.015); opacity:1; }
  100% { transform:translateY(0) scale(1); opacity:1; }
}

@keyframes backdropIn {
  from { opacity:0; }
  to { opacity:1; }
}

@media (max-width: 900px) {
  .hero { grid-template-columns: 1fr; padding-top: 45px; }
  .rules { grid-template-columns: 1fr 1fr; }
  .ruleWin { grid-column:1 / -1; }
  .scoreBar { grid-template-columns: repeat(4, 1fr); }
  .missMeter { grid-column: 1 / -1; border-top: 1px solid rgba(255,255,255,.14); }
  .playArea { grid-template-columns: 1fr; }
  .dogScene { min-height: 380px; border-right: 0; border-bottom: 3px solid var(--brown-950); }
  .dogRunner { width: min(58%, 350px); }
  .typingPanel { min-height: 390px; }
}

@media (max-width: 650px) {
  .pageShell { width: min(100% - 20px, 1180px); padding-top: 10px; }
  .topBar { grid-template-columns: 1fr auto; padding-left: 14px; border-radius: 17px; }
  .kidsBadge { display: none; }
  .homeButton { padding: 9px 10px; font-size: 12px; }
  .hero { gap: 22px; padding: 38px 3px 23px; }
  .hero h1 { font-size: clamp(42px, 15vw, 66px); }
  .rules { grid-template-columns: 1fr; }
  .ruleWin { grid-column:auto; }
  .gameCard { border-radius: 20px; box-shadow: 6px 7px 0 var(--brown-950), var(--shadow); }
  .scoreBar { grid-template-columns: repeat(2, 1fr); }
  .scoreItem { min-height: 68px; padding: 10px 12px; }
  .scoreAccuracy { border-top: 1px solid rgba(255,255,255,.14); }
  .scoreCopy strong { font-size: 20px; }
  .missMeter { min-height: 65px; }
  .dogScene { min-height: 310px; }
  .dogRunner { left: 3%; width: min(68%, 290px); }
  .eatCelebration { padding:16px; }
  .eatCelebrationCard { width:min(72%, 245px); border-radius:20px; box-shadow:6px 7px 0 rgba(58,31,15,.78); }
  .eatCelebrationCard span { right:8px; bottom:8px; padding:6px 8px; font-size:8px; }
  .waitingBone { right: 5%; width: 54px; height: 54px; font-size: 27px; }
  .typingPanel { min-height: 355px; padding: 27px 16px; }
  .letterFrame { width: 165px; }
  .keyboardSection { padding: 20px 5px 23px; }
  .keyboardHeading { padding: 0 6px; font-size: 8px; letter-spacing: .1em; }
  .keyboard { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 7px 4px; }
  .keyRow { display: contents; }
  .keyButton { width: 100%; height: 46px; border-radius: 8px; box-shadow: 2px 3px 0 var(--brown-950); }
  .boneShelf { grid-template-columns: 1fr; gap: 12px; padding: 17px; }
  .boneCollection { justify-content: flex-start; font-size: 27px; }

  .victoryDialog {
    width:min(100% - 20px, 520px);
    max-height:calc(100dvh - 20px);
    border-radius:20px;
    box-shadow:6px 7px 0 var(--brown-950), 0 20px 60px rgba(38,18,8,.45);
  }

  .victoryDialog[open] {
    grid-template-columns:1fr;
  }

  .victoryArt {
    min-height:0;
    height:min(42dvh, 310px);
    border-right:0;
    border-bottom:3px solid var(--brown-950);
  }

  .victoryContent {
    padding:27px 20px 22px;
  }

  .victoryContent h2 {
    font-size:48px;
  }

  .victoryContent > p:not(.victoryEyebrow) {
    margin:13px 0 17px;
    font-size:14px;
  }

  .victoryStats {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }

  .victoryStats > div:first-child {
    grid-column:1 / -1;
  }

  .victoryActions {
    margin-top:17px;
  }
}

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

  .eatCelebration.isVisible {
    opacity:1;
    animation:none !important;
  }
}
