body.is-garden-media{overflow:hidden;background:#d5b997}
.is-garden-media .site-header{display:none}
.is-garden-media #main{height:100svh;min-height:0;overflow:clip}
.memory-gallery{height:100svh;position:relative;isolation:isolate;overflow:clip;cursor:default;background:#dbc09c}
.gallery-home-scene{position:absolute;inset:0;z-index:-4;background:#dbc09c url('/scene/gallery-home-closeup-v1.webp') center/cover no-repeat;image-rendering:pixelated}
.gallery-stage-area{position:absolute;inset:0;width:100%;height:100%;min-width:0;min-height:0}
.gallery-frame{position:absolute;max-width:100%;max-height:100%;isolation:isolate}
.gallery-frame::after{content:"";position:absolute;left:5%;bottom:-7px;width:90%;height:11px;border-radius:50%;background:#6e472e65;filter:blur(5px);z-index:-1}
.gallery-frame-art{position:absolute;inset:0;border:solid transparent;border-width:var(--frame-edge,28px);border-image-source:url('/scene/home-photo-frame-v1.webp');border-image-slice:80;border-image-width:var(--frame-edge,28px);border-image-repeat:stretch;z-index:4;pointer-events:none;image-rendering:pixelated;filter:drop-shadow(2px 4px 0 #5b3e2a2e)}
.gallery-opening{position:absolute;left:calc(var(--frame-left,30px) - 1px);right:calc(var(--frame-right,30px) - 1px);top:calc(var(--frame-top,45px) - 1px);bottom:calc(var(--frame-bottom,42px) - 1px);background:#f5eddd;overflow:clip;box-shadow:0 0 0 2px #71441d;z-index:1}
.gallery-photo,.gallery-video{display:block;width:100%;height:100%;padding:0;margin:0;border:0;background:#f5eddd;border-radius:0;color:#fff}
.gallery-photo{cursor:zoom-in}
.gallery-photo img{display:block;width:100%;height:100%;object-fit:contain}
.gallery-video{object-fit:contain}
.gallery-sitters{position:absolute;left:calc(var(--frame-edge,28px)*1.03);top:calc(var(--frame-edge,28px)*.32);height:auto;max-width:none;transform:translateY(-63%);image-rendering:pixelated;pointer-events:none;z-index:6}
.gallery-replace{display:block;padding:0;border:0;border-radius:8px;background:transparent;pointer-events:auto;cursor:pointer;line-height:0}
.gallery-replace img{display:block;width:100%;height:auto;image-rendering:pixelated;transition:filter .16s}
.gallery-replace:hover img,.gallery-replace:focus-visible img{filter:drop-shadow(0 0 5px #ffd9e9) drop-shadow(0 0 10px #ee9ec0)}
.memory-gallery[data-uploading] .gallery-replace{cursor:progress;opacity:.65}
.gallery-icon{width:42px;height:42px;border:2px solid #ffe1ec;border-radius:12px;display:grid;place-items:center;padding:8px;background:#fff0f5f2;color:#b44870;box-shadow:0 3px 0 #9b456a60;transition:background .15s,transform .15s;cursor:pointer}
.gallery-icon svg{display:block;width:22px;height:22px;fill:currentColor;shape-rendering:crispEdges}
.gallery-icon:hover:not(:disabled){background:#ffd2e2;transform:translateY(-1px)}
.gallery-icon:disabled{opacity:.35;cursor:default}
.gallery-return{position:absolute;left:max(20px,env(safe-area-inset-left));top:max(20px,env(safe-area-inset-top));z-index:12}
.gallery-prev,.gallery-next{position:absolute;z-index:7;margin:0;padding:8px;background:#fff0f5ed}
.gallery-delete{position:absolute;z-index:7;width:92px;height:36px;display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;font:16px/1 var(--dialog-font,var(--font));border-radius:12px;background:#ffeef1ed}
.gallery-delete svg{width:17px;height:19px}
.memory-gallery[data-uploading] .gallery-delete{opacity:.45;pointer-events:none}
.delete-media-preview{display:grid;place-items:center;max-height:180px;margin:16px auto;color:#a65c7b;font-family:var(--dialog-font,var(--font))}
.delete-media-preview img{display:block;max-width:100%;max-height:180px;object-fit:contain;border:5px solid #f6d7c0;border-radius:8px;box-shadow:0 3px 0 #d8a899}
.gallery-next svg{transform:scaleX(-1)}
.gallery-prev[hidden],.gallery-next[hidden]{display:none}
.gallery-filmstrip{position:absolute;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);max-width:calc(100% - 150px);display:flex;gap:10px;align-items:center;overflow-x:auto;overflow-y:clip;scrollbar-width:thin;scrollbar-color:#f4afc7 transparent;padding:7px 5px 9px;z-index:10}
.gallery-thumb{position:relative;flex:0 0 68px;height:50px;border:3px solid #ffead6;background:#536c45;padding:0;border-radius:4px;box-shadow:0 3px 0 #503f3255;overflow:clip;display:grid;place-items:center;color:#fff1ec;cursor:pointer}
.gallery-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gallery-thumb img[hidden]{display:none}
.gallery-thumb>svg{width:25px;height:25px;fill:currentColor}
.gallery-thumb[aria-pressed="true"]{border-color:#f694b2;box-shadow:0 0 0 2px #fff2f5,0 3px 0 #9e5270aa}
.gallery-thumb-play{position:absolute;inset:0;display:grid;place-items:center;background:#17392a33}
.gallery-thumb-play svg{width:22px;height:22px;fill:#fff0f6;filter:drop-shadow(1px 1px 0 #643744)}
.gallery-notes{position:absolute;right:max(22px,env(safe-area-inset-right));bottom:max(33px,env(safe-area-inset-bottom));z-index:12}
.gallery-empty,.gallery-retry{width:100%;height:100%;display:grid;place-items:center;background:#eddfc6;color:#967555;border:0}
.gallery-empty svg,.gallery-retry svg{width:64px;height:64px;fill:currentColor}
.is-garden-media :focus-visible{outline:3px solid #ffc4d9;outline-offset:4px}
.is-garden-media #full-caption{display:none}
.is-garden-media .photo-dialog{background:#f2e5ce;border:5px solid #edbb86;padding:8px;border-radius:4px}
.is-garden-media .photo-close{background:#fff0f5;color:#a7456b}
.gallery-loading{height:100svh;display:grid;place-items:center;background:#d5b997 url('/scene/living-room-v2.webp') center/cover;color:#fff0f5}
.is-home-media .gallery-loading{background-image:url('/scene/gallery-home-closeup-v1.webp')}
.gallery-loading svg{width:32px;height:32px;fill:currentColor;image-rendering:pixelated}
@media(max-width:600px){
  .gallery-home-scene{background-position:left center}
  .gallery-return{left:16px;top:16px}
  .gallery-filmstrip{max-width:calc(100% - 96px);left:12px;transform:none;gap:8px;bottom:max(15px,env(safe-area-inset-bottom))}
  .gallery-thumb{flex-basis:56px;height:43px}
  .gallery-notes{right:15px;bottom:max(26px,env(safe-area-inset-bottom));width:38px;height:38px}
  .gallery-prev,.gallery-next{width:30px;height:35px;padding:5px}
}
@media(max-height:600px) and (min-width:600px){
  .gallery-return{top:14px;left:16px;width:38px;height:38px}
  .gallery-filmstrip{bottom:7px;padding-bottom:6px;gap:8px}
  .gallery-thumb{flex-basis:54px;height:38px}
  .gallery-notes{bottom:15px;width:38px;height:38px}
}

/* The cabinet is drawn into the room. All overlays share that room's camera. */
.memory-overview{position:relative;isolation:isolate;height:100svh;overflow:clip;background:#6b5545}
.overview-area{position:absolute;inset:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;touch-action:pan-x;scrollbar-width:thin;scrollbar-color:#a7815d #c7b198}
.overview-area:focus-visible{outline-offset:-4px}
.overview-stage{position:relative;height:100%;isolation:isolate}
.overview-room-art{position:absolute;max-width:none;pointer-events:none;image-rendering:pixelated;z-index:0}
.overview-wall-portrait{position:absolute;z-index:1;background-image:url('/scene/couple-wall-memories-v1.webp');background-size:300% 100%;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none;box-shadow:inset 1px 1px 0 #583a3055}
.overview-rack{position:absolute;container-type:inline-size;z-index:3}
.overview-slots{position:absolute;inset:0}
.overview-cell{position:absolute;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);place-items:center;overflow:hidden;box-sizing:border-box;border:clamp(2px,.9cqw,5px) solid #a77649;border-bottom-color:#79502e;border-right-color:#835835;padding:clamp(2px,.55cqw,3px);background:#f5e8ce;color:#bb9d74;box-shadow:inset 1px 1px 0 #f2c68c,2px 3px 0 #64462e4d;cursor:pointer}
.overview-photo>svg{grid-area:1/1;width:34%;height:42%;fill:currentColor}
.overview-add{background:#ffeedb;color:#ad5576}
.overview-add:hover{background:#ffdae6}
.overview-add svg{width:40%;height:48%;fill:currentColor;shape-rendering:crispEdges}
.overview-photo>img{grid-area:1/1;z-index:1;display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:cover;transition:filter .15s}
.overview-photo>img[hidden]{display:none}
.overview-photo:hover>img{filter:brightness(1.1)}
.overview-photo:focus-visible{outline:3px solid #ffbad4;outline-offset:3px}
.overview-cell-empty{display:none}
.overview-play{position:absolute;inset:0;z-index:2;display:grid;place-items:center;background:#392c2815;pointer-events:none}
.overview-play svg{width:clamp(18px,4cqw,30px);height:clamp(18px,4cqw,30px);fill:#fff2ef;filter:drop-shadow(1px 2px 0 #734e50)}
.overview-sign{position:absolute;background:url('/scene/keepsake-sign-v2.svg') center/100% 100% no-repeat;image-rendering:pixelated;filter:drop-shadow(2px 4px 0 #54382545);color:#62462d;text-align:center;pointer-events:none}
.overview-sign-copy{position:absolute;inset:24% 10% 29%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;overflow:hidden}
.overview-sign time{font:500 clamp(8px,2.3cqw,13px)/1.15 var(--font);white-space:nowrap;letter-spacing:0;color:#88604d;max-width:100%}
.overview-sign h1{font:400 clamp(11px,3.1cqw,17px)/1.15 var(--dialog-font,var(--font));letter-spacing:0;margin:0;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.overview-couple,.overview-dogs{position:absolute;max-width:none;image-rendering:pixelated;pointer-events:none;z-index:5}
.overview-dogs{z-index:6;overflow:visible}
.overview-dogs image{image-rendering:pixelated}
.room-dog-tail{transform-box:view-box;animation:puppy-tail-wag .85s steps(5,end) infinite}
.tail-brown{transform-origin:15px 38px;animation-delay:-.3s}
.tail-white{transform-origin:56px 36px;animation-duration:.7s;animation-delay:-.1s;animation-name:puppy-white-tail-wag}
@keyframes puppy-tail-wag{0%,100%{transform:rotate(-17deg)}50%{transform:rotate(19deg)}}
@keyframes puppy-white-tail-wag{0%,100%{transform:rotate(21deg)}50%{transform:rotate(-21deg)}}
.couple-floor-shadow,.dogs-floor-shadow{position:absolute;z-index:2;background:#573e2c50;filter:blur(3px);border-radius:50%;pointer-events:none}
.overview-pagination{position:absolute;display:flex;align-items:center;justify-content:space-between;z-index:7;pointer-events:none}
.overview-pagination .gallery-icon{pointer-events:auto;width:38px;height:38px;padding:6px}
.overview-pagination [data-overview-step="1"] svg{transform:scaleX(-1)}
.overview-pagination[hidden]{display:none}
.overview-pagination button[hidden]{visibility:hidden;pointer-events:none}
@media(max-height:500px){
  .overview-sign-copy{gap:1px}
  .overview-sign time{font-size:7px;line-height:1}
  .overview-sign h1{font-size:10px;line-height:1.1}
}
@media(prefers-reduced-motion:reduce){
  .room-dog-tail{animation:none}
}


.overview-cell .overview-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.gallery-opening[aria-busy="true"]:after{content:'♡';position:absolute;right:10px;bottom:10px;padding:3px 8px;border-radius:50%;background:#fff1f7d9;color:#a75e81;font:22px 'ZCOOL KuaiLe',cursive;pointer-events:none}
.gallery-opening .gallery-retry{position:absolute;right:12px;bottom:12px;z-index:3}
