:root{color:#523e2c;font-synthesis:none;--cream:#fff9ed;--cream-deep:#fff1d5;--yellow:#f6c85f;--yellow-soft:#ffe8a8;--brown:#523e2c;--brown-light:#866b50;--green:#9bbd8a;--white:#ffffffc7;background:#fff9ed;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:radial-gradient(circle at 20% 15%, #ffda8252, transparent 30%), radial-gradient(circle at 85% 80%, #f7c35d2e, transparent 35%), var(--cream);min-width:320px;overflow-x:hidden}.birthday-world{min-height:100svh}.scene{justify-content:center;align-items:center;min-height:100svh;padding:28px 22px 26px;display:none}.scene.active{animation:.55s both sceneEnter;display:flex}.scene-content{text-align:center;width:100%;max-width:430px;margin:auto}.wide-content{max-width:480px}.tiny-label,.section-kicker{letter-spacing:.16em;color:var(--brown-light);opacity:.78;font-size:11px;font-weight:700}h1{letter-spacing:-.04em;color:var(--brown);margin:20px 0 12px;font-size:clamp(36px,10vw,48px);line-height:1.2}h1 span{color:#df9b31}h2{margin:12px 0 8px;font-size:29px;line-height:1.3}.eyebrow{color:var(--brown-light);margin:22px 0 0;font-size:15px}.subtitle,.scene-description{color:var(--brown-light);margin:8px auto 26px;line-height:1.8}.cat-stage{justify-content:center;margin:26px auto 12px;display:flex}.main-cat{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;display:block}.hero-cat{filter:drop-shadow(0 18px 22px #6f4b2021);width:min(76vw,340px);animation:3.6s ease-in-out infinite catFloat}.cat-button{appearance:none;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0}.interactive-cat{filter:drop-shadow(0 18px 18px #6f4b2021);width:min(70vw,290px);margin:12px auto;transition:transform .15s;animation:3.5s ease-in-out infinite catFloat}.cat-button:active .interactive-cat{transform:scale(.94)rotate(-2deg)}.final-cat{width:min(62vw,250px);margin:28px auto 14px;animation:4s ease-in-out infinite catFloat}.game-cat{filter:saturate(.9);width:140px;margin:auto;display:block}.speech-bubble{background:#ffffffd6;border:1px solid #71522f1a;border-radius:20px;width:fit-content;max-width:90%;margin:24px auto 8px;padding:15px 20px;font-size:16px;position:relative;box-shadow:0 12px 30px #6c4d2714}.speech-bubble:after{content:"";background:#fffdf8;width:16px;height:16px;position:absolute;bottom:-8px;left:50%;transform:translate(-50%)rotate(45deg)}.tap-tip{color:var(--brown-light);opacity:.72;margin:6px 0 28px;font-size:12px}button{font:inherit}.primary-button,.secondary-button{cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;transition:transform .15s,box-shadow .2s}.primary-button{color:#5d411f;background:linear-gradient(135deg,#f8cf70,#f1b84f);border-radius:999px;justify-content:center;align-items:center;gap:12px;min-height:54px;padding:0 24px;font-weight:700;display:inline-flex;box-shadow:0 12px 25px #cd902d38}.primary-button span{transition:transform .2s}.primary-button:hover span{transform:translate(3px)}.primary-button:active,.secondary-button:active{transform:scale(.96)}.secondary-button{color:var(--brown);background:#fff;border:1px solid #523e2c1f;border-radius:999px;margin-top:10px;padding:12px 20px}#scene-3 .scene-content{padding:6px 0}#scene-3 .scene-description{margin-bottom:12px}.buff-guide{justify-content:center;align-items:center;gap:8px;min-height:98px;margin:0 auto 8px;display:flex}.buff-guide-cat{object-fit:contain;filter:drop-shadow(0 9px 12px #6f4b201f);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;flex:none;width:104px;height:104px;animation:3.2s ease-in-out infinite buffCatFloat}.buff-dialogue{max-width:225px;min-height:58px;color:var(--brown-light);text-align:left;background:#ffffffd6;border:1px solid #71522f1a;border-radius:18px;padding:12px 15px;font-size:13px;line-height:1.55;position:relative;box-shadow:0 9px 24px #6c4d2712}.buff-dialogue:before{content:"";background:#fffdf8;border-bottom:1px solid #71522f1a;border-left:1px solid #71522f1a;width:12px;height:12px;position:absolute;top:30px;left:-7px;transform:rotate(45deg)}.buff-progress{color:var(--brown-light);justify-content:space-between;align-items:center;margin:6px 2px 10px;padding:0 4px;font-size:12px;display:flex}.buff-progress strong{min-width:52px;color:var(--brown);font-variant-numeric:tabular-nums;background:#f6c85f33;border-radius:999px;padding:5px 9px;font-size:13px}.buff-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin:0 0 12px;display:grid}.buff-card{min-height:154px;color:var(--brown);cursor:pointer;background:#ffffffad;border:1px solid #70523017;border-radius:24px;padding:16px 12px 13px;transition:transform .2s,background .2s,border-color .2s,box-shadow .25s;position:relative;box-shadow:0 10px 28px #6f4d2812}.buff-card:hover{transform:translateY(-3px)}.buff-card:active{transform:scale(.97)}.buff-card.claimed{background:linear-gradient(145deg,#fff8df,#fff0bd);border-color:#e3ab3e6b;box-shadow:0 12px 28px #cd902d24,0 0 20px #f6c85f47}.buff-icon{margin-bottom:10px;font-size:32px;display:block}.buff-card strong{margin-bottom:5px;font-size:15px;display:block}.buff-card small{color:var(--brown-light);display:block}.buff-card-state{color:#866b50b8;margin-top:9px;font-size:11px;display:inline-block}.buff-card.claimed .buff-card-state{color:#987021;font-weight:700}.buff-complete{color:#668057;background:#9bbd8a2e;border-radius:999px;width:fit-content;min-height:30px;margin:2px auto 12px;padding:7px 13px;font-size:13px;font-weight:700;animation:.45s both completeReveal;position:relative}.celebration-sparkles{pointer-events:none;position:absolute;inset:-22px -18px}.celebration-sparkles i{background:var(--yellow);border-radius:50%;width:5px;height:5px;animation:.9s ease-out both sparkle;position:absolute;box-shadow:0 0 9px #f6c85fbf}.celebration-sparkles i:first-child{top:5px;left:6%}.celebration-sparkles i:nth-child(2){animation-delay:80ms;top:0;left:31%}.celebration-sparkles i:nth-child(3){animation-delay:.15s;top:3px;right:28%}.celebration-sparkles i:nth-child(4){animation-delay:.22s;top:9px;right:3%}.celebration-sparkles i:nth-child(5){animation-delay:.12s;bottom:2px;right:13%}.button-arrive{animation:.4s both buttonArrive}.claim-pop{animation:.42s both buffClaim}.buff-cat-celebrate{animation:.65s both buffCatBounce}.buff-image{object-fit:contain;filter:drop-shadow(0 6px 12px #466e5a29);width:56px;height:56px;margin:0 auto 8px;display:block}.hidden{display:none!important}.game-window{background:#ffffffb8;border:1px solid #523e2c17;border-radius:26px;margin:26px auto 18px;padding:24px 18px;box-shadow:0 16px 40px #5f452714}.status-panel{gap:9px;margin-top:12px;display:grid}.status-panel div{justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.status-panel strong{letter-spacing:.04em;color:#d9a743}.map-note{color:var(--brown-light);margin:18px auto;line-height:1.9}.fortune-box{background:#fff0c28c;border-radius:22px;margin:20px 0 26px;padding:22px 16px}#fortune-text{min-height:48px;line-height:1.7}.final-title{margin-top:6px;font-size:36px}.final-message{color:var(--brown-light);margin:25px auto;line-height:1.75}.final-message p{margin:4px 0}.mission-complete{color:var(--brown-light);background:#f6c85f2e;border-radius:999px;margin-top:10px;padding:10px 15px;font-size:12px;display:inline-block}.bonus-entry{color:var(--brown-light);border-top:1px dashed #866b5033;margin-top:30px;padding-top:20px}.bonus-entry p{margin:0 0 8px;font-size:12px}.bonus-button{min-height:44px;color:var(--brown-light);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:700}.bonus-button span{margin-left:4px;transition:transform .2s;display:inline-block}.bonus-button:active{background:#f6c85f24}.bonus-button:hover span{transform:translate(3px)}.pet-scene{padding:22px 16px 18px;overflow-x:clip}.pet-scene-content{max-width:430px}.pet-scene h2{margin-bottom:4px;font-size:27px}.pet-hint,.pet-footer{color:var(--brown-light);font-size:13px}.pet-hint{margin:0 0 16px}.pet-footer{opacity:.72;margin:11px 0 0}.pet-meadow{isolation:isolate;touch-action:manipulation;background-color:#b9d681;background-image:linear-gradient(90deg,#6891471a 2px,#0000 2px),linear-gradient(#68914714 2px,#0000 2px),radial-gradient(circle at 22% 20%,#fff7be57,#0000 26%),linear-gradient(145deg,#c9df91,#a9cc79);background-size:18px 18px,18px 18px,auto,auto;border:4px solid #f0d895;border-radius:26px;width:100%;height:min(62svh,590px);min-height:470px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 3px #fff9dd47,0 16px 35px #5e6f3624}.meadow-path{z-index:0;filter:blur(.2px);opacity:.72;pointer-events:none;background:linear-gradient(90deg,#0000,#e7c78494 18%,#ebce91a8 52%,#e0bf7c85 82%,#0000);border-radius:45% 55% 42% 58%;width:33%;height:120%;position:absolute;top:-9%;left:35%;transform:rotate(8deg)}.meadow-decorations{z-index:1;pointer-events:none;position:absolute;inset:0}.meadow-decorations:before{content:"";background:#d6aa5f;width:4px;height:4px;position:absolute;bottom:33px;left:34px;box-shadow:-4px 0 #f6edcf,4px 0 #f6edcf,0 -4px #f6edcf,0 4px #f6edcf,0 8px #6f9558,0 12px #6f9558,4px 10px #87a969}.meadow-decorations:after{content:"YF";color:#523e2cb3;letter-spacing:.06em;text-shadow:1px 1px #fff9ed6b;font-family:Courier New,monospace;font-size:9px;font-weight:700;line-height:1;position:absolute;bottom:24px;left:51px}.pixel-flower,.pixel-bush,.pixel-stone{display:block;position:absolute}.pixel-flower{background:#fff4c5;width:7px;height:7px;box-shadow:-5px 0 #fff4c5,5px 0 #fff4c5,0 -5px #fff4c5,0 5px #fff4c5,0 0 #e9a94f,0 8px #739e55,0 12px #739e55}.flower-one{top:13%;left:12%}.flower-two{top:39%;right:13%;transform:scale(.82)}.flower-three{bottom:13%;left:20%;transform:scale(.72)}.pixel-bush{background:#6f9f54;border-radius:44% 52% 30% 30%;width:38px;height:22px;box-shadow:7px -7px #7eac5e,18px -4px #76a457,25px 1px #65944d,inset -5px -4px #44743f47}.bush-one{top:17%;right:8%}.bush-two{bottom:8%;right:13%;transform:scale(.78)}.pixel-stone{background:#b7aa86;border-radius:55% 45% 35% 40%;width:22px;height:14px;box-shadow:inset -4px -3px #978d74}.stone-one{top:48%;left:8%;transform:rotate(-8deg)}.stone-two{bottom:25%;right:7%;transform:scale(.72)rotate(12deg)}.grass-tuft{color:#51853e9e;font-family:monospace;font-size:18px;font-weight:900;line-height:1;position:absolute}.tuft-one{top:29%;left:24%}.tuft-two{top:67%;left:7%;transform:scale(.75)}.tuft-three{top:72%;right:23%;transform:scale(.82)}.pixel-pet{--pet-x:0px;--pet-y:0px;--pet-move-duration:0s;z-index:3;width:96px;height:128px;transform:translate3d(var(--pet-x), var(--pet-y), 0);transition:transform var(--pet-move-duration) linear;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;margin:0;padding:0;position:absolute;top:0;left:0}.pet-jump-layer,.pet-sprite-viewport{width:100%;height:100%;display:block}.pet-sprite-viewport{filter:drop-shadow(0 5px 1px #4f69322e);transform-origin:bottom;overflow:hidden}.pet-sprite{object-fit:fill;-webkit-user-select:none;user-select:none;pointer-events:none;width:400%;max-width:none;height:100%;image-rendering:pixelated;display:block;transform:translate(0)}.pixel-pet.frame-1 .pet-sprite{transform:translate(-25%)}.pixel-pet.frame-2 .pet-sprite{transform:translate(-50%)}.pixel-pet.frame-3 .pet-sprite{transform:translate(-75%)}.pixel-pet.pet-facing-left .pet-sprite-viewport{transform:scaleX(-1)}.pixel-pet.pet-reacting .pet-jump-layer,.pixel-pet.pet-auto-happy .pet-jump-layer{animation:.55s steps(5,end) both petHop}.pet-bubble{z-index:5;color:#59442e;opacity:0;pointer-events:none;background:#fff8d9;border:3px solid #6f5738;border-radius:5px;width:max-content;max-width:190px;padding:10px 12px;font-family:Courier New,Microsoft YaHei,monospace;font-size:12px;font-weight:700;line-height:1.45;position:absolute;bottom:calc(100% + 9px);left:50%;transform:translate(-50%,5px);box-shadow:4px 4px #624f302e}.pet-bubble:after{content:"";background:#fff8d9;border-bottom:3px solid #6f5738;border-right:3px solid #6f5738;width:9px;height:9px;position:absolute;top:100%;left:50%;transform:translate(-50%,-4px)rotate(45deg)}.pet-bubble.is-visible{animation:.2s steps(3,end) both petBubbleIn}.pet-bubble.bubble-left{left:0;transform:translateY(5px)}.pet-bubble.bubble-left:after{left:38px}.pet-bubble.bubble-right{left:auto;right:0;transform:translateY(5px)}.pet-bubble.bubble-right:after{left:auto;right:38px}@keyframes petHop{0%,to{transform:translateY(0)}45%{transform:translateY(-11px)}}@keyframes petBubbleIn{0%{opacity:0}to{opacity:1}}@keyframes sceneEnter{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes catFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes buffCatFloat{0%,to{transform:translateY(2px)rotate(-1deg)}50%{transform:translateY(-4px)rotate(1deg)}}@keyframes buffClaim{0%{transform:translateY(0)scale(1)}45%{transform:translateY(-6px)scale(1.035)}to{transform:translateY(0)scale(1)}}@keyframes buffCatBounce{0%,to{transform:translateY(0)scale(1)}35%{transform:translateY(-15px)scale(1.05,.96)}65%{transform:translateY(2px)scale(.98,1.03)}}@keyframes completeReveal{0%{opacity:0;transform:translateY(5px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes sparkle{0%{opacity:0;transform:translateY(9px)scale(.4)}45%{opacity:1}to{opacity:0;transform:translateY(-12px)scale(1.25)}}@keyframes buttonArrive{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes pop{0%{opacity:.65;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.pop{animation:.25s pop}.fortune-pop{animation:.3s pop}@media (width<=370px){.scene{padding:28px 17px}.buff-grid{gap:9px}.buff-card{min-height:130px}.buff-guide-cat{width:88px;height:88px}.buff-dialogue{max-width:205px;font-size:12px}h1{font-size:34px}}@media (prefers-reduced-motion:reduce){.buff-guide-cat,.buff-cat-celebrate,.claim-pop,.celebration-sparkles i,.button-arrive{animation-duration:.01ms;animation-iteration-count:1}.pixel-pet{transition-duration:.01ms}.pixel-pet.pet-reacting .pet-jump-layer,.pixel-pet.pet-auto-happy .pet-jump-layer,.pet-bubble.is-visible{animation-duration:.01ms;animation-iteration-count:1}}@media (width>=768px){.scene{padding:60px 30px}.scene-content{max-width:470px}.wide-content{max-width:520px}}#scene-1{align-items:flex-start}#scene-1 .scene-content{padding-top:72px}.hero-cat.is-excited{animation:.42s both catBounce}@keyframes catBounce{0%{transform:translateY(0)scale(1)}25%{transform:translateY(-12px)scale(1.04,.97)}55%{transform:translateY(1px)scale(.98,1.02)}78%{transform:translateY(-5px)scale(1.02,.99)}to{transform:translateY(0)scale(1)}}
