/* Home pilot only. Resting content is visible, including when JS is unavailable. */
.home-responsive .home-page :is(a.home-project-card, a.home-post) {
  color: var(--color-navy);
  text-decoration: none;
  transition: border-color var(--motion-fast) var(--motion-ease-standard), background-color var(--motion-fast) var(--motion-ease-standard);
}
.home-responsive .home-page a.home-project-card {
  transition: border-color var(--motion-fast) var(--motion-ease-standard), background-color var(--motion-fast) var(--motion-ease-standard), transform var(--motion-normal) var(--motion-ease-standard);
}
.home-responsive .home-post h3 { transition: color var(--motion-fast) var(--motion-ease-standard); }
.home-responsive .home-post .text-link { color: var(--color-blue); }
.home-responsive .home-project-card__cta:hover { color: #fff; background: var(--color-blue); }
.home-responsive .home-page :is(a.home-project-card, a.home-post):focus-visible {
  outline: 3px solid var(--color-blue);
  outline-offset: 3px;
  border-color: var(--color-blue);
  transform: none;
  transition: none;
}
.home-responsive .home-post:focus-visible h3 { color: var(--color-blue); transition: none; }
.home-responsive .home-page a.button {
  transition: color var(--motion-fast) var(--motion-ease-standard), background-color var(--motion-fast) var(--motion-ease-standard), border-color var(--motion-fast) var(--motion-ease-standard);
}
.home-responsive .home-page a.button--secondary:focus-visible { background: var(--color-tint); }
.home-responsive .home-section-head > a.text-link > .icon {
  transition: transform var(--motion-normal) var(--motion-ease-standard);
}
@media (hover: hover) and (pointer: fine) {
  .home-responsive .home-page :is(a.home-project-card, a.home-post):hover { border-color: var(--color-blue); background: var(--color-tint); }
  .home-responsive .home-page a.home-project-card:hover:not(:focus-visible) { transform: translateY(-2px); }
  .home-responsive .home-post:hover h3 { color: var(--color-blue); }
  .home-responsive .home-page a.button--secondary:hover { color: var(--color-blue); border-color: var(--color-blue-secondary); background: var(--color-tint); }
  .home-responsive .home-section-head > a.text-link:hover > .icon { transform: translateX(var(--motion-arrow-shift)); }
}
/* Static native horizontal strip is the default; only a ready, eligible strip loops. */
.home-responsive .home-gallery__viewport {
  --gallery-tile-width: 280px;
  --gallery-gap: 20px;
  --gallery-tile-time: 6s; /* (280 + 20) / 50 CSS px per second. */
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
}
.home-responsive .home-gallery__track { display: flex; width: max-content; }
.home-responsive .home-gallery__group {
  display: flex;
  flex: none;
  gap: var(--gallery-gap);
  padding-right: var(--gallery-gap);
}
.home-responsive .home-gallery__group--duplicate { display: none; }
.home-responsive .home-gallery__tile {
  display: block;
  flex: 0 0 var(--gallery-tile-width);
  width: var(--gallery-tile-width);
  aspect-ratio: 3 / 2;
  overflow: hidden;
  border-radius: 10px;
  background: var(--color-tint);
}
.home-responsive .home-gallery__tile img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (width < 1024px) {
  .home-responsive .home-gallery__viewport { --gallery-tile-width: 240px; --gallery-gap: 16px; --gallery-tile-time: 5.12s; }
}
@media (width < 768px), (hover: none), (pointer: coarse) {
  .home-responsive .home-gallery__viewport { --gallery-tile-width: 220px; --gallery-gap: 16px; }
  .home-responsive .home-gallery__tile { border-radius: 7px; }
}
@media (min-width: 768px) and (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .home-responsive .home-gallery__viewport.is-ready { overflow-x: hidden; }
  .home-responsive .home-gallery__viewport.is-ready .home-gallery__group--duplicate { display: flex; }
  .home-responsive .home-gallery__viewport.is-ready .home-gallery__track {
    animation: home-gallery-loop calc(var(--gallery-count) * var(--gallery-tile-time)) linear infinite;
    animation-play-state: paused;
  }
  .home-responsive .home-gallery__viewport.is-ready.is-playing .home-gallery__track { animation-play-state: running; }
  .home-responsive .home-gallery__viewport.is-ready:hover .home-gallery__track { animation-play-state: paused; }
}
@keyframes home-gallery-loop { to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) {
  .home-responsive .home-section-head > a.text-link > .icon { transform: none; transition: none; }
  .home-responsive .home-page :is(a.home-project-card, a.home-post, a.button) { transition: none; }
  .home-responsive .home-page a.home-project-card:hover:not(:focus-visible) { transform: none; }
  .home-responsive .home-post h3 { transition: none; }
  .home-responsive .home-gallery__track { animation: none; transform: none; }
  .home-responsive .home-gallery__group--duplicate { display: none; }
}

/* Shared header pilot. Only the real site header opts into fixed positioning. */
html.has-header-motion {
  scroll-padding-top: calc(var(--site-header-height) + 12px);
}
.site-header-spacer { pointer-events: none; overflow-anchor: none; }
.has-header-motion .site-header[data-site-header].is-floating {
  position: fixed;
  inset: 0 0 auto;
  z-index: 20;
  box-shadow: var(--shadow-card);
}
.has-header-motion .site-header[data-site-header].is-header-entering {
  animation: site-header-enter var(--motion-normal) var(--motion-ease-standard) both;
}
.has-header-motion .site-header[data-site-header]:focus-within {
  animation: none;
  transform: none;
}
.has-header-motion .site-header[data-site-header] .mobile-nav {
  max-height: calc(100vh - var(--site-header-height));
  max-height: calc(100dvh - var(--site-header-height));
  overflow-y: auto;
  overscroll-behavior: contain;
  scroll-padding-block: 6px; /* Existing 3px focus ring + 3px offset. */
}
@keyframes site-header-enter {
  from { transform: translateY(-100%); }
  to { transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .has-header-motion .site-header[data-site-header].is-header-entering { animation: none; }
}
