:root{--brand-red: #ee3124;--brand-red-dk: #c22417;--brand-red-ink: #8f1a11;--brand-blue: #133072;--brand-blue-dk: #0e2350;--brand-black: #231f20;--paper: #f7f5f1;--paper-2: #efece6;--white: #ffffff;--section-dark: #0e2350;--section-dark-2: #0a1a3c;--section-mid: #133072;--ink: #16181c;--ink-2: #33383f;--muted: #5a6472;--muted-rev: rgba(255, 255, 255, .72);--muted-rev-2: rgba(255, 255, 255, .55);--border: #d9d5ce;--border-str: #b9b3a9;--border-rev: rgba(255, 255, 255, .22);--rule: 1px;--rule-hd: 3px;--w-wide: 1425px;--w-main: 1240px;--w-narrow: 1068px;--gutter: 24px;--gutter-sm: 20px;--pad-sm: 34px;--pad: 50px;--pad-lg: 100px;--font-display: "Saira Condensed", "Oswald", "Arial Narrow", sans-serif;--font-body: "Source Sans 3", "Segoe UI", system-ui, sans-serif;--fs-hero-locator: 28px;--fs-hero: 60px;--fs-h2: 40px;--fs-h2-center: 52px;--fs-h3: 28px;--fs-h4: 21px;--fs-body: 17px;--fs-body-sm: 15.5px;--fs-micro: 13px;--lh-tight: 1;--lh-head: 1.12;--lh-body: 1.6;--track-label: .14em;--track-btn: .055em;--btn-pad-y: 13px;--btn-pad-x: 26px;--radius: 0;--radius-plaque: 4px;--shadow-hard: 4px 4px 0 rgba(14, 35, 80, .28);--shadow-hard-rev: 4px 4px 0 rgba(0, 0, 0, .35);--t: .14s ease-out}@media(max-width:900px){:root{--fs-hero: 42px;--fs-hero-locator: 21px;--fs-h2: 30px;--fs-h2-center: 34px;--fs-h3: 23px;--fs-body: 16.5px;--pad: 40px;--pad-lg: 60px;--gutter: var(--gutter-sm)}}@media(max-width:560px){:root{--fs-hero: 36px;--fs-h2: 27px}}@font-face{font-family:Saira Condensed;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/saira-condensed-500.woff2) format("woff2")}@font-face{font-family:Saira Condensed;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/saira-condensed-600.woff2) format("woff2")}@font-face{font-family:Saira Condensed;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/saira-condensed-700.woff2) format("woff2")}@font-face{font-family:Saira Condensed;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/fonts/saira-condensed-800.woff2) format("woff2")}@font-face{font-family:"Source Sans 3";font-style:italic;font-weight:400;font-display:swap;src:url(/assets/fonts/source-sans-3-400-italic.woff2) format("woff2")}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/source-sans-3-400.woff2) format("woff2")}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/source-sans-3-600.woff2) format("woff2")}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/source-sans-3-700.woff2) format("woff2")}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;overflow-x:hidden}img,picture,video,svg{display:block;max-width:100%}img,video{height:auto}input,button,textarea,select{font:inherit;color:inherit}a{color:inherit}:focus-visible{outline:3px solid var(--brand-red);outline-offset:2px}::selection{background:var(--brand-red);color:#fff}.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--brand-red);color:#fff;padding:12px 20px;font-family:var(--font-display);text-transform:uppercase;letter-spacing:var(--track-btn)}.skip-link:focus{left:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}h1,h2,h3,h4,h5{font-family:var(--font-display);font-weight:700;line-height:var(--lh-head);text-wrap:balance}p{text-wrap:pretty}.locator{font-family:var(--font-display);font-size:var(--fs-hero-locator);font-weight:500;line-height:1.15;letter-spacing:.01em;color:var(--brand-red)}.locator--rev{color:#fff;opacity:.9}.hero-head{font-size:var(--fs-hero);font-weight:800;line-height:var(--lh-tight);text-transform:uppercase;letter-spacing:-.005em}.h2{font-size:var(--fs-h2);font-weight:800;line-height:1.14;text-transform:uppercase}.h2--center{font-size:var(--fs-h2-center);text-align:center;text-transform:none}.h3{font-size:var(--fs-h3);font-weight:600;line-height:1.2;letter-spacing:.02em}.lede{font-size:calc(var(--fs-body) + 1.5px);color:var(--ink-2)}.prose p+p{margin-top:1.05em}.prose a{color:var(--brand-red-ink);text-underline-offset:3px}.prose--rev{color:var(--muted-rev)}.prose--rev a{color:#fff}.measure{max-width:66ch}.measure-sm{max-width:42ch}.rule{border:0;height:var(--rule-hd);background:var(--brand-red);width:64px;position:relative;margin:18px 0 22px}.rule:after{content:"";position:absolute;left:0;top:calc(var(--rule-hd) + 3px);width:100%;height:var(--rule);background:var(--border-str)}.rule--center{margin-inline:auto}.rule--rev:after{background:var(--border-rev)}.plaque{display:inline-flex;align-items:center;gap:9px;border:2px solid var(--border-str);padding:9px 14px;font-family:var(--font-display);font-size:var(--fs-micro);font-weight:600;text-transform:uppercase;letter-spacing:var(--track-label);line-height:1;color:var(--ink);background:transparent}.plaque--rev{border-color:var(--border-rev);color:#fff}.plaque--red{border-color:var(--brand-red);color:var(--brand-red-ink)}.plaque b{font-weight:800}.idx{font-family:var(--font-display);font-size:var(--fs-micro);font-weight:700;letter-spacing:var(--track-label);color:var(--brand-red);display:block;margin-bottom:6px}.idx--rev{color:#fff9}.seam{--seam-h: 64px;height:var(--seam-h);width:100%;display:block;flex:none}.seam--down-dark{background:linear-gradient(to bottom right,var(--section-dark) 49.6%,transparent 50%)}.seam--up-dark{background:linear-gradient(to top right,var(--section-dark) 49.6%,transparent 50%)}.seam--down-paper{background:linear-gradient(to bottom right,var(--paper) 49.6%,transparent 50%)}.seam--up-paper{background:linear-gradient(to top right,var(--paper) 49.6%,transparent 50%)}@media(max-width:700px){.seam{--seam-h: 32px}}.wrap{width:100%;max-width:var(--w-main);margin-inline:auto;padding-inline:var(--gutter)}.wrap-wide{width:100%;max-width:var(--w-wide);margin-inline:auto;padding-inline:var(--gutter)}.wrap-narrow{width:100%;max-width:var(--w-narrow);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--pad)}.section--lg{padding-block:var(--pad-lg)}.section--sm{padding-block:var(--pad-sm)}.section--flush-top{padding-top:0}.section--flush-bot{padding-bottom:0}.bg-paper{background:var(--paper)}.bg-paper2{background:var(--paper-2)}.bg-white{background:var(--white)}.bg-dark{background:var(--section-dark);color:#fff}.bg-mid{background:var(--section-mid);color:#fff}.bg-dark h1,.bg-dark h2,.bg-dark h3,.bg-mid h1,.bg-mid h2,.bg-mid h3{color:#fff}.band{position:relative;isolation:isolate;color:#fff;overflow:hidden}.band__media{position:absolute;inset:0;z-index:-2}.band__media img{width:100%;height:100%;object-fit:cover}.band__scrim{position:absolute;inset:0;z-index:-1}.band__scrim--dark{background:linear-gradient(100deg,#0a1a3cf5,#0a1a3ced 46%,#0a1a3c9e)}.band__scrim--blue{background:linear-gradient(100deg,#133072f5,#133072eb 46%,#13307294)}.band__inner{max-width:54%;padding-block:var(--pad-lg)}@media(max-width:900px){.band__inner{max-width:100%}.band__scrim--dark{background:#0a1a3ced}.band__scrim--blue{background:#133072ed}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:var(--btn-pad-y) var(--btn-pad-x);border:2px solid transparent;border-radius:var(--radius);font-family:var(--font-display);font-size:17px;font-weight:700;line-height:1.1;text-transform:uppercase;letter-spacing:var(--track-btn);text-decoration:none;cursor:pointer;transition:background var(--t),color var(--t),box-shadow var(--t),transform var(--t),border-color var(--t)}.btn--primary{background:var(--brand-red);border-color:var(--brand-red);color:#fff;box-shadow:var(--shadow-hard)}.btn--primary:hover{background:var(--brand-red-dk);border-color:var(--brand-red-dk);transform:translate(2px,2px);box-shadow:2px 2px #0e235047}.btn--dark{background:var(--section-dark);border-color:var(--section-dark);color:#fff}.btn--dark:hover{background:var(--brand-blue);border-color:var(--brand-blue)}.btn--ghost{background:transparent;border-color:var(--border-str);color:var(--ink)}.btn--ghost:hover{border-color:var(--ink);background:#0000000a}.btn--ghost-rev{background:transparent;border-color:#ffffff73;color:#fff}.btn--ghost-rev:hover{border-color:#fff;background:#ffffff1a}.btn--block{width:100%}.btn--lg{font-size:19px;padding:16px 30px}.btn__arrow{font-size:.9em;line-height:1}.btn-row{display:flex;flex-wrap:wrap;gap:14px;margin-top:26px}@media(max-width:560px){.btn-row{flex-direction:column;align-items:stretch}.btn-row .btn{width:100%}}.phone-xl{font-family:var(--font-display);font-size:clamp(34px,6vw,52px);font-weight:800;line-height:1;letter-spacing:-.01em;text-decoration:none;display:inline-block}.phone-xl:hover{color:var(--brand-red)}.sec-head{margin-bottom:34px}.sec-head--center{text-align:center}.sec-head--center .rule{margin-inline:auto}.grid{display:grid;gap:24px}.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}@media(max-width:980px){.grid--3,.grid--4{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}}.split{display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:center}.split--media-first>:first-child{order:2}.split--media-first>:last-child{order:1}@media(max-width:900px){.split{grid-template-columns:1fr;gap:30px}.split--media-first>:first-child,.split--media-first>:last-child{order:initial}}.framed{border:3px solid var(--ink);box-shadow:12px 12px 0 var(--brand-red);background:var(--ink)}.framed img{width:100%;height:100%;object-fit:cover}.framed--rev{border-color:#fff;box-shadow:12px 12px #ee3124e6}@media(max-width:700px){.framed{box-shadow:7px 7px 0 var(--brand-red)}}.checklist{list-style:none;padding:0;display:grid;gap:11px}.checklist li{position:relative;padding-left:30px;line-height:1.5}.checklist li:before{content:"";position:absolute;left:0;top:.5em;width:13px;height:13px;border:2px solid var(--brand-red);background:transparent}.checklist--rev li:before{border-color:#ffffffbf}.checklist--2{grid-template-columns:repeat(2,1fr);gap:11px 34px}@media(max-width:700px){.checklist--2{grid-template-columns:1fr}}.numlist{list-style:none;padding:0;counter-reset:n;display:grid;gap:18px}.numlist li{counter-increment:n;display:grid;grid-template-columns:44px 1fr;gap:16px;align-items:start}.numlist li:before{content:counter(n,decimal-leading-zero);font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--brand-red);letter-spacing:.06em;border-top:3px solid var(--brand-red);padding-top:6px;line-height:1}.hr-soft{border:0;border-top:1px solid var(--border);margin:0}.hr-rev{border:0;border-top:1px solid var(--border-rev);margin:0}.eyebrow-note{font-family:var(--font-display);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--muted);font-weight:600}.util{background:var(--section-dark-2);color:#fff}.util__inner{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:40px;font-size:var(--fs-micro);font-family:var(--font-display);text-transform:uppercase;letter-spacing:var(--track-label);font-weight:600}.util__meta{display:flex;gap:26px;color:#ffffffa8}.util__phone{color:#fff;text-decoration:none;display:inline-flex;gap:8px;align-items:center}.util__phone:hover{color:var(--brand-red)}@media(max-width:900px){.util{display:none}}.hdr{background:var(--brand-blue);color:#fff;position:relative;z-index:60}.hdr__inner{display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:87px}.hdr__logo{display:flex;align-items:center;flex:none}.hdr__logo img,.hdr__logo svg{height:50px;width:auto}.hdr__nav{display:flex;align-items:center;gap:2px;margin-left:auto}.hdr__cta{flex:none;margin-left:8px}.navitem{position:relative}.navitem>a{display:inline-flex;align-items:center;gap:7px;padding:32px 15px;font-family:var(--font-display);font-size:15.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;text-decoration:none;color:#fff;white-space:nowrap;border-bottom:3px solid transparent;transition:border-color var(--t),color var(--t)}.navitem>a:hover,.navitem[data-open=true]>a{border-bottom-color:var(--brand-red)}.navitem--accent>a{color:#ffd9d5}.navitem__caret{font-size:9px;opacity:.7;transition:transform var(--t)}.navitem[data-open=true] .navitem__caret{transform:rotate(180deg)}.drop{position:absolute;top:100%;left:0;background:var(--white);color:var(--ink);border-top:3px solid var(--brand-red);box-shadow:0 14px 30px #0a1a3c38;padding:22px;display:none;z-index:70}.navitem[data-open=true] .drop{display:block}.drop--mega{display:none;grid-template-columns:repeat(4,minmax(178px,1fr));gap:22px 30px}.navitem[data-open=true] .drop--mega{display:grid}.drop--right{left:auto;right:0}.drop__group-label{font-family:var(--font-display);font-size:var(--fs-micro);font-weight:700;text-transform:uppercase;letter-spacing:var(--track-label);color:var(--brand-red);padding-bottom:7px;border-bottom:2px solid var(--border);margin-bottom:9px}.drop ul{list-style:none;padding:0;display:grid;gap:1px}.drop a{display:block;padding:5px 0;font-size:15px;line-height:1.35;text-decoration:none;color:var(--ink-2)}.drop a:hover{color:var(--brand-red-ink)}.drop__all{grid-column:1 / -1;border-top:1px solid var(--border);padding-top:14px;margin-top:2px}.drop--cols ul{grid-template-columns:repeat(2,minmax(150px,1fr));gap:1px 26px}.hdr__burger{display:none;background:transparent;border:2px solid rgba(255,255,255,.4);color:#fff;padding:9px 11px;cursor:pointer;line-height:0}.hdr__burger span{display:block;width:22px;height:2px;background:#fff;margin:4px 0;transition:transform var(--t),opacity var(--t)}.hdr__burger[aria-expanded=true] span:nth-child(1){transform:translateY(6px) rotate(45deg)}.hdr__burger[aria-expanded=true] span:nth-child(2){opacity:0}.hdr__burger[aria-expanded=true] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}@media(max-width:1150px){.navitem>a{padding-inline:11px;font-size:14.5px}.drop--mega{grid-template-columns:repeat(3,minmax(160px,1fr))}}@media(max-width:1000px){.hdr__nav,.hdr__cta{display:none}.hdr__burger{display:block}.hdr__inner{min-height:74px}.hdr__logo img,.hdr__logo svg{height:42px}}.phonebar{display:none;background:var(--brand-red)}.phonebar a{display:flex;align-items:center;justify-content:center;gap:11px;min-height:62px;color:#fff;text-decoration:none;font-family:var(--font-display);font-size:26px;font-weight:800;letter-spacing:.01em}@media(max-width:1000px){.phonebar{display:block}}.drawer{display:none;background:var(--section-dark);color:#fff;border-top:3px solid var(--brand-red)}.drawer[data-open=true]{display:block}.drawer__list{list-style:none;padding:0}.drawer__list>li{border-bottom:1px solid var(--border-rev)}.drawer__row{display:flex;align-items:stretch}.drawer__row>a{flex:1;display:block;padding:16px var(--gutter);font-family:var(--font-display);font-size:19px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;text-decoration:none;color:#fff}.drawer__toggle{flex:none;width:60px;background:transparent;border:0;border-left:1px solid var(--border-rev);color:#fff;font-size:20px;cursor:pointer}.drawer__toggle[aria-expanded=true]{background:var(--brand-red)}.drawer__sub{display:none;padding:4px var(--gutter) 18px;background:#0003}.drawer__sub[data-open=true]{display:block}.drawer__sub ul{list-style:none;padding:0;display:grid;gap:2px}.drawer__sub a{display:block;padding:9px 0;color:#ffffffd9;text-decoration:none;font-size:16px}.drawer__sub-label{font-family:var(--font-display);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--brand-red);margin:14px 0 5px;font-weight:700}.drawer__foot{padding:20px var(--gutter) 26px;display:grid;gap:12px}.hero{position:relative;background:var(--section-dark);color:#fff;overflow:hidden}.hero__grid{display:grid;grid-template-columns:1fr 1fr;min-height:860px;align-items:stretch}.hero__text{position:relative;z-index:3;display:flex;flex-direction:column;justify-content:center;padding:74px var(--gutter) 74px 0;max-width:640px}.hero__wrap{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;align-items:stretch}.hero__media{position:relative}.hero__media video,.hero__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero__panel{position:absolute;inset:0 auto 0 0;width:100%;z-index:1;background:var(--section-dark);clip-path:polygon(0 0,100% 0,calc(50% + 92px) 100%,0 100%);pointer-events:none}.hero__wrap{position:relative;z-index:2}.hero__copy{margin-top:20px;max-width:34em;color:#ffffffd1}.hero__badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:32px}@media(max-width:980px){.hero__grid{grid-template-columns:1fr;min-height:0}.hero__wrap{grid-template-columns:1fr}.hero__panel{display:none}.hero__media{position:absolute;inset:0;z-index:0}.hero__media:after{content:"";position:absolute;inset:0;background:#0a1a3cde}.hero__text{position:relative;z-index:2;padding:52px 0 48px;max-width:none;text-align:center;min-height:74vh}.hero__copy{margin-inline:auto}.hero__text .btn-row,.hero__badges{justify-content:center}}.creds{background:var(--paper-2);border-block:1px solid var(--border)}.creds__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 28px;padding-block:22px}.cred{display:grid;gap:2px;padding-left:16px;border-left:3px solid var(--brand-red)}.cred__label{font-family:var(--font-display);font-size:17px;font-weight:700;text-transform:uppercase;letter-spacing:.045em;line-height:1.15}.cred__note{font-size:13.5px;color:var(--muted);line-height:1.3}.info{background:var(--section-dark);color:#fff}.info__inner{display:grid;grid-template-columns:repeat(3,1fr);gap:0}.info__cell{padding:26px 30px;border-left:1px solid var(--border-rev)}.info__cell:first-child{border-left:0;padding-left:0}.info__k{font-family:var(--font-display);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:#ffffff8c;font-weight:600;margin-bottom:5px}.info__v{font-family:var(--font-display);font-size:22px;font-weight:600;line-height:1.25}.info__v a{text-decoration:none}.info__v a:hover{color:var(--brand-red)}.info__v span{display:block;font-size:16px;font-weight:500;color:#ffffffb3}@media(max-width:800px){.info__inner{grid-template-columns:1fr}.info__cell{border-left:0;border-top:1px solid var(--border-rev);padding:18px 0}.info__cell:first-child{border-top:0}}.svc-card{position:relative;display:block;text-decoration:none;color:#fff;background:var(--section-dark);overflow:hidden;min-height:290px;isolation:isolate}.svc-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform .32s ease-out}.svc-card:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to top,#0a1a3cf2 12%,#0a1a3cbd 52%,#0a1a3c6b);transition:background .32s ease-out}.svc-card:hover img{transform:scale(1.045)}.svc-card:hover:after{background:linear-gradient(to top,#8f1a11f0 12%,#0a1a3cc7 55%,#0a1a3c73)}.svc-card__body{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding:26px 24px 24px;min-height:290px}.svc-card__title{font-family:var(--font-display);font-size:27px;font-weight:700;line-height:1.1;letter-spacing:.015em;text-transform:uppercase}.svc-card__blurb{margin-top:9px;font-size:15.5px;line-height:1.45;color:#ffffffd1}.svc-card__more{margin-top:15px;font-family:var(--font-display);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);font-weight:700;color:#fff;border-top:2px solid var(--brand-red);padding-top:9px;display:inline-block}.svc-row{display:flex;align-items:baseline;justify-content:space-between;gap:18px;padding:15px 0;border-bottom:1px solid var(--border);text-decoration:none;color:var(--ink)}.svc-row:hover{color:var(--brand-red-ink)}.svc-row__name{font-family:var(--font-display);font-size:21px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.svc-row__blurb{font-size:15px;color:var(--muted);flex:1 1 46%;text-align:right}@media(max-width:700px){.svc-row{flex-direction:column;gap:4px}.svc-row__blurb{text-align:left}}.reasons{display:grid;grid-template-columns:repeat(2,1fr);gap:40px 56px}.reason__title{font-family:var(--font-display);font-size:23px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding-bottom:10px;border-bottom:2px solid var(--brand-red);margin-bottom:12px}.reason p{color:var(--muted-rev);line-height:1.55}@media(max-width:800px){.reasons{grid-template-columns:1fr;gap:28px}}.chips{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.chip{display:flex;align-items:center;justify-content:center;text-align:center;min-height:62px;padding:10px 14px;background:var(--white);border:2px solid var(--border);border-radius:var(--radius-plaque);font-family:var(--font-display);font-size:18px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;text-decoration:none;color:var(--ink);line-height:1.15;transition:background var(--t),color var(--t),border-color var(--t)}.chip:hover{background:var(--brand-red);border-color:var(--brand-red);color:#fff}@media(max-width:900px){.chips{grid-template-columns:repeat(2,1fr)}}@media(max-width:460px){.chips{grid-template-columns:1fr}}.city-list{columns:4;column-gap:30px;list-style:none;padding:0}.city-list li{break-inside:avoid;padding:4px 0}.city-list a{text-decoration:none;color:inherit;font-size:15.5px}.city-list a:hover{color:var(--brand-red)}.city-list li:before{content:"›";color:var(--brand-red);margin-right:8px;font-weight:700}@media(max-width:900px){.city-list{columns:2}}@media(max-width:460px){.city-list{columns:1}}.faq{border-top:2px solid var(--border-str)}.faq__item{border-bottom:1px solid var(--border)}.faq__q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;text-align:left;background:transparent;border:0;padding:20px 4px;cursor:pointer;font-family:var(--font-display);font-size:20px;font-weight:600;line-height:1.25;color:var(--ink)}.faq__q:hover{color:var(--brand-red-ink)}.faq__sign{flex:none;width:26px;height:26px;position:relative;border:2px solid var(--brand-red)}.faq__sign:before,.faq__sign:after{content:"";position:absolute;background:var(--brand-red);left:50%;top:50%;transform:translate(-50%,-50%)}.faq__sign:before{width:12px;height:2px}.faq__sign:after{width:2px;height:12px;transition:transform var(--t),opacity var(--t)}.faq__q[aria-expanded=true] .faq__sign:after{opacity:0}.faq__a{display:none;padding:0 4px 22px;max-width:68ch;color:var(--ink-2)}.faq__a[data-open=true]{display:block}.faq__a p+p{margin-top:.9em}.contact{display:grid;grid-template-columns:.92fr 1.08fr;gap:0}.contact__aside{background:var(--section-dark);color:#fff;padding:var(--pad-lg) 46px;position:relative;overflow:hidden}.contact__aside img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.2}.contact__aside>*{position:relative}.contact__gen{font-family:var(--font-display);font-size:clamp(80px,12vw,132px);font-weight:800;line-height:.85;color:var(--brand-red)}.contact__gen-sub{font-family:var(--font-display);font-size:25px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-top:8px}.contact__main{background:var(--white);padding:var(--pad-lg) 46px}.contact__lines{display:grid;gap:18px;margin-top:24px}.contact__line{display:grid;gap:2px}.contact__k{font-family:var(--font-display);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--muted);font-weight:700}.contact__v{font-size:18px}.contact__v a{text-decoration:none;font-weight:600}.contact__v a:hover{color:var(--brand-red)}@media(max-width:900px){.contact{grid-template-columns:1fr}.contact__aside,.contact__main{padding:44px var(--gutter)}}.map{border:0;width:100%;height:420px;display:block;background:var(--section-dark);filter:grayscale(.35) contrast(1.05)}.mapnote{background:var(--section-dark);color:#fff}.mapnote__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;padding-block:18px}.mapnote__addr{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:.02em}@media(max-width:700px){.map{height:320px}}.ctastrip{background:var(--brand-red);color:#fff}.ctastrip__inner{display:flex;align-items:center;justify-content:space-between;gap:26px;padding-block:26px}.ctastrip__head{font-family:var(--font-display);font-size:clamp(24px,3vw,33px);font-weight:800;text-transform:uppercase;line-height:1.1}.ctastrip__kicker{font-family:var(--font-display);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);opacity:.82;font-weight:600;margin-bottom:4px}@media(max-width:800px){.ctastrip__inner{flex-direction:column;align-items:flex-start}}.ftr{background:var(--section-dark-2);color:#ffffffbf}.ftr__top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.15fr;gap:40px;padding-block:56px}.ftr__logo img,.ftr__logo svg{height:56px;width:auto;margin-bottom:18px}.ftr__blurb{font-size:15px;line-height:1.6;max-width:34ch}.ftr__h{font-family:var(--font-display);font-size:15px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-label);color:#fff;padding-bottom:9px;border-bottom:2px solid var(--brand-red);margin-bottom:14px}.ftr ul{list-style:none;padding:0;display:grid;gap:6px}.ftr a{text-decoration:none;font-size:15px}.ftr a:hover{color:#fff}.ftr__contact{display:grid;gap:14px}.ftr__phone{font-family:var(--font-display);font-size:30px;font-weight:800;color:#fff;text-decoration:none;line-height:1;display:block}.ftr__phone:hover{color:var(--brand-red)}.ftr__hours{font-size:15px;line-height:1.55}.ftr__hours b{color:#fff;font-weight:600}.ftr__bottom{border-top:1px solid var(--border-rev);padding-block:20px;display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;font-size:13.5px}.ftr__cols2{display:block;columns:2;column-gap:22px}.ftr__cols2 li{break-inside:avoid}@media(max-width:1000px){.ftr__top{grid-template-columns:repeat(2,1fr);gap:34px}}@media(max-width:620px){.ftr__top{grid-template-columns:1fr}.ftr__cols2{columns:2}}.phero{background:var(--section-dark);color:#fff;position:relative;overflow:hidden}.phero__media{position:absolute;inset:0;z-index:0}.phero__media img{width:100%;height:100%;object-fit:cover}.phero__scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(100deg,#0a1a3cf5,#0a1a3ce6 48%,#0a1a3c8c)}.phero__inner{position:relative;z-index:2;padding-block:74px;max-width:58%}@media(max-width:900px){.phero__inner{max-width:100%;padding-block:48px}.phero__scrim{background:#0a1a3ce6}}.crumbs{font-family:var(--font-display);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:#fff9;margin-bottom:16px;font-weight:600}.crumbs a{text-decoration:none}.crumbs a:hover{color:#fff}.crumbs span{margin-inline:8px;opacity:.5}.vidwrap{position:relative;background:var(--ink)}.vidwrap video{width:100%;height:auto;display:block}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.gallery figure{margin:0;position:relative;background:var(--ink)}.gallery img{width:100%;height:100%;object-fit:cover;aspect-ratio:4 / 3}.gallery figcaption{font-family:var(--font-display);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--muted);padding-top:8px;font-weight:600}.gallery--tall img{aspect-ratio:4 / 5}@media(max-width:900px){.gallery{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.gallery{grid-template-columns:1fr}}.team{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}.team figure{margin:0}.team img{width:100%;aspect-ratio:4 / 5;object-fit:cover;object-position:center 28%;border:3px solid var(--ink)}@media(max-width:1100px){.team{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.team{grid-template-columns:repeat(2,1fr)}}.ff-lockup{display:inline-flex;align-items:center;gap:16px;background:#fff;padding:12px 18px;border:3px solid var(--ink)}.ff-lockup img{width:62px;height:62px;object-fit:contain}.ff-lockup__txt{display:block;font-family:var(--font-display);text-transform:uppercase;letter-spacing:var(--track-label);font-size:var(--fs-micro);font-weight:700;color:var(--ink);line-height:1.4}.ff-lockup b{display:block;font-size:19px;letter-spacing:.04em}.ff-lockup img{flex:none}.logo-plate[data-astro-cid-3ef6ksr2]{display:block;background:#fff;padding:9px 14px;border:2px solid var(--brand-black);line-height:0}.logo-plate[data-astro-cid-3ef6ksr2] svg{height:42px;width:auto}@media(max-width:1000px){.logo-plate[data-astro-cid-3ef6ksr2]{padding:7px 10px}.logo-plate[data-astro-cid-3ef6ksr2] svg{height:32px}}@media(max-width:420px){.logo-plate[data-astro-cid-3ef6ksr2] svg{height:27px}}.logo-plate[data-astro-cid-sz7xmlte]{display:inline-block;background:#fff;padding:10px 16px;border:2px solid #fff;line-height:0}.logo-plate[data-astro-cid-sz7xmlte] svg{height:46px;width:auto}.ftr[data-astro-cid-sz7xmlte] address[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{text-decoration:none}


/* ==========================================================================
   BAC v7 revision layer
   ========================================================================== */

:root{
  --accent-rev:#ff6a58;
  --gold:#f5b400;
}

/* --------------------------------------------------------------- utility bar */
.util{background:var(--brand-black)}
.util__inner{min-height:38px}
.util__meta{gap:22px}
.util__links{display:flex;align-items:center;gap:22px}
.util__links a{color:#fff;text-decoration:none;display:inline-flex;align-items:center;gap:7px}
.util__links a:hover{color:var(--brand-red)}
.util__links .util__sep{color:#ffffff40}

/* --------------------------------------------------------------- header (white) */
.hdr{background:#fff;color:var(--ink);position:sticky;top:0;z-index:60;border-bottom:1px solid var(--border);box-shadow:0 1px 0 #0000000a}
.hdr__inner{min-height:82px}
.logo-plate[data-astro-cid-3ef6ksr2]{background:transparent;border:0;padding:0}
.logo-plate[data-astro-cid-3ef6ksr2] svg{height:52px}
@media(max-width:1000px){.logo-plate[data-astro-cid-3ef6ksr2] svg{height:40px}}
@media(max-width:420px){.logo-plate[data-astro-cid-3ef6ksr2] svg{height:32px}}
.navitem>a{color:var(--ink);padding-block:30px}
.navitem>a:hover,.navitem[data-open=true]>a{color:var(--brand-red-ink)}
.navitem--accent>a{color:var(--brand-red)}
.navitem--accent>a:hover{color:var(--brand-red-dk)}
.hdr__burger{border-color:var(--border-str);color:var(--ink)}
.hdr__burger span{background:var(--ink)}
.hdr.is-stuck{box-shadow:0 6px 22px #0a1a3c1f}

/* --------------------------------------------------------------- dropdowns */
.drop{min-width:17.5rem;padding:20px 24px;box-shadow:0 18px 38px #0a1a3c2b}
.drop a{white-space:nowrap}
.drop:not(.drop--mega):not(.drop--cols) ul{grid-template-columns:1fr}
.drop:not(.drop--mega):not(.drop--cols) a{padding:8px 0;font-size:15.5px;font-weight:600}

/* --------------------------------------------------------------- trust marks */
.marks{display:flex;flex-wrap:wrap;align-items:center;gap:26px 44px}
.marks--center{justify-content:center}
.marks img{width:auto;display:block;flex:none}
.mark--google{height:38px}
.mark--aaa{height:44px}
.mark--bbb{height:38px}
.mark--echeck{height:40px}
.mark--ff{height:62px}
@media(max-width:700px){
  .marks{gap:20px 28px;justify-content:center}
  .mark--google{height:30px}.mark--aaa{height:34px}.mark--bbb{height:30px}
  .mark--echeck{height:30px}.mark--ff{height:48px}
}

.markstrip{background:#fff;border-bottom:1px solid var(--border);border-top:4px solid var(--brand-red)}
.markstrip__inner{display:flex;align-items:center;justify-content:space-between;gap:22px 44px;flex-wrap:wrap;padding-block:24px}
.markstrip__lede{font-family:var(--font-display);font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-label);color:var(--muted);max-width:15ch;line-height:1.35}
@media(max-width:900px){.markstrip__inner{justify-content:center;text-align:center}.markstrip__lede{max-width:none}}

/* a mark row that has to sit on dark: give it one honest light plate, full width */
.markband{background:#fff;padding-block:26px}

/* --------------------------------------------------------------- headings */
.acc{color:var(--brand-red)}
.bg-dark .acc,.bg-mid .acc,.band .acc,.hero .acc,.contact__aside .acc{color:var(--accent-rev)}
.h2--tight{margin-top:0}
.sec-head{margin-bottom:30px}
.section{padding-block:calc(var(--pad) * .86)}
.section--lg{padding-block:calc(var(--pad-lg) * .78)}

/* --------------------------------------------------------------- hero */
.hero{min-height:min(92vh,900px);display:flex;align-items:flex-end;isolation:isolate}
.hero__bg{position:absolute;inset:-6% 0 -6% 0;z-index:0;overflow:hidden}
.hero__bg video,.hero__bg img{width:100%;height:100%;object-fit:cover;display:block}
.hero__grad{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(97deg,#0a1a3cf0 0%,#0a1a3cd6 34%,#0a1a3c8c 62%,#0a1a3c4d 100%),
    linear-gradient(180deg,#0a1a3ce0 0%,#0a1a3c33 30%,#0a1a3c2e 55%,#0a1a3cd9 88%,#071230 100%);}
.hero__grad:after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;background:var(--brand-red)}
.hero__inner{position:relative;z-index:2;width:100%;padding-block:104px 64px}
.hero__col{max-width:41rem}
.hero .hero-head{font-size:clamp(40px,5.4vw,72px);letter-spacing:-.012em}
.hero__copy{margin-top:18px;max-width:38em;color:#ffffffdb;font-size:calc(var(--fs-body) + 1px)}
.hero__marks{margin-top:38px;padding-top:26px;border-top:1px solid #ffffff2e}
.hero__marks .markstrip__lede{color:#ffffff8f}
.hero__plate{display:inline-flex;align-items:center;gap:24px;background:#fff;padding:14px 22px;border-left:5px solid var(--brand-red)}
@media(max-width:900px){
  .hero{min-height:0}
  .hero__inner{padding-block:64px 48px}
  .hero__plate{gap:16px;padding:12px 14px}
}

/* hero micro meta line */
.hero__meta{display:flex;flex-wrap:wrap;gap:8px 18px;font-family:var(--font-display);font-size:13.5px;font-weight:600;
  text-transform:uppercase;letter-spacing:var(--track-label);color:#ffffffb8;margin-bottom:14px}
.hero__meta b{color:var(--accent-rev);font-weight:700}

/* --------------------------------------------------------------- google reviews */
.rev{background:#fff;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.rev__inner{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:34px 46px;padding-block:40px}
.rev__score{display:flex;align-items:center;gap:20px}
.rev__num{font-family:var(--font-display);font-size:76px;font-weight:800;line-height:.86;color:var(--brand-blue)}
.rev__stars{display:block}
.rev__count{font-size:15px;color:var(--muted);margin-top:6px}
.rev__logo{display:flex;align-items:center;gap:12px}
.rev__logo img{height:40px;width:auto}
.rev__logo span{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:.01em;color:var(--ink)}
.rev__txt{font-family:var(--font-display);font-size:clamp(22px,2.4vw,30px);font-weight:700;text-transform:uppercase;line-height:1.12;color:var(--ink)}
.rev__txt small{display:block;font-family:var(--font-body);font-size:15.5px;font-weight:400;text-transform:none;color:var(--muted);margin-top:8px;letter-spacing:0}
@media(max-width:1000px){.rev__inner{grid-template-columns:1fr;gap:22px;text-align:left}}

/* --------------------------------------------------------------- reasons w/ marks */
.reason__mark{height:34px;width:auto;margin-bottom:14px;display:block}
.reason--logo .reason__title{border-bottom-color:#ffffff3d}

/* --------------------------------------------------------------- gallery rework */
.gallery{gap:10px}
.gallery figure{overflow:hidden;background:var(--ink)}
.gallery figure img{transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.gallery figure:hover img{transform:scale(1.05)}
.gallery--cap figure{position:relative}
.gallery--cap figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 13px;color:#fff;
  background:linear-gradient(to top,#0a1a3cec,#0a1a3c00);font-family:var(--font-display);font-size:var(--fs-micro);
  font-weight:700;text-transform:uppercase;letter-spacing:var(--track-label)}
.gallery--feature{display:grid;grid-template-columns:1.6fr 1fr;grid-template-rows:1fr 1fr;gap:10px}
.gallery--feature figure:first-child{grid-row:1 / span 2}
.gallery--feature img{aspect-ratio:auto;height:100%;min-height:190px}
.gallery--feature figure:first-child img{min-height:390px}
@media(max-width:820px){
  .gallery--feature{grid-template-columns:1fr;grid-template-rows:none}
  .gallery--feature figure:first-child{grid-row:auto}
  .gallery--feature figure:first-child img{min-height:260px}
}

/* --------------------------------------------------------------- steps */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--border);border:1px solid var(--border)}
.steps__item{background:#fff;padding:30px 28px}
.steps__n{font-family:var(--font-display);font-size:14px;font-weight:700;letter-spacing:var(--track-label);
  color:var(--brand-red);display:block;padding-bottom:9px;margin-bottom:12px;border-bottom:3px solid var(--brand-red);width:2.4em}
.steps__t{font-family:var(--font-display);font-size:22px;font-weight:700;text-transform:uppercase;line-height:1.15;margin-bottom:8px}
.steps__item p{font-size:15.5px;line-height:1.5;color:var(--ink-2)}
@media(max-width:820px){.steps{grid-template-columns:1fr}}

/* --------------------------------------------------------------- faq rework */
.faqwrap{display:grid;grid-template-columns:.72fr 1.28fr;gap:56px;align-items:start}
.faqwrap__aside{position:sticky;top:106px}
.faqwrap__aside .h2{font-size:var(--fs-h2)}
.faq{border-top:3px solid var(--brand-red)}
.faq__item{border-bottom:1px solid var(--border);transition:background var(--t)}
.faq__item:has(.faq__q[aria-expanded=true]){background:#fff}
.faq__q{padding:22px 18px 22px 20px;font-size:21px;position:relative}
.faq__q:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--brand-red);
  transform:scaleY(0);transform-origin:top;transition:transform .25s ease-out}
.faq__q[aria-expanded=true]:before,.faq__q:hover:before{transform:scaleY(1)}
.faq__a{padding:0 20px 24px}
@media(max-width:900px){
  .faqwrap{grid-template-columns:1fr;gap:26px}
  .faqwrap__aside{position:static}
}

/* --------------------------------------------------------------- contact strip */
.contact__aside{background:linear-gradient(135deg,#133072 0%,#0e2350 46%,#071230 100%)}
.contact__aside img{opacity:.16}
.contact__gen{font-size:clamp(74px,10vw,118px)}
.contact__gen-sub{font-size:22px;line-height:1.2}
.contact__aside,.contact__main{padding-block:calc(var(--pad-lg) * .74)}
.contact__main .btn-row{margin-top:18px}
.contact__lines{gap:14px;margin-top:26px;border-top:1px solid var(--border);padding-top:22px}
@media(min-width:901px){.contact{grid-template-columns:1fr 1fr}}

/* --------------------------------------------------------------- fluid film block */
.ff-lockup{background:#fff;border:0;border-left:5px solid var(--brand-red);padding:16px 24px 16px 20px;gap:18px}
.ff-lockup img{width:70px;height:70px}
.ff-lockup b{font-size:21px}
.ffsplit{display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:center}
@media(max-width:900px){.ffsplit{grid-template-columns:1fr;gap:30px}}

/* --------------------------------------------------------------- footer */
.ftr__top{grid-template-columns:1.35fr 1fr 1.15fr 1.05fr;padding-block:52px;align-items:start}
.ftr__top>*{align-self:start}
.ftr__contact{gap:16px;align-content:start}
.ftr__logo .logo-plate[data-astro-cid-sz7xmlte]{background:transparent;border:0;padding:0}
.ftr__logo .logo-plate[data-astro-cid-sz7xmlte] svg{height:50px}
.ftr ul{gap:7px}
.ftr__hours{margin:0}
.ftr__contact>p{margin:0}
.ftr__marks{border-top:1px solid var(--border-rev);padding-block:24px;display:flex;flex-wrap:wrap;
  align-items:center;justify-content:space-between;gap:18px 34px}
.ftr__marks .marks{gap:20px 34px}
.ftr__marks-note{font-family:var(--font-display);font-size:13px;font-weight:600;text-transform:uppercase;
  letter-spacing:var(--track-label);color:#ffffff8a}
.ftr__plate{background:#fff;padding:16px 26px;display:inline-flex;align-items:center;gap:34px;flex-wrap:wrap;
  border-left:5px solid var(--brand-red)}
@media(max-width:1000px){.ftr__top{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.ftr__top{grid-template-columns:1fr}}

/* --------------------------------------------------------------- motion */
@media(prefers-reduced-motion:no-preference){
  [data-reveal]{opacity:0;transform:translate3d(0,26px,0);
    transition:opacity .75s cubic-bezier(.22,.68,.24,1),transform .85s cubic-bezier(.22,.68,.24,1)}
  [data-reveal=left]{transform:translate3d(-46px,0,0)}
  [data-reveal=right]{transform:translate3d(46px,0,0)}
  [data-reveal=zoom]{transform:scale(.955)}
  [data-reveal].is-in{opacity:1;transform:none}
  [data-stagger]>*{opacity:0;transform:translate3d(0,28px,0);
    transition:opacity .6s ease-out,transform .7s cubic-bezier(.22,.68,.24,1)}
  [data-stagger].is-in>*{opacity:1;transform:none}
}
[data-parallax]{will-change:transform}
.band__media{inset:-14% 0}
.band__media img{height:100%}

/* 3d tilt plate */
.tilt{perspective:1400px}
.tilt__in{transform-style:preserve-3d;transition:transform .5s cubic-bezier(.2,.7,.2,1);will-change:transform}
.tilt__in>*{transform:translateZ(0)}
.tilt.is-live .tilt__in{transition:transform .12s linear}

/* seam */
.seam{--seam-h:76px}
@media(max-width:700px){.seam{--seam-h:34px}}

/* --------------------------------------------------------------- v7.1 corrections */

/* aligned logo slots inside the reasons grid */
.reason__logo{min-height:76px;display:flex;align-items:flex-end;padding-bottom:12px;
  border-bottom:2px solid var(--brand-red);margin-bottom:14px}
.reason__logo img{width:auto;height:auto;max-width:250px;display:block}
.reasons .reason__title{min-height:76px;display:flex;align-items:flex-end;margin-bottom:14px}
@media(max-width:700px){
  .reason__logo,.reasons .reason__title{min-height:0}
  .reason__logo img{max-width:200px;max-height:46px!important}
}

/* credibility block: accreditation strip sits straight on top of the reviews strip */
.markstrip + .rev{border-top:0}
.markstrip__lede{max-width:26ch;font-size:13.5px}
.markstrip__inner{padding-block:26px}

/* the footer service-area list was losing its two-column rule to `.ftr ul` */
.ftr ul.ftr__cols2{display:block;columns:2;column-gap:22px}
.ftr ul.ftr__cols2 li{break-inside:avoid;padding-block:3px}

/* trust marks read better a size up on light ground */
.mark--google{height:40px}
.mark--aaa{height:50px}
.mark--bbb{height:42px}
.mark--echeck{height:44px}
.mark--ff{height:66px}
@media(max-width:700px){
  .mark--google{height:30px}.mark--aaa{height:36px}.mark--bbb{height:31px}
  .mark--echeck{height:32px}.mark--ff{height:50px}
}
.ftr__marks .mark--aaa{height:40px}
.ftr__marks .mark--bbb{height:34px}
.ftr__marks .mark--echeck{height:36px}
.ftr__marks .mark--ff{height:50px}
.ftr__marks .mark--google{height:34px}

@media(max-width:900px){
  .hero__grad{background:linear-gradient(180deg,#0a1a3cdb 0%,#0a1a3c8a 32%,#0a1a3cb0 70%,#071230 100%)}
}

/* --------------------------------------------------------------- v7.2 real artwork + bios */

/* portrait marks need more height than the landscape ones to read at the same weight */
.mark--aaa{height:66px}
.mark--bbb{height:70px}
.mark--ase{height:72px}
.mark--echeck{height:46px}
.mark--ff{height:68px}
.mark--google{height:40px}
@media(max-width:700px){
  .mark--aaa{height:46px}.mark--bbb{height:50px}.mark--ase{height:52px}
  .mark--echeck{height:32px}.mark--ff{height:48px}.mark--google{height:30px}
}
.ftr__marks .mark--aaa{height:52px}
.ftr__marks .mark--bbb{height:54px}
.ftr__marks .mark--ase{height:56px}
.ftr__marks .mark--echeck{height:36px}
.ftr__marks .mark--ff{height:52px}
.marks img{max-width:100%}

/* the reasons grid runs two logo rows now, so cap the slot rather than the image */
.reason__logo img{max-height:70px}

/* bios */
.bios{display:grid;grid-template-columns:repeat(2,1fr);gap:52px}
.bio{display:grid;gap:26px}
.bio__photo .framed{box-shadow:10px 10px 0 var(--brand-red)}
.bio__photo img{aspect-ratio:5 / 4;object-fit:cover}
.bio__name{font-family:var(--font-display);font-size:36px;font-weight:800;text-transform:uppercase;
  line-height:1;letter-spacing:.01em}
.bio__role{font-family:var(--font-display);font-size:13.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:var(--track-label);color:var(--brand-red-ink);margin-top:9px}
.bio__creds{display:flex;align-items:center;gap:26px;padding:16px 0;margin:18px 0;
  border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.bio__creds img{width:auto;display:block}
.bio__creds img:first-child{height:54px}
.bio__creds img:last-child{height:34px}
.bio .prose p{font-size:16px}
@media(max-width:860px){.bios{grid-template-columns:1fr;gap:40px}}

/* footer social + build credit */
.ftr__social{display:flex;gap:10px;align-items:center;margin-top:16px}
.ftr__social a{display:inline-flex;width:40px;height:40px;align-items:center;justify-content:center;
  border:1px solid var(--border-rev);transition:border-color var(--t),background var(--t)}
.ftr__social a:hover{border-color:var(--brand-red);background:#ee312426}
.ftr__social img{width:19px;height:19px;filter:brightness(0) invert(1);opacity:.82}
.ftr__social a:hover img{opacity:1}
.ftr__by{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:#ffffff8a;text-decoration:none}
.ftr__by img{height:19px;width:auto;opacity:.9}
.ftr__by:hover{color:#fff}
.ftr__bottom{align-items:center}

/* --------------------------------------------------------------- v7.3 sizing */
.reason__logo{min-height:96px}
.reasons .reason__title{min-height:96px}
.reason__logo img{max-height:none;max-width:none;width:auto}
@media(max-width:700px){
  .reason__logo{min-height:0}
  .reason__logo img{height:auto!important;max-height:52px;width:auto}
}
.mark--aaa{height:74px}
.mark--bbb{height:76px}
.mark--ase{height:78px}
.mark--echeck{height:50px}
.mark--ff{height:72px}
.marks{gap:24px 40px}
@media(max-width:700px){
  .mark--aaa{height:48px}.mark--bbb{height:50px}.mark--ase{height:52px}
  .mark--echeck{height:32px}.mark--ff{height:48px}
}
.ftr__marks .mark--aaa{height:56px}
.ftr__marks .mark--bbb{height:58px}
.ftr__marks .mark--ase{height:60px}
.ftr__marks .mark--echeck{height:38px}
.ftr__marks .mark--ff{height:54px}
.ftr__by{font-size:12px}
.ftr__by img{height:30px}

/* --------------------------------------------------------------- v7.4 */

/* one accent red everywhere: the exact red from the logo artwork.
   the lightened variant used on dark grounds was reading orange. */
:root{--accent-rev:#ee3124}
.bg-dark .acc,.bg-mid .acc,.band .acc,.hero .acc,.contact__aside .acc{color:#ee3124}

/* accreditation strip: no label, marks centred and evenly spaced */
.markstrip__inner--center{justify-content:center;gap:0}
.markstrip__inner--center .marks{justify-content:center;gap:28px 56px;width:100%}
@media(max-width:700px){.markstrip__inner--center .marks{gap:20px 30px}}

/* shop tour player */
.shoptour{background:var(--ink);line-height:0}
.shoptour video{width:100%;height:auto;display:block;aspect-ratio:16 / 9;object-fit:cover;background:var(--ink)}

/* credential line under body copy (E-Check strip) */
.credline{display:flex;align-items:center;gap:22px;margin-top:28px;padding:18px 0 18px 20px;
  border-top:1px solid var(--border);border-bottom:1px solid var(--border);
  border-left:4px solid var(--brand-red)}
.credline img{height:46px;width:auto;flex:none;display:block}
.credline__txt{font-size:15px;line-height:1.4;color:var(--muted)}
.credline__txt b{display:block;font-family:var(--font-display);font-size:15px;font-weight:700;
  text-transform:uppercase;letter-spacing:var(--track-label);color:var(--ink);margin-bottom:3px}
@media(max-width:560px){.credline{flex-direction:column;align-items:flex-start;gap:14px}}

/* generations lockup reads as one unit, not a giant floating numeral */
.contact__genrow{display:flex;align-items:center;gap:22px}
.contact__gen{font-size:clamp(58px,7vw,88px);line-height:.82}
.contact__gen-sub{margin-top:0;font-size:21px;line-height:1.15}
@media(max-width:560px){.contact__genrow{gap:16px}.contact__gen-sub{font-size:19px}}

/* --------------------------------------------------------------- v7.5 even mark row */
.markstrip__inner--center .marks{display:grid;grid-template-columns:repeat(5,1fr);
  align-items:center;justify-items:center;gap:0;width:100%;max-width:1080px;margin-inline:auto}
.markstrip__inner--center .marks img{height:80px;width:88%;max-width:190px;object-fit:contain}
@media(max-width:820px){
  .markstrip__inner--center .marks{grid-template-columns:repeat(3,1fr);gap:26px 0}
  .markstrip__inner--center .marks img{height:58px}
}
@media(max-width:480px){
  .markstrip__inner--center .marks{grid-template-columns:repeat(2,1fr)}
  .markstrip__inner--center .marks img{height:52px}
}

/* --------------------------------------------------------------- v7.6 */

/* Hard caps so no logo can ever render at its intrinsic size, even if a later
   rule fails to load. This is belt and braces after the stale-cache incident. */
.marks img,.ftr__marks img{max-height:84px;width:auto}
.ftr__social img{max-width:20px;max-height:20px}
.ftr__by img{max-height:30px;width:auto}
.bio__creds img{max-height:56px;width:auto}
.reason__logo img{max-height:84px;width:auto}
.credline img{max-height:48px;width:auto}
.bio__photo img{max-height:none}

/* shop tour: source is a 4:3 timeline, so do not force 16:9 and crop the band off */
.shoptour{max-width:880px;margin-inline:auto;background:var(--ink);line-height:0}
.shoptour video{width:100%;height:auto;aspect-ratio:4 / 3;object-fit:contain;display:block;background:#000}
.bios{align-items:start}
.bio__photo .framed{aspect-ratio:5 / 4;display:block}
.bio__photo .framed img{width:100%;height:100%;object-fit:cover;aspect-ratio:auto}

/* --------------------------------------------------------------- v7.7 hero + info bar */

/* the hero was 900px tall with the copy pinned to the bottom, which left a dead
   band above the h1. size it to its content instead. */
.hero{min-height:min(66vh,600px)}
.hero__inner{padding-block:56px 52px}
.hero .hero-head{font-size:clamp(38px,5vw,66px)}
.hero__copy{margin-top:16px;max-width:36em}
@media(max-width:900px){
  .hero{min-height:0}
  .hero__inner{padding-block:44px 40px}
}

/* Google rating chip, above the fold */
.hero__rating{display:inline-flex;align-items:center;gap:12px;margin-top:26px;padding:11px 18px;
  text-decoration:none;background:#ffffff12;border:1px solid #ffffff33;
  transition:background var(--t),border-color var(--t)}
.hero__rating:hover{background:#ffffff21;border-color:#ffffff66}
.hero__rating svg{display:block;flex:none}
.hero__rating img{height:19px;width:auto;flex:none}
.hero__rating-txt{font-size:15px;color:#ffffffd6;line-height:1;white-space:nowrap}
.hero__rating-txt b{font-family:var(--font-display);font-size:19px;font-weight:800;color:#fff;
  letter-spacing:.01em;margin-right:2px}
@media(max-width:520px){
  .hero__rating{flex-wrap:wrap;gap:9px 10px;padding:12px 14px}
  .hero__rating-txt{font-size:14px;white-space:normal}
}

/* info bar: the first cell had its left padding zeroed, so column one read wider
   than the other two. even padding, centred content, equal thirds. */
.info__cell{padding:24px 30px;text-align:center}
.info__cell:first-child{border-left:0;padding-left:30px}
@media(max-width:800px){.info__cell,.info__cell:first-child{padding:16px 0;text-align:left}}

/* ============================================================ v7.9 painted wall sign */

/* the strip rides up over the hero: the hero is sticky inside .herolock, the
   wall section is opaque and stacked above it. */
.herolock{position:relative}
@media(min-width:901px) and (prefers-reduced-motion:no-preference){
  .herolock .hero{position:sticky;top:0;z-index:0}
  .herolock .ghost{position:relative;z-index:3;box-shadow:0 -20px 44px #00000066}
}

.ghost{position:relative;isolation:isolate;overflow:hidden;background:#2a1512}
.ghost__wall{position:absolute;inset:-16% 0;z-index:-2;
  background:url(/assets/logos/brick-tile.470f8185.png) repeat;
  background-size:278px auto}
.ghost__scrim{position:absolute;inset:0;z-index:-1;
  background:linear-gradient(101deg,#0d1c3fee 0%,#0d1c3fd6 46%,#12203fc4 100%)}
.ghost__inner{padding-block:64px 68px}

/* the painted panel */
.ghost__paint{--paint:#efe6d2;
  position:relative;display:grid;grid-template-columns:1.15fr 1fr;gap:40px 56px;
  align-items:center;padding:38px 44px;
  border:3px solid var(--paint);
  -webkit-mask-image:url(/assets/logos/paint-wear.3f820ee4.png);mask-image:url(/assets/logos/paint-wear.3f820ee4.png);
  -webkit-mask-size:278px auto;mask-size:278px auto;
  -webkit-mask-repeat:repeat;mask-repeat:repeat}
.ghost__paint:before{content:"";position:absolute;inset:7px;border:1px solid var(--paint);
  opacity:.7;pointer-events:none}

.ghost__kicker{font-family:var(--font-display);font-size:14px;font-weight:700;text-transform:uppercase;
  letter-spacing:.3em;color:var(--paint);opacity:.78;margin-bottom:10px}
.ghost__phone{display:block;font-family:var(--font-display);font-size:clamp(40px,5.4vw,74px);
  font-weight:800;line-height:.94;letter-spacing:-.005em;color:var(--paint);text-decoration:none;
  text-shadow:0 2px 0 #00000038}
.ghost__phone:hover{color:#fff}

.ghost__meta{display:grid;grid-template-columns:repeat(2,1fr);gap:34px}
.ghost__item{border-left:3px solid var(--brand-red);padding-left:16px}
.ghost__item span{display:block;font-family:var(--font-display);font-size:12px;font-weight:700;
  text-transform:uppercase;letter-spacing:.22em;color:var(--paint);opacity:.68;margin-bottom:7px}
.ghost__item b{display:block;font-family:var(--font-display);font-size:20px;font-weight:700;
  text-transform:uppercase;letter-spacing:.02em;line-height:1.15;color:var(--paint)}
.ghost__item em{display:block;font-style:normal;font-size:14px;line-height:1.4;margin-top:5px;
  color:var(--paint);opacity:.66}

@media(max-width:1040px){
  .ghost__paint{grid-template-columns:1fr;gap:30px}
}
@media(max-width:640px){
  .ghost__inner{padding-block:44px}
  .ghost__paint{padding:26px 22px}
  .ghost__meta{grid-template-columns:1fr;gap:22px}
}

/* v7.9.1 wall tuning: real brick scale, warm scrim, painted panel weight */
.ghost__wall{background-size:184px auto}
.ghost__scrim{background:
  linear-gradient(101deg,#0e1a33d9 0%,#140f0fbf 42%,#170f0dad 100%),
  radial-gradient(120% 140% at 18% 0%,#0000 30%,#0a0705a6 100%)}
.ghost__inner{padding-block:56px 60px}

.ghost__paint{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:34px 56px;padding:34px 42px;border-width:5px}
.ghost__paint:before{inset:9px;border-width:2px;opacity:.62}
.ghost__phone{font-size:clamp(42px,5.8vw,80px)}
.ghost__kicker{letter-spacing:.34em;opacity:.72;margin-bottom:8px}
.ghost__meta{display:flex;gap:46px;grid-template-columns:none}
.ghost__item{border-left-width:4px;border-left-color:#e0402f;padding-left:18px}
.ghost__item b{font-size:21px}
@media(max-width:1040px){.ghost__paint{gap:26px 40px}}
@media(max-width:640px){.ghost__meta{flex-direction:column;gap:20px}}

/* ============================================================ v7.10 navy wall, even panel */
.ghost{background:#0d1a33}
.ghost__wall{background-size:190px auto}
.ghost__scrim{background:
  linear-gradient(101deg,#08122bbf 0%,#08122b8f 48%,#08122bb5 100%),
  radial-gradient(130% 150% at 20% -10%,#0000 34%,#050a17b3 100%)}
.ghost__inner{padding-block:52px 56px}

.ghost__paint{--paint:#efe6d2;
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;align-items:center;
  padding:34px 18px;border:4px solid var(--paint)}
.ghost__paint:before{inset:8px;border-width:1px;opacity:.55}

.ghost__item{text-align:center;padding:8px 28px;border-left:1px solid #efe6d259}
.ghost__item:first-child{border-left:0}
.ghost__line{display:inline-block;font-family:var(--font-display);
  font-size:clamp(22px,2.5vw,35px);font-weight:800;line-height:1.1;letter-spacing:.01em;
  text-transform:uppercase;color:var(--paint);text-decoration:none}
.ghost__line--tel{position:relative}
.ghost__line--tel:after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:3px;
  background:var(--brand-red);transform:scaleX(0);transform-origin:left;
  transition:transform .25s ease-out}
.ghost__line--tel:hover{color:#fff}
.ghost__line--tel:hover:after{transform:scaleX(1)}
.ghost__item em{display:block;font-style:normal;font-size:14.5px;line-height:1.4;margin-top:7px;
  color:var(--paint);opacity:.62}

@media(max-width:900px){
  .ghost__inner{padding-block:40px 44px}
  .ghost__paint{grid-template-columns:1fr;padding:24px 18px}
  .ghost__item{border-left:0;padding:16px 8px;border-top:1px solid #efe6d259}
  .ghost__item:first-child{border-top:0}
}

/* v7.10.1 the stale `.ghost__item span` rule was out-specifying .ghost__line */
.ghost__item .ghost__line{display:inline-block;font-family:var(--font-display);
  font-size:clamp(22px,2.4vw,34px);font-weight:800;line-height:1.1;letter-spacing:.01em;
  text-transform:uppercase;color:var(--paint);opacity:1;margin-bottom:0;text-decoration:none}
.ghost__item .ghost__line--tel{font-weight:800}
.ghost__paint{padding:28px 18px}
.ghost__item{padding:4px 26px}
.ghost__item em{font-size:15px;margin-top:9px;opacity:.66}
/* v7.10.2 line up the three headlines on one baseline */
.ghost__paint{align-items:stretch;padding:26px 18px}
.ghost__item{display:flex;flex-direction:column;justify-content:flex-start}
@media(max-width:900px){.ghost__item{justify-content:center}}

/* ============================================================ v7.11 */
/* sub-lines dropped: every entry is a single line now */
.ghost__item em{display:none}
.ghost__paint{padding:22px 18px}
.ghost__item{justify-content:center;padding:6px 26px}

/* pointer spotlight: a soft rake of light across the brick that follows the cursor */
.ghost__glow{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0;
  transition:opacity .45s ease-out;
  background:radial-gradient(460px 460px at var(--gx,50%) var(--gy,50%),
    #7fa4e03d 0%, #7fa4e01a 38%, #0000 72%)}
.ghost.is-lit .ghost__glow{opacity:1}
@media(hover:none),(prefers-reduced-motion:reduce){.ghost__glow{display:none}}
.ghost__glow{background:radial-gradient(430px 430px at var(--gx,50%) var(--gy,50%),
  #93b3ea5c 0%, #7fa4e026 40%, #0000 72%)}

/* ============================================================ v7.12 signwriter reveal */
.ghost__glow{display:none}

/* the CTA line under the number */
.ghost__cta{display:block;margin-top:10px;font-family:var(--font-display);font-size:13px;
  font-weight:700;text-transform:uppercase;letter-spacing:.26em;color:var(--brand-red);
  filter:brightness(1.22)}

/* the panel border is drawn on rather than just appearing */
.ghost__paint{border:0;position:relative}
.ghost__paint:before{display:none}
.ghost__frame{position:absolute;inset:0;pointer-events:none}
.ghost__frame i{position:absolute;background:var(--paint);display:block}
.ghost__frame .f-t{top:0;left:0;width:100%;height:4px;transform-origin:left;transform:scaleX(0)}
.ghost__frame .f-r{top:0;right:0;width:4px;height:100%;transform-origin:top;transform:scaleY(0)}
.ghost__frame .f-b{bottom:0;right:0;width:100%;height:4px;transform-origin:right;transform:scaleX(0)}
.ghost__frame .f-l{bottom:0;left:0;width:4px;height:100%;transform-origin:bottom;transform:scaleY(0)}
.ghost__frame .f-in{inset:9px;width:auto;height:auto;background:none;
  border:1px solid var(--paint);opacity:0}

/* entries get wiped on left to right, like a roller */
.ghost__item{clip-path:inset(0 100% 0 0)}

@media(prefers-reduced-motion:no-preference){
  .ghost__paint[data-reveal]{opacity:1;transform:none;transition:none}
  .ghost__frame i{transition:transform .38s cubic-bezier(.4,0,.2,1)}
  .ghost__paint.is-in .f-t{transform:scaleX(1)}
  .ghost__paint.is-in .f-r{transform:scaleY(1);transition-delay:.3s}
  .ghost__paint.is-in .f-b{transform:scaleX(1);transition-delay:.6s}
  .ghost__paint.is-in .f-l{transform:scaleY(1);transition-delay:.9s}
  .ghost__frame .f-in{transition:opacity .5s ease-out .95s}
  .ghost__paint.is-in .f-in{opacity:.5}
  .ghost__item{transition:clip-path .62s cubic-bezier(.3,.8,.3,1)}
  .ghost__paint.is-in .ghost__item{clip-path:inset(0 0 0 0)}
  .ghost__paint.is-in .ghost__item:nth-child(2){transition-delay:.34s}
  .ghost__paint.is-in .ghost__item:nth-child(3){transition-delay:.52s}
  .ghost__paint.is-in .ghost__item:nth-child(4){transition-delay:.70s}
}
@media(prefers-reduced-motion:reduce){
  .ghost__frame i{transform:none}
  .ghost__frame .f-in{opacity:.5}
  .ghost__item{clip-path:none}
}
.ghost__cta{color:#ff5a4a;filter:none;font-size:13.5px;letter-spacing:.24em;margin-top:11px}

/* ============================================================ v7.13 sub-lines back */
.ghost__sub{display:block;margin-top:11px;font-family:var(--font-display);font-size:13.5px;
  font-weight:700;text-transform:uppercase;letter-spacing:.24em;line-height:1.3;
  color:var(--paint);opacity:.6}
.ghost__paint{padding:26px 18px}

/* v7.14 perf: the large blurred shadow under the wall was repainting over the
   sticky hero every frame. A hard rule reads the same and costs nothing. */
@media(min-width:901px) and (prefers-reduced-motion:no-preference){
  .herolock .ghost{box-shadow:none;border-top:3px solid #00000059}
}

/* ============================================================ v7.15 scroll-linked motion
   Ported from the earlier Bedford build: reveals resolve continuously across a
   window of travel rather than snapping once on an intersection. */
@property --p { syntax: '<number>'; inherits: true; initial-value: 1; }

.split--even{grid-template-columns:1fr 1fr}

/* without JS, or under reduced motion, --p stays 1 and everything is composed */
.js [data-reveal],.js [data-stagger]>*{--p:0}
[data-reveal],[data-stagger]>*,
[data-reveal].is-in,[data-stagger].is-in>*{
  opacity:var(--p);
  transform:translate3d(0,calc(10px * (1 - var(--p))),0);
  transition:none;transition-delay:0s!important;will-change:transform,opacity}
[data-reveal=left],[data-reveal=right],[data-reveal=zoom]{
  transform:translate3d(0,calc(10px * (1 - var(--p))),0)}

/* photo reveal: a curtain slides off the picture while it settles from a slight
   scale. The photo itself is never clipped. */
.shot{position:relative;overflow:hidden;--curtain:var(--paper)}
.shot img,.shot video{transform:scale(calc(1 - .09 * (1 - var(--p,1))));
  will-change:transform;transition:none}
.shot:after{content:"";position:absolute;inset:0;z-index:3;background:var(--curtain);
  transform:translateX(calc(-100% * var(--p,1)));will-change:transform;pointer-events:none}
.js .shot{--p:0}
.bg-paper2 .shot{--curtain:var(--paper-2)}
.bg-dark .shot,.band .shot,.ghost .shot{--curtain:var(--section-dark)}
.shot video{display:block;width:100%;height:100%;object-fit:cover;aspect-ratio:16 / 10}

/* header retracts on the way down and comes back on the way up */
.hdr{transition:transform .38s cubic-bezier(.2,.7,.3,1),box-shadow var(--t)}
.hdr.is-away{transform:translateY(-104%)}

@media(prefers-reduced-motion:reduce){
  [data-reveal],[data-stagger]>*,.shot{--p:1!important;transform:none!important;opacity:1!important}
  .shot:after{display:none}
  .shot img,.shot video{transform:none!important}
  .hdr.is-away{transform:none}
}

/* v7.15.1 the columns were already 570/570; the media just was not filling its
   half, so it read as a small picture floating in a big column. */
.split--even{align-items:stretch}
.split--even>*{min-width:0}
.split--even .shot{height:100%;display:block}
.split--even .shot video,.split--even .shot img{
  height:100%;width:100%;aspect-ratio:auto;object-fit:cover;object-position:58% 50%;
  min-height:330px}

/* ============================================================ v7.17 full bleed split
   "50/50" means half the viewport, not half the 1240px container. The media runs
   to the screen edge; the copy still lines up with the container's left edge. */
.bleedsplit{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;
  position:relative;overflow:hidden}
.bleedsplit__text{display:flex;align-items:center;
  padding-block:clamp(48px,6vw,92px);
  padding-left:max(var(--gutter), calc(50vw - var(--w-main) / 2));
  padding-right:clamp(28px,4vw,64px)}
.bleedsplit__inner{width:100%}
.bleedsplit__inner .measure{max-width:52ch}
.bleedsplit__media{position:relative;min-height:100%;background:var(--ink)}
.bleedsplit__media video,.bleedsplit__media img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:56% 50%;aspect-ratio:auto}
.bleedsplit .shot:after{z-index:3}
@media(max-width:900px){
  .bleedsplit{grid-template-columns:1fr}
  .bleedsplit__text{padding-inline:var(--gutter);padding-block:44px 34px;order:2}
  .bleedsplit__media{order:1;min-height:0;height:56vw;max-height:380px}
}
.bleedsplit__inner .measure{max-width:58ch}
.bleedsplit__text{padding-right:clamp(32px,3.4vw,56px)}

/* ============================================================ v7.18 */

/* Seams were gradient based, and a corner-keyword gradient put the wrong colour
   along the seam's own bottom edge, which read as a second cutout. Clip-path is
   exact: --seam-a is the section above, --seam-b the section below. */
.seam{position:relative;height:var(--seam-h);width:100%;display:block;flex:none;
  background:var(--seam-a,var(--paper));overflow:hidden}
.seam:after{content:"";position:absolute;inset:0;background:var(--seam-b,var(--paper-2))}
.seam--rise:after{clip-path:polygon(0 100%,100% 0,100% 100%)}
.seam--fall:after{clip-path:polygon(0 0,100% 100%,0 100%)}

/* accreditation strip: the marks were undersized next to the new sign panel */
.markstrip__inner{padding-block:34px}
.markstrip__inner--center .marks img{height:104px;width:90%;max-width:250px}
@media(max-width:820px){.markstrip__inner--center .marks img{height:70px}}
@media(max-width:480px){.markstrip__inner--center .marks img{height:60px}}

/* a size up for the marks inside the proof section */
.marks--lg{gap:26px 42px}
.marks--lg .mark--aaa{height:86px}
.marks--lg .mark--bbb{height:88px}
.marks--lg .mark--ase{height:90px}
.marks--lg .mark--echeck{height:58px}
@media(max-width:700px){
  .marks--lg .mark--aaa{height:56px}.marks--lg .mark--bbb{height:58px}
  .marks--lg .mark--ase{height:60px}.marks--lg .mark--echeck{height:38px}
}

/* reversed bleed split: media left, copy right, still aligned to the container */
.bleedsplit--rev .bleedsplit__text{
  padding-left:clamp(32px,3.4vw,56px);
  padding-right:max(var(--gutter), calc(50vw - var(--w-main) / 2))}
.bleedsplit--rev .bleedsplit__media img{object-position:50% 60%}
@media(max-width:900px){
  .bleedsplit--rev .bleedsplit__text{padding-inline:var(--gutter)}
}
/* keep the BBB certificate in frame when the photo is cropped to a viewport half */
.bleedsplit--rev .bleedsplit__media img{object-position:32% 55%}

/* ============================================================ v7.19 */
/* the contact aside now carries the diagnostics copy, so it needs room to breathe
   rather than the tight lockup the big numeral used */
.contact__aside{display:flex;flex-direction:column;justify-content:center}
.contact__aside .h2{font-size:var(--fs-h2)}
.contact__aside .measure{max-width:46ch}
.contact__aside img{opacity:.14}

/* ============================================================ v7.20 header */
.util{display:none}

.hdr__inner{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  gap:20px;min-height:94px}
.hdr__logo{justify-self:start}
.hdr__nav{justify-self:center;margin-left:0;gap:4px}
.hdr__cta{justify-self:end;margin-left:0;font-size:17px;padding:14px 26px}
.logo-plate[data-astro-cid-3ef6ksr2] svg{height:62px}

/* nav sized against the body copy rather than shrunk into a utility strip */
.navitem>a{font-size:17px;letter-spacing:.055em;padding:35px 15px}
.navitem__caret{font-size:10px}

@media(max-width:1300px){
  .navitem>a{font-size:15.5px;padding-inline:12px}
  .logo-plate[data-astro-cid-3ef6ksr2] svg{height:54px}
  .hdr__inner{min-height:86px}
  .hdr__cta{font-size:15.5px;padding:12px 20px}
}
@media(max-width:1140px){
  .hdr__nav,.hdr__cta{display:none}
  .hdr__burger{display:block}
  .hdr__inner{display:flex;justify-content:space-between;min-height:76px}
  .phonebar{display:block}
  .logo-plate[data-astro-cid-3ef6ksr2] svg{height:46px}
}

/* accreditation strip: use the width that is actually there */
.markstrip__inner{padding-block:42px}
.markstrip__inner--center .marks{max-width:1240px}
.markstrip__inner--center .marks img{height:126px;width:92%;max-width:290px}
@media(max-width:1100px){.markstrip__inner--center .marks img{height:96px}}
@media(max-width:820px){.markstrip__inner--center .marks img{height:70px}}
@media(max-width:480px){.markstrip__inner--center .marks img{height:60px}}

/* ============================================================ v7.21 buttons
   Rebuilt around the one move the reference builds all share: a solid fill that
   wipes in from the left rather than a colour swap. Ported from the earlier
   Bedford build's .btn (translateX(-101%) -> 0 on a ::before), then given the
   rounded shape and an arrow puck so it does not read as the same flat block. */
.btn{
  position:relative;isolation:isolate;overflow:hidden;
  border-radius:999px;
  padding:15px 24px 15px 30px;gap:14px;
  font-size:15px;letter-spacing:.09em;
  box-shadow:none;
  transition:color .28s ease-out,border-color .28s ease-out,transform .18s ease-out}
.btn:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;
  background:var(--btn-wipe,var(--brand-blue-dk));
  transform:translateX(-101%);
  transition:transform .38s cubic-bezier(.2,.7,.3,1)}
.btn:hover:before,.btn:focus-visible:before{transform:translateX(0)}
.btn:active{transform:translateY(1px)}

/* the arrow rides in a puck that nudges on hover */
.btn__arrow{display:inline-grid;place-items:center;flex:none;
  width:26px;height:26px;border-radius:50%;font-size:13px;line-height:1;
  background:var(--btn-puck,#ffffff2e);
  transition:transform .32s cubic-bezier(.2,.7,.3,1),background .28s ease-out}
.btn:hover .btn__arrow{transform:translateX(4px)}
.btn--lg{font-size:16.5px;padding:18px 28px 18px 34px}
.btn--lg .btn__arrow{width:30px;height:30px;font-size:14px}
.btn--block{width:100%;justify-content:center}

/* variants: each one wipes to a different ground so the page keeps its contrast */
.btn--primary{--btn-wipe:var(--brand-blue-dk);--btn-puck:#ffffff33;
  background:var(--brand-red);border-color:var(--brand-red);color:#fff}
.btn--primary:hover{background:var(--brand-red);border-color:var(--brand-blue-dk);color:#fff}
.btn--primary:hover .btn__arrow{background:#ffffff45}

.btn--dark{--btn-wipe:var(--brand-red);--btn-puck:#ffffff2e;
  background:var(--section-dark);border-color:var(--section-dark);color:#fff}
.btn--dark:hover{border-color:var(--brand-red);color:#fff}

.btn--ghost{--btn-wipe:var(--section-dark);--btn-puck:#0000001a;
  background:transparent;border-color:var(--border-str);color:var(--ink)}
.btn--ghost:hover{border-color:var(--section-dark);color:#fff}
.btn--ghost:hover .btn__arrow{background:#ffffff2e}

.btn--ghost-rev{--btn-wipe:#fff;--btn-puck:#ffffff26;
  background:transparent;border-color:#ffffff8c;color:#fff}
.btn--ghost-rev:hover{border-color:#fff;color:var(--section-dark)}
.btn--ghost-rev:hover .btn__arrow{background:#0000001a}

/* the header CTA is a phone number, so it keeps the pill but loses the puck */
.hdr__cta{border-radius:999px;padding:14px 28px}

/* city chips pick up the same shape and wipe */
.chip{position:relative;isolation:isolate;overflow:hidden;border-radius:999px;
  border-width:2px;transition:color .28s ease-out,border-color .28s ease-out}
.chip:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;
  background:var(--brand-red);transform:translateX(-101%);
  transition:transform .38s cubic-bezier(.2,.7,.3,1)}
.chip:hover{background:var(--white);border-color:var(--brand-red);color:#fff}
.chip:hover:before{transform:translateX(0)}

.phonebar a{border-radius:0}

@media(prefers-reduced-motion:reduce){
  .btn:before,.chip:before{transition:none}
  .btn__arrow{transition:none}
}

/* ============================================================ v7.22 footer marks band */
.ftr__marks{display:block;background:#fff;border-top:0;padding:0;
  margin-inline:calc(50% - 50vw)}
.ftr__marks .wrap-wide{padding-block:38px}
.marks--band{display:grid;grid-template-columns:repeat(5,1fr);align-items:center;
  justify-items:center;gap:0;max-width:1240px;margin-inline:auto}
.marks--band img{height:116px;width:92%;max-width:280px;object-fit:contain}
@media(max-width:1100px){.marks--band img{height:90px}}
@media(max-width:820px){
  .marks--band{grid-template-columns:repeat(3,1fr);gap:26px 0}
  .marks--band img{height:66px}
  .ftr__marks .wrap-wide{padding-block:28px}
}
@media(max-width:480px){
  .marks--band{grid-template-columns:repeat(2,1fr)}
  .marks--band img{height:58px}
}
.ftr__bottom{border-top:1px solid var(--border-rev);justify-content:space-between}
/* the v7.6 safety cap (.marks img{max-height:84px}) was silently clamping both
   the hero strip and the footer band, so the height bumps never took effect */
.markstrip__inner--center .marks img,.marks--band img{max-height:none}
/* the per-mark footer heights from v7.6 out-specify the band rule; retire them */
.ftr__marks .marks--band img{height:116px;max-height:none;width:92%;max-width:280px}
@media(max-width:1100px){.ftr__marks .marks--band img{height:90px}}
@media(max-width:820px){.ftr__marks .marks--band img{height:66px}}
@media(max-width:480px){.ftr__marks .marks--band img{height:58px}}

/* ============================================================ v8.1 merged CTA strip */
.ctastrip__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:24px 44px;padding-block:34px}
.ctastrip__addr{display:inline-flex;align-items:center;gap:10px;margin-top:12px;
  font-family:var(--font-ui);font-size:16.5px;font-weight:600;letter-spacing:.015em;
  color:#ffffffe8}
.ctastrip__addr svg{width:19px;height:19px;flex:none;fill:currentColor;opacity:.8}
.ctastrip__actions{display:flex;gap:12px;flex-wrap:wrap}
@media(max-width:640px){
  .ctastrip__inner{padding-block:28px}
  .ctastrip__actions{width:100%}
  .ctastrip__actions .btn{flex:1 1 auto;justify-content:center}
}

/* ============================================================ v8.2 service pages */
/* numbered timeline replaces the two column checklist */
.tline{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:26px 22px;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));position:relative}
.tline__step{position:relative;padding-top:44px}
.tline__step:before{content:"";position:absolute;top:15px;left:0;right:-22px;height:2px;
  background:#ffffff2e}
.tline__step:last-child:before{right:0}
.tline__n{position:absolute;top:0;left:0;display:grid;place-items:center;
  width:32px;height:32px;border-radius:50%;background:var(--brand-red);color:#fff;
  font-family:var(--font-ui);font-size:12.5px;font-weight:700;letter-spacing:.04em;
  box-shadow:0 0 0 5px var(--section-dark)}
.tline__t{display:block;font-size:15.5px;line-height:1.45;color:#ffffffdb;
  font-family:var(--font-body)}
@media(max-width:700px){
  .tline{grid-template-columns:1fr;gap:0}
  .tline__step{padding:0 0 22px 46px}
  .tline__step:before{top:0;bottom:-2px;left:15px;right:auto;width:2px;height:auto}
  .tline__step:last-child:before{bottom:auto;height:0}
  .tline__n{top:0}
}
/* the service page intro strip is a light bleed split */
.bleedsplit.bg-paper .bleedsplit__media{background:var(--paper-2)}
.bleedsplit__media img{object-position:50% 50%}
/* the bleed split copy has to land on the same left edge as .wrap content,
   which is the container edge PLUS the gutter, not the container edge */
.bleedsplit__text{padding-left:max(var(--gutter), calc(50vw - var(--w-main) / 2 + var(--gutter)))}
.bleedsplit--rev .bleedsplit__text{padding-left:clamp(32px,3.4vw,56px);
  padding-right:max(var(--gutter), calc(50vw - var(--w-main) / 2 + var(--gutter)))}
/* the connecting rule should stop at its own cell, not trail into the gutter,
   and the timeline gets the full band width rather than the prose measure */
.band__inner:has(.tline){max-width:none}
.tline__step:before{right:0}
.tline{gap:30px 26px}

/* ============================================================ v8.3 google review wall */
.gwall{background:#fff;border-bottom:1px solid var(--border);padding-block:0 44px;overflow:hidden}
.gwall[hidden]{display:none}
.gwall__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
  gap:10px 28px;padding-block:6px 26px}
.gwall__lede{font-size:15.5px;color:var(--muted)}
.gwall__all{font-family:var(--font-ui);font-size:14px;font-weight:600;letter-spacing:.05em;
  text-transform:uppercase;color:var(--brand-red-ink);text-decoration:none;
  border-bottom:2px solid transparent;transition:border-color var(--t)}
.gwall__all:hover{border-bottom-color:var(--brand-red)}

.gwall__rail{position:relative;
  -webkit-mask-image:linear-gradient(90deg,#0000,#000 5%,#000 95%,#0000);
  mask-image:linear-gradient(90deg,#0000,#000 5%,#000 95%,#0000)}
.gwall__track{display:flex;gap:18px;list-style:none;margin:0;padding:2px 0;width:max-content}
@media(prefers-reduced-motion:no-preference){
  .gwall__track{animation:gwallScroll 64s linear infinite}
  .gwall__rail:hover .gwall__track,.gwall__rail:focus-within .gwall__track{animation-play-state:paused}
}
@keyframes gwallScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){
  .gwall__rail{overflow-x:auto;-webkit-mask-image:none;mask-image:none}
}

.gcard{flex:0 0 330px;background:var(--paper);border:1px solid var(--border);
  border-top:3px solid var(--brand-red);padding:22px 22px 20px;display:flex;flex-direction:column}
.gcard__top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.gcard__stars{display:flex;gap:2px}
.gcard__stars svg{width:15px;height:15px;fill:#f5b400}
.gcard__g{width:18px;height:18px;flex:none;opacity:.9}
.gcard__text{font-size:15.5px;line-height:1.5;color:var(--ink-2);margin:0 0 16px;
  display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.gcard__by{margin-top:auto;display:flex;align-items:center;gap:10px}
.gcard__av{width:30px;height:30px;border-radius:50%;object-fit:cover;flex:none;
  background:var(--border)}
.gcard__name{font-family:var(--font-ui);font-size:14.5px;font-weight:600;color:var(--ink);
  line-height:1.2}
.gcard__when{font-family:var(--font-mono);font-size:11px;color:var(--muted);letter-spacing:.04em}
@media(max-width:640px){.gcard{flex-basis:280px}}

/* ============================================================ v8.4 timeline fix
   One row, always. The chip was full brightness brand red with a glow ring,
   which read hotter than anything else on the page. */
.tline{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);grid-template-columns:none;
  gap:0 26px;margin-top:30px}
.tline__step{padding-top:40px}
.tline__n{width:28px;height:28px;font-size:11.5px;background:var(--brand-red-dk);
  box-shadow:none;border:1px solid #ffffff21}
.tline__step:before{top:13px;background:#ffffff26}
.tline__t{font-size:14.5px;line-height:1.45;color:#ffffffd1;padding-right:4px}

@media(max-width:1180px) and (min-width:701px){
  .tline{grid-auto-columns:minmax(180px,1fr);overflow-x:auto;overflow-y:hidden;
    padding-bottom:12px;scroll-snap-type:x proximity}
  .tline__step{scroll-snap-align:start}
}
@media(max-width:700px){
  .tline{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:1fr;
    gap:0;overflow:visible}
}

/* ============================================================ v8.5 review cards */
.gwall{padding-block:0 46px}
.gcard{flex:0 0 352px}
.gcard__av{display:grid;place-items:center;color:#fff;font-family:var(--font-ui);
  font-size:14px;font-weight:600;line-height:1}
.gcard__tag{display:inline-block;margin-left:7px;font-family:var(--font-mono);font-size:10px;
  font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--border);padding:1px 5px;vertical-align:1px}
.gcard__text{-webkit-line-clamp:7;min-height:0}

/* ============================================================ v8.6 footer profiles */
.ftr__social{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:22px}
.ftr__social-link{display:inline-grid;place-items:center;width:42px;height:42px;
  border:1px solid var(--border-rev);background:#ffffff0a;
  transition:border-color var(--t),background var(--t),transform var(--t)}
.ftr__social-link:hover{border-color:var(--brand-red);background:#ee31241f;transform:translateY(-2px)}
.ftr__social-link img{width:21px;height:21px;object-fit:contain;opacity:.86;filter:none}
.ftr__social-link:hover img{opacity:1}
/* the AAA mark is a wide oval rather than a square glyph */
.ftr__social-link--aaa img{width:27px;height:auto}
.ftr__social-link--yelp img{width:19px}
@media(max-width:620px){.ftr__social{gap:10px}.ftr__social-link{width:38px;height:38px}}
.ftr__social-link{width:44px;height:44px}
.ftr__social-link img{width:23px;height:23px}
.ftr__social-link--aaa img{width:33px}
.ftr__social-link--yelp img{width:20px}
.ftr__social-link--bbb img{width:20px}

/* ============================================================ v8.7 call widget */
.chatw{position:fixed;right:20px;bottom:20px;z-index:80;display:flex;flex-direction:column;
  align-items:flex-end;gap:14px;font-family:var(--font-body)}
.chatw__fab{position:relative;width:66px;height:66px;border-radius:50%;border:0;padding:0;
  background:#fff;cursor:pointer;box-shadow:0 10px 26px #0a1a3c4d,0 0 0 3px #ee312466;
  transition:transform .22s cubic-bezier(.2,.7,.3,1),box-shadow .22s}
.chatw__fab:hover{transform:translateY(-3px) scale(1.03);box-shadow:0 14px 32px #0a1a3c66,0 0 0 4px #ee3124}
.chatw__fab img{width:100%;height:100%;border-radius:50%;display:block}
.chatw__ping{position:absolute;inset:-3px;border-radius:50%;border:2px solid var(--brand-red);
  opacity:0;pointer-events:none}
@media(prefers-reduced-motion:no-preference){
  .chatw__ping{animation:chatwPing 3.4s ease-out infinite}
}
@keyframes chatwPing{0%{transform:scale(1);opacity:.75}70%{transform:scale(1.35);opacity:0}100%{opacity:0}}
.chatw[data-open=true] .chatw__ping{animation:none}

.chatw__panel{width:min(92vw,346px);background:#fff;border:1px solid var(--border);
  border-top:4px solid var(--brand-red);box-shadow:0 22px 54px #0a1a3c40;
  transform-origin:100% 100%}
.chatw__panel[hidden]{display:none}
@media(prefers-reduced-motion:no-preference){
  .chatw__panel{animation:chatwIn .26s cubic-bezier(.2,.9,.3,1)}
}
@keyframes chatwIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}

.chatw__head{display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;border-bottom:1px solid var(--border);background:var(--paper)}
.chatw__title{font-family:var(--font-display);font-size:19px;line-height:1;margin:0}
.chatw__x{border:0;background:none;font-size:26px;line-height:1;cursor:pointer;color:var(--muted);
  padding:0 2px}
.chatw__x:hover{color:var(--ink)}
.chatw__body{padding:16px}

.chatw__call{display:block;text-decoration:none;background:var(--section-dark);color:#fff;
  padding:13px 16px;transition:background var(--t)}
.chatw__call:hover{background:var(--brand-red)}
.chatw__call-k{display:block;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;opacity:.7}
.chatw__call-v{display:block;font-family:var(--font-display);font-size:23px;line-height:1.15;margin-top:3px}
.chatw__call-n{display:block;font-size:12.5px;opacity:.72;margin-top:3px}

.chatw__or{position:relative;text-align:center;margin:16px 0 14px}
.chatw__or:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--border)}
.chatw__or span{position:relative;background:#fff;padding:0 10px;font-family:var(--font-mono);
  font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}

.chatw__f{display:block;margin-bottom:11px}
.chatw__f>span{display:block;font-family:var(--font-ui);font-size:12.5px;font-weight:600;
  letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.chatw__f>span em{font-style:normal;text-transform:none;letter-spacing:0;opacity:.75}
.chatw__f input,.chatw__f textarea{width:100%;font:inherit;font-size:15.5px;color:var(--ink);
  padding:9px 11px;border:1px solid var(--border-str);background:var(--paper);border-radius:0}
.chatw__f input:focus,.chatw__f textarea:focus{outline:2px solid var(--brand-red);outline-offset:1px}
.chatw__submit{width:100%;justify-content:center;margin-top:4px}
.chatw__note{font-size:12px;line-height:1.4;color:var(--muted);margin-top:10px}
.chatw__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.chatw__done{font-size:15px;line-height:1.5;color:var(--ink-2)}

@media(max-width:620px){
  .chatw{right:14px;bottom:14px}
  .chatw__fab{width:58px;height:58px}
}
/* keep the widget clear of the sticky mobile call bar */
@media(max-width:1140px){.chatw{bottom:76px}}

/* v8.8 footer profile marks: no chrome, just the icons on the navy */
.ftr__social{gap:22px;margin-top:24px}
.ftr__social-link{width:auto;height:auto;border:0;background:none;padding:2px;
  transition:transform var(--t),opacity var(--t)}
.ftr__social-link:hover{background:none;border:0;transform:translateY(-2px)}
.ftr__social-link img{width:25px;height:25px;opacity:.8;transition:opacity var(--t)}
.ftr__social-link:hover img{opacity:1}
.ftr__social-link--aaa img{width:38px;height:auto}
.ftr__social-link--yelp img{width:22px}
.ftr__social-link--bbb img{width:22px}
@media(max-width:620px){.ftr__social{gap:18px}.ftr__social-link img{width:23px;height:23px}}
/* the original `.ftr__social a` rule out-specifies `.ftr__social-link`; kill it there */
.ftr__social a{display:inline-flex;width:auto;height:auto;border:0;background:none;padding:2px}
.ftr__social a:hover{border:0;background:none}
.ftr__social a img{width:25px;height:25px;filter:none;opacity:.8}
.ftr__social a:hover img{opacity:1}
.ftr__social a.ftr__social-link--aaa img{width:38px;height:auto}
.ftr__social a.ftr__social-link--yelp img{width:22px;height:22px}
.ftr__social a.ftr__social-link--bbb img{width:22px;height:22px}
@media(max-width:620px){.ftr__social a img{width:23px;height:23px}}

/* ============================================================ v8.9 service area pages */
.citygrid{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:12px;
  grid-template-columns:repeat(auto-fill,minmax(238px,1fr))}
.cityc{position:relative;display:grid;grid-template-columns:auto 1fr auto;
  align-items:center;gap:4px 12px;padding:16px 18px;text-decoration:none;
  background:var(--white);border:1px solid var(--border);border-left:3px solid var(--border-str);
  transition:border-color var(--t),transform var(--t),box-shadow var(--t)}
.cityc:hover{border-left-color:var(--brand-red);transform:translateY(-2px);
  box-shadow:0 10px 22px #0a1a3c14}
.cityc__pin{grid-row:1 / span 2;width:19px;height:19px;fill:var(--brand-red);opacity:.85}
.cityc__name{font-family:var(--font-ui);font-size:16.5px;font-weight:600;color:var(--ink);
  line-height:1.2}
.cityc__via{grid-column:2;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);margin-top:3px}
.cityc__go{grid-row:1 / span 2;font-size:17px;color:var(--border-str);
  transition:transform var(--t),color var(--t)}
.cityc:hover .cityc__go{color:var(--brand-red);transform:translateX(4px)}
@media(max-width:520px){.citygrid{grid-template-columns:1fr}}
/* v8.9.1 explicit grid placement: auto-placement was dropping the name in the
   arrow's column and the arrow next to the pin */
.cityc{grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:auto auto;
  align-items:center;gap:2px 12px;padding:15px 16px}
.cityc__pin{grid-column:1;grid-row:1 / span 2;justify-self:center}
.cityc__name{grid-column:2;grid-row:1;justify-self:start;text-align:left}
.cityc__via{grid-column:2;grid-row:2;justify-self:start;text-align:left;margin-top:2px}
.cityc__go{grid-column:3;grid-row:1 / span 2;justify-self:end}

/* ============================================================ v9.0 pinned reveal
   Measured off the reference recording: the photo does not move at all while the
   content scrolls over it (0px drift across the whole scroll), so this is a pinned
   image reveal rather than parallax. Built with position:sticky rather than
   background-attachment:fixed, which is broken on iOS Safari and repaints the
   whole page on every frame. */
.pin{position:relative;background:var(--section-dark);isolation:isolate}
.pin__stage{position:sticky;top:0;height:100vh;overflow:hidden;z-index:0}
.pin__media{position:absolute;inset:0}
.pin__media img{width:100%;height:100%;object-fit:cover;display:block}
.pin__scrim{position:absolute;inset:0;
  background:linear-gradient(96deg,#0a1a3cd9 0%,#0a1a3c9e 38%,#0a1a3c33 66%,#0a1a3c1a 100%)}

.pin__flow{position:relative;z-index:2;margin-top:-100vh;min-height:158vh;
  display:flex;align-items:flex-end;padding-bottom:13vh;pointer-events:none}
.pin__card{pointer-events:auto;background:#fff;width:min(640px,52vw);
  border-top-right-radius:clamp(38px,4.4vw,68px);
  padding:clamp(34px,3.4vw,54px) clamp(34px,3.4vw,54px) clamp(34px,3.4vw,54px)
          max(var(--gutter), calc(50vw - var(--w-main) / 2 + var(--gutter)));
  box-shadow:0 34px 80px #0a1a3c3d}
.pin__card .h2{margin-top:0}
.pin__card .measure{max-width:46ch}

@media(max-width:1000px){
  .pin__stage{position:static;height:56vw;max-height:420px}
  .pin__flow{margin-top:0;min-height:0;padding-bottom:0;display:block}
  .pin__card{width:100%;border-top-right-radius:34px;margin-top:-42px;
    padding:32px var(--gutter) 36px}
}
@media(prefers-reduced-motion:reduce){
  .pin__stage{position:static;height:60vh}
  .pin__flow{margin-top:0;min-height:0;display:block;padding-bottom:0}
  .pin__card{width:min(640px,88%);margin-top:-56px}
}

/* ============================================================ v9.1 about page */
/* horizontal story timeline with a rail that draws as the section arrives */
.story{position:relative;margin-top:34px}
.story__rail{position:absolute;top:11px;left:0;right:0;height:2px;background:#ffffff26;overflow:hidden}
.story__rail-fill{display:block;height:100%;width:100%;background:var(--brand-red-dk);
  transform:scaleX(var(--p,1));transform-origin:left}
.story__list{list-style:none;margin:0;padding:0;display:grid;
  grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:0 26px}
.story__step{position:relative;padding-top:38px}
.story__dot{position:absolute;top:4px;left:0;width:16px;height:16px;border-radius:50%;
  background:var(--brand-red-dk);border:1px solid #ffffff2e;
  transform:scale(calc(.4 + .6 * var(--p,1)))}
.story__year{display:block;font-family:var(--font-display);font-size:26px;line-height:1;
  color:#fff;margin-bottom:7px}
.story__title{display:block;font-family:var(--font-ui);font-size:12.5px;font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;color:var(--accent-rev);margin-bottom:8px}
.story__txt{display:block;font-size:14.5px;line-height:1.45;color:#ffffffcf;padding-right:6px}
@media(max-width:1180px) and (min-width:781px){
  .story__list{grid-auto-columns:minmax(190px,1fr);overflow-x:auto;padding-bottom:12px}
}
@media(max-width:780px){
  .story__rail{top:0;left:7px;right:auto;bottom:0;width:2px;height:auto}
  .story__rail-fill{width:100%;height:100%;transform:scaleY(var(--p,1));transform-origin:top}
  .story__list{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:1fr;gap:0}
  .story__step{padding:0 0 26px 34px}
  .story__dot{top:3px}
}

/* team cards with names and roles */
.team{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px}
.tcard{margin:0}
.tcard img{width:100%;height:auto;aspect-ratio:4 / 5;object-fit:cover;display:block}
.tcard__cap{display:block;padding-top:11px;border-top:2px solid var(--brand-red);margin-top:11px}
.tcard__name{display:block;font-family:var(--font-display);font-size:21px;line-height:1.1;color:var(--ink)}
.tcard__role{display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted);margin-top:5px}

/* school partnership strip */
.bcsd{background:#fff;border-block:1px solid var(--border);padding-block:clamp(44px,5vw,72px)}
.bcsd__inner{display:grid;grid-template-columns:auto 1fr;gap:44px 56px;align-items:center}
.bcsd__mark img{width:clamp(150px,15vw,215px);height:auto;display:block}
.bcsd__body .h2{margin-top:0}
@media(max-width:820px){
  .bcsd__inner{grid-template-columns:1fr;gap:26px}
  .bcsd__mark img{width:140px}
}
/* v9.2 team cards: photos are pre-cropped to a matching 4:5 frame now */
.team{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px}
.tcard img{aspect-ratio:4 / 5;object-fit:cover}

/* ============================================================ v9.3 contact form */
.cform{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr)}
.cform__aside{position:relative;overflow:hidden;color:#fff;display:flex;flex-direction:column;
  justify-content:center;
  background:linear-gradient(135deg,#133072 0%,#0e2350 46%,#071230 100%);
  padding:clamp(40px,4.4vw,72px) clamp(28px,3.4vw,56px)
          clamp(40px,4.4vw,72px) max(var(--gutter), calc(50vw - var(--w-wide) / 2 + var(--gutter)))}
.cform__aside>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.14;
  z-index:0}
.cform__aside>div{position:relative;z-index:1}
.cform__hours{margin-top:16px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.08em;
  line-height:1.7;color:#ffffffa6;text-transform:uppercase}
.phone-xl--rev{color:#fff}
.cform__main{background:#fff;padding:clamp(38px,3.6vw,60px) max(var(--gutter), calc(50vw - var(--w-wide) / 2 + var(--gutter))) clamp(38px,3.6vw,60px) clamp(28px,3.4vw,56px)}
@media(max-width:980px){
  .cform{grid-template-columns:1fr}
  .cform__aside,.cform__main{padding-inline:var(--gutter)}
}

.frm{margin-top:22px}
.frm__row{display:grid;gap:14px}
.frm__row--2{grid-template-columns:1fr 1fr}
.frm__row--3{grid-template-columns:repeat(3,1fr)}
.frm__row--vin{grid-template-columns:1fr auto;align-items:end}
@media(max-width:620px){.frm__row--2,.frm__row--3{grid-template-columns:1fr}}
.frm__f{display:block;margin-bottom:14px}
.frm__f>span{display:block;font-family:var(--font-ui);font-size:12.5px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.frm__f>span b{color:var(--brand-red);font-weight:600}
.frm__f>span em{font-style:normal;text-transform:none;letter-spacing:0;opacity:.75}
.frm__f input,.frm__f select,.frm__f textarea{width:100%;font:inherit;font-size:16px;
  color:var(--ink);padding:11px 13px;border:1px solid var(--border-str);background:var(--paper);
  border-radius:0;appearance:none}
.frm__f select{background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),
  linear-gradient(135deg,var(--ink) 50%,transparent 50%);
  background-position:calc(100% - 18px) 51%,calc(100% - 13px) 51%;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:36px}
.frm__f input:focus,.frm__f select:focus,.frm__f textarea:focus{outline:2px solid var(--brand-red);
  outline-offset:1px}
.frm__f textarea{resize:vertical}

.frm__set{border:0;border-top:1px solid var(--border);margin:24px 0 6px;padding:20px 0 0}
.frm__set legend{font-family:var(--font-display);font-size:20px;color:var(--ink);padding:0 10px 0 0}
.frm__set legend b{color:var(--brand-red)}

.frm__tabs{display:flex;gap:0;margin:4px 0 18px;border:1px solid var(--border-str);width:max-content;
  max-width:100%;flex-wrap:wrap}
.frm__tab{border:0;background:none;cursor:pointer;font-family:var(--font-ui);font-size:13.5px;
  font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);
  padding:10px 16px;transition:background var(--t),color var(--t)}
.frm__tab+.frm__tab{border-left:1px solid var(--border-str)}
.frm__tab[aria-selected=true]{background:var(--section-dark);color:#fff}
.frm__decode{white-space:nowrap;margin-bottom:14px}
.frm__out{font-family:var(--font-mono);font-size:12.5px;line-height:1.6;color:var(--ink-2);
  letter-spacing:.02em;min-height:1em}
.frm__out[data-state=bad]{color:var(--brand-red-ink)}
.frm__note{font-size:13px;line-height:1.5;color:var(--muted);margin-top:10px}

.fchks{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px 14px;
  margin-top:14px}
.fchk{display:flex;align-items:flex-start;gap:9px;font-size:15px;line-height:1.35;
  color:var(--ink-2);cursor:pointer}
.fchk input{appearance:none;width:18px;height:18px;flex:none;margin-top:1px;
  border:1px solid var(--border-str);background:var(--paper);cursor:pointer;
  transition:background var(--t),border-color var(--t)}
.fchk input:checked{background:var(--brand-red);border-color:var(--brand-red);
  background-image:linear-gradient(45deg,transparent 44%,#fff 44%,#fff 56%,transparent 56%),
                   linear-gradient(-45deg,transparent 44%,#fff 44%,#fff 56%,transparent 56%);
  background-size:12px 12px;background-position:center;background-repeat:no-repeat}
.fchk input:focus-visible{outline:2px solid var(--brand-red);outline-offset:2px}
.frm__submit{margin-top:22px}
.frm__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.frm__done{font-size:16px;line-height:1.6;color:var(--ink-2)}
.frm__set+.frm__f{margin-top:22px}
.fchks{margin-bottom:4px}

/* v9.4 contact page: handy list inside the form aside */
.cform__handy{margin-top:26px;padding-top:20px;border-top:1px solid #ffffff2e}
.cform__handy-h{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:#ffffff9e;margin-bottom:12px}
.cform__handy .checklist{color:#ffffffd4;font-size:14.5px}

/* ============================================================ v9.5 location map */
.locsec{background:var(--paper);padding-block:clamp(46px,5vw,80px)}
.locsec__inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:44px 56px;align-items:center}
.locsec__lines{margin:24px 0 4px;display:grid;gap:12px;border-top:1px solid var(--border);
  padding-top:20px}
.locsec__lines span{display:block;font-family:var(--font-mono);font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:3px}
.locsec__lines b{font-family:var(--font-ui);font-size:16px;font-weight:600;color:var(--ink)}

.locmap{position:relative;margin:0;line-height:0;border:3px solid var(--ink);
  box-shadow:14px 14px 0 var(--brand-red);isolation:isolate}
.locmap>img{width:100%;height:auto;display:block;filter:saturate(.58) contrast(1.05) brightness(1.02)}
.locmap__tint{position:absolute;inset:0;background:var(--section-dark);opacity:.14;
  mix-blend-mode:multiply;pointer-events:none}
.locmap__cap{position:absolute;left:0;right:0;bottom:0;padding:6px 9px;
  font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;color:#ffffffcc;
  background:#0a1a3cb8;line-height:1.3;text-align:right}

.locmap__pin{position:absolute;transform:translate(-50%,-50%);z-index:2;
  display:grid;place-items:center}
.locmap__dot{position:relative;z-index:2;display:grid;place-items:center;
  width:clamp(38px,3.6vw,52px);height:clamp(38px,3.6vw,52px);border-radius:50%;
  background:#fff;box-shadow:0 0 0 4px var(--brand-red),0 8px 20px #0a1a3c5c}
.locmap__dot img{width:78%;height:78%;border-radius:50%}
.locmap__pulse{position:absolute;width:100%;height:100%;border-radius:50%;
  border:2px solid var(--brand-red)}
@media(prefers-reduced-motion:no-preference){
  .locmap__pulse{animation:locPulse 2.8s ease-out infinite}
}
@keyframes locPulse{0%{transform:scale(1);opacity:.8}70%{transform:scale(2.4);opacity:0}100%{opacity:0}}
.locmap__tag{position:absolute;left:calc(50% + 34px);top:50%;transform:translateY(-50%);
  white-space:nowrap;background:var(--section-dark);color:#fff;padding:8px 13px;
  font-family:var(--font-ui);font-size:13.5px;font-weight:600;line-height:1.2;
  border-left:3px solid var(--brand-red);box-shadow:0 8px 20px #0a1a3c47}
.locmap__tag em{display:block;font-style:normal;font-family:var(--font-mono);font-size:10px;
  letter-spacing:.08em;opacity:.72;margin-top:3px}
@media(max-width:1100px){.locmap__tag{display:none}}
@media(max-width:900px){
  .locsec__inner{grid-template-columns:1fr;gap:30px}
  .locmap{box-shadow:9px 9px 0 var(--brand-red)}
}

/* ============================================================ v9.6 mega menu fit
   The nowrap added for the small About dropdown was also applying inside the mega
   panel, so "Factory Scheduled Maintenance" ran under the next column instead of
   wrapping. Scope nowrap to the simple dropdowns only. */
.drop--mega a,.drop--cols a{white-space:normal}
.drop--mega{grid-template-columns:repeat(4,minmax(190px,1fr));gap:24px 38px;padding:26px 30px}
.drop--mega a{padding-right:10px}
@media(max-width:1400px){
  .drop--mega{grid-template-columns:repeat(4,minmax(172px,1fr));gap:22px 28px}
  .drop--mega a{font-size:14.5px}
}

/* ============================================================ v9.7 homepage map aside */
.contact__aside--map{padding-block:clamp(40px,4vw,64px)}
.contact__maplabel{position:relative;z-index:1;font-family:var(--font-mono);font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;color:#ffffffab;margin-bottom:16px}
.contact__mapnote{position:relative;z-index:1;margin-top:20px;font-size:15px;line-height:1.55;
  color:#ffffffc4;max-width:44ch}
.contact__aside--map .locmap{max-width:520px;border-color:#0a1a3c;
  box-shadow:12px 12px 0 var(--brand-red)}
.locmap--rev .locmap__tag{background:#fff;color:var(--ink)}
.locmap--rev .locmap__tag em{color:var(--muted);opacity:1}
@media(max-width:1250px){.contact__aside--map .locmap__tag{display:none}}
@media(max-width:900px){.contact__aside--map .locmap{max-width:none}}
/* v9.7.1 the aside's background-image rule was also catching the map and pin
   images, flattening them to opacity .14 and pulling them out of flow */
.contact__aside--map>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.12}
.contact__aside--map .locmap img,.contact__aside--map .locmap__dot img{
  position:static;inset:auto;width:100%;height:auto;object-fit:contain;opacity:1}
.contact__aside--map .locmap>img{filter:saturate(.62) contrast(1.06) brightness(1.06)}
.contact__aside--map .locmap__dot img{width:78%;height:78%;border-radius:50%}
.contact__aside--map .locmap__tint{opacity:.06}
.contact__aside--map .locmap__pin img{position:static}

/* v9.8 about page: map only aside, centred, no copy */
.contact__aside--bare{align-items:center;justify-content:center;text-align:center}
.contact__aside--bare>div{width:100%;display:flex;justify-content:center}
.contact__aside--bare .locmap{max-width:min(500px,88%);margin-inline:auto}

/* v9.9 seam hairline hardening
   Section heights come from clamp() padding, so they land on fractional pixels.
   At some zoom levels and device pixel ratios the last row of a seam rounds to
   its own background (the colour of the section ABOVE) instead of the triangle,
   which shows as a faint light line across the join. Extending the triangle a
   pixel past the bottom and pulling the next section up a pixel makes that
   impossible to hit, at any rounding. */
.seam{margin-bottom:-1px}
.seam:after{inset:0 0 -1px 0}

/* ============================================================================
   v10 MOBILE PASS. Everything below is inside a mobile media query; the desktop
   layout is untouched.
   ========================================================================== */
@media(max-width:1140px){

  /* 1. the red call bar is gone; a compact phone button sits by the burger */
  .phonebar{display:none!important}

  .hdr__tel{display:inline-grid;place-items:center;width:44px;height:44px;flex:none;
    border-radius:50%;background:var(--brand-red);color:#fff;text-decoration:none;
    margin-right:10px;transition:background var(--t)}
  .hdr__tel svg{width:21px;height:21px;fill:currentColor}
  .hdr__tel:active{background:var(--brand-red-dk)}
  .hdr__inner{gap:0}
  .hdr__inner>.hdr__tel{margin-left:auto}

  /* 2. the drawer was position:static, so it only existed at the top of the
     document. Fixed to the viewport, it opens from anywhere. */
  .drawer{position:fixed;left:0;right:0;top:var(--hdr-h,76px);bottom:0;z-index:75;
    overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
    border-top:3px solid var(--brand-red);padding-bottom:28px}
  .drawer[data-open="true"]{display:block}
  html.drawer-open,body.drawer-open{overflow:hidden}
  /* the header must not retract while the menu is open */
  .hdr.is-away{transform:none}

  /* 3. five trust marks on one row, top strip and footer band */
  .markstrip__inner{padding-block:20px}
  .markstrip__inner--center .marks,
  .ftr__marks .marks--band{grid-template-columns:repeat(5,1fr)!important;gap:0 6px}
  .markstrip__inner--center .marks img,
  .ftr__marks .marks--band img{height:auto!important;max-height:52px;width:100%;
    max-width:100%;object-fit:contain}
  .ftr__marks .wrap-wide{padding-block:22px}

  /* 4. reviews: swipe by finger. The auto-scrolling track was a 5000px+
     composited layer, which mobile GPUs drop, which is why it went blank. */
  .gwall__rail{overflow-x:auto;-webkit-overflow-scrolling:touch;
    scroll-snap-type:x mandatory;scroll-padding-left:var(--gutter);
    -webkit-mask-image:none;mask-image:none;padding-inline:var(--gutter)}
  .gwall__rail::-webkit-scrollbar{display:none}
  .gwall__rail{scrollbar-width:none}
  .gwall__track{animation:none!important;width:max-content;gap:12px}
  /* the duplicate set only existed so the marquee could loop */
  .gwall__track>.gcard:nth-child(n+8){display:none}
  .gcard{scroll-snap-align:start;flex-basis:min(78vw,300px)}
  .gwall__hint{display:block;margin-top:12px;padding-inline:var(--gutter);
    font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;
    text-transform:uppercase;color:var(--muted)}

  /* 5. the callback panel is a bottom sheet instead of a popover above the
     button, which was running off the top of short viewports */
  .chatw{right:0;left:0;bottom:0;align-items:flex-end;gap:0;pointer-events:none}
  .chatw__fab{pointer-events:auto;position:fixed;right:16px;bottom:16px}
  .chatw__panel{pointer-events:auto;position:fixed;left:0;right:0;bottom:0;
    width:100%;max-height:82vh;display:flex;flex-direction:column;
    border-top:4px solid var(--brand-red);border-left:0;border-right:0;border-bottom:0;
    border-radius:16px 16px 0 0;box-shadow:0 -18px 44px #0a1a3c47;animation:none}
  .chatw__panel:not([hidden])~.chatw__fab{display:none}
  .chatw__head{position:sticky;top:0;z-index:2;border-radius:16px 16px 0 0;
    padding:15px 18px}
  .chatw__head:before{content:"";position:absolute;top:6px;left:50%;
    transform:translateX(-50%);width:38px;height:4px;border-radius:2px;background:#0000001f}
  .chatw__x{font-size:30px;padding:0 4px}
  .chatw__body{overflow-y:auto;-webkit-overflow-scrolling:touch;
    padding:16px 18px calc(20px + env(safe-area-inset-bottom))}
  .chatw__backdrop{position:fixed;inset:0;background:#0a1a3c6b;z-index:-1;
    pointer-events:auto}
}
@media(max-width:480px){
  .markstrip__inner--center .marks img,
  .ftr__marks .marks--band img{max-height:42px}
  .hdr__tel{width:42px;height:42px}
}
.gwall__hint{display:none}
.gwall__hint[hidden]{display:none!important}

/* v10.1 locking the page with overflow:hidden on <html> kills position:sticky,
   which dropped the header out of view while the drawer was open. Pin it. */
@media(max-width:1140px){
  html.drawer-open .hdr{position:fixed;top:0;left:0;right:0;width:100%;z-index:80}
  html.drawer-open .drawer{z-index:75}
}
/* v10.2 the mobile call button must not appear on desktop */
.hdr__tel{display:none}
@media(max-width:1140px){.hdr__tel{display:inline-grid}}

/* ============================================================ v10.3 mobile marks marquee */
/* desktop: the wrapper is invisible to layout and the clones are not rendered */
.mqwrap{display:contents}
.mq-clone{display:none!important}

@media(max-width:1140px){
  .mqwrap{display:block;overflow:hidden;position:relative;
    -webkit-mask-image:linear-gradient(90deg,#0000,#000 7%,#000 93%,#0000);
    mask-image:linear-gradient(90deg,#0000,#000 7%,#000 93%,#0000)}
  .mq-clone{display:block!important}

  .markstrip__inner--center .marks,
  .marks--lg{display:flex!important;grid-template-columns:none!important;
    width:max-content;align-items:center;gap:0}
  .markstrip__inner--center .marks>img,
  .marks--lg>img{flex:none!important;width:auto!important;height:auto!important;
    max-width:none!important;max-height:76px!important;margin-inline:26px;
    object-fit:contain}
  /* the Ohio E-Check wordmark is much wider than it is tall */
  .markstrip__inner--center .marks>img[class*="echeck"],
  .marks--lg>img[class*="echeck"]{max-height:50px!important}
  .markstrip__inner--center .marks>.mark--echeck,
  .marks--lg>.mark--echeck{max-height:50px!important}

  @media(prefers-reduced-motion:no-preference){
    .markstrip__inner--center .marks,
    .marks--lg{animation:marksMarquee 26s linear infinite}
  }
  @media(prefers-reduced-motion:reduce){
    .mqwrap{overflow-x:auto;-webkit-mask-image:none;mask-image:none}
  }

  .markstrip__inner{padding-block:24px}
  .marks--lg{margin-top:22px}
}
@keyframes marksMarquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* v10.3.1 the 1240px cap from the desktop grid was making the marquee wrap into
   two rows, which is where the extra height came from */
@media(max-width:1140px){
  .markstrip__inner--center .marks,
  .marks--lg{max-width:none!important;flex-wrap:nowrap!important;align-items:center}
  .mqwrap{line-height:0}
}
/* v10.3.2 a max-content marquee row let its grid parent grow past the viewport,
   which pushed the heading off screen. min-width:0 keeps the column honest and
   the .mqwrap clips the overflow. */
.bleedsplit__text,.bleedsplit__inner,.contact__main,.contact__aside{min-width:0}
@media(max-width:1140px){.mqwrap{max-width:100%}}

/* ============================================================ v11 LCP
   On mobile the hero is a still, so the poster has to fill the frame the way
   the video did. */
.hero__bg video{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:1140px){
  .hero__bg video{object-position:50% 42%}
}

/* ============================================================ v9.2 YouTube facade */
.ytlite{position:relative;display:block;width:100%;aspect-ratio:4 / 3;background:#000;
  overflow:hidden;cursor:pointer}
.ytlite>img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s cubic-bezier(.2,.7,.3,1),filter var(--t)}
.ytlite:hover>img{transform:scale(1.02);filter:brightness(.92)}
.ytlite__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:clamp(64px,9vw,92px);height:auto;border:0;background:none;padding:0;cursor:pointer;
  transition:transform .22s cubic-bezier(.2,.7,.3,1)}
.ytlite__play svg{width:100%;height:auto;display:block;filter:drop-shadow(0 6px 18px #0009)}
.ytlite__bg{fill:#0a1a3ce6;transition:fill .22s}
.ytlite:hover .ytlite__play{transform:translate(-50%,-50%) scale(1.07)}
.ytlite:hover .ytlite__bg{fill:var(--brand-red)}
.ytlite__play:focus-visible{outline:3px solid var(--brand-red);outline-offset:6px}
.ytlite__link{position:absolute;right:10px;bottom:10px;z-index:2;
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:#ffffffd6;text-decoration:none;background:#0a1a3cad;padding:6px 10px}
.ytlite__link:hover{color:#fff;background:var(--brand-red)}
.ytlite iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* v9.2.1 the branded lower third sits at the bottom of the poster, so tuck the
   YouTube link above it rather than on top of the phone number */
.ytlite__link{bottom:auto;top:10px;right:10px}

/* ============================================================================
   TYPOGRAPHY SYSTEM SWAP  (v8)
   Alfa Slab One .............. major display headings
   IBM Plex Sans Condensed .... nav, buttons, secondary headings, UI text
   IBM Plex Sans .............. body copy
   IBM Plex Mono .............. small technical labels, used sparingly
   Sizes are re-tuned per element so line counts and block widths match the
   previous Saira Condensed / Source Sans 3 build. Nothing else changes.
   ========================================================================== */

@font-face{font-family:"Alfa Slab One";font-style:normal;font-weight:400;font-display:swap;
  src:url(/assets/fonts/alfa-slab-one-latin-400-normal.woff2) format("woff2")}

@font-face{font-family:"Plex Cond";font-style:normal;font-weight:400;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-condensed-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Cond";font-style:normal;font-weight:500;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-condensed-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Cond";font-style:normal;font-weight:600;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-condensed-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Cond";font-style:normal;font-weight:700;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-condensed-latin-700-normal.woff2) format("woff2")}

@font-face{font-family:"Plex Sans";font-style:normal;font-weight:400;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Sans";font-style:italic;font-weight:400;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"Plex Sans";font-style:normal;font-weight:500;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Sans";font-style:normal;font-weight:600;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Sans";font-style:normal;font-weight:700;font-display:swap;
  src:url(/assets/fonts/ibm-plex-sans-latin-700-normal.woff2) format("woff2")}

@font-face{font-family:"Plex Mono";font-style:normal;font-weight:500;font-display:swap;
  src:url(/assets/fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Mono";font-style:normal;font-weight:600;font-display:swap;
  src:url(/assets/fonts/ibm-plex-mono-latin-600-normal.woff2) format("woff2")}

:root{
  --font-display:"Alfa Slab One", Rockwell, Georgia, serif;
  --font-ui:"Plex Cond", "Arial Narrow", system-ui, sans-serif;
  --font-body:"Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono:"Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  /* display sizes rescaled: Alfa Slab runs ~1.5x wider than Saira Condensed at
     the same size, so every display step is taken down to hold its line count */
  --fs-hero:44px;
  --fs-h2:28px;
  --fs-h2-center:36px;
  --fs-h3:23px;
  --fs-h4:19px;
  --fs-body:16.5px;
  --fs-body-sm:15px;
  --fs-micro:12px;
}
@media(max-width:900px){:root{--fs-hero:31px;--fs-h2:22px;--fs-h2-center:25px;--fs-h3:20px;--fs-body:16px}}
@media(max-width:560px){:root{--fs-hero:26px;--fs-h2:20px}}

/* Alfa Slab One ships one weight. Anything asking for 700/800 would be faux
   bolded, which widens it further, so every display element is pinned to 400. */
h1,h2,h3,h4,h5,
.hero-head,.h2,.h2--center,.phone-xl,.rev__num,.ctastrip__head,
.ghost__line,.bio__name,.ftr__phone,.contact__gen{
  font-family:var(--font-display);font-weight:400}

.hero-head{font-size:clamp(26px,3.4vw,44px);letter-spacing:-.005em;line-height:1.06}
.h2{font-size:var(--fs-h2);line-height:1.16;letter-spacing:-.004em}
.h2--center{font-size:var(--fs-h2-center)}
.phone-xl{font-size:clamp(25px,4.1vw,36px);letter-spacing:-.005em}
.rev__num{font-size:54px;line-height:.9}
.ctastrip__head{font-size:clamp(18px,2.1vw,24px);line-height:1.14}
.ghost__line,.ghost__item .ghost__line{font-size:clamp(16px,1.75vw,25px);letter-spacing:0}
.bio__name{font-size:26px;letter-spacing:0}
.ftr__phone{font-size:22px;letter-spacing:-.005em}
.contact__gen{font-size:clamp(42px,5vw,64px)}

/* ---- IBM Plex Sans Condensed: nav, buttons, secondary headings, UI --------- */
.h3,.svc-card__title,.steps__t,.ftr__h,.drop__group-label,.faq__q,.chip,
.mapnote__addr,.contact__gen-sub,.info__k,.info__v,.rev__logo span,.rev__txt,
.locator,.plaque,.idx,.btn,.navitem>a,.hdr__cta,.phonebar a,.util__inner,
.drawer__row>a,.drawer__sub-label,.markstrip__lede,.sign__value,.reason__title,
.ftr__marks-note,.hero__rating-txt b,.ghost__kicker,.svc-row__name,.faq__q span,
.bio__role,.credline__txt b,.ghost__cta,.ghost__sub,.hero__meta,.ctastrip__kicker,
.steps__n,.rev__count,.btn__arrow{
  font-family:var(--font-ui)}

.navitem>a{font-size:16px;letter-spacing:.035em}
.btn{font-size:14.5px;letter-spacing:.075em;font-weight:600}
.btn--lg{font-size:15.5px}
.hdr__cta{font-size:16px;letter-spacing:.05em}
.svc-card__title{font-size:24px;letter-spacing:.005em}
.h3{font-size:var(--fs-h3);letter-spacing:.01em}
.chip{font-size:16px;letter-spacing:.03em}
.faq__q{font-size:19px}
.ftr__h{font-size:14px;letter-spacing:.1em}
.rev__txt{font-size:clamp(19px,2vw,26px);line-height:1.16}
.mapnote__addr{font-size:18px}
.drop__group-label{font-size:12px;letter-spacing:.1em}
.steps__t{font-size:20px}
.ghost__cta,.ghost__sub{font-size:12.5px;letter-spacing:.16em}
.hero__rating-txt b{font-size:18px}
.hero__meta{font-size:12.5px;letter-spacing:.1em}
.ctastrip__kicker{font-size:12px;letter-spacing:.12em}
.phonebar a{font-size:23px;letter-spacing:0}
.drawer__row>a{font-size:18px;letter-spacing:.03em}

/* ---- IBM Plex Sans: body -------------------------------------------------- */
body,.prose,.lede,.measure,.faq__a,.ftr__blurb,.contact__v,.ftr a,.ftr__hours,
.svc-card__blurb,.sign__note,.steps__item p,.reason p,.city-list a,.rev__count{
  font-family:var(--font-body)}
.lede{font-size:calc(var(--fs-body) + 1px)}
.rev__count{font-size:14px}

/* ---- IBM Plex Mono: small technical labels only --------------------------- */
.eyebrow-note,.contact__k,.gallery figcaption,.crumbs,.bio__role,
.credline__txt b,.ghost__cta,.ftr__marks-note{
  font-family:var(--font-mono);font-weight:500}
.eyebrow-note{font-size:11px;letter-spacing:.1em}
.contact__k{font-size:11px;letter-spacing:.1em}
.gallery figcaption{font-size:11px;letter-spacing:.08em}
.crumbs{font-size:11px;letter-spacing:.08em}
.bio__role{font-size:11.5px;letter-spacing:.07em}
.credline__txt b{font-size:13px;letter-spacing:.07em}
.ghost__cta{font-size:11.5px;letter-spacing:.14em}
.ftr__marks-note{font-size:11px;letter-spacing:.1em}

/* ---- second pass: line-count corrections found by measuring against baseline */
:root{--fs-body:16px}
@media(max-width:900px){:root{--fs-body:15.5px}}
.ghost__line,.ghost__item .ghost__line{font-size:clamp(15px,1.55vw,25px)}
.rev__txt{font-size:clamp(18px,1.9vw,26px)}
@media(max-width:640px){
  .svc-card__title{font-size:21px}
  .faq__q{font-size:17.5px}
  .h2--center{font-size:22px}
}

/* ---- anything else that inherited the old display face and should be UI ----- */
.svc-card__more,.ff-lockup__txt,.cred__label,.numlist li:before,.skip-link,
.ghost__item b,.ghost__item span,.ghost__phone,.gallery--cap figcaption{
  font-family:var(--font-ui)}
.svc-card__more{font-size:12px;letter-spacing:.12em}
/* the caption inside .gallery--cap is a technical label, keep it mono */
.gallery figcaption,.gallery--cap figcaption{font-family:var(--font-mono);font-weight:500}
