/* Balancium in motion: editorial typography, photo shutters, and responsive interactions. */
.motion-word{display:inline-block;max-width:100%;vertical-align:baseline}
.button{overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.button:after{content:'';position:absolute;inset:-40%;z-index:-1;background:linear-gradient(105deg,transparent 38%,#fff3 50%,transparent 62%);transform:translateX(-100%);transition:transform .75s var(--ease);pointer-events:none}
.button:hover:after,.button:focus-visible:after{transform:translateX(100%)}
.button:hover,.button:focus-visible{box-shadow:0 8px 24px #0b20391a;transform:translateY(-2px)}.button:active{transform:translateY(0) scale(.98)}
.practice-card,.practice-card:first-child{transition:transform .5s var(--ease),background-color .45s ease}
.practice-card:before,.practice-card:first-child:before{background:linear-gradient(145deg,#b7a27d22,transparent 80%);transition:opacity .45s ease}
.practice-card:after{content:'';position:absolute;top:0;left:22px;right:22px;height:1px;background:#9b7e4d;transform:scaleX(0);transform-origin:left;transition:transform .65s var(--ease);pointer-events:none}
.practice-card:hover:after,.practice-card:focus-visible:after{transform:scaleX(1)}
.practice-card:hover,.practice-card:focus-visible{transform:translateY(-2px)}
.practice-top>.icon{transition:transform .55s var(--ease)}.practice-card:hover .practice-top>.icon,.practice-card:focus-visible .practice-top>.icon{transform:translateY(-3px)}
.practice-card:hover .practice-bottom>.icon,.practice-card:focus-visible .practice-bottom>.icon{transform:translate(3px,-3px);background:var(--gold-light)}
.post-photo:before{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#0b203940,transparent 70%);z-index:1;opacity:0;transition:opacity .5s ease;pointer-events:none}
.post-photo:hover:before,.post-photo:focus-visible:before{opacity:1}.photo-arrow{z-index:2}.post-photo:hover .photo-arrow{transform:translate(3px,-3px) rotate(45deg)}
.person-card{transition:border-color .4s ease,box-shadow .5s var(--ease)}.person-card:hover,.person-card:focus-visible{box-shadow:0 18px 40px #0b203910}
.person-card .person-profile-link>.icon{transition:transform .45s var(--ease)}.person-card:hover .person-profile-link>.icon{transform:translateX(5px)}
.approach-steps>div{position:relative}.approach-steps>div:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform 1s var(--ease)}
.approach-steps>.motion-entered:after,.approach-steps>div:hover:after{transform:scaleX(1)}
.approach-steps>div>span{transition:color .35s ease,background-color .35s ease,border-color .35s ease}.approach-steps>div:hover>span{background:var(--navy);color:var(--gold-light);border-color:var(--navy)}
.footer-grid>div>a:not(.brand){transition:color .3s ease,translate .4s var(--ease)}.footer-grid>div>a:not(.brand):hover{color:var(--gold-light);translate:4px 0}
/* The reading line follows the real scroll position, without a frame loop. */
@supports(animation-timeline:scroll()){
  .site-header:before{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--gold);z-index:2;transform-origin:left;animation:reading-progress linear both;animation-timeline:scroll(root block);pointer-events:none}
}
@keyframes reading-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
/* Destination pages enter gently; ordinary links, back/forward and forms remain native. */
@media(prefers-reduced-motion:no-preference){body:not(.page-home) #main{animation:page-enter .55s cubic-bezier(.16,1,.3,1) both}}
@keyframes page-enter{from{opacity:.75;translate:0 14px}to{opacity:1;translate:0 0}}
/* Readable type and a single spacing system keep the motion grounded in the firm's editorial identity. */
.hero{min-height:max(650px,calc(100svh - 90px))}
.hero-content{padding-top:clamp(100px,13vh,150px);padding-bottom:150px}
.hero-content>p{font-size:16px;line-height:1.8;max-width:510px}
.about-copy>p,.heading-aside,.practice-card>p,.practice-card:first-child>p,.approach-steps p,.post-card>p,.page-heading>p,.contact-details p,.team-heading-note p{font-size:16px;line-height:1.8}
.practice-card,.practice-card:first-child{min-height:390px}
.practice-card>p,.practice-card:first-child>p{max-width:290px}
.practice-card h3{font-size:24px;line-height:1.35}
.about-copy h2,.section-heading h2{line-height:1.3}
.button,.hero-secondary{font-size:13px}.text-link{font-size:14px}
.site-header nav>a,.nav-services>summary{font-size:12px}
.post-meta{font-size:12px}.post-meta>span{font-size:11px}
.footer-grid p,.footer-grid>div>a:not(.brand){font-size:14px;line-height:1.8}.footer-bottom{font-size:11px}
.contact-details>div>section>a{font-size:16px}.contact-form label{font-size:14px}.contact-form input,.contact-form textarea,.contact-form select{font-size:15px}
.contact-form input,.contact-form textarea,.contact-form select{transition:border-color .3s ease,box-shadow .3s ease,background-color .3s ease}
.contact-form input:focus,.contact-form textarea:focus,.contact-form select:focus{border-color:var(--gold);box-shadow:0 0 0 3px #b7a27d20}
@media(max-width:1100px){.practice-card,.practice-card:first-child{padding-inline:22px}.hero-content>p{max-width:470px}}
@media(max-width:1050px){.practice-card,.practice-card:first-child{min-height:350px}.practice-card>p,.practice-card:first-child>p{max-width:340px}}
@media(max-width:900px){.hero{min-height:max(680px,calc(100svh - 84px))}.hero-content{padding-top:85px}.hero h1{font-size:clamp(46px,6.3vw,66px)}.hero-content>p{font-size:15px}.header-inner{gap:20px}}
@media(max-width:600px){
  .hero{min-height:max(700px,calc(100svh - 84px))}.hero-content{padding-top:65px;padding-bottom:135px}.hero h1{font-size:45px}.hero-content>p{font-size:15px;line-height:1.8;margin-block:24px 28px}.hero-line:nth-child(2){font-size:24px}
  .hero-actions>.button{font-size:12px;min-height:50px}.hero-secondary{font-size:12px}.hero-bottom>span{font-size:8px}.hero-bottom>a{font-size:7px}
  .about-copy>p,.heading-aside,.practice-card>p,.practice-card:first-child>p,.approach-steps p,.post-card>p,.page-heading>p,.contact-details p{font-size:16px}
  .practice-card,.practice-card:first-child{min-height:0;padding:36px 18px}.practice-card h3{font-size:26px}.practice-card>p,.practice-card:first-child>p{max-width:100%}
  .practice-card:hover,.practice-card:focus-visible{transform:none}.button:hover{transform:none}.section-heading .heading-aside{font-size:15px}
  .footer-grid p,.footer-grid>div>a:not(.brand){font-size:13px}.footer-bottom{font-size:11px}.footer-grid{gap:32px 20px}
}
@media(prefers-reduced-motion:reduce){
  .site-header:before{display:none}.practice-card:hover,.practice-card:focus-visible,.practice-card:hover .practice-top>.icon,.practice-card:focus-visible .practice-top>.icon,.button:hover,.button:focus-visible{transform:none}
  .footer-grid>div>a:not(.brand):hover{translate:none}
}
@media print{#main{animation:none!important;opacity:1!important;translate:none!important}.site-header:before{display:none}.motion-word,.motion-prepared{opacity:1!important;transform:none!important;clip-path:none!important;translate:none!important}.hero{min-height:0}.hero-content{padding:25px 0}}
