/* Photo and inquiry share the same band, with Terrain's own color tokens. */
.contact-photo-section{padding-block:100px;--contact-orbit-fill:#222d40}
.contact-photo-section .contact-layout{display:grid;grid-template-columns:minmax(0,.74fr) minmax(0,1fr);gap:clamp(48px,6vw,110px);align-items:stretch}
.contact-photo{position:relative;min-width:0;overflow:hidden;margin:0;min-height:0;aspect-ratio:4/5;max-height:640px;align-self:center;isolation:isolate;background:#192437;z-index:1}
.contact-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:58% center;transform:scale(1.01);transition:transform .7s cubic-bezier(.22,1,.36,1)}
.contact-photo-section .contact-form-panel{padding:0;border:0;background:transparent;min-width:0}
.contact-intro{position:relative;z-index:1}
.contact-intro .eyebrow{display:flex;align-items:center;gap:12px;margin:0}
.contact-intro .eyebrow .line{width:36px;height:1px;background:currentColor;flex:none}
.contact-photo-section h2{font-size:clamp(42px,4.1vw,66px);line-height:1.08;margin:26px 0 15px;max-width:760px}
.contact-photo-section h2 em{display:block}
.contact-intro>p:not(.eyebrow){font-size:16px;line-height:1.7;color:var(--c-soft);max-width:650px;margin:0}
.contact-photo-section #inquiry-form{position:relative;isolation:isolate;margin-top:36px}
/* Match the reference's one-turn / eight-second floating gradient rectangle. */
.contact-photo-section #inquiry-form::before{content:"";position:absolute;inset:-1px;z-index:-1;border:1px solid transparent;background:linear-gradient(var(--contact-orbit-fill),var(--contact-orbit-fill)) padding-box,conic-gradient(rgba(171,196,230,.18),#abc4e6,rgba(171,196,230,.64),rgba(171,196,230,.18)) border-box;opacity:.58;pointer-events:none;animation:contact-conic-orbit 8s linear infinite;transform-origin:center}
@keyframes contact-conic-orbit{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.contact-photo-section .form-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.contact-photo-section .field{margin-bottom:27px}
.contact-photo-section .field label{font-size:13px;margin-bottom:10px}
.contact-photo-section .field input,.contact-photo-section .field select{min-height:54px}
.contact-photo-section .field input,.contact-photo-section .field textarea,.contact-photo-section .field select{background-color:rgba(171,196,230,.09);border-color:var(--c-field-border);font-size:15px}
.contact-photo-section .field input:focus,.contact-photo-section .field textarea:focus,.contact-photo-section .field select:focus{background-color:var(--c-field-focus)}
.contact-photo-section .field textarea{min-height:150px}
.contact-photo-section .form-submit{font-size:14px;min-height:54px;padding-inline:24px}
.contact-photo-section .form-status:empty{display:none}
@media(max-width:899px){
 .contact-photo-section{padding-block:70px}
 .contact-photo-section .contact-layout{grid-template-columns:1fr;gap:38px}
 .contact-photo{min-height:0;aspect-ratio:16/9;max-height:420px}
 .contact-photo img{object-position:center 60%}
 .contact-photo-section h2{font-size:clamp(38px,6vw,54px)}
}
@media(max-width:479px){
 .contact-photo-section .form-row{grid-template-columns:1fr;gap:0}
 .contact-photo-section h2{font-size:36px}
 .contact-intro>p:not(.eyebrow){font-size:15px}
 .contact-photo-section .contact-layout{gap:30px}
}
@media(prefers-reduced-motion:reduce){.contact-photo-section #inquiry-form::before{animation:none;transform:rotate(12deg)}}
@media print{.contact-photo-section #inquiry-form::before{display:none}}

/* A clipped entrance and restrained hover depth, matching the reference's motion. */
.contact-photo__veil{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(15,21,34,.32),rgba(83,116,157,.14));transition:opacity .42s cubic-bezier(.22,1,.36,1),transform .42s cubic-bezier(.22,1,.36,1)}
.contact-photo::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#101522,transparent 72%);transform:translateX(-102%);transition:transform .64s cubic-bezier(.22,1,.36,1)}
.reveal-ready:not(.reveal-all) .contact-photo.is-in{animation:contact-photo-reveal .9s cubic-bezier(.22,1,.36,1) both;transform-origin:left center}
@keyframes contact-photo-reveal{from{clip-path:inset(0 18% 0 0);opacity:0;transform:translateX(-1.2rem)}to{clip-path:inset(0);opacity:1;transform:none}}
@media(hover:hover) and (pointer:fine){
 .contact-photo:hover img{transform:scale(1.045)}
 .contact-photo:hover::after{transform:translateX(102%)}
 .contact-photo:hover .contact-photo__veil{opacity:.84;transform:translateY(-.35rem)}
}
@media(prefers-reduced-motion:reduce){
 .contact-photo,.contact-photo img,.contact-photo__veil,.contact-photo::after{animation:none!important;transition:none!important}
 .contact-photo img,.contact-photo:hover img,.contact-photo__veil{transform:none!important}
 .contact-photo::after{display:none}
}
