/* Comfortable reading sizes and responsive editorial typography. */
body{font-size:16px;line-height:1.75}

.hero-copy>p{font-size:18px;line-height:1.75;max-width:520px}
.section-heading>p,
.about-text>p+p,
.value p,
.practice-row p,
.practice-footer p,
.method-intro>p,
.step p,
.person .bio,
.team-end p,
.article>p,
.faqs details p,
.contact-intro>p,
.page-head p,
.area-page-grid p,
.side-note p,
.prose p,
.empty-state{font-size:16px;line-height:1.75}
.faqs summary,.offering-list li{font-size:16px;line-height:1.65}
.contact-action p{font-size:14px;line-height:1.75}
.article-note{font-size:14px!important;line-height:1.75}

.nav>a,.menu-toggle,
.button,.hero-actions .button,.side-note .button,.other-areas .button,
.text-link,.hero-actions .text-link,.article .text-link,
.location .text-link,.office-links .text-link{font-size:14px}
.button,.text-link,.nav-cta{max-width:100%}
.hero-actions{flex-wrap:wrap;row-gap:20px}
.hero-actions .text-link{gap:16px}
.area-index,.area-index a{font-size:14px}
.area-index{flex-wrap:wrap;gap:14px 24px}
.area-index span{font-size:12px}

.eyebrow,.hero .eyebrow,
.hero-bottom .small,
.sectors,
.person .role,.all-people .role,
.article .meta,.article .source,
.search-label,.result-count,
.step span,.offering-list span,
.contact-phones a:not(.text-link)>span,
.professional-registration{font-size:12px;line-height:1.65}
.eyebrow,.hero .eyebrow{letter-spacing:.14em}
.hero-bottom .small,.sectors,.article .meta,.article .source{letter-spacing:.09em}
.person .role,.all-people .role{letter-spacing:.07em}
.photo-note{font-size:12px;line-height:1.65}
.photo-note span{max-width:240px}
.breadcrumb{font-size:13px;flex-wrap:wrap;gap:8px 15px}
.search-label input{font-size:16px}

.office-address address,.location address{font-size:16px;line-height:1.75}
.office-links .phone,.office-links .office-phone,.location .phone{font-size:16px}
.office-address{gap:24px}
.contact-action,.contact-top>*{min-width:0}
.contact-action .email{overflow-wrap:anywhere}
.footer p,.footer-links,.footer-social,.footer-bottom{font-size:13px;line-height:1.75}
.footer-main>*{min-width:0}
.footer-social a{overflow-wrap:anywhere}

/* Larger navigation text switches to a menu before the header becomes crowded. */
@media(min-width:1001px) and (max-width:1100px){
  .header-inner{gap:24px}
  .nav{gap:20px}
  .nav-cta{gap:16px}
}
@media(max-width:1000px){
  .site-header{height:82px}
  .menu-toggle{display:block;font-size:14px}
  .site-header .nav{
    display:none;position:absolute;inset:81px 0 auto;
    background:#19191f;padding:25px 32px 40px;
    box-shadow:0 20px 30px #0003;border-bottom:1px solid #4b4b4e;
    max-height:calc(100dvh - 82px);overflow:auto;
  }
  .site-header .nav.open{display:flex;flex-direction:column;align-items:stretch;gap:0}
  .site-header .nav>a{font-size:17px;padding:15px 0}
  .site-header .nav>a:after{display:none}
  .site-header .nav .nav-cta{padding:15px 18px;margin-top:15px}
  .hero-copy>p{font-size:17px}
}
@media(max-width:820px){
  .office-address{flex-direction:column;gap:18px}
  .hero-bottom{flex-wrap:wrap}
  .section-heading>p{max-width:100%}
}
@media(max-width:600px){
  .site-header{height:76px}
  .site-header .nav{top:75px;padding-inline:20px;max-height:calc(100dvh - 76px)}
  .hero-copy>p{max-width:100%;font-size:17px}
  .hero .eyebrow{font-size:12px;letter-spacing:.1em;max-width:100%}
  .hero-actions{gap:20px 24px}
  .hero-actions .button{font-size:14px;gap:22px}
  .hero-actions .text-link{font-size:14px}
  .area-index{justify-content:flex-start;gap:12px 22px}
  .area-index a{font-size:14px}
  .office-address{flex-direction:column;gap:18px}
  .office-links .phone,.office-links .office-phone,.location .phone{font-size:16px}
  .all-people .role{font-size:12px;letter-spacing:.04em}
  .other-areas .button{font-size:14px;padding:15px;gap:14px}
  .photo-note{font-size:12px}
}
@media(max-width:420px){
  .location{grid-template-columns:1fr;gap:10px}
  .footer-social{flex-wrap:wrap;gap:12px 24px}
}

