/* Shared motion rhythm: deliberate entrances, short responsive interactions. */
:root {
  --hrf-ease: cubic-bezier(.22, 1, .36, 1);
  --hrf-ease-ui: cubic-bezier(.2, .7, .3, 1);
  --hrf-duration-ui: 220ms;
}
.hero-image, .about-opening-image { overflow: hidden; }
.button, .text-link, .nav a, .filters button {
  transition: background-color var(--hrf-duration-ui) var(--hrf-ease-ui),
    color var(--hrf-duration-ui) var(--hrf-ease-ui),
    border-color var(--hrf-duration-ui) var(--hrf-ease-ui);
}
.photo-button { overflow: hidden; }
.photo-button > img {
  transition: transform 600ms var(--hrf-ease);
}
@media (hover: hover) and (pointer: fine) {
  .photo-button:hover > img { transform: scale(1.025); }
}
.faq-layout summary { position: relative; padding-right: 32px; }
.faq-layout summary::before, .faq-layout summary::after {
  content: ''; position: absolute; right: 2px; top: 50%;
  width: 12px; height: 1px; background: currentColor;
  transition: transform 280ms var(--hrf-ease-ui), opacity 220ms ease;
}
.faq-layout summary::after { transform: rotate(90deg); }
.faq-layout details[open] summary::after,
.faq-layout details[data-hrf-expanded='true'] summary::after { content: ''; transform: rotate(0); opacity: 0; }
.faq-layout details[data-hrf-expanded='false'] summary::after { transform: rotate(90deg); opacity: 1; }
.hrf-faq-answer { display: flow-root; }
.hrf-faq-answer > :last-child { margin-bottom: 0; }
.hrf-sample-lightbox .hrf-lightbox__stage { min-height: 160px; padding: 16px; }
.hrf-sample-lightbox .hrf-lightbox__image { max-width: 460px; width: min(100%, 460px); height: min(42dvh, 310px); image-rendering: auto; }
.hrf-sample-lightbox .hrf-lightbox__thumbnails { display: none; }
.hrf-sample-lightbox .hrf-lightbox__credit { max-width: 58ch; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  .button, .text-link, .nav a, .filters button, .photo-button > img,
  .faq-layout summary::before, .faq-layout summary::after { transition: none !important; }
  .photo-button:hover > img { transform: none; }
}
@media print {
  [data-hrf-reveal] { opacity: 1 !important; transform: none !important; }
}

.hrf-gallery .hrf-lightbox[open] { animation: none; }

.di2026-visual-editing .photo-button > img { transition: none; transform: none; }


/* First-paint preparation is opt-in from the small blocking head script. */
html.hrf-motion-pending main, html.hrf-motion-pending body > footer { opacity: 0; }
html.hrf-motion-ready [data-hrf-reveal="pending"] { opacity: 0; transform: translateY(12px); }
main, body > footer { transition: opacity 180ms ease-in; }
html.hrf-page-leaving main, html.hrf-page-leaving body > footer { opacity: 0; }

/* Browser-owned document transitions keep the shared navigation visually stable. */
@view-transition { navigation: auto; }
.header, .site-header { view-transition-name: hrf-header; }
.mobile-call { view-transition-name: hrf-mobile-call; }
#wpadminbar { view-transition-name: hrf-admin; }
::view-transition-group(root) { animation-duration: 300ms; }
::view-transition-old(root) { animation: hrf-document-out 180ms ease-in both; mix-blend-mode: normal; }
::view-transition-new(root) { animation: hrf-document-in 280ms cubic-bezier(.22,1,.36,1) both; mix-blend-mode: normal; }
::view-transition-group(hrf-header), ::view-transition-group(hrf-mobile-call), ::view-transition-group(hrf-admin) { animation: none; }
::view-transition-old(hrf-header), ::view-transition-old(hrf-mobile-call), ::view-transition-old(hrf-admin) { animation: none; opacity: 0; }
::view-transition-new(hrf-header), ::view-transition-new(hrf-mobile-call), ::view-transition-new(hrf-admin) { animation: none; opacity: 1; mix-blend-mode: normal; }
@keyframes hrf-document-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes hrf-document-in { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  html.hrf-motion-pending main, html.hrf-motion-pending body > footer,
  html.hrf-page-leaving main, html.hrf-page-leaving body > footer,
  html.hrf-motion-ready [data-hrf-reveal="pending"] { opacity: 1; transform: none; }
  main, body > footer { transition: none; }
}
@media print {
  html.hrf-motion-pending main, html.hrf-motion-pending body > footer,
  html.hrf-page-leaving main, html.hrf-page-leaving body > footer { opacity: 1; }
}


/* Keep the full header's space in the document while its fixed visual shrinks. */
:root { --hrf-header-height: 108px; --hrf-logo-width: 188px; --hrf-compact-height: 72px; --hrf-compact-logo: 146px; }
body { padding-top: calc(var(--hrf-header-height) + 1px); }
body.admin-bar { --hrf-admin-offset: 32px; }
html { scroll-padding-top: calc(var(--hrf-header-height) + 48px); }
body > .header { position: fixed; top: var(--hrf-header-top, var(--hrf-admin-offset, 0px)); left: 0; right: 0; z-index: 60; --hrf-current-height: var(--hrf-header-height); transition: box-shadow 220ms var(--hrf-ease); }
.header .header-inner { height: var(--hrf-current-height); transition: height 220ms var(--hrf-ease); }
.header .logo { width: var(--hrf-logo-width); transition: width 220ms var(--hrf-ease); }
html.hrf-header-compact .header { --hrf-current-height: var(--hrf-compact-height); box-shadow: 0 6px 24px #17211b12; }
html.hrf-header-compact .header .logo { width: var(--hrf-compact-logo); }
html.hrf-header-reset-instant .header .header-inner, html.hrf-header-reset-instant .header .logo { transition: none; }
html.hrf-motion-ready [data-hrf-hero="pending"] { opacity: 0; }
html.hrf-motion-ready [data-hrf-hero="pending"]:not(img) { transform: translateY(8px); }
@media(max-width:1200px) { :root { --hrf-logo-width: 158px; --hrf-compact-logo: 140px; } }
@media(max-width:900px) {
  :root { --hrf-header-height: 91px; --hrf-logo-width: 165px; --hrf-compact-height: 68px; }
  .header .nav { top: 100%; max-height: calc(100dvh - var(--hrf-current-height) - var(--hrf-header-top, var(--hrf-admin-offset, 0px))); overflow-y: auto; }
}
@media(max-width:782px) { body.admin-bar { --hrf-admin-offset: 46px; } }
@media(max-width:600px) { :root { --hrf-header-height: 86px; --hrf-logo-width: 160px; --hrf-compact-height: 64px; } }
@media(prefers-reduced-motion:reduce) {
  .header, .header .header-inner, .header .logo { transition: none; }
  html.hrf-motion-ready [data-hrf-hero="pending"] { opacity: 1; transform: none; }
}
@media print {
  body { padding-top: 0; }
  body > .header { position: static; }
  [data-hrf-hero] { opacity: 1 !important; transform: none !important; }
}
