:root{
  --white:#FDFDFC; --surface:#F5F5F2; --ink:#12141A; --body:#3A3E46; --muted:#5F646D; --faint:#5F646D;
  --rule:#E6E5E1; --rule-2:#D6D5D0; --navy:#091929; --navy-lift:#132A42; --silver:#C4C3C8;
  --err:#8C2F2F; --ok:#1F5137;
  --display:"Cormorant Garamond",Georgia,serif;
  --sans:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --pad:clamp(20px,5vw,64px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--white);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
.wrap{max-width:1280px;margin:0 auto;padding:0 var(--pad)}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
:focus-visible{outline:2px solid var(--navy);outline-offset:3px}

h1,h2,h3,h4{font-family:var(--display);font-weight:400;letter-spacing:-.01em;line-height:1.06}
h1{font-size:clamp(38px,6.4vw,88px)}
h2{font-size:clamp(28px,4.2vw,56px)}
h3{font-size:clamp(21px,2.3vw,29px)}
p{color:var(--body);max-width:68ch}
.eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:500}
.lede{font-size:clamp(17px,1.6vw,20px);line-height:1.6}
.small{font-size:14px}
.tiny{font-size:12.5px;color:var(--muted);line-height:1.6}

.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--navy);color:#fff;padding:14px 22px;font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.skip:focus{left:12px;top:12px}
#prog{position:fixed;top:0;left:0;height:2px;width:0;background:var(--navy);z-index:70;transition:width .1s linear}

/* gate */
#gate{position:fixed;inset:0;z-index:100;background:var(--navy);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;animation:gateIn .4s var(--ease) forwards}
#gate[hidden]{display:none}
@keyframes gateIn{to{opacity:1}}
.gate-panel{background:var(--white);max-width:660px;width:100%;padding:clamp(28px,5vw,52px);max-height:88vh;overflow-y:auto;transform:translateY(14px);opacity:0;animation:panelIn .55s var(--ease) .12s forwards;border:1px solid rgba(255,255,255,.12)}
@keyframes panelIn{to{transform:translateY(0);opacity:1}}
.gate-panel img{width:62px;margin-bottom:22px}
.gate-panel h2{font-size:34px;margin-bottom:14px}
.gate-panel p{font-size:13.5px;line-height:1.72;margin-bottom:11px}
.gate-actions{display:flex;align-items:center;gap:24px;margin-top:26px;padding-top:22px;border-top:1px solid var(--rule)}
.gate-decline{font-size:13px;color:var(--faint);border-bottom:1px solid transparent;transition:color .2s,border-color .2s}
.gate-decline:hover{color:var(--ink);border-color:var(--rule-2)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--navy);color:#fff;padding:15px 30px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;border:1px solid var(--navy);transition:background .2s var(--ease),transform .2s var(--ease),opacity .2s}
.btn:hover{background:var(--navy-lift);transform:translateY(-2px)}
.btn:active{transform:translateY(0) scale(.99)}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--rule-2)}
.btn-ghost:hover{background:var(--surface);border-color:var(--navy)}
.btn-light{background:#fff;color:var(--navy);border-color:#fff}
.btn-light:hover{background:var(--silver);border-color:var(--silver)}
.btn .arw{transition:transform .25s var(--ease)}
.btn:hover .arw{transform:translateX(4px)}

/* header */
header{position:sticky;top:0;z-index:80;background:rgba(253,253,252,.86);backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:border-color .3s,box-shadow .3s}
header.stuck{border-bottom-color:var(--rule)}
.hd{display:flex;align-items:center;justify-content:space-between;height:88px;transition:height .3s var(--ease)}
header.stuck .hd{height:70px}
.brand{display:flex;align-items:center;gap:14px}
.brand img{width:48px;transition:width .3s var(--ease)}
header.stuck .brand img{width:40px}
.brand .bar{width:1px;height:34px;background:var(--rule-2)}
.brand .nm{font-family:var(--display);font-size:19px;letter-spacing:.13em;color:var(--navy);white-space:nowrap}
.hd nav{display:flex;align-items:center;gap:32px}
.hd nav a{font-size:12.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--body);position:relative;padding:6px 0;transition:color .2s}
.hd nav a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--navy);transform:scaleX(0);transform-origin:left;transition:transform .28s var(--ease)}
.hd nav a:hover{color:var(--navy)}
.hd nav a:hover::after,.hd nav a[aria-current="page"]::after{transform:scaleX(1)}
.hd nav a[aria-current="page"]{color:var(--navy)}
.menu-btn{display:none;width:26px;height:16px;position:relative;z-index:80}
.menu-btn span{position:absolute;left:0;width:100%;height:1px;background:var(--ink);transition:transform .3s var(--ease)}
.menu-btn span:first-child{top:0}.menu-btn span:last-child{bottom:0}
.menu-btn[aria-expanded="true"] span:first-child{transform:translateY(7px) rotate(45deg)}
.menu-btn[aria-expanded="true"] span:last-child{transform:translateY(-8px) rotate(-45deg)}
#drawer{position:fixed;inset:0;background:var(--white);z-index:75;padding-top:88px;display:flex;flex-direction:column;justify-content:center;padding:0 var(--pad);opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .3s var(--ease),transform .3s var(--ease),visibility .3s}
#drawer.open{opacity:1;visibility:visible;transform:none}
#drawer a{font-family:var(--display);font-size:clamp(26px,7vw,36px);color:var(--ink);padding:14px 0;border-bottom:1px solid var(--rule)}
#drawer .dr-meta{margin-top:40px;padding-top:26px;border-top:1px solid var(--rule)}
#drawer .dr-meta .lbl{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}
#drawer .dr-meta a{display:block;width:fit-content;font-family:var(--sans);font-size:16px;border:0;padding:10px 0;color:var(--body);line-height:1.5}

