/* Review-only candidate: home-photo-scrim-hero. Local CSS stays in _incoming until review. */
.home-photo-scrim-hero{
  box-sizing:border-box;width:100%;flex:0 0 100%;
  position:relative;isolation:isolate;overflow:hidden;
  display:flex;flex-direction:column;
  min-height:var(--hero-h);
  background:var(--ink);color:var(--on-dark);

  
  
  --hero-h:min(824px,calc(96vh - 56px));
  
  --plate-inset:0px;

  
  --fit-h:calc(var(--hero-h) - var(--plate-inset));
  --dev-x:calc(100vw - min(0.527512 * 100vw,0.937301 * var(--fit-h)));
  --copy-max:min(640px,calc(var(--dev-x) - (100vw - var(--shell))/2 - 44px));
}

/* Full-bleed hero candidate: keep the source page's viewport-width root even
   inside the shared preview boundary. */
.home-photo-scrim-hero{
  width:100vw;
  max-width:100vw;
}



.home-photo-scrim-hero__frame{position:relative;isolation:isolate;flex:1 1 auto;display:flex;flex-direction:column;min-height:0}

.home-photo-scrim-hero__photo{
  position:absolute;inset:0;z-index:-2;overflow:hidden;pointer-events:none;
  -webkit-mask-image:linear-gradient(to bottom,var(--grey-dark) calc(100% - 30px),rgba(24,24,24,0) 100%);
  mask-image:linear-gradient(to bottom,var(--grey-dark) calc(100% - 30px),rgba(24,24,24,0) 100%);
}

.home-photo-scrim-hero__scrim{
  position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(58% 62% at 82% 42%,rgba(66,102,83,.30) 0%,rgba(66,102,83,0) 60%),
    linear-gradient(to right,rgba(24,24,24,.95) 0%,rgba(24,24,24,.88) 24%,rgba(24,24,24,.62) 40%,rgba(24,24,24,.22) 52%,rgba(24,24,24,0) 64%),
    linear-gradient(to top,rgba(24,24,24,.42) 0%,rgba(24,24,24,0) 30%);
}


.home-photo-scrim-hero__aurora-line{
  position:absolute;z-index:0;inset:0 0 auto;height:2px;pointer-events:none;
  background:linear-gradient(90deg,transparent 0%,rgba(212,175,55,0) 12%,var(--gold-pure) 46%,var(--sage) 58%,transparent 92%);
  background-size:220% 100%;
  opacity:.7;animation:home-photo-scrim-hero-sweep 9s linear infinite;
}
@keyframes home-photo-scrim-hero-sweep{0%{background-position:220% 0}100%{background-position:-220% 0}}


.home-photo-scrim-hero__inner{
  position:relative;z-index:1;
  width:var(--shell);margin:0 auto;
  flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;
  padding:clamp(36px,5vh,64px) 0 clamp(44px,6vh,76px);
}
.home-photo-scrim-hero__copy{max-width:min(var(--copy-max),100%)}


.home-photo-scrim-hero__eyebrow{
  display:inline-block;margin-bottom:16px;
  font-family:var(--body);font-weight:700;font-size:var(--fs-small);
  line-height:var(--lh-tight);letter-spacing:.16em;text-transform:uppercase;color:var(--gold-pure);
}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .home-photo-scrim-hero .home-photo-scrim-hero__eyebrow{
    background:linear-gradient(92deg,var(--gold-pure) 0%,var(--cream) 46%,var(--cream) 100%);
    -webkit-background-clip:text;background-clip:text;
    color:transparent;-webkit-text-fill-color:transparent;
  }
}


.home-photo-scrim-hero__title{
  font-family:var(--display);font-weight:var(--display-weight);
  font-size:var(--fs-hero);line-height:var(--lh-tight);letter-spacing:var(--display-track);
  color:var(--on-dark);margin-bottom:18px;text-wrap:balance;
  text-shadow:0 2px 24px rgba(24,24,24,.55);
}
.home-photo-scrim-hero__title .home-photo-scrim-hero__title-line{display:block;overflow:visible}

