/* Photography and motion, composed around the advisory narrative. */
:root { --ease-editorial: cubic-bezier(.19,1,.22,1); }
.reading-progress { position:fixed; inset:0 0 auto; height:2px; background:var(--gold); transform:scaleX(0); transform-origin:left; z-index:100; pointer-events:none; }
.button, .header-cta { transform:translate3d(var(--mag-x,0px),var(--mag-y,0px),0); }
.button { position:relative; isolation:isolate; overflow:hidden; }
.button::before { content:""; position:absolute; inset:0; z-index:-1; background:var(--champagne); transform:translateY(103%); transition:transform .55s var(--ease-editorial); }
.button:hover::before { transform:translateY(0); }
.button-outline:hover { color:#070707; }
.desktop-nav a { position:relative; display:inline-block; padding-block:12px; }
.desktop-nav a::after { content:""; position:absolute; inset:auto 0 5px; height:1px; background:var(--gold); transform:scaleX(0); transform-origin:right; transition:transform .45s var(--ease-editorial); }
.desktop-nav a:hover::after, .desktop-nav a[aria-current=location]::after { transform:scaleX(1); transform-origin:left; }
.site-header { background:linear-gradient(180deg,rgba(7,7,7,.72),transparent); }

/* Each photograph has a different editorial proportion. */
.editorial-photo { margin:0; min-width:0; position:relative; }
.photo-frame { position:relative; overflow:hidden; background:var(--elevated); isolation:isolate; }
.photo-media { display:block; width:100%; height:100%; object-fit:cover; object-position:var(--photo-position,center); filter:saturate(.65) contrast(1.04); transform:translate3d(0,var(--photo-shift,0px),0) scale(1.09); transition:filter .8s ease,scale 1.25s var(--ease-editorial); }
.editorial-photo:hover .photo-media { filter:saturate(.95) contrast(1.02); scale:1.035; }
.photo-veil { display:none; position:absolute; inset:0; background:var(--gold); mix-blend-mode:soft-light; opacity:.22; pointer-events:none; }
.editorial-photo figcaption { display:flex; align-items:center; gap:16px; color:var(--muted); font-size:11px; letter-spacing:.035em; line-height:1.5; margin-top:19px; }
.photo-caption-rule { height:1px; width:30px; flex-shrink:0; background:var(--gold); opacity:.7; }
.photo-frame::after { content:""; position:absolute; inset:0; border:1px solid rgba(229,210,163,.12); pointer-events:none; }

/* A photographic opening: the city is present, rather than a faint backdrop. */
.hero { min-height:880px; padding-top:177px; padding-bottom:65px; background:var(--bg); }
.hero-photo { position:absolute; inset:0 0 0 auto; width:65%; z-index:0; }
.hero-photo .photo-frame { height:100%; }
.hero-photo .photo-frame::after { border:0; background:linear-gradient(90deg,var(--bg) 0%,rgba(7,7,7,.66) 20%,rgba(7,7,7,.05) 67%),linear-gradient(0deg,var(--bg) 0%,transparent 37%,rgba(7,7,7,.08) 80%); }
.hero-photo .photo-media { object-position:var(--photo-position,center); filter:saturate(.58) brightness(.76); }
.hero-photo:hover .photo-media { filter:saturate(.58) brightness(.76); scale:1; }
.hero-photo figcaption { position:absolute; right:var(--gutter); bottom:66px; z-index:2; color:var(--champagne); margin:0; font-size:11px; }
.hero-inner { pointer-events:auto; }
.hero-inner a { pointer-events:auto; }
.hero-eyebrow { font-size:11px; margin-bottom:34px; }
.hero h1 { font-size:clamp(94px,9.3vw,149px); max-width:750px; line-height:.92; margin-bottom:35px; }
.hero h1>.hero-title-line { overflow:visible; display:block; padding-bottom:6px; color:var(--text); font-style:normal; }
.hero h1>.hero-title-line>span { display:inline-block; }
.hero h1>.hero-title-line:nth-child(2) { color:var(--gold-light); font-style:italic; }
.hero-description { max-width:460px; }
.hero-description p { color:#c3beb5; font-size:14px; max-width:425px; }
.hero-actions .button { font-size:10px; min-height:55px; }
.hero-actions .button-outline { background:rgba(7,7,7,.4); backdrop-filter:blur(6px); }
.hero-footnote { display:none; }
.hero-description::after { content:""; display:block; width:42px; height:1px; margin-top:36px; background:var(--gold); opacity:.45; }
.positioning { position:relative; background:var(--bg); }
.positioning li { transition:color .35s; }
.positioning li:hover { color:var(--gold-light); }

.introduction .editorial-grid { grid-template-columns:38% minmax(0,1fr); gap:9%; align-items:center; }
.intro-aside .section-label { margin-bottom:42px; }
.intro-photo .photo-frame { aspect-ratio:4/5; }
.introduction .editorial-main { padding-top:30px; }
.introduction h2 { font-size:clamp(46px,4.8vw,72px); }
.intro-body { display:block; margin-top:30px; }
.intro-body .body-copy { font-size:15px; max-width:580px; }
.keywords { border-left:0; border-top:1px solid var(--line); padding:22px 0 0; margin-top:32px; display:flex; flex-wrap:wrap; gap:35px; }
.keywords li { font-size:27px; position:relative; }
.keywords li+li::before { content:""; position:absolute; left:-19px; top:50%; width:3px; height:3px; background:var(--gold); }
.expertise { background:#0a0a0a; }
.service-row { isolation:isolate; overflow:hidden; padding:34px 0; transition:background .6s, padding .6s var(--ease-editorial); }
.service-row::before { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(105deg,rgba(199,163,90,.11),transparent 65%); opacity:0; transform:translateX(-10%); transition:opacity .5s,transform .75s var(--ease-editorial); }
.service-row::after { content:""; position:absolute; bottom:0; left:0; right:0; height:1px; background:var(--gold); transform:scaleX(0); transform-origin:left; transition:transform .8s var(--ease-editorial); }
.service-row:hover::before, .service-row:focus-within::before { opacity:1; transform:none; }
.service-row:hover::after, .service-row:focus-within::after { transform:scaleX(1); }
.service-row h3 { transition:transform .6s var(--ease-editorial),color .4s; }
.service-row:hover h3, .service-row:focus-within h3 { transform:translateX(9px); color:var(--champagne); }
.service-number { transition:transform .7s var(--ease-editorial),opacity .4s; }
.service-row:hover .service-number { transform:translateY(-3px); }
.service-arrow { border:1px solid transparent; transition:transform .55s var(--ease-editorial),border-color .4s,color .4s; }
.service-row:hover .service-arrow, .service-row:focus-within .service-arrow { border-color:var(--line); color:var(--champagne); transform:rotate(45deg); }
.service-arrow:hover { border-color:var(--gold)!important; }
.service-row p { font-size:14px; }
.service-row.is-pointer-active::before { background:radial-gradient(ellipse at var(--pointer-x,50%) var(--pointer-y,50%),rgba(199,163,90,.13),rgba(199,163,90,.025) 65%,transparent); }

.approach-photo { margin-top:80px; }
.approach-photo .photo-frame { aspect-ratio:2.65; }

.approach-photo figcaption { justify-content:flex-end; }
.timeline li { transition:transform .7s var(--ease-editorial); }
.timeline h3 { transition:color .4s; }
.timeline li:hover h3 { color:var(--gold-light); }
.stage-line { background:var(--line); }
.stage-line::after { content:""; position:absolute; inset:0; background:var(--gold); transform:scaleX(0); transform-origin:left; transition:transform 1.2s var(--ease-editorial); }
.timeline.is-visible .stage-line::after { transform:scaleX(1); }
.timeline li:nth-child(2) .stage-line::after { transition-delay:.12s; }
.timeline li:nth-child(3) .stage-line::after { transition-delay:.24s; }
.timeline li:nth-child(4) .stage-line::after { transition-delay:.36s; }
.value { background:var(--surface); }
.value>.editorial-grid { grid-template-columns:43% minmax(0,1fr); gap:10%; align-items:center; }
.value-heading h2 { margin-top:30px; max-width:410px; }
.value-photo { margin-top:40px; }
.value-photo .photo-frame { aspect-ratio:1.3; }
.value-list li { padding:22px 0; font-size:16px; position:relative; transition:padding-left .5s var(--ease-editorial),color .4s; }
.value-list li:hover { padding-left:10px; color:var(--champagne); }
.value-tick { display:inline-block; transition:transform .55s var(--ease-editorial); }
.value-list li:hover .value-tick { transform:rotate(45deg); }
.about-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:11%; align-items:center; }
.about-photo .photo-frame { aspect-ratio:1.28; }
.about-photography { position:relative; }
.about-photography::before { content:""; display:block; position:absolute; inset:35px auto 69px -25px; width:50%; border:1px solid var(--line); z-index:-1; }
.about-content .section-label { margin-bottom:31px; }
.about-content h2 { font-size:clamp(48px,5.3vw,80px); }
.about-content .body-copy { font-size:15px; }
.about-action { margin-top:35px; }
.about-layout:has(.about-photography:empty) { grid-template-columns:1fr; max-width:850px; }
.about-photography:empty { display:none; }
.advisory { padding:140px 0; overflow:hidden; position:relative; }
.advisory::before { content:"\201c"; position:absolute; pointer-events:none; top:10px; left:6%; color:var(--gold); opacity:.055; font:400 440px/.9 var(--heading); }
.advisory h2 { max-width:990px; font-size:clamp(43px,5.5vw,82px); }
.advisory-thought { color:var(--muted); }
.contact-heading { padding-bottom:55px; }
.contact-big-arrow { transition:transform .85s var(--ease-editorial),color .4s; }
.contact:hover .contact-big-arrow { transform:translate(7px,-7px); color:var(--champagne); }
.footer-main a { transition:color .3s; }

/* Motion has a clear beginning and end; it never takes over page scrolling. */
.js-reveal [data-reveal] { transition:opacity 1s var(--ease-editorial),transform 1.1s var(--ease-editorial); transition-delay:var(--reveal-delay,0ms); transform:translateY(34px); }
.js-reveal [data-reveal].is-visible { opacity:1; transform:translateY(0); }
.motion-ready .hero-title-line>span[data-reveal] { transform:translateY(45px) rotate(2deg); filter:blur(3px); transition:transform 1.25s var(--ease-editorial),opacity 1s,filter 1s; transition-delay:var(--reveal-delay,0ms); }
.motion-ready .hero-title-line>span.is-visible { transform:translateY(0) rotate(0); filter:blur(0); }
.word-reveal { display:inline-block; }
.motion-ready [data-split] .word-reveal { opacity:0; transform:translateY(.4em) rotate(1.5deg); filter:blur(2px); transition:opacity .8s,transform 1s var(--ease-editorial),filter .8s; transition-delay:var(--word-delay,0ms); }
.motion-ready [data-split].is-visible .word-reveal { opacity:1; transform:none; filter:blur(0); }
.motion-ready [data-photo] .photo-frame { clip-path:inset(0 100% 0 0); transition:clip-path 1.5s var(--ease-editorial); transition-delay:var(--reveal-delay,0ms); }
.motion-ready [data-photo].is-visible .photo-frame { clip-path:inset(0 0 0 0); }
.motion-ready [data-photo] figcaption { opacity:0; transform:translateY(12px); transition:opacity .8s .45s,transform 1s var(--ease-editorial) .45s; }
.motion-ready [data-photo].is-visible figcaption { opacity:1; transform:none; }
.motion-ready .photo-veil { display:block; transform:translateX(0); transition:transform 1.5s var(--ease-editorial); }
.motion-ready .is-visible .photo-veil { transform:translateX(101%); }
.motion-ready .hero-photo .photo-frame { clip-path:inset(0 0 0 100%); transition-duration:1.7s; }
.motion-ready .hero-photo.is-visible .photo-frame { clip-path:inset(0); }
.motion-ready .mobile-menu.is-opening { animation:menu-reveal .6s var(--ease-editorial) both; }
.motion-ready .mobile-menu.is-opening nav a { animation:menu-link .65s var(--ease-editorial) both; animation-delay:calc(.1s + var(--menu-index,0)*55ms); }
@keyframes menu-reveal { from{clip-path:inset(0 0 100% 0)} to{clip-path:inset(0)} }
@keyframes menu-link { from{opacity:0;transform:translateY(24px)} to{opacity:1;transform:none} }

@media(min-width:1600px) {
    .hero { min-height:940px; padding-top:185px; }
    .hero h1 { font-size:154px; }
}
@media(max-width:1150px) {
    .hero h1 { font-size:clamp(90px,10.5vw,130px); }
    .hero-photo { width:68%; }
    .hero-photo figcaption { right:5vw; bottom:40px; }
    .hero-description { max-width:400px; }
    .hero-description p { max-width:350px; }
    .introduction .editorial-grid { gap:7%; grid-template-columns:39% 1fr; }
    .introduction h2 { font-size:52px; }
    .intro-aside .section-label { gap:12px; }
    .intro-aside .eyebrow { font-size:10px; }
    .keywords { gap:25px; }
    .keywords li { font-size:23px; }
    .keywords li+li::before { left:-14px; }
    .service-row p { font-size:13px; }
    .about-layout { gap:8%; }
    .about-content h2 { font-size:58px; }
}
@media(max-width:900px) {
    .hero { min-height:850px; padding-top:153px; }
    .hero-photo { width:80%; }
    .hero-photo .photo-frame::after { background:linear-gradient(90deg,var(--bg),rgba(7,7,7,.45) 40%,rgba(7,7,7,.14)),linear-gradient(0deg,var(--bg),transparent 65%); }
    .hero-photo figcaption { display:none; }
    .hero h1 { font-size:clamp(94px,13.5vw,124px); }
    .hero-description p { max-width:400px; }
    .hero-description::after { margin-top:28px; }
    .introduction .editorial-grid { grid-template-columns:35% 1fr; gap:7%; }
    .intro-aside .section-label { display:block; margin-bottom:26px; }
    .intro-aside .section-label>span { display:block; margin-bottom:10px; }
    .intro-aside .section-label .eyebrow { max-width:130px; }
    .intro-photo .photo-frame { aspect-ratio:3/5; }
    .introduction .editorial-main { padding-top:0; }
    .introduction h2 { font-size:46px; }
    .intro-body .body-copy { font-size:14px; }
    .keywords { gap:20px; }
    .keywords li { font-size:21px; }
    .keywords li+li::before { left:-11px; }
    .editorial-photo figcaption { font-size:10px; gap:11px; }
    .photo-caption-rule { width:18px; }
    .approach-photo { margin-top:55px; }
    .value>.editorial-grid { grid-template-columns:43% 1fr; gap:8%; }
    .value-list li { font-size:14px; padding-block:17px; }
    .value-photo .photo-frame { aspect-ratio:4/5; }
    .about-layout { grid-template-columns:1fr 1.2fr; gap:8%; }
    .about-photo .photo-frame { aspect-ratio:1.2; }
    .about-content h2 { font-size:49px; }
    .about-content .body-copy { font-size:14px; }
    .about-photography::before { left:-15px; top:25px; }
    .contact-heading { padding-bottom:35px; }
}
@media(max-width:600px) {
    .reading-progress { height:2px; }
    .hero { padding:142px 0 52px; min-height:810px; }
    .hero-photo { width:100%; height:570px; inset:0 0 auto; }
    .hero-photo .photo-media { filter:saturate(.58) brightness(.63); }
    .hero-photo .photo-frame::after { background:linear-gradient(90deg,rgba(7,7,7,.52),rgba(7,7,7,.05)),linear-gradient(0deg,var(--bg),rgba(7,7,7,.04) 65%,rgba(7,7,7,.16)); }
    .hero h1 { font-size:clamp(76px,20.3vw,115px); line-height:.98; margin-bottom:40px; }
    .hero h1>.hero-title-line { padding-bottom:2px; }
    .hero-eyebrow { font-size:9px; margin-bottom:32px; }
    .hero-description p { font-size:14px; color:#c9c4ba; max-width:340px; line-height:1.85; margin-bottom:26px; }
    .hero-description::after { margin-top:27px; }
    .hero-actions { flex-direction:row; gap:12px; }
    .hero-actions .button { min-width:0; min-height:52px; font-size:9px; padding:15px 17px; gap:20px; }
    .hero-actions .button-gold { min-width:230px; }
    .hero-actions .button-outline { min-width:165px; }
    .introduction .editorial-grid { display:flex; flex-direction:column; gap:35px; }
    .intro-aside { width:100%; }
    .intro-aside .section-label { display:flex; align-items:baseline; gap:16px; margin-bottom:28px; }
    .intro-aside .section-label>span { margin:0; }
    .intro-aside .section-label .eyebrow { max-width:none; }
    .intro-photo .photo-frame { aspect-ratio:1.15; }
    .introduction .editorial-main { width:100%; }
    .introduction h2 { font-size:44px; }
    .keywords { gap:28px; }
    .keywords li { font-size:24px; }
    .keywords li+li::before { left:-16px; }
    .editorial-photo figcaption { font-size:11px; margin-top:16px; }
    .service-row { padding-block:27px; }
    .service-row p { font-size:13px; }
    .service-row:hover h3 { transform:translateX(3px); }
    .approach-photo { margin-top:45px; }
    .approach-photo .photo-frame { aspect-ratio:1.2; }

    .approach-photo figcaption { justify-content:flex-start; }
    .stage-line::after { display:none; }
    .timeline li { transition-delay:var(--reveal-delay,0ms); }
    .value>.editorial-grid { grid-template-columns:1fr; gap:40px; }
    .value-heading h2 { max-width:320px; font-size:44px; }
    .value-photo { margin-top:30px; }
    .value-photo .photo-frame { aspect-ratio:1.3; }
    .value-list li { font-size:14px; padding-block:18px; }
    .about-layout { display:flex; flex-direction:column; gap:38px; }
    .about-photography { width:100%; }
    .about-photo .photo-frame { aspect-ratio:1.2; }
    .about-photography::before { display:none; }
    .about-content h2 { font-size:51px; }
    .about-content .section-label { margin-bottom:25px; }
    .about-content .body-copy { font-size:14px; }
    .advisory { padding-block:90px; }
    .advisory h2 { font-size:43px; }
    .advisory::before { font-size:280px; top:10px; left:-12px; }
    .contact-heading { padding-bottom:32px; }
}
@media(hover:none), (pointer:coarse) {
    .photo-media { transform:scale(1.04); }
    .editorial-photo:hover .photo-media { scale:1; }
    .button,.header-cta { transform:none; }
}
body[data-animations=false] *, body[data-animations=false] *::before, body[data-animations=false] *::after { animation:none!important; transition:none!important; }
body[data-animations=false] .photo-media { transform:none; scale:1; }
body[data-animations=false] .reading-progress { display:none; }
@media(prefers-reduced-motion:reduce) {
    html[data-smooth=true] { scroll-behavior:auto; }
    .word-reveal,.js-reveal [data-reveal] { opacity:1!important; transform:none!important; filter:none!important; }
    .editorial-photo .photo-frame { clip-path:none!important; }
    .editorial-photo .photo-media { transform:none!important; scale:1!important; }
    .editorial-photo figcaption { opacity:1!important; transform:none!important; }
    .photo-veil,.reading-progress { display:none!important; }
    .button,.header-cta { transform:none!important; }
}
@media print {
    .reading-progress,.hero-photo { display:none; }
    .editorial-photo { break-inside:avoid; }
    .editorial-photo .photo-frame { clip-path:none!important; }
    .word-reveal { opacity:1!important; transform:none!important; filter:none!important; }
}

.motion-ready .button,.motion-ready .header-cta { transition:transform .3s var(--ease-editorial),background .25s,color .25s,border-color .25s; }
