:root{color-scheme:light;--ink:#4c3b2b;--paper:#fff8e9;--wood:#936949;--green:#54917c}*{box-sizing:border-box}body{margin:0;background:#293e36;font-family:system-ui,-apple-system,'PingFang SC',sans-serif;color:var(--ink);overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:focus-visible{outline:3px solid #e8a64f;outline-offset:2px}button:disabled{opacity:.5;cursor:default}#game{position:relative;width:min(100vw,480px);height:100dvh;margin:auto;background:#d9eee5;overflow:hidden}canvas{position:absolute;width:100%;height:100%;image-rendering:pixelated}#hotspots{position:absolute;inset:0}.hotspot{position:absolute;background:transparent;border:0;min-width:44px;min-height:44px;padding:0;display:flex;align-items:flex-end;justify-content:center}.hotspot span{font-size:11px;background:#fff0d5e8;border:1px solid #957052;padding:2px 7px;box-shadow:2px 2px #64482e33;white-space:nowrap}.hud{position:absolute;left:12px;right:12px;top:max(10px,env(safe-area-inset-top));pointer-events:none}.hud button{pointer-events:auto}.brand{font-size:14px;font-weight:600;display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.capsule{background:#f9efddbc;padding:4px 10px;border:1px solid #857961;border-radius:20px;font-size:13px}.hud-row{display:flex;justify-content:space-between;gap:8px;align-items:center}.hud-row button,.hud-row span{background:#fff0d5;border:2px solid #8c6949;padding:7px 12px;box-shadow:2px 3px #6f5337;min-height:40px;font-size:13px}.hud-row button:last-child{width:40px;padding:0}.avatars{display:flex;gap:8px;margin-top:12px}.avatars button{background:#f9edcfed;border:2px solid #9a7957;padding:5px 10px;text-align:left;flex:1;font-size:13px;min-height:44px}.avatars small{display:block;font-size:10px;color:#8b7357}.bottom{position:absolute;bottom:max(12px,env(safe-area-inset-bottom));left:10px;right:10px;height:62px;background:#a8d5c2;border:3px solid #705139;display:flex;align-items:center;box-shadow:0 4px #644730}.bottom button{flex:1;border:0;background:transparent;color:#fff2d4;font-size:13px;min-height:48px;padding:4px}.bottom .home{background:#b84b43;color:#654b32;border:3px solid #705139;min-height:64px;transform:translateY(-8px);font-weight:600}.bottom button:active{background:#c49a6a}#bubble{position:absolute;bottom:90px;left:18px;right:18px;pointer-events:none;padding:10px 12px;background:#fff3dbe8;border:2px solid #9a7957;font-size:12px;line-height:1.6;box-shadow:3px 3px #70513930;max-height:86px;overflow:hidden}#bubble:empty{display:none}#shade{position:absolute;inset:0;background:#436b5b78}#modal{position:absolute;left:12px;right:12px;top:max(135px,calc(env(safe-area-inset-top) + 125px));bottom:max(94px,calc(env(safe-area-inset-bottom) + 84px));background:var(--paper);border:4px solid #8a6448;box-shadow:5px 5px #382b2250;display:flex;flex-direction:column;z-index:4}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:#b84b43;border-bottom:2px solid #ad7f52;flex-shrink:0}h1{font-size:20px;font-weight:600;margin:0}.modal-head button{border:2px solid #855b40;background:#f0d4a1;width:40px;height:40px;font-size:26px;line-height:1}#tabs{display:flex;flex-shrink:0;border-bottom:1px solid #cbb28b}#tabs:empty{display:none}#tabs button{flex:1;background:#d9eee3;border:0;padding:12px 0;font-size:12px;min-height:44px}#tabs .active{background:#b84b43;color:#fff7e1}#panel{padding:16px;overflow:auto;overscroll-behavior:contain;flex:1;min-height:0}#feedback{flex-shrink:0;font-size:12px;line-height:1.5;padding:0 12px;max-height:70px;overflow:auto;background:#c4e4d5}#feedback:not(:empty){padding:9px 12px;border-top:1px solid #8bbda7}#feedback.error{background:#f3dcc7;color:#965538}.sub{font-size:12px;color:#897153;line-height:1.7;margin:0 0 12px}h2{font-size:16px;margin:14px 0 10px;font-weight:600}h3{font-size:14px;margin:0 0 7px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.action{background:#efddba;border:2px solid #a2845a;padding:9px 12px;min-height:44px;font-size:12px;box-shadow:0 2px #a2845a}.action.primary{background:#b84b43;color:#fff9e9;border-color:#8d3835}.actions .action{flex-grow:1}.pot{position:relative;width:158px;height:94px;border:5px solid #655d50;background:#8f9790;margin:24px auto 14px;box-shadow:0 6px #635642;display:flex;align-items:center;justify-content:center;color:#fff4dc;font-size:13px;text-align:center;padding:10px}.pot:before,.pot:after{content:'';position:absolute;top:20px;width:24px;height:13px;border:4px solid #655d50;background:#8f9790}.pot:before{left:-24px}.pot:after{right:-24px}.pot.filled{background:#bc895b}.pot.cooking{background:#be7f45}.pot-content{font-size:12px;line-height:1.7}.ingredients{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.ingredient{position:relative;min-height:83px;border:2px solid #d1b88d;background:#f7e7c8;padding:7px 2px;font-size:12px}.ingredient.selected{border-color:#ac7147;background:#edd3a6}.ingredient .icon{display:block;font-size:24px;margin:4px}.ingredient .stock{position:absolute;top:3px;right:5px;font-size:10px;color:#9c6643}.ingredient .picked{display:block;font-size:10px;min-height:13px;color:#986640}.row{display:flex;justify-content:space-between;gap:10px;align-items:center;border-bottom:1px solid #dcc6a0;padding:12px 0;font-size:13px}.row small{display:block;color:#907455;font-size:11px;margin-top:4px}.row .action{white-space:nowrap}.review{border-bottom:1px solid #d5bd97;padding:12px 0}.review p{font-size:12px;line-height:1.7}.stamp{font-size:12px;color:#a66c45}.step{display:inline-block;background:#efdebc;padding:5px;margin:3px;font-size:11px}.step.done{background:#c4e4d5}.balance{font-size:28px;text-align:center;padding:20px;background:#f2e1b8}.event{border:2px solid #c2a577;background:#f5e3bf;padding:14px;font-size:13px;line-height:1.7}.timer{font-size:30px;text-align:center;color:#598f7b;margin:20px 0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tile{border:2px solid #c4a577;padding:12px;background:#f0dfbd}.tile p{font-size:12px;color:#8d7051}[hidden]{display:none!important}@media(max-height:700px){#modal{top:110px;bottom:82px}.hud{top:6px}.brand{margin-bottom:6px}.avatars{margin-top:6px}.bottom{height:54px;bottom:8px}.bottom .home{min-height:58px}.modal-head{padding:7px 12px}#bubble{bottom:78px}.pot{margin-top:16px;height:78px}.avatars small{display:none}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
.remove{border:0;background:#f8e8c6;padding:4px;margin:2px;font-size:12px;min-height:32px;min-width:38px}

.remove{min-width:44px;min-height:44px}.pot{height:auto;min-height:94px}.modal-head button{width:44px;height:44px}.hud-row button,.hud-row span{min-height:44px}
.trip-stage{padding:20px 12px;background:#c4e4d5;text-align:center;border:2px solid #8bbda7}.trip-stage span,.trip-stage strong{display:block;font-size:13px;margin:6px}.trip-stage strong{font-size:19px;font-weight:500}.packed{font-size:12px;line-height:1.8;padding:12px;background:#f1e1bd;margin:12px 0}.destination{background:#eee0bb;border:2px solid #c6ac7c;padding:14px}.destination span,.destination p{font-size:12px}.destination h2{margin:8px 0}.postcard{padding:14px;margin:12px 0;background:#f5e7ca;border:1px solid #d2bb91}.postcard small{font-size:11px;color:#8a7757}.postcard h3{margin-top:7px}.postcard p{font-size:12px;line-height:1.8;margin-bottom:0}
#request-callout{margin-top:8px;padding:10px;width:100%;min-height:44px;background:#f4d4c5;border:2px solid #aa7e4c;font-size:12px;text-align:left;box-shadow:2px 2px #70513930}.people-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.person-card{background:#eee3c6;border:1px solid #c8b28c;padding:12px}.person-card p{font-size:11px;margin:7px 0;color:#7d694d}.day-settings{margin-top:18px;font-size:12px}.day-settings summary{min-height:44px;padding:12px 0}.date-label{display:block;font-size:12px;margin:14px 0 8px}#diary-date,#puzzle-code{width:100%;background:#f8edcf;border:2px solid #b59b70;padding:12px;color:#4c3b2b;font:inherit;font-size:16px;min-height:44px}#puzzle-code{letter-spacing:16px;text-align:center}.diary-page{background:repeating-linear-gradient(#fff5de 0 27px,#e9d8b8 27px 28px);padding:12px;margin-top:16px}.diary-entry{padding:14px 0;border-bottom:1px dashed #c8ac81}.diary-entry p{font-size:12px;line-height:1.8}.entry-time{font-size:11px;color:#9b7b53}.diary-attachment{background:#efdfbb;border-left:4px solid #8bbda7;padding:12px;margin-top:10px}.diary-attachment small,.diary-attachment strong{display:block;font-size:11px;margin:3px 0}.diary-attachment strong{font-size:13px;font-weight:500}.clue{position:relative;margin:10px 0;background:#efe2c0;border:1px solid #c2aa7f;padding:12px 52px 12px 12px;font-size:12px}.clue strong{position:absolute;right:18px;top:12px;font-size:26px;font-weight:500}.clue small{display:block;font-size:11px;margin-top:8px;color:#897153}@media(max-height:700px){#request-callout{font-size:11px;padding:5px;min-height:36px;margin-top:4px}}

@media(max-height:700px){#request-callout{min-height:44px}}
.bento-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0}.bento-actions .action{font-size:11px;min-height:40px;padding:7px 9px}
.bento-actions .action{min-height:44px}
.hud-row #sky{font-size:11px;padding:7px 5px;flex:1;min-width:0;text-align:center}.calendar-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:14px}.calendar-strip span{background:#eddfbf;text-align:center;padding:10px 0;font-size:11px;min-height:50px}.calendar-strip .today{background:#598f7b;color:#fff6df}.calendar-strip small{display:block;font-size:10px;margin-top:4px}.day-summary{background:#c4e4d5;border-left:4px solid #8bbda7;padding:12px;margin:12px 0}.day-summary p,.day-summary small{font-size:12px;line-height:1.7}.quiz-options{display:flex;flex-direction:column;gap:10px;margin:18px 0}.target-buttons .action{flex:1}

#next-day{background:#598f7b;color:#fff8df;font-size:12px;padding:8px 5px}.hud-row{flex-wrap:wrap}.yard-area{border:2px dashed #598f7b55;border-radius:8px}

#home-name{border:0;background:transparent;font-weight:600;font-size:14px;max-width:78%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;padding:0;min-height:32px}#home-name-input{display:block;width:100%;margin:16px 0;padding:12px;background:#fff9e8;border:2px solid #ac8a5d;color:#4c3b2b;font:inherit}

#moment-marker{position:absolute;right:14px;max-width:50%;min-height:44px;padding:8px;background:#fbdf9f;border:2px solid #9c794c;font-size:12px;box-shadow:2px 2px #76583855}#moment-marker[hidden]{display:none}

.wish-steps{margin:16px 0;padding:8px 14px;background:#f1e5c7;border-left:4px solid #8bbda7}.wish-steps p{font-size:14px;line-height:1.7}.postcard h4{margin-bottom:4px}

#modal.onboarding{top:auto;bottom:80px;max-height:49%;transform:none}.onboarding #panel{padding-top:10px}.tour-speaker{color:#746047;font-size:13px}.onboarding p{line-height:1.65}.onboarding h2{margin:8px 0}#continue-tour{position:absolute;z-index:2;right:12px;top:158px;background:#fff0cb;border:2px solid #806548;border-radius:12px;padding:8px;color:#62462e} @media(max-height:700px){#modal.onboarding{bottom:65px;max-height:53%}}

.onboarding #panel{font-size:14px}.onboarding h2{font-size:18px}.onboarding p{margin:10px 0}.onboarding .actions{gap:8px}.onboarding .actions button{font-size:13px}

.place-hint{padding:10px 12px;margin-bottom:14px;background:#c4e4d5;border-left:4px solid #598f7b}.place-hint small{color:#436b5b}.place-hint p{font-size:13px;line-height:1.65;margin:5px 0 0}

.pond-art{height:100px;position:relative;background:repeating-linear-gradient(0deg,#8bbda7 0 18px,#c4e4d5 18px 20px);border:7px solid #8bbda7;overflow:hidden}.bobber{position:absolute;left:55%;top:30px;color:#bb6950}.pond-fish{position:absolute;left:22%;bottom:12px}.casting .bobber{animation:bob 1.6s infinite ease-in-out}.material-list{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.material-list span{padding:7px;background:#e8e0c9;font-size:13px}@keyframes bob{50%{transform:translateY(8px)}}

.dress-preview{display:flex;justify-content:center;gap:65px;margin:25px 0;text-align:center}.pixel-person{position:relative;width:30px;height:32px;margin:25px auto 12px;background:#79bba8;border-bottom:8px solid #436b5b;box-shadow:-4px 0 #efbe91,4px 0 #efbe91}.pixel-person:before{content:'';position:absolute;top:-22px;left:3px;width:24px;height:21px;background:#efbe91;border-top:7px solid #43382f;box-sizing:border-box}.person-1{background:#c75a50}.pearl-pin{position:absolute;right:4px;top:5px;width:7px;height:5px;background:#f6e5cf;box-shadow:0 2px #b88d99}

.inventory-open{background:#fff0d5;border:2px solid #8c6949;padding:6px 9px;font-size:12px;min-height:32px}.inventory-card{padding:12px;background:#f3e8cb;border:1px solid #cbbb97;margin:9px 0}.inventory-card p{font-size:12px;margin:5px 0}.inventory-card small{font-size:12px;line-height:1.7;color:#77694f}.catch-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.catch-card{padding:12px 6px;display:flex;flex-direction:column;align-items:center;gap:8px;background:#f2e5bc;border:2px solid #b49c6f;animation:catch-pop .4s both}.catch-card span{font-size:30px}.catch-card strong{font-size:13px}.catch-card b{color:#598f7b}.cast-rod{position:absolute;left:64%;top:0;font-size:55px;color:#73543a;transform-origin:top;opacity:0}.casting .cast-rod{opacity:1;animation:cast-line 1.5s both}.cast-scene .bobber{animation:cast-bob 1.5s both}.cast-scene .pond-fish{animation:fish-lift 1.5s both}@keyframes catch-pop{from{opacity:0;transform:translateY(12px) scale(.75)}70%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes cast-line{0%{transform:rotate(-35deg)}35%{transform:rotate(20deg)}70%{transform:rotate(20deg)}100%{transform:rotate(-35deg)}}@keyframes cast-bob{0%{transform:translateY(-40px);opacity:0}40%,60%{transform:translateY(0);opacity:1}80%{transform:translateY(8px)}100%{transform:translateY(-45px);opacity:0}}@keyframes fish-lift{0%,65%{transform:translateY(0)}100%{transform:translate(60px,-70px);opacity:0}}@media(prefers-reduced-motion:reduce){.catch-card,.casting .cast-rod,.cast-scene .bobber,.cast-scene .pond-fish{animation:none}}

.catch-card{padding:8px 5px;gap:4px}.catch-card span{font-size:26px;line-height:1.2}.catch-card strong{line-height:1.3}.catch-card b{font-size:14px;line-height:1.2}

.avatars small{display:block;font-size:10px;line-height:1.4;margin-top:3px;white-space:normal}.hotspot[data-open="study"],.hotspot[data-open="computer"],.hotspot[data-open="decorate"]{align-items:flex-start}

#scene-back{position:absolute;left:12px;z-index:2;width:124px;min-height:46px;background:#fff0d5;border:2px solid #957052;box-shadow:2px 2px #64482e33;font-size:13px;padding:8px}#scene-back[hidden]{display:none}.hotspot{min-width:48px;min-height:48px}.hotspot span{font-size:12px;padding:5px 8px;pointer-events:none}.hotspot[data-action="talkResidents"] span{min-width:42px;text-align:center}.hotspot:active span,#scene-back:active{background:#e3d0a5}.hotspot:focus-visible{outline:3px solid #e8a64f;outline-offset:0}

.brand{gap:8px}.brand #home-name{flex:1;min-width:0}.brand .inventory-open,.brand #echo-lamp{flex-shrink:0}#echo-lamp{font:inherit;font-size:12px;min-height:32px;color:#654b32}#echo-lamp.has-reply{background:#f8dfa3;border-color:#a1834b;box-shadow:0 0 9px #e9c376}.echo-window{height:90px;display:flex;align-items:center;justify-content:center;gap:14px;background:#c4e4d5;border:7px solid #a78c63;margin:14px 0;color:#8c826b;font-size:36px}.echo-window.level-1,.echo-window.level-2,.echo-window.level-3{color:#e6b84a}.echo-window i{font-style:normal;font-size:22px}.echo-window.waiting{box-shadow:inset 0 0 22px #fff0ba}.echo-letter{border-left:4px solid #bea36b}

#activity-photo-shade{position:absolute;inset:0;background:#436b5b99;z-index:80;}
#activity-photo{position:absolute;z-index:81;left:14px;right:14px;top:50%;transform:translateY(-50%);max-height:calc(100% - 32px);overflow:auto;background:#fff4d9;border:4px solid #96784f;box-shadow:0 6px 0 #66563b;animation:photo-arrive .22s ease-out;}
.activity-photo-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:#b84b43;border-bottom:2px solid #96784f;}.activity-photo-head h2{font-size:16px;margin:0;}.activity-photo-head button{min-width:44px;min-height:44px;border:2px solid #96784f;background:#f8e5bc;font-size:24px;}.activity-photo-body{padding:12px;}.activity-photo-body>.action{width:100%;}.activity-art{width:100%;height:auto;display:block;max-height:44vh;object-fit:contain;}
.album-photo{display:block;width:100%;padding:10px;margin:12px 0;border:2px solid #c2a577;background:#f3e4c5;text-align:left;}.album-photo strong{display:block;font-size:13px;margin-top:10px;}@keyframes photo-arrive{from{opacity:0;transform:translateY(-46%) scale(.96);}to{opacity:1;transform:translateY(-50%) scale(1);}}@media(prefers-reduced-motion:reduce){#activity-photo{animation:none;}}



.hud-row{flex-wrap:wrap;}#sky{flex:1;min-width:140px;padding:5px 8px;}#sky strong{display:block;font-size:11px;font-weight:500;}#sky small{display:block;font-size:10px;white-space:nowrap;}.skill-cards{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0;}.skill-cards p{font-size:12px;}.skill-cards small{display:block;font-size:10px;color:#897153;}

.hotspot{touch-action:manipulation}.hotspot .room-signal{position:absolute;left:0;right:0;top:0;background:#fff2c9;border:2px solid #8d6546;color:#533e2b;font:normal 12px sans-serif;padding:5px 3px;pointer-events:none;box-shadow:2px 2px #ad8759;z-index:2}.hotspot[data-action="followRoomSignal"] span{background:#fff1b9;border:2px solid #8d6546;padding:6px;font-weight:bold;white-space:normal}.action{min-height:44px;touch-action:manipulation}

.life-note{background:#c4e4d5;border:2px solid #598f7b;padding:10px;margin:8px 0 14px}.life-note p{margin:6px 0}.life-step{padding:8px;border-left:3px solid #cebb91}.life-step small{display:block;margin-top:4px;color:#77654d}.life-step.current{background:#f4e6bd;border-color:#9b7953}

.hotspot[data-action="talkResidents"]{min-width:44px;min-height:44px;align-items:flex-start}

/* Shared red-and-mint visual direction. Layout and save data stay unchanged. */
:root{--mint:#b7dcca;--mint-dark:#477d68;--red:#b84b43;--red-dark:#8d3835;--paper:#fff8e9;--ink:#604638;--wood:#9d7051}
body{background:#293e36;color:var(--ink)}#game{background:#d9eee5}.hud-row button,.avatars button,.hotspot span,#scene-back{border-color:#8f6b50}.brand #home-name{color:#8d3835;font-weight:750}.brand .inventory-open,.capsule{background:#d8eee2;border-color:#6e9e86;color:#385e4e}.hud-row #coins{background:#f7ddd0;color:#813e35}.hud-row #sky{background:#edf6ed}.avatars button{background:#edf6ed;border-left:4px solid #6ca38d}.avatars button[data-action="han"]{border-left-color:#bc5149}.avatars small{color:#6d6654}.bottom{background:#b7dcca;border-color:#76543f;box-shadow:0 4px #604638}.bottom button{color:#4f5545;font-weight:650}.bottom .home{background:var(--red);color:#fff8e9}.bottom button:active{background:#efd5c4}.modal-head,.activity-photo-head{background:var(--red);color:#fff8e9;border-color:var(--red-dark)}.modal-head button,.activity-photo-head button{background:#fff0db;color:#943f39;border-color:#8d3835}#tabs{background:#d9eee3}#tabs .active,.action.primary{background:var(--red);border-color:var(--red-dark);color:#fff8e9}.action{background:#deeee0;border-color:#91a38a;box-shadow:0 2px #9a7957}.ingredient{background:#fffaf0;border-color:#bbcfb7}.ingredient.selected{background:#f5dbce;border-color:var(--red)}.postcard,.diary-entry,.attachment,.clue,.event{border-color:#b99c79}.event,.postcard{background:#fff8e9}.life-note{background:#e1efe1;border-color:#8daa91}.life-step.current{background:#f6e1d1;border-color:var(--red)}.hotspot span{background:#fff8e9f0;border-bottom:3px solid #b7dcca;box-shadow:2px 2px #60463830}.hotspot[data-action="followRoomSignal"] span,.hotspot .room-signal{background:#f8ddd0;color:#873b35;border-color:#b84b43}.hotspot:active span,#scene-back:active{background:#c7e3d2}#bubble{background:#fff8e9f2;border-color:#a88061;border-left:5px solid #bc5149}.ingredient .icon{filter:saturate(.8)}.photo-placeholder{background:#b7dcca}.activity-photo-body{background:#fff8e9}.pot{background:#6a9d89;border-color:#604638}.pot.filled,.pot.cooking{background:#bd6a53}#feedback{background:#dfeddb}.error,#feedback.error{background:#f5ddd0;color:#8d3835}button:focus-visible{outline-color:#b84b43}#moment-marker,#request-callout,#continue-tour{background:#f7e0d2;color:#873b35;border-color:#b84b43}

/* Mobile game chrome: compact status, pixel bevels and a room-first composition. */
#game{isolation:isolate;background:#d9eee5}
.hud{top:max(10px,env(safe-area-inset-top));left:12px;right:12px}
.brand{gap:7px;margin-bottom:8px;min-height:36px}
.home-emblem{color:var(--red);display:flex;flex-shrink:0}.home-emblem .ui-icon{width:23px;height:25px}
.brand #home-name{font-size:15px;letter-spacing:.5px;min-height:36px}
.brand .inventory-open,.brand #echo-lamp{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:36px;min-width:44px;font-size:11px;padding:4px 7px;border-radius:0;border:2px solid #648e77;box-shadow:inset 2px 2px #f2f9e9,inset -2px -2px #9ac1aa,2px 2px #60463826;background:#d9ecda;color:#456d57}
.inventory-open .ui-icon{width:17px;height:20px}
.hud-row{gap:6px;flex-wrap:nowrap}
.hud-row button{font-size:12px;box-shadow:inset 2px 2px #fff9eb,inset -2px -2px #d7b896,2px 2px #60463830;border:2px solid #88694f;padding:5px 9px;min-height:44px}
.hud-row #coins{min-width:68px;padding:5px 6px;font-size:12px;font-weight:650}
.hud-row #sky{padding:5px 4px;min-width:0;background:#f6f7e9}
#sky strong{font-size:11px;font-weight:650;color:#536e55}#sky small{font-size:11px;color:#715542;margin-top:2px}
.hud-row button:last-child{width:38px;min-width:38px;font-size:20px;font-weight:700}
.hud-row #next-day{min-width:54px;font-size:10px;padding:3px}
.avatars{gap:7px;margin-top:9px}.avatars button{position:relative;padding:6px 7px 6px 40px;min-height:46px;border:1px solid #a3b69b;border-bottom:3px solid #8eaa8e;border-left:1px solid #a3b69b;background:#f0f6e8;font-size:12px;font-weight:650;box-shadow:inset 1px 1px #fffbed}
.avatars button[data-action="han"]{border-left:1px solid #bca894;border-bottom-color:#bc8570}
.avatars small{display:block!important;font-size:10px;line-height:1.25;font-weight:400;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.resident-portrait{position:absolute;left:7px;top:8px;width:25px;height:26px;background:#c2dfc5;border:1px solid #9ab598;overflow:hidden}
.resident-portrait:before{content:'';position:absolute;left:6px;top:4px;width:12px;height:12px;background:#efbe91;border-top:4px solid #604638;box-shadow:-2px 1px #604638}
.resident-portrait:after{content:'';position:absolute;left:5px;top:16px;width:15px;height:8px;background:#659f85}.resident-portrait i:before{content:'';position:absolute;left:9px;top:10px;width:1px;height:2px;background:#604638;box-shadow:6px 0 #604638;z-index:1}
.portrait-1{background:#f2d6c3;border-color:#bf9a7e}.portrait-1:after{background:#b95047}
#request-callout{font-size:11px;min-height:30px;padding:5px 8px;margin-top:6px;border-width:1px;border-left-width:4px;box-shadow:1px 2px #60463820;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bottom{left:10px;right:10px;bottom:max(9px,env(safe-area-inset-bottom));height:66px;padding:2px 3px;background:#bfdcc7;border:2px solid #806348;box-shadow:inset 2px 2px #e8f3df,inset -2px -2px #96b89b,0 3px #604638;gap:3px;z-index:2}
.bottom button{min-width:0;min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;padding:3px 0;font-weight:650;color:#577456;line-height:1.3}
.ui-icon{display:block;flex-shrink:0;image-rendering:pixelated}.bottom .ui-icon{width:23px;height:24px}
.bottom .home{min-height:58px;transform:translateY(-5px);border:2px solid #894039;box-shadow:inset 2px 2px #e3947a,inset -2px -2px #943e36,0 3px #604638;background:#bd574b;color:#fff4dc}
.bottom button:active{transform:translateY(2px);box-shadow:inset 2px 2px #91b69b}.bottom .home:active{transform:translateY(-2px)}
#bubble{left:12px;right:12px;bottom:89px;padding:9px 11px 9px 15px;min-height:44px;max-height:72px;font-size:12px;line-height:1.55;border:2px solid #9c8060;border-left:5px solid #ba5e4e;box-shadow:inset 0 0 0 2px #fffdf0,2px 3px #60463822;background:#fff8e9}
#scene-back{left:12px;width:110px;min-height:40px;display:flex;align-items:center;justify-content:center;gap:4px;padding:5px 7px;font-size:11px;background:#f4f3df;border:2px solid #9b8562;box-shadow:inset 2px 2px #fffbed,inset -2px -2px #ddd1ae,2px 2px #60463820}
#scene-back .ui-icon{width:16px;height:19px;color:#7a654a}
#moment-marker{right:12px;max-width:57%;min-height:40px;font-size:10px;line-height:1.35;padding:5px 7px;border:2px solid #b36a54;background:#f9e3d0;box-shadow:inset 2px 2px #fff3df,inset -2px -2px #e5b9a0,2px 2px #60463820}
.hotspot{min-width:44px;min-height:44px;z-index:1}.hotspot span{max-width:100%;font-size:11px;line-height:1.35;white-space:nowrap;padding:3px 6px;border:1px solid #ae9270;border-bottom:2px solid #8cae94;background:#fff8e9ec;box-shadow:1px 2px #60463822}
.hotspot[data-action="talkResidents"] span{color:#604638;background:#f5f0dcdb;border:0;box-shadow:none;font-size:10px;padding:2px 6px;min-width:0}
.hotspot[data-action^="room"]{border:0}.hotspot[data-action^="room"] span{padding:4px 9px;background:#fff6df;border:1px solid #a47a58;box-shadow:1px 2px #79563c26;font-size:12px;font-weight:650}
.hotspot[data-action="followRoomSignal"]{z-index:2;align-items:flex-start}.hotspot[data-action="followRoomSignal"] span{font-size:11px;max-height:44px;overflow:hidden}
.hotspot:active span{transform:translateY(1px);background:#d2e6ce}
#shade{background:#253d34a3;z-index:3}
#modal{top:max(64px,calc(env(safe-area-inset-top) + 58px));bottom:max(84px,calc(env(safe-area-inset-bottom) + 76px));left:12px;right:12px;border:3px solid #7f6047;box-shadow:inset 0 0 0 2px #fffbea,4px 5px #273b344d;background:#fff8e9}
.modal-head{padding:7px 9px 7px 13px;min-height:54px;background:#b95a4b;border-bottom:3px solid #864538;box-shadow:inset 0 2px #df9780}
.modal-head h1{font-size:17px;letter-spacing:1px;text-shadow:1px 1px #864538;font-weight:700}.modal-head h1:before{content:'◆';font-size:9px;margin-right:8px;color:#f2d2ac;vertical-align:middle}
.modal-head button,.activity-photo-head button{width:38px;height:38px;min-width:38px;min-height:38px;font-size:25px;border:2px solid #874a3c;box-shadow:inset 2px 2px #fff9e7,inset -2px -2px #d3b395,1px 2px #7e3c34;background:#f8e9cd;flex-shrink:0}
#tabs{padding:6px;gap:5px;border-bottom:2px solid #c0c9a6;background:#deead4}#tabs:empty{padding:0;border:0}#tabs button{padding:7px 3px;min-height:38px;border:1px solid #9cab8c;background:#f1f1dd;color:#5f7557;font-size:12px;box-shadow:inset 1px 1px #fffbee,inset -1px -1px #c5cfb0}#tabs .active{border-color:#9b4e40;background:#b95a4b;color:#fff7df;box-shadow:inset 1px 1px #e3987b,inset -1px -1px #954335}
#panel{padding:14px 13px 18px;scrollbar-color:#a0b698 #f7edda;scrollbar-width:thin;font-size:13px;line-height:1.65;scroll-padding-bottom:20px}
.action{font-size:12px;line-height:1.45;min-height:44px;padding:9px 12px;border:2px solid #839777;background:#dcebd4;box-shadow:inset 2px 2px #f8fbea,inset -2px -2px #adc2a0,0 2px #6c7d60;color:#4f664a;font-weight:550}
.action.primary{background:#b95a4b;border-color:#91483b;color:#fff7df;box-shadow:inset 2px 2px #e29a7e,inset -2px -2px #9b4437,0 2px #713e30}.action:active:not(:disabled){transform:translateY(2px);box-shadow:inset 2px 2px #829b76}.action.primary:active:not(:disabled){box-shadow:inset 2px 2px #914438}
button:disabled{opacity:.46;cursor:default}.action:focus-visible{outline-offset:3px}
.event,.postcard,.tile,.inventory-card,.review{border:1px solid #c8b48c;background:#fbf3de;box-shadow:inset 0 0 0 2px #fffbed}.event,.postcard,.tile{border-bottom:3px solid #b5bc96}.tile{padding:13px}.inventory-card{padding:12px;border-left:4px solid #9cbaa0}.inventory-card p{margin:6px 0}.review{padding:12px;margin-bottom:12px}
.life-note{border:1px solid #97ad8c;border-left:4px solid #729b78;background:#edf2df;padding:10px}.life-note p{font-size:12px}.life-note small{font-size:11px}.life-note .action{min-height:38px;font-size:11px;padding:7px 10px}.place-hint{padding:9px 10px;border-left:3px solid #96b098;background:#dcebd8}.place-hint p{font-size:11px}.sub{font-size:12px;line-height:1.7;color:#89745b}
.ingredients{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.ingredient{min-height:91px;border:2px solid #b4c4a3;background:#fbf7e8;box-shadow:inset 2px 2px #fffdf0,inset -2px -2px #dedcc0,0 2px #b6ba9c;font-size:12px}.ingredient.selected{border-color:#b95a4b;background:#fae1cd;box-shadow:inset 2px 2px #fff4dd,inset -2px -2px #ddac8f,0 2px #9c5e4c}.ingredient .icon{font-size:27px;margin:7px}.ingredient .stock{top:4px;right:6px;font-size:12px;font-weight:650;color:#9c5e4c}
select,input{max-width:100%;min-height:44px;font:inherit;color:#604638;background:#fffbed;border:2px solid #a99570;padding:8px;accent-color:#b95a4b}#inventory-category{margin:8px 0;width:100%}.inventory-card small{font-size:11px}
#modal.onboarding{top:auto;bottom:86px;max-height:52%}.onboarding #panel{padding:12px}.onboarding .modal-head{min-height:50px}
#activity-photo{border-color:#806047;box-shadow:4px 5px #273b344d}.activity-photo-head{background:#b95a4b;box-shadow:inset 0 2px #df9780}.activity-photo-head h2{font-size:17px}
@media(max-height:720px){.hud{top:7px}.brand{margin-bottom:6px;min-height:32px}.brand #home-name{min-height:32px}.brand .inventory-open,.brand #echo-lamp{min-height:32px}.avatars{margin-top:7px}.avatars button{min-height:42px;padding-top:4px;padding-bottom:4px}.resident-portrait{top:6px}.bottom{height:60px;bottom:8px}.bottom button{min-height:50px}.bottom .home{min-height:54px}.bottom .ui-icon{height:22px;width:22px}#bubble{bottom:80px;max-height:63px;padding-top:7px;padding-bottom:7px;font-size:11px}.hud-row button{min-height:42px}#modal{top:55px;bottom:78px}.modal-head{min-height:50px;padding:5px 8px 5px 12px}#panel{padding:12px}.sub{font-size:11px}.pot{margin-top:16px}.home-emblem .ui-icon{width:20px;height:22px}}
/* Reference direction: stepped silhouettes, calm status bars and a tidy item display. */
:root{--pixel-cut:polygon(4px 0,calc(100% - 4px) 0,calc(100% - 4px) 2px,100% 2px,100% calc(100% - 4px),calc(100% - 2px) calc(100% - 4px),calc(100% - 2px) 100%,4px 100%,4px calc(100% - 2px),0 calc(100% - 2px),0 4px,2px 4px,2px 2px,4px 2px)}
.action,.ingredient,.modal-head button,.activity-photo-head button,#scene-back,#moment-marker,#tabs button{clip-path:var(--pixel-cut)}
button{font-family:system-ui,-apple-system,'PingFang SC',sans-serif;letter-spacing:.15px}.action,#tabs button,.bottom button{font-weight:650}.action.primary{text-shadow:0 1px #8e4c3b}.modal-head h1{letter-spacing:1.5px}.modal-head h1:before{content:'▪';font-size:17px;margin-right:7px}
.hud-row #sky{position:relative;padding-left:7px;padding-right:25px}.action-pips{position:absolute;right:7px;top:9px;display:flex!important;flex-direction:column;gap:3px;padding:0!important;border:0!important;box-shadow:none!important;background:transparent!important;min-height:0!important}.action-pips i{width:7px;height:6px;background:#d9decb;border:1px solid #a6b39a;box-shadow:inset 1px 1px #fff7df}.action-pips .filled{background:#b75b4d;border-color:#995748;box-shadow:inset 1px 1px #e6a68a}
#modal{border-color:#7e7253}.modal-head{background:#b86b58;box-shadow:inset 0 2px #e0a28a;border-bottom-color:#965343}.modal-head button{background:#faecd4}.modal-head h1{color:#fff7e2}#tabs{border-bottom-color:#b7c9aa}#tabs button{flex:1 0 52px;white-space:nowrap}#tabs{overflow-x:auto;scrollbar-width:none}#tabs::-webkit-scrollbar{display:none}
#modal[data-view="inventory"] .modal-head,#modal[data-view="journal"] .modal-head{background:#a5c5a7;color:#425e48;border-bottom-color:#7f9d7d;box-shadow:inset 0 2px #d4e6c8}#modal[data-view="inventory"] h1,#modal[data-view="journal"] h1{color:#45644d;text-shadow:0 1px #e7efda}#modal[data-view="inventory"] .modal-head button,#modal[data-view="journal"] .modal-head button{border-color:#7f8d6b}
#modal[data-view="journal"] #panel{background:repeating-linear-gradient(0deg,transparent 0 27px,#ece8cf 27px 28px),#fff8e9}.diary-page{border-left:3px solid #c9987a;background:transparent;padding-left:15px}.diary-entry{background:transparent;border:0;border-bottom:1px dashed #c6b290;box-shadow:none}.diary-attachment{background:#e5eedb;border-left-color:#8fab8a}
.inventory-summary{display:flex;gap:8px;margin-bottom:10px}.inventory-summary>span{flex:1;background:#deead4;border:1px solid #aab99a;padding:7px 9px;font-size:11px}.inventory-summary b{font-size:15px;margin-left:7px;color:#a05a47}.inventory-label{display:block;color:#738461;font-size:11px}#inventory-category{font-size:13px;margin:4px 0 10px;min-height:42px;border:2px solid #a7b398;background:#f3f3df}
.inventory-group{margin:12px 0 18px}.inventory-group h3{display:flex;align-items:center;gap:7px;color:#667957;border-bottom:2px solid #c3d1b5;padding-bottom:6px;font-size:13px}.inventory-group h3:before{content:'';width:7px;height:7px;background:#bc6d57;box-shadow:2px 2px #e7cfaa}.inventory-group h3 small{margin-left:auto;color:#9b9479;font-size:10px;font-weight:400}.inventory-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.inventory-card{padding:0;margin:0;border:2px solid #b8c5a5;border-bottom-width:3px;background:#f9f4e2;box-shadow:inset 2px 2px #fffbed,inset -2px -2px #e0dfc4;min-width:0}.inventory-card summary{position:relative;min-height:120px;list-style:none;padding:10px 7px 7px;text-align:center;cursor:pointer;touch-action:manipulation}.inventory-card summary::-webkit-details-marker{display:none}.item-glyph{display:flex;align-items:center;justify-content:center;margin:0 auto 7px;width:44px;height:42px;font-size:23px;background:#e2ecd7;border:1px solid #c5d3b5;box-shadow:inset 1px 1px #fffbed}.inventory-card strong{display:block;font-size:12px;line-height:1.4;font-weight:650}.item-count{position:absolute;right:7px;top:7px;font-size:12px;color:#a25d49;background:#f9f4e2;padding-left:3px}.item-state{display:block;margin-top:5px;font-size:10px;color:#819072;line-height:1.4}.inventory-card[open]{grid-column:1/-1;background:#edf2df;border-color:#8fab8b}.inventory-card[open] summary{min-height:104px}.item-info{border-top:1px dashed #a9bc98;padding:9px 12px;background:#f9f4e2}.item-info p{font-size:11px;line-height:1.65;margin:4px 0}.empty-slot{grid-column:1/-1;font-size:11px;color:#a1a48c;margin:4px 0 0;padding:8px;border:1px dashed #ccd6bc;background:#f2f3df}.inventory-card summary:focus-visible{outline:3px solid #b95a4b;outline-offset:-3px}
#game[data-place="garden"] .bottom .home{background:transparent;border-color:transparent;color:#577456;transform:none;box-shadow:none}#game[data-place="garden"] .bottom [data-action="yard"]{background:#bd574b;border:2px solid #894039;box-shadow:inset 2px 2px #e3947a,inset -2px -2px #943e36;color:#fff4dc;transform:translateY(-3px)}
@media(max-width:359px){.brand #home-name{font-size:13px}.brand #echo-lamp{padding:3px 5px}.brand{gap:4px}.brand .inventory-open span{display:none}.hud-row #coins{min-width:60px}.hud-row #sky{padding-right:19px}.action-pips{right:4px}#sky small{font-size:10px}}
/* Original open font, bundled locally: Fusion Pixel by TakWolf, SIL OFL 1.1. */
@font-face{font-family:HomePixel;src:url('assets/fonts/fusion-pixel-12px-proportional-zh_hans.ttf.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
:root{--game-font:HomePixel,'PingFang SC',sans-serif}
button,select,.brand,#sky,.avatars,.modal-head,h1,h2,h3,.inventory-card summary,.inventory-summary,.inventory-label,.calendar-strip,.entry-time{font-family:var(--game-font);font-synthesis:none;letter-spacing:0;font-weight:400}
.brand #home-name{font-family:var(--game-font);font-size:18px;font-weight:400}.bottom button{font-size:12px;font-weight:400}.action,.hotspot span,#tabs button{font-size:12px;font-weight:400}.avatars button{font-size:12px;font-weight:400}.avatars small{font-family:var(--game-font);font-size:10px}.modal-head h1{font-size:18px;letter-spacing:1px;font-weight:400;text-shadow:none}h2{font-size:16px;font-weight:400}h3{font-size:14px;font-weight:400}.inventory-card strong{font-size:12px;font-weight:400}.item-state{font-family:system-ui,-apple-system,'PingFang SC',sans-serif}.item-count{font-family:var(--game-font);font-weight:400}.hotspot[data-action^="room"] span{font-weight:400}.inventory-summary b{font-family:var(--game-font);font-weight:400}.modal-head h1:before{content:'▪';font-family:system-ui,sans-serif;letter-spacing:0}
@media(max-width:359px){.brand #home-name{font-size:16px}.modal-head h1{font-size:16px}}
.item-pixel-icon{display:inline-block;vertical-align:middle;width:28px;height:28px;image-rendering:pixelated}.item-glyph .item-pixel-icon{width:34px;height:34px}.ingredient .icon{display:flex;align-items:center;justify-content:center;filter:none}.ingredient .icon .item-pixel-icon{width:34px;height:34px}.pot .item-pixel-icon{width:36px;height:36px}
.context-notes{margin-top:18px;border:1px dashed #b5c3a3;padding:9px;background:#f0f3df}.context-notes>summary{font:12px var(--game-font);color:#78906b;min-height:28px;padding:5px;cursor:pointer}.context-notes[open]>summary{margin-bottom:10px}.context-notes .life-note:last-child{margin-bottom:0}
/* Keep the visible pixel shapes comfortable to tap on a phone. */
.modal-head button,.activity-photo-head button{width:44px;height:44px;min-width:44px;min-height:44px}.modal-head{min-height:56px}#scene-back,#moment-marker{min-height:44px}#tabs button{min-height:44px}.brand .inventory-open,.brand #echo-lamp,.brand #home-name{min-height:40px}.hud-row button{min-height:44px}
/* Use the same generated residents in the room, portraits and temporary activity cards. */
.resident-portrait{background-image:var(--resident-atlas);background-size:92px 61px;background-repeat:no-repeat;background-color:#dcebd5;image-rendering:pixelated}
.resident-portrait:before,.resident-portrait:after,.resident-portrait i{display:none}.resident-portrait.portrait-0{background-position:-52px -3px}.resident-portrait.portrait-1{background-position:-16px -3px}
.pixel-person{width:33px;height:72px;border:0;box-shadow:none;background-color:transparent;background-image:var(--resident-atlas);background-repeat:no-repeat;background-size:115px 76.7px;background-position:-65px -3px;image-rendering:pixelated;margin:0 auto 8px}.pixel-person:before{display:none}.pixel-person.person-1{background-color:transparent;background-position:-20px -3px}.pixel-person .pearl-pin{top:33px;right:6px}
.dress-preview .pixel-person{width:46px;height:100px;background-size:160px 106.7px;background-position:-91px -4px}.dress-preview .person-1{background-position:-28px -4px}.dress-preview .pearl-pin{top:46px;right:10px}
/* The same compact 32 x 44 sprites across every resident surface. */
.resident-portrait{background-size:64px 44px}.resident-portrait.portrait-0{background-position:-36px -1px}.resident-portrait.portrait-1{background-position:-4px -1px}
.pixel-person{width:38px;height:52px;background-size:76px 52px;background-position:-38px 0}.pixel-person.person-1{background-position:0 0}.pixel-person .pearl-pin{top:32px;right:9px;width:4px;height:3px;box-shadow:0 1px #b88d99}
.dress-preview .pixel-person{width:57px;height:78px;background-size:114px 78px;background-position:-57px 0}.dress-preview .person-1{background-position:0 0}.dress-preview .pearl-pin{top:48px;right:14px}
/* Expressive pixel faces at a compact room scale, shared by portraits and cards. */
.resident-portrait{background-size:84px 56px}.resident-portrait.portrait-0{background-position:-47px -5px}.resident-portrait.portrait-1{background-position:-14px -5px}
.pixel-person{width:33px;height:60px;background-size:104.3px 69.5px;background-position:-57.6px -5.8px}.pixel-person.person-1{background-position:-16.7px -5.8px}.pixel-person .pearl-pin{top:35px;right:8px}
.dress-preview .pixel-person{width:45px;height:84px;background-size:146px 97.3px;background-position:-80.7px -8.2px}.dress-preview .person-1{background-position:-23.4px -8.2px}.dress-preview .pearl-pin{top:49px;right:10px}
/* Explicitly low-resolution resident rendering, shared by room and portraits. */
.resident-portrait{background-size:50px 43.75px}.resident-portrait.portrait-0{background-position:-25px 0}.resident-portrait.portrait-1{background-position:0 0}
.pixel-person{width:32px;height:56px;background-size:64px 56px;background-position:-32px 0}.pixel-person.person-1{background-position:0 0}.pixel-person .pearl-pin{top:35px;right:7px}
.dress-preview .pixel-person{width:48px;height:84px;background-size:96px 84px;background-position:-48px 0}.dress-preview .person-1{background-position:0 0}.dress-preview .pearl-pin{top:52px;right:11px}
/* 24 x 40 logical pixels per character: deliberately coarser, without enlarging the cast. */
.resident-portrait{background-size:50px 41.67px}.resident-portrait.portrait-0{background-position:-25px 0}.resident-portrait.portrait-1{background-position:0 0}
.pixel-person{width:34px;height:56px;background-size:67.2px 56px;background-position:-33.6px 0}.pixel-person.person-1{background-position:0 0}
.dress-preview .pixel-person{width:51px;height:84px;background-size:100.8px 84px;background-position:-50.4px 0}.dress-preview .person-1{background-position:0 0}
/* Small map-sprite proportions: round head, compact body, restrained face shapes. */
.resident-portrait{background-size:50px 39.58px}.resident-portrait.portrait-0{background-position:-25px 0}.resident-portrait.portrait-1{background-position:0 0}
.pixel-person{width:33px;height:52px;background-size:65.68px 52px;background-position:-32.84px 0}.pixel-person.person-1{background-position:0 0}.pixel-person .pearl-pin{top:33px;right:7px}
.dress-preview .pixel-person{width:54px;height:84px;background-size:106.1px 84px;background-position:-53.05px 0}.dress-preview .person-1{background-position:0 0}.dress-preview .pearl-pin{top:53px;right:11px}
/* House palette, readable eyes, and exact 2 CSS-pixel sprite cells. */
#resident-art{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.resident-map-sprite{position:absolute;width:68px;height:88px;background-image:var(--resident-atlas);background-size:408px 88px;background-position:0 0;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none}
.resident-map-sprite.jimi{background-position:-68px 0}
.resident-map-prop{position:absolute;display:none;pointer-events:none;image-rendering:pixelated}
.resident-map-sprite[data-pose="study"] .resident-map-prop,.resident-map-sprite[data-pose="explain"] .resident-map-prop{display:block;left:22px;top:57px;width:28px;height:13px;border:2px solid #a78a63;background:linear-gradient(90deg,#fff1d5 0 46%,#aa9170 46% 54%,#fff1d5 54%)}
.resident-map-sprite[data-pose="game"] .resident-map-prop{display:block;left:22px;top:60px;width:28px;height:10px;background:#655c50;border:2px solid #57473e;box-shadow:inset 5px 0 #a6b99c,inset -4px 0 #bd6b54}
.resident-map-sprite[data-pose="practice"] .resident-map-prop,.resident-map-sprite[data-pose="assessment"] .resident-map-prop{display:block;left:48px;top:48px;width:4px;height:25px;background:#786d5a;box-shadow:-3px -5px 0 2px #a1ad94}
.resident-map-sprite[data-pose="rest"] .resident-map-prop{display:block;left:52px;top:22px}.resident-map-sprite[data-pose="rest"] .resident-map-prop:after{content:'z';font:14px var(--game-font);color:#7c8f70}
.sprite-pin{position:absolute;left:43px;top:56px;width:5px;height:4px;background:#e9ddc3;border-bottom:2px solid #bc6b54}
.resident-portrait{background-size:204px 44px}.resident-portrait.portrait-0{background-position:-38px -1px}.resident-portrait.portrait-1{background-position:-4px -3px}
.pixel-person{width:34px;height:44px;background-size:204px 44px;background-position:-34px 0}.pixel-person.person-1{background-position:0 0}.pixel-person .pearl-pin{top:28px;right:9px}
.dress-preview .pixel-person{width:68px;height:88px;background-size:408px 88px;background-position:-68px 0}.dress-preview .person-1{background-position:0 0}.dress-preview .pearl-pin{top:56px;right:20px}

.resident-map-sprite.han .resident-map-prop,.resident-map-sprite.han .sprite-pin{transform:translateY(4px)}

/* Coral red / clean mint: character colours, with paper and wood connecting them. */
:root{--paper:#f5f2e8;--ink:#654e43;--warm-red:#c85f58;--warm-edge:#9e4741;--warm-mint:#85cbb8;--line:#aa9580;--soft-mint:#dfede2;--soft-red:#f1dbd0}
body{background:#403c36}#game{background:#f4f1e7}
.brand .inventory-open,.brand #echo-lamp{background:#f3eee2;border:1px solid #ab9580;box-shadow:inset 0 0 0 2px #fcf9ee,1px 2px #77624c26;color:#76554b}
.brand .inventory-open{color:#52735c;border-bottom:2px solid #83baa4}.brand #echo-lamp.has-reply{background:#f1dbd0;border-color:#c28a77;color:#8a4751}
.hud-row button{border:1px solid #aa9580;background:#f8f3e7;box-shadow:inset 0 0 0 2px #fffaf0,1px 2px #77624c30}
.hud-row #coins{padding:0;min-width:68px;overflow:hidden;border-color:#a4807c}
.hud-row .hud-label{display:block;padding:3px 4px;min-height:0;border:0;background:#c85f58;color:#fff8ec;font-size:10px;line-height:1;box-shadow:inset 0 1px #e8a99c}
.hud-value{display:block;font:16px var(--game-font);line-height:1;padding:5px 4px;color:#75554b}
.hud-row #sky{padding:0 20px 0 0;background:#f8f3e7;border-color:#aa9580}
#sky strong{display:block;padding:4px 3px;background:#cf7970;color:#fff8ef;font-size:10px;line-height:1.1;box-shadow:inset 0 1px #edb8a7}
#sky small{display:block;padding:4px 2px;margin:0;color:#725c4c;font-size:10px;line-height:1.1}
.action-pips{top:8px;right:6px}.action-pips i{border-color:#bbb39d;background:#e5dfce}.action-pips .filled{background:#83bfa7;border-color:#5b8269;box-shadow:inset 1px 1px #b5d1b8}
.hud-row button:last-child{background:#f1dbd0;color:#8b4e57;box-shadow:inset 0 0 0 2px #fbf1e9,1px 2px #77624c30}
.avatars button[data-action="jimi"],.avatars button[data-action="han"]{background:#f6f1e5;border:1px solid #b5a58e;border-bottom:2px solid #c79782;box-shadow:inset 0 2px #fffaf0;color:#654e43}
.resident-portrait,.avatars button[data-action="jimi"] .resident-portrait{background-color:#dfede2;border-color:#9fb6a0}
#request-callout{background:#f1dbd0;border-color:#bb8d8d;color:#864a54;box-shadow:inset 0 1px #fcf2e9,1px 2px #77624c22}
.bottom{background:#ede7d9;border:2px solid #a38d76;border-top:3px solid #ce8d79;box-shadow:inset 2px 2px #fcf7e9,inset -2px -2px #d2c4af,0 3px #907962}
.bottom button{color:#755d4e}.bottom button:nth-child(2n) .ui-icon{color:#648b70}
.bottom .home{background:#c85f58;border:2px solid #9e4741;color:#fff8eb;box-shadow:inset 2px 2px #e8a99c,inset -2px -2px #ad4d45,0 2px #856754}
#bubble{background:#f7f2e6;border:1px solid #b09a83;border-left:4px solid #c36a5d;box-shadow:inset 0 0 0 2px #fffbf0,1px 2px #77624c22;color:#675145;font-family:var(--game-font);font-size:12px;line-height:1.65}
#scene-back{background:#f2eddf;border:1px solid #aa9580;color:#735d4d;box-shadow:inset 0 0 0 2px #fff9eb,1px 2px #77624c22}
#moment-marker{background:#f1dbd0;border:1px solid #ca9280;color:#864651;box-shadow:inset 0 0 0 2px #f9eee7,1px 2px #77624c22}
.hotspot span{background:#f8f2e5ef;border-color:#af9982;border-bottom-color:#c28e78}.hotspot[data-action="talkResidents"] span{background:#f7f1e5db;color:#674f43}
#game[data-place="home"] .yard-area{align-items:center;justify-content:center}
#game[data-place="home"] .yard-area span{font:12px var(--game-font);background:#f4f0e3;border:1px solid #97ad94;color:#55735c;padding:5px 12px;box-shadow:inset 0 0 0 1px #fff9ec}
.room-residents{position:absolute;left:6px;top:5px;max-width:calc(100% - 12px);padding:3px 5px;background:#dfede2;color:#496d55;border:1px solid #9db49e;font:12px/1.25 var(--game-font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.avatars small{font:12px/1.25 var(--game-font)}
#modal{border:2px solid #9f8974;background:#f5f2e8;box-shadow:inset 0 0 0 2px #fffbef,3px 4px #58473b55}
.modal-head,#modal[data-view="inventory"] .modal-head,#modal[data-view="journal"] .modal-head{background:#c85f58;border-bottom:2px solid #9e4741;box-shadow:inset 0 2px #e8a99c}
.modal-head h1,#modal[data-view="inventory"] h1,#modal[data-view="journal"] h1{color:#fff8ed;text-shadow:none}
.modal-head button,.activity-photo-head button,#modal[data-view="inventory"] .modal-head button,#modal[data-view="journal"] .modal-head button{border:1px solid #805650;background:#f3eddf;color:#80505a;box-shadow:inset 0 0 0 2px #fff9ed,1px 2px #733a4650}
#tabs{background:#e8e4d6;border-bottom-color:#b7ae97}#tabs button{background:#f6f1e3;border-color:#b7a68e;color:#745c4e;box-shadow:inset 1px 1px #fffbed,inset -1px -1px #dbcfb9}
#tabs .active{background:#769d80;border-color:#557b61;color:#fff9ec;box-shadow:inset 1px 1px #acc9ad,inset -1px -1px #638b6c}
.action:not(.primary){background:#eee7d7;border-color:#b49e83;color:#725a49;box-shadow:inset 2px 2px #fff7e7,inset -2px -2px #d9cbb4,0 2px #9d876d}
.action.primary{background:#c85f58;border-color:#9e4741;color:#fff8eb;box-shadow:inset 2px 2px #e8a99c,inset -2px -2px #ad4d45,0 2px #6f3d43}
.event,.postcard,.tile,.review{background:#f6efe1;border-color:#c3af96;border-bottom-color:#c6967e}
.inventory-card{background:#f7f2e5;border-color:#b3b69e;box-shadow:inset 2px 2px #fffbef,inset -2px -2px #dfd8c1}.item-count,.item-info{background:#f7f2e5}
.item-glyph{background:#dfede2;border-color:#b2c4ad}.inventory-summary>span{background:#e6e8d7;border-color:#b4bea5}
#game[data-place="garden"] .bottom .home{background:transparent;border-color:transparent;color:#755d4e;box-shadow:none}
#game[data-place="garden"] .bottom [data-action="yard"]{background:#c85f58;border:2px solid #9e4741;color:#fff8eb;box-shadow:inset 2px 2px #e8a99c,inset -2px -2px #ad4d45}
@media(max-height:720px){#bubble{font-size:12px;line-height:1.5}.avatars small{font-size:12px}}

.resident-map-sprite[data-guest-name]:after{content:attr(data-guest-name);position:absolute;left:50%;bottom:-18px;transform:translateX(-50%);padding:2px 4px;background:#f5f2e8e8;color:#674f43;white-space:nowrap;font:12px/1.2 var(--game-font);border-bottom:1px solid #b9977a}
/* Game-day garden and travel scrapbook, using the approved paper / coral / mint palette. */
.farm-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:12px 0}.farm-picker button{position:relative;border:1px solid #b5a187;background:#f6f0e1;min-height:105px;padding:6px 2px;color:#725a47;font:12px var(--game-font)}.farm-picker button.active{border:2px solid #c85f58;background:#faeadd}.farm-picker small{position:absolute;top:4px;left:5px}.farm-picker svg{display:block;margin:8px auto 4px}.farm-picker span,.farm-picker em{display:block;font-style:normal}.farm-picker em{font-size:10px;color:#7c9476;margin-top:4px}.farm-picker+.actions{margin-bottom:20px}.giant-pumpkin{width:110px;height:64px;margin:20px auto;background:repeating-linear-gradient(90deg,#d7974f 0 20px,#eab56b 20px 29px);border:5px solid #bf8044;border-radius:35%;color:#faf0ca;text-align:center;font-size:40px}.travel-map{position:relative;height:250px;border:2px solid #b5a187;overflow:hidden;margin:12px 0 20px;background:#e8eee0}.map-ink{width:100%;height:100%;position:absolute;inset:0}.map-pin{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;padding:0;min-width:55px;min-height:44px;font:12px var(--game-font);color:#725a47}.map-pin i{display:block;font-style:normal;color:#9ca68b;font-size:20px}.map-pin span{display:block;background:#f8f1df;border:1px solid #b2a083;padding:4px 5px;box-shadow:1px 2px #c1b394}.map-pin.selected span{background:#c85f58;color:#fff7e6;border-color:#a6534d}.map-pin.visited i{color:#5e9e87}.map-pin small{display:block;font-size:10px;background:#e5eee0}.recipe-passports{display:grid;grid-template-columns:1fr 1fr;gap:8px}.recipe-passports article{padding:12px 8px;border:1px dashed #b89f7c;background:#fcf5e6}.recipe-passports small{display:block;font-size:11px;line-height:1.8;margin-top:5px;color:#7e8b74}.travel-check{display:flex;align-items:flex-start;gap:8px;margin:14px 0;line-height:1.7;font-size:12px}.travel-check input{width:18px!important;height:18px!important;flex:0 0 18px;margin:1px 0 0;accent-color:#bb6057}.journey-option{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #d8c8aa}.journey-option>div{flex:1}.journey-option small{display:block;margin-top:6px;color:#8b785f;font-size:11px}.journey-option .action{flex:0 0 82px;margin:0}.travel-days{display:flex;gap:5px}.travel-days>span{flex:1}.journey-memory{border:1px solid #b79f7d;background:#fcf5e6;padding:12px;margin:10px 0}.journey-memory summary{cursor:pointer;font-size:12px;line-height:1.7}.memory-photo{position:relative;height:145px;margin:12px 0;background:linear-gradient(#bddbd1 0 62%,#d5c4a0 62%);border:7px solid #f5ead1;box-shadow:1px 2px #b7a386;overflow:hidden}.memory-photo.snow{background:radial-gradient(circle,#fff 1px,transparent 2px) 0 0/24px 24px,#cbdcd5}.memory-photo .cast-travel{position:absolute;bottom:21px;left:calc(50% - 66px)}.memory-photo .cast-travel.han{left:calc(50% + 2px)}.memory-photo>span{position:absolute;bottom:1px;width:100%;text-align:center;font-size:10px;color:#735b46}.cast-travel{display:inline-block;width:68px;height:88px;background-image:var(--resident-atlas);background-size:408px 88px;background-repeat:no-repeat;image-rendering:pixelated}.cast-travel.jimi{background-position:-68px 0}.cast-travel.han{background-position:0 0}.travel-transition{text-align:center;padding:10px 0}.travel-transition>small{color:#8a9479}.travel-window{height:210px;border:8px solid #a88765;border-bottom-width:18px;margin:22px 0 15px;background:linear-gradient(#bddbd1 0 64%,#a7ba8d 64% 76%,#d8c6a5 76%);position:relative;overflow:hidden}.travel-pair{position:absolute;left:50%;bottom:25px;transform:translateX(-50%);display:flex;gap:12px;animation:travel-sway 1.3s steps(2,end) infinite}.travel-case{position:absolute;bottom:30px;right:15px;width:28px;height:27px;background:#c87968;border:3px solid #9f6e52;box-shadow:inset 9px 0 #db9b7d}.travel-window>span{position:absolute;bottom:3px;left:0;right:0;font-size:10px;color:#6b765b}.window-cloud{position:absolute;top:23px;width:65px;height:12px;background:#f8f3e4;box-shadow:14px -8px #f8f3e4;animation:travel-cloud 3s linear infinite}.travel-transition.stage .travel-window{background:linear-gradient(110deg,#b7a782,#e7d1a0 40%,#b78472);border-color:#806c58}.travel-transition.stage .window-cloud{background:#f6e5b3;box-shadow:100px 30px #f6e5b3;animation:stage-light 2s steps(3) infinite}.hotspot.journey-open{left:50%;top:auto;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 132px);transform:translateX(-50%);width:auto;height:44px;min-width:146px;padding:0 14px;align-items:center;gap:9px;border:1px solid #b6a38a;background:#fff8e9f2;font:12px var(--game-font);color:#6c5948;box-shadow:2px 3px #8c73552b}.journey-open svg{width:20px;height:20px;fill:none;stroke:#628a77;stroke-width:2;stroke-linejoin:miter}.journey-open b{font:20px system-ui;color:#9d6b59}.journey-open:hover{background:#f1ead9}.journey-open:active{transform:translate(-50%,2px);box-shadow:none}@keyframes travel-cloud{from{left:-80px}to{left:110%}}@keyframes travel-sway{50%{margin-top:2px;bottom:23px}}@keyframes stage-light{50%{opacity:.4;transform:translateY(8px)}}@media(prefers-reduced-motion:reduce){.travel-pair,.window-cloud{animation:none}}
/* Clear next steps and quieter optional activities. */
.stove-guide{padding:13px;border:2px solid #c78070;background:#fff4e5;margin-bottom:16px;box-shadow:2px 3px #d2b99c}.stove-guide>p{font-size:12px;line-height:1.8}.stove-guide .actions{display:grid;grid-template-columns:1fr 1fr}.care-soup{border-top:1px dashed #b7a187;padding-top:12px;margin-top:12px}.care-soup p{font-size:12px;line-height:1.8}.stove-recipe{padding:12px 0;border-bottom:1px solid #ddc9aa}.task-checklist article,.birthday-checklist article{border:1px solid #b9a181;background:#fff7e9;padding:14px;margin:10px 0}.task-checklist article.done{border-left:4px solid #8bb9a1;background:#eef1e2}.task-checklist p,.birthday-checklist p{font-size:12px;line-height:1.8}.task-actions{padding:12px;background:#e7eee0;border:1px solid #a3b699;margin:16px 0}.task-actions small{display:block;color:#697d62;margin-bottom:8px}.task-actions .action,.task-checklist .action{min-height:46px}.birthday-checklist details{padding-top:9px}.birthday-checklist summary{cursor:pointer;color:#a35d51;padding:8px 0}.birthday-kitchen{padding:14px;border:1px solid #b7a187;background:#fff8e9;margin:12px 0}.occasion-steps{padding-left:25px;line-height:2.2;font-size:13px}.occasion-steps li.current{color:#b35f54;background:#fae4d5}.occasion-steps li.done{color:#73977b}.occasion-art{position:relative;height:130px;margin:15px 0;background:#e4ecd9;border:5px solid #bb9d79;overflow:hidden}.occasion-art>i{position:absolute;left:calc(50% - 38px);top:40px;width:76px;height:42px;background:#ebc49e;border:4px solid #a67a57;box-shadow:inset 0 10px #fff4db}.occasion-art>span{position:absolute;bottom:7px;left:0;right:0;text-align:center;color:#7e7256;font-size:12px}.occasion-art.cake.step-2>i{background:#f6dcc9;border-top:10px solid #fff6e0;box-shadow:inset 10px 0 #d9816d}.occasion-art.dumplings>i{border-radius:50%;background:repeating-linear-gradient(90deg,#f4e3bf 0 16px,#c3a17c 16px 19px)}.occasion-art.pumpkinLamp>i{background:repeating-linear-gradient(90deg,#e0a35b 0 16px,#c38645 16px 22px);border-radius:35%;border-color:#b8824b}.occasion-art.pumpkinLamp.step-2>i{box-shadow:inset 20px 14px #f5d98a,0 0 14px #f7d792}.pet-tag{min-height:0!important}.hotspot.pet-tag span{position:absolute;top:calc(100% - 13px);bottom:auto;font-size:10px;padding:1px 5px;line-height:1.2;border:1px solid #b2a184;box-shadow:1px 1px #b5a183;background:#faf4e7ed}.pet-tag:active span{background:#dcebdc}
#birthday-scene{position:absolute;inset:0;z-index:19;background:#333a38e8;display:flex;align-items:center;justify-content:center;padding:125px 15px 90px;pointer-events:none}#birthday-scene[hidden]{display:none}.birthday-evening{width:100%;max-width:380px;position:relative;text-align:center;color:#f9ecd2;background:linear-gradient(#686655,#8c765d);border:4px solid #ad936c;padding:22px 12px 16px;box-shadow:inset 0 0 30px #e6c88d28}.birthday-evening>small{font-size:11px;color:#ddcfb2}.birthday-evening h2{font-size:21px;color:#fff0be;margin:14px 0}.birthday-lights{color:#f7dd8f;font-size:25px;letter-spacing:2px;text-shadow:0 0 10px #f7d37d;animation:party-lights 2s steps(3) both}.birthday-cast{height:110px;display:flex;justify-content:center;gap:24px;align-items:flex-end;position:relative}.flower-gift{position:absolute;bottom:22px;left:calc(50% - 13px);font-size:27px;color:#ecafa0;animation:give-flower 5s ease-out both}.flower-gift b{display:block;font-size:14px;color:#a6c18c;margin-top:-8px}.jimi-birthday .flower-gift{visibility:hidden}.birthday-table{width:80%;height:28px;background:#9b7456;border:3px solid #735943;margin:0 auto;position:relative}.pixel-cake{position:absolute;bottom:20px;left:calc(50% - 26px);width:52px;height:28px;background:#efd9b1;border-top:8px solid #fff1d2;box-shadow:inset 0 -7px #b97959}.pixel-cake>i{position:absolute;top:-14px;left:9px;width:7px;height:8px;background:#c4655b;box-shadow:16px 0 #c4655b,29px 1px #c4655b}.pixel-cake.mango>i{background:#dfb65f;box-shadow:16px 0 #dfb65f,29px 1px #dfb65f}.pixel-cake b{position:absolute;font-size:21px;color:#ffe7a2;top:-40px;left:21px}.birthday-pets{display:flex;justify-content:center;gap:0;margin:10px auto 5px}.party-pet{width:68px;height:56px;display:inline-block;background-image:var(--pet-atlas);background-size:272px 56px;background-repeat:no-repeat;image-rendering:pixelated;animation:party-pets 1.8s steps(2) infinite}.party-pet:nth-child(2n){animation-delay:.6s}.birthday-greeting{font-size:13px;line-height:1.9;animation:party-wish 5s both}.birthday-evening .sub{color:#eadcc2;font-size:11px;line-height:1.8}.birthday-evening .birthday-tea{color:#f8e6bc;font-size:12px;position:absolute;bottom:20px;left:0;right:0}#birthday-scene[data-phase="lights"] .birthday-greeting{opacity:0}@keyframes party-lights{from{opacity:.1;filter:brightness(.5)}to{opacity:1;filter:brightness(1.2)}}@keyframes give-flower{0%,28%{opacity:0;transform:translateX(-30px)}55%,100%{opacity:1;transform:translateX(0)}}@keyframes party-pets{50%{transform:translateY(-2px)}}@keyframes party-wish{0%,50%{opacity:0}75%,100%{opacity:1}}@media(prefers-reduced-motion:reduce){.birthday-lights,.flower-gift,.party-pet,.birthday-greeting{animation:none}}
.hotspot[data-action="followRoomSignal"] span{white-space:normal;text-align:left;max-height:48px;padding:4px 7px}.hotspot[data-action="followRoomSignal"] span:after{content:'点击这里，继续准备 →';display:block;font-size:10px;line-height:12px;margin-top:2px;color:#9f584d}

/* One quiet bookmark, and a distinct concert preparation space. */
.planning-ribbon{display:flex;gap:5px;margin-top:5px}.planning-ribbon[hidden]{display:none}.planning-ribbon .action{flex:1;min-height:29px;padding:5px 7px;font-size:11px;background:#f6ebd9;border:1px solid #a78b76;box-shadow:none;text-align:left}.planning-ribbon .action:first-child{color:#91473e}
.concert-hero{padding:18px 15px;background:#743f42;color:#fff4df;border:3px double #ddb38a;box-shadow:inset 0 0 0 5px #914b48}.concert-hero h2{color:#fff4df;margin:8px 0}.concert-hero p{color:#f6e3cc;line-height:1.7}.concert-hero strong{display:block;margin-top:12px;font-size:13px}.concert-hero small{color:#e1c3a3}.concert-timeline{padding:12px 12px 12px 31px;border-left:3px solid #c85f58;background:#f4ecdd}.concert-timeline li{padding:5px 0;line-height:1.6;font-size:13px}.plan-focus{padding:14px;border:2px solid #ab7663;background:#f8eddb;margin:12px 0;box-shadow:3px 3px 0 #dbc9ac}.plan-focus small{color:#8d5948}.plan-focus ol{padding-left:20px;line-height:1.8;font-size:13px}.plan-focus .action{margin:5px 4px 0 0}.concert-link{display:flex;align-items:center;gap:10px;justify-content:space-between;background:#efe0ce;border-left:4px solid #a8504a;padding:10px;margin:12px 0}.concert-link strong{font-size:13px;line-height:1.6}.concert-link .action{flex-shrink:0;font-size:12px}.wish-city-grid,.outfit-rack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.wish-city-grid .postcard{margin:0}.wish-city-grid .action,.outfit-card .action{width:100%;margin-top:10px}.outfit-rack{grid-template-columns:repeat(3,minmax(0,1fr))}.outfit-card{border:2px solid #bca88e;background:#f6eddd;padding:9px;text-align:center}.outfit-card.chosen{border-color:#a8504a;background:#f4dfd0}.outfit-card>span{font-size:24px;color:#916f5d}.outfit-card h3{font-size:13px;line-height:1.6}.outfit-card small{display:block;font-size:11px}.backstage-card{padding:16px;border:2px solid #8e6555;background:#efe5d4;margin:12px 0}.backstage-card .done{color:#527c6c}.backstage-card .action{margin:4px 4px 4px 0}@media(max-width:380px){.outfit-rack,.wish-city-grid{grid-template-columns:1fr}.concert-link{display:block}.concert-link .action{margin-top:8px}}

.travel-transition.stage .travel-window{background:#473a46;border-color:#997564;overflow:hidden}.travel-transition.stage .window-cloud,.travel-transition.stage .travel-case{display:none}.travel-transition.stage .travel-pair{z-index:2}.stage-beams{position:absolute;inset:0;display:flex;justify-content:space-around}.stage-beams i{width:25%;height:160%;background:#f5dda130;transform:rotate(-18deg);transform-origin:top;animation:stage-sway 4s ease-in-out infinite alternate}.stage-beams i:nth-child(2){background:#e7988f38;transform:rotate(15deg);animation-delay:-2s}.stage-beams i:nth-child(3){background:#a4d8cc30}.stage-bright .stage-beams i{background:#a4d8cc55}.stage-night .stage-beams i{background:#b7b8e340}.stage-audience{position:absolute;bottom:5px;left:0;right:0;z-index:3;color:#f5dda1;letter-spacing:10px;animation:stage-lights 2s ease-in-out infinite alternate}@keyframes stage-sway{to{transform:rotate(18deg)}}@keyframes stage-lights{to{opacity:.55}}@media(prefers-reduced-motion:reduce){.stage-beams i,.stage-audience{animation:none}}
/* Hands-on concert: stage blocking and forgiving live note lanes. */
.rehearsal-board{padding:14px;background:#eee2d1;border:2px solid #a57865;margin:14px 0}.rehearsal-board h3{margin:7px 0}.blocking-stage{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:10px;background:#694e4d;border:5px solid #a17863;perspective:500px}.blocking-cell{height:102px;position:relative;overflow:hidden;border:1px solid #b69c7d;background:#8b6a5a;cursor:pointer;color:#fff3d6;font:11px var(--game-font)}.blocking-cell.target{background:radial-gradient(ellipse at center bottom,#f8e9aa99,#968164 70%);border:2px dashed #f5e4ad}.blocking-cell small{position:absolute;z-index:2;top:4px;left:0;right:0;text-shadow:1px 1px #614e42}.blocking-cell .cast-travel{position:absolute;left:50%;bottom:0;transform:translateX(-50%) scale(.78);transform-origin:bottom center;pointer-events:none}.blocking-cell .cast-travel+.cast-travel{margin-left:10px}.formation-progress{display:flex;justify-content:space-around;padding:10px 0;font-size:12px}.formation-progress .done{color:#527c6c}.rhythm-show{border:2px solid #926a61;background:#f6ead9;padding:13px;margin:14px 0}.rhythm-stage{background:#463b48;border:5px solid #99715e;overflow:hidden}.rhythm-cast{height:104px;display:flex;align-items:end;justify-content:center;gap:16px;background:radial-gradient(ellipse at top,#d2ac7566,transparent 75%)}.rhythm-cast .cast-travel{animation:concert-step 1.4s steps(2,end) infinite;position:relative;left:auto;bottom:auto}.rhythm-lanes{height:207px;position:relative;overflow:hidden;background:repeating-linear-gradient(90deg,transparent 0 calc(33.333% - 1px),#aa938255 calc(33.333% - 1px) 33.333%);border-top:2px solid #b69a83}.rhythm-hit-line{position:absolute;left:0;right:0;top:128px;height:44px;background:#d8cf9855;border-top:2px solid #f5e5b2;border-bottom:2px solid #f5e5b2;pointer-events:none}.falling-note{position:absolute;top:-50px;transform:translate(-50%,-50%);font-style:normal;z-index:2;font-size:34px;color:#b3e2cd;text-shadow:2px 2px #332c34}.falling-note.hit,.falling-note.miss{display:none}.rhythm-pads{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:9px}.rhythm-pads .action{min-height:58px;padding:7px 2px;touch-action:manipulation;font-size:12px}.rhythm-pads .beat-flash{background:#b6d8c4;box-shadow:0 0 12px #a5d2ba}.rhythm-status{padding:10px;text-align:center;background:#eee0ca;font-size:13px}.suitcase-shell{background:#e8cfad;border:7px solid #9b7058;box-shadow:inset 0 0 0 2px #f7e5c7;padding:12px;margin:16px 0}.suitcase-shell h3{font-size:14px;border-bottom:1px dashed #ad8868;padding-bottom:8px}.suitcase-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.packed-slot,.empty-slot{border:2px dashed #ba9672;padding:12px 8px;background:#f7ecd9;min-height:100px;text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px}.packed-slot strong{font-size:13px;line-height:1.6}.packed-slot small,.empty-slot{font-size:12px;color:#8c735b;line-height:1.7}.packed-slot svg{width:35px;height:35px}.packing-glyph{font-size:28px;color:#6b8c7c}.garment-bag{display:flex;flex-direction:column;gap:10px;margin-top:16px;background:#efe2ce;border:2px solid #b79276;padding:14px}.garment-bag small{font-size:12px;color:#967461}.suitcase-panel .action{margin-top:5px}@keyframes concert-step{50%{transform:translateY(-4px) rotate(2deg)}}@media(prefers-reduced-motion:reduce){.rhythm-cast .cast-travel{animation:none}}@media(max-width:360px){.blocking-cell{height:91px}.suitcase-shell{padding:8px;border-width:5px}.rhythm-pads .action{font-size:11px}}

.beat-hit .rhythm-cast{animation:duet-flash .35s ease-out}.beat-hit .rhythm-hit-line{background:#e8d6a477;box-shadow:0 0 14px #f7e5aa88}@keyframes duet-flash{40%{filter:brightness(1.4);transform:translateY(-5px)}100%{filter:brightness(1);transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.beat-hit .rhythm-cast{animation:none}}
/* Small travel activities: actions leave a visible, persistent result. */
.travel-experience{padding:14px;border:2px solid #ac8067;background:#f7eddc;margin:12px 0}.travel-experience>small,.experience-result>small{font-size:12px;color:#8d705d}.travel-experience>.actions{margin-top:15px}.travel-experience>.actions .action{margin-top:5px}.wander-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;padding:10px;background:linear-gradient(#bdd9ce 25%,#e0d6ae 25%);border:3px solid #a3ab87}.wander-cell{position:relative;height:60px;border:1px dashed #a0aa82;background:#e5dfbd;color:#677c64;font:20px var(--game-font)}.wander-cell.reachable{border:2px solid #c97866;background:#f3e1bd;cursor:pointer}.wander-cell.landmark{color:#a45445;background:#d6c28e}.wander-cell.visited{box-shadow:inset 0 0 0 2px #86aa91}.wander-cell:disabled{opacity:1;filter:none}.wander-pair{color:#8a5148;white-space:nowrap;letter-spacing:-7px;display:inline-block;transform:translateX(-3px)}.travel-food-bowl{min-height:115px;border:6px solid #b59174;border-top-width:2px;border-radius:9px 9px 55px 55px;background:#ece0c6;padding:15px 8px;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-items:center;margin:20px 0}.travel-food-bowl .action,.travel-food-tray .action{font-size:12px;min-height:46px;padding:7px}.travel-food-bowl svg,.travel-food-tray svg{width:23px;height:23px;vertical-align:middle}.travel-food-tray{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.wrapping-gift{min-height:120px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px;margin:15px auto;width:80%;border:3px solid #b58a70;background:#e3d4bc}.wrapping-gift>span{font-size:35px;color:#815948}.wrap-red{background-color:#eac4ac;background-image:linear-gradient(90deg,#c8665955 50%,transparent 50%),linear-gradient(#c8665955 50%,transparent 50%);background-size:25px 25px}.wrap-mint{background:#b6d4bc}.wrap-kraft{background:#d6b48b}.stamp-card{display:grid;grid-template-columns:repeat(3,1fr);max-width:225px;margin:15px auto;border:3px solid #b08c70;background:#fffae9;padding:8px}.stamp-card button{height:53px;border:1px dashed #d2bea0;background:transparent;font-size:27px;color:#ae544d;cursor:pointer}.sea-search{display:grid;grid-template-columns:repeat(5,1fr);padding:12px;gap:5px;background:#9fc8ba;border:3px solid #92a98d}.sea-search button{min-height:54px;border:1px solid #bcd9c6;background:#b4dace;color:#4c7d71;font-size:25px;cursor:pointer}.little-bucket{font-size:17px;padding:14px;background:#e5d3b5;text-align:center;margin:10px 0}.snow-catching{height:240px;background:linear-gradient(#a8c9c8,#ecede0);position:relative;overflow:hidden}.snow-flake{position:absolute;z-index:2;top:15px;font-size:29px;width:44px;height:48px;border:0;background:transparent;color:#fff;animation:snow-drift 4s ease-in-out infinite alternate;cursor:pointer;text-shadow:1px 2px #83aaa8}.snow-flake:disabled{opacity:.4;animation:none}.flake-0{left:4%;top:18px}.flake-1{left:23%;top:65px;animation-delay:-1s}.flake-2{left:44%;top:8px;animation-delay:-2s}.flake-3{left:65%;top:70px;animation-delay:-3s}.flake-4{left:79%;top:20px;animation-delay:-1.5s}.snow-pair{position:absolute;bottom:0;left:50%;transform:translateX(-50%);display:flex;gap:10px}.snow-pair .cast-travel{position:relative;left:auto;bottom:auto}.tea-cup{position:relative;margin:20px auto;width:110px;height:135px;background:#fff4dd;border:6px solid #a1856b;border-radius:8px 8px 30px 30px;overflow:hidden}.tea-cup>div{position:absolute;left:0;right:0;bottom:0;background:#be8c56;transition:height .15s}.tea-cup>i{position:absolute;left:0;right:0;bottom:62%;height:2px;background:#967252;box-shadow:0 30px #967252}.tea-control{display:block;text-align:center;font-size:13px}.tea-control input{display:block;width:95%;margin:16px auto;accent-color:#ad6558;height:34px;touch-action:pan-x}.experience-result{padding:16px;border:3px double #b58c6b;background:#fcf0dc;margin:14px 0}.experience-result>p{line-height:1.85}.experience-reward{background:#d7e4ce;border-left:4px solid #829d7e;padding:12px;font-size:13px;margin:15px 0}.experience-result .actions{margin-top:12px}@keyframes snow-drift{to{transform:translate(8px,22px) rotate(10deg)}}@media(prefers-reduced-motion:reduce){.snow-flake{animation:none}.tea-cup>div{transition:none}}@media(max-width:360px){.wander-cell{height:50px}.travel-food-tray{grid-template-columns:repeat(2,1fr)}}

.wander-cell{overflow:hidden}.wander-pair{position:absolute;bottom:2px;left:50%;width:146px;height:88px;display:flex;gap:10px;transform:translateX(-50%) scale(.35);transform-origin:center bottom}.wander-pair .cast-travel{position:relative;left:auto;bottom:auto;flex-shrink:0}.tea-cup>i{bottom:75%}.route-keepsake{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;max-width:225px;margin:15px auto;padding:8px;border:2px dashed #b8a17a;background:#eee6c7}.route-keepsake span{height:27px;background:#e4d8ae;text-align:center;line-height:27px;color:#b2674d}.route-keepsake .traced{background:#bcd0aa}.keepsake-stamps{display:grid;grid-template-columns:repeat(3,35px);margin-bottom:8px}.keepsake-stamps span{height:30px;text-align:center;font-size:23px;color:#a9524b}
/* Fixed dates lead the day; night and morning have a full page of their own. */
.fixed-booking{border:2px solid #a96654;background:#f4e3cd;padding:14px;margin:14px 0;box-shadow:3px 3px #dec5a8}.fixed-booking>small{font-size:12px;color:#985d4c}.booking-date{display:block;margin:15px 0;font-size:14px}.booking-date select{display:block;width:100%;padding:12px;margin-top:8px;border:2px solid #aa8067;background:#fff4e1;color:#725340;font:13px var(--game-font)}.journey-daybreak{display:grid;gap:14px}.night-chapter{padding:17px;background:#53484c;border:3px double #c7a286;color:#f6e9cd}.night-chapter h2{color:#ffedcc;margin:10px 0}.night-chapter>small{color:#ddc7ad}.night-chapter>p{font-size:15px;line-height:1.95;margin:10px 0}.night-pair{height:108px;position:relative;display:flex;justify-content:center;align-items:end;gap:10px;background:radial-gradient(ellipse at 80% 20%,#d9b46c33,transparent 60%)}.night-pair .cast-travel{position:relative;left:auto;bottom:auto}.night-pair>span{position:absolute;right:7%;top:0;font-size:30px;color:#edcd91}.morning-chapter{padding:17px;border:2px solid #b29370;background:#f6ebd1}.morning-chapter h2{color:#95604d}.morning-chapter p{font-size:14px;line-height:1.8}.morning-chapter .action{width:100%;margin-top:10px;min-height:48px}.fixed-day{padding:16px;background:#f5e8d4;border:3px double #aa7d61}.fixed-day>small{color:#9b574a}.fixed-day>p{line-height:1.85}.fixed-day-art{padding:28px 13px;text-align:center;background:linear-gradient(#e1c7a2 50%,#b9c8ad 50%);border:2px solid #ac8d70;font-size:14px;line-height:1.8}.fixed-day>.action{width:100%;margin-top:10px;min-height:48px}
.bobber.biting{color:#bd5b4e;animation:fish-bite .65s steps(2,end) infinite}.fishing-force{display:block;font-size:13px;line-height:1.8;margin:14px 0}.fishing-force input{width:100%;height:42px;accent-color:#ab6556;touch-action:pan-x}.fishing-meter{height:27px;position:relative;background:#dbcbb0;border:2px solid #a98666;margin-top:12px}.fishing-meter>i{position:absolute;top:0;bottom:0;background:#94b99d}.fishing-meter>b{position:absolute;top:-5px;width:4px;height:34px;background:#a24d47;transform:translateX(-50%)}.fish-catalog{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.fish-catalog article{padding:12px 8px;background:#e6e0cf;border:2px dashed #c1ae8c;color:#968a73}.fish-catalog article.found{background:#dce8d5;color:#5e755e;border-style:solid}.fish-catalog small,.collectible-card small{display:block;font-size:11px;line-height:1.75;margin-top:6px}.collectible-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.collectible-card{background:#f6ead5;border:2px solid #b18c6e;padding:13px 10px;text-align:center}.collectible-card>svg{height:95px;width:95px;image-rendering:pixelated;filter:drop-shadow(3px 4px #c3ae8e)}.collectible-card h3{font-size:14px;margin:10px 0 5px}.collectible-card .actions{display:flex;flex-direction:column;gap:6px}.collectible-card .action{font-size:12px;min-height:42px}.collection-gift{padding:14px;background:#dfe9d2;border:2px dashed #9bae87;margin:14px 0}@keyframes fish-bite{50%{transform:translateY(9px)}}@media(prefers-reduced-motion:reduce){.bobber.biting{animation:none}}@media(max-width:360px){.fish-catalog{grid-template-columns:1fr}.collectible-grid{gap:8px}.collectible-card{padding:10px 6px}}
.collection-reply{padding:16px;border-left:5px solid #b85f52;background:#ede3cb;margin-bottom:16px}.collection-reply p{line-height:1.9}
.calibration-dial{position:relative;width:235px;height:235px;margin:20px auto;border-radius:50%;border:7px solid #9e7f64;background:conic-gradient(#d9ccb2 0deg calc(var(--target) - 36deg),#8fbca0 calc(var(--target) - 36deg) calc(var(--target) - 10deg),#f3d78c calc(var(--target) - 10deg) calc(var(--target) + 10deg),#8fbca0 calc(var(--target) + 10deg) calc(var(--target) + 36deg),#d9ccb2 calc(var(--target) + 36deg) 360deg);box-shadow:inset 0 0 0 4px #f9eed9,2px 4px #d6c2a4}.calibration-center{position:absolute;inset:32px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f6ead4;box-shadow:0 0 0 3px #b69a7b;color:#8d6650}.calibration-center strong{font-size:28px}.calibration-center small{font-size:12px;margin-top:7px}.calibration-dial>i{position:absolute;left:50%;top:50%;height:103px;width:4px;transform-origin:50% 100%;background:#a6544d;border:1px solid #fff1d5;z-index:3;pointer-events:none}.calibration-dial:after{content:'';position:absolute;left:calc(50% - 8px);top:calc(50% - 8px);width:16px;height:16px;background:#a6544d;border:3px solid #f7e9cd;border-radius:50%;z-index:4}.collectible-card>svg{height:112px;width:104px}@media(max-width:350px){.calibration-dial{width:205px;height:205px}.calibration-dial>i{height:88px}.calibration-center{inset:27px}}
.calibration-feedback{padding:11px 13px;border-left:4px solid #8dac8c;background:#e1e7cd;line-height:1.7;font-size:13px}

.fish-catalog-icon{display:block;margin-bottom:8px}.fish-catalog-icon svg{width:36px;height:36px}.fish-catalog article:not(.found) .fish-catalog-icon{opacity:.3}

/* Reference-based stage clothes reuse the resident heads and native pixel proportions. */
.stage-figure{display:inline-block;flex:none;width:68px;height:88px;background-repeat:no-repeat;image-rendering:pixelated;vertical-align:bottom;font-style:normal}
.stage-outfit-pair{display:flex;justify-content:center;align-items:end;gap:4px;min-height:102px;padding:7px 0;background:linear-gradient(#eee4d5,#e3d5c0);border-bottom:2px solid #c3ae91;margin-bottom:10px}
.outfit-rack{grid-template-columns:repeat(2,minmax(0,1fr))}.outfit-card{min-width:0}.outfit-card .stage-outfit-pair{margin:-2px -2px 9px}.outfit-card h3{font-size:14px}.outfit-card .action{width:100%}
.blocking-cell .stage-figure{position:absolute;left:50%;bottom:2px;transform:translateX(-50%) scale(.64);transform-origin:center bottom}.rhythm-cast .stage-figure,.travel-pair .stage-figure{position:relative;left:auto;bottom:auto}
@media(max-width:360px){.outfit-card .stage-outfit-pair{gap:0}.outfit-card .stage-figure{zoom:.85}}

.outfit-card .stage-figure{zoom:.85}

.programme-card{padding:18px;margin:16px 0;border:2px solid #b69b78;background:#fff8e9;box-shadow:3px 3px 0 #e0ceb1}.programme-card>small{color:#78654d}.programme-card .stage-outfit-pair{margin:12px auto}.rhythm-stage.backdrop-sea{background:linear-gradient(#b0d9e7 0 43%,#85c2d0 43% 48%,#468da6 48% 72%,#d2e5d5 72% 75%,#9bbdc8 75%)}.rhythm-stage.backdrop-sea:before{content:'～　～　～　～';position:absolute;top:40%;left:0;right:0;color:#f3faf1;letter-spacing:8px;pointer-events:none}

.style-outfit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}.style-outfit-card{min-width:0;background:#fff9ec;border:2px solid #d4c1a2;padding:8px}.style-outfit-card.chosen{border-color:#748d7d;box-shadow:2px 2px 0 #b7c7b4}.outfit-preview{display:flex;flex-direction:column;align-items:center;gap:7px;width:100%;padding:10px 4px;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit}.outfit-preview .stage-outfit-pair{margin:4px auto}.outfit-preview.unavailable .stage-outfit-pair{filter:grayscale(1);opacity:.48}.outfit-preview small{font-size:12px;color:#6f665c}.outfit-preview:focus-visible{outline:3px solid #728978;outline-offset:2px}.style-outfit-card .actions .action{width:100%;font-size:12px;padding:9px 5px}.outfit-detail>.stage-outfit-pair{margin:16px auto}.outfit-material-needs{padding:10px 14px;background:#efe6d5;border-left:3px solid #b69b78}@media(max-width:340px){.style-outfit-grid{grid-template-columns:1fr}}

.final-walk{text-align:center;padding:16px 4px}.final-walk>p{line-height:1.9}.stage-door{position:relative;overflow:hidden;height:230px;max-width:320px;margin:20px auto;background:linear-gradient(90deg,#45565c 0 25%,#d7d3be 25% 75%,#45565c 75%);border:8px solid #9a9585;border-bottom:12px solid #696c62}.stage-door:before,.stage-door:after{content:'';position:absolute;top:0;bottom:0;width:42%;background:#777d72;z-index:1;transition:transform .8s ease}.stage-door:before{left:0;border-right:4px solid #b1ac96}.stage-door:after{right:0;border-left:4px solid #b1ac96}.step-1 .stage-door:before,.step-2 .stage-door:before,.step-3 .stage-door:before{transform:translateX(-85%)}.step-1 .stage-door:after,.step-2 .stage-door:after,.step-3 .stage-door:after{transform:translateX(85%)}.door-light{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 15%,#fff9d5,#dfd7b2 70%)}.final-walkers{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);z-index:2;transition:bottom .8s,opacity .8s}.final-walkers .stage-outfit-pair{background:transparent;border:0;min-width:145px}.step-2 .final-walkers{bottom:34px}.step-3 .final-walkers{bottom:65px;opacity:.15}.step-3 .door-light{background:#fff9df}.story-stages .postcard{border-left:4px solid #93a592}

/* Original seasonal props keep the home's quiet red, mint and cream palette. */
.season-note{padding:14px;background:#f2edda;border:1px solid #c8cdb6;border-radius:12px;margin:12px 0}.season-note p{margin:8px 0}.festival-card{padding:14px 0;border-bottom:1px dashed #c3b69b}.festival-art{height:112px;position:relative;overflow:hidden;border-radius:12px;background:#efe5cd;margin:10px 0;image-rendering:pixelated}.festival-art:after{content:'';position:absolute;bottom:18px;left:20%;width:60%;height:9px;background:#a68b68;box-shadow:0 6px 0 #c2a680}.festival-orb{position:absolute;width:60px;height:60px;left:calc(50% - 30px);top:24px;border-radius:24px;background:#dfad6c;box-shadow:inset -9px -4px #bd8656}.halloween .festival-orb:before{content:'';position:absolute;top:21px;left:14px;width:8px;height:8px;background:#705744;box-shadow:23px 0 #705744,10px 18px #f8edb9}.halloween i{position:absolute;left:49%;top:16px;width:8px;height:17px;background:#6f9879}.springFestival{background:#f2ddcd}.springFestival .festival-orb{border-radius:2px;width:38px;height:68px;left:calc(50% - 19px);top:12px;background:#b85c53;box-shadow:-48px 0 #b85c53,48px 0 #b85c53}.springFestival i{position:absolute;top:27px;left:calc(50% - 7px);width:14px;height:14px;background:#e7c785;box-shadow:0 24px #e7c785,-48px 0 #e7c785,48px 0 #e7c785}.midAutumn{background:#c5d2ce}.midAutumn .festival-orb{background:#f4e6ae;box-shadow:inset -8px -4px #d9c893;top:12px;left:67%;width:44px;height:44px}.midAutumn i{position:absolute;bottom:28px;left:36%;width:58px;height:32px;border-radius:10px;background:#c89456;box-shadow:inset 0 5px #e6b87a}.midAutumn.progress-1 i{width:24px;border-radius:50%}.midAutumn.progress-2 i{border:3px double #9d723f}.newYearsEve{background:#b3c6cf}.newYearsEve .festival-orb{border-radius:2px;width:64px;height:53px;left:calc(50% - 32px);background:#8c7359;box-shadow:inset 0 0 0 6px #f5edd8}.newYearsEve i{position:absolute;top:7px;left:27%;height:8px;width:8px;background:#f1d68c;box-shadow:89px 4px #f1d68c,134px 34px #f1d68c}.festival-card>.action{margin-top:8px}

.festival-work{margin:18px 0;padding:12px;border:2px solid #c7b693;background:#f8f0dd;border-radius:14px}.festival-work>p{font-size:13px;line-height:1.7}.festival-toolbox{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.festival-tool{flex:1;min-width:68px;padding:9px 5px;display:flex;flex-direction:column;align-items:center;gap:7px;border:2px solid #d6c7aa;background:#fffaf0;border-radius:9px;font:inherit;cursor:grab}.festival-tool.selected{border-color:#648b79;background:#e6f0e3;box-shadow:0 0 0 2px #bbcfb4}.festival-tool small{font-size:11px}.festival-board,.festival-design{display:grid;grid-template:repeat(3,1fr)/repeat(3,1fr);gap:5px;padding:12px;min-height:240px;background:#e6d3b3;border:5px solid #9f8263;border-radius:14px;position:relative}.festival-cell{min-height:63px;min-width:0;display:flex;align-items:center;justify-content:center;border:1px dashed #b7a98b;border-radius:7px;background:#fff9ec55;font:inherit;cursor:pointer;position:relative;z-index:1}.festival-cell small{color:#80725c;font-size:11px}.festival-cell:focus-visible{outline:3px solid #507d68}.festival-cell.occupied{background:#fff9ecaa;border-style:solid}.f-piece{display:inline-flex;justify-content:center;align-items:center;width:39px;height:37px;flex-shrink:0;font-size:25px;line-height:1;color:#64513f;transition:transform .18s}.f-piece.left,.f-piece.right{background:#b8534b;color:#ffe2a6;width:27px;height:49px;font-size:17px;writing-mode:vertical-rl;border:2px solid #d3a46e}.f-piece.banner{background:#b8534b;color:#ffe2a6;width:65px;height:25px;font-size:12px;border:2px solid #d3a46e}.f-piece.orange{color:#dc915a}.f-piece.berry{color:#b76b83}.f-piece.mint{color:#679e87}.f-piece.lemon,.f-piece.star{color:#d5a44e}.f-piece.memory{background:#f1ecd8;border:4px solid #a58464;color:#8ca99c}.f-piece.wish{background:#f6e4b6;border:1px solid #cfb987;font-size:17px}.f-piece.rabbit{background:#eadbb9;border-radius:50%;font-size:20px;color:#966a45}.f-piece.moon{color:#a57645;font-size:36px}.board-pumpkin{border-color:#af8652;background:radial-gradient(ellipse,#e7b471 0 66%,#d9c6a3 67%)}.board-door{background:linear-gradient(90deg,#e8d3af 0 27%,#927960 27% 73%,#e8d3af 73%);border-color:#a78d6c}.board-bags{background:linear-gradient(90deg,#dfb6a4 0 32%,#eddfc2 32% 68%,#b3cbb7 68%)}.board-frame{border:9px solid #a58464;background:#eee3c7}.board-mooncake,.board-share{background:radial-gradient(ellipse,#dfb176 0 64%,#e7d7b9 65%)}.board-lights{background:#b8c7c6}.board-lights.is-ready{box-shadow:inset 0 0 25px #fff3be,0 0 14px #eacb7c}.board-lights.is-ready .f-piece{color:#b67e35;text-shadow:0 0 8px #fff9d0}.festival-seats{display:flex;justify-content:space-between;font-size:13px;padding:8px 16px}.festival-ready{min-height:36px;color:#597860}.festival-design{min-height:150px;max-width:220px;margin:10px auto;place-items:center}.festival-design .f-piece{font-size:21px}.festival-work .actions .action{font-size:12px;padding:9px}.board-share .f-piece.cut{height:45px;border-left:3px dashed #faf2db;width:8px;color:transparent}.board-table .f-piece.jimi,.board-table .f-piece.han{border-bottom:5px solid #8aa99a;border-radius:0 0 50% 50%;background:#f9edcf;font-size:17px}.board-table .f-piece.plate{border:3px solid #a3b8a4;border-radius:50%;background:#f7e9c8;font-size:18px}.board-bags .festival-cell:nth-child(3n+2){background:transparent;border-color:transparent}@media(max-width:360px){.festival-work{padding:8px}.festival-board{padding:7px;gap:3px;min-height:220px}.f-piece.banner{width:54px;font-size:10px}.festival-tool{min-width:55px}}

.festival-conversation{margin:16px 0}.festival-conversation>small{color:#8b795d}.festival-narration{color:#80735e;font-size:14px;line-height:1.9;margin:14px 4px}.festival-chat{display:flex;flex-direction:column;gap:13px;margin:20px 0}.festival-bubble{max-width:88%;padding:12px 15px;border-radius:14px;border:1px solid #cf7972;background:#f9e3df;align-self:flex-start;box-shadow:2px 2px 0 #ebc1ba}.festival-bubble.han{align-self:flex-end;background:#e1f2e9;border-color:#86b9a4;box-shadow:2px 2px 0 #bedbcd}.festival-bubble small{display:block;color:#ad4843;margin-bottom:5px;font-size:12px}.festival-bubble.han small{color:#427c66}.festival-bubble p{margin:0;line-height:1.8}.festival-dialogue-options{display:flex;flex-direction:column;gap:11px;margin:20px 0}.festival-dialogue-options .action{text-align:left;white-space:normal;line-height:1.7;padding:13px 15px;border-radius:12px}.festival-choice-note{font-size:12px;color:#8a7a64;border-left:3px solid #c4b48d;padding:6px 10px;margin:15px 0}.festival-dialogue-memory h4{margin-top:22px}.festival-chat .festival-narration{text-align:center;font-size:13px}.festival-conversation>.primary{width:100%;margin-top:7px}

.esports-invite{padding:14px;margin:12px 0;background:#eaf0e6;border:2px solid #a5bda8;border-radius:12px}.esports-invite small{color:#6d816d}.esports-pair{display:flex;justify-content:center;gap:24px;background:#e2e9df;border-radius:12px;padding:15px;margin:14px 0}.esports-pair>span{display:flex;flex-direction:column;align-items:center;gap:7px;font-size:28px;color:#be5d55}.esports-pair .han{color:#669e89}.esports-pair b{font-size:13px}.arcade-controls{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:12px;margin:15px 0}.arcade-controls button{min-height:58px;border:2px solid #9db5a2;background:#e0ecdc;border-radius:12px;font:inherit;font-size:23px;touch-action:none;user-select:none}.arcade-controls button:active{background:#b5cdb7;transform:translateY(2px)}#arcade-canvas{width:100%;height:auto;display:block;background:#c7dfd6;border:3px solid #8b9d82;border-radius:9px;image-rendering:pixelated;touch-action:none}#arcade-status{min-height:40px;font-size:13px;line-height:1.7;color:#64785e}

/* The cooperative board always shows both residents; controls stay reachable on narrow screens. */
#game[data-panel="arcade"]{width:min(100vw,1100px)}#game[data-panel="arcade"]>.hud,#game[data-panel="arcade"]>.bottom,#game[data-panel="arcade"]>#bubble{visibility:hidden}#modal[data-view="arcade"]{top:max(6px,env(safe-area-inset-top));bottom:max(6px,env(safe-area-inset-bottom));left:max(6px,env(safe-area-inset-left));right:max(6px,env(safe-area-inset-right))}#modal[data-view="arcade"] #panel{padding:10px;overflow:auto;overscroll-behavior:contain}#modal[data-view="arcade"] #panel>h2{font-size:15px;margin:2px 0 9px}.coop-shell{display:grid;gap:10px;min-width:0}.coop-playfield,.coop-side{min-width:0}#arcade-canvas{position:static;width:100%;height:auto;aspect-ratio:16/9;display:block;max-height:62dvh;object-fit:contain;background:#d6e4db}.coop-hint{font-size:12px;line-height:1.6;margin:8px 0}.coop-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px}.coop-pad{padding:8px;border:2px solid #ca8179;border-radius:10px;background:#fae7e2}.coop-pad.han{border-color:#82b59e;background:#e1f1e7}.coop-pad strong{display:block;font-size:12px;margin-bottom:7px;color:#b2544e}.coop-pad.han strong{color:#4a836b}.coop-pad>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.coop-pad button{min-height:48px;min-width:0;padding:4px;border:1px solid #c28c7c;border-radius:8px;background:#fff3ec;font:inherit;font-size:20px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.coop-pad.han button{border-color:#87ae98;background:#f2fbf1}.coop-pad button:active{filter:brightness(.91);transform:translateY(1px)}.coop-touch-note{font-size:11px;color:#827359;line-height:1.6;margin:8px 0}.coop-side .actions{display:flex;flex-wrap:wrap;gap:7px}.coop-side .actions button{min-height:44px;font-size:12px;margin:0}.coop-playfield #arcade-status{min-height:26px;font-size:12px;margin:4px 0}@media(min-width:700px){.coop-shell{grid-template-columns:minmax(0,1fr) 225px;align-items:start}.coop-controls{grid-template-columns:1fr}.coop-side .actions{flex-direction:column}#arcade-canvas{max-height:calc(100dvh - 160px)}}@media(orientation:landscape) and (max-height:500px){.coop-shell{grid-template-columns:minmax(0,1fr) 185px;gap:9px}.coop-controls{grid-template-columns:1fr;gap:5px}.coop-pad{padding:5px}.coop-pad strong{margin-bottom:4px}.coop-pad button{min-height:44px}.coop-touch-note{font-size:10px;margin:5px 0}.coop-side .actions{gap:4px}.coop-side .actions button{min-height:38px;padding:6px}#arcade-canvas{max-height:calc(100dvh - 110px)}.coop-hint{font-size:11px}.coop-playfield #arcade-status{min-height:0;font-size:11px}}@media(max-width:350px){.coop-controls{gap:6px}.coop-pad{padding:5px}.coop-pad>div{gap:4px}.coop-pad strong{font-size:11px}.coop-pad button{min-height:46px;font-size:18px}}

@media (orientation:landscape) and (max-height:500px){.coop-side .actions{flex-direction:row;flex-wrap:wrap}}

#arcade-help{white-space:pre-line}#arcade-help[hidden]{display:none}

.cake-workspace{display:grid;gap:16px;align-items:start}.cake-workspace>div{min-width:0}.cake-board{width:min(100%,380px);aspect-ratio:1;margin:auto;cursor:crosshair;touch-action:manipulation;border-radius:18px;background:#f1e7d7}.cake-board:focus-visible{outline:3px dashed #78a99a;outline-offset:3px}.cake-design-art{display:block;width:100%;height:auto;max-width:380px;margin:0 auto}.cake-palette h3{margin:12px 0 6px}.cake-swatches{display:grid;grid-template-columns:1fr 1fr;gap:6px}.cake-swatches i{display:inline-block;width:16px;height:16px;vertical-align:middle;border:1px solid #a99580;border-radius:50%;margin-right:5px}.cake-palette .actions{gap:5px}.cake-palette .action{min-height:42px}.cake-palette input{box-sizing:border-box;width:100%;padding:10px;border:1px solid #cbbca7;border-radius:8px;font:inherit}.cake-finish{margin-top:15px}.birthday-table .cake-design-art{width:170px;max-height:170px}.birthday-moments~.postcard .cake-design-art{max-width:280px}.cake-workspace{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}

/* Birthday props share the living-room coordinates and never cover the house. */
#birthday-scene{position:absolute;inset:0;z-index:1;display:block;background:transparent;padding:0;pointer-events:none}
#birthday-scene[hidden]{display:none}
.room-birthday-cake{position:absolute;filter:drop-shadow(0 2px 2px #694b3a33)}
.room-birthday-cake svg{display:block;width:100%;height:auto}.room-birthday-cake>span{font-size:32px}
.room-birthday-entry{position:absolute;left:22%;right:12%;text-align:center;pointer-events:auto}
.room-birthday-entry button{font-size:11px;padding:5px 9px;min-height:30px;background:#f6ecd9ee;color:#725542}
.birthday-night #resident-art{filter:brightness(.86) sepia(.1)}
.birthday-night[data-birthday-who="jimi"] .resident-map-sprite.jimi:after,.birthday-night[data-birthday-who="han"] .resident-map-sprite.han:after{content:"";position:absolute;left:26px;top:-3px;width:19px;height:25px;background:repeating-linear-gradient(20deg,#c87a70 0 6px,#f5d799 6px 10px);clip-path:polygon(50% 0,100% 100%,0 100%);transform:rotate(-9deg);pointer-events:none}
.birthday-room-options{margin:10px 0}.birthday-room-options .actions{gap:5px}

.room-birthday-entry{left:auto;right:15px;max-width:65%}.room-birthday-cake .cake-art{width:100%;max-width:none;margin:0}

.room-birthday-cake{filter:none}.room-birthday-cake .room-cake-art{image-rendering:pixelated;filter:brightness(.96) saturate(.85)}.birthday-night .room-birthday-cake .room-cake-art{filter:brightness(.87) saturate(.8)}

/* The frame is a composition surface, not a sequence of confirmations. */
#frame-studio{box-sizing:border-box;width:min(94vw,720px);max-height:94dvh;overflow:auto;background:#f7f1e4;color:#665047;border:3px solid #ad9477;padding:16px;font:14px/1.6 system-ui}#frame-studio::backdrop{background:#29382cb3}#frame-studio header{display:flex;justify-content:space-between;align-items:center}#frame-studio h2{font-size:20px;margin:0}#frame-studio button{min-height:44px;padding:7px 12px;border:1px solid #b29e82;background:#eee3cf;color:#665047;font:inherit;cursor:pointer}#frame-studio button[aria-pressed=true]{background:#d5e6d9;border-color:#6d937d}#frame-studio button:disabled{opacity:.5}#frame-studio .frame-toolbar,#frame-studio footer{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}#frame-studio footer button:first-child{background:#d5e6d9}#frame-studio .frame-board{border:12px solid #937557;box-shadow:0 5px 12px #6f554325;background:#f6eedc}#frame-studio .shellFrame{border-color:#d6b994}#frame-studio canvas{width:100%;display:block;touch-action:none;cursor:grab}#frame-studio .frame-adjust{display:flex;flex-wrap:wrap;gap:10px;align-items:center}#frame-studio .frame-adjust label{display:flex;align-items:center;gap:6px}#frame-studio input{max-width:130px;min-height:36px}#frame-studio .frame-photos{display:flex;gap:6px;overflow-x:auto;padding:8px 0}#frame-studio .frame-photos button{min-width:86px;padding:4px}#frame-studio .frame-photos img{width:76px;height:64px;object-fit:contain;display:block}#frame-studio summary{cursor:pointer;min-height:40px}#frame-studio #frame-status{color:#597661}#frame-studio canvas:focus-visible{outline:3px solid #719682;outline-offset:4px}
/* Departure scenery moves at different speeds; the four-second transition stays skippable. */
.journey-scenery{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.journey-hills{position:absolute;width:160%;left:-20%;height:75px;bottom:30px;background:#8da998;clip-path:polygon(0 80%,12% 38%,23% 70%,37% 10%,49% 55%,62% 23%,76% 65%,88% 30%,100% 70%,100% 100%,0 100%);animation:journey-distant 18s linear infinite alternate;opacity:.7}
.journey-verge{position:absolute;left:-50%;bottom:14px;width:200%;height:18px;background:repeating-linear-gradient(90deg,#809984 0 18px,#9eb097 18px 50px,transparent 50px 66px);animation:journey-near 5s linear infinite}
.journey-pole{position:absolute;left:100%;top:12px;width:4px;height:105px;background:#9b947a;animation:journey-post 7s linear infinite}.journey-pole:before{content:'';position:absolute;left:-9px;top:5px;width:22px;height:3px;background:#9b947a}
.travel-transition.stage .journey-scenery,.travel-transition.return .journey-scenery{display:none}
.travel-transition.depart .travel-pair,.travel-transition.depart .travel-case{z-index:2}
@keyframes journey-distant{to{transform:translateX(-40px)}}@keyframes journey-near{to{transform:translateX(-66px)}}@keyframes journey-post{to{transform:translateX(-700px)}}
@media(prefers-reduced-motion:reduce){.journey-scenery *{animation:none!important}}
/* Override the game's full-screen canvas rule inside the frame editor. */
#frame-studio .frame-board canvas{position:static;height:auto;aspect-ratio:600/384;width:100%;image-rendering:auto}
#short-scene{width:min(94vw,520px);max-height:92dvh;overflow:auto;padding:18px;background:#f6efdf;border:3px solid #a58b6e;color:#665246;font:14px/1.6 system-ui}#short-scene::backdrop{background:#32483bb3}#short-scene header{display:flex;justify-content:space-between;align-items:center}#short-scene h2{margin:0;font-size:19px}#short-scene button{min-height:44px;padding:8px 12px;background:#e3ecdc;border:2px solid #a4b99f;color:#576c55;font:inherit}#short-scene .short-actions{display:flex;gap:8px;flex-wrap:wrap}#short-scene button:disabled{opacity:.5}#short-scene button[aria-pressed=true]{background:#c4dccd}.short-viewfinder,.practice-short-room{position:relative;height:220px;overflow:hidden;margin:14px 0;background:#d7e2d5;border:6px solid #d0bb99}.short-landscape{position:absolute;inset:0;background:linear-gradient(#d1e3dc 0 50%,#90b6ad 50% 70%,#d9c8a3 70%)}.short-photo.city .short-landscape{background:linear-gradient(#d9dfd2 0 42%,#9da998 42% 70%,#c8b798 70%)}.short-photo.snow .short-landscape{background:linear-gradient(#bacbc7 0 55%,#e8eadb 55%)}.short-photo-pair{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);display:flex;gap:12px}.short-photo-pair .light-pair{display:flex;gap:18px}.short-photo.pose-heart .short-photo-pair{gap:0}.short-photo.pose-heart .short-photo-pair:after{content:'♡';position:absolute;left:50%;top:44%;transform:translateX(-50%);font-size:27px;color:#b96665;background:#f5e7cfbb;border-radius:50%;line-height:1}.viewfinder-corners{position:absolute;inset:22px;border:1px solid #f8f3d7aa;pointer-events:none}.viewfinder-corners:after{content:'＋';position:absolute;left:50%;top:38%;color:#f8f3d7aa}.photo-caption{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:12px;color:#635b49}.captured .short-viewfinder{border:12px solid #fff9eb;border-bottom-width:30px;box-shadow:3px 4px #8b715c33;animation:short-photo-develop .7s ease-out}.captured .viewfinder-corners{display:none}.practice-short-room{height:170px;background:linear-gradient(110deg,#eff1dd55 20%,transparent 20% 60%,#eff1dd44 60%),linear-gradient(#becfc2 0 72%,#c8b48f 72%);border-color:#a9bbac}.practice-short-room .short-photo-pair{bottom:13px;animation:practice-short-sway 1.4s ease-in-out infinite}.practice-short-mic{position:absolute;left:48%;bottom:12px;width:3px;height:44px;background:#738075}.practice-short-mic:before{content:'';position:absolute;left:-3px;top:-9px;width:9px;height:13px;border-radius:4px;background:#586c60}.practice-beat-lane{position:relative;height:64px;background:#e4dcc6;border:2px solid #bbaa8c;overflow:hidden}.practice-beat-target{position:absolute;left:calc(50% - 14px);top:0;bottom:0;width:28px;background:#b6d1ba;border-left:2px solid #7c9f84;border-right:2px solid #7c9f84}.practice-beat-lane span{position:absolute;top:8px;font-size:30px;color:#b3615c;transform:translateX(-50%)}.practice-beat-lane span.caught{color:#517c62}.practice-short-progress{color:#5c7a5d}@keyframes short-photo-develop{from{filter:brightness(1.15);transform:translateY(5px)}to{filter:brightness(1);transform:none}}@keyframes practice-short-sway{50%{transform:translateX(-50%) translateY(-2px)}}@media(prefers-reduced-motion:reduce){.captured .short-viewfinder,.practice-short-room .short-photo-pair{animation:none}}
#short-scene .short-photo-pair>.cast-travel{position:relative;left:auto;bottom:auto;flex:none}
.hutong-map{display:grid;grid-template-columns:repeat(7,1fr);gap:0;border:5px solid #8b8874;background:#c9bda0;margin:16px 0}.hutong-map .hutong-cell{aspect-ratio:1;min-height:42px;min-width:0;padding:0;border:1px solid #c5b89b;background:#e2d6b8;color:#817359;font-size:21px;position:relative}.hutong-map .hutong-cell:disabled{opacity:1;cursor:default}.hutong-map .wall{background:repeating-linear-gradient(0deg,#8e988a 0 10px,#adb3a1 10px 12px);border-top:5px solid #dadbc8}.hutong-map .walked{background:#ebe0c5}.hutong-map .current{background:#a9c5ad;color:#42624c}.hutong-map .current span{font-size:12px;font-weight:bold}.hutong-map button:not(:disabled){box-shadow:inset 0 0 0 2px #9fb79b}.hutong-discovery{padding:14px;background:#ece1c9;border-left:4px solid #8fa78b;min-height:85px}.hutong-discovery p{font-size:13px;line-height:1.7}.hutong-result{padding:12px;background:#e4ead8}.retreat-scene{height:220px;position:relative;overflow:hidden;background:linear-gradient(#e6ddc7 0 70%,#bdac8b 70%);border:5px solid #b5a486;margin:14px 0}.retreat-window{position:absolute;left:12%;top:18px;width:100px;height:85px;background:linear-gradient(125deg,#d1e0d2 0 50%,#e8ecd9 50%);border:7px solid #ab9678}.retreat-window:after{content:'';position:absolute;left:44%;height:100%;width:5px;background:#ab9678}.retreat-couch{position:absolute;bottom:20px;left:22%;width:65%;height:62px;background:#a6bca2;border:7px solid #849e84;border-radius:8px}.retreat-people{position:absolute;left:32%;bottom:35px;display:flex;gap:4px;transition:transform .6s}.retreat-people .cast-travel{position:relative;left:auto;bottom:auto}.seat-window .retreat-people{transform:translateX(-28px)}.retreat-toy{position:absolute;left:52%;bottom:43px;width:24px;height:28px;background:#c8aa83;border:3px solid #ad8d68;border-radius:40%;z-index:2;box-shadow:-5px -9px 0 -2px #c8aa83,5px -9px 0 -2px #c8aa83}.retreat-toy:after{content:'··';position:absolute;top:-4px;left:3px;color:#745b41;font-weight:bold}.retreat-cups{position:absolute;left:8%;bottom:12px;width:65px;height:19px;border-bottom:6px solid #967a57;display:flex;gap:8px;padding-left:8px}.retreat-cups i{width:15px;height:16px;background:#eee3c7;border:2px solid #b1ba9c}.retreat-window{animation:retreat-daylight 12s ease-in-out infinite alternate}@keyframes retreat-daylight{to{filter:brightness(1.08)}}@media(prefers-reduced-motion:reduce){.retreat-window{animation:none}.retreat-people{transition:none}}
.hutong-cell .hutong-walkers{position:absolute;left:50%;top:50%;width:136px;height:88px;transform:translate(-50%,-50%) scale(.28);display:flex}.hutong-walkers .cast-travel{position:static;flex:none}.hutong-map .wall i{position:absolute;inset:12px 8px 5px;background:#7d8e7d;border:3px solid #b5bda8}.hutong-map .wall:nth-child(2n) i{border-radius:50%;background:#a8b18f}.hutong-map .wall:nth-child(3n){border-top-color:#dfc9b0}

#sea-salvage-dialog{width:min(1020px,98vw);height:94dvh;max-height:94dvh;padding:0;border:3px solid #9cae96;background:#e8ecdf;overflow:hidden;box-sizing:border-box}
#sea-salvage-dialog iframe{display:block;width:100%;height:100%;border:0;background:#e8ecdf}
#sea-salvage-dialog>[role=status]{position:absolute;top:0;left:0;right:0;margin:0;color:#954c45;background:#fff5de;z-index:2}
#sea-salvage-dialog>[role=status]:empty{display:none}
#sea-salvage-dialog::backdrop{background:#30483b99}

/* Quiet travel chapters: optional viewing, no click quotas. */
.quiet-snow{height:270px;position:relative;overflow:hidden;background:linear-gradient(#b8d2cd 0 65%,#edf0df 65%);border:3px solid #a4b8a0;isolation:isolate}
.quiet-snow.snow-evening{background:linear-gradient(#6e8f8b,#9fb6ac 65%,#e1e6d7 65%)}
.snow-houses{position:absolute;left:0;right:0;top:60px;height:120px;background:repeating-linear-gradient(90deg,#879e9266 0 55px,transparent 55px 70px);clip-path:polygon(0 25%,10% 25%,10% 0,25% 0,25% 35%,45% 35%,45% 12%,60% 12%,60% 42%,80% 42%,80% 0,100% 0,100% 100%,0 100%)}
.snow-lamp{position:absolute;left:15%;top:55px;height:158px;width:5px;background:#718377;box-shadow:3px 0 #bac6ac}
.snow-lamp:before{content:'';position:absolute;left:-10px;top:0;width:25px;height:30px;background:#f3dfaa;border:4px solid #7b8e7e;box-shadow:0 0 35px 15px #f7dda52e;animation:quiet-lamp 7s ease-in-out infinite alternate}
.snow-bench{position:absolute;bottom:39px;right:8%;width:90px;height:10px;background:#9b8c6d;box-shadow:0 -17px #a99b7a}
.snow-bench:after{content:'';position:absolute;top:10px;left:8px;width:5px;height:20px;background:#827d65;box-shadow:68px 0 #827d65}
.quiet-snow .snow-pair{bottom:20px;gap:4px;animation:quiet-pair 8s ease-in-out infinite alternate}
.quiet-snow .snow-pair:after{content:'';position:absolute;bottom:4px;left:-12px;right:-12px;height:5px;background:#a0b6a455;z-index:-1}
.quiet-flake{position:absolute;top:-12px;left:var(--x);width:4px;height:4px;background:#fff9e7;opacity:.8;animation:quiet-fall var(--speed) linear var(--delay) infinite;pointer-events:none}
.quiet-flake:nth-of-type(3n){width:2px;height:2px;opacity:.5}
.quiet-snow.still *{animation-play-state:paused!important}
.quiet-shop{position:relative;text-align:center;padding:46px 18px 12px;background:#f4ead4;border:3px solid #b8ab8b;overflow:hidden}
.shop-awning{position:absolute;top:0;left:0;right:0;height:27px;background:repeating-linear-gradient(90deg,#a0bba3 0 28px,#f4e8cc 28px 56px);border-bottom:4px solid #81977c}
.shop-shelf{display:flex;justify-content:space-around;align-items:end;margin:14px 12px;border-bottom:7px solid #b19b78;color:#829a7e;font-size:30px}
.shop-shelf i{font-style:normal}.quiet-shop .wrapping-gift{margin:18px auto 8px;min-height:100px;box-shadow:5px 6px #9a87622a;transform:rotate(-2deg)}
@keyframes quiet-fall{to{transform:translate(22px,290px)}}@keyframes quiet-lamp{to{box-shadow:0 0 40px 20px #f7dda54a}}@keyframes quiet-pair{to{transform:translateX(-50%) translateY(-2px)}}
@media(prefers-reduced-motion:reduce){.quiet-snow *{animation:none!important}.quiet-flake{top:var(--x)}}
.quiet-walk{height:250px;position:relative;overflow:hidden;isolation:isolate;background:linear-gradient(#c6d8c2,#eedbb8 62%,#afcbb5 62%);border:3px solid #a4b59c}.walk-sun{position:absolute;width:38px;height:38px;border-radius:50%;right:17%;top:40px;background:#f6db9e;box-shadow:0 0 25px #f7dda57a}.walk-distant{position:absolute;left:-10%;width:120%;height:50px;top:120px;background:#90b1a2;clip-path:polygon(0 80%,15% 25%,25% 65%,40% 10%,60% 85%,80% 35%,100% 70%,100% 100%,0 100%)}.walk-path{position:absolute;bottom:0;left:0;right:0;height:65px;background:#d8cfaf;border-top:5px solid #eadfc2}.walk-pair{position:absolute;left:47%;bottom:15px;display:flex;gap:5px;animation:walk-companions 9s ease-in-out infinite alternate}.walk-pair .cast-travel{position:relative;left:auto;bottom:auto}.walk-landmark{position:absolute;left:12%;bottom:62px;width:55px;height:6px;background:#a18c6e;box-shadow:0 -15px #b7a180}.walk-place{position:absolute;top:12px;left:12px;background:#f8efdaaa;padding:5px 9px;color:#61745d;font-size:12px}.walk-variant-1 .walk-sun{right:60%;top:70px;background:#efc396}.walk-variant-1{background:linear-gradient(#c3d1c0,#edc9a3 62%,#a8c4b2 62%)}.city-beijing .walk-distant,.city-macao .walk-distant{height:115px;top:55px;clip-path:none;background:repeating-linear-gradient(90deg,#a3ab96 0 54px,#c1b59b 54px 64px);border-top:8px solid #8d927e}.city-beijing .walk-path,.city-macao .walk-path{background:#c5bda5}.city-hainan .walk-landmark,.city-singapore .walk-landmark{width:12px;height:90px;background:#a5926e;box-shadow:none}.city-hainan .walk-landmark:before,.city-singapore .walk-landmark:before{content:'';position:absolute;width:80px;height:45px;left:-35px;top:-15px;border-radius:60% 60% 25% 25%;background:#8fae81;transform:rotate(-9deg)}.city-singapore .walk-distant{background:#83a28b}.city-shenzhen .walk-path{background:#c4c4ab;border-top:8px solid #a9baa0}.food-visit{height:210px;position:relative;overflow:hidden;background:repeating-linear-gradient(90deg,#f2e6cf 0 34px,#eee0c7 34px 35px);border:3px solid #b6a889;text-align:center}.food-shop-sign{position:relative;display:inline-block;margin:18px;padding:8px 20px;background:#94ac90;color:#fff7df;border:3px solid #7e967c}.food-serving{position:absolute;z-index:2;bottom:28px;left:calc(50% - 48px);width:96px;height:45px;border-radius:5px 5px 45px 45px;background:#f8efdc;border:5px solid #b29376;color:#b88761;font-size:26px}.food-serving svg{width:48px;height:38px}.food-table{position:absolute;bottom:0;left:0;right:0;height:42px;background:#c5ac83;border-top:5px solid #a89172}.food-steam{position:absolute;bottom:80px;left:calc(50% - 30px);display:flex;gap:14px}.food-steam i{width:5px;height:25px;background:#fff9e499;animation:food-steam 3s ease-in-out infinite}.food-steam i:nth-child(2){animation-delay:-1s}.food-steam i:nth-child(3){animation-delay:-2s}@keyframes food-steam{to{transform:translateY(-13px);opacity:.1}}@keyframes walk-companions{to{transform:translateX(13px)}}@media(prefers-reduced-motion:reduce){.walk-pair,.food-steam i{animation:none}}
.furnishing-hub>h2{margin-top:4px}.furnishing-state{font-size:12px;color:#71846b;margin:8px 0}.furnishing-item .actions{display:flex;flex-wrap:wrap;justify-content:center;gap:5px}.furnishing-item .action{font-size:12px;min-height:40px}.furnishing-section{margin:14px 0;border:1px solid #b4bea5;background:#f7f0df;padding:12px}.furnishing-section>summary{cursor:pointer;color:#677d65;font-weight:bold;min-height:32px}.furnishing-section[open]>summary{border-bottom:1px dashed #c4c7ae;margin-bottom:12px;padding-bottom:8px}.furnishing-section .row{flex-wrap:wrap;gap:8px}

/* Keep the window lamp reachable above the sofa, including minimum touch sizing. */
#game[data-place="roomLiving"] .hotspot[data-open="echo"]{z-index:2}
/* Seasonal panels keep preparation, celebration and navigation separate. */
.festival-panel{min-width:0}
.festival-panel>.festival-art{height:88px;border-radius:0;margin:0 0 14px}
.festival-panel>.festival-art .festival-orb{transform:scale(.8);transform-origin:top center}
.festival-panel>.festival-art:after{bottom:10px}
.festival-panel>h2{margin:0 0 8px}
.festival-panel>p{line-height:1.7}
.festival-preparation{margin:16px 0;padding:14px;background:#edf1e5;border:1px solid #bbc7ad}
.festival-preparation h3{margin:0 0 10px;font-size:14px}
.festival-selected{margin:0 0 10px;line-height:1.7;color:#735a49;overflow-wrap:anywhere}
.festival-picker{border-top:1px solid #cad0bc;padding-top:10px}
.festival-picker summary{cursor:pointer;font-size:12px;color:#567b65;min-height:28px;line-height:1.8}
.festival-picks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}
.festival-picker .festival-picks{grid-template-columns:minmax(0,1fr);max-height:240px;overflow:auto;padding:2px 3px 4px 0}
.festival-picks .action{width:100%;min-width:0;margin:0;white-space:normal;overflow-wrap:anywhere;text-align:left;line-height:1.6;padding:10px 12px;box-sizing:border-box}
.festival-main-action{margin:18px 0 12px}
.festival-main-action>.action,.festival-panel>.action{display:block;width:100%;margin:10px 0;white-space:normal;line-height:1.6}
.festival-panel>.actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px;padding-top:12px;border-top:1px solid #ddcbb5}
.festival-panel>.actions .action{min-width:0;white-space:normal;line-height:1.6;margin:0}
.festival-panel>.postcard>.action{display:block;width:100%;white-space:normal;margin:10px 0;line-height:1.6}
.festival-panel .festival-dialogue-options .action,.festival-panel .festival-bubble{border-radius:0}
.festival-panel .festival-card>.action{display:block;width:100%;margin:12px 0}
@media(max-width:360px){.festival-picks{grid-template-columns:minmax(0,1fr)}}

/* Keep scene guidance out of modal backdrops without changing scene geometry. */
#game[data-panel]:not([data-panel=""]) > #bubble{visibility:hidden}

.birthday-interlude h2{text-align:center}.birthday-interlude>.actions{position:sticky;bottom:-16px;padding:12px 0;background:var(--paper)}

.birthday-interlude-art{position:relative;height:190px;margin:6px 0 18px;overflow:hidden;border:3px solid #baa084;background:linear-gradient(90deg,#eadfc9aa 1px,transparent 1px) 0 0/26px 100%,linear-gradient(#eee4d0 0 70%,#cbb594 70%);box-shadow:0 4px #dcc6a6;isolation:isolate}
.interlude-window{position:absolute;right:9%;top:20px;width:59px;height:64px;border:6px solid #ad9170;background:linear-gradient(90deg,transparent 46%,#e7d4b0 46% 54%,transparent 54%),linear-gradient(transparent 46%,#e7d4b0 46% 54%,transparent 54%),radial-gradient(circle at 70% 20%,#f5dfa2 0 6px,transparent 7px),#708690;box-shadow:0 0 0 3px #f9efd9}
.interlude-bunting{position:absolute;top:13px;left:8%;width:84%;display:flex;justify-content:space-around;border-top:2px solid #a88c66;transform:rotate(-3deg)}
.interlude-bunting i{width:15px;height:20px;background:#c77768;clip-path:polygon(0 0,100% 0,50% 100%)}.interlude-bunting i:nth-child(even){background:#80b6a0}
.interlude-sofa{position:absolute;left:12%;bottom:39px;width:66%;height:57px;border:5px solid #6e9c87;border-radius:8px 8px 2px 2px;background:linear-gradient(transparent 62%,#639780 63% 70%,transparent 71%),#a2c5ac;box-shadow:0 6px #967857}
.interlude-rug{position:absolute;bottom:7px;left:18%;width:63%;height:32px;background:#e5c4ab;border:4px solid #be7d69}
.birthday-interlude-art .interlude-cast{position:absolute;left:50%;bottom:28px;width:158px;height:108px;transform:translateX(-50%);z-index:2}
.birthday-interlude-art .light-pair{position:absolute;bottom:0;left:0;display:flex;gap:22px;width:158px;height:88px;transform:none}
.birthday-interlude-art .light-figure{display:block;position:relative;width:68px;height:88px;flex:none;image-rendering:pixelated;animation:none}
.interlude-hat{position:absolute;left:20px;top:6px;width:29px;height:29px;transform-origin:50% 100%;transform:rotate(-13deg);z-index:3}
.interlude-hat:before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(25deg,#d3846a 0 6px,#f1d28b 6px 10px);clip-path:polygon(50% 0,100% 100%,0 100%)}.interlude-hat b{position:absolute;top:-4px;left:11px;width:7px;height:7px;background:#f9e7b2;border-radius:50%;box-shadow:0 0 6px #ffe5a9}
.interlude-ribbon{position:absolute;left:98px;top:70px;width:60px;height:32px;z-index:3;transform-origin:center top;transform:rotate(12deg)}
.played .interlude-hat{animation:interlude-hat-straighten 1.8s ease-in-out 1 both}
.played .interlude-ribbon{animation:interlude-ribbon-settle 2.4s ease-out 1 both}
.interlude-table{position:absolute;bottom:9px;left:calc(50% - 40px);width:80px;height:15px;background:#b3916b;border-top:4px solid #e3c79e;z-index:3;display:flex;justify-content:space-evenly}
.interlude-table i{position:relative;top:-12px;width:12px;height:10px;background:#f5e9d0;border-bottom:2px solid #d0ad82}
@keyframes interlude-hat-straighten{0%,25%{transform:rotate(-13deg)}60%{transform:translateY(-4px) rotate(3deg)}100%{transform:rotate(0)}}
@keyframes interlude-ribbon-settle{0%,15%{transform:translate(0,0) rotate(12deg)}55%{transform:translate(-46px,-21px) rotate(-6deg)}83%{transform:translate(-94px,-14px) rotate(-3deg)}100%{transform:translate(-94px,-11px) rotate(0)}}
@media(prefers-reduced-motion:reduce){.played .interlude-hat,.played .interlude-ribbon{animation:none}.played .interlude-hat{transform:rotate(0)}.played .interlude-ribbon{transform:translate(-94px,-11px) rotate(0)}}

.cinematic .stage-door{height:270px;background:linear-gradient(#273944 0 56%,#827867 57%,#c1ad88 100%);border:5px solid #84765f;border-bottom:8px solid #645b50}
.cinematic .stage-door:before,.cinematic .stage-door:after{width:24%;background:repeating-linear-gradient(90deg,#3a4b51 0 12px,#43545a 12px 20px);border-color:#8d8069;transform:none;z-index:1}
.cinematic .door-light{inset:0 15% 0;background:radial-gradient(ellipse at 50% 12%,#fff5c9 0,#eddaa5 22%,#cbb88988 55%,transparent 80%);opacity:.45}
.cinematic .final-beam{position:absolute;top:-25px;width:60%;height:290px;background:linear-gradient(#fff5c9bb,#fff2c222,transparent);clip-path:polygon(46% 0,54% 0,100% 100%,0 100%);opacity:.4}
.cinematic .beam-left{left:0;transform:rotate(18deg)}.cinematic .beam-right{right:0;transform:rotate(-18deg)}
.cinematic .final-walkers{bottom:45px;width:148px;height:88px;opacity:1;transform:translateX(-50%);transition:none}
.cinematic .stage-outfit-pair{display:flex;gap:12px;align-items:end;padding:0;margin:0;width:148px;height:88px;min-width:0;box-shadow:none}
.cinematic .stage-figure{display:block;width:68px;height:88px;flex:none;image-rendering:pixelated}
.final-scene-caption{position:absolute;left:8px;right:8px;bottom:12px;z-index:3;height:24px;color:#fff6da;font-size:12px;text-shadow:0 1px 3px #273944}
.final-scene-caption span{position:absolute;inset:0;opacity:0}
.walking-film .final-walkers{animation:final-enter-light 7s ease-in-out both var(--final-elapsed)}
.walking-film .door-light{animation:final-light-rise 7s ease-in-out both var(--final-elapsed)}
.walking-film .final-scene-caption span:nth-child(1){animation:final-caption-one 7s linear both var(--final-elapsed)}
.walking-film .final-scene-caption span:nth-child(2){animation:final-caption-two 7s linear both var(--final-elapsed)}
.walking-film .final-scene-caption span:nth-child(3){animation:final-caption-three 7s linear both var(--final-elapsed)}
.cinematic.arrived .final-walkers{transform:translate(-50%,-80px) scale(.7);opacity:.08}
.cinematic.arrived .door-light{opacity:1}.cinematic.arrived .final-scene-caption span:last-child{opacity:1}
@keyframes final-enter-light{0%,43%{transform:translate(-50%,0) scale(1);opacity:1}65%{transform:translate(-50%,-30px) scale(.9);opacity:1}100%{transform:translate(-50%,-80px) scale(.7);opacity:.08}}
@keyframes final-light-rise{0%,35%{opacity:.45}85%,100%{opacity:1}}
@keyframes final-caption-one{0%,22%{opacity:1}30%,100%{opacity:0}}
@keyframes final-caption-two{0%,24%{opacity:0}30%,56%{opacity:1}65%,100%{opacity:0}}
@keyframes final-caption-three{0%,65%{opacity:0}80%,100%{opacity:1}}

.final-reflection{position:relative;isolation:isolate;overflow:hidden;padding:32px 18px 20px;min-height:290px;text-align:center;color:#f9edce;background:linear-gradient(155deg,#283c48,#47565b 60%,#726754);border:1px solid #b8a780}
.reflection-glow{position:absolute;inset:-30% -20% 0;z-index:-1;background:radial-gradient(ellipse at 50% 0,#f7dfa487,transparent 65%);pointer-events:none}
.reflection-words{font-size:15px;line-height:2.15;letter-spacing:.06em}.reflection-words p{margin:0 0 24px}.reflection-words p:last-child{color:#fff2c9}.reflection-opening{padding:35px 0;font-size:19px;line-height:2.4}
.final-reflection .action{margin-top:12px;background:#f3e6ca;color:#665441;border-color:#b6a381;box-shadow:none}
@media(prefers-reduced-motion:reduce){.walking-film .final-walkers,.walking-film .stage-figure{animation:none}}
.reflection-2{display:flex;flex-direction:column;justify-content:center;min-height:330px}
.reflection-last-line{font-size:19px;line-height:2.3!important;letter-spacing:.08em;padding:22px 0;animation:reflection-last-appear 2.6s ease-out both}
.reflection-2 .action{animation:reflection-last-appear 1s 2s ease-out both}
@keyframes reflection-last-appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
/* The maker signature belongs to the house nameplate. */
.home-nameplate{flex:1;min-width:0;align-self:center}
.brand .home-nameplate #home-name{display:block;width:100%;max-width:100%;min-height:28px}
.creator-watermark{display:flex;flex-wrap:wrap;gap:1px 7px;padding:0 0 3px;pointer-events:none;font:9px/12px system-ui,sans-serif;letter-spacing:.015em;color:#897768;font-weight:400}
.creator-watermark span{white-space:nowrap}

@media(prefers-reduced-motion:reduce){.reflection-last-line,.reflection-2 .action{animation:none}}

/* Petals belong to the patchwork performance, behind the performers. */
.rhythm-cast{position:relative;isolation:isolate;overflow:hidden}
.rhythm-cast .choreographed-actor{z-index:2}
.stage-petals{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}
.stage-petals i{position:absolute;left:var(--petal-x);top:-12px;width:var(--petal-size);height:calc(var(--petal-size) * 1.5);background:#f5c6db;border-radius:75% 15% 65% 35%;box-shadow:inset 1px 1px #ffe9ef;opacity:0;animation:stage-petal-drift var(--petal-time) linear var(--petal-delay) infinite}
@keyframes stage-petal-drift{0%{opacity:0;transform:translate(0,0) rotate(0)}12%{opacity:.8}50%{transform:translate(var(--petal-drift),90px) rotate(105deg)}85%{opacity:.65}100%{opacity:0;transform:translate(0,210px) rotate(225deg)}}
@media(prefers-reduced-motion:reduce){.stage-petals i{animation:none;opacity:.5;top:calc(var(--petal-x) * .8);transform:rotate(35deg)}}

.daily-dialogue{margin:8px 0 18px;padding:12px 14px;background:#fff9ed;border:1px solid #c9b99d;border-left:4px solid #89aa97;border-radius:4px;overflow-anchor:none}
.daily-dialogue-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#87705e;font-size:12px}.daily-dialogue-heading button{min-width:44px;min-height:44px;background:none;border:0;color:#876557;font-size:20px;cursor:pointer}.daily-dialogue-line{min-height:84px;padding:8px 12px;background:#f7e5dc;border-radius:10px}.daily-dialogue-line.han{background:#e2eee3}.daily-dialogue-line.quiet{background:transparent;color:#847560}.daily-dialogue-line b{font-size:12px}.daily-dialogue-line p{line-height:1.8;margin:6px 0}.daily-dialogue>.action{display:block;margin:10px 0 0 auto;min-height:44px}
/* Accumulating daily conversation with the existing pixel portraits. */
.daily-dialogue{padding:0;background:#fbf5e9;border:1px solid #cdbda5;border-radius:14px;overflow:hidden;box-shadow:0 4px 12px #6e59400d}
.daily-dialogue-heading{padding:4px 12px 4px 18px;background:#e5eadc;color:#657b67;font-size:14px;border-bottom:1px solid #d1d8c5}
.daily-dialogue-log{max-height:min(46dvh,380px);min-height:150px;overflow-y:auto;padding:18px 12px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#c5cdb8 transparent;box-sizing:border-box}
.daily-message{display:flex;align-items:flex-start;gap:9px;margin:0 0 18px}.daily-message.han{flex-direction:row-reverse}.daily-avatar{display:block;flex:0 0 48px;width:48px;height:48px;border-radius:12px;background-color:#ead8c7;background-repeat:no-repeat;image-rendering:pixelated;box-shadow:0 2px 0 #d0bfa8;text-align:center;line-height:48px}.han .daily-avatar{background-color:#dae5d5}
.daily-message-body{max-width:calc(100% - 68px);min-width:0}.daily-message-body b{display:block;font-size:11px;font-weight:normal;color:#8b7768;padding:0 3px 5px}.han .daily-message-body b{text-align:right;color:#738772}.daily-message-body p{line-height:1.8;margin:0;padding:10px 13px;background:#f2dfd3;border-radius:3px 13px 13px 13px;color:#655249;overflow-wrap:anywhere}.han .daily-message-body p{background:#deeadb;border-radius:13px 3px 13px 13px;color:#4f6958}.daily-stage-direction{margin:8px 20px 20px;text-align:center;color:#978b7c;font-size:12px;line-height:1.9}.daily-dialogue>.daily-continue.action{display:block;width:calc(100% - 24px);margin:0 12px 12px;min-height:44px;border-radius:7px;background:#f4eddf;border:1px solid #d8cbb7;color:#7c7865}.daily-dialogue button:focus-visible,.daily-dialogue-log:focus-visible{outline:2px solid #759986;outline-offset:-2px}