/* hero mark: draws in on load, once */
.hero-mark{position:absolute;right:2%;top:50%;transform:translateY(-50%);
  width:auto;height:auto;max-width:min(560px,44vw);max-height:74%;
  opacity:0;pointer-events:none;
  clip-path:inset(0 100% 0 0);animation:markDraw 1.6s var(--ease) .35s forwards}
@media(max-width:900px){.hero-mark{right:-8%;max-width:58vw;max-height:56%;opacity:.05}}
@keyframes markDraw{to{opacity:.075;clip-path:inset(0 0 0 0)}}
.hero .rise{opacity:0;transform:translateY(14px);animation:rise .8s var(--ease) forwards}
@keyframes rise{to{opacity:1;transform:none}}

/* page hero */
.phero{padding:clamp(48px,7vw,96px) 0 clamp(28px,4vw,52px);border-bottom:1px solid var(--rule);position:relative;overflow:hidden}
.nf-mark{right:3%;max-width:min(400px,32vw);max-height:70%;width:auto;height:auto}
@media(max-width:900px){.nf-mark{display:none}}
.phero .eyebrow{margin-bottom:20px}
.phero h1{margin-bottom:22px;max-width:17ch}
.phero p{max-width:60ch}

section{padding:clamp(56px,8vw,112px) 0}
.sec-head{display:flex;align-items:baseline;gap:18px;padding-bottom:18px;border-bottom:1px solid var(--rule-2);margin-bottom:clamp(28px,4vw,52px);flex-wrap:wrap}
.sec-num{font-family:var(--display);font-size:20px;color:var(--navy);opacity:.5}
.sec-head h2{flex:1}
.sec-head .aside{font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.rv{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.rv.in{opacity:1;transform:none}

/* practice index */
.px-row{display:grid;grid-template-columns:52px 1fr 1.05fr 22px;align-items:center;gap:20px;padding:24px 14px 24px 10px;border-bottom:1px solid var(--rule);transition:background .25s var(--ease),padding-left .25s var(--ease);position:relative}
.px-row:first-child{border-top:1px solid var(--rule)}
.px-row:hover,.px-row:focus-visible{background:var(--surface);padding-left:22px}
.px-n{font-family:var(--display);font-size:22px;color:var(--navy);opacity:.45;transition:opacity .25s,transform .25s var(--ease)}
.px-row:hover .px-n{opacity:1;transform:translateX(3px)}
.px-t{font-family:var(--display);font-size:clamp(21px,2.3vw,29px);line-height:1.16}
.px-d{font-size:14px;line-height:1.6;color:var(--muted);transition:color .3s}
.px-row:hover .px-d{color:var(--ink)}
.px-a{color:var(--faint);opacity:0;transform:translateX(-6px);transition:all .3s var(--ease)}
.px-row:hover .px-a{opacity:1;transform:none;color:var(--navy)}

/* navy band */
.band{background:var(--navy);color:#fff}
.band .eyebrow,.band .sec-num{color:rgba(196,195,200,.62);opacity:1}
.band h2,.band h3{color:#fff}
.band p{color:rgba(255,255,255,.72)}
.band .sec-head{border-bottom-color:rgba(196,195,200,.2)}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1px;background:rgba(196,195,200,.16);border:1px solid rgba(196,195,200,.16)}
.fact{background:var(--navy);padding:34px 28px}
.fact .k{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(196,195,200,.6);margin-bottom:14px}
.fact .v{font-family:var(--display);font-size:clamp(24px,2.6vw,33px);line-height:1.2;color:#fff}
.fact .s{font-size:13.5px;color:rgba(255,255,255,.6);margin-top:8px}

/* people */
.people{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:clamp(18px,2.4vw,32px)}
.pf{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--surface);border:1px solid var(--rule)}
.pf .init{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:64px;color:var(--navy);opacity:.22;letter-spacing:.04em;transition:transform .55s var(--ease),opacity .35s}
.person:hover .pf .init{transform:scale(1.05);opacity:.42}
.person .nm{font-family:var(--display);font-size:21px;margin-top:16px;position:relative;display:inline-block}
.person .nm::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--navy);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.person:hover .nm::after{transform:scaleX(1)}
.person .dg{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:5px}

.feature{display:grid;grid-template-columns:280px 1fr;gap:clamp(24px,4vw,56px);align-items:center}
.feature .nm{font-size:clamp(28px,4vw,46px);margin-top:0}

/* editorial two-col */
.two{display:grid;grid-template-columns:1.55fr 1fr;gap:clamp(28px,5vw,80px);align-items:start}
.prose p{margin-bottom:20px}
.prose p:last-child{margin-bottom:0}
.side{position:sticky;top:112px}
.side h4{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);font-family:var(--sans);font-weight:500;margin-bottom:14px}
.side li{list-style:none;padding:11px 0;border-bottom:1px solid var(--rule);font-size:14.5px;color:var(--body)}
.side li:last-child{border-bottom:0}
.pullquote{background:var(--navy);color:#fff;padding:clamp(36px,6vw,72px) 0;margin:clamp(40px,6vw,80px) 0}
.pullquote blockquote{font-family:var(--display);font-size:clamp(24px,3.4vw,42px);line-height:1.28;max-width:22ch}
.pullquote cite{display:block;margin-top:24px;font-style:normal;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:rgba(196,195,200,.7);font-family:var(--sans)}

/* sticky index page */
.idx-wrap{display:grid;grid-template-columns:250px 1fr;gap:clamp(28px,5vw,72px);align-items:start}
.idx{display:block;position:sticky;top:112px}
.idx a{display:block;font-size:14px;padding:10px 0 10px 16px;border-left:1px solid var(--rule-2);color:var(--muted);transition:color .25s,border-color .25s}
.idx a:hover{color:var(--ink)}
.idx a.active{color:var(--navy);border-left-color:var(--navy)}
.pa-block{padding-bottom:clamp(36px,5vw,64px);margin-bottom:clamp(36px,5vw,64px);border-bottom:1px solid var(--rule);scroll-margin-top:120px}
.pa-block:last-child{border-bottom:0;margin-bottom:0}
.pa-block .n{font-family:var(--display);font-size:19px;color:var(--navy);opacity:.45;margin-bottom:10px}
.pa-block h2{margin-bottom:16px}
.pa-block .lead-by{margin-top:20px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.pa-block .lead-by a{color:var(--navy);border-bottom:1px solid var(--rule-2)}

/* clients */
.cl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:0 clamp(24px,4vw,56px)}
.cl-grid div{padding:13px 0;border-bottom:1px solid var(--rule);font-size:15px;color:var(--body)}

/* profile */
.prof{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(28px,5vw,72px);align-items:start}
.prof-img{position:sticky;top:112px}
.prof h1{font-size:clamp(32px,4.6vw,58px);margin-bottom:12px}
.prof .dg{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--navy);margin-bottom:26px}
.card{border:1px solid var(--rule-2);padding:26px 28px;margin-top:34px}
.card h4{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);font-family:var(--sans);font-weight:500;margin-bottom:14px}
.card a{display:block;padding:5px 0;color:var(--ink);border-bottom:1px solid transparent;width:fit-content;transition:border-color .2s}
.card a:hover{border-bottom-color:var(--navy)}
.prof-nav{display:flex;justify-content:space-between;gap:16px;padding-top:26px;margin-top:56px;border-top:1px solid var(--rule);font-size:13px}
.prof-nav a{color:var(--body);transition:color .2s}
.prof-nav a:hover{color:var(--navy)}

