/* ARTs hero override. Load after site.css; every selector stays inside .site-hero. */
.site-hero {
  --hero-ease-out: cubic-bezier(.25, 1, .5, 1);
  --hero-ease-in-out: cubic-bezier(.75, 0, .25, 1);
  height: max(100svh, 620px);
  min-height: 620px;
  max-height: 1250px;
}

.site-hero .hero-material { z-index: -2; }

.site-hero .hero-drawings {
  z-index: -1;
}

.site-hero .site-header {
  z-index: 6;
}

.site-hero .brand > span:first-child {
  font-size: clamp(30px, 2.1vw, 34px);
}

.site-hero .brand-description {
  font-size: clamp(10px, .75vw, 12px);
  line-height: 1.55;
  letter-spacing: .2em;
}

.site-hero .site-navigation {
  gap: clamp(24px, 2.2vw, 40px);
}

.site-hero .site-navigation a {
  padding-block: 14px;
  font-size: clamp(12px, .86vw, 14px);
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: .11em;
}

.site-hero .hero-photograph {
  top: clamp(18px, 2.8svh, 36px);
  left: 50%;
  width: min(36.3vw, 61.9svh, 655px);
  height: auto;
  aspect-ratio: 1145 / 1374;
  z-index: 0;
  overflow: hidden;
  transform: translate3d(-50%, 0, 0);
  transform-origin: center top;
}

.site-hero .hero-photograph img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.site-hero .hero-photograph::after {
  background: linear-gradient(180deg, transparent 50%, rgba(10, 11, 8, .58) 100%);
}

.site-hero .hero-lettering {
  position: absolute;
  top: 23.3%;
  left: 50%;
  width: min(46.2vw, 82svh, 900px);
  height: auto;
  z-index: 2;
  display: block;
  overflow: visible;
  pointer-events: none;
  transform: translateX(-50%);
  animation: none;
}

.site-hero .hero-lettering-mask {
  mask-type: luminance;
}

.site-hero .hero-copy {
  position: absolute;
  z-index: 3;
  right: 4%;
  bottom: clamp(30px, 4.8svh, 60px);
  left: 4%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(28px, 4svh, 48px);
  pointer-events: none;
}

.site-hero .hero-title {
  position: static;
  inset: auto;
  width: 100%;
  margin: 0;
  font-size: clamp(52px, min(7.05vw, 11.7svh), 118px);
  line-height: .9;
  pointer-events: auto;
}

.site-hero .hero-title-line {
  display: block;
  margin-bottom: .06em;
}

.site-hero .hero-title-line:last-child {
  margin-bottom: 0;
  font-size: .94em;
}

.site-hero .hero-title-word {
  display: inline-block;
  white-space: nowrap;
}

.site-hero .hero-title-char {
  display: inline-block;
  transform-origin: center;
}

