html.dialog-open{overflow:hidden}
.reading-progress{position:fixed;inset:0 0 auto;z-index:50;height:3px;pointer-events:none}
.reading-progress span{display:block;height:100%;background:var(--copper);transform:scaleX(var(--page-progress,0));transform-origin:left}
.site-header{transition:box-shadow .35s var(--ease)}
.site-header.scrolled{box-shadow:0 6px 24px #203d3510}
.button{position:relative;isolation:isolate;overflow:hidden;transition:transform .35s var(--ease),background .3s}
.button:before{content:'';position:absolute;width:150%;height:250%;border-radius:50%;background:#fff2;left:-25%;top:0;transform:translateY(100%);transition:transform .55s var(--ease);z-index:-1}
.button:hover:before{transform:translateY(-20%)}
.button span[aria-hidden],.text-link span,.round-link,.header-cta span{transition:transform .35s var(--ease)}
.button:hover span[aria-hidden],.header-cta:hover span{transform:translate(3px,-3px)}
.round-link:hover{transform:rotate(45deg)}
.intent-strip a{position:relative;overflow:hidden}
.intent-strip a:before{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--copper);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.intent-strip a:hover:before{transform:scaleX(1)}
.intent-strip a i{transition:transform .3s}
.intent-strip a:hover i{transform:translate(3px,-3px)}
.editorial-ribbon{overflow:hidden;border-bottom:1px solid var(--line);margin-top:42px;padding:24px 0;background:#f0eee5}
.ribbon-track{display:flex;align-items:center;gap:55px;width:max-content;animation:ribbon-drift 45s linear infinite;color:var(--ink);animation-play-state:paused}
.ribbon-track>span{font-family:var(--serif);font-size:42px;line-height:1;font-style:italic}
.ribbon-track>i{font-size:25px;color:var(--copper);font-style:normal}
.editorial-ribbon.motion-in-view .ribbon-track{animation-play-state:running}
.editorial-ribbon:hover .ribbon-track{animation-play-state:paused}
.motion-ready .reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:var(--reveal-delay,0ms)}
.motion-ready .reveal.in-view{opacity:1;transform:none}
.service-tabs button{overflow:hidden}
.service-tabs button:before{content:'';width:3px;position:absolute;left:0;top:0;bottom:0;background:var(--copper);transform:scaleY(0);transform-origin:bottom;transition:transform .35s}
.service-tabs button:hover:before,.service-tabs button[aria-selected=true]:before{transform:scaleY(1)}
.approach{background-image:radial-gradient(ellipse at 5% 100%,#54744b40,transparent 55%)}
.approach:before{content:'';position:absolute;width:700px;height:700px;right:-380px;top:-340px;border:1px solid #77947b24;border-radius:50%;box-shadow:0 0 0 45px #77947b08,0 0 0 90px #77947b08,0 0 0 135px #77947b08;pointer-events:none}
.approach-symbol{transform:translateX(var(--symbol-x,0px));transition:transform .8s var(--ease)}
.process li>div{transition:transform .35s var(--ease)}
.process li:hover>div{transform:translateX(8px)}
.process .step-number{position:relative}
.process .step-number:after{content:'';position:absolute;left:0;right:0;top:32px;height:1px;background:#d9bea3;transform:scaleX(0);transform-origin:left;transition:transform .4s}
.process li:hover .step-number:after{transform:scaleX(1)}
.compass{display:inline-block;animation:compass-turn 35s linear infinite;animation-play-state:paused}
.compass.motion-in-view{animation-play-state:running}
.office-pin{animation:pin-float 5s ease-in-out infinite;animation-play-state:paused}
.map-ring{animation:map-breathe 5s ease-in-out infinite;animation-play-state:paused}
.office-art.motion-in-view .office-pin,.office-art.motion-in-view .map-ring{animation-play-state:running}
.ambient-paused .ribbon-track,.ambient-paused .compass,.ambient-paused .office-pin,.ambient-paused .map-ring{animation-play-state:paused!important}
.office-art{transition:transform .5s var(--ease)}
.office-art:hover{transform:translateY(-5px)}
.site-header nav a.section-active{color:var(--copper)}
.site-header nav a.section-active:after{right:0}
.floating-brief{position:fixed;right:24px;bottom:24px;background:var(--paper);border:1px solid #bdc9b7;box-shadow:0 5px 30px #10261e1a;z-index:25;display:flex;align-items:center;gap:12px;padding:13px 18px;font-size:10px;transform:translateY(100px);opacity:0;visibility:hidden;transition:transform .45s var(--ease),opacity .45s,visibility .45s}
.floating-brief.visible{transform:translateY(0);opacity:1;visibility:visible}
.floating-dot{width:6px;height:6px;border-radius:50%;background:var(--copper)}
.floating-brief>span:last-child{font-size:20px}
.brief-review{animation:arrive .4s var(--ease)}
.form-progress span{transition:color .3s}
.form-progress .current{position:relative}
.form-progress .current:after{content:'';position:absolute;bottom:-21px;left:0;right:0;height:2px;background:var(--copper);animation:line-in .35s var(--ease)}
@keyframes arrive{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
@keyframes ribbon-drift{to{transform:translateX(-50%)}}
@keyframes compass-turn{to{transform:rotate(360deg)}}
@keyframes pin-float{50%{transform:translateY(-8px)}}
@keyframes map-breathe{50%{transform:scale(1.08);opacity:.5}}
@keyframes line-in{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(hover:none),(pointer:coarse){.process li:hover>div{transform:none}}
@media(max-width:720px){.editorial-ribbon{margin-top:28px;padding-block:20px}.ribbon-track{gap:30px}.ribbon-track>span{font-size:32px}.ribbon-track>i{font-size:19px}.floating-brief{bottom:15px;right:15px;font-size:9px;padding:10px 14px;gap:10px}.motion-ready .reveal{transform:translateY(18px)}.motion-ready .reveal.in-view{transform:none}}
@media(prefers-reduced-motion:reduce){.motion-ready .reveal{opacity:1;transform:none}.ribbon-track,.compass,.office-pin,.map-ring,.brief-review,.form-progress .current:after{animation:none}.editorial-ribbon .ribbon-track{flex-wrap:wrap;width:auto;justify-content:center}.ribbon-track>*:nth-child(n+9){display:none}.floating-brief{transition:none}.floating-brief.visible{transform:none}.approach-symbol,.office-art:hover,.process li:hover>div,.button:hover:before,.button:hover span[aria-hidden],.header-cta:hover span{transform:none}}