/* form */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.field{display:flex;flex-direction:column}
.field.full{grid-column:1/-1}
.field label{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:9px}
.field label .req{color:var(--err)}
.field input,.field select,.field textarea{
  font:inherit;font-size:15px;color:var(--ink);background:transparent;
  border:0;border-bottom:1px solid var(--rule-2);padding:11px 2px;border-radius:0;
  transition:border-color .25s,background .25s;
}
.field textarea{resize:vertical;min-height:112px}
.field select{cursor:pointer;appearance:none;padding-right:30px;background-repeat:no-repeat;background-position:right 4px center;background-size:11px 7px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M1 1l4.5 4.5L10 1' fill='none' stroke='%235F646D' stroke-width='1.4'/%3E%3C/svg%3E")}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-bottom-color:var(--navy);background:var(--surface)}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-bottom-color:var(--err)}
.err{font-size:12.5px;color:var(--err);margin-top:7px;display:none}
.field.invalid .err{display:block}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.field label.consent{font-size:13.5px;letter-spacing:0;text-transform:none;color:var(--body);margin-bottom:0;cursor:pointer}
.consent{display:flex;gap:11px;align-items:flex-start;font-size:13px;color:var(--body);line-height:1.55}
.consent a{color:var(--navy)}
.consent input{width:16px;height:16px;margin-top:3px;accent-color:var(--navy);flex:0 0 auto}
.form-banner{padding:14px 18px;border:1px solid var(--err);color:var(--err);font-size:14px;margin-bottom:22px;display:none}
.form-banner.show{display:block}
.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:none}
.btn.loading .spinner{display:inline-block}
.btn.loading .arw{display:none}
@keyframes spin{to{transform:rotate(360deg)}}
.success{border:1px solid var(--rule-2);padding:clamp(30px,5vw,52px);text-align:left}
.success .tick{width:44px;height:44px;border:1px solid var(--ok);color:var(--ok);display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:22px}
.success h3{margin-bottom:12px}

