/* One quiet interaction rhythm, with no layout shifts or navigation delays. */
:root {
  --rd-motion-ease:cubic-bezier(.22,1,.36,1);
  --rd-motion-feedback:180ms;
  --rd-motion-surface:260ms;
  --rd-motion-dialog:220ms;
}
body[class] :is(
  .header a,.header button,.menu-links>a,.menu-close,
  .rd-hero-actions>a,.rd-text-link,.visual-link,.wd-button,.home-maker .text-link,
  .home-button,.hero-primary,.hero-secondary,.package-cta,
  .footer-nav>a,.footer-email,.footer-top,.footer-legal a,
  .msk-dialog-cta,.msk-dialog-close,.close-dialog,
  .photo-cart-launcher,.photo-cart-close,.photo-cart-remove,.photo-cart-continue,
  .photo-cart-request,.photo-cart-browse,.photo-select,.album-selection-open,
  .viewer-select,.viewer-cart-open,.viewer-prev,.viewer-next,.viewer-close,.viewer-thumb,
  .rd-launcher,.rd-choices>button,.rd-contact-options>button,.rd-primary
) {
  transition:background-color var(--rd-motion-feedback) var(--rd-motion-ease),
    color var(--rd-motion-feedback) var(--rd-motion-ease),
    border-color var(--rd-motion-feedback) var(--rd-motion-ease),
    opacity var(--rd-motion-feedback) var(--rd-motion-ease),
    box-shadow var(--rd-motion-feedback) var(--rd-motion-ease),
    transform var(--rd-motion-feedback) var(--rd-motion-ease);
}
/* Let colour carry the hover response instead of moving text or whole buttons. */
body[class] :is(.wd-button,.rd-hero-actions>a,.home-button,.hero-primary,.hero-secondary,.package-cta,.header .contact-button):hover {
  transform:none;
}
body[class] :is(.wd-button,.rd-hero-actions>a,.home-button,.hero-primary,.hero-secondary,.package-cta,.msk-dialog-cta,.photo-cart-request,.rd-primary):active:not(:disabled) {
  transform:translateY(1px);
}
body[class] :is(.rd-text-link,.visual-link,.msk-dialog-cta,.wd-button)>.ui-icon {
  transition:opacity var(--rd-motion-feedback) var(--rd-motion-ease);
}
body[class] :is(.home-work-card,.wd-project-tile,.album-card,.home-album-card) {
  transition:background-color var(--rd-motion-surface) var(--rd-motion-ease),
    border-color var(--rd-motion-surface) var(--rd-motion-ease),
    box-shadow var(--rd-motion-surface) var(--rd-motion-ease),
    transform var(--rd-motion-surface) var(--rd-motion-ease);
}
@media(hover:hover) and (pointer:fine) {
  body[class] :is(.home-work-card,.wd-project-tile,.album-card,.home-album-card):hover {
    transform:translateY(-2px);
  }
}
@media(hover:none), (pointer:coarse) {
  body[class] :is(.home-work-card,.wd-project-tile,.album-card,.home-album-card):hover { transform:none; }
}
body[class] :is(.rd-notebook,.rd-handset,.project-laptop,.project-phone,.ph-print) {
  transition:transform 420ms var(--rd-motion-ease);
}
body[class] :is(.home-album-image>img,.album-card-cover>img,.visual-photo-art>img,.gallery-photo-open>img) {
  transition:transform 420ms var(--rd-motion-ease),opacity var(--rd-motion-feedback) var(--rd-motion-ease);
}
/* Only the image fades while browsing; its position stays fixed. */
body[class] .viewer-figure { transition:opacity var(--rd-motion-feedback) var(--rd-motion-ease); }
body[class] .viewer-figure.is-changing { opacity:.65; transform:none; }
body[class] .gallery-photo { transition:box-shadow var(--rd-motion-feedback) var(--rd-motion-ease); }
body[class] :is(.rd-panel,.rd-answer,.rd-hint) {
  animation:rd-quiet-appear var(--rd-motion-dialog) var(--rd-motion-ease) both;
}
/* A short, matching fade for project windows, menu, viewer and checkout. */
body[class] dialog:is(.rd-project-dialog,.photo-cart-sheet,.rd-viewer,#mobile-nav,#contact-dialog)[open] {
  animation:rd-quiet-appear var(--rd-motion-dialog) var(--rd-motion-ease) both;
}
@keyframes rd-quiet-appear { from { opacity:0; } to { opacity:1; } }
/* Native discrete transitions also let closing dialogs fade without delaying their actions. */
@supports (transition-behavior:allow-discrete) {
  body[class] dialog:is(.rd-project-dialog,.photo-cart-sheet,.rd-viewer,#mobile-nav,#contact-dialog) {
    opacity:0;
    transition:opacity var(--rd-motion-dialog) var(--rd-motion-ease),
      display var(--rd-motion-dialog) allow-discrete,
      overlay var(--rd-motion-dialog) allow-discrete;
  }
  body[class] dialog:is(.rd-project-dialog,.photo-cart-sheet,.rd-viewer,#mobile-nav,#contact-dialog)[open] {
    animation:none; opacity:1;
  }
  body[class] dialog:is(.rd-project-dialog,.photo-cart-sheet,.rd-viewer,#mobile-nav,#contact-dialog)::backdrop {
    opacity:0;
    transition:opacity var(--rd-motion-dialog) var(--rd-motion-ease),
      display var(--rd-motion-dialog) allow-discrete,
      overlay var(--rd-motion-dialog) allow-discrete;
  }
  body[class] dialog:is(.rd-project-dialog,.photo-cart-sheet,.rd-viewer,#mobile-nav,#contact-dialog)[open]::backdrop { opacity:1; }
  @starting-style {
    body[class] dialog:is(.rd-project-dialog,.photo-cart-sheet,.rd-viewer,#mobile-nav,#contact-dialog)[open],
    body[class] dialog:is(.rd-project-dialog,.photo-cart-sheet,.rd-viewer,#mobile-nav,#contact-dialog)[open]::backdrop { opacity:0; }
  }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto!important; }
  body[class] *,body[class] *::before,body[class] *::after {
    transition:none!important; animation:none!important;
  }
  body[class] .viewer-figure.is-changing { opacity:1; transform:none; }
  body[class] :is(.wd-button,.rd-hero-actions>a,.home-button,.hero-primary,.hero-secondary,.package-cta,.msk-dialog-cta,.photo-cart-request,.rd-primary):active:not(:disabled) { transform:none; }
}

/* Added only after the observer is ready; no JavaScript means visible content. */
body[class] .rd-asset-pending { opacity:0; transform:translateY(28px); }
@media(prefers-reduced-motion:reduce) {
  body[class] .rd-asset-pending { opacity:1!important; transform:none!important; }
}

.rd-count-value { display:inline-grid; font-variant-numeric:tabular-nums; }
.rd-count-value>span { grid-area:1/1; }
.rd-count-size { visibility:hidden; }
