/* A short constellation resolves into the firm's identity, then the page assembles. */
.site-intro{display:none}
.intro-loading .site-intro{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;overflow:hidden;background:#0b2039;color:#f0ebe2;isolation:isolate;animation:intro-safety 1ms 4500ms forwards}
.site-intro:before{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 50% 43%,#25466080,transparent 58%)}
.intro-grid{position:absolute;inset:0;opacity:.13;background-image:linear-gradient(#b7a27d28 1px,transparent 1px),linear-gradient(90deg,#b7a27d28 1px,transparent 1px);background-size:clamp(55px,8vw,110px) clamp(55px,8vw,110px);mask-image:radial-gradient(ellipse at center,#000,transparent 68%)}
.intro-center{width:min(360px,calc(100vw - 64px));text-align:center;position:relative}
.intro-emblem{position:relative;display:grid;place-items:center;width:200px;height:200px;margin:0 auto 28px}
.intro-emblem:before,.intro-emblem:after{content:'';position:absolute;inset:17px;border:1px solid #b7a27d26;border-radius:50%}
.intro-emblem:after{inset:0;border-color:transparent;border-top-color:#cbb48c;border-bottom-color:#b7a27d45;animation:intro-orbit 1.4s cubic-bezier(.4,0,.2,1) 2}
.intro-logo{width:76px;height:76px;object-fit:contain;animation:intro-logo-in .9s cubic-bezier(.16,1,.3,1) both}
.intro-particles{position:absolute;inset:0;pointer-events:none}
.intro-particles i{position:absolute;left:50%;top:50%;width:5px;height:5px;background:#e3d7be;box-shadow:0 0 12px #e3d7be60;--x:104px;--y:-60px;--r:30deg;animation:intro-particle 1.65s cubic-bezier(.22,1,.36,1) both}
.intro-particles i:nth-child(2){--x:-110px;--y:25px;--r:140deg;animation-delay:60ms}
.intro-particles i:nth-child(3){--x:70px;--y:96px;--r:70deg;animation-delay:90ms;width:3px;height:9px}
.intro-particles i:nth-child(4){--x:-65px;--y:-100px;--r:-50deg;animation-delay:30ms}
.intro-particles i:nth-child(5){--x:145px;--y:15px;--r:100deg;animation-delay:120ms;width:8px;height:2px}
.intro-particles i:nth-child(6){--x:-135px;--y:-65px;--r:80deg;animation-delay:150ms;background:#7a9ab4}
.intro-particles i:nth-child(7){--x:12px;--y:-133px;--r:-80deg;animation-delay:80ms;background:#7a9ab4;width:3px;height:3px}
.intro-particles i:nth-child(8){--x:-20px;--y:125px;--r:160deg;animation-delay:50ms;width:3px;height:3px}
.intro-name{font-family:var(--serif);font-size:clamp(34px,7vw,44px);font-weight:400;letter-spacing:-.7px;line-height:1.25;overflow-wrap:anywhere;animation:intro-type-in .8s .15s both}
.intro-office{display:block;font:500 9px/1.5 var(--sans);letter-spacing:5px;margin:12px 0 37px;color:#cbb48c;animation:intro-type-in .8s .25s both}
.intro-track{position:relative;height:1px;max-width:220px;margin:auto;background:#e3d7be26;overflow:hidden}
.intro-track:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,#e3d7be,transparent);transform:translateX(-100%);animation:intro-progress 1.25s ease-in-out 3}
.intro-status{margin-top:14px;color:#b9c5d0;font-size:10px;letter-spacing:1px}
.intro-caption{position:absolute;bottom:max(35px,env(safe-area-inset-bottom));left:24px;right:24px;text-align:center;font-size:8px;letter-spacing:3px;color:#cbb48c}
.intro-skip{position:absolute;right:32px;top:28px;padding:10px 0;color:#c4cdd6;background:none;border:0;border-bottom:1px solid #c4cdd640;font-size:10px;letter-spacing:.6px}
.intro-skip:hover{color:#fff}.intro-skip:focus-visible{outline:2px solid #e3d7be;outline-offset:6px}
.intro-loading .site-intro.is-leaving{animation:intro-exit .65s cubic-bezier(.76,0,.24,1) both;pointer-events:none}
.intro-loading .site-intro.is-leaving .intro-center{animation:intro-center-exit .3s ease both}
.intro-loading .site-intro.is-leaving .intro-track:after{animation:none;transform:none}
@keyframes intro-orbit{to{transform:rotate(360deg)}}
@keyframes intro-logo-in{from{opacity:0;transform:scale(.8) rotate(-8deg)}to{opacity:1;transform:none}}
@keyframes intro-type-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes intro-particle{0%{opacity:0;transform:translate(calc(var(--x)*1.6),calc(var(--y)*1.6)) rotate(var(--r))}25%{opacity:.9}65%{opacity:.8;transform:translate(var(--x),var(--y)) rotate(calc(var(--r) + 90deg))}100%{opacity:0;transform:translate(0,0) rotate(calc(var(--r) + 180deg)) scale(.2)}}
@keyframes intro-progress{to{transform:translateX(100%)}}
@keyframes intro-exit{to{transform:translateY(-101%)}}
@keyframes intro-center-exit{to{opacity:0;transform:translateY(-24px)}}
@keyframes intro-safety{to{visibility:hidden;pointer-events:none}}
@keyframes page-assemble{from{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}
@keyframes header-assemble{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
@keyframes visual-assemble{from{opacity:.3;clip-path:inset(0 0 16% 0)}to{opacity:1;clip-path:inset(0)}}
@media(prefers-reduced-motion:no-preference){
  .intro-loading:not(.intro-revealing) .hero-line,.intro-loading:not(.intro-revealing) .hero-content>p,.intro-loading:not(.intro-revealing) .hero-actions,.intro-loading:not(.intro-revealing) .hero-bottom{animation:intro-wait 4500ms step-end both}
  .intro-loading .page-heading>*{animation-play-state:paused}
  .intro-revealing .site-header{animation:header-assemble .75s .12s cubic-bezier(.16,1,.3,1) both}
  .intro-revealing .hero-visual{animation:visual-assemble 1s cubic-bezier(.16,1,.3,1) both}
  .intro-revealing .hero-line{animation:page-assemble .9s .16s cubic-bezier(.16,1,.3,1) both}
  .intro-revealing .hero-line:nth-child(2){animation-delay:.28s}
  .intro-revealing .hero-line:nth-child(n+3){animation-delay:.34s}
  .intro-revealing .hero-content>p{animation:page-assemble .8s .4s cubic-bezier(.16,1,.3,1) both}
  .intro-revealing .hero-actions{animation:page-assemble .8s .5s cubic-bezier(.16,1,.3,1) both}
  .intro-revealing .hero-bottom{animation:page-assemble .8s .6s cubic-bezier(.16,1,.3,1) both}
  .intro-revealing .page-heading>*{animation:page-assemble .8s .2s cubic-bezier(.16,1,.3,1) both;animation-play-state:running}
}
@keyframes intro-wait{0%{opacity:0}100%{opacity:1}}
@media(max-width:600px){.intro-emblem{width:170px;height:170px;margin-bottom:25px}.intro-logo{width:65px;height:65px}.intro-skip{right:23px;top:20px}.intro-caption{font-size:7px;letter-spacing:2px;bottom:max(28px,env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.site-intro{display:none!important}}
@media print{.site-intro{display:none!important}}
