/* Site navigation, opening sequence and editorial motion. Uses the existing design tokens and fonts. */
html.is-loading, html.menu-open { overflow: hidden; }
.scroll-progress { position: fixed; top: 0; left: 0; z-index: 40; width: 100%; height: 2px; background: var(--white); opacity: .8; transform: scaleX(0); transform-origin: left; pointer-events: none; }
.site-loader { display: none; }
.motion-enabled .site-loader {
  position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center;
  background: #0a1117; color: var(--white); opacity: 0; visibility: hidden;
  transition: opacity .35s ease, visibility .35s ease;
}
.motion-enabled.is-loading .site-loader { opacity: 1; visibility: visible; }
.loader-inner { width: min(82vw, 440px); display: flex; flex-direction: column; align-items: center; text-align: center; }
.loader-logo, .site-menu-logo, .footer-logo { display: block; overflow: hidden; flex: none; }
.loader-logo { width: 86px; height: 86px; margin-bottom: 30px; }
.loader-logo img, .site-menu-logo img, .footer-logo img { display: block; width: 100%; height: 100%; object-fit: cover; transform: scale(1.65); }
.loader-name { margin: 0; font: 400 clamp(29px, 5vw, 48px)/1.1 Federo, sans-serif; letter-spacing: .075em; }
.loader-note { margin: 13px 0 40px; font: 500 10px/1.4 'DM Sans', sans-serif; letter-spacing: .26em; }
.loader-track { display: block; width: 100%; height: 1px; background: rgba(255,255,255,.27); overflow: hidden; }
.loader-track span { display: block; height: 100%; width: 100%; background: var(--white); transform: scaleX(0); transform-origin: left; animation: loader-progress 1s cubic-bezier(.2,.7,.2,1) forwards; }
.loader-count { align-self: flex-end; margin-top: 12px; font: 400 10px/1 Federo,sans-serif; letter-spacing: .18em; color: #aeb4b8; }
@keyframes loader-progress { to { transform: scaleX(1); } }

/* The curtain makes the image reveal register as one deliberate moment after the loader. */
.hero-curtain { display: none; }
.motion-enabled .hero-curtain { display: block; position: absolute; inset: 0; z-index: 6; pointer-events: none; background: #0a1117; }
.motion-enabled.site-ready .hero-curtain { animation: curtain-rise 1.1s cubic-bezier(.76,0,.24,1) forwards; }
@keyframes curtain-rise { from { transform: translateY(0); } to { transform: translateY(-101%); } }
.motion-enabled .hero .visual img { transform: scale(1.12); }
.motion-enabled.site-ready .hero .visual img { animation: hero-arrive 2.15s cubic-bezier(.2,.65,.2,1) both; }
@keyframes hero-arrive { from { transform: scale(1.12); filter: saturate(.8); } to { transform: scale(1); filter: saturate(1); } }
.motion-enabled .hero .nav, .motion-enabled .hero .stage, .motion-enabled .hero .mobile-actions, .motion-enabled .hero .bottom { opacity: 0; }
.motion-enabled.site-ready .hero .nav { animation: hero-content .8s .48s both; }
.motion-enabled.site-ready .hero .stage { animation: hero-content 1s .72s both; }
.motion-enabled.site-ready .hero .mobile-actions, .motion-enabled.site-ready .hero .bottom { animation: hero-content .85s 1.03s both; }
@keyframes hero-content { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: translateY(0); } }

/* Navigation trigger remains inside the approved header geometry. */
.nav-right { gap: clamp(20px,2.4vw,36px); }
.nav-menu-toggle { border: 0; padding: 10px 0; background: transparent; color: var(--white); cursor: pointer; display: inline-flex; align-items: center; gap: 14px; font: 700 10px/1 'DM Sans',sans-serif; letter-spacing: .18em; }
.nav-menu-toggle i { width: 21px; display: grid; gap: 5px; font-style: normal; }
.nav-menu-toggle b { display: block; width: 100%; height: 1px; background: currentColor; transition: transform .25s ease, width .25s ease; }
.nav-menu-toggle b:last-child { width: 70%; justify-self: end; }
.nav-menu-toggle:hover b:first-child { transform: translateX(3px); }
.nav-menu-toggle:hover b:last-child { width: 100%; }
.nav-menu-toggle:focus-visible, .site-menu-close:focus-visible { outline: 2px solid var(--white); outline-offset: 4px; }

.site-menu { position: fixed; inset: 0; width: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: #0a1117; color: var(--white); overflow: auto; }
.site-menu[open] { animation: menu-enter .55s cubic-bezier(.2,.7,.2,1) both; }
@keyframes menu-enter { from { opacity: 0; transform: translateY(-18px); } to { opacity: 1; transform: translateY(0); } }
.site-menu[open] .site-menu-links a { animation: menu-link-in .5s cubic-bezier(.2,.7,.2,1) both; }
.site-menu[open] .site-menu-links a:nth-child(2) { animation-delay: .06s; }
.site-menu[open] .site-menu-links a:nth-child(3) { animation-delay: .12s; }
.site-menu[open] .site-menu-links a:nth-child(4) { animation-delay: .18s; }
.site-menu[open] .site-menu-links a:nth-child(5) { animation-delay: .24s; }
@keyframes menu-link-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
.site-menu-shell { min-height: 100%; display: grid; grid-template-rows: auto 1fr auto; padding: 32px clamp(26px,5vw,80px) 27px; }
.site-menu-head, .site-menu-foot { display: flex; justify-content: space-between; align-items: center; gap: 25px; }
.site-menu-head { padding-bottom: 26px; border-bottom: 1px solid var(--line); }
.site-menu-brand { display: flex; align-items: center; gap: 16px; font: 700 13px/1.2 'DM Sans',sans-serif; letter-spacing: .2em; }
.site-menu-logo { width: 50px; height: 50px; }
.site-menu-close { display: flex; align-items: center; gap: 14px; padding: 10px 0 10px 15px; border: 0; background: none; color: var(--white); cursor: pointer; font: 700 10px/1 'DM Sans',sans-serif; letter-spacing: .18em; }
.site-menu-close span { font: 400 32px/20px 'Tenor Sans',sans-serif; }
.site-menu-main { width: min(100%,1330px); margin: auto; padding: 35px 0; display: grid; grid-template-columns: minmax(0,1.1fr) minmax(280px,.9fr); align-items: center; gap: clamp(50px,7vw,110px); }
.site-menu-links { display: grid; }
.site-menu-links a { min-width: 0; display: grid; grid-template-columns: 30px minmax(0,1fr); gap: clamp(13px,2vw,26px); align-items: baseline; padding: 13px 0 17px; border-bottom: 1px solid var(--line); transition: padding-left .25s ease, color .25s ease; }
.site-menu-links a:hover { padding-left: 9px; color: #d1dce5; }
.site-menu-links small { font: 400 11px/1 Federo,sans-serif; color: #aeb4b8; }
.site-menu-links a span { font: 400 clamp(35px,4vw,58px)/1.06 Federo,sans-serif; letter-spacing: .035em; }
.site-menu-visual { position: relative; height: clamp(330px,40vw,520px); margin: 0; overflow: hidden; }
.site-menu-visual img { display: block; width: 100%; height: 100%; object-fit: cover; }
.site-menu-visual:after { content: ''; position: absolute; inset: 0; background: linear-gradient(0deg,rgba(4,10,15,.74),transparent 45%); }
.site-menu-visual figcaption { position: absolute; z-index: 1; left: 26px; bottom: 26px; right: 26px; font: 400 12px/1.5 Federo,sans-serif; letter-spacing: .13em; }
.site-menu-foot { padding-top: 19px; border-top: 1px solid var(--line); color: #aeb4b8; font: 500 10px/1.4 'DM Sans',sans-serif; letter-spacing: .16em; }
.site-menu-foot a { color: var(--white); }

.standard-section { min-height: 0; padding: 0 clamp(12px,3vw,38px) 26px; background: #0a1117; }
.standard-section { padding-bottom: 0; }
.standard-card { min-height: 0; padding: 18px clamp(16px,3vw,36px) 14px; background: #0a1117; }
.editorial-intro { padding-top: clamp(28px,4vw,56px); }
/* Badge hierarchy and fine rules, without replacing the three verified labels or icons. */
.standard-card { border: 0; box-shadow: none; }
.standard-title { display: flex; justify-content: center; align-items: center; gap: clamp(15px,3vw,43px); margin-bottom: 10px; font-size: clamp(18px,2vw,24px); }
.standard-title:before, .standard-title:after { display: none; }
.standard-grid { border-top: 0; align-items: center; }
.standard-item { position: relative; justify-content: center; gap: 8px; padding: 10px 6px 4px; transition: background .35s ease; }
.standard-item + .standard-item { border-left: 0; }
.standard-item:hover { background: rgba(255,255,255,.025); }
.standard-index { display: none; }
.standard-icon { width: 38px; height: 38px; transition: transform .35s ease, filter .35s ease; }
.standard-label,.standard-sub { font-size: clamp(14px,1.55vw,22px); }
.standard-item:hover .standard-icon { transform: translateY(-4px); filter: drop-shadow(0 0 8px rgba(209,220,229,.32)); }

.portfolio-grid figure,.social-grid figure { cursor: zoom-in; }
.portfolio-grid figure:focus-visible,.social-grid figure:focus-visible { outline: 2px solid #fbfaf6; outline-offset: 4px; }
.gallery-dialog { position: fixed; inset: 0; width: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: #0a1117; color: #fbfaf6; overflow: hidden; }
.gallery-dialog::backdrop { background: #0a1117; }
.gallery-dialog-shell { height: 100%; min-height: 0; display: grid; grid-template-rows: auto minmax(0,1fr) auto; }
.gallery-dialog-head,.gallery-dialog-foot { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 19px clamp(23px,4vw,64px); }
.gallery-dialog-head { border-bottom: 1px solid rgba(255,255,255,.28); font: 500 10px/1.4 'DM Sans',sans-serif; letter-spacing: .2em; }
.gallery-close { border: 0; background: none; color: inherit; display: flex; align-items: center; gap: 12px; font: 500 10px/1 'DM Sans',sans-serif; letter-spacing: .17em; cursor: pointer; }
.gallery-close span { font: 400 29px/1 'Tenor Sans',sans-serif; }
.gallery-dialog-stage { min-height: 0; display: flex; align-items: center; justify-content: center; padding: clamp(13px,2vw,28px); }
.gallery-dialog-image { display: block; width: auto; height: auto; max-width: 100%; max-height: 100%; object-fit: contain; }
.gallery-dialog-foot { min-height: 105px; border-top: 1px solid rgba(255,255,255,.28); }
.gallery-dialog-count { font: 400 11px/1.2 Federo,sans-serif; letter-spacing: .17em; color: #aeb4b8; }
.gallery-dialog-caption { margin: 9px 0 0; font: 400 14px/1.45 'Tenor Sans',sans-serif; }
.gallery-dialog-controls { display: flex; align-items: center; gap: 9px; }
.gallery-dialog-controls button { min-height: 38px; padding: 0 18px; border: 1px solid rgba(255,255,255,.5); border-radius: 100px; background: transparent; color: #fbfaf6; font: 400 11px/1 Federo,sans-serif; letter-spacing: .1em; cursor: pointer; transition: background .2s,color .2s; }
.gallery-dialog-controls button:hover,.gallery-dialog-controls button:focus-visible { background: #fbfaf6; color: #0a1117; }

.button { font-family: 'DM Sans',sans-serif; border: 0; cursor: pointer; }
.nav-cta { font-family: 'DM Sans',sans-serif; background: transparent; color: #fbfaf6; cursor: pointer; }
.contact-dialog { width: min(94vw,1040px); max-width: none; max-height: min(90dvh,850px); padding: 0; border: 1px solid rgba(255,255,255,.24); border-radius: 0; background: #1b1b1b; }
.contact-close { z-index: 2; top: 18px; right: 22px; }
.inquiry-layout { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); min-height: 600px; }
.inquiry-intro { display: flex; flex-direction: column; padding: clamp(43px,5vw,70px); background: #0a1117; }
.inquiry-kicker { margin: 0 0 58px!important; font: 400 12px/1.4 Federo,sans-serif!important; letter-spacing: .16em!important; }
.contact-dialog .contact-title { margin: 0 0 28px; font-size: clamp(27px,3vw,37px); line-height: 1.08; }
.inquiry-intro>p:not(.inquiry-kicker) { margin: 0; max-width: 310px; font-size: 16px; line-height: 1.7; }
.inquiry-direct { margin-top: auto; padding-top: 35px; display: grid; gap: 11px; }
.inquiry-direct span { font: 400 10px/1.4 Federo,sans-serif; letter-spacing: .18em; color: #aeb4b8; }
.inquiry-direct a { width: fit-content; padding-bottom: 5px; border-bottom: 1px solid rgba(255,255,255,.5); font: 400 18px/1.3 'Tenor Sans',sans-serif; }
.inquiry-form { display: grid; align-content: center; gap: 22px; padding: clamp(50px,5vw,72px) clamp(30px,5vw,70px); }
.inquiry-row { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 23px; }
.inquiry-form label { display: block; min-width: 0; font: 500 10px/1.4 'DM Sans',sans-serif; letter-spacing: .13em; }
.inquiry-form input,.inquiry-form select,.inquiry-form textarea { display: block; width: 100%; margin-top: 6px; padding: 10px 0 12px; border: 0; border-bottom: 1px solid rgba(255,255,255,.42); border-radius: 0; outline: 0; background: transparent; color: #fbfaf6; font: 400 14px/1.5 'Tenor Sans',sans-serif; letter-spacing: 0; appearance: none; }
.inquiry-form input:focus,.inquiry-form select:focus,.inquiry-form textarea:focus { border-bottom-color: #fbfaf6; }
.inquiry-form select { cursor: pointer; color-scheme: dark; }
.inquiry-form select option { background: #1b1b1b; color: #fbfaf6; }
.inquiry-form textarea { min-height: 100px; resize: vertical; }
.inquiry-form input::placeholder,.inquiry-form textarea::placeholder { color: rgba(255,255,255,.48); }
.inquiry-optional { font-size: 9px; color: #aeb4b8; }
.inquiry-form .inquiry-submit { width: 100%; margin-top: 3px; }
.contact-dialog .inquiry-note { margin: -7px 0 0; color: #aeb4b8; font: 400 11px/1.5 'DM Sans',sans-serif; letter-spacing: .01em; text-align: center; }
@media (min-width: 761px) and (max-width: 900px) {
  .inquiry-intro { padding: 42px 36px; }
  .inquiry-form { padding: 48px 36px; }
  .inquiry-row { grid-template-columns: 1fr; gap: 22px; }
}

/* Scroll entrances are progressive: content remains visible without JavaScript. */
.motion-enabled .reveal-target { opacity: 0; transform: translateY(24px); transition: opacity .8s ease, transform .8s cubic-bezier(.2,.65,.2,1); transition-delay: var(--reveal-delay,0ms); }
.motion-enabled .reveal-target.is-visible { opacity: 1; transform: translateY(0); }
.motion-enabled .standard-item.reveal-target { transform: translateY(16px); }
.motion-enabled .standard-item.reveal-target.is-visible { transform: translateY(0); }
.motion-enabled .standard-item.reveal-target .standard-icon path, .motion-enabled .standard-item.reveal-target .standard-icon circle { stroke-dasharray: 160; stroke-dashoffset: 160; }
.motion-enabled .standard-item.reveal-target.is-visible .standard-icon path, .motion-enabled .standard-item.reveal-target.is-visible .standard-icon circle { animation: badge-draw 1.25s ease forwards; }
@keyframes badge-draw { to { stroke-dashoffset: 0; } }

/* The actual A&E mark anchors the footer; the existing type and contact structure remain. */
.footer-brand { --footer-mark: clamp(70px,6.5vw,100px); --footer-gap: clamp(23px,2.6vw,40px); }
.footer-lockup { display: flex; gap: var(--footer-gap); align-items: flex-start; }
.footer-logo { width: var(--footer-mark); height: var(--footer-mark); border: 1px solid rgba(255,255,255,.45); }
.site-footer .footer-name { font-size: clamp(43px,5.2vw,75px); }
.site-footer .footer-kicker { margin-bottom: 18px!important; }
.site-footer .footer-tagline { margin-left: calc(var(--footer-mark) + var(--footer-gap))!important; }

@media (max-width: 760px) {
  .nav-right { gap: 0; }
  .nav-cta { display: none; }
  .nav-menu-toggle { width: 42px; height: 42px; padding: 0; justify-content: center; border: 1px solid rgba(255,255,255,.85); border-radius: 50%; }
  .nav-menu-toggle>span { display: none; }
  .nav-menu-toggle i { width: 17px; }
  .hero { height: max(81svh, 630px); min-height: 630px; }
  .visual { height: 100%; }
  .stage { top: auto; bottom: 75px; }
  .mobile-actions { top: auto; bottom: 0; }
  .standard-section { min-height: 0; padding: 0 12px 24px; }
  .standard-card { min-height: 0; padding: 19px 10px 14px; border-radius: 0; }
  .editorial-intro { padding-top: 28px; }
  .standard-title { margin-bottom: 10px; font-size: clamp(16px,4vw,20px); }
  .standard-title { gap: 11px; }
  .standard-title:before, .standard-title:after { width: min(9vw,40px); }
  .standard-item { padding: 8px 3px 2px; gap: 8px; }
  .standard-icon { width: 31px; height: 31px; }
  .standard-label,.standard-sub { font-size: clamp(9px,2.7vw,12px); }
  .site-menu-shell { padding: 23px 24px 24px; }
  .site-menu-head { padding-bottom: 20px; }
  .site-menu-brand { gap: 10px; font-size: 10px; letter-spacing: .13em; }
  .site-menu-logo { width: 42px; height: 42px; }
  .site-menu-close { font-size: 0; padding: 10px; }
  .site-menu-close span { font-size: 32px; }
  .site-menu-main { position: relative; display: flex; padding: 34px 0; min-height: 530px; }
  .site-menu-links { width: 100%; position: relative; z-index: 1; }
  .site-menu-links a { grid-template-columns: 22px minmax(0,1fr); gap: 10px; padding: 16px 0 19px; }
  .site-menu-links a span { font-size: clamp(26px,7.1vw,44px); }
  .site-menu-visual { position: absolute; inset: 0; height: 100%; opacity: .23; filter: brightness(.72) saturate(.84); pointer-events: none; }
  .site-menu-visual figcaption { display: none; }
  .site-menu-foot { font-size: 8px; }
  .footer-lockup { display: block; }
  .footer-logo { width: 70px; height: 70px; margin-bottom: 26px; }
  .site-footer .footer-name { font-size: clamp(35px,10.5vw,74px); }
  .site-footer .footer-tagline { margin-left: 0!important; }
  .gallery-dialog-head,.gallery-dialog-foot { padding: 15px 21px; }
  .gallery-dialog-head { font-size: 8px; letter-spacing: .14em; }
  .gallery-dialog-stage { padding: 12px 0; }
  .gallery-dialog-foot { min-height: 130px; display: grid; gap: 15px; }
  .gallery-dialog-caption { font-size: 12px; }
  .gallery-dialog-controls { justify-content: space-between; }
  .gallery-dialog-controls button { flex: 1; min-height: 35px; }
  .contact-dialog { width: 100%; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; }
  .contact-close { position: fixed; top: 14px; right: 20px; }
  .inquiry-layout { display: block; min-height: 0; }
  .inquiry-intro { padding: 56px 26px 33px; }
  .inquiry-kicker { margin-bottom: 23px!important; font-size: 10px!important; }
  .contact-dialog .contact-title { margin-bottom: 18px; font-size: clamp(32px,8vw,42px); }
  .inquiry-intro>p:not(.inquiry-kicker) { font-size: 14px; }
  .inquiry-direct { margin-top: 24px; padding-top: 0; }
  .inquiry-direct a { font-size: 15px; }
  .inquiry-form { gap: 21px; padding: 32px 26px 44px; }
  .inquiry-row { grid-template-columns: 1fr; gap: 21px; }
}
@media (max-width: 380px) {
  .site-menu-shell { padding-left: 20px; padding-right: 20px; }
  .site-menu-brand { font-size: 9px; }
  .site-menu-links a span { font-size: 25px; }
}
@media (prefers-reduced-motion: reduce) {
  .site-loader, .hero-curtain { display: none!important; }
  .motion-enabled .reveal-target { opacity: 1!important; transform: none!important; transition: none!important; }
  .motion-enabled .standard-item .standard-icon path, .motion-enabled .standard-item .standard-icon circle { stroke-dashoffset: 0!important; animation: none!important; }
  .site-menu[open] { animation: none; }
  .site-menu[open] .site-menu-links a { animation: none!important; }
}

/* Desktop refinement: preserve the existing photographic/editorial structure. */
@media (min-width: 1024px) {
  .hero {
    min-height: 760px;
    height: min(960px, 100svh);
  }
  .hero .visual img { object-position: center 53%; }
  .hero .stage {
    left: clamp(64px, 7.4vw, 116px);
    right: clamp(58px, 7.4vw, 116px);
    bottom: clamp(94px, 11vh, 126px);
    gap: clamp(34px, 4vw, 62px);
  }
  .hero .copy { max-width: 900px; }
  .hero .eyebrow { margin-bottom: 27px; }
  .hero h1 {
    font-size: clamp(94px, 9.2vw, 136px);
    line-height: .82;
  }
  .hero .headline-line:last-child { padding-left: clamp(0px, 4.5vw, 64px); }
  .hero .summary-row { gap: clamp(22px, 2.8vw, 40px); margin-top: 31px; }
  .hero .summary { max-width: 380px; font-size: 15px; line-height: 1.7; }
  .hero .summary-row .button { min-width: 186px; justify-content: center; }
  .hero .project-note { min-width: 175px; gap: 14px; }
  .hero .project-note .number { font-size: 44px; }
  .hero .project-note .note { max-width: 132px; font-size: 8px; }

  .portfolio-strip { padding-bottom: 88px; }
  .portfolio-inner { max-width: 1200px; }
  .portfolio-grid { gap: 14px; }
  .portfolio-grid .portfolio-lead,
  .portfolio-grid .portfolio-exterior { aspect-ratio: 1.82; }
  .portfolio-grid .portfolio-exterior { margin-top: 22px; }

  .adam-section { padding-top: 104px; padding-bottom: 112px; }
  .adam-inner {
    max-width: 1140px;
    grid-template-columns: minmax(0, 1.08fr) minmax(300px, .82fr);
    column-gap: clamp(66px, 8vw, 112px);
  }
  .adam-photo { width: min(100%, 372px); }
  .adam-copy { max-width: 540px; margin-top: 29px; }
  .adam-copy p { font-size: 16px; line-height: 1.8; }

  .types-inner { max-width: 1240px; }
  .types-grid { grid-template-columns: 1.28fr 1fr; column-gap: 30px; }
  .type-custom figure { height: min(520px, 38vw); }
  .type-barndo figure,
  .type-pole figure { height: clamp(184px, 15.4vw, 218px); }
  .type-label { margin-top: 16px; }
  .type-label p { max-width: 210px; }

  .social-section { max-width: 1360px; padding-bottom: 88px; }
  .social-grid { gap: 14px; }
}
