/* Rooms keep the interaction inside a physical setting. */
#contentDialog[data-room]{width:min(1120px,94vw);max-height:94dvh;padding:18px 22px 16px}
#contentDialog[data-room] h2{font-size:25px;margin:6px 0 12px}
#contentDialog[data-room] .unlock-note{display:none}
#contentDialog[data-room] .dialog-top{font-size:10px}
.room-stage{position:relative;height:clamp(370px,57dvh,560px);overflow:hidden;border:2px solid #879075;background:repeating-linear-gradient(90deg,transparent 0 90px,#75907418 91px 93px),#35534c;isolation:isolate;box-shadow:inset 0 0 50px #0c292c66}
.room-stage::after{content:'';position:absolute;inset:72% 0 0;z-index:-1;background:repeating-linear-gradient(0deg,transparent 0 23px,#b1a07855 24px 26px),repeating-linear-gradient(90deg,#596449 0 120px,#7e7b52 121px 123px);transform:perspective(300px) rotateX(17deg);transform-origin:top}
.room-sign{position:absolute;top:15px;left:22px;color:#dacc9e;font:11px monospace;letter-spacing:2px;z-index:3}
.room-actions{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;padding-top:12px;font-size:11px;color:#c2cdb9}
.room-link,.room-actions button,.room-back{border:1px solid #92a075;background:#2e5146;padding:8px 12px;color:#f1dfaa;text-decoration:none;cursor:pointer;font:12px Arial}
.room-actions button:disabled{opacity:.35;cursor:default}
.room-window{position:absolute;left:7%;top:16%;width:16%;height:37%;border:9px solid #b5a172;box-shadow:0 0 0 4px #405647,20px 12px 60px #d8ca6333;background:linear-gradient(90deg,transparent 47%,#ad9c6f 48% 53%,transparent 54%),linear-gradient(0deg,transparent 47%,#ad9c6f 48% 53%,transparent 54%),radial-gradient(circle at 70% 23%,#efd891 0 9%,transparent 10%),linear-gradient(140deg,#234952,#749375)}
.room-photo-wall{position:absolute;left:31%;right:7%;top:15%;height:36%;display:flex;align-items:center;gap:6%}
.room-frame{padding:6px;border:5px solid #b19b6b;background:#213d39;width:29%;box-shadow:5px 7px 0 #1b393666;transform:rotate(-3deg);cursor:pointer;color:#e7d8ad}
.room-frame:nth-child(2){transform:rotate(3deg);align-self:start}.room-frame img{width:100%;height:90px;object-fit:cover;display:block}.room-frame span{display:block;font:10px Arial;padding:5px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.room-sofa{position:absolute;left:28%;bottom:18%;width:41%;height:23%;background:#7a8763;border:8px solid #a3a479;border-radius:15px 15px 5px 5px;box-shadow:0 10px 0 #273d33,inset 0 -25px 0 #596e53}
.room-sofa::after{content:'';position:absolute;inset:6px 32%;border-left:2px solid #c1b58055;border-right:2px solid #c1b58055}
.room-rug{position:absolute;left:23%;right:19%;height:13%;bottom:7%;background:#947458;border:6px double #b39a6a;transform:skewX(-15deg)}
.room-table{position:absolute;left:39%;bottom:10%;width:25%;height:12%;background:#aa9166;border:5px solid #c4ab7a;box-shadow:0 12px 0 #46513e}
.room-table-book{position:absolute;left:40%;bottom:14%;width:23%;padding:10px 6px;border:2px solid #d3c48f;background:#425f4b;color:#f1dfaa;transform:rotate(-4deg);font:12px Arial;cursor:pointer}
.room-lamp{position:absolute;right:12%;bottom:18%;height:32%;width:5px;background:#ac996b;box-shadow:0 0 70px 25px #e4cd7333}.room-lamp::before{content:'';position:absolute;top:0;left:-24px;width:52px;height:37px;background:#d5bf7e;clip-path:polygon(20% 0,80% 0,100% 100%,0 100%)}
.room-detail{position:absolute;inset:42px 5% 15px;background:#173638fa;border:1px solid #c6b57f;z-index:8;padding:18px 24px;overflow:auto;box-shadow:0 10px 35px #061d29aa}
.room-detail[hidden]{display:none}.room-detail h3{font:25px WorldWenKai,serif;color:#e8ce91;margin:16px 0 12px}.room-detail>img{max-width:100%;max-height:210px;object-fit:contain;display:block;margin:12px auto}.room-detail>p{font-size:13px!important}.room-detail small{display:block;font-size:10px;margin-bottom:14px}
.room-departures{position:absolute;top:16%;left:7%;right:7%;max-height:56%;overflow:auto;background:#162f30;border:9px solid #8f906d;padding:16px 20px;box-shadow:0 12px 0 #273e36}.room-departures>small{letter-spacing:3px;color:#c9bf91}.room-tickets{display:flex;flex-wrap:wrap;gap:13px;padding-top:16px}.room-ticket{flex:1 0 110px;max-width:155px;border:1px dashed #d7c58a;background:#c3b07c;color:#27463b;padding:12px;cursor:pointer;box-shadow:3px 5px 0 #68745a;transform:rotate(-1deg)}.room-ticket strong{display:block;font:30px Georgia;margin:10px}.room-ticket small{font:8px monospace;color:#304d3c!important}.room-ticket span{font-size:10px}.room-ticket:hover{transform:translateY(-4px) rotate(1deg)}
.room-bench{position:absolute;bottom:14%;left:19%;right:19%;height:10%;background:repeating-linear-gradient(#a39b6a 0 9px,#576449 10px 13px);border:4px solid #acaa7f;box-shadow:0 11px 0 #293e35}.room-station-clock{position:absolute;right:4%;top:2%;width:40px;height:40px;border:5px solid #9c9d74;border-radius:50%;background:#e0cd96}.room-station-clock::after{content:'┘';position:absolute;left:8px;top:1px;color:#39543e;font-size:23px}
.room-year-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:15px 0}.room-mini-photo{background:#2c4d40;border:1px solid #8d9d71;color:#e4d8b2;padding:6px;cursor:pointer}.room-mini-photo img{width:100%;height:95px;object-fit:cover}.room-mini-photo span{display:block;font-size:10px}
.room-case{background:#314e44}.room-suitcase{position:absolute;inset:12% 8% 6%;perspective:1000px}.room-case-lid{height:28%;border:10px solid #ab8c5b;border-bottom:4px solid #dec38d;border-radius:14px 14px 0 0;background:repeating-linear-gradient(45deg,#725c43 0 8px,#7c664b 9px 10px);transform:rotateX(-12deg);transform-origin:bottom;display:flex;align-items:center;justify-content:space-around;color:#ecdcad;box-shadow:0 -6px 0 #4c4e3b}.room-case-lid span{border:2px solid #c7b284;padding:8px 14px;font:18px Georgia}.room-case-lid small{font-size:11px}.room-case-tray{height:72%;display:grid;grid-template-columns:repeat(4,1fr);gap:15px;align-items:center;padding:19px;background:#657562;border:10px solid #ab8c5b;box-shadow:0 10px 0 #504b36;border-radius:0 0 12px 12px}.room-polaroid{padding:7px;background:#dbd2ae;border:0;transform:rotate(-5deg);cursor:pointer;box-shadow:5px 6px 0 #243d3560;min-width:0}.room-polaroid:nth-child(even){transform:rotate(5deg)}.room-polaroid img{width:100%;height:110px;object-fit:cover}.room-polaroid span{display:block;color:#314b3b;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:8px 0}.room-pagination{display:flex;gap:14px;align-items:center}
.room-mail{background:#5c6650}.room-letter{position:absolute;inset:14% 13% 8%;padding:22px 32px;background:repeating-linear-gradient(#e2d6ae 0 30px,#c4bc9233 31px 32px),#e2d6ae;color:#385443;transform:rotate(-1deg);overflow:auto;box-shadow:9px 10px 0 #273c3577}.room-letter small{color:#6b7958!important;font-size:9px;letter-spacing:3px}.room-letter h3{font:23px WorldWenKai,serif}.room-letter-entry{display:block;background:none;border:0;border-bottom:1px solid #929b7433;width:100%;text-align:left;color:#355640;padding:13px 0;cursor:pointer;font-size:13px}
.room-cinema{background:repeating-linear-gradient(90deg,#4b4640 0 15px,#3e3c37 16px 30px)}.room-screen{position:absolute;top:12%;left:13%;right:13%;height:57%;background:#091e22;border:9px solid #aba786;box-shadow:0 0 60px #d0cf9566;display:flex;align-items:center;justify-content:center;flex-direction:column;overflow:hidden}.room-screen img,.room-screen video{width:100%;height:100%;min-height:0;object-fit:contain}.room-screen p{position:absolute;bottom:18px;background:#0b252be6;padding:7px;font-size:11px!important}.room-screen>span{position:absolute;top:8px;left:10px;font-size:10px;background:#0b252bc0;padding:5px 9px}.room-reels{position:absolute;left:5%;right:5%;bottom:15%;display:flex;gap:10px;overflow:auto;padding:7px}.room-reel{flex-shrink:0;border:1px dashed #b09b6c;background:#233f3e;color:#e6d49f;font:11px Arial;padding:10px;cursor:pointer}.room-seats{position:absolute;bottom:0;left:0;right:0;height:11%;background:repeating-linear-gradient(90deg,transparent 0 4%,#895e4e 4% 15%,#674d41 15% 16%);border-top:7px solid #182f2e}
.room-tree{background:repeating-linear-gradient(0deg,#58704f 0 31px,#405b44 32px 34px)}.room-tree-window{position:absolute;right:7%;top:13%;width:18%;height:29%;border:8px solid #b1a270;background:radial-gradient(circle at 70% 30%,#edd598 0 8%,transparent 9%),#315b5d;box-shadow:0 0 0 4px #2c493a}.room-growth-shelf{position:absolute;left:7%;right:7%;top:24%;bottom:16%;display:flex;align-items:end;gap:14px;padding:0 12px 13px;border-bottom:12px solid #b1a06f;overflow:auto}.room-growth-book{flex:1 0 110px;max-width:175px;height:80%;background:#927f68;border:2px solid #c1ac7d;border-left:12px solid #ab946b;color:#f1dfb4;cursor:pointer;display:flex;flex-direction:column;justify-content:space-around;align-items:center;padding:13px 8px;box-shadow:7px 4px 0 #243d3580;transform:rotate(-3deg)}.room-growth-book:nth-child(even){height:90%;background:#567d6a;transform:rotate(2deg)}.room-growth-book strong{font:23px WorldWenKai,serif}.room-growth-book span{font-size:11px;line-height:1.8}.room-growth-book small{color:#e6d4a0!important;font:10px monospace}.room-growth-sign{position:absolute;bottom:5%;left:8%;font:15px WorldWenKai,serif;color:#e4d296}
@media(max-width:760px){#contentDialog[data-room]{padding:14px 10px;width:96vw}#contentDialog[data-room] h2{font-size:22px;margin-top:7px}.room-stage{height:440px}.room-sign{font-size:8px;letter-spacing:0;left:12px}.room-photo-wall{left:26%;right:4%;gap:7px}.room-frame{border-width:3px;padding:3px}.room-frame img{height:65px}.room-frame span{font-size:8px}.room-window{left:5%;width:16%;height:27%;border-width:5px}.room-sofa{left:20%;width:60%}.room-table{left:27%;width:45%}.room-table-book{left:29%;width:42%;font-size:10px}.room-detail{inset:39px 3% 10px;padding:12px}.room-year-photos{grid-template-columns:repeat(2,1fr)}.room-suitcase{inset:10% 3% 4%}.room-case-tray{grid-template-columns:repeat(2,1fr);gap:10px;padding:12px}.room-polaroid img{height:75px}.room-polaroid span{padding:4px 0;font-size:9px}.room-case-lid{border-width:7px}.room-departures{left:4%;right:4%;padding:12px;max-height:56%}.room-ticket{flex-basis:100px;padding:7px}.room-ticket strong{font-size:25px;margin:5px}.room-letter{inset:13% 6% 6%;padding:20px}.room-screen{left:5%;right:5%;height:55%}.room-actions{font-size:10px;gap:10px}.room-growth-shelf{gap:12px;left:4%;right:4%}.room-growth-book{flex-basis:105px}.room-growth-book strong{font-size:20px}.room-reels{bottom:14%}}

.room-growth-shelf{scroll-snap-type:x proximity}.room-growth-book{scroll-snap-align:start}
/* Scroll-scrubbed time travel: no autonomous playback or animation loop. */
.time-tunnel{position:absolute;inset:0;z-index:15;background:#09272e;overflow:hidden;color:#ecdbac}
.tunnel-scene{position:absolute;inset:0 0 102px;overflow:hidden;perspective:620px;touch-action:none;background:radial-gradient(ellipse at 50% 46%,#5d877466 0,#133f4533 24%,#071e29 70%)}
.tunnel-scene::after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 80px 25px #041b26b0;background:linear-gradient(0deg,#09272e,transparent 20% 85%,#09272e88)}
.tunnel-depth{position:absolute;inset:0;transform-style:preserve-3d;perspective:620px}
.tunnel-ring{position:absolute;left:50%;top:48%;width:78%;height:74%;border:2px solid #b8be8270;border-radius:18%;box-shadow:0 0 18px #a8b77735,inset 0 0 14px #87b9b025;transform-style:preserve-3d}
.tunnel-ring:nth-child(3n){border-color:#e5ca9670;border-radius:40%;box-shadow:0 0 20px #e5ca9633}
.tunnel-memory{position:absolute;width:150px;padding:7px;background:#cbbd8a;box-shadow:0 6px 20px #021923;backface-visibility:hidden}
.tunnel-memory img{width:100%;height:90px;object-fit:cover;display:block}.tunnel-memory small{display:block;text-align:center;color:#284e42!important;font:9px Arial;margin-top:6px}
.tunnel-destination{position:absolute;left:50%;top:48%;text-align:center;pointer-events:none;text-shadow:0 2px 25px #001b27;white-space:nowrap}
.tunnel-destination small{display:block;font:9px monospace;letter-spacing:3px;color:#dfcfa3!important}.tunnel-destination strong{font:clamp(52px,8vw,96px)/1.25 Georgia;letter-spacing:7px;color:#f4dba1;display:block}.tunnel-destination span{font-size:10px;color:#b8caba}
.tunnel-toolbar{position:absolute;bottom:0;left:0;right:0;min-height:102px;padding:13px 23px;background:#123637;display:grid;grid-template-columns:1fr auto;gap:7px 20px;border-top:1px solid #788968}
.tunnel-label{font-size:11px;color:#c8d1b5;grid-column:1;display:grid;gap:10px}.tunnel-label input{width:100%;accent-color:#e4cb8b;cursor:ew-resize;height:22px;margin:0;touch-action:pan-x}
.tunnel-status{font:10px monospace;color:#c7c9a0;grid-column:1}
.tunnel-arrive{grid-column:2;grid-row:1/3;align-self:center;border:1px solid #c1b17c;background:#cfb67e;color:#1d433c;padding:12px 15px;font-size:12px;cursor:pointer}.tunnel-arrive:disabled{opacity:.45;cursor:default}
.tunnel-back,.tunnel-skip{position:absolute;top:13px;z-index:2;background:#0c2a32c9;color:#d8cda5;border:1px solid #71826b;padding:7px 10px;font:10px Arial;cursor:pointer}.tunnel-back{left:12px}.tunnel-skip{right:12px}
.time-tunnel[data-reduced=true] .tunnel-depth{display:none}
@media(max-width:760px){.tunnel-toolbar{padding:12px;gap:5px 10px}.tunnel-arrive{font-size:10px;padding:10px 8px}.tunnel-memory{width:100px}.tunnel-memory img{height:65px}.tunnel-destination strong{font-size:56px}.tunnel-destination small{letter-spacing:1px;font-size:8px}.tunnel-label{font-size:10px}.tunnel-ring{width:90%;height:65%}}

/* Each interior introduces the object that holds its memories. */
html[data-world-motion=on] .room-home .room-photo-wall{animation:room-settle .65s both}
html[data-world-motion=on] .room-case-lid{transform-origin:center bottom;animation:case-unfold .75s cubic-bezier(.2,.7,.2,1) both}
html[data-world-motion=on] .room-polaroid{animation:photo-unfold .65s both}
html[data-world-motion=on] .room-polaroid:nth-child(2){animation-delay:.08s}
html[data-world-motion=on] .room-polaroid:nth-child(3){animation-delay:.16s}
html[data-world-motion=on] .room-polaroid:nth-child(4){animation-delay:.24s}
html[data-world-motion=on] .room-ticket{animation:ticket-arrive .5s both}
html[data-world-motion=on] .room-ticket:nth-child(2n){animation-delay:.08s}
html[data-world-motion=on] .room-ticket:nth-child(3n){animation-delay:.16s}
html[data-world-motion=on] .room-detail:not([hidden]){animation:room-settle .35s both}
html[data-world-motion=on] .room-letter{animation:photo-unfold .6s both}
html[data-world-motion=on] .room-screen{animation:projector-on .65s both}
html[data-world-motion=on] .room-tree-window{animation:room-settle .7s both}
.room-frame,.room-polaroid,.room-ticket,.room-reel,.room-mini-photo{transition:filter .2s,box-shadow .2s}
:is(.room-frame,.room-polaroid,.room-ticket,.room-reel,.room-mini-photo):is(:hover,:focus-visible){filter:brightness(1.12);box-shadow:0 0 0 2px #dfca91,0 8px 22px #061e2b66}
@keyframes room-settle{from{opacity:0;translate:0 12px;scale:.97}to{opacity:1;translate:0 0;scale:1}}
@keyframes case-unfold{from{opacity:0;rotate:x -75deg}to{opacity:1;rotate:x 0deg}}
@keyframes photo-unfold{from{opacity:0;translate:0 20px;rotate:y -22deg}to{opacity:1;translate:0 0;rotate:y 0deg}}
@keyframes ticket-arrive{from{opacity:0;translate:0 -12px}to{opacity:1;translate:0 0}}
@keyframes projector-on{from{opacity:0;filter:brightness(.3)}to{opacity:1;filter:brightness(1)}}
html[data-world-motion=on] .room-growth-book{animation:photo-unfold .55s both}
.room-growth-book{transition:filter .2s,box-shadow .2s}
.room-growth-book:is(:hover,:focus-visible){filter:brightness(1.1);box-shadow:0 0 0 2px #dfca91}

/* A long reel drifting across the family's night sky. */
.room-stage.galaxy-cinema{height:clamp(430px,65dvh,640px);background:radial-gradient(ellipse at 65% 35%,#45747366,transparent 55%),linear-gradient(145deg,#0a202d,#173b43 60%,#102d32);isolation:isolate;overflow:hidden}
.galaxy-cinema::after{display:none}.galaxy-cinema>.room-sign{display:none}
.galaxy-stars{position:absolute;inset:-30px;pointer-events:none;z-index:-1}.galaxy-stars i{position:absolute;width:2px;height:2px;border-radius:50%;background:#e2ddb5;box-shadow:0 0 7px #c8d7b5;opacity:.6}
html[data-world-motion=on] .galaxy-stars i:nth-child(3n){animation:galaxy-twinkle 5s var(--delay) ease-in-out infinite}
.galaxy-ribbon{position:absolute;inset:0;width:115%;height:100%;z-index:-1;pointer-events:none}
.galaxy-intro{padding:25px 30px 0}.galaxy-intro>small{font:9px monospace;letter-spacing:3px;color:#c6c69b}.galaxy-intro h3{font:clamp(20px,2.4vw,30px) WenKai,serif;color:#f0dba9;margin:9px 0}.galaxy-intro p{font-size:11px!important;color:#aec5b9!important;margin:0}
.galaxy-browser{position:absolute;inset:118px 0 68px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#9baa8055 transparent;overscroll-behavior-x:contain;scroll-snap-type:x proximity}
.galaxy-track{display:flex;align-items:center;gap:22px;width:max-content;min-width:100%;height:100%;padding:22px 45px;perspective:1000px}
.galaxy-frame{position:relative;flex:0 0 248px;width:248px;display:flex;flex-direction:column;align-items:stretch;text-align:left;padding:27px 10px 24px;background:#102c32;border:1px solid #a1a47988;color:#e8d8ad;box-shadow:0 12px 36px #06141f99;transform:translateY(var(--bend)) rotate(var(--angle)) rotateY(-9deg);transition:transform .25s,box-shadow .25s,filter .25s;scroll-snap-align:center}
.galaxy-frame:before,.galaxy-frame:after{content:'';position:absolute;left:8px;right:8px;height:8px;background:repeating-linear-gradient(90deg,#c5d0a680 0 9px,transparent 9px 19px);border-radius:2px}.galaxy-frame:before{top:8px}.galaxy-frame:after{bottom:8px}
.galaxy-frame img{width:100%;height:125px;object-fit:cover;display:block;filter:saturate(.75)}
.galaxy-frame-number{font:8px monospace;color:#a4b393;margin-bottom:6px;letter-spacing:2px}.galaxy-frame strong{font:16px WenKai,serif;margin:9px 0 4px}.galaxy-frame>small:last-child{font:9px Arial;color:#aebaa0}.galaxy-play{position:absolute;top:90px;left:calc(50% - 17px);display:grid;place-items:center;width:34px;height:34px;border:1px solid #f3d99b;background:#0d2c36a6;border-radius:50%;color:#ffdd99;font-size:20px}
.galaxy-frame:is(:hover,:focus-visible){transform:translateY(calc(var(--bend) - 9px)) rotate(0deg) rotateY(0deg) scale(1.025);box-shadow:0 0 0 1px #e4cc8a,0 16px 35px #0008;filter:brightness(1.1);z-index:2}
.galaxy-controls{position:absolute;bottom:15px;left:25px;right:25px;display:flex;align-items:center;gap:14px}.galaxy-controls button,.galaxy-back{border:1px solid #9ca376;color:#dfd0a5;background:#14383b;padding:9px 12px;font:11px Arial;cursor:pointer}.galaxy-controls button:disabled{opacity:.35;cursor:default}.galaxy-count{font:11px monospace;color:#e1c990}.galaxy-controls>small{margin-left:auto;font-size:10px;color:#a3b7ab}
.galaxy-empty{padding:30px;color:#c1cbb2!important;max-width:500px;white-space:normal}
.galaxy-viewer{position:absolute;inset:0;padding:18px 28px;background:#071b27f5;z-index:8;display:flex;flex-direction:column;gap:10px;align-items:center}.galaxy-viewer[hidden]{display:none}.galaxy-back{align-self:flex-start}.galaxy-viewer h3{font:20px WenKai,serif;color:#e8d3a1;margin:0}.galaxy-media{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;background:#030c13}.galaxy-media img,.galaxy-media video{width:100%;height:100%;min-height:0;object-fit:contain}.galaxy-media p{margin:8px;flex-shrink:0;color:#d1c8a3!important;font-size:11px!important}.galaxy-viewer>small{font-size:9px;color:#a8b8a7}
html[data-world-motion=on] .galaxy-viewer:not([hidden]){animation:galaxy-project .35s both}.galaxy-cinema.watching .galaxy-stars i{animation-play-state:paused!important}
@keyframes galaxy-twinkle{50%{opacity:.15;scale:.65}}
@keyframes galaxy-project{from{opacity:0;scale:.92}to{opacity:1;scale:1}}
html[data-world-motion=off] .galaxy-frame{transform:none}
@media(prefers-reduced-motion:reduce){.galaxy-frame{transform:none!important}}
@media(max-width:760px){.room-stage.galaxy-cinema{height:510px}.galaxy-intro{padding:22px 16px 0}.galaxy-intro>small{letter-spacing:1px;font-size:8px}.galaxy-intro h3{font-size:20px}.galaxy-browser{top:112px;bottom:92px}.galaxy-track{padding:24px;gap:18px}.galaxy-frame{flex-basis:220px;width:220px}.galaxy-controls{left:15px;right:15px;flex-wrap:wrap;gap:12px}.galaxy-controls>small{width:100%;margin:0;font-size:9px}.galaxy-viewer{padding:15px}.galaxy-viewer h3{font-size:17px}}
.galaxy-track{padding-inline:var(--edge,24px)}
.galaxy-cinema.watching>.galaxy-intro{visibility:hidden}
