:root{--outside:#fff1f1;--shell:#efb9ca;--ink:#684451;--muted:#997782;--screen:#fffaf2;--line:#dcaebb;--rose:#d787a2;--green:#b7ceb0;--gold:#f2cb83;--pixel:ui-monospace,"Cascadia Code","Courier New",monospace;color-scheme:light;font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;min-width:280px;min-height:100svh;color:var(--ink);background:radial-gradient(ellipse at 50% 45%,#fffaf3 0,#fff0f1 58%,#f9e2e9 100%);-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer;-webkit-user-select:none;user-select:none}button:disabled{cursor:default}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:3px solid #ac647e;outline-offset:4px}p,h1,h2,h3{margin:0}.layout{display:flex;justify-content:center;align-items:center;min-height:100svh;padding:32px 16px calc(32px + env(safe-area-inset-bottom))}.console{width:456px;max-width:100%;padding:16px 17px 14px;position:relative;background:var(--shell);border:3px solid #fbdce5;border-right-color:#cf94a9;border-bottom-color:#cf94a9;border-radius:20px 20px 44px 20px;box-shadow:inset 3px 3px #ffe8ec,inset -5px -5px #dfa3b7,7px 10px 0 #c98fa43d,15px 28px 50px #b47c9124}.console:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 3px,#ffffff08 3px 4px);pointer-events:none;border-radius:inherit}.console-top{display:flex;align-items:center;justify-content:space-between;padding:0 5px 12px;height:38px;position:relative}.brand{display:flex;gap:7px}.brand i{width:6px;height:6px;background:#fff4e8;border-radius:1px;box-shadow:1px 1px #c2859d}.brand i:nth-child(2){background:#d689a5}.brand i:nth-child(3){background:#b1c7ac}.sound{border:1px solid #e2a6ba;background:#fff0f2;width:39px;height:33px;display:grid;place-items:center;box-shadow:2px 2px #ca8ca4;border-radius:4px}.sound svg{width:22px;height:22px}.bezel{padding:9px;border:2px solid #d3a5b4;background:#f8e5e5;box-shadow:inset 2px 2px #c496a7,2px 2px #fff0ed;border-radius:9px 9px 23px 9px;overflow:hidden}#app{background:var(--screen);border:1px solid #e5c4cb;min-height:528px;position:relative;outline:none;overflow:hidden;border-radius:2px 2px 13px 2px}.console-controls{height:69px;display:flex;align-items:center;justify-content:space-between;padding:15px 13px 0;gap:10px;position:relative}.home-key,.help-key{border:0;padding:4px;background:none;display:grid;place-items:center;min-width:44px;min-height:44px}.dpad{width:40px;height:40px;background:#c08099;clip-path:polygon(33% 0,67% 0,67% 33%,100% 33%,100% 67%,67% 67%,67% 100%,33% 100%,33% 67%,0 67%,0 33%,33% 33%);box-shadow:inset 3px 3px #dca1b5;position:relative}.dpad:after{content:"";position:absolute;width:10px;height:10px;left:15px;top:15px;background:#ad7189}.home-key:active{transform:translateY(2px)}.help-key>span{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#fff2e2;color:#b27a8b;font:700 20px var(--pixel);border:2px solid #fff9ec;box-shadow:2px 3px #c3889c}.help-key:active>span{transform:translateY(2px);box-shadow:none}.speaker{display:flex;gap:5px;transform:skewX(-15deg);padding-top:14px}.speaker i{width:15px;height:4px;background:#d091a9;border-bottom:1px solid #ffdee7}
.scene{padding:22px 21px 21px;min-height:527px;display:flex;flex-direction:column;position:relative;animation:enter .2s ease both}.scene.cover{padding:29px 0 27px;text-align:center}.cover h1{font-size:36px;letter-spacing:4px;font-weight:900;line-height:1.5;color:#885066;text-shadow:2px 2px #edc1ca}.subtitle{font-size:14px;letter-spacing:2px;color:#a16a7b;margin-top:8px}.cover-art{position:relative;aspect-ratio:320/194;margin:28px 0 28px;isolation:isolate}.pixel-scene{width:100%;height:100%;display:block;image-rendering:pixelated;image-rendering:crisp-edges}.cat-button{padding:0;background:none;border:0;line-height:0;flex-shrink:0;position:relative;min-width:42px;min-height:44px}.cat-button svg{width:100%;height:100%;image-rendering:pixelated}.cover-cat{position:absolute;width:76px;height:76px;left:calc(50% - 38px);bottom:16%;z-index:1;animation:cat-bob 2.7s steps(2,end) infinite}.cover-cat.is-petted{animation:none}.cover-cat.is-petted>svg{transform-origin:50% 85%;animation:cat-snuggle .9s steps(4,end) both}.cover-cat.is-petted .cat-tail{transform-box:fill-box;transform-origin:10% 90%;animation:cat-tail-swish .45s steps(3,end) 2}.cat-bubble{position:absolute;left:calc(100% - 2px);top:2px;white-space:nowrap;padding:8px 10px;background:#fffaf0;border:2px solid #cd94aa;border-radius:9px 9px 9px 2px;box-shadow:2px 3px #c993a42b;color:#905b73;font-size:13px;line-height:1.2;font-weight:700;letter-spacing:1px}.cat-bubble:before{content:"";position:absolute;left:-7px;bottom:7px;width:9px;height:9px;background:#fffaf0;border-left:2px solid #cd94aa;border-bottom:2px solid #cd94aa;transform:skewY(-35deg)}.cover-actions{padding:0 31px;margin-top:auto}.btn{display:flex;justify-content:center;align-items:center;gap:10px;width:100%;min-height:49px;border:2px solid #f2b5c7;border-top-color:#f9d0db;background:#eaa7bc;color:#653e4c;box-shadow:0 4px #c9859e;font-size:15px;font-weight:700;letter-spacing:.5px;position:relative;border-radius:3px;padding:10px 12px;text-decoration:none}.btn:active{transform:translateY(3px);box-shadow:0 1px #c9859e}.btn:disabled{opacity:.45;transform:none}.btn.secondary{background:#fff6ed;border-color:#e6bcc7;color:#8b6071;box-shadow:0 4px #d8acb9}.btn.success{background:#cee0bc;border-color:#deebcf;box-shadow:0 4px #a6ba94;color:#596f4d}.btn svg,.btn>span{width:18px;height:18px}.text-button{background:none;border:0;color:#9c687e;font-size:13px;min-height:43px;padding:11px 6px;text-decoration:underline;text-underline-offset:4px}.cover .text-button{margin-top:9px}.step-header{display:flex;justify-content:flex-end;margin-bottom:16px}.progress-dots{display:flex;gap:6px}.progress-dots i{width:19px;height:5px;background:#f0dce0}.progress-dots i.done{background:#d5b9ca}.progress-dots i.current{background:#d588a4}.scene h2{font-size:24px;line-height:1.55;font-weight:800;letter-spacing:1px}.scene-intro{font-size:13px;line-height:1.8;color:#9a7884;margin-top:9px}.story-art{position:relative;height:207px;margin:24px -21px 0}.story-art .cat-button{position:absolute;width:68px;height:76px;left:45%;bottom:13%}.dialogue{display:flex;align-items:center;gap:12px;position:relative;min-height:102px;border:1px solid #dfbac5;background:#fff0ef;padding:17px 14px;margin:20px 0;box-shadow:3px 3px #edcdd6}.dialogue .cat-button{width:42px;height:50px;align-self:center}.dialogue p{font-size:13px;line-height:1.9;white-space:pre-line;flex:1;overflow-wrap:anywhere}.story .dialogue{min-height:115px}.actions{margin-top:auto;padding-top:5px}.inventory{display:flex;align-items:center;justify-content:space-between;padding:11px 12px;background:#fff1e9;border:1px solid #ead0ce;margin:18px 0 14px}.inventory-label{font-size:13px;color:#8c6773}.stamps{display:flex;gap:8px}.stamp-slot{display:grid;place-items:center;width:27px;height:30px;background:#f9e9e9;border:1px dashed #d8b3bc;color:#ddbcc7;font-size:20px}.stamp-slot.found{color:#be8750;background:#ffe6ac;border-color:#deb671;animation:stamp .3s steps(3)}.inspect-room{height:228px;position:relative;border:2px solid #dcb2bf;background:#f4d7cf;overflow:hidden}.inspect-room>canvas{position:absolute;inset:0}.object{position:absolute;display:grid;place-items:center;border:0;padding:0;background:none;min-width:44px;min-height:44px;transition:transform .18s}.object svg{width:100%;height:100%;filter:drop-shadow(3px 4px 0 #ae7f892b)}.object:hover{transform:translateY(-3px)}.object.revealed svg{opacity:.45;transform:translateY(-5px)}.object.revealed:after{content:"✦";position:absolute;top:9px;left:calc(50% - 9px);font-size:25px;color:#b67b43;text-shadow:1px 1px #ffefc1;animation:star-glow 2s steps(3) infinite}.obj-letter{left:8%;top:48%;width:69px;height:56px;transform:rotate(-8deg)}.obj-cup{right:14%;top:21%;width:45px;height:62px}.obj-parcel{left:39%;top:53%;width:85px;height:75px}.obj-yarn{right:6%;bottom:4%;width:47px;height:46px}.obj-plant{left:9%;top:10%;width:45px;height:73px}.obj-drawer{left:1%;bottom:1%;width:90px;height:45px}.inspect .dialogue{min-height:89px;margin:17px 0}.inline-hint{text-align:center;min-height:39px}.map{position:relative;background:#f7e9ec;border:1px solid #dcb3c1;padding:14px;margin:19px 0 10px}.route-grid{margin:0 32px;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;position:relative}.tile{aspect-ratio:1;position:relative;overflow:hidden;border:1px solid #cea3b3;background:#eecbd7;padding:0;box-shadow:inset 2px 2px #f8dce5,2px 2px #c796a74d}.tile svg{width:100%;height:100%;display:block;transition:transform .15s ease}.tile.route-lit{background:#d7e8c8;border-color:#b0c394;box-shadow:inset 2px 2px #e5f1db}.tile.hinted{outline:2px solid #c67a98;outline-offset:1px}.tile:disabled{opacity:1}.route-endpoint{position:absolute;z-index:3;width:32px;display:flex;flex-direction:column;align-items:center;gap:3px;color:#946174;font-size:11px;line-height:1.4;font-weight:700;pointer-events:none}.route-endpoint>svg{display:block;width:32px;height:32px}.route-start{left:-38px;top:calc(16.6667% - 18px)}.route-end{right:-38px;top:calc(83.3333% - 14px)}.route-endpoint:after{content:"";position:absolute;top:13px;width:6px;height:6px;background:#fff8e8;border-top:1px solid #bf91a1;border-bottom:1px solid #bf91a1}.route-start:after{left:100%}.route-end:after{right:100%}.map-cat{width:35px;height:40px;position:absolute;z-index:5;pointer-events:none;transform:translate(-50%,-80%);transition:left .28s linear,top .28s linear;filter:drop-shadow(2px 3px #aa7c8c55)}.map-cat svg{width:100%;height:100%}.map-footer{display:flex;justify-content:flex-end;margin-top:5px}.map-footer .text-button{font-size:12px;min-height:36px;padding:9px 0 4px}.route .dialogue{min-height:91px;margin:9px 0 18px}.quiz-art{height:113px;position:relative;margin:18px -21px 18px}.quiz-art .cat-button{position:absolute;width:46px;height:52px;bottom:12%;left:69%}.quiz h2{font-size:22px;letter-spacing:0;line-height:1.65}.options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.option{display:flex;flex-direction:column;text-align:center;align-items:center;justify-content:center;gap:7px;min-height:83px;padding:10px 8px;background:#fff2ed;border:1px solid #dfb8c3;box-shadow:2px 2px #eacecf;position:relative}.option-icon{height:30px;width:30px;flex-shrink:0}.option-icon svg{width:100%;height:100%}.option-label{font-size:13px;line-height:1.5}.option-arrow{position:absolute;right:7px;top:5px;color:#ad6e87;font-size:12px}.option.selected{border:2px solid #cf8ba5;background:#fae1e9;padding:9px 7px;box-shadow:2px 2px #d2a4b4}.quiz .dialogue{min-height:83px;margin:20px 0}.quiz-controls{display:flex;justify-content:flex-end;gap:15px;margin-top:5px}textarea{display:block;width:100%;resize:vertical;min-height:150px;max-height:240px;border:1px solid #dcb2c0;border-radius:3px;background:#fffdf6;padding:16px;color:var(--ink);font:inherit;font-family:inherit;font-size:16px;line-height:1.8;box-shadow:inset 2px 2px #f3dfe5;outline:none}textarea::placeholder{color:#b2919d;font-size:15px}.unbox{text-align:center}.unbox .step-header{text-align:left}.gift-area{display:grid;place-items:center;position:relative;height:234px;margin:18px 0 14px;background:radial-gradient(ellipse,#f8dfe761,transparent 64%)}.gift-button{width:158px;height:168px;border:0;background:none;padding:0;position:relative;touch-action:none;-webkit-touch-callout:none;user-select:none}.gift-button svg{width:100%;height:100%;overflow:visible}.gift-button.holding{animation:gift-shake .14s steps(2) infinite}.gift-button.opened .gift-lid{transform:translateY(-34px) rotate(-8deg);transition:transform .7s steps(6);transform-origin:50% 50%}.gift-button.opened .gift-glow{opacity:1}.gift-glow{opacity:0;transition:opacity .3s}.hold-track{height:8px;background:#f5e4e7;border:1px solid #d7b1c0;padding:1px;margin:0 37px 17px}.hold-fill{height:100%;background:#cf88a3;width:0;transition:width .04s linear}.hold-copy{font-size:14px;color:#946278;min-height:24px}.unbox .dialogue{text-align:left;margin-top:16px}.particle{position:absolute;left:50%;top:45%;width:5px;height:5px;pointer-events:none;background:var(--rose);animation:burst .85s steps(8) forwards;z-index:6}.ending h2{font-size:24px;text-align:center;margin:3px 0 0}.letter{background:#fff5e2;padding:25px 22px;border:1px solid #e9cdbd;box-shadow:4px 4px #ecd4d4;margin:23px 0 12px;position:relative}.letter p{font-size:14px;line-height:2}.letter .ending-quote{font-size:21px;line-height:1.8;font-weight:700;margin:22px 0;color:#a2647e}.letter .personal-ending{margin-top:20px}.ending-cat{display:flex;justify-content:center;margin:8px 0 14px}.ending-cat .cat-button{width:46px;height:55px}.reward{border:1px dashed #d8a5b6;background:#fcecf0;padding:20px 17px;margin-bottom:20px}.reward h3{font-size:20px;letter-spacing:1px;font-weight:700}.reward-main{display:flex;align-items:center;gap:14px;margin-top:15px}.reward-icon{width:40px;height:40px;flex-shrink:0}.reward-icon svg{width:100%;height:100%}.reward p{font-size:14px;line-height:1.9;overflow-wrap:anywhere}.personal-note{padding-top:15px;margin-top:16px;border-top:1px dashed #dbb1c2;color:#9a6b80;white-space:pre-wrap}.reward-actions{display:flex;gap:10px}.reward-actions .btn{font-size:13px;padding:10px 7px}.replay{align-self:center;margin-top:14px}.mini-sky{height:88px;margin:12px -21px -21px;overflow:hidden}#toast{position:fixed;z-index:20;bottom:max(28px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%,12px);background:#fff7ec;color:#83566b;font-size:13px;line-height:1.9;padding:12px 19px;border:2px solid #e4b1c3;box-shadow:4px 4px #cf9bae50;max-width:min(87vw,370px);width:max-content;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{width:min(360px,90vw);max-height:85svh;overflow:auto;padding:24px 22px;background:#fffbf3;border:2px solid #d7a1b5;color:var(--ink);box-shadow:6px 6px #ba7c9140;border-radius:6px}dialog::backdrop{background:#78536460}dialog h2{font-size:20px;line-height:1.5;margin-bottom:16px}dialog p{font-size:14px;line-height:1.9;white-space:pre-line;margin-bottom:17px;overflow-wrap:anywhere}dialog .btn{margin-top:15px}dialog img{width:100%;height:auto;display:block}dialog .small-print{font-size:13px;color:#9b7887}.hint-object{outline:2px dashed #ad617e;outline-offset:3px;animation:star-glow 1s steps(3) infinite}.feedback-flash{animation:gentle-bump .25s ease}
@keyframes enter{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes cat-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes cat-snuggle{0%,100%{transform:translateY(0) rotate(0) scale(1)}25%{transform:translateY(2px) rotate(-5deg) scale(1.04,.96)}60%{transform:translateY(1px) rotate(4deg) scale(1.02,.98)}}@keyframes cat-tail-swish{0%,100%{transform:rotate(0)}30%{transform:rotate(-18deg)}70%{transform:rotate(15deg)}}@keyframes star-glow{0%,100%{opacity:.6}50%{opacity:1}}@keyframes stamp{from{transform:scale(1.3) rotate(-10deg)}to{transform:scale(1) rotate(0)}}@keyframes gift-shake{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}@keyframes burst{from{transform:translate(0,0);opacity:1}to{transform:translate(var(--dx),var(--dy));opacity:0}}@keyframes gentle-bump{25%{transform:translateX(2px)}75%{transform:translateX(-2px)}}
@media(max-width:500px){.layout{align-items:flex-start;padding:14px 10px calc(16px + env(safe-area-inset-bottom))}.console{width:100%;max-width:430px;padding:13px 12px 12px;border-width:2px;border-radius:15px 15px 36px 15px;box-shadow:inset 2px 2px #ffe8ec,inset -4px -4px #dfa3b7,5px 7px #d5a1b342}.console-top{height:35px;padding:0 4px 11px}.bezel{padding:8px;border-width:2px}.scene{padding:20px 17px;min-height:510px}#app{min-height:511px}.scene.cover{padding:27px 0 25px}.cover h1{font-size:32px;letter-spacing:3px}.subtitle{font-size:13px;letter-spacing:1.5px}.cover-art{margin:28px 0 29px}.cover-actions{padding:0 23px}.console-controls{height:65px;padding:13px 10px 0}.dpad{width:35px;height:35px}.dpad:after{left:13px;top:13px;width:9px;height:9px}.help-key>span{height:33px;width:33px}.scene h2{font-size:22px}.scene-intro{font-size:12px}.story-art{margin-left:-17px;margin-right:-17px;height:190px}.dialogue{padding:14px 12px;gap:10px}.dialogue p{font-size:12px}.dialogue .cat-button{width:38px;height:46px;min-width:38px}.inspect-room{height:211px}.quiz-art{margin-left:-17px;margin-right:-17px;height:103px}.quiz h2{font-size:21px}.option{min-height:78px}.option-label{font-size:12px}.gift-area{height:217px}.hold-copy{font-size:13px}.letter{padding:23px 18px}.letter p{font-size:13px}.letter .ending-quote{font-size:19px}.reward h3{font-size:18px}.reward p{font-size:13px}.reward-actions .btn{font-size:12px}.mini-sky{margin-left:-17px;margin-right:-17px;margin-bottom:-20px}}
@media(max-width:350px){.layout{padding:9px 6px 14px}.console{padding:11px 9px 10px}.scene{padding:18px 13px;min-height:495px}.cover h1{font-size:28px;letter-spacing:2px}.cover-cat{width:68px;height:68px;left:calc(50% - 34px)}.cat-bubble{font-size:12px;padding:7px 8px}.subtitle{font-size:11px;letter-spacing:1px}.cover-actions{padding:0 18px}.cover-art{margin-top:30px}.btn{font-size:13px}.inspect-room{height:191px}.obj-parcel{width:74px}.story-art,.quiz-art{margin-left:-13px;margin-right:-13px}.dialogue p{font-size:11px}.dialogue{padding:12px 10px;gap:8px}.scene h2{font-size:20px}.scene-intro{font-size:11px}.inventory{padding:10px}.inventory-label{font-size:11px}.stamps{gap:5px}.stamp-slot{width:23px;height:27px}.map{padding:11px}.route-grid{margin:0 30px}.route-endpoint{width:30px}.route-endpoint>svg{width:30px;height:30px}.route-start{left:-36px;top:calc(16.6667% - 17px)}.route-end{right:-36px;top:calc(83.3333% - 13px)}.route-endpoint:after{top:12px}.option-label{font-size:11px}.option{min-height:75px;padding:8px 4px}.option.selected{padding:7px 3px}.options{gap:9px}.reward{padding:17px 13px}.reward h3{font-size:17px}.letter .ending-quote{font-size:17px}.letter p,.reward p{font-size:12px}.reward-actions .btn{font-size:11px}.mini-sky{margin-left:-13px;margin-right:-13px;margin-bottom:-18px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