.home-photo-scrim-hero__title .home-photo-scrim-hero__title-line > i{display:block;font-style:normal}
.js .home-photo-scrim-hero__title .home-photo-scrim-hero__title-line > i{transform:none}
.js .home-photo-scrim-hero__title.in .home-photo-scrim-hero__title-line > i{transform:none;transition:none}

.home-photo-scrim-hero__lede{
  font-size:var(--fs-standard-lede);line-height:var(--lh-copy);color:var(--on-dark-soft);
  max-width:54ch;margin-bottom:18px;
  text-shadow:0 1px 14px rgba(24,24,24,.55);
}
.home-photo-scrim-hero__lede b{font-weight:700;color:var(--paper)}


.home-photo-scrim-hero__cta-row{display:flex;flex-direction:row;align-items:center;gap:20px;flex-wrap:wrap}
.home-photo-scrim-hero__primary-cta{
  position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:12px;
  padding:16px 28px;background:var(--gold);color:var(--cta-ink);
  font-family:var(--display);font-size:var(--fs-standard-lede);line-height:var(--lh-tight);letter-spacing:.05em;text-transform:uppercase;
  box-shadow:0 12px 30px -14px rgba(212,175,55,.7);
  transition:background .25s var(--ease),box-shadow .4s var(--ease),transform .25s var(--ease);
}
.home-photo-scrim-hero__primary-cta:hover{background:var(--gold-pure);color:var(--grey-dark);box-shadow:0 16px 34px -12px rgba(212,175,55,.55);transform:translateY(-2px)}
.home-photo-scrim-hero__primary-cta:focus-visible{outline:3px solid var(--gold-pure);outline-offset:4px}
.home-photo-scrim-hero__primary-cta:active{transform:translateY(0)}
.home-photo-scrim-hero__primary-cta-arrow{display:inline-block;transition:transform .3s var(--ease)}
.home-photo-scrim-hero__primary-cta:hover .home-photo-scrim-hero__primary-cta-arrow{transform:translateX(6px)}
.home-photo-scrim-hero__primary-cta::after{
  content:'';position:absolute;top:0;bottom:0;left:-40%;width:34%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);
  transform:skewX(-18deg);transition:left .62s var(--ease);
}
.home-photo-scrim-hero__primary-cta:hover::after{left:118%}
.home-photo-scrim-hero__cta-note{font-size:var(--fs-body);line-height:var(--lh-tight);color:var(--on-dark-faint);max-width:26ch}


@media (max-width:960px){
  .home-photo-scrim-hero{display:flex;flex-direction:column;min-height:0;background:var(--ink)}
  .home-photo-scrim-hero__frame{display:contents}
  .home-photo-scrim-hero__inner{order:1;flex:0 0 auto;padding-bottom:clamp(28px,4vh,40px)}
  .home-photo-scrim-hero__photo{order:2;position:relative;inset:auto;z-index:0;width:100%;aspect-ratio:1672/941;border-top:1px solid rgba(255,255,255,.16);--plate-inset:0px}
  .home-photo-scrim-hero__copy{max-width:none}
  .home-photo-scrim-hero__scrim{display:none}
  .home-photo-scrim-hero__title,.home-photo-scrim-hero .home-photo-scrim-hero__lede{text-shadow:none}
  .home-photo-scrim-hero__title{max-width:13ch}
}
@media (max-width:600px){.home-photo-scrim-hero__inner{padding-top:30px}.home-photo-scrim-hero__cta-row{align-self:stretch}.home-photo-scrim-hero__primary-cta{justify-content:center}}
@media (prefers-reduced-motion:reduce){
  .home-photo-scrim-hero__aurora-line{animation:none}
  .home-photo-scrim-hero__primary-cta,.home-photo-scrim-hero__primary-cta::after,.home-photo-scrim-hero__primary-cta-arrow{transition:none}
  .home-photo-scrim-hero__primary-cta:hover{transform:none}
}

/* Headline width repair 2026-09-20. */
.home-photo-scrim-hero__copy{
  width:100%;
  max-width:none;
}
@media (max-width:960px){
  .home-photo-scrim-hero__copy{
    width:100%;
    max-width:none;
  }
  .home-photo-scrim-hero__title{
    max-width:none;
  }
}