.site-hero .hero-cta {
  position: relative;
  inset: auto;
  bottom: auto;
  left: auto;
  flex: 0 0 auto;
  min-width: clamp(300px, 21vw, 340px);
  min-height: 60px;
  padding: 17px 30px;
  gap: clamp(28px, 2.35vw, 38px);
  overflow: hidden;
  background: linear-gradient(90deg, #85856e 0 50%, #6f6f59 50% 100%) 100% 0 / 200% 100%;
  box-shadow: 0 0 0 rgba(23, 24, 15, 0);
  font: 500 15px/1.2 Arial, sans-serif;
  letter-spacing: .15em;
  transform: none;
  transition: background-position 550ms var(--hero-ease-out), box-shadow 550ms var(--hero-ease-out);
  pointer-events: auto;
}

.site-hero .hero-cta img {
  width: 36px;
  height: auto;
  flex: 0 0 auto;
  transition: transform 550ms var(--hero-ease-out);
}

.site-hero .hero-cta:focus-visible {
  background-position: 0 0;
}

.site-hero .hero-cta:focus-visible img {
  transform: translateX(8px);
}

@media (hover: hover) {
  .site-hero .hero-cta:hover {
    background-position: 0 0;
    box-shadow: 0 14px 34px rgba(23, 24, 15, .22);
  }

  .site-hero .hero-cta:hover img {
    transform: translateX(8px);
  }
}

.site-hero .hero-scroll {
  z-index: 4;
}

/* Initial states exist only after hero.js has successfully prepared the scene. */
.site-hero.hero-motion-ready:not(.hero-is-entering):not(.hero-is-complete) .hero-photograph {
  opacity: 0;
  clip-path: polygon(100% 0, 100% 0, 100% 100%, 125% 100%);
  transform: translate3d(-50%, 2rem, 0) scale(.75);
}

.site-hero.hero-motion-ready:not(.hero-is-entering):not(.hero-is-complete) .hero-photograph img {
  transform: translateX(18%) scale(1.35);
}

.site-hero.hero-motion-ready:not(.hero-is-entering):not(.hero-is-complete) .hero-title-char {
  opacity: 0;
  transform: translateY(50%) rotateY(90deg);
}

.site-hero.hero-motion-ready:not(.hero-is-entering):not(.hero-is-complete) .hero-cta,
.site-hero.hero-motion-ready:not(.hero-is-entering):not(.hero-is-complete) .hero-scroll {
  opacity: 0;
  transform: translateY(3.333rem);
}

.site-hero.hero-motion-ready.hero-mask-ready .hero-lettering-fallback {
  opacity: 0;
}

.site-hero.hero-motion-ready.hero-mask-ready .hero-ink-path {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}

.site-hero.hero-motion-ready.hero-mask-ready .hero-lettering-settle {
  opacity: 0;
}

/* ERA-derived entrance: photo 1.5s InOut; chars/containers 1.2s Out. */
.site-hero.hero-is-entering .hero-photograph {
  animation: hero-photo-in 1500ms var(--hero-ease-in-out) both;
  will-change: clip-path, opacity, transform;
}

.site-hero.hero-is-entering .hero-photograph img {
  animation: hero-photo-image-in 1500ms var(--hero-ease-in-out) both;
  will-change: transform;
}

.site-hero.hero-is-entering .hero-title-char {
  animation: hero-char-in 1200ms var(--hero-ease-out) both;
  animation-delay: calc(300ms + var(--hero-line-index, 0) * 100ms + var(--hero-char-index, 0) * 50ms);
  will-change: opacity, transform;
}

.site-hero.hero-is-entering .hero-cta {
  animation: hero-container-in 1200ms var(--hero-ease-out) 780ms both;
  will-change: opacity, transform;
}

.site-hero.hero-is-entering .hero-scroll {
  animation: hero-container-in 1200ms var(--hero-ease-out) 980ms both;
  will-change: opacity, transform;
}

.site-hero.hero-is-entering.hero-mask-ready .hero-ink-path {
  animation: hero-ink-in var(--hero-path-duration) cubic-bezier(.33, 0, .67, 1) var(--hero-path-delay) both;
  will-change: stroke-dashoffset;
}

.site-hero.hero-is-entering.hero-mask-ready .hero-lettering-settle {
  animation: hero-lettering-settle 210ms ease-out 2700ms both;
}

.site-hero.hero-is-complete .hero-photograph,
.site-hero.hero-is-complete .hero-title-char,
.site-hero.hero-is-complete .hero-cta,
.site-hero.hero-is-complete .hero-scroll {
  opacity: 1;
  transform: none;
}

.site-hero.hero-is-complete .hero-photograph {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transform: translate3d(-50%, 0, 0);
}

.site-hero.hero-is-complete .hero-photograph img {
  transform: none;
}

.site-hero.hero-is-complete .hero-title-char {
  transform: translateY(0) rotateY(0deg);
}

.site-hero.hero-is-complete.hero-mask-ready .hero-ink-path {
  stroke-dashoffset: 0;
}

.site-hero.hero-is-complete.hero-mask-ready .hero-lettering-settle {
  opacity: 1;
}

@keyframes hero-photo-in {
  from { opacity: 0; clip-path: polygon(100% 0, 100% 0, 100% 100%, 125% 100%); transform: translate3d(-50%, 2rem, 0) scale(.75); }
  to { opacity: 1; clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); transform: translate3d(-50%, 0, 0) scale(1); }
}

@keyframes hero-photo-in-mobile {
  from { opacity: .12; clip-path: polygon(100% 0, 100% 0, 100% 100%, 125% 100%); transform: translate3d(-50%, -1rem, 0) scale(1.15); }
  to { opacity: 1; clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); transform: translate3d(-50%, 0, 0) scale(1); }
}

@keyframes hero-photo-image-in {
  from { transform: translateX(18%) scale(1.35); }
  to { transform: translateX(0) scale(1); }
}

@keyframes hero-char-in {
  from { opacity: 0; transform: translateY(50%) rotateY(90deg); }
  to { opacity: 1; transform: translateY(0) rotateY(0); }
}

