@font-face{font-family:Syne;src:url(fonts/Syne-latin.woff2) format("woff2");font-weight:400 800;font-display:swap}
@font-face{font-family:GhostSignature;src:url(fonts/Caveat-wght.ttf) format("truetype");font-weight:400 700;font-display:swap}
@font-face{font-family:GhostThai;src:url(fonts/Itim-Regular.ttf) format("truetype");font-display:swap}
@font-face{font-family:GhostHand;src:url(fonts/PostOfficeLetters-Regular.woff2) format('woff2');font-display:swap}
@font-face{font-family:Manrope;src:url(fonts/Manrope-latin.woff2) format('woff2');font-display:swap}
:root{color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#111623;color:#eee3cf;font:13px Manrope,Arial,sans-serif}
[hidden]{display:none!important}#world{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none;cursor:grab}#world.is-dragging{cursor:grabbing}#world.is-target{cursor:pointer}
header{position:fixed;top:calc(15px + env(safe-area-inset-top));left:18px;z-index:2;pointer-events:none;font-size:11px;letter-spacing:.35px;color:#eee9df;text-shadow:0 1px 5px #0007}.brand{display:flex;align-items:center;gap:9px;font:700 12px/1 Syne,sans-serif;letter-spacing:.02em}.brand img{display:block;height:12px;width:auto;filter:brightness(0) invert(1);opacity:.92}
/* Keyboard/screen-reader equivalents remain available for the physical scene controls. */
.accessible-controls{position:fixed!important;left:0!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;clip-path:inset(50%);white-space:nowrap;pointer-events:none!important}.accessible-controls *{pointer-events:none!important}
#veil{display:none}dialog{display:none}#worldLoading{position:fixed;z-index:10;inset:0;background:radial-gradient(ellipse at 50% 60%,#242939,#111623 65%);display:grid;align-content:center;justify-items:center;color:#e4ceaa;font-size:11px;letter-spacing:1px}.loading-moon{font-family:Georgia,serif;font-size:70px;line-height:1.2;animation:moon-breathe 2.5s ease-in-out infinite}
html[data-review-boot=true] body{visibility:hidden}@keyframes moon-breathe{50%{opacity:.45;transform:translateY(-4px)}}@media(prefers-reduced-motion:reduce){.loading-moon{animation:none}}

/* The typed sign-off is a native input on the 3D paper, so phone keyboards work. */
.fabric-sign-input{position:fixed;z-index:3;border:0;outline:0;background:transparent;color:#392e25;text-align:center;font:600 28px GhostSignature,GhostThai,sans-serif;border-radius:0;padding:3px;touch-action:manipulation;caret-color:#392e25}.fabric-sign-input::placeholder{color:#76634f;opacity:.85}
body:not([data-stage="home"]) > header{display:none}

/* Keepsake title is a real field on the paper, with the same phone keyboard as signing. */
.keepsake-name-input{position:fixed;z-index:3;border:0;border-bottom:1px solid #79654e55;outline:0;background:transparent;color:#392e25;text-align:center;font:400 22px GhostHand,GhostThai,sans-serif;border-radius:0;padding:3px 10px;touch-action:manipulation;caret-color:#392e25}.keepsake-name-input::placeholder{color:#685c4c;opacity:.9}.keepsake-name-input:focus{border-bottom-color:#496c59;background:#fff8e526}

/* A compact game pad for walking; floor selection belongs to the house itself. */
#finishConfirm[open]{display:block;box-sizing:border-box;width:min(350px,calc(100vw - 32px));padding:25px 22px 22px;color:#392e25;background:#d9cfb6;border:8px solid #53402d;box-shadow:0 15px 70px #0008;font:19px/1.5 GhostHand,GhostThai,sans-serif}#finishConfirm::backdrop{background:#0c141bb8;backdrop-filter:blur(3px)}#finishConfirm h2{font:29px/1.2 GhostHand,GhostThai,sans-serif;margin:0 0 12px}#finishConfirm p{margin:0 0 22px}.finish-actions{display:flex;gap:10px}.finish-actions button{flex:1;min-height:48px;padding:9px;color:#eee2c9;background:#44352a;border:1px solid #786148;font:18px GhostHand,GhostThai,sans-serif;cursor:pointer}.finish-actions #cancelFinish{background:transparent;color:#44352a}.finish-actions button:focus-visible{outline:2px solid #598174;outline-offset:3px}
#partyGamepad{position:fixed;inset:0;z-index:3;pointer-events:none}#partyGamepad button{pointer-events:auto;touch-action:none;color:#eee2c9;font:18px GhostHand,GhostThai,sans-serif;background:#32271fe8;border:1px solid #b29969aa;box-shadow:inset 0 0 0 3px #705b3e4d,0 3px 12px #0005;cursor:pointer}#partyGamepad button:focus-visible{outline:2px solid #eee2c9;outline-offset:3px}#partyGamepad button:disabled{opacity:.5}
#partyMove{position:absolute;left:max(18px,env(safe-area-inset-left));bottom:max(22px,env(safe-area-inset-bottom));width:112px;height:112px;border-radius:50%;background:#2d342fcc!important;user-select:none;-webkit-user-select:none}#partyMove .pad-arrows{font:90px/1 Manrope,sans-serif;color:#a58f655c;position:absolute;inset:8px;pointer-events:none}.pad-thumb{position:absolute;width:48px;height:48px;left:31px;top:31px;border-radius:50%;background:radial-gradient(circle at 35% 25%,#d5c298,#8a7955);border:2px solid #e1cc9959;box-shadow:0 3px 8px #0007;pointer-events:none}
.walk-actions{position:absolute;right:max(18px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));display:grid;justify-items:end;gap:9px}.walk-actions button{min-height:44px;padding:9px 16px;border-radius:12px}.stair-actions{display:grid;gap:9px;justify-items:end}@media(max-height:500px){#partyMove{width:90px;height:90px;bottom:14px}.pad-thumb{left:20px;top:20px}.walk-actions{bottom:14px;gap:5px}.stair-actions{gap:5px}}

#aboutDialog[open]{display:block;width:min(410px,calc(100vw - 36px));max-height:82dvh;overflow:auto;box-sizing:border-box;padding:26px;background:#d8cfb7;color:#423426;border:6px solid #51402b;font-family:GhostHand,sans-serif;font-size:18px;line-height:1.4}#aboutDialog::backdrop{background:#10100fcc;backdrop-filter:blur(5px)}#aboutDialog .close{float:right;min-width:44px;min-height:44px}#aboutDialog p{margin:16px 0}
