.room-photo-carousel{--photo-hover-duration:calc(var(--dur-slow) * 2);--photo-hover-ease:cubic-bezier(0.4,0,0.2,1);position:relative;aspect-ratio:1;min-width:0;overflow:hidden;border-radius:var(--space-4);background:var(--surface-sunken)}.room-photo-link{position:absolute;inset:0;display:grid;place-items:center;font-size:var(--text-sm);color:var(--ink-muted)}.room-photo-track{position:absolute;inset:0;display:flex;transition:transform var(--dur-slow) var(--ease-out)}.room-photo-slide{position:relative;flex:0 0 100%;min-width:0;overflow:hidden}.room-photo-link img{object-fit:cover;transform:scale(1);transition:transform var(--photo-hover-duration) var(--photo-hover-ease)}.room-photo-carousel:has(:focus-visible) .room-photo-link img,.room-photo-carousel:hover .room-photo-link img{transform:scale(1.035)}.room-photo-heart{top:var(--space-3);right:var(--space-3);color:var(--on-accent);filter:drop-shadow(0 1px 2px var(--ink))}.room-photo-arrow,.room-photo-heart{position:absolute;pointer-events:none}.room-photo-arrow{top:50%;transform:translateY(-50%);display:grid;place-items:center;width:var(--control-h-lg);height:var(--control-h-lg);border:0;border-radius:var(--radius-full);background:transparent;color:var(--on-accent);filter:drop-shadow(0 1px 2px var(--ink));cursor:pointer;opacity:0;transition:opacity var(--dur-slow) var(--photo-hover-ease)}.room-photo-arrow.is-previous{left:var(--space-2)}.room-photo-arrow.is-next{right:var(--space-2)}.room-photo-carousel:has(:focus-visible) .room-photo-arrow,.room-photo-carousel:hover .room-photo-arrow{opacity:1;pointer-events:auto}.room-photo-carousel:has(:focus-visible) .room-photo-dots,.room-photo-carousel:hover .room-photo-dots{opacity:1}.room-photo-carousel :is(a,button):focus-visible{outline:2px solid var(--focus-ring);outline-offset:-4px}.room-photo-dots{position:absolute;bottom:var(--space-3);left:50%;transform:translateX(-50%);display:flex;gap:var(--space-1);max-width:50%;overflow:hidden;pointer-events:none;opacity:0;transition:opacity var(--dur-slow) var(--photo-hover-ease)}.room-photo-dots i{width:var(--space-1);height:var(--space-1);flex-shrink:0;border-radius:var(--radius-full);background:var(--on-accent);opacity:.5;box-shadow:var(--shadow-overlay)}.room-photo-dots i.is-current{opacity:1}.room-photo-retry,.room-photo-status{position:absolute;bottom:var(--space-2);left:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-lg);background:var(--surface);color:var(--ink);font-size:var(--text-xs)}.room-photo-retry{min-height:var(--control-h-lg);cursor:pointer}@media (hover:none){.room-photo-arrow{opacity:1;pointer-events:auto}}@media (prefers-reduced-motion:reduce){.room-photo-arrow,.room-photo-dots,.room-photo-link img,.room-photo-track{transition:none}.room-photo-carousel:has(:focus-visible) .room-photo-link img,.room-photo-carousel:hover .room-photo-link img{transform:none}}