:root{
  --brand:#1b4a7a; --brand-deep:#143a61; --brand-ink:#0f2b47; --brand-lift:#2860a0;
  --brand-wash:#e8f0f8; --accent:#0e7e7d; --accent-lift:#26a9a4; --accent2:#8fb3d9;
  --ink:#14304d; --body:#45566a; --muted:#56687c;
  --line:#dbe4ee; --line-soft:#e9eff6; --surface:#f3f7fb; --surface-2:#e9f0f7; --white:#fff;
  --serif:'Source Serif 4',Georgia,'Times New Roman',serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --wrap:1180px; --r:14px; --shadow:0 1px 2px rgba(20,48,77,.05),0 14px 34px -20px rgba(20,48,77,.32);
  --motion-1:143,179,217; --motion-2:38,169,164;
  --motion-accent:#1b4a7a; --motion-accent-2:#26a9a4; --motion-ink:#0f2b47;
  --motion-dark-rgb:15,43,71; --motion-nav-bg:rgba(255,255,255,.98);
}

*,*::before,*::after{box-sizing:border-box}

html{scroll-behavior:smooth;scroll-padding-top:112px}

body{margin:0;font-family:var(--sans);font-size:17px;line-height:1.68;color:var(--body);background:var(--white);-webkit-font-smoothing:antialiased}

img,video{max-width:100%;display:block}

h1,h2,h3,h4{font-family:var(--serif);color:var(--ink);margin:0 0 .5em;line-height:1.16;font-weight:600;letter-spacing:-.012em}

h1{font-size:clamp(2.3rem,5vw,3.5rem)}

h2{font-size:clamp(1.7rem,3.1vw,2.4rem)}

h3{font-size:1.2rem;line-height:1.32}

p{margin:0 0 1.1em}

a{color:var(--brand);text-decoration-thickness:1px;text-underline-offset:3px}

a:hover{color:var(--brand-deep)}

.container{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px}

.lede{font-size:1.15rem;color:var(--muted)}

.section{padding:94px 0}

.section--tight{padding:70px 0}

.section--wash{background:var(--surface)}

.section--edge{border-top:1px solid var(--line-soft)}

