/* The image supplies the room's light, rather than sitting in a separate card. */
.scene-details{position:absolute;inset:0;max-width:none!important;pointer-events:none;overflow:hidden;z-index:0;mask-image:radial-gradient(ellipse,transparent 18%,#000 80%)}.scene-details>span{position:absolute;font:var(--size)/1 var(--serif);color:var(--accent);opacity:var(--twinkle);text-shadow:0 0 20px color-mix(in srgb,var(--accent) 50%,transparent);animation:detail-float var(--duration) ease-in-out var(--delay) infinite}.detail-arc{position:absolute;width:65vw;height:65vw;left:-35vw;top:5%;border:1px solid color-mix(in srgb,var(--accent) 9%,transparent);border-radius:50%;box-shadow:0 0 0 35px color-mix(in srgb,var(--accent) 2%,transparent),0 0 0 90px color-mix(in srgb,var(--accent) 1%,transparent);transform:rotate(-25deg) scaleY(.8)}.ferrari .detail-arc{border-radius:30%;transform:rotate(-25deg);border-style:dashed}.emote .scene-details,.finale .scene-details,.birthday .scene-details{mask-image:radial-gradient(ellipse,transparent 15%,#000 65%)}.bar .scene-details>span{filter:blur(.3px)}
.photo-atmosphere{position:absolute;inset:-7%;max-width:none!important;background-size:cover;background-position:center;filter:blur(44px) saturate(.7);opacity:.4;pointer-events:none;z-index:-1;mask-image:linear-gradient(transparent,#000 20%,#000 85%,transparent);transition:opacity 1.8s}.scene.has-photo-game{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.15fr);grid-template-rows:1fr 1fr;column-gap:5vw;row-gap:24px;padding:95px 8vw 115px;isolation:isolate;overflow:hidden}.has-photo-game>h2{grid-column:1;grid-row:1;align-self:end;text-align:left;font-size:clamp(42px,4.6vw,73px);width:100%;max-width:100%;z-index:4}.interactive-photo{grid-column:2;grid-row:1/3;align-self:stretch;position:relative;min-width:0;min-height:0;width:100%;max-width:none!important;z-index:2;--image-w:100%;--image-h:100%;--image-x:0px;--image-y:0px}.interactive-photo>.memory-photo,.interactive-photo>.light-stage,.interactive-photo>.render-stage{position:absolute;inset:0;width:100%!important;height:100%!important;max-height:none!important;max-width:none!important;min-width:0;min-height:0;margin:0;padding:0;aspect-ratio:auto!important;border:none;border-radius:0;box-shadow:none;transform:none;animation:none;background:none;display:block;overflow:visible}.interactive-photo img{width:100%;height:100%;max-height:none;object-fit:contain;filter:none!important;border-radius:0;animation:none!important;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent),linear-gradient(transparent,#000 8%,#000 92%,transparent);mask-composite:intersect;transition:filter 1.5s;mix-blend-mode:normal;transform:translate(var(--look-x,0px),var(--look-y,0px));will-change:transform}.photo-instructions{grid-column:1;grid-row:2;align-self:start;max-width:420px!important;position:relative;z-index:5;display:flex;flex-direction:column;gap:18px}.photo-status{font:400 14px/1.7 var(--sans);color:var(--accent);text-wrap:balance;min-height:48px}.together .photo-atmosphere{opacity:.8;filter:blur(50px) saturate(.5)}.best .photo-atmosphere{opacity:.57;filter:blur(60px) saturate(.6)}.glad .photo-atmosphere{opacity:.55;filter:blur(60px) saturate(.3)}.bar .photo-atmosphere{opacity:.58;filter:blur(35px) saturate(.8)}.beauty .photo-atmosphere{opacity:.48;filter:blur(45px) saturate(.8)}body[data-world=together],body[data-world=best]{--ink:#382e29;color:var(--ink)}body[data-world=together] .scene h2,body[data-world=best] .scene h2{text-shadow:0 2px 25px #f7efdf44}body[data-world=together] .vignette,body[data-world=best] .vignette{opacity:.2}body[data-world=together] .keepsakes button,body[data-world=best] .keepsakes button{background:#efe5d352;border-color:#56473630}body[data-world=together] .back,body[data-world=best] .back{border-color:#56473630;background:#efe5d318}.cat .interactive-photo{max-height:64svh;align-self:center}.cat .interactive-photo img{transform:none}.cat .photo-atmosphere{opacity:.2}.best .interactive-photo{max-height:70svh;align-self:center}.beauty .interactive-photo img{animation:art-breathe 9s ease-in-out infinite!important}.bar .interactive-photo img{animation:bar-breathe 10s ease-in-out infinite!important}.light .interactive-photo{filter:brightness(calc(.65 + var(--found,0)*.45));transition:filter 1s}.bar[data-solved=true] .photo-atmosphere{opacity:.85}.bar[data-solved=true] .interactive-photo{filter:drop-shadow(0 0 35px #e1b56822)}
.photo-targets{position:absolute;left:var(--image-x);top:var(--image-y);width:var(--image-w);height:var(--image-h);pointer-events:none;z-index:5}.photo-target{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid transparent;border-radius:50%;background:transparent;color:#ffe2dd;font:35px/1 var(--serif);text-shadow:0 0 12px #d83d7eaa,0 1px 4px #56232faa;opacity:.72;pointer-events:auto;transition:opacity .4s,box-shadow .4s,scale .3s;touch-action:manipulation;animation:target-drift 5s ease-in-out infinite}.photo-target:nth-child(2n){animation-delay:-2s}.photo-target:hover,.photo-target:focus-visible{opacity:1;scale:1.15;background:#fff3}.photo-target.collected{animation:target-caught .5s ease-out forwards!important;pointer-events:none}.beauty .photo-target{font-size:32px;color:#fff1b6;text-shadow:0 0 16px #efad65,0 0 4px #60371e}.light .photo-target{font-size:26px;color:#d0ffe9;text-shadow:0 0 18px #86d4c6}.bar .photo-target{width:48px;height:60px;font-size:24px;color:#ffe6af;text-shadow:0 0 14px #eac576;opacity:.6;border:1px solid #fff0bf22;background:#fff0bf03;border-radius:30%}.show-hints .photo-target:not(.collected){opacity:1;background:color-mix(in srgb,var(--accent) 18%,transparent);box-shadow:0 0 0 7px color-mix(in srgb,var(--accent) 9%,transparent),0 0 30px color-mix(in srgb,var(--accent) 70%,transparent);border-color:var(--accent);animation:hint-beacon 1.8s ease-in-out infinite}.nudge-game .photo-instructions{animation:instruction-nudge .6s ease}.wrong-note .interactive-photo{animation:instruction-nudge .4s ease}.photo-status{transition:color .4s}.has-photo-game[data-solved=true] .photo-status{font-style:italic}
.shutter-button{position:absolute;bottom:10%;left:50%;transform:translateX(-50%);width:58px;height:58px;background:#ece7d818;border:1px solid #fff8;border-radius:50%;backdrop-filter:blur(8px);font-size:37px;z-index:5;display:grid;place-items:center;box-shadow:inset 0 0 0 5px #ffffff0d}.shutter-button:hover{background:#fff3}.focus-meter{width:min(280px,100%);height:16px;position:relative;border-radius:10px;background:#ffffff12;border:1px solid #ffffff21;overflow:hidden}.focus-zone{position:absolute;left:33%;width:34%;height:100%;background:#e6ddbe66;transition:all 1s}.focus-meter i{position:absolute;top:0;bottom:0;left:var(--cursor,50%);width:3px;background:#fff3dc;box-shadow:0 0 12px #ffefd4}.show-hints .focus-zone{left:16%;width:68%;background:#e6ddbeaa}.shutter-flash .interactive-photo:after{content:'';position:absolute;inset:0;background:#ffefd7;pointer-events:none;animation:shutter-light .6s ease-out forwards;z-index:9}.has-photo-game[data-solved=true] .focus-meter{opacity:.4}
.glasses-glint{position:absolute;left:var(--image-x);top:var(--image-y);width:var(--image-w);height:var(--image-h);pointer-events:none;opacity:var(--lens-shine,0);transition:opacity .3s;z-index:4}.glasses-glint:before,.glasses-glint:after{content:'';position:absolute;width:18%;height:14%;top:45%;left:45%;border-radius:50%;background:linear-gradient(125deg,transparent 20%,#fff9 45%,#fff 48%,#fff9 51%,transparent 72%);filter:blur(1px);transform:rotate(8deg);mix-blend-mode:screen}.glasses-glint:after{left:68%;top:49%;width:16%}.light-slider{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--accent);width:min(290px,100%)}.light-slider input{width:100%;height:28px;accent-color:#967253;cursor:ew-resize}.show-hints .light-slider input{filter:drop-shadow(0 0 7px #cc9a5a99)}
/* An illuminated, clipped ticket: a single deliberate next control. */
.story-controls{width:min(500px,89vw);gap:16px;height:64px;bottom:calc(22px + var(--safe-bottom))}.next-arena{justify-content:flex-end}.next{width:min(280px,100%);height:64px;min-height:64px;padding:0 24px;border:0;border-radius:0;gap:18px;background:transparent!important;box-shadow:none!important;backdrop-filter:none;animation:none;overflow:visible;justify-content:space-between;transition:filter .3s,scale .2s}.next:before{inset:1px;background:linear-gradient(100deg,color-mix(in srgb,var(--accent) 5%,transparent),color-mix(in srgb,var(--accent) 13%,transparent));clip-path:polygon(0 0,91% 0,100% 39%,100% 100%,9% 100%,0 61%);animation:none;transform:none}.next-frame{position:absolute;inset:0;width:100%!important;height:100%!important;overflow:visible;fill:none!important;pointer-events:none}.next-frame path{fill:none;stroke:var(--accent);stroke-width:.7;opacity:.38;vector-effect:non-scaling-stroke}.next-frame .next-edge{stroke-width:1.8;opacity:.9;stroke-dasharray:60 40;animation:ticket-current 6s linear infinite}.next-copy{font-size:13px;letter-spacing:.2px;white-space:normal;text-align:left;line-height:1.4;max-width:190px}.next-arrow{background:none!important;border-radius:0;box-shadow:none!important;color:var(--accent);width:26px;height:30px;font-size:29px;flex-shrink:0;animation:ticket-arrow 3s ease-in-out infinite}.next:hover{filter:drop-shadow(0 0 9px color-mix(in srgb,var(--accent) 20%,transparent))}.next.needs-discovery{opacity:.6}.next.needs-discovery .next-arrow{font-size:0;animation:none}.next.needs-discovery .next-arrow:after{content:'◇';font-size:23px}.next.needs-discovery .next-frame .next-edge{animation-duration:10s}.next.needs-discovery:focus-visible{opacity:1}.back{width:40px;height:40px;border-radius:6px;transform:rotate(-10deg);background:transparent}
@keyframes detail-float{0%,100%{translate:0 0;rotate:-6deg;opacity:var(--twinkle)}50%{translate:calc(var(--drift)*12px) -20px;rotate:10deg;opacity:calc(var(--twinkle)*1.6)}}@keyframes target-drift{50%{translate:0 -4px}}@keyframes target-caught{to{scale:1.8;translate:0 -25px;opacity:0}}@keyframes hint-beacon{50%{scale:1.12;filter:brightness(1.35)}}@keyframes instruction-nudge{25%,75%{translate:3px 0}50%{translate:-3px 0}}@keyframes art-breathe{50%{scale:1.012;filter:brightness(1.06)}}@keyframes bar-breathe{50%{filter:brightness(1.08);translate:0 -3px}}@keyframes shutter-light{from{opacity:.6}to{opacity:0}}@keyframes ticket-current{to{stroke-dashoffset:-100}}@keyframes ticket-arrow{0%,65%,100%{translate:0 0}80%{translate:3px -3px}}
@media(max-width:900px){.scene.has-photo-game{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto;padding:84px 6vw 120px;gap:14px}.has-photo-game>h2{grid-column:1;grid-row:1;text-align:center;align-self:center;font-size:clamp(31px,7.8vw,50px)}.interactive-photo{grid-column:1;grid-row:2;align-self:stretch!important;max-height:none!important}.photo-instructions{grid-column:1;grid-row:3;align-self:center;justify-self:center;text-align:center;max-width:100%!important;gap:8px;align-items:center;width:100%}.photo-status{font-size:12px;line-height:1.5;min-height:36px}.cat .photo-status{min-height:24px}.photo-atmosphere{filter:blur(32px)}.best .photo-atmosphere{filter:blur(36px)}.light-slider{gap:3px;font-size:11px;width:230px}.focus-meter{height:12px;width:210px}.scene-details>span:nth-child(n+18){display:none}.story-controls{bottom:calc(17px + var(--safe-bottom));height:58px;width:88vw;gap:13px}.next{height:58px;min-height:58px;padding:0 19px}.next-copy{font-size:12px}.next-arrow{font-size:26px}.back{width:35px;height:35px}.kindness h2{font-size:clamp(31px,8vw,43px)}.bar .photo-target{width:38px;height:45px}.photo-target{width:40px;height:40px;font-size:30px}}
@media(max-height:700px){.scene.has-photo-game{padding-top:72px;padding-bottom:100px;gap:10px}.has-photo-game>h2{font-size:clamp(27px,6.8vw,42px)}.photo-status{font-size:11px;min-height:32px}.photo-instructions{gap:6px}.story-controls{bottom:calc(13px + var(--safe-bottom));height:56px}.next{height:56px;min-height:56px}.shutter-button{width:46px;height:46px;font-size:30px}.photo-target{width:37px;height:37px;font-size:28px}.bar .photo-target{width:34px;height:42px}}
@media(max-height:500px) and (orientation:landscape){.scene.has-photo-game{grid-template-columns:1fr 1.2fr;grid-template-rows:1fr 1fr;padding:59px 7vw 76px;column-gap:30px;row-gap:12px}.has-photo-game>h2{grid-column:1;grid-row:1;align-self:end;text-align:left;font-size:27px;max-width:100%;width:100%}.interactive-photo{grid-column:2;grid-row:1/3}.photo-instructions{grid-column:1;grid-row:2;text-align:left;align-items:flex-start;align-self:start}.story-controls{height:45px;bottom:8px;max-width:360px}.next{height:45px;min-height:45px}.next-copy{font-size:11px}.photo-status{font-size:10px;min-height:25px}.light-slider{width:190px;font-size:10px}.photo-target{width:32px;height:32px;font-size:23px}.bar .photo-target{width:28px;height:34px}.shutter-button{width:39px;height:39px;font-size:26px}.scene-details>span:nth-child(n+12){display:none}}
.scene.has-photo-game{overflow:clip}.photo-atmosphere{inset:0;transform:scale(1.12)}.interactive-photo{height:100%}.interactive-photo img{position:absolute;left:var(--image-x);top:var(--image-y);width:var(--image-w);height:var(--image-h);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent),linear-gradient(transparent,#000 12%,#000 88%,transparent)}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.interactive-photo img{transform:none!important;animation:none!important;will-change:auto}}
