:root{--ink:#554451;--muted:#8b7569;--paper:#fcf2df;--plum:#82687d;--body:'Be Vietnam Pro',sans-serif;--serif:'Lora',Georgia,serif;--pixel:'Pixelify Sans',monospace}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none}body{background:#e5d4bb;color:var(--ink);font:13px/1.8 var(--body)}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid #9d6f83;outline-offset:4px}button:disabled{cursor:default}button:active:not(:disabled){translate:0 1px}[hidden]{display:none!important}.game-shell{position:relative;isolation:isolate;width:100%;height:100dvh;overflow:hidden;background:radial-gradient(ellipse at 49% 43%,#f4e9d5 8%,#e7d8bf 60%,#d7c3a7 100%)}.game-shell:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:2;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23795040' filter='url(%23n)' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}.game-hud{position:absolute;top:max(22px,env(safe-area-inset-top));left:max(27px,env(safe-area-inset-left));right:max(27px,env(safe-area-inset-right));z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:none}.game-hud>*{pointer-events:auto}.room-name{display:flex;gap:10px;align-items:center;color:#826c68}.room-name svg{width:23px;height:23px;fill:none;stroke:#927b79;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.room-name>div>span{font:21px var(--serif);letter-spacing:-.8px}.room-name small{display:block;font-size:8px;margin-top:4px;color:#9a8575;letter-spacing:.3px}.hud-date{position:absolute;left:50%;transform:translateX(-50%);top:6px;font:14px var(--pixel);letter-spacing:4px;color:#ac8e78;pointer-events:none}.hud-tools{display:flex;gap:9px;align-items:center}.tool-button{width:35px;height:35px;border:1px solid #bca18788;border-bottom:2px solid #b69a8088;background:#f8ecda88;border-radius:5px;display:grid;place-items:center;font:18px var(--serif);color:#8e7274;box-shadow:0 2px 0 #ac92721a}.tool-button:hover{background:#fff4e0}.tool-button[aria-pressed=true]{color:#7c6956;background:#f1e3c7}.tool-button svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.6;fill:none}.room-canvas-wrap{position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);width:min(128vw,calc((100dvh - 140px)*1.65),1500px);aspect-ratio:640/460;z-index:1}.room-canvas-wrap canvas{display:block;width:100%;height:100%;image-rendering:pixelated;filter:drop-shadow(0 22px 18px #63472c24) saturate(1.12) contrast(1.035)}.room-hotspots{position:absolute;inset:0;pointer-events:none}.hotspot{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;width:62px;height:54px;border:1px dashed transparent;background:transparent;border-radius:6px;display:grid;place-items:center;outline-offset:2px!important}.hotspot:hover,.hotspot:focus-visible{background:#fff5d72b;border-color:#f6eac888}.hotspot .sparkle{position:absolute;top:0;right:7px;font-size:13px;line-height:1;color:#ffedb8;text-shadow:0 1px #987346;animation:glint 2.5s ease-in-out infinite;pointer-events:none}.hotspot .hotspot-name{position:absolute;left:50%;top:-20px;transform:translateX(-50%);white-space:nowrap;max-width:220px;opacity:0;pointer-events:none;padding:3px 8px;background:#fcf2df;border:1px solid #c7ab8f;border-radius:3px;font-size:9px;color:#796251;transition:opacity .12s}.hotspot:hover .hotspot-name,.hotspot:focus-visible .hotspot-name{opacity:1}.hotspot[data-action=letter] .sparkle{font-size:20px;top:4px}.game-signature{position:absolute;right:27px;bottom:15px;font:10px var(--pixel);letter-spacing:.5px;color:#b6997f;z-index:3;pointer-events:none}.dialogue-dock{position:absolute;bottom:max(28px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(690px,calc(100% - 48px));z-index:9;display:flex;align-items:center;gap:22px;padding:17px 21px;background:#fff3dfeF;border:1px solid #b79a7e;border-radius:5px;box-shadow:0 3px 0 #b99b7a50,0 8px 30px #74523210}.dialogue-dock:before{content:'';position:absolute;inset:4px;border:1px solid #dfc8a744;border-radius:2px;pointer-events:none}.dialogue-copy{min-width:0;flex:1}.mission-line{display:flex;gap:14px;align-items:center;justify-content:space-between;font-size:7px;letter-spacing:1.7px;color:#ab8b70;margin-bottom:4px}.mission-line span:last-child{font-family:var(--pixel);font-size:10px;letter-spacing:2px}.dialogue-dock h1,.dialogue-dock h2{font:normal 16px/1.6 var(--serif);margin:0;color:#765e68}.dialogue-dock p{font-size:10px;line-height:1.8;color:#927861;margin:5px 0 0}.next-button{flex-shrink:0;border:1px solid #9c8080;border-bottom:2px solid #947174;border-radius:3px;background:#a18591;color:#fff8e9;font-size:10px;padding:9px 13px;white-space:nowrap;min-height:40px}.next-button:hover{background:#947282}.chapter-label{font-size:8px;letter-spacing:1.9px;color:#a18170;font-weight:500}.entry-dialog{position:fixed;left:50%;bottom:max(33px,env(safe-area-inset-bottom));top:auto;right:auto;transform:translateX(-50%);margin:0;width:min(430px,calc(100% - 40px));border:1px solid #b69a80;border-radius:5px;background:#fff2dfeF;color:var(--ink);padding:22px 27px 18px;text-align:center;box-shadow:0 4px 0 #b4957350,0 12px 40px #72553715;overflow:visible}.entry-dialog:before{content:'';position:absolute;inset:5px;border:1px solid #e4cdb144;border-radius:2px;pointer-events:none}.entry-dialog::backdrop{background:#594c4008}.entry-dialog h2{font:normal 23px/1.4 var(--serif);margin:7px 0 16px;color:#795e6b}.players{display:flex;gap:13px;position:relative}.player-card{display:flex;align-items:center;justify-content:center;gap:11px;width:50%;padding:10px 12px;background:#eee7d5;border:1px solid #b5ae96;border-bottom:3px solid #aaa58f;border-radius:4px;text-align:left;transition:background .15s;min-height:58px}.player-card:nth-child(2){background:#eee0e4;border-color:#c1a9b5;border-bottom-color:#b59aa7}.player-card:hover{background:#f6f0dd}.player-card:nth-child(2):hover{background:#f7e9ed}.player-card canvas{width:31px;height:31px;image-rendering:pixelated;flex-shrink:0}.player-card>span:first-of-type{font-size:12px}.player-card>span:last-child{font-size:14px;color:#a19182}.quiet-note{font-size:9px!important;line-height:1.9!important;color:#a28a76!important;text-align:center;margin:11px 0 0}.paper-dialog{color:var(--ink);width:min(440px,calc(100% - 32px));border:1px solid #b39780;border-radius:4px;box-shadow:4px 5px 0 #9474562b,0 20px 80px #4b3b492b;background:var(--paper);padding:30px;text-align:center;max-height:calc(100dvh - 44px);overflow:auto}.paper-dialog:before{content:'';height:13px;width:60px;position:absolute;top:0;left:calc(50% - 30px);background:#dbc49e66;transform:rotate(-3deg)}.paper-dialog::backdrop{background:#4e3f4e60;backdrop-filter:blur(2px)}.dialog-close{position:absolute;right:8px;top:6px;border:0;background:none;padding:6px 8px;font-size:23px;color:#a68c82;line-height:1}.paper-heart{display:block;font:35px var(--serif);color:#bc8e98;margin:15px 0 6px}.paper-dialog h2{font:normal 24px/1.5 var(--serif);margin:10px 0 17px}.paper-dialog>p{font:14px/1.95 var(--serif);white-space:pre-line;color:#927a70;margin:0 0 23px}.primary-button{width:100%;border:1px solid #766276;border-bottom:3px solid #5e4d61;background:#88718a;color:#fff9f0;border-radius:4px;padding:10px 12px;min-height:43px;font-size:11px;line-height:1.8}.primary-button:hover{background:#78617d}.secondary-button{display:block;width:100%;padding:10px 5px;border:1px solid #cfbdb2;border-radius:4px;background:transparent;margin-top:10px;font-size:10px;color:#927c78;min-height:40px}.secondary-button:hover{background:#f0e6da}.text-button{display:block;margin:13px auto 0;font-size:9px;color:#aa9587;background:none;border:0;text-decoration:underline;text-underline-offset:4px;padding:6px}.help-dialog>p{font-family:var(--body);font-size:11px;text-align:left;margin-bottom:13px}.help-dialog>h2{font-size:23px}.room-actions{display:flex;flex-direction:column;gap:9px;margin:17px 0 18px}.object-button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:#f5ead8;border:1px solid #d3baa1;border-radius:4px;padding:8px 11px;font-size:10px;min-height:47px}.object-button:hover{background:#eee0c9}.object-button[aria-pressed=true]{background:#e9e6d0;border-color:#b3b79e}.object-button canvas{width:30px;height:30px;image-rendering:pixelated;flex-shrink:0}.object-button>span{flex:1;line-height:1.7}.object-button small{display:block;color:#aa968b;font-size:8px}.object-button .object-state{font-size:15px;flex:0;color:#9b9d83}.object-button:disabled{opacity:.48}.shelf-instruction{padding:10px;background:#f0e6da;border:1px dashed #cbb8a6;border-radius:3px;font-size:10px;line-height:2;margin:0}.letter-dialog{width:min(490px,calc(100% - 32px));padding:30px 35px;text-align:left}.letter-to{font:italic 13px var(--serif);color:#a17c85;margin:23px 0 9px}.letter-dialog h2{font-size:27px;line-height:1.5;margin-bottom:20px;color:#745e74}.letter-copy{font:14px/1.95 var(--serif);color:#8d776e}.letter-copy p{margin:0 0 14px}.date-ticket{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #dbccbb;border-bottom:1px solid #dbccbb;padding:14px 0;gap:16px;margin:20px 0}.date-ticket small{font-size:7px;letter-spacing:1.5px;color:#ab9181;display:block}.date-ticket strong{font-size:10px;display:block;font-weight:500;margin-top:7px;line-height:1.8}.date-ticket span{display:block;font-size:8px;color:#a38b7e;margin-top:3px}.reply-text{font-family:var(--body)!important;font-size:11px!important;background:#f1e5d1;border:1px dashed #ceb493;padding:15px;user-select:all}.noscript{position:fixed;inset:30%;background:#fff5d9;z-index:20;padding:25px}
@keyframes glint{0%,100%{opacity:.5;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}
@media(max-width:700px){.game-hud{top:max(18px,env(safe-area-inset-top));left:18px;right:18px}.room-name>div>span{font-size:19px}.room-name svg{width:19px;height:19px}.room-name small{font-size:7px;max-width:155px}.hud-date{display:none}.hud-tools{gap:6px}.tool-button{width:31px;height:31px;font-size:16px}.tool-button svg{width:14px;height:14px}.room-canvas-wrap{top:43%;width:min(128vw,calc((100dvh - 150px)*1.65))}.hotspot{width:46px;height:44px}.hotspot .sparkle{font-size:11px;right:4px}.hotspot .hotspot-name{font-size:8px}.game-signature{right:18px;bottom:9px;font-size:8px}.entry-dialog{bottom:max(30px,env(safe-area-inset-bottom));padding:20px 20px 17px;width:min(380px,calc(100% - 32px))}.entry-dialog h2{font-size:21px;margin-bottom:15px}.players{gap:10px}.player-card{padding:10px 8px;gap:7px;min-height:57px}.player-card canvas{width:28px;height:28px}.player-card>span:first-of-type{font-size:11px}.player-card>span:last-child{font-size:12px}.quiet-note{font-size:8px!important}.dialogue-dock{bottom:max(28px,env(safe-area-inset-bottom));width:calc(100% - 30px);padding:15px 16px;gap:11px;align-items:flex-end}.mission-line{font-size:6px;letter-spacing:1.3px}.mission-line span:last-child{font-size:9px}.dialogue-dock h1,.dialogue-dock h2{font-size:14px}.dialogue-dock p{font-size:9px;line-height:1.9}.next-button{font-size:9px;padding:8px 9px;min-height:38px;white-space:normal;max-width:104px}.paper-dialog{padding:28px 24px;max-height:calc(100dvh - 36px)}.paper-dialog h2{font-size:22px}.paper-dialog>p{font-size:13px}.letter-dialog{padding:28px 25px}.letter-dialog h2{font-size:26px}.letter-copy{font-size:14px}.chapter-label{font-size:7px;letter-spacing:1.5px}}
@media(max-height:550px) and (min-aspect-ratio:1/1){.game-hud{top:12px;left:18px;right:18px}.room-name>div>span{font-size:17px}.room-name small{display:none}.tool-button{width:29px;height:29px}.room-canvas-wrap{top:43%;width:min(110vw,calc((100dvh - 90px)*1.65))}.entry-dialog{left:auto;right:22px;bottom:20px;transform:none;width:285px;padding:16px 18px 13px}.entry-dialog h2{font-size:19px;margin:5px 0 10px}.entry-dialog .chapter-label{font-size:6px}.entry-dialog .quiet-note{font-size:7px!important;margin-top:8px}.player-card{min-height:48px;padding:7px;gap:6px}.player-card canvas{width:24px;height:24px}.player-card>span:first-of-type{font-size:10px}.dialogue-dock{padding:10px 16px;bottom:17px;width:min(610px,calc(100% - 50px))}.dialogue-dock h1,.dialogue-dock h2{font-size:13px}.dialogue-dock p{font-size:8px;margin-top:2px}.mission-line{margin-bottom:1px}.game-signature{bottom:3px;font-size:7px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Generated room and registered transparent cartons, first playable asset set. */
.game-shell{background:#ffead6}.room-canvas-wrap{top:44%;width:min(100vw,calc((100dvh - 165px)*1.5),1500px);aspect-ratio:3/2}.room-canvas-wrap canvas{filter:drop-shadow(0 15px 18px #63472c18)}.player-card:disabled{opacity:.45;cursor:wait}.hotspot[data-action=unpack]{width:110px;height:105px;cursor:grab;touch-action:none}.hotspot[data-action=unpack]:active{cursor:grabbing}.hotspot[data-action=unpack] .sparkle{top:5px;right:14px}
@media(max-width:700px){.room-canvas-wrap{top:43%;width:min(100vw,calc((100dvh - 150px)*1.5))}.hotspot[data-action=unpack]{width:58px;height:65px}.hotspot[data-action=unpack] .sparkle{right:6px;top:2px}}
@media(max-height:550px) and (min-aspect-ratio:1/1){.room-canvas-wrap{top:42%;width:min(100vw,calc((100dvh - 80px)*1.5))}.hotspot[data-action=unpack]{width:66px;height:60px}}