.section--texture{background:linear-gradient(135deg,#f3f7fb 0%,#e8f0f8 58%,#dfeaf6 100%);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}

.strip--texture{background:linear-gradient(135deg,#f3f7fb 0%,#e8f0f8 58%,#dfeaf6 100%);border-top-color:#cfdff0;border-bottom-color:#cfdff0}

.center{text-align:center}

.measure{max-width:718px}

.measure-wide{max-width:860px}

.center .measure,.center .measure-wide{margin-left:auto;margin-right:auto}

.rule{width:52px;height:3px;background:var(--accent);border-radius:2px;margin:0 0 22px}

.center .rule{margin-left:auto;margin-right:auto}

.center .card-ico{margin-left:auto;margin-right:auto}

.center .pill-list{justify-content:center}

:focus-visible{outline:3px solid var(--brand-lift);outline-offset:3px;border-radius:4px}

.skip{position:absolute;left:-9999px;top:0;background:var(--brand);color:#fff;padding:12px 18px;z-index:200}

.skip:focus{left:12px;top:12px}

/* utility strip + social row */
.utility{background:var(--brand-ink);color:#d7e4f1;font-size:.8rem;letter-spacing:.02em}

.utility .container{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:38px;flex-wrap:wrap}

.utility-facts{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:0;padding:0;list-style:none}

.utility-facts li+li::before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--accent-lift);margin-right:10px;vertical-align:middle}

.social-row{display:flex;align-items:center;gap:8px;margin:0;padding:0;list-style:none}

.social-row:empty{display:none}

.social-row a{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;transition:background .2s,transform .2s}

.social-row a:hover{background:var(--brand-lift);transform:translateY(-1px);color:#fff}

.social-row svg{width:15px;height:15px;fill:currentColor}

/* nav */
.nav{position:sticky;top:0;z-index:120;background:#fff;border-bottom:1px solid var(--line-soft)}

.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:22px;min-height:80px;transition:min-height .25s ease}

.nav-logo img{width:210px;height:auto}

.nav-links{display:flex;align-items:center;gap:25px;margin:0;padding:0;list-style:none}

.nav-links a{font-size:.9rem;font-weight:500;letter-spacing:.01em;color:var(--ink);text-decoration:none;padding:6px 0;position:relative}

.nav-links a.hv-underline::after{background:var(--accent);box-shadow:0 0 10px rgba(var(--motion-2),.5)}

.nav-cta{display:inline-flex;align-items:center;background:var(--brand);color:#fff;font-weight:600;font-size:.9rem;padding:13px 22px;border-radius:8px;text-decoration:none;white-space:nowrap;transition:background .2s,transform .2s}

.nav-cta:hover{background:var(--brand-deep);color:#fff;transform:translateY(-1px)}

.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:8px;padding:9px 11px;cursor:pointer}

.nav-toggle span{display:block;width:20px;height:2px;background:var(--ink);margin:4px 0;border-radius:2px}

.mobile-menu{display:none;border-top:1px solid var(--line-soft);background:#fff}

.mobile-menu.open{display:block}

.mobile-menu ul{list-style:none;margin:0;padding:10px 0 20px}

.mobile-menu a{display:block;padding:13px 4px;font-weight:500;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-soft)}

.mobile-menu .nav-cta{margin-top:16px;justify-content:center;width:100%}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--sans);font-weight:600;font-size:1rem;padding:16px 30px;border-radius:9px;text-decoration:none;border:2px solid transparent;cursor:pointer;transition:background .2s,transform .2s,border-color .2s}

.btn-primary{background:var(--brand);color:#fff;border-color:var(--brand)}

.btn-primary:hover{background:var(--brand-deep);border-color:var(--brand-deep);color:#fff;transform:translateY(-2px)}

.btn-light{background:#fff;color:var(--brand-ink);border-color:#fff}

.btn-light:hover{background:var(--brand-wash);color:var(--brand-ink);transform:translateY(-2px)}

.btn-outline{background:transparent;color:#fff;border-color:rgba(255,255,255,.6)}

.btn-outline:hover{background:rgba(255,255,255,.14);border-color:#fff;color:#fff}

.btn-quiet{background:transparent;color:var(--brand);border-color:var(--line)}

.btn-quiet:hover{border-color:var(--brand);color:var(--brand-deep)}

.arrow-link{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:.94rem;color:var(--brand);text-decoration:none}

.arrow-link:hover{color:var(--brand-deep)}

.arrow-link:hover::after{transform:translateX(4px)}

.arrow-link::after{content:"\2192";transition:transform .2s}

/* hero */
.hero{position:relative;overflow:hidden;background:var(--brand-ink);min-height:min(86vh,748px);display:flex;align-items:center;padding:118px 0 104px;text-align:center}

.hero .container{position:relative;z-index:3}

.hero h1{color:#fff;text-shadow:0 2px 26px rgba(8,24,40,.6);max-width:15ch;margin-left:auto;margin-right:auto}

.hero p{color:#e3edf7;font-size:1.18rem;max-width:60ch;margin-left:auto;margin-right:auto;text-shadow:0 1px 14px rgba(8,24,40,.6)}

.hero-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:30px}

.hero-trust{margin:32px auto 0;display:flex;gap:12px;justify-content:center;flex-wrap:wrap;list-style:none;padding:0;font-size:.84rem;color:#cfe0f0;letter-spacing:.05em;text-transform:uppercase}

.hero-trust li{display:flex;align-items:center;gap:12px}

.hero-trust li+li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent-lift);display:inline-block}

/* inner page hero (light, per the build's design direction) */
.page-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#f3f7fb 0%,#e8f0f8 58%,#dfeaf6 100%);border-bottom:1px solid var(--line-soft);padding:78px 0 66px}

.page-hero .container{position:relative;z-index:3}

.page-hero h1{max-width:20ch}

.page-hero p{color:var(--muted);max-width:62ch;font-size:1.1rem;margin-bottom:0}

.crumb{font-size:.83rem;color:var(--muted);margin:0 0 18px;letter-spacing:.03em}

.crumb a{color:var(--brand);text-decoration:none}

.crumb a:hover{text-decoration:underline}

.crumb span{opacity:.55;padding:0 7px}

/* grids & cards */
.grid{display:grid;gap:22px}

.g2{grid-template-columns:repeat(2,1fr)}

.g3{grid-template-columns:repeat(3,1fr)}

.g4{grid-template-columns:repeat(4,1fr)}

a.card{text-decoration:none;color:inherit;display:block}

.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:30px 28px;transition:border-color .22s,transform .22s,box-shadow .22s}

.card:hover{border-color:var(--brand-lift);transform:translateY(-3px);box-shadow:var(--shadow)}

.card h3{margin-bottom:.45em}

.card p{font-size:.97rem;margin-bottom:0;color:var(--muted)}

.card .arrow-link{margin-top:16px}

.card-ico{width:40px;height:40px;color:var(--brand);margin-bottom:18px}

.card-ico svg{width:100%;height:100%;stroke:currentColor;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}

.card--wash{background:var(--surface);border-color:transparent}

.card--lead{border-top:3px solid var(--accent)}

.card--flat:hover{transform:none;box-shadow:none;border-color:var(--line)}

/* split media */
.split{display:grid;grid-template-columns:1.02fr .98fr;gap:56px;align-items:center}

.split--flip .split-media{order:2}

.media-figure{margin:0;border-radius:var(--r);overflow:hidden;background:var(--surface-2);box-shadow:var(--shadow)}

.media-figure img{width:100%;height:100%;object-fit:cover}

.media-figure figcaption{font-size:.82rem;color:var(--muted);padding:12px 16px;background:#fff;border-top:1px solid var(--line-soft)}

.portrait{margin:0;border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line-soft);max-width:420px}

.portrait img{width:100%;height:auto}

/* lists */
.ticks{list-style:none;margin:0 0 1.4em;padding:0}

.ticks li{position:relative;padding:0 0 13px 30px;font-size:1rem}

.ticks li::before{content:"";position:absolute;left:2px;top:9px;width:9px;height:9px;border-radius:2px;background:var(--accent);transform:rotate(45deg)}

.pill-list{display:flex;flex-wrap:wrap;gap:9px;list-style:none;margin:0;padding:0}

.pill-list li{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 15px;font-size:.87rem;color:var(--body)}

.creds{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:0 0 26px}

.creds li{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:9px;padding:11px 16px;font-size:.9rem;font-weight:500;color:var(--ink);background:#fff}

.creds li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent)}

.city-list{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 18px;list-style:none;margin:0;padding:0}

.city-list li{font-size:.97rem;color:var(--ink);border-bottom:1px solid var(--line-soft);padding:9px 0}

/* service detail blocks */
.svc-cat{padding:74px 0;border-top:1px solid var(--line-soft)}

.svc-cat:first-of-type{border-top:0}

.svc-head{max-width:760px;margin-bottom:36px}

.svc-list{display:grid;grid-template-columns:repeat(2,1fr);gap:26px 40px}

.svc-item{border-top:2px solid var(--brand-wash);padding-top:20px}

.svc-item h3{font-size:1.06rem}

.svc-item p{font-size:.95rem;color:var(--muted);margin-bottom:0}

.svc-long article{padding:34px 0;border-top:1px solid var(--line-soft)}

.svc-long article:first-of-type{border-top:0;padding-top:6px}

.svc-long h2{font-size:clamp(1.4rem,2.4vw,1.85rem)}

/* dark band / CTA */
.band{position:relative;overflow:hidden;background:linear-gradient(135deg,#0f2b47 0%,#1b4a7a 62%,#215a90 100%);color:#fff;padding:84px 0}

.band::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:repeating-linear-gradient(135deg,rgba(255,255,255,.055) 0 1px,rgba(255,255,255,0) 1px 10px)}

.band .container{position:relative;z-index:3}

.band h2{color:#fff}

.band p{color:#dfeaf6}

.band-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:26px}

.center .band-actions{justify-content:center}

.strip{background:var(--brand-wash);border-top:1px solid #cfdff0;border-bottom:1px solid #cfdff0;padding:26px 0}

.strip .container{display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap}

.strip p{margin:0;color:var(--ink);font-size:1.02rem;max-width:70ch}

.strip strong{color:var(--brand-deep)}

/* widget slots */
.slot{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:44px 28px;text-align:center;color:var(--body);box-shadow:var(--shadow)}

.slot-title{font-family:var(--serif);font-size:1.15rem;color:var(--ink);margin:0 0 6px}

.slot p{margin:0;font-size:.95rem}

.slot .card-ico{margin-left:auto;margin-right:auto}

.slot--tall{min-height:520px;display:flex;flex-direction:column;align-items:center;justify-content:center}

.map-embed{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;height:330px;background:var(--surface-2)}

.map-embed iframe{display:block;width:100%;height:100%;border:0}

/* form */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}

.field{display:flex;flex-direction:column;gap:7px}

.field--full{grid-column:1/-1}

.field label{font-size:.86rem;font-weight:600;color:var(--ink);letter-spacing:.01em}

.field input,.field select,.field textarea{font-family:var(--sans);font-size:1rem;color:var(--ink);padding:13px 14px;border:1px solid var(--line);border-radius:9px;background:#fff;width:100%}

.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px rgba(27,74,122,.16)}

.field textarea{min-height:140px;resize:vertical}

.field small{color:var(--muted);font-size:.8rem}

/* contact form embed slot + CTA card */
.embed-slot{border:1px solid var(--line);border-radius:var(--r);background:#fff;padding:32px 30px;box-shadow:var(--shadow)}

.embed-slot .card-ico{color:var(--brand);margin-bottom:16px}

.embed-slot h3{font-size:1.24rem;margin-bottom:.42em}

.embed-slot p{font-size:.99rem;color:var(--muted)}

.embed-slot .ticks{margin-bottom:1.1em}

.embed-slot .ticks li{font-size:.97rem;padding-bottom:10px}

.embed-slot .btn{width:100%}

.embed-note{margin:16px 0 0;font-size:.9rem;color:var(--muted)}

/* NAP / contact */
.nap{font-style:normal;line-height:1.75}

.nap dt{font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-top:18px}

.nap dt:first-child{margin-top:0}

.nap dd{margin:2px 0 0;font-size:1.02rem;color:var(--ink)}

.nap dd a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line)}

.nap dd a:hover{color:var(--brand);border-color:var(--brand)}

/* legal pages */
.legal{max-width:790px}

.legal h2{font-size:1.45rem;margin-top:2em}

.legal h3{font-size:1.06rem;margin-top:1.6em}

.legal ul{padding-left:22px}

.legal li{margin-bottom:9px}

.legal .updated{font-size:.9rem;color:var(--muted);border-left:3px solid var(--accent);padding-left:16px;margin-bottom:34px}

/* footer */
.site-footer{background:var(--brand-ink);color:#c9d8e8;padding:72px 0 0;font-size:.94rem}

.site-footer h4{font-family:var(--sans);font-size:.79rem;letter-spacing:.11em;text-transform:uppercase;color:#fff;margin:0 0 18px;font-weight:600}

.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.25fr;gap:44px}

.foot-brand img{width:min(232px,100%);height:auto;object-fit:contain}

.foot-brand p{margin:20px 0 0;color:#bacde0;font-size:.93rem;max-width:38ch}

.foot-cred{margin-top:18px;font-size:.86rem;color:var(--accent-lift);letter-spacing:.03em}

.site-footer ul{list-style:none;margin:0;padding:0}

.site-footer li{margin-bottom:10px}

.site-footer a{color:#c9d8e8;text-decoration:none}

.site-footer a:hover{color:#fff;text-decoration:underline}

.foot-nap{font-style:normal;line-height:1.8;color:#dbe7f3}

.foot-nap strong{display:block;color:#fff;font-weight:600;margin-bottom:4px}

.foot-bottom{margin-top:58px;border-top:1px solid rgba(255,255,255,.14);padding:22px 0 26px;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:.85rem;color:#a7bcd2}

.foot-bottom ul{display:flex;gap:20px;flex-wrap:wrap}

.foot-bottom li{margin:0}

/* accordion cards */
.acc{display:grid;gap:14px}

.acc-item{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:border-color .22s,transform .3s,box-shadow .35s}

.acc-item[open]{border-color:var(--brand-lift);box-shadow:var(--shadow)}

.acc-item>summary{list-style:none;cursor:pointer;padding:24px 64px 24px 26px;position:relative;display:block}

.acc-item>summary::-webkit-details-marker{display:none}

.acc-item>summary::after{content:"";position:absolute;right:26px;top:30px;width:16px;height:16px;background:linear-gradient(var(--brand),var(--brand)) center/16px 2px no-repeat,linear-gradient(var(--brand),var(--brand)) center/2px 16px no-repeat;transition:transform .25s ease}

.acc-item[open]>summary::after{transform:rotate(45deg)}

.acc-item>summary:focus-visible{outline:3px solid var(--brand-lift);outline-offset:-3px}

.acc-h{font-family:var(--serif);font-size:1.2rem;font-weight:600;line-height:1.28;color:var(--ink);margin:0}

.acc-prev{margin:7px 0 0;font-size:.93rem;color:var(--muted)}

.acc-body{padding:22px 26px 28px;border-top:1px solid var(--line-soft);background:var(--surface)}

.acc-body>p:last-child,.acc-body>ul:last-child{margin-bottom:0}

.acc-body h4{font-family:var(--serif);font-size:1.02rem;font-weight:600;color:var(--ink);margin:22px 0 .45em}

.acc-body h4:first-child{margin-top:0}

.acc-body p{font-size:.97rem;margin-bottom:1em}

.acc-cols{display:grid;grid-template-columns:repeat(2,1fr);gap:0 40px}

.acc-cols .ticks{margin-bottom:0}

.acc-cols .ticks li{padding-bottom:11px}

.acc-actions{margin-top:20px}

.acc-top{display:flex;align-items:flex-start;gap:16px}

.acc-ico{flex:0 0 auto;width:34px;height:34px;color:var(--brand);border-radius:9px;transition:transform .3s,box-shadow .3s}

.acc-ico svg{width:100%;height:100%;stroke:currentColor;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}

.acc-lead{font-size:1.03rem;color:var(--ink);margin-bottom:1.15em}

.jump-label{font-family:var(--serif);font-size:1.1rem;color:var(--ink);margin:40px 0 16px}

.path{display:flex;flex-wrap:wrap;align-items:center;gap:9px;font-size:.92rem;font-weight:500;color:var(--brand-deep);background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:1.3em}

.path span{color:var(--accent)}

.quotes{list-style:none;margin:0 0 1.35em;padding:0;display:grid;gap:9px}

.quotes li{background:#fff;border-left:3px solid var(--accent);border-radius:0 8px 8px 0;padding:11px 15px;font-size:.97rem;color:var(--ink)}

.portal-card{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:26px 24px}

.portal-card h3{font-size:1.12rem;margin-bottom:.4em}

.portal-card p{font-size:.96rem;color:var(--muted);margin-bottom:1.1em}

/* quick jump nav */
.jump{display:flex;flex-wrap:wrap;gap:10px;list-style:none;margin:0;padding:0}

.center .jump{justify-content:center}

.jump a{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:999px;padding:10px 19px;font-size:.9rem;font-weight:500;color:var(--ink);text-decoration:none;transition:border-color .22s,color .22s,transform .3s,box-shadow .35s}

.jump a:hover{border-color:var(--brand-lift);color:var(--brand)}

/* three-door chooser */
.door{display:flex;flex-direction:column;text-align:left}

.door h3{font-size:1.24rem;margin-bottom:.5em}

.door .ticks{margin-bottom:1.2em}

.door .ticks li{font-size:.96rem;padding-bottom:9px}

.door .arrow-link{margin-top:auto;align-self:flex-start}

.dots{margin:8px 0 0;font-size:.93rem;color:var(--muted)}

.card-ico.hv-icon{border-radius:10px}

.door .card-ico{margin-left:0;margin-right:0}

.hero-note{margin:20px auto 0;font-size:1.02rem;color:#cfe0f0;max-width:66ch;text-shadow:0 1px 14px rgba(8,24,40,.6)}

.geo-line{display:flex;flex-wrap:wrap;gap:10px 16px;list-style:none;margin:0;padding:0;font-size:1rem;color:var(--ink)}

.geo-line li+li::before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--accent);margin-right:16px;vertical-align:middle}

p,li,dd,dt,h1,h2,h3,h4,a{overflow-wrap:break-word}

@media (max-width:1040px){
  .acc-cols{grid-template-columns:1fr}
  .g4,.city-list{grid-template-columns:repeat(2,1fr)}
  .foot-grid{grid-template-columns:1fr 1fr;gap:40px}
  .split{gap:38px}
}

@media (max-width:900px){
  .acc-item>summary{padding:21px 54px 21px 20px}
  .acc-item>summary::after{right:20px}
  .acc-body{padding:20px 20px 24px}
  .nav-links,.nav-inner>.nav-cta{display:none}
  .nav-toggle{display:block}
  .g2,.g3,.g4,.svc-list,.form-grid{grid-template-columns:1fr}
  .split{grid-template-columns:1fr}
  .split--flip .split-media{order:0}
  .section{padding:68px 0}
  .hero{min-height:auto;padding:94px 0 82px}
  .utility .container{justify-content:center}
  .portrait{max-width:none}
}

@media (max-width:560px){
  body{font-size:16px}
  .map-embed{height:250px}
  .arrow-link{min-height:44px}
  .nav-toggle{padding:12px 14px}
  .slot{padding:32px 20px}
  .foot-grid,.city-list{grid-template-columns:1fr}
  .card{padding:26px 22px}
  .btn{width:100%}
  .hero-actions,.band-actions{flex-direction:column}
}

/* ══════════════════════════════════════════════════════════════
   CORE 30 ADDITIONS — architecture nav + service/hub page parts
   ══════════════════════════════════════════════════════════════ */

/* condensing nav (state applied with hysteresis by animations.js) */
.nav.scrolled .nav-inner{min-height:66px}

.nav.scrolled .nav-logo img{width:184px;transition:width .25s ease}

.nav-logo img{transition:width .25s ease}

/* mega dropdown — exposes the whole architecture */
.nav{position:sticky}

.nav-links>li{position:static}

.has-mega>a{display:inline-flex;align-items:center;gap:6px}

/* HOUSE STANDARD — dropdown hover bridge. The panel is positioned against the
   sticky nav, so its top edge sits below the bottom of the trigger's own box.
   That strip is dead space: the pointer leaves .has-mega before it reaches
   .mega and the panel closes under the cursor. Two pieces, always the same:
     (1) an invisible bridge on the PANEL (.mega::before) spanning the strip
         upward to the label. It must live on the panel, never on the label:
         the label's own ::after is the hv-underline hover underline, and
         reusing it paints a visible block under the label.
     (2) asymmetric timing on the panel — instant to open, delayed to close —
         so a momentary exit at the edges cannot kill it.
   No JS hover timer, no hover-intent library, no caret. */
.mega::before{content:"";position:absolute;left:0;right:0;top:-40px;height:40px;display:block}

.mega{position:absolute;left:0;right:0;top:100%;background:#fff;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line);box-shadow:0 22px 44px -26px rgba(15,43,71,.42);opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .2s ease .28s,transform .2s ease .28s,visibility 0s linear .48s;z-index:130;max-height:calc(100vh - 130px);overflow-y:auto}

.has-mega:hover>.mega,.has-mega:focus-within>.mega{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .18s ease 0s,transform .18s ease 0s,visibility 0s linear 0s}

.mega-inner{display:grid;grid-template-columns:repeat(3,1fr);gap:30px 38px;padding:34px 24px 38px}

/* Industries panel — narrow, page-centred, tight stack (owner ruling: the
   industries must read as one short list, not a row spread across the header) */
.mega--slim{left:50%;right:auto;width:min(380px,calc(100vw - 40px));transform:translate(-50%,-8px);border-top:0;border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft);border-radius:0 0 12px 12px}

.has-mega:hover>.mega--slim,.has-mega:focus-within>.mega--slim{transform:translate(-50%,0)}

.mega--slim::before{left:-56px;right:-56px}

.mega--slim .mega-inner{display:block;padding:12px 18px 16px}

.mega-stack{list-style:none;margin:0;padding:0}

.mega-stack li{margin:0}

.mega-stack li+li{border-top:1px solid var(--line-soft)}

.mega-stack li a{display:block;font-family:var(--serif);font-size:.96rem;font-weight:600;line-height:1.3;color:var(--ink);text-decoration:none;padding:9px 4px}

.mega-stack li a:hover{color:var(--brand)}

.mega--slim .mega-note{margin:10px 0 0;padding-top:12px;font-size:.82rem;line-height:1.45}

.mega-col{min-width:0}

.mega-head{display:block;font-family:var(--serif);font-size:1.02rem;font-weight:600;color:var(--ink);text-decoration:none;padding-bottom:10px;margin-bottom:12px;border-bottom:2px solid var(--brand-wash)}

.mega-head:hover{color:var(--brand);border-bottom-color:var(--accent)}

.mega-col ul{list-style:none;margin:0;padding:0}

.mega-col li{margin:0 0 7px}

.mega-col li a{display:block;font-size:.87rem;line-height:1.4;color:var(--body);text-decoration:none;padding:3px 0}

.mega-col li a:hover{color:var(--brand);text-decoration:underline;text-underline-offset:3px}

.mega-note{grid-column:1/-1;margin:6px 0 0;padding-top:16px;border-top:1px solid var(--line-soft);font-size:.88rem;color:var(--muted)}

.mega-note a{font-weight:600;text-decoration:none}

.mega-note a:hover{text-decoration:underline}

@media (max-width:1040px){.mega-inner{grid-template-columns:repeat(2,1fr)}}

@media (max-width:900px){.mega{display:none}}

/* mobile accordion — same links as the desktop dropdown */
.m-acc{border-bottom:1px solid var(--line-soft)}

.m-acc>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:13px 4px;font-weight:500;color:var(--ink)}

.m-acc>summary::-webkit-details-marker{display:none}

.m-acc>summary::after{content:"";width:8px;height:8px;border-right:1.8px solid var(--brand);border-bottom:1.8px solid var(--brand);transform:rotate(45deg);transition:transform .22s}

.m-acc[open]>summary::after{transform:rotate(225deg)}

.m-acc-body{padding:4px 0 14px}

.m-acc-body .m-head{display:block;font-family:var(--serif);font-size:.95rem;font-weight:600;color:var(--brand-deep);padding:12px 0 6px;text-decoration:none;border-bottom:0}

.m-acc-body ul{margin:0 0 8px;padding:0 0 0 12px}

.m-acc-body li a{display:block;padding:8px 4px;font-size:.9rem;font-weight:400;color:var(--body);border-bottom:1px solid var(--line-soft);text-decoration:none}

.mobile-menu .m-acc-body li{margin:0}

/* service + hub page parts */
.kicker-free{margin-top:0}

.prose h2{margin-top:0}

.prose h3{font-size:1.08rem;margin-top:1.8em}

.prose>p:last-child{margin-bottom:0}

.two-col{display:grid;grid-template-columns:1.25fr .75fr;gap:52px;align-items:start}

.side{position:sticky;top:120px}

.side-card{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:26px 24px;margin-bottom:20px}

.side-card h3{font-size:1.06rem;margin-bottom:.5em}

.side-card p{font-size:.94rem;color:var(--muted)}

.side-card ul{list-style:none;margin:0;padding:0}

.side-card li{margin-bottom:9px;font-size:.93rem}

.side-card li a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line)}

.side-card li a:hover{color:var(--brand);border-color:var(--brand)}

.side-card .btn{width:100%;margin-top:6px}

.fact-row{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:0 0 34px;padding:0;list-style:none}

.fact-row li{border-left:3px solid var(--accent);padding:4px 0 4px 16px}

.fact-row strong{display:block;font-family:var(--serif);font-size:1.02rem;color:var(--ink);margin-bottom:3px}

.fact-row span{font-size:.92rem;color:var(--muted)}

.rel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}

.rel-grid .card h3{font-size:1.04rem}

.hub-list{display:grid;grid-template-columns:repeat(2,1fr);gap:0 44px}

.hub-item{border-top:1px solid var(--line-soft);padding:26px 0}

.hub-item:first-child,.hub-list>.hub-item:nth-child(2){border-top:0}

.hub-item h2{font-size:1.22rem;margin-bottom:.45em}

.hub-item p{font-size:.96rem;color:var(--muted);margin-bottom:.9em}

@media (max-width:1040px){.two-col{grid-template-columns:1fr;gap:44px}.side{position:static}.fact-row{grid-template-columns:1fr}.rel-grid{grid-template-columns:1fr}}

@media (max-width:900px){.hub-list{grid-template-columns:1fr}.hub-list>.hub-item:nth-child(2){border-top:1px solid var(--line-soft)}}

/* mobile Services menu — one collapsible group per category (attempt 5) */
.m-acc-body .m-all{display:block;padding:12px 4px;font-weight:600;color:var(--brand-deep);border-bottom:1px solid var(--line-soft);text-decoration:none}

.m-sub{border-bottom:1px solid var(--line-soft)}

.m-sub>summary{padding:13px 4px 13px 12px;font-family:var(--serif);font-size:.98rem;font-weight:600;color:var(--brand-deep)}

.m-sub>summary::after{width:7px;height:7px}

.m-sub[open]>summary{background:var(--surface)}

.m-sub-body{padding:2px 0 10px 12px}

.m-sub-body .m-hub{display:block;padding:11px 4px 11px 12px;font-size:.9rem;font-weight:600;color:var(--brand);border-bottom:1px solid var(--line-soft);text-decoration:none}

.m-acc-body .m-sub-body ul{margin:0;padding:0 0 0 12px}

.m-acc-body .m-sub-body li a{padding:11px 4px}

.m-acc-body .m-sub-link{display:block;padding:13px 4px 13px 12px;font-family:var(--serif);font-size:.98rem;font-weight:600;color:var(--brand-deep);border-bottom:0;text-decoration:none}

/* footer: in-person vs virtual reach (attempt 5) */
.site-footer .foot-reach{margin:18px 0 0;padding:0;display:grid;gap:8px;max-width:270px}

.site-footer .foot-reach li{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:0;padding:9px 13px;border:1px solid rgba(255,255,255,.16);border-radius:8px;font-size:.88rem}

.foot-reach strong{color:#fff;font-weight:600}

.foot-reach span{color:#c9d8e8}

.mobile-menu.open{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}

/* ══════════════════════════════════════════════════════════════
   BRAND RECOLOR — Specialized Accounting LLC
   Sapphire & teal, matched to the firm's own logo (logo blue
   #2860a0). These variables drive the whole motion layer — video
   scrim, hero particles, orbs, scrolled nav, hover kit — so the
   engine below stays brand-agnostic and portable.
   ══════════════════════════════════════════════════════════════ */
:root{
  --motion-1: 143,179,217;      /* light sapphire — hero particles, orbs 1 & 3 */
  --motion-2: 38,169,164;       /* lifted teal — secondary particles, orb 2    */
  --motion-accent:   #1b4a7a;   /* sapphire — underlines, bars                 */
  --motion-accent-2: #26a9a4;   /* lifted teal                                 */
  --motion-ink:      #0f2b47;   /* deepest brand navy                          */
  --motion-dark-rgb: 15,43,71;  /* drives the hero video scrim                 */
  --motion-nav-bg: rgba(255,255,255,.98);
}

/* ════════════════════════════════════════════════════════════
   SITE MOTION SYSTEM — motion.css  (brand-agnostic)
   ------------------------------------------------------------
   Load it on every page (order-independent — works before OR after
   the site's own stylesheet). To match the brand, set any of these
   on :root in the SITE'S css; each has a sensible fallback so you
   only override what you want:

     :root{
       --motion-1: 232,168,32;            primary accent  (r,g,b)
       --motion-2: 130,175,225;           secondary accent (r,g,b)
       --motion-accent: #e8a820;          solid accent: bars/progress
       --motion-accent-2: #f5c842;        lighter accent
       --motion-ink: #0f2540;             deep brand color (dark accents)
       --motion-dark-rgb: 13,27,42;       dark brand color "r,g,b" — drives the video scrim
       --motion-nav-bg: rgba(255,255,255,.98);  scrolled-nav background
     }

   The JS (animations.js) reads --motion-1 / --motion-2 for the hero
   canvas. Honors prefers-reduced-motion automatically — the hero
   background video is paused + reset to its poster by animations.js
   (CSS alone cannot stop <video> playback).
   ════════════════════════════════════════════════════════════ */
:root { --motion-ease: cubic-bezier(.22,1,.36,1); }

@media (prefers-reduced-motion: reduce) {
  .rv,.rv-l,.rv-r,.rv-scale,.rv-stagger>* { opacity:1 !important; transform:none !important; }
  .orb,.mq-track { animation:none !important; }
  #hero-canvas,.banner-canvas { display:none !important; }
  /* hover kit: keep the color/glow feedback, suppress the movement */
  .hv-btn:hover,.hv-card:hover,
  .hv-card:hover .hv-icon,.hv-icon:hover,
  .hv-arrow:hover::after { transform:none !important; }
  .hv-btn::before { display:none !important; }
  /* the hero background video is paused + reset to its poster by
     animations.js — CSS cannot stop <video> playback */
}

/* page-load / page-leave fade */
body { animation: pgIn .5s ease both; }

body.leaving { opacity:0; transition:opacity .28s ease; }

@keyframes pgIn { from{opacity:0;} to{opacity:1;} }

/* scroll progress bar — RETIRED 2026-09-06 (owner ruling: reads as an AI template).
   No #sprog element, no rule. */

/* ── live video-background hero (the homepage standard, 2026-06) ──
   <video class="video-bg" autoplay muted loop playsinline
          aria-hidden="true" poster="…" src="…"></video>
   + a SEPARATE sibling <div class="video-scrim"></div> layered above.
   Set --motion-dark-rgb to the client's dark brand color ("r,g,b").
   The scrim is a LAYERED gradient: directional dark wash + bottom-up
   fade. NB: `at`-position syntax is radial-only — never use it inside
   linear-gradient() (the background silently drops → white section). */
.video-bg { position:absolute; inset:0; z-index:0; width:100%; height:100%;
  object-fit:cover; pointer-events:none; filter:brightness(.5); }

.video-scrim { position:absolute; inset:0; z-index:1; pointer-events:none;
  background:
    linear-gradient(105deg, rgba(var(--motion-dark-rgb,13,27,42),.86) 0%, rgba(var(--motion-dark-rgb,13,27,42),.55) 48%, rgba(var(--motion-dark-rgb,13,27,42),.28) 100%),
    linear-gradient(0deg, rgba(var(--motion-dark-rgb,13,27,42),.92) 0%, rgba(var(--motion-dark-rgb,13,27,42),0) 45%);
}

/* scroll-aware nav condense — solid background only; never
   backdrop-filter:blur() on a sticky/fixed nav (2026-06 perf rule).
   v1.2.0: .scrolled is applied with hysteresis (on past 96px, off under 24px)
   in animations.js — a site's .scrolled rule may shrink the nav, but the
   toggle can no longer flicker at the threshold (the 2026-09-06 bounce fix). */
[data-motion-nav] { transition: padding .3s var(--motion-ease), background .3s, box-shadow .3s; }

[data-motion-nav].scrolled {
  background: var(--motion-nav-bg,rgba(255,255,255,.98));
  box-shadow: 0 2px 0 rgba(15,37,64,.04), 0 10px 28px rgba(15,37,64,.12);
}

/* floating ambient orbs — live inside dark hero sections */
.orb-field { position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; }

.orb { position:absolute; border-radius:50%; filter:blur(44px); will-change:transform,opacity; }

.orb-1 { width:420px; height:420px; top:-90px; left:-70px;
  background:radial-gradient(circle, rgba(var(--motion-1,232,168,32),.42), transparent 70%);
  animation:wtOrb1 9s ease-in-out infinite alternate; }

.orb-2 { width:360px; height:360px; bottom:-100px; right:-50px;
  background:radial-gradient(circle, rgba(var(--motion-2,130,175,225),.32), transparent 70%);
  animation:wtOrb2 12s ease-in-out infinite alternate; }

.orb-3 { width:300px; height:300px; top:45%; left:60%;
  background:radial-gradient(circle, rgba(var(--motion-1,232,168,32),.22), transparent 70%);
  animation:wtOrb3 7s ease-in-out infinite alternate; }

@keyframes wtOrb1 { 0%{opacity:.40;transform:scale(1);} 100%{opacity:.75;transform:scale(1.12) translate(2%,2%);} }

@keyframes wtOrb2 { 0%{opacity:.30;transform:scale(1);} 100%{opacity:.62;transform:scale(1.1) translate(-2%,-3%);} }

@keyframes wtOrb3 { 0%{opacity:.16;transform:translate(-50%,-50%) scale(1);} 100%{opacity:.38;transform:translate(-50%,-50%) scale(1.4);} }

/* hero / banner canvases */
#hero-canvas { position:absolute; inset:0; z-index:1; width:100%; height:100%; pointer-events:none; }

.banner-canvas { position:absolute; inset:0; z-index:1; width:100%; height:100%; pointer-events:none; }

/* the section that holds a canvas/orbs must be position:relative and its
   content lifted above — add [data-motion-stage] to that section */
[data-motion-stage] { position:relative; }

[data-motion-stage] > .container,
[data-motion-stage] > div:not(.orb-field):not(.banner-canvas):not(.video-scrim) { position:relative; z-index:2; }

/* scroll reveal */
.rv { opacity:0; transform:translateY(22px); transition:opacity .9s var(--motion-ease),transform .9s var(--motion-ease); }

.rv.on { opacity:1; transform:none; }

.rv-l { opacity:0; transform:translateX(-26px); transition:opacity .9s var(--motion-ease),transform .9s var(--motion-ease); }

.rv-l.on { opacity:1; transform:none; }

.rv-r { opacity:0; transform:translateX(26px); transition:opacity .9s var(--motion-ease),transform .9s var(--motion-ease); }

.rv-r.on { opacity:1; transform:none; }

.rv-scale { opacity:0; transform:scale(.94); transition:opacity .9s var(--motion-ease),transform .9s var(--motion-ease); }

.rv-scale.on { opacity:1; transform:none; }

.rv-stagger > * { opacity:0; transform:translateY(22px); transition:opacity .8s var(--motion-ease),transform .8s var(--motion-ease); }

.rv-stagger.on > * { opacity:1; transform:none; }

.rv-stagger.on > *:nth-child(2){transition-delay:.08s;}

.rv-stagger.on > *:nth-child(3){transition-delay:.16s;}

.rv-stagger.on > *:nth-child(4){transition-delay:.24s;}

.rv-stagger.on > *:nth-child(5){transition-delay:.32s;}

.rv-stagger.on > *:nth-child(6){transition-delay:.40s;}

/* marquee trust ticker — CLIENT-REQUEST ONLY (removed from the
   standard 2026-06-22). Never wire a marquee by default; these rules
   stay dormant unless the client explicitly asks for one. */
.marquee { overflow:hidden; padding:14px 0; position:relative; }

.marquee--accent { background:linear-gradient(90deg, var(--motion-accent,#e8a820), var(--motion-accent-2,#f5c842)); }

.marquee--ink { background:var(--motion-ink,#0f2540); }

.mq-track { display:flex; white-space:nowrap; animation:mqs 30s linear infinite; }

.marquee:hover .mq-track { animation-play-state:paused; }

.mq-item { display:inline-flex; align-items:center; gap:22px; padding:0 38px;
  font-size:.72rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; }

.marquee--accent .mq-item { color:var(--motion-ink,#0f2540); }

.marquee--ink .mq-item { color:#fff; }

.mq-item span.dot { width:6px; height:6px; border-radius:50%; background:currentColor; opacity:.55; }

@keyframes mqs { from{transform:translateX(0);} to{transform:translateX(-50%);} }

/* ════════════════════════════════════════════════════════════
   HOVER-INTERACTION KIT (2026-08-25 — standard)
   ------------------------------------------------------------
   Harvested from the Wolf & Tiger reference build: the "sections
   respond to you" feel. CSS-only, no JS, additive opt-in hooks —
   never restyles a component's base look. Recolors entirely from
   the --motion-* brand variables (jewel tones under palette law).
   Only transform / opacity / box-shadow / color / border-color
   animate — never layout properties.
   Default accent is --motion-1; add .hv-2 to any hook to use
   --motion-2 instead.
   ════════════════════════════════════════════════════════════ */

/* 1 ── buttons: sheen sweep + lift + brand glow.
   <a class="btn hv-btn">Book a Consultation</a> */
.hv-btn { position:relative; overflow:hidden; isolation:isolate;
  transition:transform .3s var(--motion-ease), box-shadow .35s var(--motion-ease); }

.hv-btn::before { content:''; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(105deg, transparent 38%, rgba(255,255,255,.18) 50%, transparent 62%);
  transform:translateX(-101%); transition:transform .6s var(--motion-ease); }

.hv-btn:hover::before { transform:translateX(101%); }

.hv-btn:hover { transform:translateY(-3px);
  box-shadow:0 14px 36px rgba(var(--motion-1,232,168,32),.30),
             0 0 40px rgba(var(--motion-1,232,168,32),.16); }

.hv-btn.hv-2:hover { box-shadow:0 14px 36px rgba(var(--motion-2,130,175,225),.30),
             0 0 40px rgba(var(--motion-2,130,175,225),.16); }

/* 2 ── links / nav items: underline grows in with a faint glow.
   <a class="nav-link hv-underline">Services</a>  (needs inline/inline-block) */
.hv-underline { position:relative; }

.hv-underline::after { content:''; position:absolute; left:0; bottom:-2px;
  width:100%; height:1.5px; background:var(--motion-accent,#e8a820);
  box-shadow:0 0 10px rgba(var(--motion-1,232,168,32),.45);
  transform:scaleX(0); transform-origin:left center;
  transition:transform .35s var(--motion-ease); }

.hv-underline:hover::after, .hv-underline.on::after { transform:scaleX(1); }

/* 3 ── cards / tiles: lift + brand-tinted layered shadow + border tint.
   <div class="card hv-card"> … </div> */
.hv-card { transition:transform .3s var(--motion-ease), box-shadow .35s var(--motion-ease),
  border-color .3s, background .3s; }

.hv-card:hover { transform:translateY(-4px);
  border-color:rgba(var(--motion-1,232,168,32),.28);
  box-shadow:0 20px 52px rgba(var(--motion-1,232,168,32),.14),
             0 4px 16px rgba(var(--motion-1,232,168,32),.08),
             0 0 40px rgba(var(--motion-1,232,168,32),.12); }

.hv-card.hv-2:hover { border-color:rgba(var(--motion-2,130,175,225),.28);
  box-shadow:0 20px 52px rgba(var(--motion-2,130,175,225),.14),
             0 4px 16px rgba(var(--motion-2,130,175,225),.08),
             0 0 40px rgba(var(--motion-2,130,175,225),.12); }

/* 4 ── accent bar: a 3px brand bar grows across the card's top edge.
   Add .hv-bar to the SAME element as .hv-card (needs position + overflow). */
.hv-bar { position:relative; overflow:hidden; }

.hv-bar::before { content:''; position:absolute; top:0; left:0; right:0; height:3px; z-index:1;
  background:var(--motion-accent,#e8a820);
  transform:scaleX(0); transform-origin:left center;
  transition:transform .4s var(--motion-ease); }

.hv-bar.hv-2::before { background:var(--motion-accent-2,#f5c842); }

.hv-bar:hover::before { transform:scaleX(1); }

/* 5 ── ghost numeral recolor: a card's oversized numeral shifts from
   neutral to a translucent brand tint when its card is hovered.
   <div class="hv-card hv-bar"><span class="hv-num">01</span> … </div>
   (The numeral's base size/color belong to the site's own CSS —
   this hook only adds the hover recolor.) */
.hv-num { transition:color .3s; }

.hv-card:hover .hv-num { color:rgba(var(--motion-1,232,168,32),.16); }

.hv-card.hv-2:hover .hv-num { color:rgba(var(--motion-2,130,175,225),.16); }

/* 6 ── icon chips: gentle scale + soft glow when their card (or the
   icon itself) is hovered.  <span class="wi-icon hv-icon">✓</span> */
.hv-icon { transition:transform .3s var(--motion-ease), box-shadow .3s; }

.hv-card:hover .hv-icon, .hv-icon:hover { transform:scale(1.08);
  box-shadow:0 0 16px rgba(var(--motion-1,232,168,32),.32); }

.hv-card.hv-2:hover .hv-icon { box-shadow:0 0 16px rgba(var(--motion-2,130,175,225),.32); }

/* 7 ── arrow nudge on text CTAs.  <a class="hv-arrow">Our services</a> */
.hv-arrow::after { content:'→'; display:inline-block; margin-left:8px;
  transition:transform .25s var(--motion-ease); }

.hv-arrow:hover::after { transform:translateX(4px); }

/* ── ThemePort blog/utility templates (namespaced, no collision with site CSS) ── */
.tp-container { max-width: 1160px; margin: 0 auto; padding: 0 28px; width: 100%; }
.tp-page-hero { background: #0f2b47; padding: 88px 0 56px; }
.tp-page-hero h1 { color: #fff; font-family: 'Source Serif 4', serif; font-size: clamp(2rem, 4vw, 3rem); line-height: 1.15; margin: 0; }
.tp-page-hero .tp-meta { color: rgba(255,255,255,.75); margin: 12px 0 0; }
.tp-section { padding: 64px 0; }
.tp-content { max-width: 820px; }
.tp-content p, .tp-content ul, .tp-content ol { margin: 0 0 1.2em; }
.tp-content h2, .tp-content h3 { font-family: 'Source Serif 4', serif; color: #0f2b47; margin: 1.6em 0 .6em; line-height: 1.25; }
.tp-content img, .tp-featured { max-width: 100%; height: auto; border-radius: 8px; margin: 0 0 1.4em; }
.tp-policy { max-width: 900px; width: 100%; }
.tp-policy h2, .tp-policy h3 { font-family: 'Source Serif 4', serif; color: #0f2b47; margin: 1.6em 0 .6em; }
.tp-policy p, .tp-policy ul { margin: 0 0 1.1em; }
.tp-post-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 32px; }
.tp-post-card { background: #fff; border: 1px solid rgba(0,0,0,.08); border-radius: 10px; padding: 24px; box-shadow: 0 6px 24px rgba(0,0,0,.06); }
.tp-post-card img { width: 100%; height: 200px; object-fit: cover; border-radius: 6px; margin-bottom: 16px; }
.tp-post-card h2 { font-family: 'Source Serif 4', serif; font-size: 1.3rem; line-height: 1.3; margin: 0 0 8px; }
.tp-post-card h2 a { color: #0f2b47; text-decoration: none; }
.tp-meta { color: rgba(0,0,0,.5); font-size: .85rem; margin: 0 0 10px; }
.tp-readmore { color: #0e7e7d; font-weight: 700; text-decoration: none; }
.tp-pagination { margin-top: 40px; text-align: center; }
.tp-pagination .page-numbers { display: inline-block; padding: 8px 14px; margin: 0 3px; border: 1px solid rgba(0,0,0,.15); border-radius: 6px; color: #0f2b47; text-decoration: none; }
.tp-pagination .page-numbers.current { background: #0f2b47; color: #fff; }


/* ── ThemePort v2.8.0 — count-adaptive team tiers ────────────────────────── */
.tp-team{display:grid;justify-content:center;align-items:start;gap:2rem;margin-left:auto;margin-right:auto}
.tp-team__card{text-align:center}
.tp-team__photo img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:12px;display:block}
.tp-team__body h3{margin:.85rem 0 .15rem}
.tp-team__role{display:block;opacity:.75;font-size:.95em}
.tp-team__bio{margin-top:.65rem;text-align:left}

/* 1 — FOUNDER FEATURE: large portrait beside the full bio. Reads as a complete
   solo-firm About section, never as a team page with one lonely card. */
.tp-team--solo{grid-template-columns:minmax(220px,320px) minmax(0,1fr);gap:2.5rem;max-width:900px;text-align:left}
.tp-team--solo .tp-team__card{display:contents}
.tp-team--solo .tp-team__photo{grid-column:1}
.tp-team--solo .tp-team__body{grid-column:2;text-align:left}
.tp-team--solo .tp-team__body h3{margin-top:0;font-size:1.6em}
@media (max-width:720px){
  .tp-team--solo{grid-template-columns:minmax(0,1fr);max-width:420px}
  .tp-team--solo .tp-team__photo,.tp-team--solo .tp-team__body{grid-column:1}
}

/* 2 — balanced centered pair, generous cards side by side */
.tp-team--pair{grid-template-columns:repeat(2,minmax(0,300px));gap:2.5rem;max-width:700px}

/* 3–4 — one centered row of equal cards */
.tp-team--row{grid-template-columns:repeat(auto-fit,minmax(0,240px));max-width:1040px}

/* 5+ — full multi-row grid; photos smallest, density highest */
.tp-team--grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));max-width:1160px;gap:1.75rem}
.tp-team--grid .tp-team__bio{font-size:.94em}

@media (max-width:640px){
  .tp-team--pair,.tp-team--row,.tp-team--grid{grid-template-columns:minmax(0,1fr);max-width:380px}
}