/* 80px section-padding exception 2026-09-21: hero banner owns its own viewport rhythm. */
.home-photo-scrim-hero{
  min-height:var(--hero-h);
  padding-top:0;
  padding-bottom:0;
}
.home-photo-scrim-hero__frame,
.home-photo-scrim-hero__inner{
  flex:1 1 auto;
}
.home-photo-scrim-hero__inner{
  justify-content:center;
  padding:clamp(36px,5vh,64px) 0 clamp(44px,6vh,76px);
}
@media (max-width:960px){
  .home-photo-scrim-hero__inner{
    flex:0 0 auto;
    padding-bottom:clamp(28px,4vh,40px);
  }
  .home-photo-scrim-hero__frame{
    display:contents;
  }
}
@media (max-width:600px){
  .home-photo-scrim-hero__inner{
    padding-top:30px;
  }
}

/* Title/description stack standard 2026-09-21: main title stacks above description at 75% content width. */
[data-section="home-photo-scrim-hero"] .home-photo-scrim-hero__title,
[data-section="home-photo-scrim-hero"] .home-photo-scrim-hero__lede{
  width:var(--title-description-width) !important;
  max-width:var(--title-description-width) !important;
  flex:0 0 var(--title-description-width) !important;
  grid-column:1 / -1 !important;
  justify-self:start !important;
  align-self:start !important;
  margin-left:0 !important;
  margin-right:auto !important;
}
[data-section="home-photo-scrim-hero"] .home-photo-scrim-hero__lede{
  margin-top:24px !important;
}


/* Page-specific photo hero variant from staging-home. */
/* hero-primary — exception: source eyebrow + one primary CTA + secondary work link.
   Credential strip removed from hero per Grace; film control omitted (asset missing). */
/* hero-primary — exception: the source hero is a full-bleed photograph, not the
   template's device-plate composite. The template's tablet video/gloss are
   matrix3d-mapped to coordinates inside its own 1672x941 plate photo, so they
   cannot ride on a different image — plate, video, gloss and finger are dropped
   and the source photo covers the frame. This also retires the plate-fit sizer.
   Source file: assets/hero/hero-placeholder.jpg (2560x1429), from
   00-source/source-snapshot/agent-capture/assets/home-assets/hero/.
   Mirrored so the figure reads on the right and the digital range on the left,
   which clears the left-aligned copy column. */
.home-photo-scrim-hero__source-photo{
  width:100%;height:100%;display:block;
  object-fit:cover;object-position:50% 50%;
  transform:scaleX(-1);
}
@media (max-width:960px){
  .home-photo-scrim-hero__photo{aspect-ratio:2560/1429}
}

/* hero-primary — exception: softer scrim ramp. The template starts at .95 and
   is fully clear by 64%, which reads as a hard dark slab with an abrupt edge.
   Starting at .80 and carrying the falloff further right gives a longer, more
   even gradient while keeping the copy legible. */
.home-photo-scrim-hero__scrim{
  background:
    radial-gradient(58% 62% at 82% 42%,rgba(66,102,83,.30) 0%,rgba(66,102,83,0) 60%),
    linear-gradient(to right,rgba(24,24,24,.80) 0%,rgba(24,24,24,.74) 28%,rgba(24,24,24,.58) 46%,rgba(24,24,24,.34) 62%,rgba(24,24,24,.12) 78%,rgba(24,24,24,0) 92%),
    linear-gradient(to top,rgba(24,24,24,.42) 0%,rgba(24,24,24,0) 30%);
}

/* hero-primary — exception: page H1 treatment. The template is built around an
   h2 at --fs-hero (40px); this page's hero is the document's only top-level
   heading, so it takes an h1 at display scale. Decoration is stripped back to
   type: no gradient-clipped eyebrow, no heavy blur shadow behind the headline,
   no shine sweep or lift on the CTA. Scale, leading and spacing carry it. */
