@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&display=swap');
:root{font-family:'Noto Serif SC','Songti SC',serif;color:#6c5149;background:#f4ebdf}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 50% 0,#fffaf0 0,#f4ebdf 58%,#e9d8c8 100%)}button,select{font:inherit}button{cursor:pointer}.shell{width:min(1510px,calc(100% - 34px));margin:auto;padding:18px 0 20px}.site-header{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:4px 14px 15px}.brand{display:flex;align-items:center;gap:18px}.brand-spark{font-size:32px;color:#c69279}.site-header h1{font-weight:500;font-size:clamp(24px,2.8vw,39px);letter-spacing:.17em;line-height:1.2;margin:0 0 6px}.site-header p{font-size:12px;color:#a18372;letter-spacing:.1em;margin:0}.world-controls{display:flex;gap:12px;align-items:center;white-space:nowrap}.world-controls label{font-size:12px;color:#987966}.world-controls select{border:1px solid #e2cdb8;background:#fff9ee;color:#775a4c;border-radius:11px;padding:8px 27px 8px 10px;margin-left:5px;font-size:12px;outline:none}.world-controls select:focus-visible,.object:focus-visible,.modal-close:focus-visible,.tiny-action:focus-visible{outline:3px solid #d5a580;outline-offset:3px}.home-frame{background:#fffaf1;border:1px solid #dfc7af;border-radius:18px;padding:10px;box-shadow:0 20px 50px #89634029,0 2px 7px #a17b601e}.frame-heading,.frame-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 13px;color:#9d806f;font-size:11px;letter-spacing:.08em}.frame-heading{padding-top:2px;padding-bottom:9px}.frame-heading span:first-child{color:#805d4e;font-size:15px}.frame-heading .heart{color:#c6918b;font-size:21px;margin-right:6px}.frame-heading span:last-child{font-family:Georgia,serif;font-size:10px;letter-spacing:.18em}.frame-footer{padding-top:9px}.room{position:relative;width:100%;aspect-ratio:1200/760;overflow:hidden;border:5px solid #cbaa8b;border-radius:12px;background:#e7d2b9;cursor:crosshair;touch-action:manipulation;--sky-top:#a5c6d0;--sky-bottom:#f3d5ad;--hill-far:#b6b29d;--hill-near:#8d9d79;--leaf:#cf915e}.room-art{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}.room.season-spring{--sky-top:#a7cad7;--sky-bottom:#f3dccb;--hill-far:#b8cdb5;--hill-near:#90ad85;--leaf:#e8aab5}.room.season-summer{--sky-top:#8fc5dc;--sky-bottom:#f5dfb5;--hill-far:#a2c89d;--hill-near:#74a375;--leaf:#699b6b}.room.season-autumn{--sky-top:#a5c6d0;--sky-bottom:#f3d5ad;--hill-far:#b6b29d;--hill-near:#8d9d79;--leaf:#cf915e}.room.season-winter{--sky-top:#b6cbd7;--sky-bottom:#eae2db;--hill-far:#d1dadd;--hill-near:#bcc9c8;--leaf:#d9d8ca}.room.time-day .moon,.room.time-day .stars,.room.time-day .night-overlay,.room.time-night .sun,.room:not(.season-winter) .snow{display:none}.room.time-night{--sky-top:#2a3a53;--sky-bottom:#6a647e;--hill-far:#53636c;--hill-near:#3e525b}.room.time-night .night-overlay{opacity:.16}.room.time-night .lamp-glow{opacity:.75}.room.season-winter .tree-crowns{opacity:.28}.room.season-winter .snow{animation:snowfall 5s ease-in-out infinite alternate}@keyframes snowfall{to{transform:translateY(11px)}}.object{position:absolute;z-index:8;background:transparent;border:0;padding:0;cursor:pointer;transition:filter .2s,transform .2s}.object:hover{filter:drop-shadow(0 0 7px #ffedbf);transform:translateY(-2px)}.object span{position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);padding:4px 9px;background:#fff8edec;border:1px solid #d7baa1;border-radius:18px;box-shadow:0 3px 8px #6e51402a;color:#805e50;font-size:clamp(9px,.92vw,12px);white-space:nowrap;opacity:0;transition:opacity .2s;pointer-events:none}.object:hover span,.object:focus-visible span{opacity:1}.object svg{width:100%;height:100%;filter:drop-shadow(1px 4px 2px #72534044)}.hit-chair{left:23%;top:62%;width:16%;height:21%}.hit-bed{left:68%;top:47%;width:29%;height:32%}.hit-letter{left:47%;top:50%;width:7%;height:7%}.hit-gift{left:55.5%;top:48%;width:7.5%;height:12%;animation:giftFloat 3s ease-in-out infinite}.hit-cat{left:62%;top:79%;width:9%;height:12%;animation:catBreathe 3.3s ease-in-out infinite}.hit-npc{left:60%;top:66%;width:10%;height:20%}.character{position:absolute;z-index:6;width:6.5%;height:16.5%;transform:translate(-50%,-91%);pointer-events:none;will-change:left,top}.character svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(2px 4px 2px #53413436)}.character.npc{left:65.4%;top:83%;width:7.3%;height:20%;z-index:5}.character.player{left:46.2%;top:88%;}.character.facing-left svg{transform:scaleX(-1)}.character.walking svg{animation:walkBob .29s ease-in-out infinite alternate}.character.walking .leg-left{transform-origin:38px 107px;animation:legSwing .34s ease-in-out infinite alternate}.character.walking .leg-right{transform-origin:55px 107px;animation:legSwing .34s ease-in-out infinite alternate-reverse}.character.walking .body{transform-origin:45px 85px;animation:bodySway .34s ease-in-out infinite alternate}.character.walking .head{transform-origin:45px 65px;animation:headSway .34s ease-in-out infinite alternate-reverse}.player[data-direction=back] .back-head{display:block}.back-head{display:none}.player.sitting{transform:translate(-50%,-75%) rotate(-8deg)}.player.sleeping{transform:translate(-50%,-70%) rotate(67deg)}.sleep-z{display:none;position:absolute;top:-18px;right:-15px;color:#8e7093;font-size:18px;animation:zfloat 1.8s ease-in-out infinite}.player.sleeping .sleep-z{display:block}.walk-marker{position:absolute;z-index:10;width:23px;height:23px;border:2px solid #fff7db;border-radius:50%;box-shadow:0 0 0 3px #b9817d80,0 0 13px #fff;transform:translate(-50%,-50%);pointer-events:none;opacity:0}.walk-marker.active{animation:marker .6s ease-out forwards}.scene-tip{position:absolute;left:50%;bottom:2.5%;transform:translateX(-50%);z-index:9;background:#fff8edec;border:1px solid #e3c9ae;border-radius:20px;box-shadow:0 3px 10px #6b4f3029;padding:7px 15px;color:#8c6d5b;font-size:clamp(9px,1vw,12px);white-space:nowrap;pointer-events:none;transition:opacity .4s}.scene-tip.hide{opacity:0}.closing{text-align:center;padding-top:14px;color:#a78a78;font-size:12px;letter-spacing:.08em}.closing span{margin-left:12px;color:#a2796d}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#3d2e2a8d;display:grid;place-items:center;padding:18px;backdrop-filter:blur(5px)}.modal-backdrop[hidden]{display:none}.modal-card{width:min(570px,100%);max-height:min(84vh,720px);overflow:auto;position:relative;background:#fff9ed;border-radius:23px;border:2px solid #dcc0a7;box-shadow:0 25px 70px #38271c63;padding:33px 38px 34px;text-align:center;animation:modalIn .35s cubic-bezier(.2,.8,.2,1)}.modal-card:before{content:'';position:absolute;inset:9px;border:1px solid #ebd7c3;border-radius:17px;pointer-events:none}.modal-close{position:absolute;right:15px;top:12px;border:0;background:#f2e0cf;color:#a17969;border-radius:50%;width:34px;height:34px;line-height:29px;font-size:25px;z-index:2}.modal-content{position:relative;z-index:1}.modal-kicker{font-size:11px;letter-spacing:.24em;color:#bf9a7c}.modal-content h2{font-weight:500;font-size:26px;color:#765449;margin:9px 0 14px}.modal-content p{font-size:14px;line-height:2;color:#7d6356}.modal-content .signature{margin-top:18px;text-align:right;color:#aa7d6f}.letter-paper{text-align:left;background:#fffdf5;border:1px solid #ebd8bc;border-radius:7px;padding:25px 31px;box-shadow:0 5px 0 #e8d3b9;transform:rotate(-1deg)}.letter-paper.blank-letter{min-height:230px;background:repeating-linear-gradient(#fffdf5 0,#fffdf5 36px,#eadfca 37px,#fffdf5 38px)}.letter-paper p{line-height:2.1;margin:0 0 13px}.letter-paper .salutation{font-weight:600}.gift-bunny{width:min(280px,72%);max-height:290px;object-fit:contain;filter:drop-shadow(0 12px 14px #755c4d2d);animation:bunnyAppear .75s both}.gift-heart{font-size:27px;color:#c78380;animation:heartBeat 1.5s infinite}.npc-dialog{position:relative;margin:20px auto 0;padding:22px 25px;background:#fffdf7;border:1px solid #e7cfb8;border-radius:22px;box-shadow:0 5px 0 #ead7bf}.npc-dialog:before{content:'“';font-size:55px;position:absolute;left:14px;top:-19px;color:#e4bdab}.npc-dialog p{font-size:17px;margin:0;padding-left:17px}.tiny-action{border:1px solid #dec4ad;background:#f7e9d9;color:#8d6655;border-radius:22px;padding:8px 17px;margin-top:20px;font-size:12px}.tiny-action:hover{background:#f0d9c4}.cat-hearts{font-size:28px;color:#c58a88;letter-spacing:12px;animation:heartBeat 1.5s infinite}@keyframes modalIn{from{opacity:0;transform:translateY(22px) scale(.96)}to{opacity:1;transform:none}}@keyframes giftFloat{50%{transform:translateY(-4px)}}@keyframes catBreathe{50%{transform:translateY(-3px)}}@keyframes walkBob{to{transform:translateY(-3px)}}@keyframes legSwing{to{transform:rotate(19deg)}}@keyframes bodySway{to{transform:rotate(2deg)}}@keyframes headSway{to{transform:rotate(1.5deg)}}@keyframes zfloat{50%{transform:translateY(-10px);opacity:.55}}@keyframes marker{0%{opacity:1;scale:.4}40%{opacity:1;scale:1}100%{opacity:0;scale:1.3}}@keyframes bunnyAppear{from{opacity:0;transform:scale(.65) rotate(-8deg)}to{opacity:1;transform:none}}@keyframes heartBeat{50%{transform:scale(1.13)}}@media(max-width:760px){.shell{width:calc(100% - 14px);padding-top:11px}.site-header{flex-wrap:wrap;gap:9px;padding:3px 7px 11px}.brand{gap:8px}.brand-spark{font-size:22px}.site-header h1{font-size:23px}.site-header p{font-size:10px}.world-controls{width:100%;justify-content:space-between;gap:5px}.world-controls label{font-size:10px}.world-controls select{font-size:10px;padding:5px 19px 5px 6px;margin-left:3px}.home-frame{padding:5px;border-radius:11px}.room{border-width:3px;border-radius:7px}.frame-heading,.frame-footer{padding:5px;font-size:9px}.frame-heading span:first-child{font-size:11px}.frame-heading span:last-child{font-size:8px;letter-spacing:.05em}.frame-footer span:last-child{display:none}.scene-tip{bottom:1%;padding:3px 6px;font-size:8px}.object span{display:none}.closing{font-size:10px;line-height:1.8}.closing span{display:block;margin:0}.modal-card{padding:30px 25px}.letter-paper{padding:20px 18px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
@media (min-width:761px){.shell{width:min(1510px,calc(100% - 34px),calc((100dvh - 130px)*1.5789));padding:8px 0 5px}.site-header{padding:0 8px 7px}.site-header h1{font-size:clamp(24px,2.5vw,34px);margin-bottom:3px}.site-header p{font-size:11px}.frame-heading{padding:2px 8px 5px}.frame-footer{padding:5px 8px 1px}.closing{padding-top:5px}}
.character.npc{width:8.5%;height:23%}
.mobile-actions{display:none}@media(max-width:760px){.mobile-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:8px 2px 3px}.mobile-actions button{border:1px solid #dcbba4;background:#fff4e7;color:#805f51;border-radius:14px;padding:6px 9px;font-size:11px;min-height:32px}.mobile-actions button:active{background:#ead3bf}}
.character.npc,.character.player{width:6.5%;height:16.5%}.character.walking svg,.character.walking .head,.character.walking .body,.character.walking .leg-left,.character.walking .leg-right{animation:none!important}.player .walk-pose,.player .walk-arms,.player .side-head{display:none}.player.walking .idle-legs,.player.walking .idle-arms{display:none}.player.walking[data-walk-frame="0"] .frame-0,.player.walking[data-walk-frame="1"] .frame-1,.player.walking[data-walk-frame="2"] .frame-2,.player.walking[data-walk-frame="3"] .frame-3{display:block}.player[data-direction="side"] .side-head{display:block}.player.sitting{transform:translate(-50%,-75%)}
.room-background,.window-scene{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}.room-background{object-fit:fill;z-index:0}.window-scene{z-index:1}.room-art{display:none}.room.time-night .room-background{filter:brightness(.82) saturate(.88)}.room.time-day .room-background{filter:brightness(1.08) saturate(.96)}.room.time-night .window-scene{filter:brightness(.9)}
.window-scene .vector-landscape{display:none}.room.time-night #season-image{filter:brightness(.43) saturate(.7) hue-rotate(12deg)}.room.time-day #season-image{filter:brightness(1.04)}
.character.facing-left svg{transform:none}.player .side-head,.player .back-head{display:none!important}.player.sleeping{opacity:0;transform:translate(-50%,-91%)}.player.sleeping .sleep-z{display:none}.sleeping-player{position:absolute;left:68.5%;top:47%;width:25%;height:27%;z-index:7;opacity:0;pointer-events:none;transition:opacity .35s ease}.sleeping-player.visible{opacity:1}.sleeping-player svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(1px 3px 2px #5f3f3833)}.dream-z{position:absolute;left:16%;top:2%;color:#e9d7ff;text-shadow:0 1px 4px #634f83;font-size:clamp(9px,1.5vw,18px);letter-spacing:.18em;animation:zfloat 2s ease-in-out infinite}.dream-z b{font-weight:500;font-size:1.35em}
.sleeping-player{left:64.5%;top:42%}
.player .seated-legs{display:none}.player.sitting .idle-legs{display:none}.player.sitting .seated-legs{display:block}.player{transition:opacity .38s ease}.player.sitting{transition:left .55s ease,top .55s ease,opacity .35s ease}.sleeping-player{transition:opacity .65s ease}.hit-cat{transition:left 2.2s ease-in-out,filter .2s;animation:catLife 8s ease-in-out infinite}.hit-cat.petted{animation:catNuzzle .42s ease-in-out 4}.hit-cat.petted:after{content:"♡  ♡";position:absolute;left:12%;top:-42%;color:#e8a0a7;font-size:clamp(12px,1.7vw,22px);animation:catHearts 1.7s ease-out forwards;white-space:nowrap}.hit-gift.opening{animation:giftShake .18s ease-in-out 4}.gift-reveal .gift-bunny{animation:bunnyAppear .85s .35s both}.gift-reveal .gift-message,.gift-reveal .gift-heart{animation:giftWords .65s 1s both}.gift-sparkles{color:#d4a169;font-size:18px;letter-spacing:.3em;animation:giftWords .65s .25s both}.character svg{filter:drop-shadow(1px 3px 2px #4c342f55) saturate(.88)}@keyframes catLife{0%,66%,100%{transform:translateY(0) scaleX(1)}70%{transform:translateY(-3px) scaleX(1.08)}76%{transform:translateY(1px) scaleX(.96)}82%{transform:translateY(0) scaleX(1)}}@keyframes catNuzzle{0%,100%{transform:translateX(0)}50%{transform:translateX(-7px) translateY(-3px)}}@keyframes catHearts{from{opacity:1;transform:translateY(5px)}to{opacity:0;transform:translateY(-25px)}}@keyframes giftShake{0%,100%{transform:translateX(0) rotate(0)}25%{transform:translateX(-3px) rotate(-4deg)}75%{transform:translateX(3px) rotate(4deg)}}@keyframes giftWords{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.gift-reveal .gift-bunny,.gift-reveal .gift-message,.gift-reveal .gift-heart,.gift-sparkles{animation-delay:0s!important}}
.hit-cat{z-index:10}
.sleeping-player.visible .sleep-blanket{animation:pullBlanket .9s ease-out both}@keyframes pullBlanket{from{transform:translateY(30px);opacity:.55}to{transform:translateY(0);opacity:1}}
.sleep-photo-frame{width:100%;aspect-ratio:1.3;overflow:hidden;border-radius:14px;border:1px solid #e2c9b6;background:#efe2d3;box-shadow:0 5px 14px #6c4c3a26}.sleep-photo-frame img{width:100%;height:100%;object-fit:cover;object-position:center}.sleep-photo-card p{margin:14px 0 0}
.sleep-photo-frame img{object-position:center 45%}
