/* Refined editorial typography with readable text and fine rules. */
:root{--display-font:"Palatino Linotype","Book Antiqua",Palatino,Georgia,serif;--reading-font:"Helvetica Neue",Helvetica,Arial,sans-serif;--line:#e3e6e8}
:root body{font-family:var(--reading-font);font-weight:300}
:root body :is(h1,h2,h3,h4,h5,h6){font-family:var(--display-font)!important;font-weight:400!important;letter-spacing:-.02em}
:root body .hero h1{font-size:clamp(38px,4.5vw,64px);line-height:1.12;letter-spacing:-.025em}
:root body .article-body :is(p,ul,ol,li,td,blockquote,.list-feature-text,.list-feature-description),
:root body .hero .dek,:root body .assessment-inner p,
:root body :is(.blog-card,.resource-card,.case-study-card,.location-card,.footer-intro) p{font-family:var(--reading-font)!important;font-weight:300!important;letter-spacing:.005em;line-height:1.8}
:root body .article-body :is(p,ul,ol,li,td,.list-feature-text,.list-feature-description){font-size:16px}
:root body .article-body :is(.list-feature-title,.step-copy>h3){font-family:var(--display-font)!important;font-size:21px;font-weight:400!important;line-height:1.4;letter-spacing:-.01em}
:root body .article-body .styled-dot-list .step-copy>h3{font-size:21px;line-height:1.4}
:root body .faq-item>summary>h3{font-family:var(--reading-font)!important;font-size:16px;font-weight:400!important;letter-spacing:.025em}
:root body :is(.nav-list a,.services-dropdown a,.button,.desktop-assessment,.utility,.utility *,.footer-column a,.breadcrumbs,.process-row){font-family:var(--reading-font)!important;font-weight:400}
:root body :is(.eyebrow,.updated,.label,.city-code,.footer-column h2,th,cite){font-family:var(--reading-font)!important;font-weight:400!important;letter-spacing:.14em}
:root body .article-body :is(strong,b){font-weight:500}
:root body :is(.testimonial-showcase blockquote,.client-review blockquote){font-family:var(--display-font);font-weight:400}
:root body .article-body .reading-section>h2:first-child{font-size:clamp(28px,2.7vw,38px);line-height:1.25}
:root body .article-body h3{font-size:23px;line-height:1.35}
:root body .article-body .evidence-panel h2{font-size:clamp(30px,3vw,40px)!important}
.cta-band,.article-body>.crosslink-panel,.article-body>.reading-section--tinted{border-width:1px;border-color:#e1e4e5;border-left-color:#c5b79f}
.services-dropdown,.site-footer,.client-review,.testimonial-card{border-top-width:1px}
.hero h1:after{border-bottom-width:1px}
.article-body blockquote,:root body .article-body .reading-section blockquote{border-left-width:1px}
.article-body>.reading-section,.reading-section>h3,.faq-accordion,.faq-item,.faq-item[open]>summary,.process-table,.process-row,.related-card,.blog-card,.resource-card,.case-study-card,.location-card,.article-body table,.article-body td{border-color:var(--line)}
.process-icon svg{stroke-width:1}
:root body .button{border-width:1px;font-weight:400}
:root body .button-secondary{border-color:#bac6ce}
:root body .article-body ul.custom-markers>li::before{width:18px;height:18px;background-size:18px 18px;top:17px}
:root body .article-body .reading-section ul.custom-markers>.styled-dot-item:has(>.step-copy)+.styled-dot-item:has(>.step-copy)::before{top:27px}
@media(max-width:720px){
 :root body .hero h1{font-size:38px}
 :root body .article-body .reading-section>h2:first-child,:root body .article-body h2{font-size:29px}
 :root body .article-body h3{font-size:22px}
 :root body .article-body :is(p,li){font-weight:400!important}
}
:root body .article-body .faq-item>summary>h3{font-size:16px;line-height:1.7;letter-spacing:.025em}

/* Restore the original subtle logo-panel background. */
.brand-triangle{background:linear-gradient(145deg,#f9fbfd 0,#fff 55%,#eef3f8 100%)}
@media(max-width:1050px){.brand-triangle{background:linear-gradient(145deg,#f9fbfd,#fff 58%,#eef3f8)}}

/* Separate library and location grids from their page headers. */
.hero.shell:has(+ .blog-grid),.hero.shell:has(+ .locations-grid){margin-bottom:48px}
@media(max-width:720px){
 .hero.shell:has(+ .blog-grid),.hero.shell:has(+ .locations-grid){margin-bottom:32px}
}

/* Consistent hero image heights; Home and About use a taller treatment. */
.hero.shell>img{height:480px;min-height:0;max-height:none;aspect-ratio:auto;object-fit:cover;align-self:center}
.hero.shell.hero-tall>img{height:600px}
@media(max-width:1050px){
 .hero.shell>img{height:360px}
 .hero.shell.hero-tall>img{height:460px}
}
@media(max-width:720px){
 .hero.shell>img{height:300px}
 .hero.shell.hero-tall>img{height:380px}
}

/* Quiet, compact testimonial treatment on the homepage. */
.testimonial-showcase.home-testimonial{border-top:0;border-bottom:0}
:root body .testimonial-showcase.home-testimonial blockquote{font-size:clamp(24px,2.5vw,36px);line-height:1.4}

/* Join adjacent homepage split features without a gap. */
.home-page .split-feature:has(+ .split-feature){margin-bottom:0}
.home-page .split-feature+.split-feature{margin-top:0}

/* Add space above evidence modules without changing their interior. */
.evidence-module{margin-top:96px}
@media(max-width:720px){.evidence-module{margin-top:88px}}

@media(max-width:720px){.article-body{padding-bottom:12px}}

/* Hero images fill their panel even when long titles increase header height. */
.hero.shell>img{padding:0;margin:0;border:0}
@media(min-width:1051px){
 .hero.shell:has(>img){position:relative;min-height:480px}
 .hero.shell.hero-tall:has(>img){min-height:600px}
 .hero.shell>img,.profile-page .hero.shell>img.elena-profile-photo{position:absolute;inset:0 0 0 auto;width:50%;height:100%;min-height:0;max-height:none;max-width:none;aspect-ratio:auto;object-fit:cover;align-self:stretch;justify-self:stretch}
}
@media(max-width:1050px){
 .profile-page .hero.shell>img.elena-profile-photo{width:100%;height:360px;aspect-ratio:auto;object-fit:cover;align-self:stretch;justify-self:stretch}
}
@media(max-width:720px){.profile-page .hero.shell>img.elena-profile-photo{height:300px}}

/* Long editorial titles: main subject followed by a smaller second line. */
:root body .hero h1.hero-title-split{font-size:clamp(36px,3.8vw,54px)}
:root body .hero .hero-title-subtitle{display:block;margin-top:18px;font-family:var(--reading-font);font-size:clamp(18px,1.65vw,24px);font-weight:300;line-height:1.5;letter-spacing:0;color:var(--ink)}
@media(max-width:720px){
 :root body .hero h1.hero-title-split{font-size:36px}
 :root body .hero .hero-title-subtitle{font-size:18px;font-weight:400;margin-top:16px}
}

/* Wide tables scroll inside their own region, never the mobile page. */
.article-body .table-scroll{min-width:0;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.article-body>.table-scroll{width:100%;max-width:1080px;margin-inline:auto}
.blog-single .article-body>.table-scroll{max-width:1120px}
.article-body .table-scroll>table{display:table;width:100%;table-layout:auto}
.article-body .table-scroll:focus-visible{outline:2px solid #346f8c;outline-offset:3px}
@media(max-width:720px){
 .article-body .table-scroll{width:100%;margin-block:24px;scrollbar-width:thin;scrollbar-color:#9babb7 #edf1f3}
 .article-body .table-scroll>table{display:table;min-width:640px;max-width:none;margin:0;table-layout:auto;overflow:visible}
 .article-body .table-scroll :is(th,td){min-width:150px;white-space:normal;overflow-wrap:normal}
}

/* Clearly visible horizontal scrollbars for responsive tables. */
.article-body .table-scroll{scrollbar-width:auto;scrollbar-color:#346f8c #e2edf3}
.article-body .table-scroll::-webkit-scrollbar{height:10px}
.article-body .table-scroll::-webkit-scrollbar-track{background:#e2edf3;border-radius:5px}
.article-body .table-scroll::-webkit-scrollbar-thumb{background:#346f8c;border:2px solid #e2edf3;border-radius:5px}
.article-body .table-scroll::-webkit-scrollbar-thumb:hover{background:#245771}

/* Persistent mobile scrolling cue, independent of OS scrollbar visibility. */
.table-scroll-cue{display:none}
@media(max-width:720px){
 .table-scroll-cue:not([hidden]){display:flex;flex-direction:column;gap:9px;width:100%;max-width:1080px;margin:24px auto 0;color:#245771;font:400 13px/1.5 "Helvetica Neue",Helvetica,Arial,sans-serif}
 .table-scroll-track{position:relative;display:block;width:100%;height:6px;overflow:hidden;border-radius:3px;background:#e2edf3}
 .table-scroll-thumb{position:absolute;top:0;bottom:0;left:0;border-radius:3px;background:#346f8c}
 .article-body .table-scroll-cue:not([hidden])+.table-scroll{margin-top:10px}
}

/* Image-free navy editorial hero. */
.hero.shell.hero-navy{display:block;min-height:0;background:#0e1b2b}
.hero.shell.hero-navy>div:only-child{display:block;min-height:0;max-width:1080px;margin-inline:auto;padding:76px 0 80px;background:transparent}
:root body .hero.hero-navy .eyebrow{color:#c5ab86;font-family:var(--reading-font);font-size:12px;font-weight:400;letter-spacing:.2em;margin:0 0 22px}
:root body .hero.hero-navy h1{max-width:900px;margin:0 0 24px;color:#fff;font-size:clamp(38px,4.5vw,64px);line-height:1.15;font-weight:400}
.hero.hero-navy h1:after{display:none}
:root body .hero.hero-navy .dek{max-width:780px;margin:0 0 34px;color:#c5cdd6;font-family:var(--reading-font);font-size:clamp(18px,1.7vw,23px);line-height:1.65;font-weight:300}
:root body .hero.hero-navy .button{background:#f6f5f1;color:#183047!important;border:1px solid #f6f5f1;border-radius:0;padding:16px 28px;font-size:15px;font-weight:400}
:root body .hero.hero-navy .button:hover{background:#e8dfd1;border-color:#e8dfd1;color:#183047!important}
@media(max-width:1152px){.hero.shell.hero-navy>div:only-child{padding:64px 36px}}
@media(max-width:720px){.hero.shell.hero-navy>div:only-child{padding:46px 22px 50px}:root body .hero.hero-navy h1{font-size:38px}:root body .hero.hero-navy .dek{font-size:18px;font-weight:400}}