@keyframes hero-container-in {
  from { opacity: 0; transform: translateY(3.333rem); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes hero-container-in-mobile {
  from { opacity: 0; transform: translateY(7rem); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes hero-ink-in {
  from { stroke-dashoffset: 1; }
  to { stroke-dashoffset: 0; }
}

@keyframes hero-lettering-settle {
  from { opacity: 0; }
  to { opacity: 1; }
}

@media (max-width: 1100px) {
  .site-hero .brand > span:first-child {
    font-size: 28px;
  }

  .site-hero .brand-description {
    font-size: 10px;
  }

  .site-hero .site-navigation {
    gap: clamp(18px, 2vw, 24px);
  }

  .site-hero .site-navigation a {
    font-size: 12px;
  }

  .site-hero .hero-photograph {
    top: clamp(40px, 7svh, 72px);
    width: min(51.2vw, 61.9svh, 559px);
  }

  .site-hero .hero-lettering {
    top: 27%;
    width: min(63vw, 82svh, 690px);
  }

  .site-hero .hero-title {
    font-size: clamp(50px, min(8.4vw, 11.2svh), 92px);
  }
}

@media (max-width: 700px) {
  .site-hero {
    height: max(100svh, 640px);
    min-height: 640px;
    max-height: 1000px;
  }

  .site-hero .hero-photograph {
    top: clamp(74px, 12svh, 104px);
    width: min(71.4vw, 46.4svh, 333px);
  }

  .site-hero .brand > span:first-child {
    font-size: 24px;
  }

  .site-hero .brand-description {
    font-size: 9px;
    letter-spacing: .16em;
  }

  .site-hero .menu-toggle {
    font-size: 12px;
    letter-spacing: .12em;
  }

  .site-hero .site-navigation a {
    font-size: 15px;
  }

  .site-hero .hero-lettering {
    top: 31.5%;
    width: min(88vw, 66svh, 460px);
  }

  .site-hero .hero-copy {
    right: 3%;
    bottom: clamp(34px, 6.5svh, 66px);
    left: 3%;
    gap: clamp(25px, 4.4svh, 38px);
  }

  .site-hero .hero-title {
    font-size: clamp(34px, min(9.1vw, 7.4svh), 54px);
    line-height: 1.08;
  }

  .site-hero .hero-title-line {
    margin-bottom: .08em;
  }

  .site-hero .hero-cta {
    min-width: min(280px, 84vw);
    min-height: 56px;
    padding: 15px 24px;
    gap: 25px;
    font-size: 13px;
    letter-spacing: .14em;
  }

  .site-hero.hero-motion-ready:not(.hero-is-entering):not(.hero-is-complete) .hero-photograph {
    transform: translate3d(-50%, -1rem, 0) scale(1.15);
  }

  .site-hero.hero-motion-ready:not(.hero-is-entering):not(.hero-is-complete) .hero-cta {
    transform: translateY(7rem);
  }

  .site-hero.hero-is-entering .hero-photograph {
    animation-name: hero-photo-in-mobile;
  }

  .site-hero.hero-is-entering .hero-cta {
    animation-name: hero-container-in-mobile;
  }
}

@media (min-width: 701px) and (max-height: 720px) {
  .site-hero .hero-photograph {
    width: min(35.7vw, 69svh, 512px);
  }

  .site-hero .hero-lettering {
    top: 20%;
    width: min(45vw, 72svh, 650px);
  }

  .site-hero .hero-copy {
    bottom: 25px;
    gap: 24px;
  }

  .site-hero .hero-title {
    font-size: clamp(48px, min(6.5vw, 10.5svh), 78px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-hero .hero-photograph,
  .site-hero .hero-photograph img,
  .site-hero .hero-title-char,
  .site-hero .hero-cta,
  .site-hero .hero-scroll,
  .site-hero .hero-ink-path,
  .site-hero .hero-lettering-settle {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    transition: none !important;
  }

  .site-hero .hero-photograph {
    transform: translate3d(-50%, 0, 0) !important;
  }

  .site-hero .hero-lettering-fallback {
    opacity: 1 !important;
  }
}

/* The entrance mask is fully white once writing finishes. Release it instead
   of recompositing an unchanged mask while the hero scrolls out of view. */
.site-hero.hero-is-complete .hero-lettering image { mask: none; }
.site-hero.hero-is-complete .hero-photograph { clip-path: none; }
