@import url("fonts.css");
:root {
  --paper: #ffffff;
  --white: #ffffff;
  --ink: #171717;
  --olive: #161616;
  --muted: #606060;
  --line: #dadada;
  --soft: #f0f0ed;
  --gutter: clamp(24px, 5vw, 88px);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 110px; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: 'DM Sans', sans-serif; font-size: 16px; line-height: 1.65; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
img { display: block; width: 100%; height: 100%; object-fit: cover; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { line-height: 1.08; font-weight: 500; letter-spacing: -.055em; }
h1 { font-size: clamp(54px, 6.45vw, 108px); }
h2 { font-size: clamp(40px, 4.2vw, 68px); }
h3 { font-size: 29px; letter-spacing: -.035em; }
p { color: var(--muted); }
::selection { color: white; background: var(--olive); }
:focus-visible { outline: 3px solid #888888; outline-offset: 6px; }
.skip-link { position: fixed; top: -100px; left: 20px; z-index: 100; padding: 12px 22px; background: var(--white); }
.skip-link:focus { top: 15px; }
.site-header { height: 108px; padding: 0 var(--gutter); display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--line); background: var(--paper); position: relative; z-index: 20; }
.brand { display: flex; align-items: center; gap: 22px; }
.brand-name { font-size: 56px; font-weight: 700; line-height: 1; letter-spacing: -.075em; }
.brand-dot { color: #333333; }
.brand-sub { font-size: 12px; line-height: 1.5; width: 80px; border-left: 1px solid var(--line); padding-left: 20px; box-sizing: content-box; }
nav { display: flex; gap: 36px; align-items: center; }
nav > a:not(.button) { font-size: 14px; position: relative; padding: 12px 0; }
nav > a[aria-current]::after { content: ''; height: 3px; width: 14px; background: var(--olive); position: absolute; bottom: 2px; left: 0; }
nav > a:hover { color: #bbbbbb; }
.button { display: inline-flex; align-items: center; justify-content: space-between; gap: 38px; padding: 19px 25px; background: var(--olive); color: white; border: 1px solid var(--olive); font-size: 14px; font-weight: 500; line-height: 1.4; transition: background .2s, transform .2s; }
.button span { font-size: 24px; line-height: 1; }
.button:hover { background: #333333; color: white; transform: translateY(-2px); }
.button-small { padding: 13px 20px; gap: 26px; }
.button-light { background: var(--paper); border-color: var(--paper); color: var(--ink); }
.button-light:hover { background: white; color: var(--ink); }
.menu-toggle { display: none; }
.eyebrow { font-size: 13px; letter-spacing: .035em; font-weight: 500; color: var(--olive); margin-bottom: 27px; }
.small-line { display: inline-block; width: 28px; height: 1px; background: currentColor; vertical-align: middle; margin-right: 12px; }
.hero { display: grid; grid-template-columns: 1.04fr 1fr; padding: 42px var(--gutter) 52px; gap: 38px; max-width: 1800px; margin: auto; }
.hero-copy { padding: 36px 0 18px; }
.hero h1 { position: relative; margin-bottom: 28px; }
.hero-description { max-width: 410px; font-size: 16px; line-height: 1.8; }
.hero-actions { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; margin-top: 33px; }
.text-link { display: inline-flex; align-items: center; gap: 20px; font-size: 14px; font-weight: 500; padding-bottom: 6px; border-bottom: 1px solid currentColor; }
.text-link span { font-size: 22px; }
.text-link:hover { color: #777777; }
.hero-note { display: flex; align-items: center; gap: 17px; margin-top: 49px; }
.hero-note p { font-size: 12px; line-height: 1.65; }
.outline-mark { width: 36px; height: 36px; border: 1px solid #8f9982; transform: rotate(45deg); position: relative; margin: 0 5px; }
.outline-mark::after { content: ''; position: absolute; inset: 6px; border: 1px solid #8f9982; }
.hero-photo { position: relative; min-height: 610px; overflow: hidden; }
.hero-photo img { position: absolute; inset: 0; object-position: 55% center; }
.photo-label { position: absolute; bottom: 38px; left: 0; background: var(--soft); padding: 24px 30px; display: flex; align-items: center; gap: 50px; font-size: 18px; }
.photo-label span:last-child { font-size: 30px; }
.photo-credit { position: absolute; right: 12px; bottom: 10px; background: #17171780; color: white; font-size: 10px; padding: 3px 8px; }
.service-strip { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 25px; padding: 28px var(--gutter); font-size: clamp(15px, 1.6vw, 25px); }
.service-strip i { color: #888888; font-style: normal; font-size: 25px; }
.service-strip a { font-size: 32px; }
.section { padding: 110px var(--gutter); }
.intro { display: grid; grid-template-columns: 1fr 1.5fr; gap: 80px; background: white; }
.intro > .eyebrow { margin-top: 10px; }
.intro h2 { margin-bottom: 34px; }
.intro p:not(.eyebrow) { max-width: 600px; margin-bottom: 19px; }
.intro .text-link { margin-top: 16px; }
.section-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; margin-bottom: 54px; }
.section-heading > p { max-width: 300px; }
.service-cards { display: grid; grid-template-columns: 1.2fr 1fr; gap: 40px; }
.service-card:nth-child(2) { margin-top: 95px; }
.image-frame { position: relative; overflow: hidden; height: 400px; }
.large .image-frame { height: 480px; }
.image-frame img { transition: transform .6s; }
.service-card:hover img { transform: scale(1.025); }
.image-arrow { position: absolute; bottom: 0; right: 0; width: 62px; height: 62px; display: grid; place-items: center; font-size: 28px; color: var(--ink); background: var(--paper); }
.card-caption { padding: 24px 0; }
.card-caption p { font-size: 14px; margin-top: 8px; }
.service-row { margin-top: 40px; padding: 36px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.service-row .eyebrow { display: block; margin-bottom: 13px; }
.round-arrow { width: 64px; height: 64px; border: 1px solid #b7bead; border-radius: 50%; flex-shrink: 0; display: grid; place-items: center; font-size: 30px; }
.approach-home { background: var(--ink); color: white; padding: 90px var(--gutter); }
.approach-home .eyebrow { color: #b8c2ac; }
.approach-intro { display: grid; grid-template-columns: 1fr 1.65fr; gap: 25px 60px; }
.approach-intro .eyebrow { margin-top: 10px; }
.approach-intro .text-link { grid-column: 2; justify-self: start; }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 55px; margin-top: 70px; }
.steps article { border-top: 1px solid #586151; padding-top: 25px; }
.step-number { font-size: 12px; color: #b8c2ac; }
.steps h3 { margin: 20px 0 15px; font-size: 25px; }
.steps p { color: #bdc2b9; max-width: 330px; font-size: 15px; }
.cta { background: var(--soft); padding: 95px var(--gutter); display: grid; grid-template-columns: 1.2fr 1fr; align-items: center; gap: 100px; }
.cta p:not(.eyebrow) { max-width: 350px; margin-bottom: 28px; }
.site-footer { padding: 60px var(--gutter) 25px; }
.footer-top { display: flex; justify-content: space-between; gap: 50px; padding-bottom: 56px; }
.footer-top > p { font-size: 27px; line-height: 1.35; letter-spacing: -.035em; color: var(--ink); }
.footer-top address { margin-top: 12px; }
address { font-style: normal; color: var(--muted); font-size: 14px; }
.footer-top a[href^='mailto'] { border-bottom: 1px solid var(--line); }
.footer-bottom { border-top: 1px solid var(--line); padding-top: 24px; display: flex; justify-content: space-between; gap: 25px; color: var(--muted); font-size: 11px; }
.page-intro { padding: 75px var(--gutter) 60px; }
.page-intro h1 { font-size: clamp(50px, 6vw, 94px); }
.page-intro-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: 70px; align-items: end; }
.page-intro-grid > p { max-width: 390px; padding-bottom: 8px; }
.jump-links { display: flex; gap: 35px; border-top: 1px solid var(--line); padding-top: 27px; margin-top: 55px; font-size: 14px; }
.jump-links a:hover { text-decoration: underline; }
.service-detail { display: grid; grid-template-columns: 1.1fr 1fr; gap: 85px; align-items: center; padding-top: 70px; padding-bottom: 70px; background: white; }
.service-detail.reverse { background: var(--paper); }
.reverse .detail-photo { order: 2; }
.detail-photo { position: relative; height: 580px; }
.detail-photo > span { position: absolute; bottom: 14px; left: 14px; background: #ffffffdf; padding: 5px 9px; font-size: 11px; }
.detail-copy h2 { font-size: clamp(40px, 3.5vw, 56px); margin-bottom: 25px; }
.detail-copy > p:not(.eyebrow) { font-size: 15px; }
.service-list { list-style: none; padding: 0; margin: 28px 0; font-size: 14px; }
.service-list li { padding: 12px 0; border-bottom: 1px solid var(--line); }
.service-list li::before { content: '↗'; margin-right: 15px; color: var(--olive); }
.process { background: var(--soft); }
.process-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 35px; }
.process-grid article { padding-top: 24px; border-top: 1px solid #b9c2ad; }
.process-grid article > span { font-size: 13px; color: var(--muted); }
.process-grid h3 { margin: 22px 0 15px; font-size: 25px; }
.process-grid p { font-size: 14px; }
.faq { display: grid; grid-template-columns: 1fr 1.2fr; gap: 80px; background: white; }
.faq-list details { border-bottom: 1px solid var(--line); padding: 23px 0; }
.faq-list details:first-child { border-top: 1px solid var(--line); }
summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 25px; font-size: 17px; }
summary::-webkit-details-marker { display: none; }
summary span { font-size: 24px; color: var(--olive); transition: transform .2s; }
details[open] summary span { transform: rotate(45deg); }
details p { padding: 18px 30px 0 0; font-size: 14px; }
.contact-intro { padding-bottom: 65px; }
.contact-intro > p:last-child { max-width: 450px; margin-top: 25px; }
.contact-layout { display: grid; grid-template-columns: 1fr 1.15fr; gap: 100px; padding-top: 0; align-items: start; }
.contact-information { padding-top: 25px; }
.contact-information > p { max-width: 440px; }
.contact-information h2 { font-size: 40px; margin-bottom: 25px; }
.contact-block { margin-top: 40px; }
.contact-block .eyebrow { display: block; margin-bottom: 10px; }
.email-link { display: block; font-size: clamp(30px, 3vw, 48px); letter-spacing: -.04em; }
.copy-email { display: block; background: none; border: 0; border-bottom: 1px solid #aeb7a5; padding: 6px 0; color: var(--muted); font-size: 12px; margin-top: 10px; }
.copy-status { display: block; font-size: 12px; min-height: 20px; margin-top: 6px; }
.contact-block address { font-size: 22px; line-height: 1.5; margin-bottom: 14px; }
.contact-visual { background: var(--soft); }
.contact-visual img { height: 430px; }
.contact-visual-copy { padding: 35px; }
.contact-visual-copy h3 { margin-bottom: 15px; }
.contact-visual-copy p { font-size: 14px; margin-bottom: 22px; }
.contact-tips { margin-top: 45px; padding-top: 30px; border-top: 1px solid var(--line); }
.contact-tips h3 { font-size: 22px; margin-bottom: 15px; }
.contact-tips p { font-size: 14px; }
@media (min-width: 1800px) {
  body > * { max-width: 1800px; margin-left: auto; margin-right: auto; }
}
@media (max-width: 1100px) {
  nav { gap: 22px; }
  .brand-sub { display: none; }
  .hero { gap: 25px; }
  .hero-photo { min-height: 590px; }
  .hero-actions { gap: 20px; }
  .hero-note { margin-top: 35px; }
  .section { padding-top: 80px; padding-bottom: 80px; }
  .intro, .service-detail, .faq, .contact-layout { gap: 45px; }
  .detail-photo { height: 530px; }
  .cta { gap: 55px; }
  .process-grid { grid-template-columns: repeat(2, 1fr); gap: 45px; }
}
@media (max-width: 760px) {
  .site-header { height: 84px; }
  .brand-name { font-size: 47px; }
  .brand-sub { display: block; font-size: 10px; padding-left: 15px; }
  .brand { gap: 16px; }
  .menu-toggle { display: flex; align-items: center; gap: 14px; padding: 10px 0 10px 10px; background: none; border: none; font-size: 13px; color: var(--ink); }
  .menu-lines { width: 23px; height: 12px; border-top: 1px solid; border-bottom: 1px solid; }
  .menu-toggle[aria-expanded='true'] .menu-lines { height: 0; transform: rotate(45deg); }
  nav { display: none; position: absolute; top: 84px; left: 0; right: 0; padding: 24px var(--gutter) 30px; background: var(--paper); border-bottom: 1px solid var(--line); box-shadow: 0 20px 20px #1717170a; align-items: stretch; gap: 18px; }
  nav.is-open { display: flex; flex-direction: column; }
  nav .button { margin-top: 5px; }
  nav > a:not(.button) { font-size: 19px; }
  .hero { grid-template-columns: 1fr; padding-top: 22px; padding-bottom: 30px; gap: 35px; }
  .hero-copy { padding-top: 18px; padding-bottom: 0; }
  .hero h1 { font-size: clamp(52px, 10.8vw, 78px); }
  .hero .eyebrow { font-size: 11px; margin-bottom: 24px; }
  .small-line { width: 18px; margin-right: 6px; }
  .hero-description { font-size: 15px; max-width: 500px; }
  .hero-actions { margin-top: 25px; gap: 22px; }
  .hero-note { display: none; }
  .hero-photo { min-height: 410px; }
  .photo-label { bottom: 35px; padding: 18px 23px; font-size: 16px; gap: 35px; }
  .service-strip { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; padding-top: 20px; padding-bottom: 20px; font-size: 12px; }
  .service-strip i { display: none; }
  .service-strip a { display: none; }
  .section { padding: 65px var(--gutter); }
  .intro, .page-intro-grid, .service-detail, .faq, .contact-layout, .cta, .approach-intro { grid-template-columns: 1fr; gap: 30px; }
  .intro > .eyebrow { margin: 0; }
  h2 { font-size: 43px; }
  .section-heading { flex-direction: column; align-items: start; gap: 28px; margin-bottom: 35px; }
  .eyebrow { margin-bottom: 20px; }
  .service-cards { grid-template-columns: 1fr; gap: 26px; }
  .service-card:nth-child(2) { margin-top: 0; }
  .image-frame, .large .image-frame { height: 360px; }
  .service-row { margin-top: 20px; padding: 27px 0; }
  .service-row h3 { font-size: 26px; }
  .service-row .eyebrow { font-size: 11px; }
  .round-arrow { width: 49px; height: 49px; }
  .approach-home { padding: 65px var(--gutter); }
  .approach-intro .eyebrow { margin: 0; }
  .approach-intro .text-link { grid-column: 1; }
  .steps { grid-template-columns: 1fr; gap: 30px; margin-top: 45px; }
  .steps h3 { margin-top: 12px; }
  .steps p { max-width: none; }
  .cta { padding: 65px var(--gutter); gap: 35px; }
  .footer-top { flex-wrap: wrap; gap: 30px; padding-bottom: 35px; }
  .footer-top > .brand { width: 100%; }
  .footer-top > p { font-size: 24px; }
  .footer-bottom { flex-wrap: wrap; gap: 15px 25px; }
  .site-footer { padding-top: 45px; }
  .page-intro { padding-top: 45px; padding-bottom: 35px; }
  .page-intro h1 { font-size: clamp(46px, 9vw, 67px); }
  .jump-links { flex-direction: column; gap: 15px; margin-top: 30px; }
  .detail-photo { height: 390px; }
  .reverse .detail-photo { order: 0; }
  .detail-copy h2 { font-size: 42px; }
  .process-grid { gap: 32px; }
  .process-grid h3 { font-size: 22px; }
  .contact-layout { padding-top: 0; }
  .contact-information { padding-top: 0; }
  .contact-visual img { height: 350px; }
  .contact-visual-copy { padding: 26px; }
  .contact-block { margin-top: 30px; }
}
@media (max-width: 380px) {
  .brand-sub { display: none; }
  .hero h1 { font-size: 50px; }
  .service-strip { font-size: 11px; gap: 6px; }
  .process-grid { grid-template-columns: 1fr; }
  .footer-top { flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* Cinematic renovation identity. */
:root { --paper: #ffffff; --soft: #eeeeeb; --ink: #141414; --olive: #141414; --muted: #606060; --line: #dadada; }
.site-header { position: absolute; top: 0; left: 0; right: 0; color: #fff; background: transparent; border-color: #ffffff30; height: 100px; }
.site-header .brand-dot { color: #ffffff; }
.site-header .brand-sub { border-color: #ffffff45; }
.site-header nav { margin-left: auto; }
.site-header nav > a[aria-current]::after { background: #ffffff; }
.site-header nav > a:hover { color: #dddddd; }
.site-header .button { background: #ffffff12; border-color: #ffffff60; backdrop-filter: blur(12px); }
.site-header .button:hover { background: #ffffff25; }
.language-switch { display: flex; align-items: center; gap: 8px; font-size: 11px; margin-left: 30px; }
.language-switch button { border: none; padding: 8px 2px; background: none; color: #ffffffb0; font-size: 12px; }
.language-switch button[aria-pressed='true'] { color: white; border-bottom: 1px solid white; }
.cinematic-hero { position: relative; isolation: isolate; min-height: 790px; height: min(960px, 100svh); padding: 170px var(--gutter) 120px; display: flex; flex-direction: column; justify-content: center; color: white; overflow: hidden; background: #171717; }
.hero-background { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.hero-background img { width: 100%; height: 100%; object-fit: cover; object-position: center 58%; transform: scale(1.04); }
.cinematic-hero::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, #080808c9 0%, #12121266 49%, #17171712 100%), linear-gradient(0deg, #11111177, transparent 45%); }
.cinematic-copy { max-width: 1130px; }
.cinematic-copy > .eyebrow { color: #eeeeee; letter-spacing: .12em; font-size: 12px; margin-bottom: 32px; }
.cinematic-copy h1 { font-size: clamp(58px, 7.1vw, 110px); font-weight: 500; line-height: 1.05; letter-spacing: -.055em; margin-bottom: 32px; }
.cinematic-copy h1 > span { display: block; }
.cinematic-copy .hero-description { color: #eeeeee; font-size: 17px; max-width: 455px; line-height: 1.8; }
.cinematic-copy .hero-actions { margin-top: 35px; }
.button-sand { background: #ffffff; border-color: #ffffff; color: #171717; }
.button-sand:hover { background: #fff; color: #171717; border-color: white; }
.hero-secondary { color: white; font-size: 14px; display: inline-flex; align-items: center; gap: 20px; padding: 12px 0; border-bottom: 1px solid #ffffff55; }
.hero-secondary:hover { border-color: white; }
.hero-bottom { position: absolute; bottom: 32px; left: var(--gutter); right: var(--gutter); border-top: 1px solid #ffffff40; padding-top: 22px; display: flex; justify-content: space-between; gap: 25px; font-size: 12px; color: #dddddd; }
.hero-bottom a { display: flex; gap: 30px; }
.subpage-hero { min-height: 650px; height: 78svh; max-height: 820px; }
.subpage-hero .cinematic-copy h1 { font-size: clamp(56px, 6vw, 90px); }
.service-strip { background: #f2f2f0; border: 0; color: #242424; padding-top: 31px; padding-bottom: 31px; }
.intro { background: #141414; color: #ffffff; grid-template-columns: .8fr 1.2fr; gap: 20px 100px; }
.intro > .eyebrow { color: #c8c8c8; grid-column: 1; grid-row: 1; }
.intro > div:last-child { grid-column: 2; grid-row: 1 / span 2; }
.intro p:not(.eyebrow) { color: #c8c8c8; }
.intro-material { grid-column: 1; grid-row: 2; width: min(300px,90%); height: 260px; display: flex; gap: 12px; padding: 20px; border: 1px solid #ffffff30; transform: perspective(600px) rotateY(18deg); }
.intro-material span { width: 33.33%; height: 100%; background: linear-gradient(90deg, #aaaaaa35, #dddddd15); border: 1px solid #ffffff30; }
.services-preview { background: #ffffff; }
.service-card .image-frame { border-radius: 3px; }
.image-arrow { background: #ffffff; }
.approach-home { background: #101010; }
.approach-intro .eyebrow { color: #d0d0d0; }
.steps article { border-top-color: #8a9a7760; }
.step-number { color: #d0d0d0; font-size: 16px; }
.final-cta { display: grid; grid-template-columns: .9fr 1.1fr; background: #141414; color: #fff; }
.cta-photo { min-height: 650px; overflow: hidden; }
.cta-photo img { height: 100%; object-position: 65%; }
.final-cta-copy { padding: 95px clamp(35px, 6vw, 100px); align-self: center; }
.final-cta-copy .eyebrow { color: #d4d4d4; }
.final-cta-copy h2 { font-size: clamp(42px, 4vw, 64px); margin-bottom: 28px; }
.final-cta-copy > p:not(.eyebrow) { max-width: 420px; color: #d4d4d4; font-size: 15px; }
.cta-email { display: flex; align-items: center; justify-content: space-between; gap: 20px; border-bottom: 1px solid #9eae8f66; padding: 30px 0 20px; font-size: clamp(30px, 3.4vw, 52px); letter-spacing: -.04em; }
.cta-actions { display: flex; flex-wrap: wrap; gap: 23px; margin-top: 30px; align-items: center; }
.final-cta address { margin-top: 35px; font-size: 12px; color: #d4d4d4; }
.site-footer { background: #101010; color: #ffffff; }
.site-footer .brand-dot { color: #ffffff; }
.site-footer .brand-sub { border-color: #ffffff40; }
.footer-top > p { color: #eeeeee; }
.site-footer address, .footer-bottom { color: #bbbbbb; }
.footer-bottom { border-color: #7d907366; }
.jump-links { margin: 0; padding: 29px var(--gutter); background: #f3f3f1; border: none; justify-content: space-between; }
.service-detail { background: #ffffff; }
.service-detail.reverse { background: #141414; color: #ffffff; }
.service-detail.reverse p { color: #d5d5d5; }
.service-detail.reverse .service-list li { border-color: #ffffff30; }
.service-detail.reverse .service-list li::before { color: #d5d5d5; }
.service-detail .detail-photo { overflow: hidden; }
.service-detail img { transition: transform .7s; }
.service-detail:hover img { transform: scale(1.025); }
.process { background: #f0f0ee; }
.faq { background: #ffffff; }
.cta { background: #141414; color: white; }
.cta .eyebrow, .cta p { color: #d8d8d8; }
.contact-layout { padding-top: 90px; background: #ffffff; }
.contact-visual { background: #ededeb; }
.contact-information .email-link { color: #141414; }
.contact-visual img { height: 400px; }
@keyframes hero-enter { from { opacity: 0; transform: translateY(25px); } to { opacity: 1; transform: translateY(0); } }
.cinematic-copy .eyebrow { animation: hero-enter .8s both .1s; }
.cinematic-copy h1 { animation: hero-enter 1s both .2s; }
.cinematic-copy .hero-description { animation: hero-enter 1s both .35s; }
.cinematic-copy .hero-actions { animation: hero-enter 1s both .5s; }
.motion-ready .reveal { opacity: 0; transform: translateY(24px); transition: opacity .8s ease, transform .8s cubic-bezier(.2,.7,.2,1); }
.motion-ready .reveal.is-visible { opacity: 1; transform: none; }
.text-link span, .button span { transition: transform .25s; }
.text-link:hover span, .button:hover span { transform: translate(3px,-3px); }
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .25s; }
@media (max-width: 1100px) {
  .language-switch { margin-left: 20px; }
  .site-header nav { gap: 22px; }
  .site-header .button-small { display: none; }
  .intro { gap: 30px 45px; }
  .final-cta-copy { padding: 60px 35px; }
}
@media (max-width: 760px) {
  .site-header { height: 84px; gap: 15px; }
  .site-header .brand-sub { display: none; }
  .menu-toggle { margin-left: auto; order: 2; color: white; }
  .language-switch { order: 1; margin-left: auto; gap: 6px; }
  .site-header .menu-toggle { margin-left: 0; }
  .site-header nav { background: #101010; color: white; margin: 0; }
  .site-header nav .button-small { display: flex; }
  .cinematic-hero { min-height: 760px; height: 94svh; max-height: 900px; padding: 150px var(--gutter) 130px; }
  .cinematic-copy h1 { font-size: clamp(47px, 9.8vw, 72px); letter-spacing: -.055em; }
  .cinematic-copy .eyebrow { font-size: 10px; letter-spacing: .06em; }
  .cinematic-copy .hero-description { font-size: 15px; max-width: 380px; }
  .hero-background img { object-position: 62% center; }
  .cinematic-hero::after { background: linear-gradient(90deg,#080808c9,#10101055), linear-gradient(0deg,#11111177,transparent); }
  .hero-bottom { font-size: 10px; gap: 15px; }
  .hero-bottom a { gap: 10px; white-space: nowrap; }
  .hero-actions { flex-direction: column; align-items: flex-start; gap: 19px; }
  .subpage-hero { min-height: 700px; height: 88svh; }
  .subpage-hero .cinematic-copy h1 { font-size: clamp(44px,9vw,65px); }
  .intro { grid-template-columns: 1fr; gap: 28px; }
  .intro > .eyebrow { grid-column: 1; grid-row: 1; }
  .intro > div:last-child { grid-column: 1; grid-row: 2; }
  .intro-material { display: none; }
  .final-cta { grid-template-columns: 1fr; }
  .cta-photo { min-height: 0; height: 330px; }
  .final-cta-copy { padding: 55px var(--gutter); }
  .final-cta-copy h2 { font-size: 43px; }
  .cta-email { font-size: 37px; }
  .contact-layout { padding-top: 60px; }
  .jump-links { gap: 15px; }
}
@media (prefers-reduced-motion: reduce) {
  .motion-ready .reveal { opacity: 1; transform: none; }
  .cinematic-copy * { animation: none !important; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }
}

.intro { background: #fff; color: #161616; }
.intro > .eyebrow { color: #666; }
.intro p:not(.eyebrow) { color: #606060; }
.intro-material { border-color: #ccc; }
.intro-material span { background: linear-gradient(90deg,#dededb,#f4f4f2); border-color: #bbb; }
.services-preview { background:#111; color:#fff; }
.services-preview .eyebrow, .services-preview p { color:#bcbcbc; }
.services-preview .image-arrow { background:#111; color:#fff; }
.services-preview .service-row { border-color:#444; }
.approach-home { background:#fff; color:#151515; }
.approach-home .eyebrow, .steps p, .step-number { color:#666; }
.steps article { border-color:#ccc; }
.final-cta { background:#111; }
.site-footer { background:#f5f5f3; color:#161616; }
.site-footer .brand-dot, .footer-top > p { color:#161616; }
.site-footer address, .footer-bottom { color:#666; }
.site-footer .brand-sub, .footer-bottom { border-color:#ccc; }
.process { background:#141414; color:#fff; }
.process .eyebrow, .process p, .process-grid article > span { color:#ccc; }
.process-grid article { border-color:#555; }

/* Floating navigation and stronger editorial typography. */
h1, h2 { font-weight: 700; }
h3 { font-weight: 600; }
.site-header { position: fixed; top: 18px; left: 24px; right: 24px; height: 84px; padding: 0 30px; border: 1px solid #ffffff30; border-radius: 15px; background: #101010b8; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); box-shadow: 0 12px 35px #00000018; transition: top .35s, height .35s, background .35s, box-shadow .35s; }
.site-header.is-scrolled { top: 12px; height: 74px; background: #111111ef; box-shadow: 0 8px 30px #00000030; }
.site-header .brand-name { font-size: 42px; text-transform: uppercase; letter-spacing: -.07em; }
.site-header .brand-sub { font-size: 11px; width: 80px; padding-left: 16px; }
.site-header .brand { gap: 18px; }
.site-header nav > a:not(.button) { font-weight: 500; }
.site-header nav > a:not(.button)::before { content:''; height:1px; position:absolute; left:0; right:0; bottom:6px; background:white; transform:scaleX(0); transform-origin:left; transition:transform .25s; }
.site-header nav > a:not(.button):hover::before { transform:scaleX(1); }
.site-header .button { background:white; color:#111; border-color:white; border-radius:7px; font-weight:600; }
.site-header .button:hover { background:#dfdfdf; color:#111; }
.cinematic-copy h1 { font-weight:700; letter-spacing:-.06em; line-height:1.02; }
.button { border-radius:5px; }
.language-switch button { min-height:40px; font-weight:600; }
@keyframes image-arrive { from { transform:scale(1.11); } to { transform:scale(1.02); } }
.hero-background img { animation:image-arrive 2.5s cubic-bezier(.2,.6,.2,1) both; }
.image-frame img, .detail-photo img, .cta-photo img { transition:transform .8s cubic-bezier(.2,.65,.2,1),filter .8s; }
.service-card:hover img, .detail-photo:hover img, .cta-photo:hover img { transform:scale(1.045); }
.image-arrow, .round-arrow { transition:background .3s,color .3s,transform .3s; }
.service-card:hover .image-arrow, .service-row:hover .round-arrow { background:white; color:#111; transform:translate(2px,-2px); }
.reveal:nth-child(2) { transition-delay:.1s; }
.reveal:nth-child(3) { transition-delay:.15s; }
.reveal:nth-child(4) { transition-delay:.2s; }
@media(max-width:1100px) { .site-header { padding:0 25px; } }
@media(max-width:760px) {
 .site-header { top:12px; left:12px; right:12px; height:70px; padding:0 18px; border-radius:12px; }
 .site-header.is-scrolled { top:8px; height:64px; }
 .site-header .brand-name { font-size:35px; }
 .site-header nav { top:calc(100% + 8px); left:0; right:0; border:1px solid #ffffff25; border-radius:12px; background:#141414f5; box-shadow:0 20px 30px #00000040; }
 .site-header .menu-toggle { padding:12px 0 12px 8px; }
 .site-header .language-switch { margin-left:auto; }
 .cinematic-copy h1 { font-size:clamp(46px,10.2vw,72px); }
 .subpage-hero .cinematic-copy h1 { font-size:clamp(44px,9.6vw,66px); }
 .site-header nav.is-open { animation:hero-enter .3s both; }
}
@media(prefers-reduced-motion:reduce) { .hero-background img { animation:none; } }