/* offices + faq */
.off{padding:26px 0;border-bottom:1px solid var(--rule)}
.off:first-child{border-top:1px solid var(--rule)}
.off h4{font-family:var(--display);font-size:22px;margin-bottom:10px}
.off address{font-style:normal;font-size:14.5px;color:var(--body);line-height:1.7}
.off a{color:var(--navy);border-bottom:1px solid var(--rule-2);transition:border-color .2s}
.off a:hover{border-bottom-color:var(--navy)}
.faq details{border-bottom:1px solid var(--rule)}
.faq summary{list-style:none;cursor:pointer;padding:20px 34px 20px 0;font-family:var(--display);font-size:20px;position:relative;transition:color .2s}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:4px;top:19px;font-size:20px;color:var(--faint);transition:transform .3s var(--ease),color .2s}
.faq details[open] summary::after{transform:rotate(45deg);color:var(--navy)}
.faq summary:hover{color:var(--navy)}
.faq .ans{padding:0 0 22px;font-size:15px;color:var(--body);max-width:66ch}

/* cookie */
#cookie{position:fixed;left:0;right:0;bottom:0;z-index:64;background:var(--navy);color:rgba(255,255,255,.8);padding:16px var(--pad);display:none;align-items:center;gap:18px;flex-wrap:wrap;font-size:13.5px;border-top:1px solid rgba(196,195,200,.2)}
#cookie.show{display:flex}
#cookie a{color:#fff;border-bottom:1px solid rgba(255,255,255,.4)}
#cookie button{background:#fff;color:var(--navy);padding:9px 20px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;transition:background .2s}
#cookie button:hover{background:var(--silver)}
#cookie .c-txt{flex:1;min-width:240px}

