:root {
  color-scheme: light;
  --ink: #142723;
  --ink-soft: #536862;
  --forest: #173c34;
  --forest-2: #245d50;
  --mint: #8ed4bd;
  --lime: #c8ef77;
  --cream: #fbf8ef;
  --paper: #ffffff;
  --line: rgba(20,39,35,.12);
  --danger: #bd4253;
  --amber: #df9a37;
  font-family: Inter, "Segoe UI", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { min-width: 20rem; background: #dfe9e3; }
body {
  min-height: 100vh;
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(circle at 8% 8%, rgba(200,239,119,.32), transparent 28rem),
    radial-gradient(circle at 94% 80%, rgba(85,133,121,.24), transparent 34rem),
    #edf2ee;
}
button, input { font: inherit; }
button { -webkit-tap-highlight-color: transparent; }
.hidden { display: none !important; }

.game-shell {
  min-height: 100vh;
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 1rem;
  padding: clamp(.8rem, 2.2vw, 1.6rem);
}

.topbar {
  width: min(86rem, 100%);
  margin: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.brand {
  display: inline-flex;
  align-items: center;
  gap: .72rem;
  color: var(--ink);
  text-decoration: none;
  font-size: 1.16rem;
  font-weight: 850;
  letter-spacing: -.035em;
}
.brand-mark {
  display: grid;
  place-items: center;
  width: 2.65rem;
  height: 2.65rem;
  border-radius: .85rem .85rem 1.25rem .85rem;
  color: white;
  background: linear-gradient(145deg, var(--forest-2), var(--forest));
  box-shadow: 0 .55rem 1.4rem rgba(23,60,52,.22);
}
.player-summary { display: flex; align-items: center; gap: .65rem; }
.online, .wallet, .logout, .delete-account {
  min-height: 2.55rem;
  display: inline-flex;
  align-items: center;
  gap: .48rem;
  padding: .5rem .82rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: .88rem;
  font-weight: 760;
}
.online, .logout, .delete-account { color: var(--ink); background: rgba(255,255,255,.78); }
.online span {
  width: .5rem;
  height: .5rem;
  border-radius: 50%;
  background: #54b83b;
  box-shadow: 0 0 0 .22rem rgba(84,184,59,.15);
}
.wallet { border: 0; color: var(--forest); background: var(--lime); }
.logout, .delete-account { cursor: pointer; }
.logout:hover { background: white; }
.delete-account { border-color: #efc4c4; color: #a6202d; background: #fff7f7; }
.delete-account:hover { border-color: #d94855; background: #fff0f1; }

.auth-shell {
  width: min(64rem, 100%);
  margin: auto;
  display: grid;
  grid-template-columns: 1.12fr .88fr;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 2rem;
  background: rgba(255,255,255,.88);
  box-shadow: 0 2rem 6rem rgba(24,61,53,.13);
}
.auth-art {
  position: relative;
  z-index: 0;
  display: flex;
  min-height: 36rem;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2rem clamp(1.5rem,5vw,3.5rem);
  text-align: center;
  background: linear-gradient(145deg,#dcebe3,#f8f5e9);
}
.auth-art .glow {
  position: absolute;
  z-index: -1;
  width: 18rem;
  height: 18rem;
  border-radius: 50%;
  background: rgba(200,239,119,.55);
  filter: blur(2.5rem);
}
.auth-art img {
  width: min(14rem,58%);
  height: 17rem;
  object-fit: contain;
  filter: drop-shadow(0 1.25rem 1rem rgba(23,60,52,.2));
}
.eyebrow {
  margin: 1rem 0 .55rem;
  color: var(--forest-2);
  font-size: .78rem;
  font-weight: 900;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.auth-art h1 {
  max-width: 30rem;
  margin: 0;
  font-size: clamp(2.15rem,5vw,3.7rem);
  line-height: .98;
  letter-spacing: -.065em;
}
.auth-art > p:last-child {
  max-width: 27rem;
  margin: 1rem 0 0;
  color: var(--ink-soft);
  font-size: 1rem;
  line-height: 1.55;
}
.auth-card { padding: clamp(1.5rem,4vw,2.6rem); background: var(--paper); }
.auth-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .3rem;
  padding: .3rem;
  border-radius: 1rem;
  background: #e9efeb;
}
.auth-tabs button {
  min-height: 2.75rem;
  border: 0;
  border-radius: .75rem;
  color: var(--ink-soft);
  background: transparent;
  font-weight: 820;
  cursor: pointer;
}
.auth-tabs button[aria-selected="true"] {
  color: var(--forest);
  background: white;
  box-shadow: 0 .25rem .8rem rgba(23,60,52,.09);
}
.auth-card form { display: grid; gap: 1rem; margin-top: 1.5rem; }
.auth-card h2 { margin: 0 0 .3rem; font-size: 1.3rem; }
.auth-card label { display: grid; gap: .42rem; font-size: .9rem; font-weight: 780; }
.auth-card input {
  width: 100%;
  min-height: 3.1rem;
  padding: .72rem .85rem;
  border: 1px solid #ced9d3;
  border-radius: .8rem;
  color: var(--ink);
  background: white;
}
.auth-card input:focus { outline: .18rem solid rgba(36,93,80,.16); border-color: var(--forest-2); }
.auth-card small { color: var(--ink-soft); line-height: 1.4; }
.primary-button {
  min-height: 3.3rem;
  padding: .8rem 1.4rem;
  border: 0;
  border-radius: .9rem;
  color: white;
  background: linear-gradient(145deg,var(--forest-2),var(--forest));
  box-shadow: 0 .7rem 1.4rem rgba(23,60,52,.2);
  font-weight: 850;
  cursor: pointer;
}
.primary-button:hover { filter: brightness(1.08); }
.primary-button:disabled { cursor: wait; opacity: .62; }
.auth-feedback { min-height: 1.4rem; margin: 1rem 0 0; color: var(--danger); font-size: .86rem; font-weight: 760; text-align: center; }

.auth-shell.choosing-pet {
  width: min(88rem,100%);
  grid-template-columns: minmax(20rem,.72fr) minmax(34rem,1.28fr);
}
.choosing-pet .auth-art img { width: min(18rem,70%); height: 20rem; }
body.adoption-active {
  height: 100dvh;
  min-height: 100dvh;
  overflow: hidden;
}
body.adoption-active .game-shell {
  height: 100dvh;
  min-height: 0;
  grid-template-rows: auto minmax(0,1fr);
  overflow: hidden;
}
body.adoption-active footer { display: none; }
body.adoption-active .auth-shell.choosing-pet {
  height: 100%;
  min-height: 0;
  margin: 0 auto;
  align-self: stretch;
}
body.adoption-active .choosing-pet .auth-art {
  min-height: 0;
  overflow: hidden;
}
body.adoption-active .choosing-pet .auth-card {
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}
.pet-picker { min-width: 0; margin: 0; padding: 0; border: 0; }
.pet-picker legend { margin-bottom: .35rem; font-size: .94rem; font-weight: 850; }
.pet-picker > small { display: block; margin-bottom: .7rem; }
.pet-options { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .6rem; }
.pet-option { display: block !important; min-width: 0; cursor: pointer; }
.pet-option input {
  position: absolute;
  width: 1px;
  min-height: 1px;
  opacity: 0;
  pointer-events: none;
}
.pet-option > span {
  height: 100%;
  display: grid;
  grid-template-rows: 6.2rem auto auto;
  align-items: center;
  justify-items: center;
  gap: .22rem;
  padding: .45rem;
  border: 2px solid #d9e2dd;
  border-radius: 1rem;
  background: white;
  text-align: center;
  transition: transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.pet-option img { width: 100%; height: 6.2rem; object-fit: contain; }
.pet-option strong { font-size: .84rem; line-height: 1.1; }
.pet-option small { min-height: 2.1em; font-size: .75rem; line-height: 1.05; }
.pet-option:hover > span { transform: translateY(-.15rem); border-color: #93b8a8; }
.pet-option input:checked + span {
  border-color: var(--forest-2);
  background: #f1f9e6;
  box-shadow: 0 0 0 .2rem rgba(36,93,80,.13),0 .6rem 1.2rem rgba(23,60,52,.12);
}
.pet-option input:focus-visible + span { outline: .2rem solid #b9ef55; outline-offset: .12rem; }
.pet-room {
  width: min(86rem,100%);
  min-height: min(47rem,calc(100vh - 7.5rem));
  margin: auto;
  display: grid;
  grid-template-columns: minmax(0,1.6fr) minmax(22rem,.68fr);
  gap: 1rem;
}
.room-scene, .care-panel {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 1.55rem;
  box-shadow: 0 1.5rem 4rem rgba(23,60,52,.11);
}
.room-scene {
  position: relative;
  min-height: 41rem;
  display: grid;
  grid-template-rows: auto auto minmax(24rem,1fr) auto;
  padding: clamp(1rem,2.2vw,1.55rem);
  isolation: isolate;
  background: #173e2b;
}
.room-scene::before {
  content: "";
  position: absolute;
  inset: -1.5rem;
  z-index: 0;
  background: url('/assets/images/rooms/jungle-home-v1.png') center center / cover no-repeat;
  transform: scale(1.04);
  animation: jungle-breathe 18s ease-in-out infinite alternate;
  pointer-events: none;
  will-change: transform,background-position;
}
.room-scene::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg,rgba(5,31,18,.35) 0%,transparent 30%,transparent 70%,rgba(4,28,17,.28) 100%);
  pointer-events: none;
}
.room-scene > :not(.jungle-ambient) { position: relative; z-index: 2; }
.jungle-ambient {
  position: absolute !important;
  inset: 0;
  z-index: 1 !important;
  overflow: hidden;
  pointer-events: none;
}
.jungle-ambient span {
  position: absolute;
  width: .48rem;
  height: .48rem;
  border-radius: 50%;
  background: #fff5a6;
  box-shadow: 0 0 .6rem .2rem rgba(220,255,118,.85);
  animation: firefly-drift 6s ease-in-out infinite alternate,firefly-glow 1.8s ease-in-out infinite alternate;
}
.jungle-ambient span:nth-child(1) { left: 7%; top: 32%; animation-delay: -1s; }
.jungle-ambient span:nth-child(2) { left: 18%; top: 68%; animation-delay: -3.2s; }
.jungle-ambient span:nth-child(3) { left: 38%; top: 25%; animation-delay: -4.4s; }
.jungle-ambient span:nth-child(4) { left: 54%; top: 62%; animation-delay: -2.1s; }
.jungle-ambient span:nth-child(5) { left: 67%; top: 35%; animation-delay: -5.3s; }
.jungle-ambient span:nth-child(6) { left: 79%; top: 72%; animation-delay: -.5s; }
.jungle-ambient span:nth-child(7) { left: 89%; top: 20%; animation-delay: -2.8s; }
.jungle-ambient span:nth-child(8) { left: 93%; top: 54%; animation-delay: -4.9s; }
@keyframes jungle-breathe {
  0% { transform: scale(1.04) translate3d(-.3%,0,0); background-position: 49% 50%; }
  100% { transform: scale(1.085) translate3d(.6%,-.5%,0); background-position: 52% 48%; }
}
@keyframes firefly-drift {
  0% { transform: translate3d(-.4rem,.6rem,0); }
  100% { transform: translate3d(1.2rem,-1.5rem,0); }
}
@keyframes firefly-glow {
  0% { opacity: .25; }
  100% { opacity: 1; }
}
.scene-header {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 1rem;
  margin: -.25rem -.25rem 0;
  padding: .8rem;
  border: 1px solid rgba(255,255,255,.45);
  border-radius: 1rem;
  background: rgba(247,252,245,.7);
  box-shadow: 0 .75rem 2rem rgba(5,30,18,.14);
  backdrop-filter: blur(.6rem);
}
.scene-header h1 {
  margin: .1rem 0 .35rem;
  font-size: clamp(2rem,4vw,3.2rem);
  line-height: 1;
  letter-spacing: -.06em;
}
.stage-kicker {
  color: var(--ink-soft);
  font-size: .76rem;
  font-weight: 850;
  letter-spacing: .11em;
  text-transform: uppercase;
}
.mood { display: inline-flex; align-items: center; gap: .45rem; color: var(--ink-soft); font-size: .9rem; font-weight: 720; }
.mood i { width: .56rem; height: .56rem; border-radius: 50%; background: #52b83b; box-shadow: 0 0 0 .22rem rgba(82,184,59,.14); }
.pet-age {
  display: flex;
  align-items: center;
  width: fit-content;
  margin-top: .42rem;
  padding: .34rem .58rem;
  border: 1px solid rgba(23,60,52,.13);
  border-radius: 999px;
  color: var(--forest);
  background: rgba(255,255,255,.68);
  font-size: .76rem;
  font-weight: 820;
  font-variant-numeric: tabular-nums;
}
.scene-clock {
  min-width: 5.5rem;
  display: grid;
  gap: .1rem;
  padding: .65rem .85rem;
  border: 1px solid rgba(255,255,255,.6);
  border-radius: .9rem;
  background: rgba(255,255,255,.56);
  text-align: right;
  backdrop-filter: blur(.5rem);
}
.scene-clock span { color: var(--ink-soft); font-size: .72rem; font-weight: 700; text-transform: uppercase; }
.scene-clock strong { font-size: 1.15rem; }

.speech-wrap { position: relative; z-index: 4; display: flex; justify-content: center; min-height: 4.5rem; }
.speech {
  position: relative;
  max-width: 29rem;
  margin: .2rem 0 0;
  align-self: start;
  padding: .78rem 1rem;
  border: 1px solid rgba(255,255,255,.75);
  border-radius: 1rem 1rem .25rem 1rem;
  color: var(--forest);
  background: rgba(255,255,255,.9);
  box-shadow: 0 .7rem 1.8rem rgba(23,60,52,.1);
  font-size: 1rem;
  font-weight: 780;
  text-align: center;
}
.speech::after {
  content: "";
  position: absolute;
  right: 1.1rem;
  bottom: -.55rem;
  border-width: .6rem .12rem 0 .75rem;
  border-style: solid;
  border-color: rgba(255,255,255,.9) transparent transparent;
}
.speech.speak { animation: speech-pop .36s ease; }

.pet-viewport {
  --pet-turn: 0deg;
  --pet-zoom: .78;
  position: relative;
  min-height: 24rem;
  margin: -2rem -1.55rem -1rem;
  overflow: hidden;
  cursor: grab;
  touch-action: none;
}
.pet-viewport:active { cursor: grabbing; }
#pet-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  opacity: 0;
  outline: none;
  transition: opacity .45s ease;
  z-index: 1;
}
#pet-canvas:focus-visible { box-shadow: inset 0 0 0 .2rem rgba(85,43,211,.45); }
.pet-fallback {
  position: absolute;
  inset: 50% auto auto 50%;
  width: min(20rem,55%);
  height: 22rem;
  object-fit: contain;
  z-index: 2;
  transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) scale(var(--pet-zoom));
  filter: drop-shadow(0 1.2rem 1rem rgba(23,60,52,.18));
  animation: fallback-idle 2.4s ease-in-out infinite;
  pointer-events: none;
}
.pet-viewport.three-ready #pet-canvas { opacity: 1; }
.pet-viewport.three-ready.pet-is-egg .pet-fallback { display: none; }
.pet-viewport.pet-is-baby .pet-fallback { display: block; }
.pet-viewport.pet-is-baby #pet-canvas { opacity: 1; }
.pet-viewport.pet-is-baby .scene-badge::before { content: "Pet escolhido · "; font-weight: 850; }
.pet-viewport.pet-action-feed .pet-fallback { animation: exact-feed .7s ease-in-out infinite; }
.pet-viewport.pet-action-bathe .pet-fallback,
.pet-viewport.pet-action-clean .pet-fallback { animation: exact-bathe .65s ease-in-out infinite; }
.pet-viewport.pet-action-sleep .pet-fallback,
.pet-viewport.pet-action-rest .pet-fallback { animation: exact-sleep 2.2s ease-in-out infinite; }
.pet-viewport.pet-action-play .pet-fallback,
.pet-viewport.pet-action-jump .pet-fallback { animation: exact-jump .85s ease-in-out infinite; }
.pet-viewport.pet-action-walk .pet-fallback { animation: exact-walk 1.35s ease-in-out infinite; }
.pet-viewport.pet-action-toilet-pee .pet-fallback,
.pet-viewport.pet-action-toilet-poop .pet-fallback { animation: exact-squat .8s ease-in-out infinite; }
.pet-viewport.pet-action-talk .pet-fallback,
.pet-viewport.pet-action-sing .pet-fallback,
.pet-viewport.pet-action-wave .pet-fallback { animation: exact-talk .55s ease-in-out infinite; }
.pet-viewport.pet-action-warm .pet-fallback { animation: exact-warm 1.1s ease-in-out infinite; }
/* Pet 2D articulado: reutiliza exatamente a arte escolhida em camadas móveis. */
.pet-rig {
  position: absolute;
  inset: 50% auto auto 50%;
  z-index: 2;
  width: min(24rem,72%);
  height: 23rem;
  transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) scale(var(--pet-zoom));
  transform-style: preserve-3d;
  filter: drop-shadow(0 1.2rem 1rem rgba(23,60,52,.2));
  pointer-events: none;
  animation: rig-idle 2.8s ease-in-out infinite;
  transition: transform .3s ease, filter .3s ease;
}
.pet-rig .pet-fallback,
.pet-rig-part {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  transform: none;
  transform-style: preserve-3d;
  filter: none;
  animation: none;
  pointer-events: none;
  user-select: none;
  -webkit-user-drag: none;
  will-change: transform;
}
.pet-rig-part { display: none; }
.pet-viewport.pet-is-baby .pet-rig { display: block; }
.pet-viewport.pet-is-baby .pet-rig-source { display: none; }
.pet-viewport.pet-is-baby .pet-rig-part { display: block; }
.pet-viewport.pet-is-egg .pet-rig-source { display: block; }
.pet-viewport.pet-is-egg .pet-rig-part { display: none; }
.pet-viewport.three-ready.pet-is-egg .pet-rig { display: none; }
.pet-viewport.three-ready.pet-is-baby .pet-rig { display: none; }
.pet-part-head {
  clip-path: polygon(0 0,100% 0,100% 48%,0 48%);
  transform-origin: 50% 45%;
  animation: part-head-alive 3.4s ease-in-out infinite;
}
.pet-part-torso {
  clip-path: polygon(0 46%,100% 46%,100% 76%,0 76%);
  transform-origin: 50% 62%;
  animation: part-breathe 2.2s ease-in-out infinite;
}
.pet-part-left {
  clip-path: polygon(0 74%,51% 74%,51% 100%,0 100%);
  transform-origin: 38% 75%;
  animation: part-left-alive 2.8s ease-in-out infinite;
}
.pet-part-right {
  clip-path: polygon(49% 74%,100% 74%,100% 100%,49% 100%);
  transform-origin: 62% 75%;
  animation: part-right-alive 2.8s ease-in-out infinite;
}
.pet-viewport.pet-action-feed .pet-rig { animation: rig-feed 1.1s ease-in-out infinite; }
.pet-viewport.pet-action-feed .pet-part-head { animation: part-feed-head .62s ease-in-out infinite; }
.pet-viewport.pet-action-feed .pet-part-torso { animation: part-breathe 1s ease-in-out infinite; }
.pet-viewport.pet-action-bathe .pet-rig,
.pet-viewport.pet-action-clean .pet-rig { animation: rig-bathe .7s ease-in-out infinite; }
.pet-viewport.pet-action-sleep .pet-rig,
.pet-viewport.pet-action-rest .pet-rig { animation: rig-sleep 2.5s ease-in-out infinite; }
.pet-viewport.pet-action-sleep .pet-part-head,
.pet-viewport.pet-action-rest .pet-part-head { animation: part-sleep-head 2.5s ease-in-out infinite; }
.pet-viewport.pet-action-sleep .pet-part-left,
.pet-viewport.pet-action-sleep .pet-part-right,
.pet-viewport.pet-action-rest .pet-part-left,
.pet-viewport.pet-action-rest .pet-part-right { animation: none; }
.pet-viewport.pet-action-play .pet-rig,
.pet-viewport.pet-action-jump .pet-rig { animation: rig-jump .9s cubic-bezier(.45,0,.25,1) infinite; }
.pet-viewport.pet-action-play .pet-part-left,
.pet-viewport.pet-action-jump .pet-part-left { animation: part-kick-left .45s ease-in-out infinite; }
.pet-viewport.pet-action-play .pet-part-right,
.pet-viewport.pet-action-jump .pet-part-right { animation: part-kick-right .45s ease-in-out infinite; }
.pet-viewport.pet-action-walk .pet-rig { animation: rig-walk 1.4s ease-in-out infinite; }
.pet-viewport.pet-action-walk .pet-part-left { animation: part-walk-left .42s ease-in-out infinite; }
.pet-viewport.pet-action-walk .pet-part-right { animation: part-walk-right .42s ease-in-out infinite; }
.pet-viewport.pet-action-toilet-pee .pet-rig,
.pet-viewport.pet-action-toilet-poop .pet-rig { animation: rig-squat .85s ease-in-out infinite; }
.pet-viewport.pet-action-talk .pet-part-head,
.pet-viewport.pet-action-sing .pet-part-head,
.pet-viewport.pet-action-wave .pet-part-head { animation: part-talk-head .55s ease-in-out infinite; }
.pet-viewport.pet-action-wave .pet-part-left { animation: part-wave .42s ease-in-out infinite; }
.pet-viewport.pet-action-warm .pet-rig { animation: rig-warm 1.25s ease-in-out infinite; }
@keyframes rig-idle {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(.2rem) rotate(-.8deg) scale(var(--pet-zoom)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(-.75rem) rotate(.8deg) scale(var(--pet-zoom)); }
}
@keyframes part-head-alive {
  0%,100% { transform: translate3d(0,0,.2rem) rotate(0); }
  30% { transform: translate3d(-.16rem,-.08rem,.2rem) rotate(-2.4deg); }
  68% { transform: translate3d(.18rem,-.18rem,.2rem) rotate(2.8deg); }
}
@keyframes part-breathe {
  0%,100% { transform: scale(1,1); }
  50% { transform: scale(1.018,1.035); }
}
@keyframes part-left-alive { 0%,100% { transform: rotate(0); } 50% { transform: rotate(2.4deg) translateY(-.08rem); } }
@keyframes part-right-alive { 0%,100% { transform: rotate(0); } 50% { transform: rotate(-2.4deg) translateY(-.08rem); } }
@keyframes rig-feed {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(.2rem) scale(var(--pet-zoom)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(.65rem) scale(calc(var(--pet-zoom) * .985)); }
}
@keyframes part-feed-head {
  0%,100% { transform: translate3d(0,-.1rem,.25rem) rotate(0); }
  42% { transform: translate3d(0,.75rem,.25rem) rotate(-5deg) scale(.99); }
  68% { transform: translate3d(.08rem,.48rem,.25rem) rotate(4deg) scale(1.01); }
}
@keyframes rig-bathe {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) rotate(-3deg) scale(var(--pet-zoom)); filter: drop-shadow(0 0 .7rem rgba(90,210,244,.45)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) rotate(3deg) scale(calc(var(--pet-zoom) * 1.025)); filter: drop-shadow(0 0 1.4rem rgba(90,210,244,.82)); }
}
@keyframes rig-sleep {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(1rem) rotate(-7deg) scale(calc(var(--pet-zoom) * .96)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(1.15rem) rotate(-7deg) scale(calc(var(--pet-zoom) * 1.01)); }
}
@keyframes part-sleep-head { 0%,100% { transform: translateY(.2rem) rotate(-2deg); } 50% { transform: translateY(.38rem) rotate(-5deg); } }
@keyframes rig-jump {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(1rem) scale(var(--pet-zoom)); }
  48% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(-3.1rem) rotate(4deg) scale(calc(var(--pet-zoom) * 1.035)); }
}
@keyframes part-kick-left { 0%,100% { transform: rotate(-3deg); } 50% { transform: rotate(10deg) translateY(-.25rem); } }
@keyframes part-kick-right { 0%,100% { transform: rotate(3deg); } 50% { transform: rotate(-10deg) translateY(-.25rem); } }
@keyframes rig-walk {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateX(-2.4rem) rotate(-2deg) scale(var(--pet-zoom)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translate(2.4rem,-.6rem) rotate(2deg) scale(var(--pet-zoom)); }
}
@keyframes part-walk-left { 0%,100% { transform: rotate(-8deg) translateY(-.1rem); } 50% { transform: rotate(9deg) translateY(.12rem); } }
@keyframes part-walk-right { 0%,100% { transform: rotate(9deg) translateY(.12rem); } 50% { transform: rotate(-8deg) translateY(-.1rem); } }
@keyframes rig-squat {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(.25rem) scale(var(--pet-zoom)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(1.45rem) scale(calc(var(--pet-zoom) * 1.03),calc(var(--pet-zoom) * .91)); }
}
@keyframes part-talk-head { 0%,100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-.4rem) rotate(3deg) scale(1.025); } }
@keyframes part-wave { 0%,100% { transform: rotate(-2deg); } 50% { transform: rotate(12deg) translateY(-.3rem); } }
@keyframes rig-warm {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) scale(var(--pet-zoom)); filter: drop-shadow(0 0 .6rem rgba(255,197,76,.5)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) scale(calc(var(--pet-zoom) * 1.045)); filter: drop-shadow(0 0 1.6rem rgba(255,197,76,.95)); }
}
@media (prefers-reduced-motion: reduce) {
  .pet-rig, .pet-rig-part { animation-duration: 4s !important; }
}
.pet-action-effect {
  position: absolute;
  z-index: 3;
  top: 1rem;
  left: 50%;
  display: grid;
  place-items: center;
  min-width: 9rem;
  min-height: 3rem;
  padding: .65rem 1rem;
  border: 2px solid rgba(255,255,255,.88);
  border-radius: 999px;
  color: #173c34;
  background: rgba(255,255,255,.92);
  box-shadow: 0 .8rem 2rem rgba(23,60,52,.2);
  opacity: 0;
  transform: translate(-50%,-1rem) scale(.8);
  pointer-events: none;
  transition: opacity .2s ease,transform .25s ease;
}
.pet-action-effect.active { opacity: 1; transform: translate(-50%,0) scale(1); }
.pet-action-effect strong { position: relative; z-index: 2; font-size: .95rem; white-space: nowrap; }
.pet-action-effect span {
  position: absolute;
  z-index: 1;
  bottom: -.25rem;
  width: .85rem;
  height: .85rem;
  border-radius: 50%;
  background: #8ddcf2;
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.8);
  opacity: 0;
}
.pet-action-effect.active span { animation: action-fx-pop 1.25s ease-out infinite; }
.pet-action-effect span:nth-of-type(1) { left: 18%; animation-delay: 0s; }
.pet-action-effect span:nth-of-type(2) { left: 50%; animation-delay: .35s; }
.pet-action-effect span:nth-of-type(3) { left: 78%; animation-delay: .7s; }
.pet-viewport[data-active-action="feed"] .pet-action-effect span { background: #f0b85a; }
.pet-viewport[data-active-action="sleep"] .pet-action-effect span,
.pet-viewport[data-active-action="rest"] .pet-action-effect span { background: #a9a4ef; }
.pet-viewport[data-active-action="play"] .pet-action-effect span,
.pet-viewport[data-active-action="jump"] .pet-action-effect span,
.pet-viewport[data-active-action="walk"] .pet-action-effect span { background: #b9ef55; }
@keyframes action-fx-pop {
  0% { opacity: 0; transform: translateY(0) scale(.55); }
  25% { opacity: .95; }
  100% { opacity: 0; transform: translateY(-4.2rem) translateX(1.1rem) scale(1.25); }
}
.scene-badge {
  position: absolute;
  right: 1rem;
  bottom: 1rem;
  padding: .45rem .65rem;
  border-radius: 999px;
  color: #324b45;
  background: rgba(255,255,255,.7);
  font-size: .72rem;
  font-weight: 730;
  pointer-events: none;
  backdrop-filter: blur(.5rem);
}
.scene-controls {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  z-index: 4;
  display: none;
  gap: .38rem;
}
.pet-viewport.three-ready .scene-controls { display: flex; }
.scene-controls button {
  width: 2.55rem;
  height: 2.55rem;
  padding: 0;
  border: 1px solid rgba(28,63,56,.16);
  border-radius: .78rem;
  color: #183c34;
  background: rgba(255,255,255,.88);
  box-shadow: 0 .35rem 1rem rgba(24,60,52,.12);
  font: 800 1.2rem/1 system-ui, sans-serif;
  cursor: pointer;
  backdrop-filter: blur(.55rem);
}
.scene-controls button:hover { transform: translateY(-1px); background: #fff; }
.scene-controls button:active { transform: translateY(1px) scale(.97); }
.stage-row {
  position: relative;
  z-index: 3;
  min-height: 2.15rem;
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .32rem .55rem;
  border: 1px solid rgba(255,255,255,.65);
  border-radius: 1rem;
  background: rgba(255,255,255,.58);
  backdrop-filter: blur(.65rem);
}
.stage-row > div:first-child { display: grid; }
.stage-row > div:first-child strong { font-size: .92rem; }
.hatch-progress { width: min(14rem,42%); margin-right: auto; color: var(--ink-soft); font-size: .78rem; font-weight: 760; }
.track, .need-track { overflow: hidden; border-radius: 999px; background: #dbe4df; }
.track { height: .48rem; margin-top: .38rem; }
.track span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,var(--forest-2),var(--lime)); transition: width .5s ease; }
.quiet-button {
  min-height: 2.05rem;
  padding: .32rem .65rem;
  border: 1px solid var(--line);
  border-radius: .75rem;
  color: var(--forest);
  background: rgba(255,255,255,.88);
  font-weight: 800;
  cursor: pointer;
}
.quiet-button:hover { border-color: var(--forest-2); background: white; }

.care-panel {
  display: grid;
  align-content: start;
  gap: 1.1rem;
  padding: 1rem;
  background: rgba(251,248,239,.94);
}
.request-card {
  display: grid;
  gap: .25rem;
  padding: 1rem;
  border: 1px solid rgba(23,60,52,.12);
  border-radius: 1rem;
  background: white;
}
.request-card.active {
  color: white;
  border-color: transparent;
  background: linear-gradient(145deg,var(--forest-2),var(--forest));
  box-shadow: 0 .8rem 1.7rem rgba(23,60,52,.17);
}
.request-label { color: var(--ink-soft); font-size: .72rem; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.request-card.active .request-label { color: #bfe4d8; }
.request-card strong { font-size: 1.15rem; }
.request-card p { margin: .1rem 0 0; color: var(--ink-soft); font-size: .88rem; line-height: 1.45; }
.request-card.active p { color: #e7f4ef; }
.section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: .65rem; }
.section-heading h2 { margin: 0; font-size: 1rem; letter-spacing: -.02em; }
.section-heading span { color: var(--ink-soft); font-size: .76rem; font-weight: 720; }

.needs { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.need-row {
  display: grid;
  gap: .48rem;
  padding: .66rem .72rem;
  border: 1px solid var(--line);
  border-radius: .8rem;
  background: rgba(255,255,255,.72);
}
.need-info { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.need-info > span { display: grid; }
.need-info strong { font-size: .82rem; }
.need-info small { color: var(--ink-soft); font-size: .67rem; }
.need-info b { font-size: .78rem; }
.need-track { height: .38rem; }
.need-track span { display: block; height: 100%; border-radius: inherit; background: var(--forest-2); transition: width .45s ease; }
.need-track span.attention { background: var(--amber); }
.need-track span.critical { background: var(--danger); }

.actions { display: grid; gap: .5rem; }
.care-action {
  width: 100%;
  min-height: 3.7rem;
  display: grid;
  grid-template-columns: 2.55rem 1fr auto;
  align-items: center;
  gap: .65rem;
  padding: .55rem .65rem;
  border: 1px solid var(--line);
  border-radius: .85rem;
  color: var(--ink);
  background: rgba(255,255,255,.78);
  text-align: left;
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.care-action:hover:not(:disabled) { transform: translateY(-.1rem); border-color: var(--forest-2); box-shadow: 0 .45rem 1rem rgba(23,60,52,.09); }
.care-action:disabled { cursor: not-allowed; opacity: .58; }
.care-action.requested { border-color: var(--lime); box-shadow: inset .2rem 0 0 var(--lime); }
.action-icon { width: 2.45rem; height: 2.45rem; display: grid; place-items: center; border-radius: .7rem; color: white; background: var(--forest-2); font-size: 1.05rem; font-weight: 900; }
.care-action:disabled .action-icon { color: #597069; background: #dce6e1; }
.action-copy { display: grid; gap: .08rem; }
.action-copy strong { font-size: .88rem; }
.action-copy small { color: var(--ink-soft); font-size: .7rem; }
.action-status { padding: .3rem .48rem; border-radius: 999px; color: var(--ink-soft); background: #e8eeea; font-size: .68rem; font-weight: 800; white-space: nowrap; }
.care-action.ready .action-status { color: var(--forest); background: var(--lime); }
.care-progress {
  display: grid;
  gap: .5rem;
  padding: .78rem .85rem;
  border: 1px solid rgba(67,137,78,.28);
  border-radius: .85rem;
  background: linear-gradient(145deg,rgba(238,255,216,.95),rgba(255,251,225,.95));
}
.care-progress > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.care-progress strong { color: var(--forest); font-size: .88rem; }
.care-progress-time { color: var(--forest-2); font-size: .82rem; font-weight: 900; font-variant-numeric: tabular-nums; }
.care-progress-track { height: .58rem; overflow: hidden; border-radius: 999px; background: rgba(23,60,52,.13); }
.care-progress-track span { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#6db357,var(--lime),#f2c453); transition: width .2s linear; }
.admin-time {
  grid-column: 1 / -1;
  display: grid;
  gap: .68rem;
  padding: .9rem;
  border: 1px solid rgba(86,43,211,.2);
  border-radius: 1rem;
  background: linear-gradient(145deg,rgba(245,241,255,.96),rgba(236,255,208,.84));
  box-shadow: inset .22rem 0 0 #6a35df;
}
.admin-time-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.admin-time-heading span { color: #654db1; font-size: .68rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.admin-time-heading h2 { margin: .06rem 0 0; font-size: 1rem; }
.admin-time-heading b { padding: .28rem .46rem; border-radius: .45rem; color: white; background: #5b2bd3; font-size: .65rem; letter-spacing: .08em; }
.admin-time > p { margin: 0; color: var(--ink-soft); font-size: .78rem; line-height: 1.42; }
.admin-time-buttons { display: grid; grid-template-columns: repeat(4,1fr); gap: .35rem; }
.admin-time-buttons button {
  min-height: 2.35rem;
  padding: .38rem .25rem;
  border: 1px solid rgba(86,43,211,.2);
  border-radius: .62rem;
  color: #48209e;
  background: rgba(255,255,255,.86);
  font-size: .72rem;
  font-weight: 850;
  cursor: pointer;
}
.admin-time-buttons button:hover:not(:disabled) { color: white; border-color: #5b2bd3; background: #5b2bd3; }
.admin-time-buttons button:disabled { cursor: wait; opacity: .55; }
.admin-time .admin-time-status { min-height: 1.05rem; color: #48209e; font-weight: 760; }
.feedback { min-height: 1.2rem; margin: -.2rem 0 0; color: var(--forest-2); font-size: .8rem; font-weight: 750; text-align: center; }

.delete-dialog {
  width: min(34rem,calc(100% - 1.2rem));
  padding: 0;
  border: 1px solid #efc4c4;
  border-radius: 1.4rem;
  color: var(--ink);
  background: var(--paper);
  box-shadow: 0 2rem 6rem rgba(46,12,16,.3);
}
.delete-dialog::backdrop { background: rgba(25,8,10,.68); backdrop-filter: blur(.35rem); }
.delete-dialog form { display: grid; gap: 1rem; padding: clamp(1.4rem,5vw,2.3rem); }
.delete-dialog .eyebrow { margin: 0; color: #a6202d; }
.delete-dialog h2 { margin: -.45rem 0 0; font-size: clamp(1.65rem,5vw,2.25rem); letter-spacing: -.045em; }
.delete-dialog p { margin: 0; color: var(--ink-soft); line-height: 1.55; }
.delete-dialog label { display: grid; gap: .45rem; font-size: .9rem; font-weight: 800; }
.delete-dialog input { min-height: 3.1rem; padding: .72rem .85rem; border: 1px solid #d7b9bc; border-radius: .8rem; color: var(--ink); background: white; }
.delete-dialog input:focus { outline: .18rem solid rgba(190,35,50,.15); border-color: #be2332; }
.danger-mark { width: 2.8rem; height: 2.8rem; display: grid; place-items: center; border-radius: 50%; color: white; background: #be2332; font-size: 1.35rem; font-weight: 900; }
.delete-feedback { min-height: 1.35rem; color: #a6202d !important; font-size: .86rem; font-weight: 760; }
.delete-actions { display: grid; grid-template-columns: .8fr 1.2fr; gap: .7rem; }
.delete-actions button { min-height: 3.1rem; padding: .72rem .9rem; border-radius: .8rem; font-weight: 850; cursor: pointer; }
.cancel-delete { border: 1px solid var(--line); color: var(--ink); background: white; }
.confirm-delete { border: 0; color: white; background: #be2332; box-shadow: 0 .65rem 1.2rem rgba(190,35,50,.22); }
.confirm-delete:hover { background: #9f1d2a; }
.confirm-delete:disabled { opacity: .6; cursor: wait; }
.play-dialog {
  width: min(43rem,calc(100% - 1.2rem));
  padding: 0;
  max-height: calc(100vh - 1rem);
  overflow-x: hidden;
  overflow-y: auto;
  border: 1px solid rgba(255,255,255,.5);
  border-radius: 1.4rem;
  color: var(--ink);
  background: #f7faf7;
  box-shadow: 0 2rem 6rem rgba(10,29,25,.32);
}
.play-dialog::backdrop { background: rgba(10,29,25,.62); backdrop-filter: blur(.35rem); }
.dialog-close {
  position: absolute;
  z-index: 5;
  top: .75rem;
  right: .75rem;
  width: 2.5rem;
  height: 2.5rem;
  border: 1px solid var(--line);
  border-radius: 50%;
  color: var(--ink);
  background: rgba(255,255,255,.9);
  font-size: 1.4rem;
  cursor: pointer;
}
.play-intro, .mini-game { padding: clamp(1.2rem,4vw,2rem); }
.play-intro h2, .mini-game h2 { margin: .15rem 0 1rem; font-size: clamp(1.55rem,4vw,2.2rem); letter-spacing: -.045em; }
.game-picker { display: grid; grid-template-columns: repeat(3,1fr); gap: .7rem; }
.game-picker button {
  min-height: 10rem;
  display: grid;
  align-content: center;
  gap: .35rem;
  padding: 1rem;
  border: 1px solid var(--line);
  border-radius: 1rem;
  color: var(--ink);
  background: white;
  cursor: pointer;
}
.game-picker button:hover { border-color: var(--forest-2); transform: translateY(-.12rem); }
.game-picker button > span { font-size: 2rem; color: var(--forest-2); }
.game-picker strong { font-size: .9rem; }
.game-picker small { color: var(--ink-soft); font-size: .72rem; line-height: 1.35; }
.mini-game-head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.mini-game-head span { color: var(--ink-soft); font-size: .72rem; font-weight: 800; text-transform: uppercase; }
.mini-game-head > strong { padding: .45rem .65rem; border-radius: .7rem; color: var(--forest); background: var(--lime); }
#game-instruction { min-height: 1.5rem; color: var(--ink-soft); }
.game-board { min-height: 17rem; margin: 1rem 0; padding: 1rem; border-radius: 1rem; background: #dfeae4; }
.bubble-board, .treat-board { display: grid; grid-template-columns: repeat(4,1fr); gap: .65rem; }
.bubble {
  aspect-ratio: 1;
  border: .16rem solid rgba(59,151,156,.46);
  border-radius: 50%;
  background: radial-gradient(circle at 32% 25%,white 0 8%,rgba(123,220,217,.55) 12%,rgba(104,174,203,.16) 68%);
  box-shadow: inset -.35rem -.45rem .8rem rgba(54,142,151,.16);
  cursor: pointer;
  animation: float 1.8s ease-in-out var(--delay) infinite alternate;
}
.bubble.popped { animation: pop .28s ease forwards; pointer-events: none; }
.color-board { display: grid; place-items: center; }
.color-sequence, .color-controls { display: flex; flex-wrap: wrap; justify-content: center; gap: .8rem; }
.color-sequence i, .color-controls button { width: 4rem; height: 4rem; border: .35rem solid white; border-radius: 1rem; box-shadow: 0 .45rem 1rem rgba(23,60,52,.13); }
.color-controls button { cursor: pointer; }
.color-verde { background: #45aa72; }
.color-amarelo { background: #f0c64f; }
.color-azul { background: #5899dc; }
.color-rosa { background: #e47c9e; }
.treat-board button {
  min-height: 3.5rem;
  border: 1px solid rgba(23,60,52,.12);
  border-radius: .75rem;
  color: var(--forest);
  background: white;
  font-size: 1.4rem;
  font-weight: 900;
  cursor: pointer;
}
.treat-board button.treat { color: #fff; background: var(--forest-2); }
.treat-board button.sock { color: #875b4d; background: #eadfd8; }
.game-board.complete { box-shadow: inset 0 0 0 .25rem var(--lime); }

.hopscotch-board {
  display: grid;
  grid-template-columns: repeat(3,minmax(3.3rem,5rem));
  grid-template-rows: repeat(7,2.25rem);
  align-content: center;
  justify-content: center;
  gap: .28rem;
  background: linear-gradient(180deg,#8ecaa5,#d8c38b);
}
.hopscotch-board button { position: relative; border: .14rem solid rgba(255,255,255,.9); border-radius: .5rem; color: white; background: rgba(31,105,76,.7); font-size: 1.05rem; font-weight: 900; cursor: pointer; }
.hopscotch-board button:nth-child(1) { grid-column: 2; grid-row: 7; }
.hopscotch-board button:nth-child(2) { grid-column: 1; grid-row: 6; }
.hopscotch-board button:nth-child(3) { grid-column: 3; grid-row: 6; }
.hopscotch-board button:nth-child(4) { grid-column: 2; grid-row: 5; }
.hopscotch-board button:nth-child(5) { grid-column: 1; grid-row: 4; }
.hopscotch-board button:nth-child(6) { grid-column: 3; grid-row: 4; }
.hopscotch-board button:nth-child(7) { grid-column: 2; grid-row: 3; }
.hopscotch-board button:nth-child(8) { grid-column: 1; grid-row: 2; }
.hopscotch-board button:nth-child(9) { grid-column: 3; grid-row: 2; }
.hopscotch-board button:nth-child(10) { grid-column: 2; grid-row: 1; }
.hopscotch-board button.landed { color: var(--forest); background: var(--lime); transform: scale(.96); }
.hopscotch-pet { position: absolute; left: 50%; bottom: .1rem; width: 2.5rem; height: 2.7rem; object-fit: contain; transform: translateX(-50%); filter: drop-shadow(0 .2rem .2rem rgba(0,0,0,.25)); pointer-events: none; animation: skill-hop .32s ease; }
.rope-board { display: grid; grid-template-rows: 1fr auto; gap: .7rem; background: linear-gradient(180deg,#bceaf1,#9dd29a); }
.rope-stage { position: relative; min-height: 11.5rem; overflow: hidden; border-radius: .85rem; background: linear-gradient(180deg,#dff7ff 0 68%,#80bd72 68%); }
.rope-pet { position: absolute; z-index: 2; left: 50%; bottom: 1.25rem; width: 7rem; height: 8.5rem; object-fit: contain; transform: translateX(-50%); filter: drop-shadow(0 .4rem .35rem rgba(0,0,0,.18)); }
.rope-line { position: absolute; z-index: 3; left: 18%; top: 7%; width: 64%; height: 86%; border: .3rem solid #b85d3e; border-left-color: transparent; border-right-color: transparent; border-radius: 50%; animation: rope-turn 1.4s linear infinite; }
.rope-zone { position: absolute; z-index: 1; left: 28%; right: 28%; bottom: .7rem; height: .55rem; border-radius: 999px; background: rgba(194,245,77,.88); box-shadow: 0 0 .7rem rgba(194,245,77,.8); }
.rope-stage.jump-good .rope-pet { animation: skill-hop .48s ease; }
.rope-stage.jump-good { box-shadow: inset 0 0 0 .25rem var(--lime); }
.rope-stage.jump-miss { animation: game-shake .28s ease; }
.skill-button { min-height: 3.2rem; border: 0; border-radius: .85rem; color: white; background: var(--forest-2); font-size: 1rem; font-weight: 900; cursor: pointer; }
.keepy-board { display: grid; background: linear-gradient(180deg,#bfe9fa 0 63%,#69ad65 63%); }
.keepy-field { position: relative; min-height: 15rem; overflow: hidden; border: .18rem solid rgba(255,255,255,.75); border-radius: .85rem; }
.keepy-field::after { content: ""; position: absolute; left: 8%; right: 8%; bottom: 1.8rem; height: .15rem; background: rgba(255,255,255,.72); }
.keepy-pet { position: absolute; left: 22%; bottom: 1.9rem; width: 8rem; height: 9.5rem; object-fit: contain; filter: drop-shadow(0 .45rem .35rem rgba(0,0,0,.2)); }
.keepy-ball { position: absolute; z-index: 3; left: 61%; bottom: 2.4rem; width: 4.4rem; height: 4.4rem; padding: 0; border: 0; border-radius: 50%; background: transparent; font-size: 3.6rem; line-height: 1; cursor: pointer; filter: drop-shadow(0 .35rem .25rem rgba(0,0,0,.25)); animation: ball-ready 1.15s ease-in-out infinite alternate; }
.keepy-ball.kicked { animation: ball-kick .62s ease; }
.combo-label { position: absolute; top: .65rem; left: 50%; padding: .4rem .65rem; border-radius: 999px; color: var(--forest); background: rgba(255,255,255,.82); font-size: .78rem; transform: translateX(-50%); white-space: nowrap; }
@keyframes skill-hop { 50% { transform: translateX(-50%) translateY(-1.7rem) scale(1.05); } }
@keyframes rope-turn { to { transform: rotateX(360deg); } }
@keyframes game-shake { 25% { transform: translateX(-.35rem); } 75% { transform: translateX(.35rem); } }
@keyframes ball-ready { to { transform: translateY(-1.2rem) rotate(12deg); } }
@keyframes ball-kick { 50% { transform: translate(-2rem,-6.5rem) rotate(180deg) scale(1.08); } }
footer { color: var(--ink-soft); font-size: .76rem; text-align: center; }
.page-feedback { color: var(--danger); text-align: center; }

@keyframes fallback-idle {
  0%, 100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) rotate(-2deg) translateY(0) scale(var(--pet-zoom)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) rotate(2deg) translateY(-.65rem) scale(var(--pet-zoom)); }
}
@keyframes exact-feed {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(0) rotate(0) scale(var(--pet-zoom)); }
  45% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(1rem) rotate(-3deg) scale(calc(var(--pet-zoom) * .98)); }
  70% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(.35rem) rotate(3deg) scale(var(--pet-zoom)); }
}
@keyframes exact-bathe {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) rotate(-4deg) scale(var(--pet-zoom)); filter: drop-shadow(0 1.2rem 1rem rgba(23,60,52,.18)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) rotate(4deg) scale(calc(var(--pet-zoom) * 1.03)); filter: drop-shadow(0 0 1.1rem rgba(98,205,239,.75)); }
}
@keyframes exact-sleep {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(.8rem) rotate(-7deg) scale(calc(var(--pet-zoom) * .96)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(1rem) rotate(-7deg) scale(calc(var(--pet-zoom) * 1.01)); }
}
@keyframes exact-jump {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(.8rem) scale(var(--pet-zoom)); }
  45% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(-2.6rem) rotate(5deg) scale(calc(var(--pet-zoom) * 1.04)); }
}
@keyframes exact-walk {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translate(-2rem,0) rotate(-3deg) scale(var(--pet-zoom)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translate(2rem,-.65rem) rotate(3deg) scale(var(--pet-zoom)); }
}
@keyframes exact-squat {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(.2rem) scale(var(--pet-zoom)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(1.25rem) scale(var(--pet-zoom),calc(var(--pet-zoom) * .92)); }
}
@keyframes exact-talk {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) rotate(-2deg) scale(var(--pet-zoom)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(-.45rem) rotate(3deg) scale(calc(var(--pet-zoom) * 1.025)); }
}
@keyframes exact-warm {
  0%,100% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) scale(var(--pet-zoom)); filter: drop-shadow(0 1.2rem 1rem rgba(23,60,52,.18)); }
  50% { transform: translate(-50%,-50%) perspective(55rem) rotateY(var(--pet-turn)) scale(calc(var(--pet-zoom) * 1.04)); filter: drop-shadow(0 0 1.4rem rgba(255,197,76,.9)); }
}
@keyframes float { to { transform: translateY(-.35rem) scale(1.03); } }
@keyframes pop { to { transform: scale(1.7); opacity: 0; } }
@keyframes speech-pop { 50% { transform: translateY(-.18rem) scale(1.02); } }


.walk-dialog {
  width: min(78rem,calc(100% - 1rem));
  max-height: calc(100vh - 1rem);
  padding: 0;
  overflow: hidden auto;
  border: 1px solid rgba(255,255,255,.55);
  border-radius: 1.4rem;
  color: var(--ink);
  background: #f5faf7;
  box-shadow: 0 2rem 7rem rgba(10,29,25,.38);
}
.walk-dialog::backdrop { background: rgba(8,27,23,.72); backdrop-filter: blur(.4rem); }
.walk-close { top: .9rem; right: .9rem; }
.walk-shell { display: grid; gap: .72rem; padding: 1rem; }
.walk-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-right: 3.2rem; }
.walk-head h2 { margin: .12rem 0 0; font-size: clamp(1.45rem,3vw,2.15rem); letter-spacing: -.045em; }
.walk-score { display: grid; justify-items: end; gap: .05rem; }
.walk-score span { color: var(--ink-soft); font-size: .78rem; font-weight: 760; }
.walk-score strong { color: var(--forest); font-size: 1.25rem; }
.walk-places { display: flex; gap: .45rem; overflow-x: auto; padding: .1rem; }
.walk-places button {
  flex: 1 0 auto;
  min-height: 2.7rem;
  padding: .62rem .9rem;
  border: 1px solid var(--line);
  border-radius: .8rem;
  color: var(--forest);
  background: white;
  font-size: .88rem;
  font-weight: 820;
  cursor: pointer;
}
.walk-places button[aria-pressed="true"] { color: white; border-color: var(--forest-2); background: var(--forest-2); box-shadow: 0 .45rem 1.1rem rgba(23,60,52,.2); }
.walk-scene {
  position: relative;
  width: 100%;
  aspect-ratio: 16/8.8;
  min-height: 24rem;
  overflow: hidden;
  border: .22rem solid white;
  border-radius: 1.15rem;
  background: #dce9e3;
  box-shadow: 0 .7rem 2rem rgba(20,54,47,.16);
  cursor: crosshair;
  isolation: isolate;
}
.walk-background { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; user-select: none; pointer-events: none; }
.walk-hotspots { position: absolute; inset: 0; z-index: 2; pointer-events: none; }
.walk-hotspot {
  position: absolute;
  display: grid;
  justify-items: center;
  gap: .12rem;
  min-width: 7.2rem;
  padding: .38rem .55rem;
  transform: translate(-50%,-50%);
  border: 2px solid rgba(255,255,255,.92);
  border-radius: .78rem;
  color: #173c34;
  background: rgba(255,255,255,.88);
  box-shadow: 0 .45rem 1.2rem rgba(14,45,38,.22);
  font-size: .78rem;
  cursor: pointer;
  pointer-events: auto;
  backdrop-filter: blur(.35rem);
  transition: transform .18s ease,background .18s ease;
}
.walk-hotspot:hover,.walk-hotspot:focus-visible { transform: translate(-50%,-56%) scale(1.04); background: white; }
.walk-hotspot > span { display: grid; place-items: center; width: 1.8rem; height: 1.8rem; border-radius: 50%; color: white; background: var(--forest-2); font-size: 1rem; }
.walk-hotspot strong { white-space: nowrap; }
.walk-hotspot.visited { color: #371181; border-color: var(--lime); background: #efffd8; }
.walk-hotspot.visited > span { color: var(--forest); background: var(--lime); }
.walk-pet {
  position: absolute;
  z-index: 3;
  left: 50%;
  top: 73%;
  width: clamp(5rem,11vw,9.5rem);
  height: clamp(6rem,14vw,11.5rem);
  object-fit: contain;
  transform: translate(-50%,-82%);
  transform-origin: 50% 100%;
  filter: drop-shadow(0 .8rem .65rem rgba(20,45,38,.32));
  pointer-events: none;
  transition: left 1s cubic-bezier(.25,.75,.25,1),top 1s cubic-bezier(.25,.75,.25,1);
}
.walk-pet.face-left { transform: translate(-50%,-82%) scaleX(-1); }
.walk-pet.is-walking { animation: walk-hop .28s ease-in-out infinite alternate; }
.walk-tip { position: absolute; z-index: 4; left: 50%; bottom: .65rem; transform: translateX(-50%); padding: .4rem .65rem; border-radius: 999px; color: #29483f; background: rgba(255,255,255,.82); font-size: .76rem; font-weight: 780; pointer-events: none; backdrop-filter: blur(.35rem); }
.walk-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .5rem .25rem .15rem; }
.walk-footer > div { min-width: 0; }
.walk-footer strong { font-size: 1rem; }
.walk-footer p { min-height: 1.25rem; margin: .15rem 0 0; color: var(--ink-soft); font-size: .86rem; line-height: 1.4; }
.walk-finish { flex: 0 0 auto; min-height: 3rem; padding: .7rem 1rem; border: 0; border-radius: .82rem; color: #173c34; background: var(--lime); font-size: .88rem; font-weight: 850; cursor: pointer; box-shadow: 0 .45rem 1.2rem rgba(112,178,35,.2); }
.walk-finish:disabled { color: #64736e; background: #dfe6e2; cursor: not-allowed; box-shadow: none; }
@keyframes walk-hop { to { margin-top: -.55rem; } }
@media (max-width: 64rem) {
  .auth-shell.choosing-pet {
    width: min(48rem,100%);
    grid-template-columns: 1fr;
  }
  .choosing-pet .auth-art { min-height: 20rem; }
  .choosing-pet .auth-art img { width: min(13rem,48%); height: 12rem; }
  .pet-options { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .pet-room { grid-template-columns: 1fr; }
  .care-panel { grid-template-columns: minmax(14rem,.8fr) 1.2fr; align-items: start; }
  .care-panel > section:nth-of-type(3), .feedback { grid-column: 2; }
  .needs { grid-template-columns: 1fr; }
}

@media (max-width: 44rem) {
  html { min-width: 0; }
  body { overflow-x: hidden; }
  .game-shell { min-height: 100svh; gap: .65rem; padding: .55rem; }
  .topbar { gap: .45rem; }
  .brand { gap: .45rem; font-size: 1rem; }
  .brand-mark { width: 2.25rem; height: 2.25rem; border-radius: .7rem .7rem 1rem .7rem; }
  .player-summary { min-width: 0; gap: .3rem; }
  .online { display: none; }
  .wallet, .logout, .delete-account { min-height: 2.35rem; padding: .42rem .62rem; font-size: .78rem; }
  .delete-account { max-width: 6.3rem; white-space: normal; line-height: 1.05; text-align: center; }

  .auth-shell,
  .auth-shell.choosing-pet {
    width: 100%;
    margin: 0;
    grid-template-columns: minmax(0,1fr);
    border-radius: 1.2rem;
  }
  .auth-art { min-height: 15rem; padding: 1.15rem; }
  .auth-art img { width: 8rem; height: 8rem; }
  .auth-art .eyebrow { margin-top: .45rem; }
  .auth-art h1 { font-size: clamp(1.8rem,9vw,2.25rem); line-height: 1.02; }
  .auth-art > p:last-child { display: none; }
  .auth-shell.choosing-pet .auth-art { display: none; }
  .auth-card { min-width: 0; padding: .9rem; }
  .auth-tabs { position: sticky; top: .35rem; z-index: 8; }
  .auth-tabs button { min-height: 3rem; }
  .auth-card form { min-width: 0; gap: .85rem; margin-top: 1rem; }
  .auth-card h2 { font-size: 1.2rem; }
  .auth-card label { min-width: 0; font-size: .88rem; }
  .auth-card input { min-width: 0; min-height: 3.2rem; font-size: 1rem; }
  .pet-picker { width: 100%; min-width: 0; }
  .pet-picker legend { width: 100%; margin-bottom: .55rem; font-size: 1rem; }
  .pet-picker legend small { display: block; margin-top: .18rem; font-size: .76rem; }
  .pet-options { width: 100%; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .5rem; }
  .pet-option { min-width: 0; touch-action: manipulation; }
  .pet-option > span {
    position: relative;
    min-height: 9rem;
    grid-template-rows: 5.4rem auto auto;
    gap: .1rem;
    padding: .35rem .25rem .45rem;
    border-radius: .85rem;
  }
  .pet-option img { width: 100%; height: 5.35rem; }
  .pet-option strong { max-width: 100%; overflow-wrap: anywhere; font-size: .8rem; }
  .pet-option small { min-height: 1em; font-size: .71rem; }
  .pet-option input:checked + span::after {
    content: "✓";
    position: absolute;
    top: .35rem;
    right: .35rem;
    display: grid;
    place-items: center;
    width: 1.45rem;
    height: 1.45rem;
    border-radius: 50%;
    color: white;
    background: var(--forest-2);
    box-shadow: 0 .2rem .5rem rgba(23,60,52,.22);
    font-weight: 900;
  }
  .primary-button { width: 100%; min-height: 3.45rem; }
  .auth-feedback { margin-top: .6rem; }

  .pet-room { min-height: auto; gap: .65rem; }
  .room-scene { min-height: 35rem; padding: 1rem; border-radius: 1.05rem; }
  .scene-header { gap: .65rem; }
  .scene-header h1 { font-size: clamp(2rem,12vw,3rem); }
  .scene-clock { padding: .55rem .7rem; }
  .pet-viewport { min-height: 22rem; margin: -1rem -.75rem -.5rem; }
  .pet-rig { width: min(22rem,92%); height: 21rem; }
  .pet-action-effect { top: .35rem; min-width: 8rem; min-height: 2.7rem; padding: .5rem .75rem; }
  .pet-action-effect strong { font-size: .84rem; }
  .scene-badge { display: none; }
  .scene-controls { left: .55rem; bottom: .55rem; }
  .scene-controls button { width: 2.75rem; height: 2.75rem; }
  .stage-row { flex-wrap: wrap; gap: .6rem; }
  .hatch-progress { order: 3; width: 100%; }
  .care-panel { grid-template-columns: 1fr; gap: .85rem; padding: .8rem; border-radius: 1.05rem; }
  .care-panel > section:nth-of-type(3), .feedback { grid-column: auto; }
  .needs { grid-template-columns: repeat(2,minmax(0,1fr)); gap: .45rem; }
  .care-action { min-height: 4rem; }
  .admin-time-buttons { grid-template-columns: repeat(2,minmax(0,1fr)); }

  .play-dialog, .walk-dialog, .delete-dialog { width: calc(100% - .7rem); max-height: calc(100svh - .7rem); }
  .game-picker { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .game-picker button { min-height: 6.5rem; }
  .walk-shell { padding: .55rem; }
  .walk-head { padding: .35rem 3rem .1rem .2rem; }
  .walk-score span { display: none; }
  .walk-scene { min-height: 28rem; aspect-ratio: auto; }
  .walk-background { object-position: center; }
  .walk-hotspot { min-width: 0; padding: .32rem; border-radius: 50%; }
  .walk-hotspot strong { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .walk-hotspot > span { width: 2rem; height: 2rem; }
  .walk-pet { width: 6.5rem; height: 8rem; }
  .walk-tip { max-width: calc(100% - 1rem); white-space: normal; text-align: center; }
  .walk-footer { align-items: stretch; flex-direction: column; }
  .walk-finish { width: 100%; }
}

@media (max-width: 26rem) {
  .brand span:last-child { display: none; }
  .pet-options { gap: .4rem; }
  .pet-option > span { min-height: 8.35rem; grid-template-rows: 4.8rem auto auto; }
  .pet-option img { height: 4.8rem; }
  .wallet { display: none !important; }
  .needs, .game-picker { grid-template-columns: 1fr; }
  .scene-header h1 { font-size: 2rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
/* v17: sempre mostra exatamente a espécie escolhida; o modelo genérico não substitui o pet. */
.pet-viewport.three-ready.pet-is-baby #pet-canvas { opacity: 0; }
.pet-viewport.three-ready.pet-is-baby .pet-rig { display: block; }

/* Minijogos automáticos apresentados pelo próprio pet escolhido. */
.autoplay-board {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 20rem;
  user-select: none;
}
.autoplay-board::after {
  content: "Seu pet está jogando sozinho";
  position: absolute;
  z-index: 6;
  left: 50%;
  bottom: .55rem;
  padding: .32rem .65rem;
  border-radius: 999px;
  color: var(--forest);
  background: rgba(255,255,255,.86);
  font-size: .68rem;
  font-weight: 900;
  transform: translateX(-50%);
  white-space: nowrap;
}
.game-pet-rig {
  display: block !important;
  z-index: 4;
  width: min(14rem,48%) !important;
  height: 16rem !important;
  filter: drop-shadow(0 .8rem .6rem rgba(14,50,39,.28));
  animation: game-pet-alive 1.5s ease-in-out infinite !important;
}
.game-pet-rig .pet-rig-source { display: none !important; }
.game-pet-rig .pet-rig-part { display: block !important; }
.game-pet-rig.game-action-jump,
.game-pet-rig.game-action-play { animation: game-pet-jump .72s cubic-bezier(.3,0,.2,1) !important; }
.game-pet-rig.game-action-walk { animation: game-pet-run 1.05s ease-in-out !important; }
.game-pet-rig.game-action-sing { animation: game-pet-dance .82s ease-in-out !important; }
.game-pet-rig.game-action-feed { animation: game-pet-feed 1.05s ease-in-out !important; }
.game-pet-rig.game-action-jump .pet-part-left,
.game-pet-rig.game-action-play .pet-part-left,
.game-pet-rig.game-action-walk .pet-part-left { animation: part-kick-left .36s ease-in-out infinite; }
.game-pet-rig.game-action-jump .pet-part-right,
.game-pet-rig.game-action-play .pet-part-right,
.game-pet-rig.game-action-walk .pet-part-right { animation: part-kick-right .36s ease-in-out infinite; }
.game-pet-rig.game-action-sing .pet-part-head { animation: part-talk-head .38s ease-in-out infinite; }
.game-pet-rig.game-action-feed .pet-part-head { animation: part-feed-head .42s ease-in-out infinite; }

.autoplay-board .bubble { position: relative; z-index: 5; border: .16rem solid rgba(59,151,156,.6); pointer-events: none; }
.color-board.autoplay-board { grid-template-columns: repeat(2,4.8rem); align-content: space-between; justify-content: space-between; gap: 6rem; }
.color-pad { position: relative; z-index: 5; display: grid; place-items: center; width: 4.8rem; height: 4.8rem; border: .3rem solid white; border-radius: 1rem; color: white; font-size: .65rem; font-weight: 900; text-transform: uppercase; box-shadow: 0 .5rem 1rem rgba(23,60,52,.2); opacity: .68; }
.color-pad.active { opacity: 1; animation: color-pulse .55s ease; box-shadow: 0 0 0 .4rem rgba(194,245,77,.65),0 .5rem 1rem rgba(23,60,52,.2); }
.treat-board .treat-cell { position: relative; z-index: 5; display: grid; place-items: center; min-height: 3.7rem; border: 1px solid rgba(23,60,52,.14); border-radius: .75rem; color: var(--forest); background: rgba(255,255,255,.9); font-size: 1.35rem; font-weight: 900; }
.treat-board .treat-cell.opened { animation: box-open .42s ease; }
.treat-board .treat-cell.treat { color: white; background: rgba(31,105,76,.88); }
.treat-board .treat-cell.sock { color: #875b4d; background: rgba(234,223,216,.92); }
.hopscotch-board .hop-cell { position: relative; z-index: 5; display: grid; place-items: center; border: .14rem solid rgba(255,255,255,.9); border-radius: .5rem; color: white; background: rgba(31,105,76,.7); font-size: 1.05rem; font-weight: 900; }
.hopscotch-board .hop-cell:nth-child(1) { grid-column: 2; grid-row: 7; }
.hopscotch-board .hop-cell:nth-child(2) { grid-column: 1; grid-row: 6; }
.hopscotch-board .hop-cell:nth-child(3) { grid-column: 3; grid-row: 6; }
.hopscotch-board .hop-cell:nth-child(4) { grid-column: 2; grid-row: 5; }
.hopscotch-board .hop-cell:nth-child(5) { grid-column: 1; grid-row: 4; }
.hopscotch-board .hop-cell:nth-child(6) { grid-column: 3; grid-row: 4; }
.hopscotch-board .hop-cell:nth-child(7) { grid-column: 2; grid-row: 3; }
.hopscotch-board .hop-cell:nth-child(8) { grid-column: 1; grid-row: 2; }
.hopscotch-board .hop-cell:nth-child(9) { grid-column: 3; grid-row: 2; }
.hopscotch-board .hop-cell:nth-child(10) { grid-column: 2; grid-row: 1; }
.hopscotch-board .hop-cell.landed { color: var(--forest); background: var(--lime); animation: hop-land .45s ease; }
.rope-board.autoplay-board { display: block; background: linear-gradient(180deg,#dff7ff 0 68%,#80bd72 68%); }
.rope-board.autoplay-board .rope-line { z-index: 5; }
.rope-board.autoplay-board .rope-zone { z-index: 3; }
.keepy-board.autoplay-board { display: block; }
.keepy-board.autoplay-board .keepy-ball { z-index: 5; pointer-events: none; }
.keepy-board.autoplay-board .combo-label { z-index: 6; }

@keyframes game-pet-alive {
  0%,100% { transform: translate(-50%,-50%) rotate(-2deg) translateY(.2rem) scale(1); }
  50% { transform: translate(-50%,-50%) rotate(2deg) translateY(-.55rem) scale(1.035); }
}
@keyframes game-pet-jump {
  0%,100% { transform: translate(-50%,-50%) translateY(1rem) rotate(-3deg) scale(.98); }
  48% { transform: translate(-50%,-50%) translateY(-3.8rem) rotate(7deg) scale(1.07); }
}
@keyframes game-pet-run {
  0% { transform: translate(-50%,-50%) translateX(-5rem) rotate(-7deg); }
  50% { transform: translate(-50%,-50%) translateX(5rem) translateY(-1rem) rotate(7deg); }
  100% { transform: translate(-50%,-50%) translateX(-5rem) rotate(-7deg); }
}
@keyframes game-pet-dance {
  0%,100% { transform: translate(-50%,-50%) rotate(-10deg) scale(.98); }
  50% { transform: translate(-50%,-50%) translateY(-1.4rem) rotate(10deg) scale(1.07); }
}
@keyframes game-pet-feed {
  0%,100% { transform: translate(-50%,-50%) rotate(0); }
  50% { transform: translate(-50%,-50%) translateY(1.5rem) rotate(-5deg) scale(.97); }
}
@keyframes color-pulse { 50% { transform: scale(1.2) rotate(5deg); } }
@keyframes box-open { 50% { transform: translateY(-.4rem) rotate(-4deg) scale(1.08); } }
@keyframes hop-land { 50% { transform: scale(1.14); } }

@media (max-width: 600px) {
  .autoplay-board { min-height: 18rem; padding: .65rem; }
  .game-pet-rig { width: min(11rem,52%) !important; height: 13rem !important; }
  .color-board.autoplay-board { grid-template-columns: repeat(2,3.6rem); gap: 7rem; }
  .color-pad { width: 3.6rem; height: 3.6rem; font-size: .55rem; }
  .autoplay-board::after { max-width: 88%; overflow: hidden; text-overflow: ellipsis; }
}
/* v18: motor de sprites reais, um desenho completo para cada quadro da animação. */
#sprite-canvas {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: block;
  width: 100%;
  height: 100%;
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}
.pet-viewport.pet-is-baby.sprite-ready #sprite-canvas { opacity: 1; }
.pet-viewport.pet-is-baby.sprite-ready .pet-rig { display: none !important; }
.pet-viewport.pet-is-baby.sprite-ready #pet-canvas { opacity: 0 !important; }
#sprite-canvas.game-sprite-canvas {
  z-index: 4;
  opacity: 1;
  width: 100%;
  height: 100%;
}
.autoplay-board:has(#sprite-canvas.game-sprite-canvas) .game-pet-rig { display: none !important; }
@media (prefers-reduced-motion: reduce) {
  #sprite-canvas { transition: none; }
}
/* v20: jogo mobile-first em uma única tela, sem rolagem da página. */
@media (max-width: 44rem) {
  body.game-active {
    width: 100%;
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
    overscroll-behavior: none;
  }
  body.game-active .game-shell {
    width: 100%;
    height: 100dvh;
    min-height: 0;
    grid-template-rows: auto minmax(0,1fr);
    gap: .3rem;
    padding: max(.28rem,env(safe-area-inset-top)) max(.28rem,env(safe-area-inset-right)) max(.28rem,env(safe-area-inset-bottom)) max(.28rem,env(safe-area-inset-left));
    overflow: hidden;
  }
  body.game-active .topbar { height: 2.35rem; margin: 0; }
  body.game-active .brand { gap: .3rem; font-size: .82rem; }
  body.game-active .brand-mark { width: 2rem; height: 2rem; border-radius: .58rem .58rem .85rem .58rem; }
  body.game-active .player-summary { gap: .2rem; }
  body.game-active .wallet,
  body.game-active .logout,
  body.game-active .delete-account { min-height: 2rem; padding: .26rem .45rem; font-size: .69rem; }
  body.game-active .delete-account { max-width: none; font-size: 0; }
  body.game-active .delete-account::after { content: "Excluir"; font-size: .66rem; }
  body.game-active footer { display: none; }
  body.game-active .page-feedback { position: fixed; z-index: 50; left: .5rem; right: .5rem; bottom: .35rem; margin: 0; pointer-events: none; }

  body.game-active .pet-room {
    width: 100%;
    height: 100%;
    min-height: 0;
    margin: 0;
    grid-template-columns: minmax(0,1fr);
    grid-template-rows: minmax(0,57fr) minmax(0,43fr);
    gap: .3rem;
    overflow: hidden;
  }
  body.game-active.admin-active .pet-room { grid-template-rows: minmax(0,48fr) minmax(0,52fr); }
  body.game-active .room-scene {
    min-height: 0;
    height: 100%;
    grid-template-rows: auto auto minmax(0,1fr) auto;
    padding: .4rem;
    border-radius: .82rem;
  }
  body.game-active .scene-header {
    min-height: 0;
    gap: .35rem;
    margin: 0;
    padding: .38rem .45rem;
    border-radius: .65rem;
  }
  body.game-active .scene-header h1 { margin: .02rem 0 .12rem; font-size: clamp(1.25rem,6vw,1.65rem); }
  body.game-active .stage-kicker { font-size: .57rem; letter-spacing: .06em; }
  body.game-active .mood { gap: .24rem; font-size: .65rem; }
  body.game-active .mood i { width: .4rem; height: .4rem; box-shadow: 0 0 0 .12rem rgba(82,184,59,.14); }
  body.game-active .pet-age { display: inline-flex; margin: 0 0 0 .35rem; padding: .15rem .3rem; font-size: .59rem; }
  body.game-active .scene-clock { min-width: 3.6rem; padding: .3rem .42rem; border-radius: .58rem; }
  body.game-active .scene-clock span { font-size: .55rem; }
  body.game-active .scene-clock strong { font-size: .8rem; }
  body.game-active .speech-wrap { min-height: 1.9rem; }
  body.game-active .speech { max-width: 82%; margin: .08rem 0 0; padding: .34rem .55rem; font-size: .7rem; line-height: 1.2; }
  body.game-active .pet-viewport { min-height: 0; height: 100%; margin: -.2rem -.35rem; }
  body.game-active .scene-controls { left: .35rem; bottom: .3rem; gap: .18rem; }
  body.game-active .scene-controls button { width: 2rem; height: 2rem; border-radius: .55rem; font-size: .9rem; }
  body.game-active .stage-row { min-height: 1.4rem; flex-wrap: nowrap; gap: .25rem; padding: .12rem .3rem; border-radius: .55rem; }
  body.game-active .stage-row > div:first-child strong { font-size: .82rem; }
  body.game-active .hatch-progress { width: min(9rem,42%); margin-right: auto; font-size: .6rem; }
  body.game-active .track { height: .3rem; margin-top: .15rem; }
  body.game-active .quiet-button { min-height: 1.55rem; padding: .16rem .42rem; border-radius: .48rem; font-size: .62rem; }

  body.game-active .care-panel {
    min-height: 0;
    height: 100%;
    grid-template-columns: minmax(0,.88fr) minmax(0,1.12fr);
    grid-template-rows: auto minmax(0,1fr) auto;
    align-items: stretch;
    gap: .28rem .35rem;
    padding: .38rem;
    border-radius: .82rem;
    overflow: hidden;
  }
  body.game-active .request-card { grid-column: 1/-1; min-height: 0; display: flex; align-items: center; gap: .42rem; padding: .3rem .45rem; border-radius: .58rem; }
  body.game-active .request-label { font-size: .53rem; }
  body.game-active .request-card strong { font-size: .72rem; }
  body.game-active .request-card p { margin-left: auto; max-width: 46%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .61rem; }
  body.game-active .care-panel > section:nth-of-type(2) { grid-column: 1; min-width: 0; }
  body.game-active .care-panel > section:nth-of-type(3) { grid-column: 2; min-width: 0; }
  body.game-active .section-heading { gap: .25rem; margin-bottom: .2rem; }
  body.game-active .section-heading h2 { font-size: .7rem; }
  body.game-active .section-heading span { font-size: .55rem; }
  body.game-active .needs { grid-template-columns: repeat(2,minmax(0,1fr)); gap: .18rem; }
  body.game-active .need-row { min-height: 0; gap: .14rem; padding: .22rem .28rem; border-radius: .45rem; }
  body.game-active .need-info { gap: .15rem; }
  body.game-active .need-info strong { font-size: .6rem; }
  body.game-active .need-info small { display: none; }
  body.game-active .need-info b { font-size: .58rem; }
  body.game-active .need-track { height: .22rem; }
  body.game-active .actions { grid-template-columns: repeat(2,minmax(0,1fr)); gap: .18rem; }
  body.game-active .care-action { min-height: 2.15rem; grid-template-columns: 1.35rem minmax(0,1fr); gap: .25rem; padding: .2rem .25rem; border-radius: .48rem; }
  body.game-active .action-icon { width: 1.35rem; height: 1.35rem; border-radius: .35rem; font-size: .62rem; }
  body.game-active .action-copy { min-width: 0; }
  body.game-active .action-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .6rem; }
  body.game-active .action-copy small { display: none; }
  body.game-active .action-status { grid-column: 1/-1; justify-self: stretch; margin-top: -.08rem; padding: .08rem .16rem; overflow: hidden; text-overflow: ellipsis; text-align: center; font-size: .5rem; }
  body.game-active .care-progress { grid-column: 1/-1; gap: .18rem; padding: .28rem .38rem; border-radius: .5rem; }
  body.game-active .care-progress strong,
  body.game-active .care-progress-time { font-size: .62rem; }
  body.game-active .care-progress-track { height: .3rem; }
  body.game-active .admin-time { grid-column: 1/-1; gap: .22rem; padding: .3rem; border-radius: .55rem; }
  body.game-active .admin-time-heading span,
  body.game-active .admin-time p { display: none; }
  body.game-active .admin-time-heading h2 { margin: 0; font-size: .68rem; }
  body.game-active .admin-time-heading b { padding: .12rem .25rem; font-size: .48rem; }
  body.game-active .admin-time-buttons { grid-template-columns: repeat(4,minmax(0,1fr)); gap: .18rem; }
  body.game-active .admin-time-buttons button { min-height: 1.55rem; padding: .15rem; font-size: .55rem; }
  body.game-active .feedback { grid-column: 1/-1; min-height: .7rem; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .58rem; text-align: center; }
}

@media (max-width: 44rem) and (max-height: 42rem) {
  body.game-active .pet-room { grid-template-rows: minmax(0,52fr) minmax(0,48fr); }
  body.game-active .speech-wrap { position: absolute; top: 3.2rem; left: 0; right: 0; }
  body.game-active .scene-header { padding: .25rem .35rem; }
  body.game-active .stage-row { min-height: 1.25rem; padding: .08rem .28rem; }
  body.game-active .care-panel { padding: .28rem; }
  body.game-active .request-card p { display: none; }
}

@media (max-height: 36rem) and (orientation: landscape) {
  body.game-active .game-shell { grid-template-rows: 2.2rem minmax(0,1fr); }
  body.game-active .pet-room { grid-template-columns: minmax(0,1.5fr) minmax(17rem,.8fr); grid-template-rows: minmax(0,1fr); }
  body.game-active .room-scene,
  body.game-active .care-panel { height: 100%; }
  body.game-active .care-panel { grid-template-columns: 1fr; grid-template-rows: auto auto minmax(0,1fr) auto; overflow: hidden; }
  body.game-active .care-panel > section:nth-of-type(2),
  body.game-active .care-panel > section:nth-of-type(3) { grid-column: 1; }
  body.game-active .needs { grid-template-columns: repeat(3,minmax(0,1fr)); }
}
.pet-viewport.sprite-ready .scene-controls { display: flex; }
@media (max-width:44rem) {
  body.game-active .room-scene::before { animation: none; transform: scale(1.025); }
  body.game-active .scene-header, body.game-active .stage-row, body.game-active .scene-controls button { backdrop-filter: none; }
  body.game-active .jungle-ambient span:nth-child(n+5) { display: none; }
}

/* v21: carinho por gesto sobre o próprio personagem. */
.pet-viewport.pet-is-baby.sprite-ready #sprite-canvas:not(.game-sprite-canvas) {
  pointer-events: auto;
  touch-action: none;
  cursor: pointer;
}
#sprite-canvas.game-sprite-canvas { pointer-events: none; }
.petting-heart {
  position: absolute !important;
  z-index: 8 !important;
  color: #f45f86;
  font-size: clamp(1.1rem,5vw,1.8rem);
  line-height: 1;
  pointer-events: none;
  text-shadow: 0 .12rem .3rem rgba(83,15,42,.22);
  transform: translate(-50%,-50%);
  animation: petting-heart-rise .9s cubic-bezier(.2,.75,.25,1) forwards;
}
@keyframes petting-heart-rise {
  0% { opacity: 0; transform: translate(-50%,-20%) scale(.55) rotate(-8deg); }
  25% { opacity: 1; }
  100% { opacity: 0; transform: translate(-50%,-250%) scale(1.25) rotate(9deg); }
}
/* v22: necessidades visiveis, acidente persistente e controles sonoros leves. */
.pet-condition-layer {
  position: absolute;
  z-index: 5;
  left: 50%;
  top: 51%;
  width: min(42%,18rem);
  aspect-ratio: .88;
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%,-50%);
  transition: opacity .35s ease;
}
.pet-state-dirty .pet-condition-layer { opacity: 1; }
.pet-condition-layer i {
  position: absolute;
  width: clamp(.55rem,2.2vw,1.15rem);
  height: clamp(.36rem,1.45vw,.78rem);
  border-radius: 52% 42% 58% 37%;
  background: radial-gradient(circle at 34% 34%,#9b7644 0 22%,#674427 23% 62%,rgba(67,42,22,.35) 63%);
  box-shadow: .42rem .18rem 0 -.18rem rgba(81,52,25,.7),-.25rem .35rem 0 -.22rem rgba(81,52,25,.65);
  filter: blur(.2px);
  mix-blend-mode: multiply;
  animation: dirt-wobble 2.4s ease-in-out infinite;
}
.pet-condition-layer i:nth-child(1) { left: 24%; top: 24%; }
.pet-condition-layer i:nth-child(2) { right: 20%; top: 34%; animation-delay: -.5s; }
.pet-condition-layer i:nth-child(3) { left: 36%; top: 55%; animation-delay: -1s; }
.pet-condition-layer i:nth-child(4) { right: 27%; top: 68%; animation-delay: -1.5s; }
.pet-condition-layer i:nth-child(5) { left: 18%; top: 73%; animation-delay: -2s; }
.pet-feeling {
  position: absolute;
  z-index: 7;
  top: .55rem;
  left: 50%;
  max-width: min(88%,26rem);
  padding: .48rem .78rem;
  border: 1px solid rgba(20,69,60,.18);
  border-radius: 999px;
  color: #173d35;
  background: rgba(255,255,255,.92);
  box-shadow: 0 .45rem 1.2rem rgba(16,57,49,.15);
  font-size: .78rem;
  font-weight: 900;
  text-align: center;
  transform: translateX(-50%);
  pointer-events: none;
}
.pet-state-sad #sprite-canvas { filter: saturate(.78) brightness(.93); }
.pet-state-hyper::after,
.pet-state-walk::after {
  content: "✦  ✧  ✦";
  position: absolute;
  z-index: 2;
  left: 50%;
  top: 52%;
  color: #d8ff62;
  font-size: clamp(1rem,3vw,1.7rem);
  letter-spacing: 7rem;
  text-shadow: 0 0 .6rem #93dc42;
  transform: translate(-50%,-50%);
  animation: energy-orbit 1.1s linear infinite;
  pointer-events: none;
}
.clean-mess {
  position: absolute;
  z-index: 9;
  right: 4%;
  bottom: 12%;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: .45rem;
  min-height: 3rem;
  padding: .4rem .75rem .4rem .45rem;
  border: .16rem solid white;
  border-radius: 1rem;
  color: white;
  background: #68411e;
  box-shadow: 0 .5rem 1rem rgba(48,28,11,.28);
  cursor: pointer;
  animation: mess-arrive .7s cubic-bezier(.2,.85,.3,1), mess-pulse 1.8s ease-in-out .7s infinite;
}
.clean-mess span { font-size: 1.65rem; filter: drop-shadow(0 .18rem .12rem rgba(0,0,0,.2)); }
.clean-mess strong { font-size: .72rem; }
.clean-mess:hover { background: #4f3015; }
.clean-mess:focus-visible { outline: .2rem solid var(--lime); outline-offset: .16rem; }
.clean-mess:disabled { opacity: .6; cursor: wait; }
.pet-has-mess .pet-condition-layer { opacity: 1; }
.pet-has-mess .pet-condition-layer::after {
  content: "💩";
  position: absolute;
  z-index: 8;
  right: -7%;
  bottom: -8%;
  font-size: clamp(2.6rem,8vw,5rem);
  line-height: 1;
  filter: drop-shadow(0 .45rem .35rem rgba(48,28,11,.32));
  animation: mess-arrive .65s cubic-bezier(.2,.85,.3,1), mess-pulse 1.8s ease-in-out .65s infinite;
}
.clean-mess:not(.hidden) { display: grid; }
@keyframes dirt-wobble { 50% { transform: translateY(.12rem) rotate(5deg) scale(1.05); } }
@keyframes energy-orbit {
  from { transform: translate(-50%,-50%) rotate(0deg) scale(.92); }
  to { transform: translate(-50%,-50%) rotate(360deg) scale(1.06); }
}
@keyframes mess-arrive {
  from { opacity: 0; transform: translateY(-3rem) scale(.3) rotate(-12deg); }
  70% { transform: translateY(.3rem) scale(1.08) rotate(4deg); }
  to { opacity: 1; transform: none; }
}
@keyframes mess-pulse { 50% { transform: translateY(-.18rem) scale(1.035); } }
@media (max-width:44rem) {
  body.game-active .pet-condition-layer { width: min(38%,9rem); }
  body.game-active .pet-feeling { top: .2rem; max-width: 76%; padding: .27rem .48rem; font-size: .58rem; }
  body.game-active .clean-mess { right: .35rem; bottom: .3rem; min-height: 2rem; gap: .2rem; padding: .2rem .42rem .2rem .25rem; border-radius: .6rem; }
  body.game-active .clean-mess span { font-size: 1.1rem; }
  body.game-active .clean-mess strong { font-size: .56rem; }
  body.game-active .pet-state-hyper::after,
  body.game-active .pet-state-walk::after { letter-spacing: 3rem; font-size: .8rem; }
}
@media (prefers-reduced-motion: reduce) {
  .pet-condition-layer i,.clean-mess,.pet-state-hyper::after,.pet-state-walk::after { animation: none; }
}
/* v24: seletor administrativo do bichinho atual. */
.admin-pet-switch {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: .45rem;
}
.admin-pet-switch label {
  color: #48209e;
  font-size: .72rem;
  font-weight: 850;
}
.admin-pet-switch select,
.admin-pet-switch button {
  min-height: 2.35rem;
  border: 1px solid rgba(86,43,211,.25);
  border-radius: .62rem;
  color: #35146f;
  background: rgba(255,255,255,.92);
  font: inherit;
  font-size: .72rem;
  font-weight: 800;
}
.admin-pet-switch select { min-width: 0; padding: .35rem .5rem; }
.admin-pet-switch button { padding: .35rem .72rem; color: white; background: #5b2bd3; cursor: pointer; }
.admin-pet-switch button:hover:not(:disabled) { background: #4319ad; }
.admin-pet-switch button:disabled,.admin-pet-switch select:disabled { cursor: wait; opacity: .58; }
@media (max-width:44rem) {
  body.game-active .admin-pet-switch { grid-template-columns: minmax(0,1fr) auto; gap: .18rem; }
  body.game-active .admin-pet-switch label { display: none; }
  body.game-active .admin-pet-switch select,
  body.game-active .admin-pet-switch button { min-height: 1.55rem; padding: .12rem .28rem; border-radius: .4rem; font-size: .55rem; }
}

/* v25: visitas entre bichinhos por QR Code. */
.invite-pet { color:#fff;background:#5b2bd3;border-color:#5b2bd3; }
.visitor-pet-home {
  position:absolute;
  z-index:6;
  right:3%;
  bottom:7%;
  width:min(31%,13rem);
  display:grid;
  justify-items:center;
  pointer-events:none;
  animation:visitor-idle 1.65s ease-in-out infinite;
}
.visitor-pet-home img { width:100%;height:auto;max-height:15rem;object-fit:contain;filter:drop-shadow(0 .7rem .55rem rgba(20,49,42,.25)); }
.visitor-pet-home strong { margin-top:-.5rem;padding:.22rem .5rem;border-radius:999px;color:#173d35;background:rgba(255,255,255,.88);font-size:.68rem;box-shadow:0 .25rem .6rem rgba(16,57,49,.15); }
.visitor-pet-home > span { position:absolute;top:8%;left:7%;color:#f45f86;font-size:1.35rem;animation:visit-heart-float 1.4s ease-in-out infinite; }
.visit-dialog {
  width:min(44rem,calc(100% - 1rem));
  max-height:calc(100dvh - 1rem);
  padding:0;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.75);
  border-radius:1.4rem;
  color:#172f2a;
  background:linear-gradient(145deg,#fff 0%,#f4ffe5 100%);
  box-shadow:0 2rem 6rem rgba(5,29,23,.38);
}
.visit-dialog::backdrop { background:rgba(7,30,24,.68);backdrop-filter:blur(.35rem); }
.visit-invite-view,.visit-play-view { position:relative;padding:clamp(1rem,3vw,1.6rem);text-align:center; }
.visit-dialog h2 { margin:.2rem 0 .35rem;font-size:clamp(1.35rem,4vw,2rem); }
.visit-dialog p { margin:.35rem auto;color:#58706a;font-size:.88rem;line-height:1.4; }
.visit-close { position:absolute;right:.7rem;top:.6rem;width:2.2rem;height:2.2rem;border:0;border-radius:50%;color:#294a43;background:#edf5f1;font-size:1.4rem;cursor:pointer; }
.visit-qr { width:12.2rem;height:12.2rem;margin:.8rem auto;padding:.38rem;border:.2rem solid #c6f54d;border-radius:1rem;background:#fff;box-shadow:0 .6rem 1.5rem rgba(38,83,67,.14); }
.visit-qr img,.visit-qr canvas { width:100%!important;height:100%!important;border-radius:.55rem; }
.visit-link-row { display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.4rem;max-width:34rem;margin:.7rem auto 0; }
.visit-link-row input { min-width:0;padding:.65rem;border:1px solid #cbdcd6;border-radius:.65rem;background:#fff;font-size:.72rem; }
.visit-link-row button,.visit-actions button { border:0;border-radius:.7rem;color:#fff;background:#5b2bd3;font-weight:850;cursor:pointer; }
.visit-link-row button { padding:.55rem .8rem; }
.visit-pets { position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:.2rem;min-height:19rem;margin:.6rem 0;border-radius:1.2rem;overflow:hidden;background:url('/assets/images/rooms/jungle-home-v1.png') center/cover no-repeat;box-shadow:inset 0 0 0 1px rgba(255,255,255,.45); }
.visit-pets::after { content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(17,62,43,.25));pointer-events:none; }
.visit-pet { position:relative;z-index:2;display:grid;justify-items:center;margin:0;padding:.5rem;transition:transform .42s cubic-bezier(.2,.8,.3,1); }
.visit-pet img { width:100%;height:14rem;object-fit:contain;filter:drop-shadow(0 .65rem .45rem rgba(8,37,28,.3));animation:visit-pet-breathe 1.45s ease-in-out infinite; }
.visit-pet figcaption { margin-top:-.8rem;padding:.25rem .6rem;border-radius:999px;background:rgba(255,255,255,.9);font-size:.72rem;font-weight:900; }
.visit-heart { position:relative;z-index:3;align-self:center;color:#f45f86;font-size:2rem;text-shadow:0 .2rem .5rem rgba(107,26,55,.25);animation:visit-heart-float 1.2s ease-in-out infinite; }
.visit-actions { display:grid;grid-template-columns:1fr 1fr auto;gap:.45rem;margin-top:.7rem; }
.visit-actions button { min-height:2.75rem;padding:.55rem .7rem; }
.visit-actions button:nth-child(2) { background:#e74676; }
.visit-actions .visit-leave { color:#274b43;background:#e4eee9; }
.visit-actions button:disabled { opacity:.55;cursor:wait; }
.visit-error { min-height:1.25rem!important;margin:0!important;padding:0 .8rem .75rem;color:#9b2041!important;font-weight:800; }
.visit-action-kiss .visit-pet-host { transform:translateX(19%) rotate(3deg); }
.visit-action-kiss .visit-pet-guest { transform:translateX(-19%) rotate(-3deg); }
.visitor-pet-home.visit-action-kiss { animation:visitor-kiss 1.05s ease-in-out 2; }
.visit-action-play .visit-pet img { animation:visit-play-jump .48s ease-in-out 4; }
.visitor-pet-home.visit-action-play { animation:visit-play-jump .48s ease-in-out 4; }
@keyframes visitor-idle { 0%,100%{transform:translateY(.25rem) rotate(-1.5deg)}50%{transform:translateY(-.55rem) rotate(1.5deg)} }
@keyframes visit-pet-breathe { 0%,100%{transform:translateY(.15rem) scale(.99)}50%{transform:translateY(-.4rem) scale(1.02)} }
@keyframes visit-heart-float { 0%,100%{transform:translateY(.2rem) scale(.9)}50%{transform:translateY(-.7rem) scale(1.15)} }
@keyframes visit-play-jump { 0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-2.2rem) rotate(4deg)} }
@keyframes visitor-kiss { 0%,100%{transform:translateX(0) rotate(0)}50%{transform:translateX(-55%) rotate(-7deg) scale(1.06)} }
@media(max-width:44rem){
  body.game-active .invite-pet { padding:.25rem .4rem;font-size:.58rem; }
  body.game-active .visitor-pet-home { width:min(27%,6.5rem);right:2%;bottom:4%; }
  .visit-dialog { width:calc(100% - .5rem);max-height:calc(100dvh - .5rem);border-radius:.9rem; }
  .visit-invite-view,.visit-play-view { padding:.75rem; }
  .visit-dialog h2 { font-size:1.2rem; }
  .visit-dialog p { font-size:.7rem; }
  .visit-qr { width:min(10.5rem,42dvh);height:min(10.5rem,42dvh);margin:.45rem auto; }
  .visit-pets { min-height:13.5rem;margin:.35rem 0; }
  .visit-pet img { height:10rem; }
  .visit-actions { grid-template-columns:1fr 1fr;gap:.28rem; }
  .visit-actions .visit-leave { grid-column:1/-1;min-height:2.2rem; }
  .visit-actions button { min-height:2.35rem;padding:.35rem;font-size:.68rem; }
}
/* v30: ciclo diário da casinha — noite às 20h e sono das 22h às 07h. */
.room-scene::before { transition: filter 1.8s ease, transform 1.8s ease; }
.room-scene.night-mode::before { filter: brightness(.38) saturate(.72) hue-rotate(12deg); }
.room-scene.night-mode::after {
  background: linear-gradient(180deg,rgba(4,8,39,.7) 0%,rgba(8,19,57,.42) 52%,rgba(2,15,29,.58) 100%);
}
.scene-moon {
  position: absolute !important;
  z-index: 2 !important;
  top: 13%;
  right: 8%;
  display: grid;
  justify-items: center;
  gap: .15rem;
  color: #fff8bf;
  opacity: 0;
  transform: translateY(-1.5rem) scale(.72);
  transition: opacity 1.4s ease, transform 1.4s cubic-bezier(.2,.8,.3,1);
  pointer-events: none;
  filter: drop-shadow(0 0 1.2rem rgba(255,244,161,.75));
}
.scene-moon span { font-size: clamp(3rem,8vw,5.8rem); line-height: 1; }
.scene-moon small { padding: .2rem .45rem; border-radius: 999px; color: #18253e; background: rgba(255,248,191,.9); font-size: .68rem; font-weight: 900; }
.night-mode .scene-moon { opacity: 1; transform: translateY(0) scale(1); }
.wake-pet {
  position: absolute;
  z-index: 10;
  left: 50%;
  bottom: 9%;
  display: grid;
  grid-template-columns: auto auto;
  align-items: center;
  gap: .12rem .55rem;
  min-width: 12rem;
  padding: .55rem .85rem;
  border: .16rem solid rgba(255,255,255,.94);
  border-radius: 1rem;
  color: #192c28;
  background: linear-gradient(135deg,#fff5a3,#d9ff6b);
  box-shadow: 0 .7rem 1.5rem rgba(2,10,30,.3),0 0 1.2rem rgba(255,244,161,.32);
  cursor: pointer;
  transform: translateX(-50%);
  animation: wake-button 2.2s ease-in-out infinite;
}
.wake-pet span { grid-row: 1 / 3; font-size: 1.65rem; }
.wake-pet strong { font-size: .86rem; text-align: left; }
.wake-pet small { font-size: .62rem; font-weight: 750; text-align: left; }
.pet-scheduled-sleep #sprite-canvas { pointer-events: none !important; filter: saturate(.72) brightness(.82); }
.pet-scheduled-sleep::after {
  content: "Z  z  z";
  position: absolute;
  z-index: 8;
  left: 61%;
  top: 24%;
  color: #eef3ff;
  font-size: clamp(1.1rem,3vw,2rem);
  font-weight: 950;
  letter-spacing: .25rem;
  text-shadow: 0 0 .7rem #8496ff;
  animation: sleeping-z 2.4s ease-in-out infinite;
  pointer-events: none;
}
@keyframes sleeping-z { 0%,100% { opacity:.35; transform:translateY(.35rem) scale(.9); } 50% { opacity:1; transform:translateY(-.65rem) scale(1.08); } }
@keyframes wake-button { 50% { transform:translateX(-50%) translateY(-.2rem); box-shadow:0 .9rem 1.8rem rgba(2,10,30,.34),0 0 1.7rem rgba(255,244,161,.48); } }
@media (max-width:44rem) {
  body.game-active .scene-moon { top: 10%; right: 4%; }
  body.game-active .scene-moon span { font-size: 2.6rem; }
  body.game-active .scene-moon small { display: none; }
  body.game-active .wake-pet { bottom: .35rem; min-width: 10.5rem; padding: .32rem .55rem; border-radius: .7rem; }
  body.game-active .wake-pet span { font-size: 1.25rem; }
  body.game-active .wake-pet strong { font-size: .72rem; }
  body.game-active .wake-pet small { font-size: .53rem; }
}
/* v31: cadastro integral e rolável no Chrome móvel, inclusive após sair do jogo. */
@media (max-width:44rem) {
  body:not(.game-active) {
    width: 100%;
    height: auto;
    min-height: 100dvh;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  body:not(.game-active) .game-shell {
    width: 100%;
    height: auto;
    min-height: 100dvh;
    grid-template-rows: auto auto;
    align-content: start;
    padding: max(.55rem,env(safe-area-inset-top)) .55rem calc(2rem + env(safe-area-inset-bottom));
    overflow: visible;
  }
  body:not(.game-active) .auth-shell,
  body:not(.game-active) .auth-shell.choosing-pet {
    height: auto;
    max-height: none;
    align-self: start;
    overflow: visible;
  }
  body:not(.game-active) .auth-card {
    height: auto;
    max-height: none;
    overflow: visible;
    border-radius: 1.2rem;
    padding-bottom: calc(1.4rem + env(safe-area-inset-bottom));
  }
  body:not(.game-active) .auth-tabs {
    top: max(.35rem,env(safe-area-inset-top));
    background: rgba(233,239,235,.96);
    backdrop-filter: blur(.55rem);
  }
  body:not(.game-active) #register-form {
    padding-bottom: .75rem;
  }
  body:not(.game-active) .pet-options {
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: .32rem;
  }
  body:not(.game-active) .pet-option > span {
    min-height: 6.65rem;
    grid-template-rows: 3.9rem auto auto;
    padding: .25rem .12rem .35rem;
    border-radius: .65rem;
  }
  body:not(.game-active) .pet-option img { height: 3.85rem; }
  body:not(.game-active) .pet-option strong {
    font-size: clamp(.58rem,2.6vw,.72rem);
    line-height: 1;
  }
  body:not(.game-active) .pet-option small {
    min-height: 1em;
    font-size: clamp(.52rem,2.25vw,.64rem);
    line-height: 1;
  }
  body:not(.game-active) .pet-option input:checked + span::after {
    top: .2rem;
    right: .2rem;
    width: 1.15rem;
    height: 1.15rem;
    font-size: .68rem;
  }
  body:not(.game-active) .auth-card form { gap: .72rem; }
  body:not(.game-active) .auth-card input { min-height: 3rem; }
  body:not(.game-active) .primary-button { margin-top: .15rem; }
}
@media (max-width:22rem) {
  body:not(.game-active) .pet-options { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

/* v32: Jokenpô sincronizado entre os dois bichinhos convidados. */
.visit-play-view {
  max-height: calc(100dvh - 2rem);
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
}
.visit-actions { grid-template-columns: 1fr 1fr 1fr auto; }
.visit-actions #visit-rps { color:#173d35;background:linear-gradient(135deg,#c8f54e,#8ce9bb); }
.visit-rps {
  margin:.55rem 0 .1rem;
  padding:.7rem;
  border:1px solid rgba(42,86,73,.16);
  border-radius:1rem;
  color:#173d35;
  background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(235,255,204,.96));
  box-shadow:0 .7rem 1.5rem rgba(26,65,52,.12);
}
.rps-heading { display:flex;align-items:center;justify-content:space-between;text-align:left; }
.rps-heading span { color:#5b2bd3;font-size:.62rem;font-weight:950;letter-spacing:.12em;text-transform:uppercase; }
.rps-heading h3 { margin:-.05rem 0 0;font-size:1.22rem;line-height:1.05; }
.rps-heading button {
  width:2rem;height:2rem;border:0;border-radius:50%;color:#31534b;background:#e6f0eb;font-size:1.2rem;cursor:pointer;
}
.rps-board { display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.45rem;margin:.45rem 0; }
.rps-team {
  display:grid;grid-template-rows:auto 3.5rem auto;align-items:center;justify-items:center;min-width:0;padding:.45rem;
  border:1px solid #d8e6df;border-radius:.85rem;background:rgba(255,255,255,.88);
}
.rps-team strong { width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.74rem; }
.rps-team small { color:#657b75;font-size:.62rem;font-weight:800; }
.rps-hand { display:grid;place-items:center;font-size:2.45rem;line-height:1;filter:drop-shadow(0 .25rem .18rem rgba(24,53,45,.18)); }
.rps-versus { display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;color:#fff;background:#5b2bd3;font-size:.65rem;box-shadow:0 .25rem .6rem rgba(91,43,211,.28); }
.visit-rps .rps-result { min-height:1.2rem;margin:.3rem auto!important;color:#213f38!important;font-size:.75rem;font-weight:900; }
.rps-choices { display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem; }
.rps-choices button,.rps-new {
  border:0;border-radius:.75rem;color:#173d35;background:#fff;box-shadow:inset 0 0 0 1px #cfddd7;font-weight:900;cursor:pointer;
}
.rps-choices button { display:grid;justify-items:center;gap:.1rem;min-height:3.75rem;padding:.35rem;transition:transform .18s ease,background .18s ease,box-shadow .18s ease; }
.rps-choices button span { font-size:1.55rem; }
.rps-choices button strong { font-size:.68rem; }
.rps-choices button:hover:not(:disabled),.rps-choices button:focus-visible { transform:translateY(-.15rem);background:#efffd0;box-shadow:inset 0 0 0 2px #91c92a,0 .35rem .7rem rgba(43,84,69,.12); }
.rps-choices button.selected { background:#dfff94;box-shadow:inset 0 0 0 2px #74a916; }
.rps-choices button:disabled { opacity:.58;cursor:default; }
.rps-choices button.selected:disabled { opacity:1; }
.rps-new { width:100%;min-height:2.65rem;padding:.5rem;color:#fff;background:#5b2bd3;box-shadow:0 .4rem .85rem rgba(91,43,211,.22); }
.visit-dialog.rps-open .visit-pets { min-height:11rem; }
.visit-dialog.rps-open .visit-pet img { height:8rem; }
.visit-dialog.rps-host-win .visit-pet-host,
.visit-dialog.rps-guest-win .visit-pet-guest { animation:rps-winner 1.05s cubic-bezier(.2,.75,.28,1) 2; }
.visit-dialog.rps-host-win .visit-pet-guest,
.visit-dialog.rps-guest-win .visit-pet-host { animation:rps-loser 1.05s ease 2; }
.visit-dialog.rps-draw .visit-pet { animation:rps-draw .72s ease-in-out 3; }
@keyframes rps-winner { 0%,100%{transform:translateY(0) rotate(0) scale(1)}45%{transform:translateY(-1.4rem) rotate(5deg) scale(1.08)} }
@keyframes rps-loser { 0%,100%{transform:translateY(0) scale(1);filter:none}50%{transform:translateY(.25rem) scale(.93);filter:grayscale(.45)} }
@keyframes rps-draw { 0%,100%{transform:translateX(0)}30%{transform:translateX(-.35rem) rotate(-2deg)}70%{transform:translateX(.35rem) rotate(2deg)} }
@media(max-width:44rem){
  .visit-play-view { max-height:calc(100dvh - .5rem);padding-bottom:max(.75rem,env(safe-area-inset-bottom)); }
  .visit-actions { grid-template-columns:repeat(3,1fr); }
  .visit-actions .visit-leave { grid-column:1/-1; }
  .visit-dialog.rps-open .visit-pets { min-height:7.4rem; }
  .visit-dialog.rps-open .visit-pet img { height:5.9rem; }
  .visit-dialog.rps-open .visit-heart { font-size:1.3rem; }
  .visit-rps { margin:.3rem 0;padding:.5rem;border-radius:.75rem; }
  .rps-heading h3 { font-size:1rem; }
  .rps-board { margin:.3rem 0;gap:.25rem; }
  .rps-team { grid-template-rows:auto 2.65rem auto;padding:.3rem;border-radius:.65rem; }
  .rps-hand { font-size:1.9rem; }
  .rps-versus { width:1.65rem;height:1.65rem;font-size:.55rem; }
  .rps-choices { gap:.25rem; }
  .rps-choices button { min-height:3rem;padding:.2rem; }
  .rps-choices button span { font-size:1.25rem; }
}
/* v34: movimento contínuo noturno e carinho com chuva de corações. */
.petting-heart {
  color: var(--heart-color,#ff3f78);
  font-size: clamp(1.9rem,8vw,3.6rem);
  text-shadow:0 .18rem .4rem rgba(83,15,42,.28),0 0 .55rem rgba(255,255,255,.75);
  animation:petting-heart-burst 1.25s cubic-bezier(.16,.72,.23,1) var(--heart-delay,0s) forwards;
  will-change:transform,opacity;
}
@keyframes petting-heart-burst {
  0% { opacity:0;transform:translate(-50%,-15%) scale(.3) rotate(-12deg); }
  18% { opacity:1; }
  55% { opacity:1;transform:translate(-50%,-125%) scale(var(--heart-scale,1)) rotate(5deg); }
  100% { opacity:0;transform:translate(calc(-50% + var(--heart-drift,0px)),-285%) scale(1.5) rotate(14deg); }
}
.pet-scheduled-sleep #sprite-canvas:not(.game-sprite-canvas) {
  pointer-events:auto !important;
  touch-action:none;
  cursor:pointer;
}
@media(max-width:44rem){
  body.game-active .petting-heart { font-size:clamp(1.75rem,10vw,3rem); }
}
/* v35: banheiro visível durante a ação. */
.pet-viewport.pet-action-toilet-pee::before,
.pet-viewport.pet-action-toilet-poop::before {
  position:absolute;
  z-index:7;
  right:12%;
  bottom:12%;
  display:grid;
  place-items:center;
  min-width:4.8rem;
  min-height:4.8rem;
  border:.18rem solid rgba(255,255,255,.9);
  border-radius:1.35rem;
  background:rgba(234,250,255,.9);
  box-shadow:0 .65rem 1.3rem rgba(18,56,65,.24);
  font-size:clamp(2.5rem,7vw,4.5rem);
  pointer-events:none;
  animation:toilet-prop 1.1s ease-in-out infinite;
}
.pet-viewport.pet-action-toilet-pee::before { content:"🚽 💦"; }
.pet-viewport.pet-action-toilet-poop::before { content:"🚽 💩"; }
@keyframes toilet-prop { 50%{transform:translateY(-.25rem) scale(1.04);} }
@media(max-width:44rem){
  body.game-active .pet-viewport.pet-action-toilet-pee::before,
  body.game-active .pet-viewport.pet-action-toilet-poop::before { right:3%;bottom:5%;min-width:3.2rem;min-height:3.2rem;border-radius:.8rem;font-size:1.8rem; }
}
/* v38: 50 espécies, combate e evolução adulta realmente distinta. */
.combat-summary{min-width:0}.combat-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.42rem}.combat-stats article{display:grid;grid-template-columns:2rem minmax(0,1fr);align-items:center;gap:.38rem;min-width:0;padding:.5rem;border:1px solid #d9e4df;border-radius:.78rem;background:rgba(255,255,255,.82)}.combat-stats article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.58rem;background:#efffd2;font-size:1rem}.combat-stats article>div{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.1rem .25rem;min-width:0}.combat-stats strong,.combat-stats small{font-size:.7rem}.combat-stats small{color:#5323bd;font-weight:950}.combat-stats i{grid-column:1/-1;height:.28rem;overflow:hidden;border-radius:999px;background:#dfe8e3}.combat-stats i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#6130d8,#c5f54e)}
.power-test{color:white!important;border-color:#5b2bd3!important;background:linear-gradient(135deg,#7138e6,#371081)!important;box-shadow:0 .3rem .75rem rgba(91,43,211,.24)}
.pet-viewport.pet-is-adult.sprite-ready #sprite-canvas{opacity:1;pointer-events:auto;touch-action:none;cursor:pointer}.pet-viewport.pet-is-adult.sprite-ready .pet-rig{display:none!important}.pet-viewport.pet-is-adult.sprite-ready #pet-canvas{opacity:0!important}.pet-viewport.pet-is-adult #sprite-canvas{filter:drop-shadow(0 1.15rem 1rem rgba(42,12,55,.36))}.pet-viewport.pet-action-power{isolation:isolate}.pet-viewport.pet-action-power::after{content:"";position:absolute;z-index:2;left:50%;top:50%;width:min(60%,28rem);aspect-ratio:1;border-radius:50%;background:repeating-conic-gradient(from 0deg,rgba(198,245,77,.7) 0 4deg,transparent 4deg 28deg);filter:blur(1px);transform:translate(-50%,-50%);animation:adult-power-aura .9s linear infinite;pointer-events:none}@keyframes adult-power-aura{to{transform:translate(-50%,-50%) rotate(1turn) scale(1.08)}}
.duel-panel{margin:.55rem 0 .1rem;padding:.72rem;border:1px solid rgba(85,42,175,.22);border-radius:1rem;color:#183b34;background:linear-gradient(145deg,#fff,#f0e9ff);box-shadow:0 .7rem 1.4rem rgba(51,28,105,.14)}.duel-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.duel-heading span{color:#6935dc;font-size:.6rem;font-weight:950;letter-spacing:.1em;text-transform:uppercase}.duel-heading h3{margin:.05rem 0;font-size:1.15rem}.duel-heading button{width:2rem;height:2rem;border:0;border-radius:50%;color:#31534b;background:#e5ebe8;font-size:1.2rem;cursor:pointer}.duel-panel>p{margin:.35rem 0;font-size:.75rem;font-weight:800;text-align:center}.duel-fighters{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.4rem}.duel-fighters article{min-width:0;padding:.45rem;border-radius:.7rem;background:rgba(255,255,255,.86);text-align:center}.duel-fighters strong,.duel-fighters small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem}.duel-fighters>b{display:grid;place-items:center;width:1.8rem;height:1.8rem;border-radius:50%;color:#fff;background:#4d1cab;font-size:.58rem}.duel-hp{height:.42rem;margin:.28rem 0;overflow:hidden;border-radius:999px;background:#e5dede}.duel-hp span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#e6425f,#c8f54e);transition:width .35s ease}.duel-moves{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem;margin:.5rem 0}.duel-moves button,.duel-start{min-height:2.8rem;border:0;border-radius:.7rem;color:#183b34;background:#fff;box-shadow:inset 0 0 0 1px #d7cbed;font-size:1rem;cursor:pointer}.duel-moves button strong{display:block;font-size:.66rem}.duel-moves button.selected{background:#dfff92;box-shadow:inset 0 0 0 2px #79a91e}.duel-moves button:disabled{opacity:.55;cursor:default}.duel-start{width:100%;color:white;background:#5b2bd3;font-size:.74rem;font-weight:900;box-shadow:0 .4rem .85rem rgba(91,43,211,.22)}.visit-dialog.duel-open .visit-pets{min-height:9rem}.visit-dialog.duel-open .visit-pet img{height:6.7rem}.visit-dialog.duel-hit-host .visit-pet-host,.visit-dialog.duel-hit-guest .visit-pet-guest{animation:duel-hit .5s ease 2}.visit-dialog.duel-power .visit-pet{animation:duel-power .7s ease 2}@keyframes duel-hit{30%{transform:translateX(-.6rem) rotate(-5deg);filter:brightness(1.7) saturate(.4)}70%{transform:translateX(.45rem) rotate(4deg)}}@keyframes duel-power{50%{transform:translateY(-.9rem) scale(1.1);filter:drop-shadow(0 0 .7rem #bdf34a)}}
@media(max-width:64rem){.care-panel>section:nth-of-type(3){grid-column:1}.care-panel>section:nth-of-type(4){grid-column:2;grid-row:2/span 2}}
@media(max-width:44rem){body.game-active .stage-row{min-height:1.05rem;gap:.16rem;padding:.05rem .2rem;border-radius:.42rem}body.game-active .stage-row>div:first-child{min-width:2.4rem}body.game-active .stage-row>div:first-child .stage-kicker{display:none}body.game-active .stage-row>div:first-child strong{font-size:.66rem}body.game-active .quiet-button{min-height:1.3rem;padding:.08rem .28rem;border-radius:.38rem;font-size:.53rem;white-space:nowrap}body.game-active .hatch-progress{width:min(6.2rem,28%);font-size:.5rem}body.game-active .care-panel>section:nth-of-type(2){grid-column:1;grid-row:2}body.game-active .care-panel>section:nth-of-type(3){grid-column:1;grid-row:3}body.game-active .care-panel>section:nth-of-type(4){grid-column:2;grid-row:2/span 2;min-width:0}body.game-active .combat-summary .section-heading{display:none}body.game-active .combat-stats{gap:.12rem}body.game-active .combat-stats article{display:grid;grid-template-columns:1fr;justify-items:center;gap:.05rem;padding:.12rem;border-radius:.35rem}body.game-active .combat-stats article>span{width:1.15rem;height:1.15rem;border-radius:.3rem;font-size:.62rem}body.game-active .combat-stats article>div{display:flex;gap:.12rem}body.game-active .combat-stats strong{font-size:0}body.game-active .combat-stats small{font-size:.52rem}body.game-active .combat-stats i{display:none}.visit-actions{grid-template-columns:repeat(2,1fr)}.visit-actions .visit-leave{grid-column:1/-1}.duel-panel{margin:.25rem 0;padding:.45rem;border-radius:.72rem}.duel-heading h3{font-size:.92rem}.duel-panel>p{margin:.22rem 0;font-size:.63rem}.duel-fighters article{padding:.3rem}.duel-moves{margin:.3rem 0;gap:.22rem}.duel-moves button,.duel-start{min-height:2.25rem}.visit-dialog.duel-open .visit-pets{min-height:6.5rem}.visit-dialog.duel-open .visit-pet img{height:5rem}}
/* v40: informações sob demanda, sem faixa sobre o bichinho. */
.scene-info-panel { position:absolute !important; z-index:10 !important; top:.7rem; right:.7rem; width:min(12.25rem,calc(100% - 1.4rem)); padding:.65rem .72rem; border:1px solid rgba(255,255,255,.76); border-radius:.85rem; color:#153b32; background:rgba(255,255,255,.92); box-shadow:0 .7rem 1.5rem rgba(5,30,18,.2); backdrop-filter:blur(.45rem); }
.scene-info-panel.hidden { display:none !important; }
.scene-info-panel > span { display:block; color:#61726d; font-size:.59rem; font-weight:900; letter-spacing:.09em; text-transform:uppercase; }
.scene-info-panel > strong { display:block; margin:.1rem 0 .42rem; font-size:1.08rem; line-height:1.05; }
.scene-info-panel dl { display:grid; grid-template-columns:1fr 1fr; gap:.35rem; margin:0; }
.scene-info-panel dl div { min-width:0; padding:.3rem .36rem; border-radius:.48rem; background:#edf3ee; }
.scene-info-panel dt { color:#667974; font-size:.52rem; font-weight:850; }
.scene-info-panel dd { margin:.04rem 0 0; overflow:hidden; color:#153b32; font-size:.66rem; font-weight:900; text-overflow:ellipsis; white-space:nowrap; }
.stage-row { min-height:0; justify-content:flex-end; padding:.18rem; border-color:transparent; background:transparent; box-shadow:none; backdrop-filter:none; }
.stage-row .hatch-progress { margin-right:auto; }
.scene-info-toggle { color:#fff !important; border-color:#245b4d !important; background:rgba(21,59,50,.94) !important; box-shadow:0 .25rem .6rem rgba(5,30,18,.22); }
@media (max-width:44rem) { body.game-active .room-scene { grid-template-rows:auto minmax(0,1fr) auto; } body.game-active .scene-info-panel { top:.4rem; right:.4rem; width:min(10.2rem,calc(100% - .8rem)); padding:.45rem .52rem; border-radius:.65rem; } body.game-active .scene-info-panel > span { font-size:.49rem; } body.game-active .scene-info-panel > strong { margin:.06rem 0 .26rem; font-size:.82rem; } body.game-active .scene-info-panel dl { gap:.22rem; } body.game-active .scene-info-panel dl div { padding:.2rem .25rem; border-radius:.34rem; } body.game-active .scene-info-panel dt { font-size:.44rem; } body.game-active .scene-info-panel dd { font-size:.54rem; } body.game-active .stage-row { min-height:0; padding:.05rem .12rem; border:0; background:transparent; } }
/* v42: coleção e atributos ficam somente dentro de Infos. */
.info-battle-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.28rem;margin-top:.42rem}.info-battle-stats>div{display:grid;grid-template-columns:auto 1fr;gap:.08rem .2rem;align-items:center;padding:.28rem;border-radius:.46rem;background:#eef4f0;font-size:.56rem}.info-battle-stats span{grid-row:span 2;font-size:.8rem}.info-battle-stats strong{font-size:.51rem}.info-battle-stats b{color:#5730bd;font-size:.58rem}.info-battle-stats i{grid-column:1/-1;height:.2rem;overflow:hidden;border-radius:99px;background:#d6e1da}.info-battle-stats em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#6335d7,#c5f54e)}.info-roster{display:flex;max-height:5.6rem;gap:.26rem;margin-top:.42rem;overflow:auto;padding-bottom:.08rem}.info-roster-pet{flex:0 0 auto;max-width:7rem;overflow:hidden;padding:.26rem .35rem;border:1px solid #d6e3dc;border-radius:.44rem;color:#224c41;background:#fff;font-size:.5rem;font-weight:850;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.info-roster-pet.active{color:#fff;border-color:#4e20b5;background:#5f2bd1}.info-roster-pet:disabled{opacity:1;cursor:default}@media(max-width:44rem){body.game-active .info-battle-stats{gap:.16rem;margin-top:.25rem}body.game-active .info-battle-stats>div{padding:.16rem;border-radius:.3rem;font-size:.45rem}body.game-active .info-battle-stats span{font-size:.62rem}body.game-active .info-battle-stats strong{font-size:.4rem}body.game-active .info-battle-stats b{font-size:.46rem}body.game-active .info-roster{max-height:3.75rem;margin-top:.25rem}.info-roster-pet{max-width:5.5rem;padding:.16rem .22rem;border-radius:.3rem;font-size:.42rem}}

/* v45: fallback seguro — o pet nunca desaparece durante falha/carregamento do sprite. */
.pet-viewport.sprite-ready:not(.sprite-rendering) .pet-rig { display:block !important; }
.pet-viewport.sprite-ready:not(.sprite-rendering) .pet-rig-source { display:block !important; }
.pet-viewport.sprite-ready:not(.sprite-rendering) .pet-rig-part { display:none !important; }

/* v46: partida mobile pensada para tela deitada. */
.rotate-device{display:none}
@media (max-width:44rem) and (orientation:portrait){
  body.game-active{overflow:hidden!important;background:#173e2b}
  body.game-active .game-shell{visibility:hidden!important;pointer-events:none!important}
  body.game-active .rotate-device{position:fixed;z-index:9999;inset:0;display:grid;place-content:center;justify-items:center;gap:.65rem;padding:2rem;color:#fff;text-align:center;background:radial-gradient(circle at 50% 35%,#427a58 0,#173e2b 65%)}
  body.game-active .rotate-device span{display:grid;place-items:center;width:4.5rem;height:4.5rem;border:2px solid rgba(255,255,255,.6);border-radius:1.2rem;font-size:2.6rem;animation:rotate-device-hint 1.6s ease-in-out infinite}
  body.game-active .rotate-device strong{font-size:1.25rem}.rotate-device small{max-width:17rem;line-height:1.45;color:#d9efe0}
}
@keyframes rotate-device-hint{0%,100%{transform:rotate(0deg)}50%{transform:rotate(90deg)}}
@media (max-width:58rem) and (orientation:landscape){
  body.game-active,.game-active .game-shell{width:100vw;height:100dvh;min-height:0;overflow:hidden}
  body.game-active .game-shell{padding:max(.25rem,env(safe-area-inset-top)) max(.3rem,env(safe-area-inset-right)) max(.25rem,env(safe-area-inset-bottom)) max(.3rem,env(safe-area-inset-left));grid-template-rows:2.1rem minmax(0,1fr)}
  body.game-active .topbar{min-height:1.8rem}.game-active .brand{font-size:.78rem}.game-active .brand-mark{width:1.6rem;height:1.6rem}.game-active .wallet,.game-active #delete-account-button{display:none!important}
  body.game-active .pet-room{grid-template-columns:minmax(0,1.55fr) minmax(15rem,.82fr);grid-template-rows:minmax(0,1fr);gap:.35rem}
  body.game-active .room-scene{height:100%;min-height:0}.game-active .care-panel{height:100%;min-height:0;overflow:hidden}
}
.invite-pet:disabled{display:inline-flex!important;align-items:center;opacity:.62;cursor:not-allowed}
/* v51: cena estável e painel lateral futurista. A arte inteira fica ancorada no chão. */
body.game-active { background:radial-gradient(circle at 20% 0,#122b3a 0,#07121c 43%,#03070d 100%); }
.pet-viewport { min-height:0; }
.pet-viewport #pet-canvas,
.pet-viewport #sprite-canvas { opacity:0 !important; pointer-events:none !important; }
.pet-viewport .pet-rig {
  display:block !important;
  inset:auto auto 1.5% 50%;
  width:auto;
  height:min(84%,31rem);
  aspect-ratio:1224 / 1285;
  transform:translateX(-50%) perspective(55rem) rotateY(var(--pet-turn)) scale(var(--pet-zoom));
  transform-origin:50% 100%;
  animation:pet-ground-idle 3.2s ease-in-out infinite;
  z-index:4;
}
.pet-viewport.pet-is-baby.sprite-ready .pet-rig,
.pet-viewport.pet-is-adult.sprite-ready .pet-rig,
.pet-viewport.three-ready.pet-is-baby .pet-rig,
.pet-viewport.three-ready.pet-is-adult .pet-rig {
  display:block !important;
}
.pet-viewport.pet-is-baby.sprite-ready #sprite-canvas,
.pet-viewport.pet-is-adult.sprite-ready #sprite-canvas,
.pet-viewport.three-ready.pet-is-baby #pet-canvas,
.pet-viewport.three-ready.pet-is-adult #pet-canvas {
  opacity:0 !important;
  pointer-events:none !important;
}
.pet-viewport .pet-rig .pet-rig-source {
  display:block !important;
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center bottom;
  clip-path:none !important;
  transform:none !important;
  animation:none !important;
}
.pet-viewport .pet-rig .pet-rig-part { display:none !important; }
@keyframes pet-ground-idle {
  0%,100% { transform:translateX(-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(0) scale(var(--pet-zoom)); }
  50% { transform:translateX(-50%) perspective(55rem) rotateY(var(--pet-turn)) translateY(-.42rem) scale(var(--pet-zoom)); }
}
.care-panel {
  color:#eaf7f5;
  border-color:rgba(100,228,207,.22);
  background:linear-gradient(160deg,#102b37 0%,#071923 54%,#050d15 100%);
  box-shadow:0 1.2rem 3.5rem rgba(0,0,0,.38),inset 0 1px 0 rgba(169,255,238,.08);
}
.care-panel .request-card,
.care-panel .need-row,
.care-panel .care-action,
.care-panel .admin-time,
.care-panel .combat-summary {
  color:#eaf7f5;
  border-color:rgba(147,239,222,.15);
  background:rgba(8,27,38,.72);
  box-shadow:inset 0 1px 0 rgba(207,255,246,.04);
}
.care-panel .request-card.active { background:linear-gradient(135deg,#0b695f,#073047); }
.care-panel .request-label,.care-panel .section-heading span,.care-panel .need-row small,.care-panel .care-action small { color:#97b9c3; }
.care-panel .section-heading h2,.care-panel .need-row strong,.care-panel .care-action strong { color:#f2fffd; }
.care-panel .need-bar,.care-panel .care-action .action-status { background:rgba(172,226,220,.16); }
.care-panel .care-action.ready { border-color:rgba(141,255,179,.7); background:linear-gradient(135deg,rgba(22,93,76,.94),rgba(10,39,54,.94)); }
.care-panel .care-action.ready .action-status { color:#07201d; background:#b6f25d; }
.care-panel .admin-time { border-color:rgba(130,92,255,.58); background:linear-gradient(145deg,rgba(26,16,57,.94),rgba(8,29,43,.94)); }
.care-panel .admin-time button { color:#f5f1ff; border-color:rgba(181,156,255,.35); background:rgba(105,69,220,.28); }
.care-panel .admin-time select { color:#eaf7f5; border-color:rgba(147,239,222,.25); background:#0b2331; }
@media (max-width:58rem) and (orientation:landscape) {
  .pet-viewport .pet-rig { height:min(88%,23rem); bottom:1%; }
  .care-panel { border-radius:1rem; }
}

/* v52: organização vertical do comando de cuidados. */
.care-panel { display:flex; flex-direction:column; align-items:stretch; gap:.7rem; }
.care-panel > section { min-width:0; }
.care-panel > section[aria-labelledby="needs-title"] { order:2; }
.care-panel > section[aria-labelledby="actions-title"] { order:3; }
.care-panel .care-progress { order:4; }
.care-panel .admin-time { order:5; }
.care-panel .feedback { order:6; }
.care-panel .section-heading { padding:0 .08rem .42rem; margin:0; border-bottom:1px solid rgba(147,239,222,.12); }
.care-panel .section-heading h2 { letter-spacing:.02em; text-transform:uppercase; font-size:.73rem; }
.care-panel .section-heading span { color:#82ead8; font-size:.62rem; }
.care-panel .needs { grid-template-columns:repeat(3,minmax(0,1fr)); gap:.38rem; }
.care-panel .need-row { min-height:4.6rem; padding:.48rem; border-radius:.7rem; }
.care-panel .need-info strong { color:#eafffb; }
.care-panel .actions { display:grid; gap:.38rem; }
.care-panel .care-action { border-radius:.72rem; }
.care-panel .feedback { color:#8ef6de; }
@media (max-width:58rem) and (orientation:landscape) {
  body.game-active .care-panel { display:flex; flex-direction:column; gap:.38rem; padding:.45rem; }
  body.game-active .care-panel > section[aria-labelledby="needs-title"],
  body.game-active .care-panel > section[aria-labelledby="actions-title"] { grid-column:auto; grid-row:auto; }
  body.game-active .care-panel .section-heading { padding:0 0 .22rem; }
  body.game-active .care-panel .section-heading h2 { font-size:.63rem; }
  body.game-active .care-panel .needs { grid-template-columns:repeat(3,minmax(0,1fr)); gap:.2rem; }
  body.game-active .care-panel .need-row { min-height:2.75rem; padding:.22rem; }
  body.game-active .care-panel .actions { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.22rem; }
  body.game-active .care-panel .care-action { min-height:2.6rem; padding:.22rem .28rem; }
  body.game-active .care-panel .care-action small { display:none; }
  body.game-active .care-panel .admin-time { grid-column:auto; }
}
/* v53: ovo usa uma única imagem original, sem sprite, recorte ou rig. */
.pet-viewport.pet-is-egg .pet-rig {
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  aspect-ratio:auto !important;
  transform:none !important;
  animation:none !important;
  filter:none !important;
}
.pet-viewport.pet-is-egg .pet-rig .pet-rig-source {
  display:block !important;
  position:absolute !important;
  inset:auto auto 4% 50% !important;
  width:min(20rem,55%) !important;
  height:22rem !important;
  object-fit:contain !important;
  object-position:center bottom !important;
  transform:translateX(-50%) !important;
  transform-origin:50% 100% !important;
  animation:egg-ground-idle 2.5s ease-in-out infinite !important;
  filter:drop-shadow(0 1.2rem 1rem rgba(23,60,52,.25)) !important;
}
@keyframes egg-ground-idle {
  0%,100% { transform:translateX(-50%) translateY(0) rotate(-1.2deg); }
  50% { transform:translateX(-50%) translateY(-.55rem) rotate(1.2deg); }
}
@media (max-width:58rem) and (orientation:landscape) {
  .pet-viewport.pet-is-egg .pet-rig .pet-rig-source { width:min(15rem,48%); height:17rem; bottom:2%; }
}
/* v54: o ovo sai do contêiner articulado; seu posicionamento passa a ser direto no palco. */
.pet-viewport.pet-is-egg .pet-rig { display:contents !important; }
.pet-viewport.pet-is-egg #pet-fallback {
  display:block !important;
  position:absolute !important;
  z-index:5 !important;
  left:50% !important;
  top:auto !important;
  right:auto !important;
  bottom:2% !important;
  width:min(19rem,46%) !important;
  height:min(82%,21rem) !important;
  object-fit:contain !important;
  object-position:center bottom !important;
  transform:translateX(-50%) !important;
  transform-origin:50% 100% !important;
  animation:egg-stage-idle 2.5s ease-in-out infinite !important;
}
@keyframes egg-stage-idle { 0%,100%{transform:translateX(-50%) translateY(0) rotate(-1deg)} 50%{transform:translateX(-50%) translateY(-.5rem) rotate(1deg)} }
@media (max-width:58rem) and (orientation:landscape) { .pet-viewport.pet-is-egg #pet-fallback { width:min(13.5rem,42%); height:min(84%,16rem); bottom:1%; } }
/* v119: escolha posterior, estoque e diamantes */
.register-order,.adoption-intro{margin:0;color:var(--ink-soft);font-size:.86rem;line-height:1.45}.adoption-form{max-height:min(76vh,52rem);overflow:auto;padding-right:.25rem}.adoption-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.adoption-heading h2{margin:.15rem 0 0}.diamond-balance{flex:0 0 auto;padding:.55rem .8rem;border:1px solid #82cfe0;border-radius:999px;color:#07394b;background:linear-gradient(145deg,#dfffff,#92eaff);box-shadow:0 .35rem 1rem #1185a333}.adoption-details{display:grid;grid-template-columns:1fr auto;gap:.25rem .8rem;padding:.7rem .8rem;border:1px solid #b8cfbf;border-radius:.8rem;background:#f4fbf5}.adoption-details strong,.adoption-details p{grid-column:1/-1}.adoption-details p{margin:0;color:var(--ink-soft);font-size:.78rem}.adoption-details span{color:#386052;font-size:.76rem;font-weight:750}.adoption-details b{color:#123e33;text-align:right}.diamond-checkout-note{margin:0;padding:.55rem .7rem;border-left:.25rem solid #35a9d0;color:#245466;background:#e9faff;font-size:.76rem}.pet-option>span{position:relative}.pet-option em{display:block;color:#31584c;font-size:.62rem;font-style:normal;font-weight:800;line-height:1.15}.pet-option b{position:absolute;top:.35rem;right:.35rem;padding:.22rem .36rem;border-radius:999px;color:#083d35;background:#c8ff71;font-size:.6rem;letter-spacing:.04em;box-shadow:0 .2rem .6rem #0002}.pet-option.raro b,.pet-option.épico b,.pet-option.lendário b{color:#fff;background:linear-gradient(135deg,#146d9d,#6437b7)}.pet-option.sold-out{cursor:not-allowed;opacity:.48}.pet-option.sold-out>span::before{content:'ESGOTADO';position:absolute;z-index:2;inset:42% .35rem auto;padding:.28rem;color:#fff;background:#8b2534;border-radius:.35rem;font-size:.65rem;font-weight:900;text-align:center}.pet-option input:disabled+span{filter:grayscale(.55)}
@media(max-width:700px){.adoption-form{max-height:73vh}.adoption-details{grid-template-columns:1fr}.adoption-details b{text-align:left}.pet-option em{font-size:.57rem}}
/* v151: trava definitiva da escolha inicial no viewport e impede salto do rádio invisível. */
body.adoption-active .pet-option{position:relative}
body.adoption-active .pet-option input[type="radio"]{
  position:absolute;
  top:0;
  left:0;
  width:1px;
  height:1px;
  min-height:0;
  margin:0;
  clip-path:inset(50%);
  overflow:hidden;
}
@media(max-width:44rem){
  body.adoption-active:not(.game-active){
    position:fixed;
    inset:0;
    width:100%;
    height:100dvh;
    min-height:0;
    overflow:hidden;
    overscroll-behavior:none;
  }
  body.adoption-active:not(.game-active) .game-shell{
    width:100%;
    height:100dvh;
    min-height:0;
    grid-template-rows:auto minmax(0,1fr);
    align-content:stretch;
    padding:max(.55rem,env(safe-area-inset-top)) .55rem max(.55rem,env(safe-area-inset-bottom));
    overflow:hidden;
  }
  body.adoption-active:not(.game-active) .auth-shell.choosing-pet{
    height:100%;
    min-height:0;
    max-height:100%;
    align-self:stretch;
    overflow:hidden;
  }
  body.adoption-active:not(.game-active) .auth-card{
    height:100%;
    min-height:0;
    max-height:100%;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }
}
/* Frontend configurável pelo administrador. */
.auth-shell.frontend-customized{background:linear-gradient(90deg,color-mix(in srgb,var(--frontend-primary) 14%,#fff),transparent),var(--frontend-background) center/cover fixed!important}.frontend-customized .auth-art{background:linear-gradient(145deg,color-mix(in srgb,var(--frontend-accent) 30%,#fff),color-mix(in srgb,var(--frontend-primary) 10%,var(--frontend-art)),var(--frontend-art))!important;color:var(--frontend-text)!important}.frontend-customized .auth-card{background:var(--frontend-card)!important;color:var(--frontend-text)!important}.frontend-customized .auth-card h2,.frontend-customized .auth-card label,.frontend-customized .auth-tabs button{color:var(--frontend-text)!important}.frontend-customized .auth-tabs button[aria-selected="true"]{box-shadow:inset 0 0 0 .22rem color-mix(in srgb,var(--frontend-primary) 15%,white)!important}.frontend-customized .primary-button{background:var(--frontend-primary)!important}.frontend-customized .auth-card input:focus{border-color:var(--frontend-primary)!important;outline-color:color-mix(in srgb,var(--frontend-primary) 22%,transparent)!important}
/* Fechamento direto do painel Informações. */
.scene-info-panel{position:absolute}.scene-info-close{position:absolute;top:.36rem;right:.36rem;display:grid;place-items:center;width:1.45rem;height:1.45rem;padding:0;border:1px solid rgba(21,59,50,.18);border-radius:50%;color:#153b32;background:rgba(255,255,255,.94);font-size:1.18rem;font-weight:900;line-height:1;cursor:pointer}.scene-info-close:hover{color:#fff;background:#245b4d}body.game-active .scene-info-close{color:#eafff9;border-color:rgba(116,255,215,.35);background:#0d3540}body.game-active .scene-info-close:hover{color:#06211d;background:#9cffce}@media(max-width:44rem){.scene-info-close{top:.2rem;right:.2rem;width:1.2rem;height:1.2rem;font-size:1rem}.scene-info-panel>span{padding-right:1.35rem}}

body.frontend-customized-page:not(.game-active),body.frontend-customized-page:not(.game-active) .game-shell{background:var(--frontend-background)!important}
/* The administrator's image-area color is exact, without a fixed green glow. */
#auth.frontend-customized .auth-art{background:var(--frontend-art,#dcebe3)!important}
#auth.frontend-customized .auth-art .glow{display:none!important}