.home-photo-scrim-hero__inner{
  --copy-max:none;
}
.home-photo-scrim-hero .home-photo-scrim-hero__eyebrow{
  display:inline-flex;
  align-items:center;
  gap:14px;
  margin-bottom:38px;
  background:none;
  -webkit-background-clip:border-box;
  background-clip:border-box;
  -webkit-text-fill-color:currentColor;
  color:var(--gold-pure);
  font-family:var(--body);
  font-size:var(--fs-small);
  font-weight:700;
  line-height:1;
  letter-spacing:.22em;
  text-transform:uppercase;
}
.home-photo-scrim-hero .home-photo-scrim-hero__eyebrow::before{
  content:'';
  display:block;
  width:40px;
  height:1px;
  flex:0 0 auto;
  background:var(--gold-pure);
}
.home-photo-scrim-hero__title{
  font-size:clamp(70px,5.8vw,92px);
  font-weight:var(--display-weight);
  line-height:1.02;
  letter-spacing:-.015em;
  color:var(--paper);
  text-shadow:0 1px 2px rgba(24,24,24,.34);
  text-wrap:balance;
}
.home-photo-scrim-hero__title .home-photo-scrim-hero__title-line:last-child > i{
  color:var(--gold-head);
}
.home-photo-scrim-hero__lede{
  margin-top:36px !important;
  width:min(46ch,100%) !important;
  max-width:min(46ch,100%) !important;
  font-size:clamp(19px,1.35vw,21px);
  font-weight:300;
  line-height:1.65;
  color:var(--on-sage);
  text-shadow:0 1px 2px rgba(24,24,24,.3);
}
.home-photo-scrim-hero__cta-row{
  gap:14px 32px;
  margin-top:52px;
}
.home-photo-scrim-hero__primary-cta{
  gap:14px;
  min-height:56px;
  padding:0 34px;
  font-family:var(--body);
  font-size:var(--fs-content-cta);
  font-weight:700;
  line-height:1.1;
  letter-spacing:.1em;
  text-transform:uppercase;
  box-shadow:none;
  transition:background .25s var(--ease);
}
.home-photo-scrim-hero__primary-cta:hover{
  box-shadow:none;
  transform:none;
}
.home-photo-scrim-hero__primary-cta::after{content:none}

/* Hero H1 steps down only where 70px genuinely stops fitting. The longest line
   measures 535px at 70px and the title box is 0.75 x min(1200, vw - 80), so the
   floor holds down to vw ~793px. Below that the shell is too narrow. */
@media (max-width:792px){
  .home-photo-scrim-hero__title{
    font-size:clamp(46px,8.6vw,64px);
  }
  .home-photo-scrim-hero__lede{font-size:19px}
}
@media (max-width:600px){
  .home-photo-scrim-hero__title{
    font-size:clamp(36px,9.6vw,46px);
    letter-spacing:-.01em;
  }
  .home-photo-scrim-hero__cta-row{margin-top:32px;gap:12px}
  .home-photo-scrim-hero__secondary-cta{min-height:48px}
}

.home-photo-scrim-hero__secondary-cta{
  display:inline-flex;align-items:center;gap:10px;
  min-height:56px;
  padding:0;
  border:0;
  color:var(--on-dark-soft);
  font-family:var(--body);
  font-size:var(--fs-content-cta);
  font-weight:700;
  line-height:1.1;
  letter-spacing:.1em;
  text-transform:uppercase;
  /* Underline hugs the text. A border-bottom would draw at the edge of the
     56px box — the height exists only to baseline-match the primary CTA — and
     read as a stray rule floating under the label. */
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-decoration-color:rgba(255,255,255,.4);
  text-underline-offset:7px;
  transition:color .25s var(--ease),text-decoration-color .25s var(--ease);
}
.home-photo-scrim-hero__secondary-cta span{
  display:inline-block;            /* keeps the arrow out of the underline */
  transition:transform .3s var(--ease);
}
.home-photo-scrim-hero__secondary-cta:hover{
  color:var(--gold-pure);
  text-decoration-color:var(--gold-pure);
}
.home-photo-scrim-hero__secondary-cta:hover span{transform:translateX(6px)}

[data-section="home-photo-scrim-hero"] .home-photo-scrim-hero__lede{
  margin-top:36px !important;
  width:min(46ch,100%) !important;
  max-width:min(46ch,100%) !important;
}