/* cta band */
.cta-in{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(28px,5vw,72px);align-items:end}
.cta-meta{font-size:14px;line-height:1.8;color:rgba(255,255,255,.66)}
.cta-meta a{border-bottom:1px solid rgba(196,195,200,.3);transition:border-color .2s}
.cta-meta a:hover{border-color:#fff}

/* back to top */
#top-btn{position:fixed;right:22px;bottom:22px;z-index:65;width:46px;height:46px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .3s var(--ease),transform .3s var(--ease),visibility .3s,background .2s}
#top-btn.show{opacity:1;visibility:visible;transform:none}
#top-btn:hover{background:var(--navy-lift)}

/* footer */
footer{background:var(--navy);color:rgba(255,255,255,.6);padding:clamp(52px,7vw,88px) 0 34px;border-top:1px solid rgba(196,195,200,.14)}
.ft-top{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:clamp(28px,4vw,56px);padding-bottom:44px;border-bottom:1px solid rgba(196,195,200,.14)}
.ft-brand img{width:44px;margin-bottom:18px}
.ft-brand .nm{font-family:var(--display);font-size:21px;letter-spacing:.13em;color:#fff;margin-bottom:12px}
.ft-brand p{color:rgba(255,255,255,.55);font-size:14px;max-width:34ch}
.ft-col h4{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(196,195,200,.6);margin-bottom:16px;font-weight:500;font-family:var(--sans)}
.ft-col a{display:block;font-size:14px;color:rgba(255,255,255,.66);padding:5px 0;transition:color .2s}
.ft-col a:hover{color:#fff}
.ft-bot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:24px;font-size:12px;color:rgba(255,255,255,.4)}
.ft-bot a{border-bottom:1px solid rgba(196,195,200,.25);transition:color .2s,border-color .2s}
.ft-bot a:hover{color:#fff;border-color:#fff}

@media(max-width:900px){
  .hd nav{display:none}
  .menu-btn{display:block}
  .px-row{grid-template-columns:38px 1fr;gap:6px 14px;padding:20px 10px}
  .px-d{grid-column:2;margin-top:6px;opacity:1}
  .px-a{display:none}
  .two,.idx-wrap,.prof,.cta-in,.feature{grid-template-columns:1fr}
  .side,.idx,.prof-img{position:static}
  .idx{display:none}
  .ft-top{grid-template-columns:1fr 1fr}
  .form-grid{grid-template-columns:1fr}
  .prof-img,.feature .pf{max-width:280px}
}
@media(max-width:560px){
  .ft-top{grid-template-columns:1fr}
  .hero-cta .btn,.btn.wide{width:100%}
}

@media print{
  header,#drawer,#top-btn,#prog,#gate,#cookie,.menu-btn,.hero-mark,.hero-cta,.skip{display:none!important}
  body{background:#fff;color:#000;font-size:11pt}
  section{padding:14pt 0;break-inside:avoid}
  .band,footer,.pullquote{background:#fff!important;color:#000!important;border-top:1px solid #999}
  .band h2,.band p,.band h3,.fact .v,footer *,.pullquote *{color:#000!important}
  a[href^="http"]::after,a[href^="mailto"]::after{content:" (" attr(href) ")";font-size:9pt;color:#555}
}
@media(prefers-reduced-motion:reduce){
  #prog{transition:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
  .rv{opacity:1;transform:none}
  .hero-mark{opacity:.075;clip-path:none;animation:none}
  .hero .rise{opacity:1;transform:none;animation:none}
}
