:root{--background:#15130f;--foreground:#e9ddc8;--paper:#e9ddc8;--ink:#3b2b21;--ease-room:cubic-bezier(.22,.61,.36,1);color-scheme:dark}
*{box-sizing:border-box}html,body,#root{margin:0;width:100%;height:100%;background:var(--background)}body{color:var(--foreground);font:16px 'PingFang SC','Microsoft YaHei',sans-serif;-webkit-font-smoothing:antialiased;-webkit-touch-callout:none}button,input,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.5}button:focus,a:focus,summary:focus{outline:2px solid #e5bd7e;outline-offset:4px}button,input{border:0}button{background:transparent;color:inherit}p,h1,h2,h3{margin-top:0}img{max-width:100%}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
[data-slot=dialog-overlay]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:rgba(0,0,0,.1)}[data-slot=dialog-content]{position:fixed;top:50%;left:50%;z-index:50;transform:translate(-50%,-50%);width:calc(100% - 32px);max-width:480px;padding:16px;outline:none;border-radius:24px;background:#231e18;color:#e9ddc8}::selection{color:#fff0d8;background:#75453f}

.experience { position: relative; min-height: 100vh; min-height: 100svh; height: 100vh; height: 100svh; overflow: hidden; background: #14120e; }
.room-viewport { position: absolute; top: 0; right: 0; bottom: 0; left: 0; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; overscroll-behavior-x: contain; touch-action: pan-x; opacity: 0; transition: opacity 2.8s ease; }
.room-viewport::-webkit-scrollbar { display: none; }
.has-entered .room-viewport { opacity: 1; }
.room-scene { position: relative; width: max(100%, 150vh); width: 100%; width: max(100%, 150svh); height: 100vh; height: 100svh; margin-left: auto; margin-right: auto; }
.room-art { position: absolute; width: 100%; height: 100%; object-fit: fill; user-select: none; -webkit-user-drag: none; }
.frame-photo { position: absolute; left: 5.97%; top: 12.6%; width: 5.9%; height: 12.9%; object-fit: cover; transform: skewY(3deg); filter: sepia(.2) brightness(.64); }
.lamp-bloom { position: absolute; left: 78%; top: 17%; width: 20%; height: 37%; background: radial-gradient(ellipse, rgba(247,183,87,0.098) 0%, transparent 70%); mix-blend-mode: screen; pointer-events: none; animation: lamplight 7s ease-in-out infinite alternate; }
.room-vignette { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: linear-gradient(180deg, rgba(18,17,13,0.800) 0%, transparent 29%, transparent 80%, rgba(18,17,13,0.878) 100%); pointer-events: none; }
.room-title { position: absolute; left: 4.3%; top: 5.5%; pointer-events: none; opacity: 0; transform: translateY(7px); transition: opacity 2s ease 1.8s, transform 2s ease 1.8s; text-shadow: 0 2px 24px rgba(0,0,0,0.667); }
.has-entered .room-title { opacity: 1; transform: none; }
.eyebrow { font-size: 11px; font-weight: 500; letter-spacing: .25em; margin: 0 0 16px; color: #d2be9e; }
.room-title h1 { font-family: Georgia, 'Songti SC', serif; font-weight: 400; font-size:  2.8vw; font-size: clamp(26px, 2.8vw, 43px); line-height: 1.15; letter-spacing: -.045em; margin: 0; }
.room-title h1 em { font-weight: 400; }
.room-subtitle { font-family: Georgia, 'Songti SC', serif; font-size: 14px; font-style: italic; color: #c7b59b; margin: 16px 0 0; }
.room-footer { position: absolute; bottom: 30px; left: 4.3%; right: 4.3%; display: flex; justify-content: space-between; font-size: 10px; letter-spacing: .21em; color: #d2be9e; opacity: 0; transition: opacity 2s 2s; pointer-events: none; }
.has-entered .room-footer { opacity: .75; }
.sound-control { z-index: 70; position: absolute; top: 28px; right: 3.5%; border: 0; padding: 12px; background: transparent; display: flex; align-items: center; grid-gap: 9px; gap: 9px; color: #d7c6ac; min-height: 44px; }
.sound-control span { font-size: 10px; letter-spacing: .14em; }
.opening-call { z-index: 60; position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; background: radial-gradient(ellipse at 50% 55%, rgba(41,39,30,0.400), transparent 50%), #12120f; transition: opacity 1.6s; }
.opening-call.answered { opacity: 0; pointer-events: none; }
.incoming-label { margin: 0 0 27px; color: #a69c83; font-size: 11px; letter-spacing: .3em; }
.opening-call h2 { font: 400  12vw/1 Georgia, serif; font: 400 clamp(65px, 12vw, 98px)/1 Georgia, serif; letter-spacing: -.065em; margin: 0; color: #e9ddc8; }
.opening-call h2 span { color: #aa8657; }
.call-subtitle { font: italic 17px Georgia, 'Songti SC', serif; color: #b5ab95; margin: 22px 0 0; }
.call-line { height: 53px; width: 1px; background: linear-gradient(transparent,#696045,transparent); margin: 38px 0 31px; }
.answer-button { height: 65px; width: 65px; border-radius: 50%; border: 1px solid rgba(115,129,106,0.400); color: #e5e6d2; background: #46513d; display: grid; place-items: center; box-shadow: 0 0 0 10px rgba(101,114,80,0.031), 0 0 0 21px rgba(101,114,80,0.020); transition: transform .25s, background .25s; }
.answer-button:hover { background: #59694d; transform: scale(1.06); }
.answer-label { font-size: 14px; letter-spacing: .2em; margin-top: 21px; color: #bdb39d; }
.opening-footnote { position: absolute; bottom: 50px; bottom: max(50px, env(safe-area-inset-bottom)); font-size: 12px; letter-spacing: .12em; color: #a59a83; }
@keyframes lamplight { from { opacity: .5; } to { opacity: .9; } }
@media (min-aspect-ratio: 3/2) { .room-scene { width: 100%; height: calc(100vw * 2 / 3); top: 50%; transform: translateY(-50%); } }
@media (max-width: 650px) {
  .room-scene { width: 146vh; width: 146svh; height: 97.33vh; height: 97.33svh; top: 4vh; top: 4svh; }
  .room-title { left: 27px; top: 42px; top: max(42px, env(safe-area-inset-top)); }
  .room-title h1 { font-size: 31px; }
  .eyebrow { font-size: 10px; letter-spacing: .2em; margin-bottom: 13px; }
  .room-subtitle { font-size: 13px; margin-top: 12px; }
  .sound-control { top: auto; bottom: 21px; right: 19px; }
  .sound-control span { display: none; }
  .room-footer { left: 27px; bottom: 35px; right: 82px; font-size: 9px; }
  .room-vignette { background: linear-gradient(180deg,rgba(18,17,13,0.878) 0%,rgba(18,17,13,0.302) 24%,transparent 45%,transparent 83%,rgba(18,17,13,0.878) 100%); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0ms !important; scroll-behavior: auto !important; }
}
.room-object { position: absolute; z-index: 4; border: 0; background: transparent; border-radius: 10px; transition: background .25s, box-shadow .25s; }
.room-object:hover { background: rgba(237,189,104,0.063); box-shadow: 0 0 20px rgba(237,189,104,0.043); }
.room-object:focus-visible { outline: 1px solid #e9c38a; outline-offset: 3px; background: rgba(237,189,104,0.094); }
.table-photo { position: absolute; left: 35.3%; top: 74.65%; width: 4.2%; height: 1.85%; object-fit: cover; transform: rotate(-8deg) skewX(23deg); filter: brightness(.66) saturate(.8); pointer-events: none; }
.room-whisper { position: absolute; left: 50%; bottom: 16%; transform: translateX(-50%); text-align: center; font: 21px/1.6 'Songti SC',serif; color: #f1d9b1; padding: 16px 25px; text-shadow: 0 2px 20px #000; background: radial-gradient(ellipse,rgba(24,18,12,0.851),transparent 72%); white-space: pre-line; pointer-events: none; animation: whisperIn 4.5s both; z-index: 10; }
.magic-light { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: radial-gradient(circle 150px at var(--light-x,50%) var(--light-y,55%),rgba(255,208,138,0.133),transparent); mix-blend-mode: screen; pointer-events: none; z-index: 8; }
.magic-inscription { position: absolute; left: 52%; top: 40%; font: italic 15px Georgia,serif; color: #eec78d; opacity: 0; transition: opacity 1.5s; transform: rotate(-2deg); }
.has-magic .magic-inscription { opacity: .8; }
.has-magic .lamp-bloom { opacity: 1; background: radial-gradient(ellipse,rgba(247,183,87,0.149),transparent 70%); }
.lamp-dim .room-art { filter: brightness(.7); }
.room-art { transition: filter 1.2s ease; }
.nox-button { position: absolute; right: 5%; top: 85px; background: none; border: 0; color: #d9b27a; font: italic 20px Georgia,serif; min-height: 44px; padding: 10px; z-index: 9; }
@keyframes whisperIn { 0%,100% { opacity: 0; } 15%,80% { opacity: 1; } }
@media(max-width:650px) {
 .room-object { min-width: 44px; min-height: 44px; }
 .nox-button { top: auto; bottom: 70px; right: 20px; }
 .room-whisper { font-size: 19px; width: 85%; bottom: 19%; }
}
/* The desktop is a miniature stage; portrait screens are a movable window. */
@media (min-width: 651px) {
 .room-viewport { top: 102px; right: 3%; bottom: 32px; left: 3%; display: flex; justify-content: center; align-items: center; overflow: hidden; }
 .room-scene { width: min(100%, calc((100vh - 134px) * 1.5)); width: 100%; width: min(100%, calc((100svh - 134px) * 1.5)); height: auto; aspect-ratio: 3 / 2; top: auto; transform: none; flex: none; }
 .room-title { top: 29px; }
 .room-title h1 { font-size: 2.2vw; font-size: clamp(25px,2.2vw,34px); }
 .room-subtitle { margin-top: 9px; font-size: 13px; }
 .room-title .eyebrow { font-size: 9px; margin-bottom: 9px; }
 .room-vignette { background: linear-gradient(180deg,rgba(20,18,14,0.439) 0%,transparent 29%,transparent 81%,rgba(20,18,14,0.878) 100%); }
 .room-art { mask-image: linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent); }
}
@media (max-width:650px) {
 .room-viewport { top: 0; right: 0; bottom: 0; left: 0; display: block; overflow-x: auto; }
 .room-scene { width: max(880px,108vh); width: 880px; width: max(880px,108svh); height: max(586.67px,72vh); height: 586.67px; height: max(586.67px,72svh); top: 18vh; top: 18svh; transform: none; }
 .room-vignette { background: linear-gradient(180deg,#14120e 0%,rgba(20,18,14,0.667) 16%,transparent 34%,transparent 87%,rgba(20,18,14,0.878) 100%); }
}
@media(max-width:650px) and (max-height:760px) {
 .room-scene { width: 840px; height: 560px; top: 18vh; top: 18svh; }
}
@media(max-height:550px) and (min-width:651px) {
 .room-viewport { top: 15px; right: 12%; bottom: 15px; left: 12%; }
 .room-scene { width: min(100%,calc((100vh - 30px)*1.5)); width: 100%; width: min(100%,calc((100svh - 30px)*1.5)); }
 .room-title { top: 24px; left: 20px; }.room-title h1 { font-size: 22px; }.room-subtitle { display: none; }
 .room-footer { bottom: 18px; }.sound-control { top: 14px; right: 15px; }
}
.room-scene { translate: var(--drift-x,0px) var(--drift-y,0px); transition: translate .75s var(--ease-room); }
.elephant-life, .cat-life { position: absolute; pointer-events: none; z-index: 2; mask-image: radial-gradient(ellipse,black 55%,transparent 72%); transform-origin: center 80%; }
.elephant-life { left: 81.966%; top: 67.48%; width: 14.974%; height: 21.484%; }
.cat-life { left: 61.198%; top: 50.195%; width: 13.672%; height: 10.254%; }
.has-entered .elephant-life { animation: elephantBreathe 5s ease-in-out infinite alternate; }
.has-entered .cat-life { animation: catBreathe 4.4s ease-in-out infinite alternate; }
@keyframes elephantBreathe { from { transform: scale(1); } to { transform: scale(1.009,1.012); } }
@keyframes catBreathe { from { transform: scaleY(1); } to { transform: scaleY(1.019); } }
@media(prefers-reduced-motion:reduce) { .room-scene { translate: 0 0; }.elephant-life,.cat-life { animation: none !important; } }

[data-slot='dialog-overlay'] { background: rgba(11,10,8,0.788); backdrop-filter: blur(8px); z-index: 80; }
.memory-dialog[data-slot='dialog-content'] { z-index: 81; display: block; width: 92vw; width: min(92vw, 850px); max-width: 850px; max-height: 93vh; max-height: 93svh; padding: 42px 28px 20px; overflow-y: auto; background: transparent; border: 0; border-radius: 0; box-shadow: none; color: #e9ddc8; --tw-ring-shadow: 0 0 rgba(0,0,0,0.000); scrollbar-width: thin; }
.memory-episode[data-slot='dialog-title'] { text-align: center; font: 400 20px/1.5 Georgia, 'Songti SC', serif; color: #cdbd9e; margin: 0 28px 28px; }
.close-object { position: absolute; right: 10px; top: 0; width: 44px; height: 44px; background: transparent; border: none; color: #e4d2b3; display: grid; place-items: center; }
.episode-intro { min-height: 330px; display: flex; flex-direction: column; align-items: center; justify-content: center; animation: episodeIn 1.5s both; text-align: center; }
.episode-intro span { font-size: 10px; letter-spacing: .3em; color: #9e9075; }
.episode-intro p { font: 400  4vw/1.3 Georgia, serif; font: 400 clamp(28px, 4vw, 47px)/1.3 Georgia, serif; max-width: 520px; margin: 27px 0; }
.episode-intro i { font-size: 30px; color: #cc9c58; }
.memory-content { animation: memoryIn .7s var(--ease-room) both; }
.album-view { display: flex; flex-direction: column; align-items: center; }
.polaroid { width: 380px; width: min(380px, 76vw); height: 465px; height: min(465px, 106vw); max-height: 62vh; max-height: 62svh; perspective: 1400px; padding: 0; border: 0; background: transparent; color: var(--ink); transform: rotate(-2deg); }
.polaroid-turner { display: block; position: relative; width: 100%; height: 100%; transform-style: preserve-3d; transition: transform .85s var(--ease-room); }
.polaroid.is-flipped .polaroid-turner { transform: rotateY(180deg); }
.polaroid-front, .polaroid-back { display: flex; flex-direction: column; position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding: 17px 17px 0; background: #e7dfce; box-shadow: 0 16px 55px rgba(0,0,0,0.400); backface-visibility: hidden; -webkit-backface-visibility: hidden; }
.polaroid-front img { width: 100%; flex: 1; min-height: 0; object-fit: contain; background: #24231f; filter: saturate(.9); }
.photo-caption { font: italic 15px/1.5 Georgia, 'Songti SC', serif; min-height: 68px; display: grid; place-items: center; padding: 12px 0; }
.polaroid-back { transform: rotateY(180deg); background: repeating-linear-gradient(0deg,#e7ddc7,#e7ddc7 29px,rgba(186,168,136,0.157) 30px); justify-content: center; padding: 35px; }
.back-note { font: 22px/1.95 'Kaiti SC', STKaiti, 'Songti SC', serif; white-space: pre-line; text-align: left; }
.back-signature { position: absolute; bottom: 35px; right: 34px; font: italic 19px Georgia,serif; }
.object-controls { display: flex; justify-content: space-between; align-items: center; width: 385px; width: min(385px, 84vw); margin: 25px 0 0; }
.object-controls button, .tv-controls button { min-width: 44px; min-height: 44px; padding: 10px 14px; display: flex; align-items: center; justify-content: center; grid-gap: 8px; gap: 8px; border: 0; background: transparent; color: #d3c1a2; font-size: 14px; }
.object-controls button:hover, .tv-controls button:hover { color: #fff1d2; }
.memory-afterword { font-size: 15px; color: #bdad92; text-align: center; line-height: 1.9; margin: 12px 0; }
.phone-memory { text-align: center; max-width: 600px; margin: 20px auto 0; padding: 0 20px; }
.call-cities { display: flex; align-items: center; justify-content: center; grid-gap: 20px; gap: 20px; color: #978a72; font-size: 11px; letter-spacing: .2em; }
.call-cities i { width: 82px; height: 1px; background: rgba(148,129,103,0.333); }
.phone-memory time { display: block; font: 18px Georgia,serif; color: #baa78a; margin: 42px 0 25px; }
.phone-fragment { min-height: 155px; animation: memoryIn .6s both; }
.phone-fragment h3 { font: 400 4vw/1.6 'Songti SC', Georgia, serif; font: 400 clamp(27px,4vw,39px)/1.6 'Songti SC', Georgia, serif; letter-spacing: .02em; white-space: pre-line; margin: 0; }
.phone-fragment p { font-size: 14px; color: #a2947d; margin: 24px 0; }
.text-action { border: 0; background: transparent; color: #cfb78e; display: flex; align-items: center; justify-content: center; grid-gap: 16px; gap: 16px; font-size: 14px; min-height: 44px; padding: 12px 14px; margin: 25px auto 0; }
.text-action:hover { color: #f4dfbb; }
.call-footnote { display: flex; justify-content: center; align-items: center; grid-gap: 9px; gap: 9px; color: #938670; font-size: 12px; margin: 45px 0 5px; }
.calendar-memory { display: flex; flex-direction: column; align-items: center; }
.calendar-paper { position: relative; background: #dfd1b5; width: 335px; width: min(335px, 76vw); color: #4d3c2b; padding: 30px 25px 20px; text-align: center; box-shadow: 0 25px 60px rgba(0,0,0,0.333), 0 4px #ae9c7f, 0 7px #786954; transform: rotate(-2deg); animation: paperIn .65s both; }
.calendar-punches { letter-spacing: 12px; color: #817057; font-size: 13px; margin: -15px 0 27px; white-space: nowrap; }
.calendar-month { font-size: 14px; letter-spacing: .22em; }
.calendar-paper strong { display: block; font: 400 136px/1.2 Georgia,serif; letter-spacing: -.08em; padding-right: 10px; }
.calendar-caption { display: block; font-size: 11px; letter-spacing: .18em; }
.calendar-stamp { display: inline-block; padding: 8px 12px; border: 2px solid #885044; color: #885044; font-size: 17px; letter-spacing: .1em; transform: rotate(-12deg); margin: 29px 0 15px; }
.actual .calendar-stamp { color: #526248; border-color: #526248; }
.calendar-paper p { font: 15px/1.8 'Songti SC',serif; }
.paper-action { min-height: 44px; background: transparent; border: none; display: flex; justify-content: center; align-items: center; grid-gap: 15px; gap: 15px; font-size: 14px; margin: 10px auto 0; color: #6c5133; }
.open-book { background: linear-gradient(90deg,#c5b391,#ebdec2 5%,#e4d5b6 98%,#c6b695); color: #443425; padding: 44px 48px 33px; width: 440px; width: min(440px,100%); min-height: 385px; margin: auto; box-shadow: -5px 2px 0 #a59476, -8px 3px 0 #7e7159, 0 20px 70px rgba(0,0,0,0.333); transform: rotate(.8deg); animation: paperIn .6s both; }
.book-imprint { text-align: center; font-size: 9px; letter-spacing: .18em; color: #8b7656; }
.open-book h3 { font: 400 4vw/1.3 Georgia,'Songti SC',serif; font: 400 clamp(26px,4vw,34px)/1.3 Georgia,'Songti SC',serif; margin: 34px 0 15px; }
.book-subtitle { font-size: 13px; color: #8c7151; }
.book-lines { margin: 37px 0; font: 16px/2 'Songti SC',serif; }
.book-lines p { margin: 5px 0; }
.book-page-number { display: block; text-align: center; font: 13px Georgia,serif; color: #937e60; }
.march-memory { display: flex; grid-gap: 25px; gap: 25px; align-items: center; justify-content: center; padding: 15px 0; }
.event-ticket { width: 310px; flex-shrink: 0; background: #d5bc75; padding: 33px 26px 23px; color: #46351f; transform: rotate(-4deg); box-shadow: 0 15px 40px rgba(0,0,0,0.333); }
.event-ticket > span { font-size: 10px; letter-spacing: .13em; }
.event-ticket h3 { font: 400 40px/1.35 'Songti SC',serif; margin: 34px 0; }
.event-ticket p { font: 16px/1.95 'Songti SC',serif; }
.ticket-footer { display: flex; justify-content: space-between; font-size: 9px; letter-spacing: .08em; border-top: 1px dashed rgba(111,84,43,0.467); padding-top: 19px; margin-top: 27px; }
.event-photo { width: 275px; height: 350px; padding: 12px 12px 0; background: #e8dec8; border: 0; transform: rotate(4deg); box-shadow: 0 15px 40px rgba(0,0,0,0.333); }
.event-photo img { height: calc(100% - 48px); width: 100%; object-fit: contain; background: #211f18; }
.event-photo span { color: #67513b; height: 48px; display: flex; align-items: center; justify-content: center; grid-gap: 15px; gap: 15px; font-size: 14px; }
.magic-memory { text-align: center; }
.magic-memory > img { width: 290px; width: min(290px,70vw); max-height: 43vh; max-height: 43svh; object-fit: contain; box-shadow: 0 10px 70px rgba(0,0,0,0.400); transform: rotate(-3deg); border: 10px solid #e1d5bb; }
.magic-memory p { font: 18px/1.85 'Songti SC',serif; }
.spell-button { background: transparent; border: 0; color: #e8bd72; padding: 12px 35px; font: italic 27px Georgia,serif; letter-spacing: .06em; text-shadow: 0 0 20px rgba(237,190,116,0.502); }
.spell-button span { font-size: 20px; padding-left: 20px; }
.tv-memory { max-width: 640px; margin: auto; }
.tv-picture { background: #111815; border: 16px solid #4a3824; border-bottom-width: 20px; outline: 2px solid #796044; border-radius: 40px / 30px; width: 100%; height: min(50vh,440px); height: 50svh; height: min(50svh,440px); box-shadow: 0 16px 80px rgba(0,0,0,0.600), inset 0 0 25px rgba(0,0,0,0.600); overflow: hidden; position: relative; }
.tv-picture img { width: 100%; height: 100%; object-fit: contain; filter: saturate(.72) contrast(.96); }
.scanlines { position: absolute; top: 0; right: 0; bottom: 0; left: 0; pointer-events: none; background: repeating-linear-gradient(0deg,transparent 0,transparent 2px,rgba(5,12,8,0.314) 3px,rgba(5,12,8,0.314) 4px); box-shadow: inset 0 0 50px rgba(0,0,0,0.667); border-radius: 26px; }
.tv-channel { position: absolute; top: 18px; left: 22px; color: #aec18b; text-shadow: 0 0 5px #5e9958; font: 13px/1.8 monospace; }
.tv-clock { position: absolute; bottom: 20px; right: 24px; font: 12px monospace; color: #bdce99; }
.has-static img { opacity: .2; filter: contrast(5) grayscale(1); }
.has-static .scanlines { background-size: 100% 3px; animation: crtStatic .07s steps(2) infinite; }
.tv-controls { display: flex; justify-content: center; grid-gap: 35px; gap: 35px; margin-top: 15px; }
@keyframes crtStatic { to { transform: translateY(2px); opacity: .4; } }
@keyframes memoryIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes paperIn { from { opacity: 0; transform: translateY(12px) rotate(2deg); } }
@keyframes episodeIn { 0% { opacity: 0; transform: translateY(5px); } 30%,80% { opacity: 1; transform: none; } 100% { opacity: 0; } }
@media(max-width:650px) {
  .memory-dialog[data-slot='dialog-content'] { width: 100%; max-width: 100%; padding: 42px 20px 16px; }
  .memory-episode[data-slot='dialog-title'] { font-size: 17px; line-height: 1.55; margin: 0 24px 23px; }
  .polaroid { max-height: 60vh; max-height: 60svh; }
  .polaroid-front { padding: 12px 12px 0; }
  .photo-caption { font-size: 13px; min-height: 60px; }
  .back-note { font-size: 19px; }
  .object-controls { margin-top: 14px; }
  .open-book { padding: 27px 27px 24px; min-height: 350px; }
  .march-memory { flex-direction: column; grid-gap: 18px; gap: 18px; padding: 0; }
  .event-ticket { width: 88%; padding: 23px; }
  .event-ticket h3 { font-size: 33px; margin: 18px 0; }
  .event-ticket p { font-size: 15px; }
  .ticket-footer { margin-top: 15px; }
  .event-photo { width: 65%; height: 28vh; height: 28svh; min-height: 190px; }
  .tv-picture { height: 48vh; height: 48svh; border-width: 10px; border-radius: 26px; }
  .phone-fragment { min-height: 180px; }
}
.memory-dialog[data-slot='dialog-content'] { border-radius:24px; }
.polaroid-front,.polaroid-back,.event-photo,.calendar-paper,.open-book,.event-ticket,.birthday-letter { border-radius:14px; }
.polaroid-front img,.event-photo img,.magic-memory>img { border-radius:8px; }
.memory-dialog button,.calendar-stamp { border-radius:14px; }

.room-candle { position: absolute; width: 2.25%; height: 5.1%; pointer-events: none; z-index: 3; filter: drop-shadow(0 0 13px rgba(239,172,98,0.667)); }
.room-candle-one { left: 47.2%; top: 50.9%; }.room-candle-two { left: 50.5%; top: 50.6%; }
.cake-glow { position: absolute; left: 39%; top: 48%; width: 24%; height: 33%; pointer-events: none; background: radial-gradient(ellipse,rgba(232,166,75,0.071),transparent 68%); mix-blend-mode: screen; transition: opacity 2s; }
.memory-lights { position: absolute; left: 45%; top: 69.4%; width: 10%; height: 1%; display: flex; align-items: center; justify-content: space-evenly; pointer-events: none; }
.memory-lights i { width: 3px; height: 3px; border-radius: 50%; background: #ffe5a6; box-shadow: 0 0 12px 5px rgba(255,182,66,0.180); opacity: 0; transition: opacity 2s; }
.memory-lights i.remembers { opacity: .8; }
.wish-dialog[data-slot='dialog-content'] { max-width: 600px; overflow: visible; }
.wish-title[data-slot='dialog-title'] { font: 400 4vw/1.4 'Songti SC',Georgia,serif; font: 400 clamp(30px,4vw,43px)/1.4 'Songti SC',Georgia,serif; text-align: center; margin: 0 0 17px; }
.wish-description[data-slot='dialog-description'] { text-align: center; font: 15px/1.8 'Songti SC',serif; color: #b6a185; }
.cake-closeup { display: block; position: relative; width: 420px; width: min(420px,82vw); aspect-ratio: 320 / 310; margin: 5px auto -30px; padding: 0; background: none; border: none; -webkit-mask-image: radial-gradient(ellipse at 50% 60%, black 34%,transparent 74%); mask-image: radial-gradient(ellipse at 50% 60%,black 34%,transparent 74%); }
.cake-closeup svg { width: 100%; height: 100%; filter: brightness(.78); }
.wish-flame { position: absolute; width: 12%; height: 24%; top: 11.6%; }.wish-flame-one { left: 34.9%; }.wish-flame-two { left: 51.1%; top: 11%; }
.wish-actions { text-align: center; position: relative; z-index: 2; }
.wish-actions .text-action { margin-top: 0; }
.tap-to-blow { border: 0; background: transparent; color: #a69981; min-height: 44px; padding: 10px; font-size: 13px; }
.birthday-darkness { position: fixed; z-index: 120; top: 0; right: 0; bottom: 0; left: 0; background: #020202; }
.experience.is-wishing .room-art { filter: brightness(.3); }
.experience.is-relighting .room-art { animation: roomRelight 3.7s ease both; }
.experience.is-relighting .lamp-bloom { animation: lampRelight 3.7s ease both; }
.relight-pool { position: absolute; border-radius: 50%; background: radial-gradient(ellipse,rgba(255,204,128,0.176),transparent 70%); pointer-events: none; opacity: 0; mix-blend-mode: screen; }
.is-relighting .relight-pool { animation: lightReturns 2.1s ease both; animation-delay: var(--delay,0s); }
.letter-object { position: absolute; left: 52%; top: 77.5%; width: 6.8%; height: 4%; background: #d8c19d; color: #795b3b; font: italic 14px Georgia,serif; border: 1px solid #a38e6a; box-shadow: 1px 3px 6px rgba(0,0,0,0.400); transform: rotate(-8deg); z-index: 5; }
.letter-object::after { content: ''; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: linear-gradient(24deg,transparent 49%,rgba(131,104,70,0.200) 50%,transparent 51%); pointer-events: none; }
.letter-dialog[data-slot='dialog-content'] { max-width: 710px; padding: 40px 20px 12px; }
.birthday-letter { background: #e4d6ba; color: #493726; padding: 36px 53px 25px; box-shadow: 0 15px 100px rgba(0,0,0,0.400); transform: rotate(-.5deg); }
.letter-heading { display: flex; justify-content: space-between; grid-gap: 15px; gap: 15px; font-size: 9px; color: #856f51; letter-spacing: .1em; border-bottom: 1px solid rgba(158,135,99,0.196); padding-bottom: 23px; }
.letter-body { font: 16px/2.1 'Songti SC',STSong,Georgia,serif; margin-top: 29px; }
.letter-body p { margin: 0 0 19px; }
.letter-body p:first-child { font-size: 23px; }
.letter-signature { text-align: right; font: italic 27px Georgia,serif; margin: 5px 5px 30px; }
.letter-ending { padding-top: 25px; border-top: 1px solid rgba(158,135,99,0.196); text-align: center; }
.letter-ending h2 { font: 400 30px/1.3 Georgia,serif; margin: 0 0 12px; }
.letter-ending p { font: italic 14px Georgia,serif; margin: 0 0 15px; }
.letter-ending span { display: block; font-size: 10px; color: #917858; letter-spacing: .1em; }
.letter-ending em { display: block; font: italic 25px Georgia,serif; margin: 28px 0 17px; }
@keyframes roomRelight { 0% { filter: brightness(.015); } 20% { filter: brightness(.15); } 55% { filter: brightness(.4); } 100% { filter: brightness(1); } }
@keyframes lampRelight { 0%,25% { opacity: 0; } 100% { opacity: 1; } }
@keyframes lightReturns { 0% { opacity: 0; } 60% { opacity: 1; } 100% { opacity: .5; } }
@media(max-width:650px) { .birthday-letter { padding: 30px 26px 23px; }.letter-body { font-size: 16px; line-height: 2; }.letter-heading { font-size: 9px; grid-gap: 9px; gap: 9px; }.letter-ending h2 { font-size: 26px; }.wish-dialog[data-slot='dialog-content'] { padding-top: 45px; } }
body:has(.wish-dialog) [data-slot='dialog-overlay'] { background:rgba(17,21,13,0.125);backdrop-filter:none; }
.wish-dialog[data-slot='dialog-content'] { height:min(740px,88vh); height:740px; height:min(740px,88svh);width:600px;width:min(600px,96vw);padding:22px;overflow:hidden;pointer-events:none; }
.wish-dialog .wish-title { margin:10px 0; }.wish-dialog .close-object,.wish-dialog button{pointer-events:auto;}
.cake-closeup { width:420px; width:min(420px,85vw);height:45vh;height:45svh;max-height:400px;aspect-ratio:auto;mask-image:none;-webkit-mask-image:none;margin:0 auto;background:transparent;border-radius:32px; }
.wish-actions { position:absolute;bottom:15px;left:10px;right:10px;padding:10px;background:rgba(36,43,33,0.851);border:1px solid rgba(198,173,131,0.188);border-radius:22px; }
.wish-dialog .close-object { top:12px;right:12px; }.wish-actions .text-action { margin:0 auto; }
.is-wishing .room-title,.is-wishing .room-footer{opacity:0;pointer-events:none}

.is-cinematic .room-title,.is-cinematic .room-footer,.is-cinematic .sound-control{opacity:0;pointer-events:none;transition:none}

.camera-dialog[data-slot='dialog-content'] { max-width: 640px; }
.camera-session { text-align: center; }
.camera-ready { padding: 50px 15px 30px; }.camera-ready > svg { margin: 0 auto; color: #c7b08a; }
.camera-ready h3 { font: 400 28px/1.5 'Songti SC',serif; margin: 30px 0 20px; }
.camera-ready p { color: #b2a085; line-height: 2; font-size: 16px; }
.camera-live { width: 390px; width: min(390px,80vw); aspect-ratio: 1; margin: 0 auto; position: relative; background: #161914; overflow: hidden; }
.camera-live video { width: 100%; height: 100%; object-fit: cover; }
.is-mirrored { transform: scaleX(-1); }
.camera-live > span { position: absolute; left: 20px; bottom: 17px; font-size: 10px; letter-spacing: .2em; text-shadow: 0 0 5px black; }
.viewfinder-corners { position: absolute; top: 20px; right: 20px; bottom: 20px; left: 20px; border: 1px solid rgba(255,255,255,0.502); pointer-events: none; opacity: .5; }
.camera-controls { display: flex; align-items: center; justify-content: space-between; width: 300px; width: min(300px,70vw); margin: 24px auto 0; }
.camera-controls > button { min-width: 44px; min-height: 44px; border: 0; background: none; color: #cfbd9e; display: flex; align-items: center; justify-content: center; grid-gap: 8px; gap: 8px; padding: 10px; font-size: 14px; }
.camera-controls > span { width: 44px; }
.camera-controls .shutter-button { width: 62px; height: 62px; min-width: 62px; border: 2px solid #d5c5a8; border-radius: 50%; padding: 0; background: #c6b899; box-shadow: inset 0 0 0 5px #2f2a22; }
.new-polaroid { width: 360px; width: min(360px,76vw); padding: 15px 15px 0; margin: auto; background: #e9dfca; color: #544332; transform: rotate(-2deg); box-shadow: 0 20px 60px rgba(0,0,0,0.400); }
.new-polaroid img { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; }
.new-polaroid > div { padding: 17px 0 20px; }
.new-polaroid strong { display: block; font: italic 21px Georgia,serif; }.new-polaroid span { display: block; font-size: 10px; letter-spacing: .14em; margin-top: 9px; }
.is-developing { animation: printPhoto 1.1s var(--ease-room) both; }.is-developing img { animation: developPhoto 5s ease both; }
.shot-controls { width: 400px; width: min(400px,88vw); grid-gap: 8px; gap: 8px; margin-top: 22px; }.shot-controls button { font-size: 14px; }
.camera-note { min-height: 20px; font-size: 14px; color: #c3ad88; margin: 20px 0; }
.camera-privacy { font-size: 12px; color: #9d907c; line-height: 1.7; margin: 22px 0 0; }
.saved-room-photo { position: absolute; left: 41%; top: 76%; width: 5%; height: 3%; border: 3px solid #d8c9b2; border-bottom-width: 8px; object-fit: cover; transform: rotate(4deg) skewX(15deg); filter: brightness(.75); z-index: 2; }
@keyframes developPhoto { 0% { filter: brightness(1.9) grayscale(1) contrast(.1); opacity: .25; } 30% { filter: brightness(1.35) grayscale(.65) contrast(.4); opacity: .8; } 100% { filter: none; opacity: 1; } }
@keyframes printPhoto { from { transform: translateY(-35px) rotate(-2deg); opacity: 0; } }
.camera-live { border-radius:20px; }.camera-session button { border-radius:16px; }

/* Scene-sized controls stay attached to their real objects during the camera move. */
.room-scene { container-type: size; transform-origin: 0 0; translate: none; transition: transform 1.05s cubic-bezier(.22,.72,.18,1); will-change: transform; }
.room-viewport.has-focus { overflow: hidden; touch-action: none; }
.room-art { filter: brightness(var(--room-brightness,1)); }
.is-focused .room-title,.is-focused .room-footer { opacity: 0; transition: opacity .25s; }
.is-focused .room-vignette { background: linear-gradient(180deg,rgba(20,18,14,0.333),transparent 25%,transparent 65%,rgba(20,18,14,0.933)); }
.room-object { z-index: 8; }
.room-character:disabled { opacity: 1; }
.frame-insert { position:absolute; left:5.97%;top:12.6%;width:5.9%;height:12.9%; padding:0;border:0;background:none;perspective:450px;transform:skewY(3deg);z-index:3; }
.frame-turner { display:block;position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .85s cubic-bezier(.2,.7,.3,1); }
.frame-insert.flipped .frame-turner { transform:rotateY(180deg); }
.frame-front,.frame-back { position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;overflow:hidden; }
.frame-front img { width:100%;height:100%;object-fit:cover;filter:sepia(.15) brightness(.77); }
.frame-back { background:#dac79b;color:#4b3829;transform:rotateY(180deg);padding:13% 10%;display:flex;flex-direction:column;justify-content:center;font: .59cqw/1.8 'Songti SC',serif;text-align:left;box-shadow:inset 0 0 12px rgba(91,56,35,0.267); }
.frame-back small { font:italic .51cqw Georgia,serif;margin-top:15%;align-self:flex-end; }
.shelf-inserts { position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3; }
.shelf-inserts.active .book-spine { pointer-events:auto; }
.book-spine { position:absolute;display:flex;align-items:center;justify-content:space-between;flex-direction:column;border:0;border-radius:1px;padding:.23cqw .1cqw;color:#ceb987;box-shadow:inset 2px 0 3px rgba(255,255,255,0.071),inset -3px 0 3px rgba(0,0,0,0.467),1px 2px 2px rgba(0,0,0,0.533);transform-origin:center bottom;transition:transform .4s,filter .4s;filter:brightness(.69); }
.book-spine small { font: .29cqw/1.3 'Songti SC',serif;letter-spacing:.01em;max-width:95%;opacity:.85; }
.book-spine>span { writing-mode:vertical-rl;font:.53cqw/1.2 'Songti SC',serif;letter-spacing:.1em;white-space:nowrap; }
.book-spine i { font:.35cqw Georgia,serif;font-style:normal;border-top:1px solid rgba(194,165,104,0.267);width:85%;padding-top:4%; }
.book-spine.pulled,.shelf-inserts.active .book-spine:hover { transform:translateY(-9%) scale(1.04);filter:brightness(1.05); }
.tucked-bookmark { position:absolute;bottom:-9%;right:10%;height:13%;width:18%;background:#976549;clip-path:polygon(0 0,100% 0,100% 100%,50% 70%,0 100%); }
.phone-dial-perspective { position:absolute;left:8.14%;top:40.63%;width:3.24%;height:3.08%;transform:rotate(20deg);z-index:4; }
.rotary-dial { position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:#96773c;border:1px solid #ad8a45;box-shadow:0 1px 3px rgba(23,16,8,0.867),inset 0 0 2px #f2d391;touch-action:none;user-select:none; }
.rotary-dial.returning { transition:transform .72s cubic-bezier(.16,.55,.45,1); }
.dial-center { position:absolute;left:29%;top:29%;width:42%;height:42%;border-radius:50%;background:#c5a66c;border:1px solid #715123;display:grid;align-content:center;text-align:center;color:#534026;font:.39cqw/.95 Georgia,serif;pointer-events:none; }
.dial-center small { font-size:.15cqw;line-height:1.6; }
.rotary-dial button { position:absolute;transform:translate(-50%,-50%);width:17%;height:17%;padding:0;border:0;border-radius:50%;background:#302718;box-shadow:inset 0 1px 1px #0e0b09,0 .5px .5px #d3b677;color:#d9bd81;font:.33cqw/1 Georgia,serif; }
.dial-stop { position:absolute;bottom:-5%;right:12%;width:10%;height:18%;border-radius:1px;background:#9a7b4b;box-shadow:0 1px 2px #211710;pointer-events:none; }
.desk-calendar { position:absolute;left:71.16%;top:66.4%;width:4.79%;height:7.8%;padding:0;border:0;background:#bfa573;transform:rotate(8deg) skewY(2deg);z-index:3;perspective:300px;color:#483122;box-shadow:0 2px 0 #9a8053,0 4px 0 #907344; }
.calendar-bindings { position:absolute;left:0;right:0;top:-10%;font:.7cqw/.9 Georgia,serif;letter-spacing:-.09cqw;color:#463a2b;z-index:4;text-shadow:0 1px #bcaa7a; }
.calendar-sheet,.calendar-flying-sheet { position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(100deg,#dfcea9,#c1a776);padding:12% 4% 4%;display:flex;flex-direction:column;align-items:center;box-shadow:inset 0 0 5px rgba(133,98,54,0.267);backface-visibility:hidden; }
.calendar-sheet small,.calendar-flying-sheet small { font:.36cqw/1.2 Georgia,serif;letter-spacing:.055em; }
.calendar-sheet strong,.calendar-flying-sheet strong { font:2.7cqw/.95 Georgia,serif; }
.calendar-sheet span,.calendar-flying-sheet span { font:.23cqw/1.3 Georgia,serif;letter-spacing:.02em; }
.calendar-sheet b,.calendar-flying-sheet b { margin:6% 0;font:.34cqw/1.2 Georgia,serif;border:1px solid #8a5134;padding:3%;color:#85452c;transform:rotate(-8deg); }
.calendar-sheet em,.calendar-flying-sheet em { font:.29cqw/1.4 'Songti SC',serif;font-style:normal; }
.calendar-flying-sheet { transform-origin:center top;animation:calendarFlip .85s cubic-bezier(.28,.7,.32,1) both;z-index:2; }
@keyframes calendarFlip { 0%{transform:rotateX(0);filter:brightness(1)}50%{filter:brightness(.7)}100%{transform:rotateX(175deg);opacity:0} }
.live-tv { position:absolute;left:8%;top:66.3%;width:11.05%;height:14.28%;transform:skewY(-7deg);border-radius:12%/15%;overflow:hidden;background:#0d1510;z-index:2;box-shadow:inset 0 0 8px #050603,0 0 6px rgba(197,197,154,0.082); }
.live-tv img { width:100%;height:100%;object-fit:contain;filter:sepia(.15) saturate(.68) brightness(.8);animation:tvPhotoIn .7s ease; }
.live-tv:after { content:'';position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:inset 0 0 12px rgba(7,17,8,0.733);border-radius:inherit;pointer-events:none; }
.tv-scanlines { position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,0.200) 0px,rgba(0,0,0,0.200) .6px,transparent .6px,transparent 1.8px);pointer-events:none; }
.live-tv small { position:absolute;left:8%;bottom:8%;color:#cfdec4;font:.42cqw monospace;text-shadow:0 0 3px rgba(255,255,255,0.533); }
@keyframes tvPhotoIn { from{opacity:.25}to{opacity:1} }
.album-cover-photo { position:absolute;left:33.1%;top:68.8%;width:3.2%;height:1.4%;object-fit:cover;transform:skewX(-31deg) rotate(-5deg);filter:brightness(.65); }
.room-light-wash,.floor-light-pool,.desk-light-pool,.moon-light-pool,.lamp-shade-dimmer { position:absolute;pointer-events:none;z-index:6;transition:opacity .5s,background .5s; }
.room-light-wash { top:0; right:0; bottom:0; left:0;background:linear-gradient(115deg,rgba(14,21,39,0.122),rgba(6,8,7,0.267));opacity:calc(1 - var(--floor-light)*.5 - var(--desk-light)*.3); }
.floor-light-pool { top:0; right:0; bottom:0; left:0;mix-blend-mode:screen;background:radial-gradient(ellipse at 84% 31%,rgba(255,209,129,0.467),transparent 13%),radial-gradient(ellipse at 70% 61%,rgba(247,172,59,0.231),transparent 45%);opacity:var(--floor-light); }
.desk-light-pool { top:0; right:0; bottom:0; left:0;mix-blend-mode:screen;background:radial-gradient(ellipse at 7% 43%,rgba(255,227,169,0.404),transparent 19%),radial-gradient(ellipse at 18% 26%,rgba(247,202,113,0.224),transparent 26%);opacity:var(--desk-light); }
.moon-light-pool { top:0; right:0; bottom:0; left:0;mix-blend-mode:screen;background:radial-gradient(ellipse at 65% 23%,rgba(108,158,217,0.361),transparent 29%),radial-gradient(ellipse at 58% 52%,rgba(102,121,209,0.161),transparent 29%);opacity:var(--moon-light); }
.lamp-shade-dimmer { left:78%;top:21.7%;width:13.5%;height:14.5%;background:radial-gradient(ellipse,rgba(23,19,11,0.922) 33%,transparent 73%);opacity:calc(1 - var(--floor-light));mix-blend-mode:multiply; }
.room-character { position:absolute;padding:0;border:0;background:none;z-index:5;filter:brightness(var(--room-brightness));transition:filter .6s; }
.room-character svg { display:block;width:100%;height:100%;overflow:hidden;pointer-events:none; }
.room-character:focus-visible { outline:1px solid #e9c38a;outline-offset:2px; }
.sofa-cat { left:62.1%;top:49.7%;width:13%;height:12%;transform-origin:center 90%;animation:catBreathe 4.4s ease-in-out infinite alternate; }
.window-cat { left:63.8%;top:28.2%;width:8.1%;height:13.2%;transform-origin:center 90%;animation:catBreathe 6s ease-in-out infinite alternate; }
.elephant-character { transition:left 2.6s ease-in-out,top 2.6s ease-in-out,width 2.6s,height 2.6s,filter .6s;transform-origin:center 85%;animation:elephantBreathe 5s ease-in-out infinite alternate; }
.elephant-character.walking>svg { animation:elephantStep .5s ease-in-out infinite alternate; }
@keyframes elephantStep { from{transform:translateY(0) rotate(-2deg)}to{transform:translateY(-4%) rotate(2deg)} }
.elephant-head-cat { position:absolute;left:18%;top:-14%;width:67%;height:34%; }
.cake-foreground { position:absolute;left:42.1224%;top:53.5156%;width:14.7135%;height:21.1914%;z-index:3;pointer-events:none;filter:brightness(var(--room-brightness)); }
.sprite-filter-defs { position:absolute;pointer-events:none; }
.focus-ui { position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:20; }
.focus-heading { position:absolute;top:25px;left:4.3%;right:20%;display:flex;align-items:center;grid-gap:28px;gap:28px; }
.focus-heading button { min-height:44px;display:flex;align-items:center;grid-gap:9px;gap:9px;background:transparent;border:0;color:#e8d3b0;font-size:14px;padding:8px 0;pointer-events:auto; }
.focus-heading>p { margin:0;color:#a9987b;font:italic 17px Georgia,serif; }
.focus-detail { position:absolute;bottom:6%;left:50%;transform:translateX(-50%);width:650px;width:min(650px,87%);text-align:center;pointer-events:auto;animation:detailAppear 1.1s both;padding:20px 20px 8px;border-top:1px solid rgba(186,150,109,0.169);background:radial-gradient(ellipse at bottom,rgba(21,18,13,0.929),transparent 90%); }
@keyframes detailAppear { 0%,45%{opacity:0;translate:0 9px}100%{opacity:1;translate:0 0} }
.focus-detail h2 { font:400 24px/1.5 'Songti SC',serif;white-space:pre-line;margin:0;color:#e5d0ae; }
.focus-note { font:16px/1.7 'Songti SC',serif;color:#d4c1a0;margin:5px 0 14px; }
.book-author { font-size:13px;letter-spacing:.05em;color:#aa9576;margin:5px 0 10px; }
.focus-hint { color:#ae9d80;font-size:13px;line-height:1.7;margin:5px 0; }
.focus-actions { display:flex;grid-gap:18px;gap:18px;justify-content:center;align-items:center;color:#b8a88b; }
.focus-actions button,.focus-text-action { display:inline-flex;align-items:center;justify-content:center;grid-gap:9px;gap:9px;background:transparent;border:0;min-height:44px;min-width:44px;padding:8px 12px;font-size:14px;color:#e5c492; }
.focus-actions span { font:13px Georgia,serif; }
.focus-text-action { border-bottom:1px solid rgba(173,129,90,0.333); }
.dial-message { animation:messageArrive .5s ease-out; }
.dial-message time { color:#a89471;font:13px Georgia,serif;letter-spacing:.2em; }
.dial-message h2 { margin:9px 0 4px; }
.dial-message p { font:16px/1.65 'Songti SC',serif;margin:6px 0;color:#cbb393; }
@keyframes messageArrive { from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none} }
.lighting-panel { position:absolute;z-index:22;right:4%;bottom:12%;width:318px;width:min(318px,calc(100% - 42px));padding:21px 25px;background:rgba(32,27,20,0.949);border:1px solid rgba(139,106,68,0.239);box-shadow:0 16px 60px rgba(9,8,6,0.439);backdrop-filter:blur(18px);color:#e1cbaa; }
.lighting-panel header { display:flex;align-items:center;justify-content:space-between;grid-gap:15px;gap:15px;font:20px 'Songti SC',serif;margin-bottom:12px; }
.lighting-panel header button { display:grid;place-items:center;min-width:44px;min-height:44px;background:none;border:0;color:inherit; }
.light-control { margin:13px 0 23px; }
.light-control label { display:flex;justify-content:space-between;align-items:center;font-size:14px;margin-bottom:19px; }
.light-control output { font-size:12px;color:#b39b76; }
.light-control [data-slot=slider] { padding-block:8px; }
.light-control [data-slot=slider-thumb] { width:15px;height:15px;background:#e3bf86; }
.light-presets { display:flex;grid-gap:8px;gap:8px;padding-top:6px;border-top:1px solid rgba(142,114,67,0.216); }
.light-presets button { flex:1;min-height:44px;background:none;border:0;color:#c6ad85;font-size:13px; }
.cat-photos-link { position:absolute;z-index:15;bottom:13%;left:50%;transform:translateX(-50%);min-height:44px;padding:10px 18px;border:0;border-bottom:1px solid rgba(178,141,93,0.467);background:rgba(27,23,17,0.871);color:#d9bd91;font-size:14px;white-space:nowrap; }
.is-focused .room-whisper { bottom:29%;font-size:17px; }
@media(min-width:651px) { .room-viewport.has-focus { top:85px; right:3%; bottom:0; left:3%; }.has-focus .room-scene { width:min(100%,calc((100vh - 134px)*1.5)); width:100%; width:min(100%,calc((100svh - 134px)*1.5)); } }
@media(max-width:650px) {
  .focus-heading { top:20px;left:24px;right:20px;display:block; }.focus-heading>p { font-size:16px;margin:7px 0 0; }
  .focus-detail { bottom:82px; bottom:max(82px,env(safe-area-inset-bottom));padding:15px 5px 0;width:88%; }
  .focus-detail h2 { font-size:22px; }.focus-note { font-size:16px; }.focus-hint { font-size:12px; }
  .focus-actions { grid-gap:9px; gap:9px; }.focus-books .focus-detail { bottom:75px; }
  .is-focused .room-vignette { background:linear-gradient(180deg,rgba(20,18,14,0.671),transparent 23%,transparent 55%,rgba(20,18,14,0.941) 84%); }
  .lighting-panel { bottom:90px;right:21px; }.cat-photos-link { bottom:13%; }
  .phone-dial-perspective { touch-action:none; }
}
@media(max-height:620px) and (min-width:651px) {
  .room-viewport.has-focus { top:45px; right:0; bottom:0; left:0; }.focus-heading{top:5px;}.focus-heading>p{font-size:15px;}.focus-detail{bottom:12px;padding-top:9px;}.focus-detail h2{font-size:19px;}.focus-note{font-size:14px;margin:3px 0 6px;}.focus-actions button,.focus-text-action{min-height:38px;padding:4px 10px;}.focus-hint{font-size:12px;}.book-author{margin:0 0 4px;}.lighting-panel{bottom:25px;}
}
@media(prefers-reduced-motion:reduce) { .room-scene { transition:none; }.focus-detail{animation:none;}.calendar-flying-sheet{display:none;}.room-character,.room-character>svg{animation:none!important;} }
.album-label { display:flex;justify-content:space-between;width:380px;width:min(380px,76vw);margin:22px 0 0;font-size:14px;color:#d1bd9a; }
.album-label span { font:13px Georgia,serif;color:#a99270; }
.album-view .object-controls { margin-top:5px; }
.room-candle,.memory-lights { z-index:7; }
@media(max-height:650px) { .focus-detail { max-height:36vh; max-height:36svh;overflow-y:auto; }.focus-detail h2{font-size:19px;}.focus-hint{font-size:12px;} }
/* The complete 3D room replaces the photographic stage. */
.room-three-canvas { position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;opacity:0;transition:opacity 1.2s; }
.has-entered .room-three-canvas { opacity:1; }
.room-three-canvas canvas { display:block;width:100%;height:100%;touch-action:none;outline:none; }
.is-three-dimensional { background:#141913; }
.is-three-dimensional .room-vignette { background:linear-gradient(180deg,rgba(16,22,16,0.671),transparent 27%,transparent 77%,rgba(16,22,16,0.710)); }
.is-three-dimensional .room-title { z-index:5; }
.is-three-dimensional .room-title h1 { font-size:2.4vw; font-size:clamp(23px,2.4vw,35px); }
.three-hover { position:absolute;bottom:73px;left:50%;transform:translateX(-50%);font-size:13px;letter-spacing:.035em;color:#dac6a7;background:rgba(21,32,23,0.667);padding:9px 16px;border-radius:3px;pointer-events:none;white-space:nowrap; }
.three-toolbar { position:absolute;left:4.3%;bottom:72px;z-index:12;display:flex;align-items:center;grid-gap:14px;gap:14px; }
.three-toolbar>button,.three-object-menu summary { display:flex;align-items:center;grid-gap:8px;gap:8px;min-height:44px;padding:9px 12px;background:rgba(26,36,27,0.733);border:1px solid rgba(165,145,111,0.251);color:#dbc4a2;font-size:13px;border-radius:3px;cursor:pointer;list-style:none; }
.three-object-menu summary::-webkit-details-marker { display:none; }
.three-object-menu>div { position:absolute;bottom:55px;left:0;width:310px;max-height:55vh;max-height:55svh;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;background:rgba(30,40,30,0.961);border:1px solid rgba(165,145,111,0.333);padding:10px;box-shadow:0 10px 40px rgba(0,0,0,0.467); }
.three-object-menu>div button { min-height:44px;background:none;border:0;color:#e0cdae;font-size:14px;text-align:left;padding:10px; }
.three-object-menu>div button:hover { background:rgba(197,171,121,0.133); }
.three-loading,.three-error { position:absolute;z-index:30;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(22,32,24,0.929);padding:25px;color:#e7d6b9;font:18px/1.8 'Songti SC',serif;text-align:center; }
.three-error button { min-height:44px;background:#5f6b49;color:#fff3d5;border:0;padding:9px 18px;font-size:14px; }
.is-three-dimensional .focus-detail { background:rgba(20,27,20,0.871);border:1px solid rgba(179,151,102,0.200);border-radius:4px;backdrop-filter:blur(9px);bottom:5%;padding:18px; }
.is-three-dimensional .focus-heading { z-index:22; }
.is-three-dimensional .focus-heading button { background:rgba(22,32,22,0.788);padding:8px 13px;border-radius:3px; }
@media(max-width:650px){
 .is-three-dimensional .room-title{top:28px;left:22px;}.is-three-dimensional .room-title h1{font-size:26px;}.is-three-dimensional .room-subtitle{display:none;}
 .three-toolbar{left:20px;bottom:78px;grid-gap:8px;gap:8px;}.three-hover{bottom:133px;max-width:90%;text-align:center;white-space:normal;width:max-content;font-size:12px;}
 .is-three-dimensional .focus-detail{bottom:77px;padding:12px;}.is-three-dimensional .room-whisper{bottom:23%;}
}
.book-select { display:block;max-width:100%;margin:10px auto 0;padding:10px 14px;min-height:44px;background:#263225;color:#e3cba4;border:1px solid rgba(159,135,85,0.310);border-radius:3px;font-size:14px; }
/* Soft, worn surfaces and controls kept on their objects. */
.is-three-dimensional button,.is-three-dimensional summary,.book-select { border-radius:14px; }
.is-three-dimensional .focus-detail { border-radius:22px;max-width:560px;padding:14px 20px;background:rgba(40,43,35,0.851);box-shadow:0 8px 30px rgba(17,21,14,0.145); }
.is-three-dimensional .focus-detail.book-detail-quiet,.is-three-dimensional .focus-calendar .focus-detail { width:auto;max-width:90%;border:0;background:transparent;box-shadow:none;padding:0;backdrop-filter:none; }
.book-pick-controls { display:flex;align-items:center;grid-gap:10px;gap:10px; }.book-pick-controls .book-select { margin:0;max-width:70vw; }
.room-modes { position:absolute;top:30px;left:50%;transform:translateX(-50%);display:flex;grid-gap:3px;gap:3px;z-index:16;background:rgba(34,39,31,0.600);border:1px solid rgba(208,185,140,0.169);border-radius:24px;padding:3px; }
.room-modes button { width:40px;height:40px;display:grid;place-items:center;border:0;background:none;color:#baa98d;border-radius:50%; }
.room-modes button[aria-pressed=true] { background:rgba(229,198,150,0.125);color:#f4dfb7; }
.object-tv-control { position:absolute;width:46px;height:46px;transform:translate(-50%,-50%);border:0!important;border-radius:50%!important;background:transparent;cursor:pointer;z-index:18; }
.object-tv-control:hover,.object-tv-control:focus-visible { outline:2px solid rgba(239,213,164,0.569);outline-offset:1px;background:rgba(238,211,165,0.071); }
.room-film-grain { position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;pointer-events:none;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.91' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.7' filter='url(%23n)'/%3E%3C/svg%3E"); }
.three-object-menu>div,.three-error,.three-loading { border-radius:18px; }.three-hover{border-radius:18px;}
.is-three-dimensional .focus-heading button { border:1px solid rgba(198,173,131,0.200);border-radius:22px;min-width:90px; }
.focus-frames .focus-actions { grid-gap:16px; gap:16px; }.focus-frames .focus-note { margin:0 0 4px; }
.is-three-dimensional .focus-calendar .focus-text-action { background:rgba(38,45,34,0.878);border:1px solid rgba(198,173,131,0.251);border-radius:50%;width:48px;height:48px; }
@media(max-width:650px){.room-modes{left:auto;right:18px;top:100px;transform:none;}.room-modes button{width:36px;height:36px;}.object-tv-control{width:40px;height:40px;}.book-pick-controls{grid-gap:3px;gap:3px;}.three-toolbar{bottom:74px;}}
.book-pick-controls .focus-text-action { white-space:nowrap;flex-shrink:0; }
.atmosphere-picker{position:absolute;left:50%;top:30px;transform:translateX(-50%);z-index:18;color:#efe3cd;font-size:14px;}
.atmosphere-picker summary{list-style:none;display:flex;align-items:center;grid-gap:10px;gap:10px;min-height:44px;padding:0 16px;background:rgba(34,39,31,0.741);border:1px solid rgba(208,185,140,0.251);border-radius:24px;cursor:pointer;}
.atmosphere-picker summary::-webkit-details-marker{display:none}.atmosphere-picker summary:focus-visible{outline:2px solid #dbc28f;outline-offset:4px;}
.atmosphere-options{position:absolute;top:54px;left:50%;transform:translateX(-50%);width:216px;padding:8px;display:grid;grid-template-columns:1fr 1fr;grid-gap:4px;gap:4px;background:rgba(37,42,34,0.961);border:1px solid rgba(208,185,140,0.188);border-radius:19px;box-shadow:0 12px 38px rgba(0,0,0,0.333);}
.atmosphere-options button{display:flex;align-items:center;grid-gap:10px;gap:10px;min-height:45px;border:0;border-radius:12px;padding:0 11px;color:#d5c6aa;background:none;font-size:14px;}.atmosphere-options button:hover,.atmosphere-options button[aria-pressed=true]{background:rgba(216,189,135,0.141);color:#fff1d6;}
@media(max-width:650px){.atmosphere-picker{left:auto;right:18px;top:114px;transform:none}.atmosphere-options{left:auto;right:0;transform:none}.atmosphere-picker summary{font-size:14px;}}

@font-face{font-family:'Room Hand';src:url('../fonts/room-hand.woff2') format('woff2');font-weight:100 900;font-display:swap;}
:root{--font-hand:'Room Hand','Kaiti SC','STKaiti',serif;}
body,button,input,select,textarea{font-family:var(--font-hand);}
.incoming-screen h2{font-family:var(--font-hand);font-size:34px;letter-spacing:.01em;}
.call-status,.slide-label{font-size:17px;letter-spacing:0;}
.is-three-dimensional .room-title{top:31px;left:4.3%;}
.is-three-dimensional .room-title h1{font:400 2.3vw/1.3 var(--font-hand);font:400 clamp(23px,2.3vw,31px)/1.3 var(--font-hand);letter-spacing:.015em;}
.room-whisper,.focus-detail h2,.focus-note,.back-note,.photo-caption,.memory-episode,.memory-afterword,.birthday-letter,.wish-title,.birthday-letter p{font-family:var(--font-hand);}
.room-whisper{font-size:23px;}
.discovery-journal{position:absolute;top:28px;right:calc(4.3% + 108px);z-index:20;}
.discovery-journal .journal-toggle{width:44px;height:44px;display:grid;place-items:center;list-style:none;background:rgba(36,44,34,0.690);color:#e1ceac;border:1px solid rgba(208,185,140,0.208);border-radius:50%;cursor:pointer;}
.discovery-journal .journal-toggle::-webkit-details-marker{display:none;}
.discovery-journal .journal-toggle:focus-visible{outline:2px solid #e5bd7e;outline-offset:4px;}
.discovery-journal .journal-toggle[aria-expanded=true]{background:#e3d1af;color:#48503e;}
.journal-pages{position:absolute;top:56px;right:0;width:305px;max-height:min(620px,calc(100vh - 155px));max-height:620px;max-height:min(620px,calc(100svh - 155px));overflow-y:auto;padding:20px 18px 10px 24px;background:#e8dbc1;color:#48503e;border-radius:17px 22px 22px 17px;border:1px solid #c5b391;box-shadow:0 15px 50px rgba(0,0,0,0.267),inset 9px 0 0 rgba(211,196,168,0.188);}
.journal-pages>p{margin:0 0 14px;font-size:21px;}
.journal-grid{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:13px;column-gap:13px;}
.journal-grid button{position:relative;min-height:44px;text-align:left;border:0;border-bottom:1px solid rgba(133,115,74,0.141);border-radius:0!important;background:transparent;color:#4e513d;font-size:16px;padding:8px 2px;}
.journal-grid button:hover{color:#936948;background:rgba(212,191,146,0.180);border-radius:9px!important;}
.journal-grid .undiscovered{letter-spacing:.15em;color:#837864;}
.journal-grid i{font-size:11px;font-style:normal;color:#a68c48;padding-left:4px;}
.journal-bottom{display:flex;justify-content:space-between;margin-top:10px;padding-top:5px;}
.journal-bottom button{border:0;background:transparent;color:#716e58;padding:10px;min-width:44px;min-height:44px;}
.is-three-dimensional .focus-calls .focus-detail{background:#e3d3b4;color:#4a4b39;border:1px solid #cbbb9c;box-shadow:0 8px 30px rgba(16,24,16,0.208);width:max-content;min-width:225px;padding:17px 26px;transform:translateX(-50%) rotate(-.6deg);}
.focus-calls .focus-detail h2{color:#49513e;font-size:24px;line-height:1.5;white-space:pre-line;}
.focus-calls .focus-detail time{font-size:14px;letter-spacing:.06em;color:#8d8168;}
.focus-calls .focus-detail .focus-text-action{color:#687054;background:rgba(112,131,92,0.063);border:1px solid rgba(154,159,129,0.184);width:44px;height:44px;border-radius:50%;}
.memory-episode{font-size:19px;letter-spacing:.02em;text-transform:none;}
.photo-caption{font-size:17px;}.album-label,.flip-control{font-size:16px;}
.cat-photos-link{font-size:17px;}
@media(max-width:650px){.is-three-dimensional .room-title{top:23px;left:20px;}.is-three-dimensional .room-title h1{font-size:23px;}.discovery-journal{top:17px;right:66px;}.journal-pages{right:-46px;width:305px;width:min(305px,calc(100vw - 36px));}.atmosphere-picker{top:82px;}.is-three-dimensional .focus-calls .focus-detail{max-width:calc(100vw - 38px);bottom:45px;}.focus-calls .focus-detail h2{font-size:22px;}}
@media(prefers-reduced-motion:reduce){.room-whisper{animation:none;}}
.memory-episode[data-slot='dialog-title'],.wish-title[data-slot='dialog-title'],.letter-body,.letter-signature,.letter-ending h2,.letter-ending p,.letter-ending em{font-family:var(--font-hand);}
.is-focused .room-title,.is-wishing .room-title,.is-cinematic .room-title{opacity:0;transition:opacity .2s;}
/* A warm paper backdrop keeps the green room distinct from its surroundings. */
.room-surface{position:absolute;top:0;right:0;bottom:0;left:0;}
.experience.is-three-dimensional{background:#d2bcb4;}
.is-three-dimensional .room-vignette{background:radial-gradient(ellipse at 50% 47%,transparent 49%,rgba(113,83,73,0.078) 100%);box-shadow:none;}
.is-three-dimensional .room-title{color:#57473f;text-shadow:none;}
.replay-call{position:absolute;right:calc(4.3% + 160px);top:28px;z-index:20;width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(112,89,66,0.208);background:rgba(241,229,213,0.788);color:#695447;border-radius:50%!important;cursor:pointer;}
.discovery-journal .journal-toggle{background:rgba(241,229,213,0.788);color:#695447;border-color:rgba(112,89,66,0.208);}
.is-three-dimensional .sound-control{color:#604f43;}
.replay-call:hover,.discovery-journal .journal-toggle:hover{background:#fff1de;}
.replay-call:focus-visible{outline:2px solid #695447;outline-offset:4px;}
.call-return{position:absolute;bottom:10%;color:#d3c8bb;background:transparent;border:1px solid rgba(199,189,164,0.220);border-radius:24px;padding:12px 20px;min-height:44px;font-size:16px;cursor:pointer;}
.incoming-screen:focus{outline:none;}
.is-three-dimensional .focus-drawer .focus-detail{background:#e4d3b5;color:#514c39;width:max-content;}
.drawer-actions{display:flex;grid-gap:10px;gap:10px;}.drawer-actions button{border:1px solid rgba(146,120,83,0.271);background:#f4e5ca;color:#5e563e;padding:10px 16px;min-height:44px;font-size:16px;}
@media(max-width:650px){.replay-call{top:17px;right:118px;}.is-three-dimensional .sound-control{background:rgba(241,229,213,0.808);border-radius:50%;}.is-three-dimensional .focus-drawer .focus-detail{bottom:40px;}.is-three-dimensional .room-title h1{font-size:22px;}.is-three-dimensional .room-title{left:18px;}.discovery-journal{right:66px;}}
@media(min-width:651px) and (max-width:950px){.is-three-dimensional .room-title h1{font-size:24px;}.atmosphere-picker{top:89px;}.replay-call{right:calc(4.3% + 153px);}}

.is-three-dimensional.is-focused .sound-control,.is-three-dimensional.is-wishing .sound-control,.experience.has-call .sound-control{color:#e8d8bd;background:rgba(32,36,28,0.522);border-radius:24px;}
/* Clear daylight, blue dusk and deep evening frame the warm, olive room. */
.experience.is-three-dimensional{background:#000;--surround-ink:#4b4c43;--surround-surface:rgba(250,251,245,0.863);--surround-border:rgba(86,103,93,0.161);--surround-hover:#ffffff;--surround-selected:rgba(216,223,210,0.302);}
.room-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:var(--backdrop-visibility,1);}
.backdrop-layer{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;background:radial-gradient(ellipse at 50% 43%,var(--backdrop-glow) 0%,transparent 54%),linear-gradient(135deg,var(--backdrop-glow) 0%,var(--backdrop-edge) 58%,var(--backdrop-edge) 100%);transition:opacity 1.3s ease;}
.backdrop-layer.is-active{opacity:1;}
.experience[data-atmosphere=night] .room-backdrop:after,.experience[data-atmosphere=candle] .room-backdrop:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(145deg,rgba(23,56,45,0.333) 0%,transparent 52%,rgba(7,22,17,0.333) 100%);pointer-events:none;}
.experience[data-tone=dark]{--surround-ink:#e4eee6;--surround-surface:rgba(27,57,48,0.863);--surround-border:rgba(185,216,200,0.169);--surround-hover:rgba(42,85,71,0.937);--surround-selected:rgba(184,215,195,0.110);}
.experience[data-atmosphere=candle]{--surround-ink:#e7ddcd;--surround-surface:rgba(40,41,39,0.800);--surround-border:rgba(214,194,163,0.169);--surround-hover:#423e36;}
.is-three-dimensional .room-vignette{background:none;box-shadow:none;}
.room-film-grain{opacity:.018;mix-blend-mode:soft-light;mask-image:radial-gradient(ellipse at 50% 55%,#000 25%,transparent 68%);}
.is-three-dimensional .room-title,.is-three-dimensional .sound-control{color:var(--surround-ink);transition:color 1.1s ease;}
.is-three-dimensional .replay-call,.discovery-journal .journal-toggle,.atmosphere-picker summary,.is-three-dimensional .sound-control{color:var(--surround-ink);background:var(--surround-surface);border:1px solid var(--surround-border);box-shadow:0 2px 10px rgba(16,25,35,0.016);transition:color 1.1s ease,background-color 1.1s ease,border-color 1.1s ease;}
.is-three-dimensional .sound-control{border-radius:24px;}
.replay-call:hover,.discovery-journal .journal-toggle:hover,.atmosphere-picker summary:hover,.is-three-dimensional .sound-control:hover{background:var(--surround-hover);}
.replay-call:focus-visible,.discovery-journal .journal-toggle:focus-visible,.atmosphere-picker summary:focus-visible{outline:2px solid var(--surround-ink);outline-offset:4px;}
.atmosphere-options{background:var(--surround-surface);border-color:var(--surround-border);backdrop-filter:blur(16px);box-shadow:0 12px 35px rgba(9,20,30,0.071);}
.atmosphere-options button{color:var(--surround-ink);}
.atmosphere-options button:hover,.atmosphere-options button[aria-pressed=true]{color:var(--surround-ink);background:var(--surround-selected);}
.three-hover{color:var(--surround-ink);background:var(--surround-surface);border:1px solid var(--surround-border);}
.is-three-dimensional.is-focused .sound-control,.is-three-dimensional.is-wishing .sound-control,.experience.has-call .sound-control{color:#e8d8bd;background:rgba(32,36,28,0.749);border-color:rgba(232,216,189,0.141);}
@media(max-width:650px){.backdrop-layer{background:radial-gradient(ellipse at 50% 51%,var(--backdrop-glow) 0%,var(--backdrop-edge) 81%);}.is-three-dimensional .sound-control{border-radius:50%;}}
@media(prefers-reduced-motion:reduce){.backdrop-layer,.is-three-dimensional .room-title,.is-three-dimensional .sound-control,.is-three-dimensional .replay-call,.discovery-journal .journal-toggle,.atmosphere-picker summary{transition:none;}}

.incoming-screen{position:absolute;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 40%,#303a32 0%,#1c231e 42%,#101713 100%);color:#f3eddf;transition:opacity 1.4s ease;}
.caller-portrait{width:132px;height:132px;display:grid;place-items:center;border-radius:38px;background:rgba(224,217,198,0.067);box-shadow:inset 0 0 0 1px rgba(232,223,199,0.082); font-size:80px;margin-bottom:27px;}
.incoming-screen h2{font:400 29px/1.3 'Songti SC',serif;margin:0;letter-spacing:.07em;}
.call-status{font-size:14px;letter-spacing:.07em;color:#c3c8bd;margin:15px 0 0;min-height:22px;font-variant-numeric:tabular-nums;}
.answer-track{position:relative;margin-top:100px;width:310px;width:min(310px,calc(100vw - 76px));height:66px;border-radius:36px;background:rgba(237,243,227,0.075);border:1px solid rgba(230,234,219,0.141);box-shadow:inset 0 2px 16px rgba(0,0,0,0.200);}
.slide-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding-left:36px;font-size:15px;color:#d1d8c6;grid-gap:0;gap:0;opacity:calc(1 - var(--answer-progress));pointer-events:none;}
.slide-label svg:first-of-type{margin-left:11px}.slide-label svg:last-of-type{margin-left:-9px;opacity:.55}
.answer-slider{position:absolute;left:calc(4px + (100% - 66px)*var(--answer-progress));top:4px;width:56px;height:56px;border-radius:50%;background:#6f8b6b;color:white;display:grid;place-items:center;touch-action:none;cursor:grab;box-shadow:0 3px 13px rgba(0,0,0,0.267);user-select:none;}
.answer-slider:active{cursor:grabbing}.answer-slider:focus-visible{outline:2px solid #eee6cc;outline-offset:5px;}
.call-wave{height:66px;margin-top:100px;display:flex;align-items:center;grid-gap:5px;gap:5px}.call-wave i{height:7px;width:3px;border-radius:5px;background:#c4d5b7;animation:voicePulse 1.3s ease-in-out infinite;}
@keyframes voicePulse{0%,100%{height:7px;opacity:.4}45%{height:30px;opacity:1}}
.call-transition{opacity:0;pointer-events:none}.call-continuing{margin-top:119px;color:#bdc9b3;}
.call-recovery{margin-top:70px;display:flex;grid-gap:14px;gap:14px}.call-recovery button{border:1px solid rgba(208,212,195,0.188);border-radius:22px;background:rgba(255,255,255,0.031);color:#dddcca;padding:13px 18px;display:flex;grid-gap:8px;gap:8px;align-items:center;font-size:14px;}
@media(max-height:600px){.caller-portrait{width:90px;height:90px;font-size:58px;margin-bottom:18px}.answer-track,.call-wave{margin-top:40px}}

/* Fixed host navigation reserve, plus simulator variables or device safe insets. */
:root{--host-top:44px;--safe-top:var(--safe-area-inset-top,0px);--safe-bottom:var(--safe-area-inset-bottom,0px);--safe-left:var(--safe-area-inset-left,0px);--safe-right:var(--safe-area-inset-right,0px)}
@supports(padding-top:env(safe-area-inset-top)){:root{--safe-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px));--safe-bottom:var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px));--safe-left:var(--safe-area-inset-left,env(safe-area-inset-left,0px));--safe-right:var(--safe-area-inset-right,env(safe-area-inset-right,0px))}}
html{touch-action:manipulation}html,body,#root{overflow:hidden}button,summary,[role=slider]{touch-action:manipulation}button{min-height:44px}img{max-width:100%}.experience,.experience.is-three-dimensional{height:100vh;min-height:0;height:var(--app-height,100vh)}
.room-surface{top:calc(var(--host-top) + var(--safe-top));right:var(--safe-right);bottom:var(--safe-bottom);left:var(--safe-left)}
.is-three-dimensional .room-title{top:22px;left:24px}.is-three-dimensional .room-title h1{font-size:27px}.replay-call,.discovery-journal{top:16px}.atmosphere-picker{top:16px}.is-three-dimensional .sound-control{bottom:calc(18px + var(--safe-bottom));right:calc(20px + var(--safe-right));min-width:44px;min-height:44px}
.incoming-screen{top:calc(var(--host-top) + var(--safe-top));bottom:var(--safe-bottom);padding:20px}.call-return{bottom:24px}.call-caption{font-size:19px;line-height:1.8;color:#e5dfcf;text-align:center;max-width:280px;margin:28px 0 -42px}.call-wave{margin-top:62px}.answer-track{width:310px;max-width:calc(100vw - 76px)}
[data-slot=dialog-content]{max-height:calc(var(--app-height,100vh) - var(--host-top) - var(--safe-top) - var(--safe-bottom) - 32px);top:calc(50% + (var(--host-top) + var(--safe-top) - var(--safe-bottom))/2)}
.memory-dialog{overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.focus-heading{top:18px}.focus-detail{max-width:calc(100% - 32px)}.journal-pages{max-height:calc(var(--app-height,100vh) - var(--host-top) - var(--safe-top) - var(--safe-bottom) - 125px);-webkit-overflow-scrolling:touch}.atmosphere-options{max-height:calc(var(--app-height,100vh) - var(--host-top) - var(--safe-top) - 125px);overflow:auto}
.room-three-canvas{touch-action:none}.room-three-canvas canvas{touch-action:none}.three-hover{bottom:28px}.is-three-dimensional .focus-calls .focus-detail{bottom:24px}.is-three-dimensional .focus-drawer .focus-detail{bottom:24px}.room-whisper{max-width:calc(100% - 40px);line-height:1.5}.new-polaroid{max-width:290px}.camera-ready h3{font-size:25px}
.no-flex-gap .object-controls>*+*,.no-flex-gap .focus-actions>*+*,.no-flex-gap .drawer-actions>*+*,.no-flex-gap .camera-controls>*+*,.no-flex-gap .call-recovery>*+*{margin-left:12px}.no-flex-gap .call-wave i+i{margin-left:5px}.no-flex-gap .sound-control span{margin-left:8px}
.room-fallback{position:absolute;top:80px;right:18px;bottom:85px;left:18px;max-width:700px;margin:0 auto;overflow:auto;border:1px solid rgba(207,193,169,0.314);border-radius:24px;background:#e5d8bd;color:#47523e;padding:20px;z-index:7}.room-fallback>p{font-size:17px;line-height:1.6}.fallback-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px}.fallback-grid button{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid rgba(138,128,99,0.267);border-radius:16px;background:#f1e7d0;padding:12px;font-size:17px;min-height:110px}.fallback-grid img{width:80px;height:68px;object-fit:cover;border-radius:9px;margin-bottom:8px}.fallback-symbol{font-size:34px;margin-bottom:8px}.fallback-note{font-size:15px!important;color:#756a54}.has-call .room-surface{pointer-events:none}
@media(max-width:650px){.is-three-dimensional .room-title{top:18px;left:18px}.is-three-dimensional .room-title h1{font-size:22px}.replay-call{top:12px;right:118px}.discovery-journal{top:12px;right:66px}.atmosphere-picker{top:12px;right:14px}.atmosphere-picker summary{width:44px;padding:0;justify-content:center}.atmosphere-picker summary span{display:none}.journal-pages{right:-48px;width:305px;max-width:calc(100vw - 32px)}.three-hover{font-size:14px;bottom:30px;left:18px;transform:none;max-width:calc(100% - 80px)}.room-whisper{font-size:20px;bottom:95px}.polaroid{width:270px;max-width:calc(100vw - 76px)}.memory-dialog{padding:24px 20px}.memory-episode{padding-right:30px}.camera-controls{flex-wrap:wrap}.fallback-grid{grid-template-columns:repeat(2,1fr)}.room-fallback{top:75px}.sound-control span{display:none}.is-three-dimensional .sound-control{width:44px;padding:0;justify-content:center}.birthday-letter{padding:30px 24px}.letter-heading{font-size:12px}.letter-body p{font-size:18px;line-height:1.85}}
@media(max-width:370px){.is-three-dimensional .room-title h1{font-size:20px}.replay-call{right:112px}.discovery-journal{right:62px}.atmosphere-picker{right:12px}}
@media(max-height:560px){.incoming-screen .caller-portrait{width:60px;height:60px;font-size:44px;margin-bottom:10px}.incoming-screen h2{font-size:25px}.call-status{margin-top:8px}.call-caption{margin:12px 0 -12px;font-size:16px}.answer-track,.call-wave{margin-top:24px}.call-return{right:20px;bottom:16px}.room-fallback{top:64px;bottom:65px}.three-hover{bottom:18px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}

.is-three-dimensional .sound-control{top:auto}.fallback-books small{font-size:14px;display:block;margin-top:4px} .fallback-books{padding-bottom:70px}

/* One header grid, shared by every viewport and host safe area. */
.room-header{position:absolute;z-index:25;top:18px;left:28px;right:28px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;}
.room-header .room-title{position:static;transform:none;opacity:1;color:var(--surround-ink);text-shadow:none;transition:color .8s;}
.room-header .room-title h1{font:400 29px/1.25 var(--font-hand);letter-spacing:.015em;white-space:nowrap;}
.room-tools{position:relative;display:flex;align-items:center;pointer-events:auto;}
.room-tools>*+*{margin-left:9px;}
.room-header .replay-call,.room-header .discovery-journal,.room-header .atmosphere-picker{position:relative;left:auto;right:auto;top:auto;transform:none;flex:none;margin-bottom:0;}
.room-header .replay-call,.room-header .journal-toggle,.room-header .weather-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;padding:0;border-radius:50%;border:1px solid var(--surround-border);background:var(--surround-surface);color:var(--surround-ink);box-shadow:0 3px 10px rgba(18,38,28,0.020);transition:background-color .3s,color .8s,border-color .8s;}
.room-tools svg{display:block;flex:none;stroke-width:1.65;}
.room-header button:hover{background:var(--surround-hover);}
.room-header button[aria-expanded=true]{background:var(--surround-selected);}
.room-header button:focus-visible{outline:2px solid var(--room-accent);outline-offset:4px;}
@supports selector(:focus-visible){button:focus:not(:focus-visible){outline:none;}}
.room-header .atmosphere-options,.room-header .journal-pages{position:absolute;left:auto;right:0;top:56px;transform:none;margin:0;background:var(--surround-surface);border:1px solid var(--surround-border);color:var(--surround-ink);box-shadow:0 14px 45px rgba(19,40,28,0.102);border-radius:22px;backdrop-filter:none;max-width:calc(100vw - var(--safe-left) - var(--safe-right) - 32px);}
.room-header .atmosphere-options{width:264px;padding:10px;display:grid;grid-template-columns:1fr 1fr;grid-gap:4px;}
.room-header .atmosphere-options button{display:grid;grid-template-columns:20px 1fr 13px;grid-gap:8px;align-items:center;min-height:48px;padding:0 9px;border-radius:13px;font:400 14px/1.3 'PingFang SC','Microsoft YaHei',sans-serif;letter-spacing:.04em;text-align:left;color:var(--surround-ink);}
.room-header .atmosphere-options .weather-check{opacity:0;}
.room-header .atmosphere-options [aria-pressed=true]{background:var(--surround-selected);}
.room-header .atmosphere-options [aria-pressed=true] .weather-check{opacity:1;}
.room-header .journal-pages{right:-53px;width:306px;padding:20px 20px 12px;}
.room-header .journal-grid button{color:var(--surround-ink);border-color:var(--surround-border);border-radius:8px!important;}
.room-header .journal-grid .undiscovered{color:var(--surround-ink);opacity:.65;}
.room-header .journal-bottom button{color:var(--surround-ink);border-radius:12px;}
/* Restrained matte color fields; the room's lamps supply the visible glow. */
.backdrop-layer{background:linear-gradient(180deg,var(--backdrop-edge) 0%,var(--backdrop-glow) 100%);}
.experience[data-atmosphere=night] .room-backdrop:after,.experience[data-atmosphere=candle] .room-backdrop:after{display:none;}
.room-film-grain{display:none;}
.is-three-dimensional .sound-control{font:500 10px/1.3 'PingFang SC',sans-serif;letter-spacing:.07em;}
.is-three-dimensional .focus-heading button{color:var(--surround-ink);background:var(--surround-surface);border-color:var(--surround-border);}
.memory-dialog[data-slot=dialog-content]{max-height:calc(var(--app-height,100vh) - var(--host-top) - var(--safe-top) - var(--safe-bottom) - 32px);}
.incoming-screen{background:linear-gradient(165deg,#263f35 0%,#182e29 100%);}
.caller-portrait{position:relative;background:#f0dfb9;border:5px solid #e5d6b7;box-shadow:0 12px 36px rgba(10,32,29,0.141),inset 0 0 0 1px #fff4d6;border-radius:50%;width:126px;height:126px;font-size:76px;}
.incoming-screen h2{font:400 27px/1.5 var(--font-hand);letter-spacing:0;}
.call-status{font:400 13px/1.6 'PingFang SC',sans-serif;color:#c9d3bf;letter-spacing:.05em;margin-top:12px;}
.answer-track{background:rgba(242,230,200,0.075);border-color:rgba(208,219,194,0.180);box-shadow:none;}
.answer-slider{background:#d9c9a2;color:#294532;box-shadow:0 4px 12px rgba(9,34,25,0.141);}
.slide-label{font:400 14px/1.4 'PingFang SC',sans-serif;color:#e2e5d1;}
.call-caption{color:#f4e5c9;}
.call-return{font:400 13px/1.5 'PingFang SC',sans-serif;color:#ced7c6;border-color:rgba(185,197,181,0.200);}
.room-reset{position:absolute;z-index:24;left:28px;bottom:18px;display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border-radius:50%!important;color:var(--surround-ink);background:var(--surround-surface);border:1px solid var(--surround-border);}
.room-reset:hover{background:var(--surround-hover);}
.room-reset:focus-visible{outline:2px solid var(--room-accent);outline-offset:4px;}
.is-three-dimensional .focus-detail{border-radius:24px;}
.frame-front,.frame-back{border-radius:9px;}
.is-three-dimensional .focus-heading{top:18px;left:28px;}
.mobile-room-hint{display:none;}
@media(max-width:650px){
 .mobile-room-hint{display:inline;}.desktop-room-hint{display:none;}
 .room-header{top:12px;left:16px;right:16px;}
 .room-header .room-title h1{font-size:22px;}
 .room-tools>*+*{margin-left:8px;}
 .room-header .journal-pages{right:-52px;}
 .incoming-screen h2{font-size:24px;}
 .room-reset{left:16px;bottom:18px;}
 .three-hover{left:50%;transform:translateX(-50%);bottom:28px;max-width:calc(100% - 132px);font-size:12px;white-space:normal;line-height:1.5;text-align:center;}
 .is-three-dimensional .sound-control{right:calc(16px + var(--safe-right));}
 .is-three-dimensional.is-focused .sound-control{top:calc(var(--host-top) + var(--safe-top) + 12px);bottom:auto;background:var(--surround-surface);color:var(--surround-ink);border-color:var(--surround-border);}
 .is-three-dimensional .focus-heading{top:12px;left:16px;right:76px;}
 .is-three-dimensional .focus-detail{bottom:20px;width:calc(100% - 32px);max-height:32%;overflow:auto;padding:14px 16px;}
 .is-three-dimensional .focus-calls .focus-detail,.is-three-dimensional .focus-drawer .focus-detail{bottom:20px;}
 .object-tv-control{width:44px;height:44px;}
 .focus-actions button,.focus-text-action{min-height:44px;}
 .focus-frames .focus-actions{grid-gap:8px;gap:8px;}
}
@media(max-width:370px){
 .room-header .room-title h1{font-size:20px;}
 .room-tools>*+*{margin-left:6px;}
 .room-header .journal-pages{right:-50px;}
}
@media(max-height:560px){.room-header{top:8px;}}

/* Keep the original handwritten family across the interface and dialog portals. */
body,body *{font-family:var(--font-hand)!important;}
.memory-together .polaroid-back,.memory-portraits .polaroid-back{align-items:center;justify-content:center;}
.memory-together .back-note,.memory-portraits .back-note{width:100%;text-align:center;text-wrap:pretty;}
