:root {
  color-scheme:light;
  --ink:#493e3b;
  --paper:#f7eddb;
  --green:#367968;
  --pink:#e89a92;
}
* {
  box-sizing:border-box;
}
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:ui-rounded,'Avenir Next',Avenir,'Trebuchet MS',sans-serif;
}
button,a {
  -webkit-tap-highlight-color:transparent;
}
button {
  font:inherit;
  touch-action:manipulation;
}
button:focus-visible {
  outline:4px solid #235c9b;
  outline-offset:4px;
}
button {
  cursor:pointer;
}
.club {
  max-width:1160px;
  margin:auto;
  padding:20px 28px 10px;
}
.topbar {
  margin-bottom:20px;
}
.title {
  text-align:center;
}
.eyebrow {
  font-size:11px;
  font-weight:800;
  letter-spacing:2px;
  text-transform:uppercase;
  margin:0 0 5px;
  color:#846b5c;
}
h1 {
  font-size:clamp(23px,3.1vw,38px);
  letter-spacing:-1.3px;
  margin:0;
  font-weight:850;
}
.club-stamp {
  font-size:45px;
  color:#cc775e;
  width:52px;
  text-align:center;
  transform:rotate(12deg);
}
.playroom {
  border:2px solid #d9c8ac;
  background:#fffaf0;
  border-radius:30px;
  overflow:hidden;
  box-shadow:0 8px 0 #ddcfb7,0 22px 45px #624a2910;
}
.scene-heading {
  position:relative;
  text-align:center;
  padding:17px 16px 12px;
  background:#fffaf0;
}
.scene-heading p {
  margin:0 0 3px;
  text-transform:uppercase;
  font-size:10px;
  letter-spacing:2px;
  font-weight:850;
  color:#936b4a;
}
.scene-heading h2 {
  margin:0;
  font-size:clamp(20px,2.4vw,27px);
  letter-spacing:-.6px;
}
.sun-doodle {
  position:absolute;
  right:30px;
  top:17px;
  color:#d79a44;
  font-size:33px;
}
.scene {
  position:relative;
  aspect-ratio:1000/575;
  isolation:isolate;
  overflow:hidden;
  background:#f2d7bf;
}
.backdrop {
  position:absolute;
  inset:0;
  pointer-events:none;
}
.backdrop>svg {
  width:100%;
  height:100%;
  display:block;
}
.spots {
  position:absolute;
  inset:0;
}
.spot {
  position:absolute;
  left:var(--x);
  top:var(--y);
  width:27%;
  height:43%;
  padding:0;
  background:transparent;
  border:0;
  border-radius:35%;
  color:var(--ink);
  isolation:isolate;
  overflow:visible;
}
.spot::after {
  content:'';
  position:absolute;
  left:12%;
  right:12%;
  bottom:9%;
  height:6%;
  background:#59432922;
  border-radius:50%;
  z-index:-1;
  transition:transform .25s;
}
.spot:hover::after {
  transform:scaleX(1.06);
}
.prop-art {
  position:absolute;
  width:100%;
  height:100%;
  inset:0;
  overflow:visible;
  pointer-events:none;
  filter:drop-shadow(0 5px 0 #68534012);
}
.lid,.door,.curtain-left,.curtain-right,.cloth,.bush-top,.pillow-top {
  transform-box:fill-box;
  transition:transform .55s cubic-bezier(.2,.8,.3,1);
  transform-origin:center bottom;
}
.lid {
  transform-origin:50% 0;
}
.door {
  transform-origin:left center;
}
.curtain-left {
  transform-origin:left center;
}
.curtain-right {
  transform-origin:right center;
}
.is-open .lid {
  transform:translateY(-38px) rotate(-17deg) scaleY(.68);
}
.is-open .door {
  transform:translateX(-12px) skewY(12deg) scaleX(.22);
}
.is-open .curtain-left {
  transform:scaleX(.2);
}
.is-open .curtain-right {
  transform:scaleX(.2);
}
.is-open .cloth {
  transform:translate(47px,28px) rotate(27deg);
}
.is-open .bush-top {
  transform:translate(25px,21px) rotate(11deg);
}
.is-open .pillow-top {
  transform:translate(47px,34px) rotate(23deg);
}
.animal {
  position:absolute;
  z-index:1;
  left:25%;
  bottom:24%;
  width:50%;
  height:62%;
  pointer-events:none;
  transform:translateY(24%) scale(.7);
  opacity:0;
  transition:opacity .2s,transform .65s cubic-bezier(.18,1.45,.42,1);
}
.animal svg {
  height:100%;
  width:100%;
  overflow:visible;
}
.is-found .animal {
  opacity:1;
  transform:translateY(-29%) scale(1);
}
.spot[data-reveal="twirl"].is-found .animal {
  transform:translateY(-29%) rotate(8deg);
}
.spot[data-reveal="peek"].is-found .animal {
  transform:translate(-15%,-28%) rotate(-13deg);
}
.spot[data-reveal="stretch"].is-found .animal {
  transform:translateY(-36%) scale(1.06);
}
.animal .arm-left,.animal .arm-right {
  transform-box:fill-box;
  transform-origin:50% 85%;
}
.is-found .arm-right {
  animation:wave 1.5s ease-in-out infinite;
}
.hint {
  position:absolute;
  z-index:2;
  left:46%;
  top:27%;
  width:22%;
  height:14%;
  pointer-events:none;
  animation:giggle 3.6s ease-in-out infinite;
  animation-delay:var(--delay);
}
.hint svg {
  width:100%;
  height:100%;
  overflow:visible;
}
.is-open .hint {
  display:none;
}
.spot.has-friend:not(.is-open) .prop-art {
  animation:secret 4.3s ease-in-out infinite;
  animation-delay:var(--delay);
}
.spot:hover .prop-art {
  filter:drop-shadow(0 6px 0 #68534020);
}
.surprise {
  position:absolute;
  left:34%;
  width:32%;
  height:45%;
  top:14%;
  opacity:0;
  transform:translateY(30px) scale(.4);
  transition:opacity .2s,transform .5s cubic-bezier(.18,1.5,.42,1);
  pointer-events:none;
  z-index:1;
}
.surprise svg {
  width:100%;
  height:100%;
  overflow:visible;
}
.is-open .surprise {
  opacity:1;
  transform:translateY(-12%) rotate(-10deg) scale(1);
}
.rejoice .animal {
  animation:happy .65s ease-in-out;
}
.rejoice .surprise {
  animation:wiggle .7s ease-in-out;
}
.demo {
  position:absolute;
  left:56%;
  top:65%;
  width:45px;
  height:52px;
  z-index:5;
  pointer-events:none;
  animation:tap-demo 2s ease-in-out infinite;
  filter:drop-shadow(0 3px 1px #493e3b26);
}
.demo svg {
  width:100%;
  height:100%;
  overflow:visible;
}
.demo-ring {
  position:absolute;
  left:52%;
  top:53%;
  width:30px;
  height:30px;
  border:3px solid white;
  border-radius:50%;
  pointer-events:none;
  animation:tap-ring 2s ease-out infinite;
  z-index:4;
}
.party {
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:5;
}
.party span {
  position:absolute;
  left:var(--left);
  top:var(--top);
  color:var(--color);
  font-size:clamp(25px,4vw,50px);
  animation:confetti 1.3s ease-out both;
  animation-delay:var(--delay);
}
.play-footer {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  padding:15px 30px 18px;
  min-height:114px;
}
.friends {
  display:flex;
  align-items:center;
  gap:15px;
}
.friend-row {
  display:flex;
  gap:7px;
}
.friend-token {
  width:53px;
  height:53px;
  border-radius:50%;
  border:2px dashed #cbbba4;
  background:#f1eadc;
  display:grid;
  place-items:center;
  color:#ab9982;
  font-size:26px;
}
.friend-token svg {
  width:45px;
  height:45px;
  overflow:visible;
}
.friend-token.found {
  background:#dbead9;
  border:2px solid #9bbfa7;
  animation:token .5s ease-out;
}
.friends p {
  font-size:15px;
  font-weight:700;
  max-width:250px;
  margin:0;
  line-height:1.4;
}
.again {
  white-space:nowrap;
  background:#367968;
  color:#fffbed;
  border:2px solid #286450;
  border-radius:17px;
  box-shadow:0 5px 0 #205241;
  min-height:55px;
  padding:12px 22px;
  font-size:19px;
  font-weight:800;
  transition:transform .15s,box-shadow .15s;
}
.again span {
  font-size:25px;
  margin-right:8px;
  vertical-align:-1px;
}
.again:hover {
  background:#286b59;
}
.again:active {
  transform:translateY(4px);
  box-shadow:0 1px 0 #205241;
}
.complete .again {
  background:#b75947;
  border-color:#994533;
  box-shadow:0 5px 0 #843b2d;
}
.footnote {
  text-align:center;
  color:#8c7867;
  font-size:12px;
  margin:18px 0 4px;
}
.no-script {
  text-align:center;
}
.scene[data-place="garden"] {
  background:#dcebd9;
}
.scene[data-place="picnic"] {
  background:#ecdcbe;
}
.scene[data-place="camp"] {
  background:#c2d9d6;
}
@keyframes secret {
  0%,72%,100% {
    transform:rotate(0);
  }
  76% {
    transform:rotate(-2deg);
  }
  80% {
    transform:rotate(2deg);
  }
  84% {
    transform:rotate(-1deg);
  }
}
@keyframes giggle {
  0%,60%,100% {
    transform:translateY(2px);
    opacity:.65;
  }
  70%,85% {
    transform:translateY(-5px);
    opacity:1;
  }
}
@keyframes wave {
  0%,60%,100% {
    transform:rotate(0);
  }
  70%,90% {
    transform:rotate(-24deg);
  }
  80% {
    transform:rotate(5deg);
  }
}
@keyframes happy {
  0%,100% {
    translate:0 0;
  }
  30% {
    translate:0 -20px;
    rotate:-7deg;
  }
  65% {
    translate:0 -9px;
    rotate:7deg;
  }
}
@keyframes wiggle {
  25% {
    rotate:15deg;
    translate:0 -12px;
  }
  60% {
    rotate:-12deg;
    translate:0 -5px;
  }
}
@keyframes tap-demo {
  0%,100% {
    transform:translate(6px,9px) rotate(-12deg);
  }
  45%,58% {
    transform:translate(0,0) rotate(-12deg) scale(.9);
  }
}
@keyframes tap-ring {
  0%,40% {
    opacity:0;
    transform:scale(.5);
  }
  48% {
    opacity:1;
  }
  90%,100% {
    opacity:0;
    transform:scale(1.8);
  }
}
@keyframes token {
  from {
    transform:scale(.7);
  }
  60% {
    transform:scale(1.15);
  }
  to {
    transform:scale(1);
  }
}
@keyframes confetti {
  0% {
    opacity:0;
    transform:scale(.2) rotate(-30deg);
  }
  30% {
    opacity:1;
  }
  100% {
    opacity:0;
    transform:translateY(65px) scale(1.2) rotate(80deg);
  }
}
@media(min-width:701px) and (max-height:820px) {
  .club {
    max-width:1000px;
    padding-top:12px;
  }
  .topbar {
    margin-bottom:12px;
  }
  .scene-heading {
    padding:11px;
  }
  .play-footer {
    min-height:94px;
    padding:12px 25px;
  }
  .scene {
    aspect-ratio:1000/540;
  }
  .footnote {
    margin-top:14px;
  }
}
@media(max-width:700px) {
  .club {
    padding:12px 12px 8px;
  }
  .topbar:has(>.home-link) {
    grid-template-columns:46px 1fr!important;
    gap:8px;
  }
  .topbar:has(>.home-link)>.title {
    grid-column:2;
    grid-row:1;
    justify-self:stretch;
  }
  .club-stamp {
    display:none;
  }
  .title {
    text-align:left;
  }
  .eyebrow {
    font-size:9px;
    letter-spacing:1.3px;
  }
  h1 {
    font-size:25px;
    letter-spacing:-1px;
  }
  .topbar {
    margin-bottom:14px;
  }
  .playroom {
    border-radius:22px;
  }
  .scene-heading {
    padding:14px 10px;
  }
  .sun-doodle {
    right:13px;
    font-size:23px;
    top:23px;
  }
  .scene-heading h2 {
    font-size:22px;
  }
  .scene-heading p {
    font-size:9px;
  }
  .scene {
    aspect-ratio:600/690;
    min-height:390px;
  }
  .backdrop>svg {
    object-fit:cover;
  }
  .spot {
    width:46%;
    height:32%;
    left:var(--mx);
    top:var(--my);
  }
  .demo {
    width:37px;
    height:44px;
  }
  .play-footer {
    gap:12px;
    padding:15px 12px;
    flex-wrap:wrap;
    justify-content:center;
  }
  .friends {
    gap:10px;
  }
  .friend-token {
    width:40px;
    height:40px;
    font-size:21px;
  }
  .friend-token svg {
    width:34px;
    height:34px;
  }
  .friends p {
    font-size:13px;
    max-width:155px;
  }
  .again {
    font-size:18px;
    padding:9px 19px;
    min-height:49px;
  }
  .footnote {
    font-size:10px;
  }
  .hint {
    width:20%;
  }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after {
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important;
  }
  .party span {
    display:none;
  }
  .demo {
    transform:rotate(-12deg);
  }
  .demo-ring {
    opacity:1;
  }
  .is-found .animal {
    opacity:1;
  }
  .friend-token.found {
    transform:none;
  }
}
