/* Contact composes the existing hero and footer typography and controls. */
[hidden] { display:none !important; }
.contact-page { background:var(--dark); color:#fff; }
.contact-page main { background:transparent; }
.contact-page .contact-hero { min-height:100svh; height:auto; overflow:clip; --footer-gutter:clamp(24px,6vw,120px); }
.contact-page .hero-studio-room { position:fixed; inset:0; }
.contact-page .hero-studio-room::after { display:none; }
.contact-page .hero-studio-backdrop { height:100%; object-fit:cover; object-position:50% 50%; transform:none; }
.contact-page .contact-hero::after { position:fixed; background:rgb(0 0 0 / 38%); }
.contact-page .site-header { position:absolute; z-index:4; }
.contact-layout { position:relative; z-index:3; min-height:100svh; padding:clamp(120px,18svh,180px) var(--footer-gutter) clamp(48px,7svh,100px); display:grid; grid-template-columns:minmax(0,2.7fr) minmax(250px,1fr); gap:clamp(32px,5vw,100px); align-items:end; }
.contact-title.architecture-hero__title { position:static; display:block; white-space:normal; transform:none; opacity:1; animation:none; align-self:end; }
.contact-title.architecture-hero__title > span { display:block; margin:0; transform:none; }
.contact-aside { align-self:center; }
.contact-open .onform-footer__eyebrow { margin-bottom:clamp(28px,3vw,54px); color:#ffffffa6; }
.contact-open .onform-footer__aside > p { max-width:22ch; }
.contact-choice-list { margin-top:26px; }
.contact-page .onform-footer__contact { width:100%; margin-top:0; justify-content:space-between; background:none; color:inherit; text-align:left; }
.contact-page button.onform-footer__contact { appearance:none; }
.contact-choice-list .onform-footer__contact { padding:18px 0; }
.contact-helper { font-size:12px; line-height:1.7; color:#ffffffa6; margin-top:16px; }
.contact-booking { margin-top:clamp(48px,7svh,100px); }
.contact-booking .contact-helper { margin-top:0; }
.contact-page a:focus-visible,.contact-page button:focus-visible,.contact-page input:focus-visible,.contact-page textarea:focus-visible,.contact-page select:focus-visible { outline:2px solid #fff; outline-offset:6px; }
.contact-hero.is-started .contact-layout { display:block; }
.contact-hero.is-started .contact-title { display:none; }
.contact-questionnaire { animation:onform-details .55s var(--onform-out) both; }
.contact-questionnaire .onform-footer__grid { grid-template-columns:minmax(0,1.45fr) minmax(280px,1fr); align-items:start; }
.contact-questionnaire h2 { font-size:clamp(60px,8.6vw,168px); font-weight:500; line-height:.96; letter-spacing:-.065em; max-width:9ch; }
.contact-questionnaire .contact-helper { max-width:32ch; }
.contact-questionnaire fieldset { min-width:0; border:0; padding:0; margin:0; }
.contact-questionnaire legend { padding:0; margin-bottom:26px; font-size:clamp(17px,1.4vw,24px); line-height:1.5; letter-spacing:-.02em; }
.contact-field { display:block; margin:0 0 26px; }
.contact-field > span { display:block; font-size:12px; line-height:1.7; color:#ffffffb3; margin-bottom:12px; }
.contact-field input,.contact-field textarea,.contact-field select { width:100%; border:0; border-radius:0; border-bottom:1px solid #ffffff75; background:transparent; color:#fff; padding:12px 0; font-size:clamp(17px,1.4vw,24px); line-height:1.5; letter-spacing:-.02em; box-shadow:none; }
.contact-field textarea { min-height:100px; resize:vertical; }
.contact-field input::placeholder,.contact-field textarea::placeholder { color:#ffffff66; }
.contact-field select option { background:#1c1d20; color:#fff; }
.contact-service-options { display:flex; gap:20px; flex-wrap:wrap; margin:0 0 26px; }
.contact-service-options .onform-footer__contact { width:auto; font-size:13px; padding:12px 0; opacity:.65; }
.contact-service-options .onform-footer__contact[aria-pressed=true] { opacity:1; border-bottom:1px solid #fff; }
.contact-controls.more-work { padding:0; margin-top:32px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.contact-back { width:auto !important; font-size:13px !important; padding:12px 0 !important; }
.contact-progress { display:flex; justify-content:space-between; gap:20px; font-size:12px; color:#ffffffb3; margin-bottom:clamp(28px,3vw,54px); }
.contact-progress nav { display:flex; gap:20px; }
.contact-progress [aria-current=step] { color:#fff; }
.contact-review dl { margin:0; }
.contact-review dl > div { border-bottom:1px solid #ffffff30; padding:12px 0; }
.contact-review dt { color:#ffffffa6; font-size:12px; margin-bottom:6px; }
.contact-review dd { margin:0; font-size:clamp(17px,1.4vw,24px); line-height:1.5; overflow-wrap:anywhere; white-space:pre-line; }
@media(max-width:900px) {
 .contact-layout { grid-template-columns:minmax(0,1.5fr) minmax(230px,1fr); gap:32px; }
 .contact-questionnaire .onform-footer__grid { grid-template-columns:1fr 1fr; }
 .contact-questionnaire h2 { font-size:clamp(54px,10.8vw,96px); }
}
@media(max-width:600px) {
 .contact-layout { grid-template-columns:1fr; gap:38px; min-height:100svh; padding:140px 24px 48px; }
 .contact-title.architecture-hero__title { font-size:clamp(70px,20vw,120px); line-height:.92; }
 .contact-title.architecture-hero__title > span:last-child { margin:0; }
 .contact-aside { align-self:auto; }
 .contact-open .onform-footer__eyebrow { margin-bottom:20px; }
 .contact-booking { margin-top:38px; }
 .contact-questionnaire .onform-footer__grid { grid-template-columns:1fr; gap:38px; }
 .contact-questionnaire h2 { font-size:clamp(54px,10.8vw,96px); }
 .contact-progress { flex-wrap:wrap; }
 .contact-page .hero-studio-backdrop { object-position:62% 50%; }
}
@media(prefers-reduced-motion:reduce) { .contact-questionnaire { animation:none; } }

/* A label-only link keeps the footer text size; only arrow spans use 27px. */
.contact-page .onform-footer__contact > .onform-copy { font:inherit; transform:none; }

/* Opening composition follows the approved full-screen contact reference. */
.contact-page .contact-hero::after {
 background:linear-gradient(180deg,transparent 48%,rgb(2 9 22 / 32%) 100%),linear-gradient(90deg,rgb(4 15 34 / 28%),rgb(4 15 34 / 18%) 56%,rgb(0 4 12 / 54%) 100%);
}
.contact-page .contact-hero:not(.is-started) .contact-layout { display:block; width:100%; flex:none; padding:0; min-height:100svh; }
.contact-page .contact-hero:not(.is-started) .contact-title {
 position:absolute; left:3.4vw; right:auto; bottom:12svh; width:70vw; margin:0;
 font-size:min(22.6vw,36.1svh); line-height:.82; letter-spacing:-.035em;
 transform:scaleX(.66); transform-origin:left bottom;
}
.contact-page .contact-hero:not(.is-started) .contact-aside { position:absolute; top:29svh; left:73.9vw; right:4.4vw; }
.contact-page .contact-open .onform-footer__eyebrow { font-size:min(1.39vw,2.22svh); line-height:1.5; letter-spacing:0; margin:0 0 4.55svh; text-transform:none; }
.contact-page .contact-open .onform-footer__aside { display:block; padding:0; }
.contact-page .contact-open .onform-footer__aside > p { font-size:min(2.02vw,3.23svh); line-height:1.22; letter-spacing:-.025em; color:#fff; max-width:none; }
.contact-page .contact-choice-list { margin-top:2.65svh; }
.contact-page .contact-choice-list .onform-footer__contact {
 display:flex; min-height:9.1svh; padding:0; border:0;
 border-radius:0; font-size:min(2.27vw,3.63svh); line-height:1.2; letter-spacing:-.025em; gap:20px;
}
.contact-page .contact-open .onform-footer__contact > .onform-text-arrow { font-size:min(2.4vw,3.84svh); line-height:1; font-weight:400; }
.contact-page .contact-open .contact-helper { font-size:min(1.01vw,1.62svh); line-height:1.5; letter-spacing:0; margin:2svh 0 0; }
.contact-page .contact-booking { margin-top:9.2svh; }
.contact-page .contact-booking .onform-footer__contact { width:max-content; max-width:100%; border-bottom:0; padding:0 0 8px; gap:16px; font-size:min(1.77vw,2.83svh); line-height:1.25; letter-spacing:-.025em; }
.contact-page .contact-booking .onform-text-arrow { font-size:inherit !important; }
.contact-page .contact-booking .contact-helper { margin-top:1svh; }
@media(max-width:900px) {
 .contact-page .contact-hero:not(.is-started) .contact-aside { left:65vw; right:5vw; }
 .contact-page .contact-open .onform-footer__eyebrow { font-size:16px; }
 .contact-page .contact-open .onform-footer__aside > p { font-size:22px; }
 .contact-page .contact-choice-list .onform-footer__contact { font-size:24px; }
 .contact-page .contact-open .contact-helper { font-size:12px; }
 .contact-page .contact-booking .onform-footer__contact { font-size:20px; }
 .contact-page .contact-open .onform-footer__contact > .onform-text-arrow { font-size:27px; }
}
@media(max-width:600px) {
 .contact-page .contact-hero:not(.is-started) .contact-layout { display:flex; flex-direction:column; align-items:stretch; padding:132px 24px 48px; gap:46px; }
 .contact-page .contact-hero:not(.is-started) .contact-title { position:static; width:100%; align-self:start; font-size:35vw; line-height:.82; transform:scaleX(.78); }
 .contact-page .contact-hero:not(.is-started) .contact-aside { position:static; width:100%; }
 .contact-page .contact-open .onform-footer__eyebrow { margin-bottom:24px; }
 .contact-page .contact-open .onform-footer__aside > p { font-size:26px; }
 .contact-page .contact-choice-list { margin-top:22px; }
 .contact-page .contact-choice-list .onform-footer__contact { min-height:70px; font-size:28px; }
 .contact-page .contact-booking { margin-top:42px; }
 .contact-page .contact-booking .onform-footer__contact { font-size:22px; }
 .contact-page .contact-open .contact-helper { margin-top:14px; }
 .contact-page .contact-booking .contact-helper { margin-top:10px; }
}

/* The contact opening shares the homepage photo, glyph and detail arrivals. */
.contact-page .contact-title .demo-hero-mask { width:max-content; max-width:none; white-space:nowrap; }
.contact-page[data-demo-entrance] { --entrance-at:var(--contact-entrance-at,.2s); }
.contact-page .contact-open .onform-text-link::before,
.contact-page .contact-open .onform-text-link::after { display:none; }
.contact-page[data-demo-entrance] .contact-open .onform-footer__aside,
.contact-page[data-demo-entrance] .contact-choice-list > button,
.contact-page[data-demo-entrance] .contact-open > .contact-helper,
.contact-page[data-demo-entrance] .contact-booking,
.contact-page[data-demo-entrance] > .menu-toggle {
 animation:onform-detail-arrive 1s var(--onform-out) calc(var(--entrance-at) + var(--contact-detail-delay,.6s)) backwards;
}
.contact-page .contact-choice-list > button:nth-child(1) { --contact-detail-delay:.7s; }
.contact-page .contact-choice-list > button:nth-child(2) { --contact-detail-delay:.78s; }
.contact-page .contact-choice-list > button:nth-child(3) { --contact-detail-delay:.86s; }
.contact-page .contact-open > .contact-helper { --contact-detail-delay:.94s; }
.contact-page .contact-booking { --contact-detail-delay:1.02s; }
@media(prefers-reduced-motion:reduce) {
 .contact-page[data-demo-entrance] .contact-open .onform-footer__aside,
 .contact-page[data-demo-entrance] .contact-choice-list > button,
 .contact-page[data-demo-entrance] .contact-open > .contact-helper,
 .contact-page[data-demo-entrance] .contact-booking,
 .contact-page[data-demo-entrance] > .menu-toggle { animation:none; }
}

/* A short conversation, with the same quiet timing as the site's controls. */
.contact-questionnaire { animation:none; }
.contact-questionnaire .onform-footer__grid { min-height:350px; }
.contact-progress { position:relative; padding-bottom:18px; font-variant-numeric:tabular-nums; }
.contact-progress nav span { transition:color .45s ease; }
.contact-progress nav .is-complete { color:#ffffffda; }
.contact-progress__rail { position:absolute; left:0; right:0; bottom:0; height:2px; overflow:hidden; background:#ffffff28; }
.contact-progress__fill { display:block; width:100%; height:100%; background:#fff; transform:scaleX(var(--contact-progress,.125)); transform-origin:left center; transition:transform .65s cubic-bezier(.16,1,.3,1); }
.contact-questionnaire .contact-field { margin-bottom:0; }
.contact-questionnaire .contact-controls { margin-top:36px; }
.contact-questionnaire [aria-busy=true] { pointer-events:none; }
@media(max-width:600px) { .contact-questionnaire .onform-footer__grid { min-height:0; } }
@media(prefers-reduced-motion:reduce) { .contact-progress__fill,.contact-progress nav span { transition:none; } }
