#memory-space{position:absolute;inset:0;overflow:hidden;isolation:isolate}
#memory-space::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:var(--memory-light,0);background:radial-gradient(ellipse at 50% 52%,var(--tone-c263d855,#c263d855) 0%,var(--tone-9146b34a,#9146b34a) 30%,var(--tone-62258a2e,#62258a2e) 58%,transparent 85%),radial-gradient(ellipse at 50% 86%,var(--tone-c76ee33b,#c76ee33b),transparent 55%)}
.memory-tunnel{z-index:0;pointer-events:none}
.memory-flight{position:absolute;z-index:1;opacity:0;pointer-events:none}
.memory-depth{position:absolute;inset:0;z-index:1;touch-action:none;overscroll-behavior:contain;user-select:none;-webkit-user-select:none}
.memory-depth-photos{position:absolute;inset:0;perspective:900px;perspective-origin:50% 46%;transform-style:preserve-3d;pointer-events:none}
.memory-depth-photo{position:absolute;left:50%;top:54%;padding:0;border:1px solid var(--tone-f2b8efb3,#f2b8efb3);border-radius:23px;background:var(--tone-291333,#291333);box-shadow:0 14px 36px var(--tone-17032366,#17032366),0 0 16px var(--tone-ce7ce84d,#ce7ce84d);opacity:0;backface-visibility:hidden;cursor:zoom-in;pointer-events:none;transform-origin:center;will-change:transform,opacity}
.memory-depth-photo{border-color:rgb(255 240 252 / calc(.2 + var(--photo-focus,1)*.8));box-shadow:0 0 2px 1px rgb(255 242 250 / var(--photo-focus,1)),0 0 12px rgb(255 183 239 / calc(var(--photo-focus,1)*.8)),0 0 34px rgb(211 101 233 / calc(var(--photo-focus,1)*.5)),0 20px 55px var(--tone-8a39b54d,#8a39b54d)}
.memory-depth-photo img{display:block;width:100%;height:100%;object-fit:contain;border-radius:22px;pointer-events:none;-webkit-user-drag:none;filter:brightness(1.06) saturate(1.05) blur(var(--photo-blur,0px))}
.memory-depth-photo:focus-visible{outline:2px solid var(--tone-e1bfff,#e1bfff);outline-offset:6px}
.memory-space-hud{position:absolute;left:18px;right:18px;bottom:max(24px,env(safe-area-inset-bottom));text-align:center;opacity:0;pointer-events:none;color:var(--tone-cdbbdf,#cdbbdf)}
.memory-space-controls{display:flex;align-items:center;justify-content:center;gap:24px;pointer-events:auto}
.memory-back,.memory-forward{width:44px;height:44px;border:1px solid var(--tone-efbcf4d9,#efbcf4d9);border-radius:50%;background:linear-gradient(145deg,var(--tone-6f378dcc,#6f378dcc),var(--tone-361b50e6,#361b50e6));box-shadow:inset 0 0 12px var(--tone-e1a0ef26,#e1a0ef26),0 0 13px var(--tone-cd75e44d,#cd75e44d);color:var(--tone-fff1ff,#fff1ff);font:28px/1 "Segoe UI",sans-serif}
.memory-back:disabled,.memory-forward:disabled{opacity:.4;cursor:default}
.memory-space-position{color:var(--tone-fff0ff,#fff0ff);font:600 14px/1 "Trebuchet MS",sans-serif;letter-spacing:2px;min-width:62px;font-variant-numeric:tabular-nums;text-shadow:0 0 10px var(--tone-db90ed66,#db90ed66)}
.memory-depth-photo{top:var(--memory-photo-top,43%)}
.memory-companion{position:absolute;z-index:2;top:0;left:50%;width:min(calc(100% - 32px),640px);height:176px;opacity:0;pointer-events:none;transition:opacity .25s ease;will-change:transform}
.memory-guide{position:absolute;z-index:1;left:0;bottom:0;width:50px;height:60px;padding:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;touch-action:manipulation;border-radius:24px}
.memory-guide img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-drag:none;filter:brightness(1.08) saturate(1.06) drop-shadow(0 0 5px var(--tone-f5b7e780,#f5b7e780))}
.memory-present-pose{position:absolute;inset:0;width:100%;height:100%;overflow:visible;visibility:hidden;pointer-events:none;filter:brightness(1.08) saturate(1.06) drop-shadow(0 0 5px var(--tone-f5b7e780,#f5b7e780))}
.memory-companion[data-presenting="true"] .memory-guide>img{visibility:hidden}
.memory-companion[data-presenting="true"] .memory-guide{transform-origin:50% 90%;animation:memory-present-bow 1.25s cubic-bezier(.22,.68,.3,1) both}
.memory-companion[data-presenting="true"] .memory-present-pose{visibility:visible}
.memory-companion[data-presenting="true"] .memory-present-left{animation:memory-open-left 1.15s cubic-bezier(.22,.68,.3,1) both}
.memory-companion[data-presenting="true"] .memory-present-right{animation:memory-open-right 1.15s .07s cubic-bezier(.22,.68,.3,1) both}
@keyframes memory-open-left{from{transform:rotate(0deg)}to{transform:rotate(-88deg)}}
@keyframes memory-open-right{from{transform:rotate(0deg)}to{transform:rotate(96deg)}}
@keyframes memory-present-bow{from{transform:rotate(0deg)}to{transform:rotate(3deg)}}
:root[data-chibi-head] .memory-present-body{clip-path:var(--chibi-body-front)}
.memory-speaking-mouth{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;filter:brightness(1.08) saturate(1.06);transition:opacity .1s ease}
.memory-guide:focus-visible{outline:2px solid var(--tone-e1bfff,#e1bfff);outline-offset:3px}
.memory-guide:disabled{opacity:1;cursor:default}
.memory-dialogue{position:relative;isolation:isolate;width:244px;max-width:100%;min-height:156px;margin:0 auto;padding:24px 28px 26px;display:flex;flex-direction:column;justify-content:center;text-align:center;opacity:0;visibility:hidden;transform:translateY(5px);transition:opacity .22s ease,transform .22s ease,visibility .22s;color:var(--tone-593482,#593482)}
.memory-dialogue-art{position:absolute;z-index:-1;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 2px var(--tone-fff1ffb3,#fff1ffb3)) drop-shadow(0 0 15px var(--tone-e1a0f580,#e1a0f580));pointer-events:none}
.memory-guide-name{position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);white-space:nowrap;color:#fff3ee;font:600 10px/1.3 "Segoe UI",sans-serif;letter-spacing:.15px;text-shadow:0 1px 2px var(--tone-59347799,#59347799),0 0 6px var(--tone-e6c5f54d,#e6c5f54d);pointer-events:none}
.memory-dialogue-message{margin:0;font:400 15px/1.65 Pacifico,"Segoe UI",cursive;text-wrap:pretty}
.gift-configured .memory-dialogue-message{max-height:110px;overflow:auto;overflow-wrap:anywhere;scrollbar-width:thin;scrollbar-color:#b789d3 transparent}
.memory-speech-letter{opacity:0;transition:opacity .12s ease}
.memory-speech-letter.is-spoken{opacity:1}
.memory-companion[data-speaking="true"] .memory-dialogue{opacity:1;visibility:visible;transform:translateY(0)}
#memory-space[data-viewing="true"] .memory-depth{visibility:hidden;opacity:0}
#photo-viewer{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;color:var(--tone-f8eefc,#f8eefc);background:transparent;overflow:hidden}
#photo-viewer::backdrop{background:var(--tone-08050e26,#08050e26)}
.photo-viewer-stage{position:absolute;inset:68px 22px 86px;margin:0;display:grid;place-items:center}
.photo-viewer-image{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:18px;outline:1px solid var(--tone-ffe0f8,#ffe0f8);box-shadow:0 0 14px var(--tone-ed9aea99,#ed9aea99),0 0 40px var(--tone-ba5ad44d,#ba5ad44d)}
.photo-close,.photo-previous,.photo-next{width:46px;height:46px;border:1px solid var(--tone-d9b4ee44,#d9b4ee44);border-radius:50%;background:var(--tone-21172c,#21172c);color:var(--tone-f8eefc,#f8eefc);display:grid;place-items:center;font:24px/1 "Segoe UI",sans-serif;touch-action:manipulation}
.photo-close{position:absolute;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));z-index:2;font-size:30px}
.photo-viewer-nav{position:absolute;bottom:max(22px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:24px}
.photo-position{min-width:48px;text-align:center;color:var(--tone-d5c1df,#d5c1df);font:13px/1 "Trebuchet MS",sans-serif;font-variant-numeric:tabular-nums}
@media(max-height:600px){.memory-space-hud{bottom:12px}.memory-guide{width:46px;height:55px}.memory-dialogue{width:228px;min-height:146px;padding:20px 26px 24px}.memory-dialogue-message{font-size:14px;line-height:1.6}}
@media(prefers-reduced-motion:reduce){.memory-companion,.memory-dialogue,.memory-speech-letter,.memory-speaking-mouth{transition:none}}
@media(prefers-reduced-motion:reduce){.memory-companion[data-presenting="true"] .memory-guide{animation:none;transform:rotate(3deg)}.memory-companion[data-presenting="true"] .memory-present-left{animation:none;transform:rotate(-88deg)}.memory-companion[data-presenting="true"] .memory-present-right{animation:none;transform:rotate(96deg)}}


.memory-camera-rig{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}