/* Justified reading copy; final lines retain their natural spacing. */
p,li,address,summary,.photo-note span,.professional-registration{
  text-align:justify;
  text-align-last:start;
  -webkit-hyphens:auto;
  hyphens:auto;
  hyphenate-limit-chars:6 3 3;
  overflow-wrap:break-word;
}
h1,h2,h3,h4,h1 em,h2 em,h3 em,h4 em{font-weight:500}
.about-intro,.value h3{font-weight:700}
.sectors-heading{font-family:var(--sans);font-size:16px;line-height:1.65;margin-top:28px}
.sectors-heading+.sectors{margin-top:10px}
h1,h2,h3,h4{
  overflow-wrap:break-word;
  word-break:normal;
  hyphens:none;
}
.hero-grid>*,.about-grid>*,.practice-row>*,.section-heading>*,
.people-grid>*,.article-grid>*,.office-address>*,.area-page-grid>*,
.faq-grid>*,.locations>*,.location>*{min-width:0}
.rule-label:before{flex-shrink:0}
.hero-actions .button,.hero-actions .text-link,.menu-toggle{min-height:44px}
.hero-actions .text-link{padding-block:10px;line-height:1.5}
.office-address{flex-direction:column;gap:20px}
.office-address address{max-width:100%}
.office-links .text-link{min-height:44px;align-items:center}
.offering-list span{flex-shrink:0}

/* Tablet layouts give longer, justified paragraphs the full reading width. */
@media(max-width:820px){
  .hero-grid{display:flex;flex-direction:column;min-height:0}
  .hero-copy{padding:32px 0 36px}
  .hero h1{font-size:clamp(44px,7.6vw,62px);max-width:680px}
  .hero-copy>p{max-width:100%}
  .hero-actions{flex-direction:row;flex-wrap:wrap;align-items:center;gap:18px 24px}
  .hero-image{margin:0;min-height:390px}
  .hero .eyebrow{max-width:100%}
  .about-grid,.faq-grid,.contact-top,.area-page-grid{grid-template-columns:1fr;gap:32px}
  .contact-intro>p,.faqs details p{max-width:100%}
  .side-note{position:static}
  .contact-action{max-width:100%}
  .section-heading{flex-wrap:wrap}
  .section-heading>p{max-width:100%}
}
@media(max-width:600px){
  .header-inner{gap:12px}
  .menu-toggle{height:44px;flex-shrink:0}
  .site-header .nav>a{min-height:44px}
  .hero-copy{padding:30px 0 32px}
  .hero h1{font-size:clamp(38px,10.5vw,54px);line-height:1.07}
  .hero h1 em{line-height:1.09}
  .hero-image{min-height:340px}
  .hero-actions{width:100%;gap:12px 24px}
  .hero-actions .button{max-width:100%;padding:15px 18px;min-height:52px}
  h2,.faq-grid h2{font-size:clamp(36px,10vw,43px)}
  .contact h2{font-size:clamp(39px,10.5vw,49px)}
  .page-head h1{font-size:clamp(43px,11.5vw,58px)}
  .area-page-grid h2{font-size:clamp(34px,9.5vw,39px)}
  .practice-row h3{font-size:clamp(29px,8.3vw,33px)}
  .contact-action .email{font-size:clamp(18px,5vw,23px);line-height:1.5}
  .office-address{flex-direction:column;gap:18px}
  .location{grid-template-columns:1fr}
  .all-people h3{font-size:clamp(22px,5.7vw,26px);line-height:1.15}
  .all-people .role{overflow-wrap:break-word}
  .side-note{padding:26px}
  .footer-links a,.footer-social a{display:inline-flex;align-items:center;min-height:44px}
  .footer-links{gap:4px 20px}
}
@media(max-width:420px){
  .contact-phones{grid-template-columns:1fr;gap:22px}
  .hero-actions{align-items:stretch;flex-direction:column}
  .hero-actions .text-link{align-self:flex-start}
}

/* Stable vector icons keep their shape and alignment at narrow widths. */
.ui-icon{display:block;width:20px;height:20px;min-width:20px;flex:0 0 20px;vertical-align:middle}
.link-label{min-width:0;overflow-wrap:break-word}
.button,.text-link,.nav-cta{min-width:0;min-height:44px;gap:clamp(12px,2vw,24px);text-align:start}
.circle-arrow{flex-shrink:0;line-height:1}
.circle-arrow .ui-icon{width:18px;height:18px;min-width:18px;flex-basis:18px}
.contact-action .email{display:flex;align-items:center;gap:12px;max-width:100%}
.contact-action .email .link-label{overflow-wrap:anywhere}
.footer-social a{display:inline-flex;align-items:center;gap:10px;min-height:44px}
.footer-social .ui-icon{width:16px;height:16px;min-width:16px;flex-basis:16px}
.menu-toggle{align-items:center;justify-content:center;gap:8px;line-height:1.2}
.menu-toggle .ui-icon{width:16px;height:16px;min-width:16px;flex-basis:16px}
.menu-toggle[aria-expanded="true"] .menu-icon-vertical{display:none}
.faqs summary:after{content:"";top:50%;transform:translateY(-50%);right:3px;width:14px;height:14px;background:linear-gradient(currentColor,currentColor) center/100% 1.5px no-repeat,linear-gradient(currentColor,currentColor) center/1.5px 100% no-repeat}
.faqs details[open] summary:after{content:"";background-size:100% 1.5px,0 0}
@media(max-width:1000px){.site-header .menu-toggle{display:inline-flex}.site-header .nav-cta{justify-content:space-between}}
@media(max-width:820px){.practice-row{grid-template-columns:minmax(0,.9fr) minmax(0,1fr) 30px}}
@media(max-width:600px){
 .practice-row{grid-template-columns:minmax(0,1fr) 32px;gap:13px}
 .practice-row .circle-arrow{width:32px;height:32px}
 .hero-actions .button{gap:16px}
 .text-link{line-height:1.5}
 .side-note .button{width:100%}
}
