/* Shared motion: preserve the resting design and reserve the header's space. */
:root { --header-clearance: 108px; --header-admin-offset: 0px; }
.admin-bar { --header-admin-offset: 32px; }
.has-scroll-header .site-header-slot { min-height: 90px; }
.has-scroll-header .site-header {
  position: fixed;
  z-index: 30;
  top: var(--header-admin-offset);
  left: 0;
  right: 0;
  width: auto;
  min-height: 90px;
  transition: top .4s ease, left .4s ease, right .4s ease, min-height .4s ease,
    padding .4s ease, box-shadow .4s ease, border-color .4s ease;
}
.site-header .brand__name { line-height: 1.4; }
.has-scroll-header .site-header .brand { gap: 14px; }
.has-scroll-header .site-header :is(.brand__crest, .brand__crest > span, .brand__name, .brand__custom) {
  transition: width .4s ease, height .4s ease, max-height .4s ease, font-size .4s ease, top .4s ease;
}
.has-scroll-header .desktop-nav { gap: clamp(16px, 2vw, 32px); }
.has-scroll-header :is(.anchor-section, [id][tabindex], section[id]) {
  scroll-margin-top: calc(var(--header-clearance) + var(--header-admin-offset));
}
.header-large-type .desktop-nav { display: none; }
.header-large-type .menu-toggle { display: block; }
.header-large-type .site-header .brand__name { font-size: 1.25rem; }
@media (min-width: 700px) {
  .has-scroll-header .site-header.is-compact {
    top: calc(var(--header-admin-offset) + clamp(10px, .9vw, 20px));
    left: clamp(10px, .9vw, 20px);
    right: clamp(10px, .9vw, 20px);
    min-height: 66px;
    padding: 8px clamp(18px, 2vw, 32px);
    border: 1px solid #bd96554d;
    box-shadow: 0 5px 22px #00000020;
  }
  .has-scroll-header .site-header.is-compact .brand__crest { width: 38px; height: 46px; }
  .has-scroll-header .site-header.is-compact .brand__crest > span { font-size: 16px; top: 8px; }
  .has-scroll-header .site-header.is-compact .brand__name { font-size: 1.375rem; }
  .has-scroll-header .site-header.is-compact .brand__custom { max-height: 46px; }
  .has-scroll-header .site-header.is-compact .header-contact { padding-block: 8px; }
}
@media (min-width: 700px) and (max-width: 1099px) {
  .has-scroll-header .site-header-slot,
  .has-scroll-header .site-header { min-height: 76px; }
}
@media (max-width: 782px) { .admin-bar { --header-admin-offset: 46px; } }
@media (max-width: 699px) {
  :root { --header-clearance: calc(84px + env(safe-area-inset-top, 0px)); }
  .has-scroll-header .site-header-slot,
  .has-scroll-header .site-header { min-height: 64px; }
  .has-scroll-header .site-header { padding: 7px 14px; }
  .has-scroll-header .site-header .brand { gap: 10px; }
  .has-scroll-header .site-header .brand__custom { max-width: min(62vw, 250px); max-height: 44px; }
  .has-scroll-header .site-header.is-compact {
    top: calc(var(--header-admin-offset) + 8px + env(safe-area-inset-top, 0px));
    left: calc(8px + env(safe-area-inset-left, 0px));
    right: calc(8px + env(safe-area-inset-right, 0px));
    min-height: 60px;
    padding: 6px 12px;
    border: 1px solid #bd96554d;
    box-shadow: 0 5px 22px #00000020;
  }
  .header-large-type { --header-clearance: calc(2.4rem + 36px + env(safe-area-inset-top, 0px)); }
  .header-large-type .site-header-slot,
  .header-large-type .site-header { min-height: calc(2.4rem + 16px); }
  .header-large-type .site-header .brand__name { font-size: 1.125rem; line-height: 1.2; }
  .header-large-type .site-header .brand__name > span { display: block; }
  .header-large-type .site-header.is-compact { min-height: calc(2.4rem + 16px); }
}
@media (max-width: 600px) {
  /* WordPress's mobile admin toolbar scrolls away instead of staying fixed. */
  .admin-bar.has-scrolled { --header-admin-offset: 0px; }
}
@media (max-width: 359px) {
  .header-large-type .site-header .brand__name { font-size: 1rem; }
}

/* Paint follows each rendered line. Text stays in its original flowing markup. */
.paint-reveal { position: relative; display: inline-block; max-width: 100%; vertical-align: top; }
.paint-reveal__text { display: block; }
.paint-reveal.is-pending > .paint-reveal__text { opacity: 0; }
.paint-reveal.is-playing > .paint-reveal__text { opacity: 1; }
.paint-reveal__stroke {
  position: absolute;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(110deg, #aa884f, #c9ae77);
  clip-path: inset(0 100% 0 0);
  animation: paint-fill-x 500ms ease-in-out var(--paint-start) both,
    paint-clear-x 500ms ease-in-out var(--paint-uncover) forwards;
}
.paint-reveal--vertical > .paint-reveal__stroke {
  clip-path: inset(0 0 100% 0);
  animation-name: paint-fill-y, paint-clear-y;
}
@keyframes paint-fill-x {
  from { clip-path: inset(0 100% 0 0); }
  to { clip-path: inset(0); }
}
@keyframes paint-clear-x {
  from { clip-path: inset(0); }
  to { clip-path: inset(0 0 0 100%); }
}
@keyframes paint-fill-y {
  from { clip-path: inset(0 0 100% 0); }
  to { clip-path: inset(0); }
}
@keyframes paint-clear-y {
  from { clip-path: inset(0); }
  to { clip-path: inset(100% 0 0 0); }
}
/* Reveal the existing photo and its frame only after the hero copy is complete.
   A full gold cover travels down first, then clears downward to show the photo. */
.hero__detail.is-paint-pending { opacity: 0; }
.hero__detail.is-paint-playing {
  animation: paint-fill-y 500ms ease-in-out both;
}
.hero__detail.is-paint-playing::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(110deg, #aa884f, #c9ae77);
  animation: paint-clear-y 500ms ease-in-out 500ms both;
}
@media (prefers-reduced-motion: reduce) {
  .paint-reveal.is-pending > .paint-reveal__text { opacity: 1; mask: none !important; }
  .paint-reveal__stroke { display: none; }
  .hero__detail.is-paint-pending { opacity: 1; }
  .hero__detail.is-paint-playing { animation: none; }
  .hero__detail.is-paint-playing::after { display: none; }
}
@media print {
  .has-scroll-header .site-header { position: static; }
  .paint-reveal.is-pending > .paint-reveal__text { opacity: 1; mask: none !important; }
  .paint-reveal__stroke { display: none; }
  .hero__detail.is-paint-pending { opacity: 1; }
  .hero__detail.is-paint-playing { animation: none; }
  .hero__detail.is-paint-playing::after { display: none; }
}
