/*
Theme Name: Oregon's Premier Duct Cleaning
Theme URI: https://oregonspremierductcleaning.com/
Author: Square Media Technology
Author URI: https://squaremediatech.com/
Description: Custom theme for Oregon's Premier Duct Cleaning LLC (Portland, OR). Page templates for every page, shared sections in template-parts.
Version: 1.0.1
Requires at least: 5.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: oregon-duct-cleaning
*/

:root {
  --ink: #102238;
  --ink-soft: #50657a;
  --paper: #f7f4ed;
  --paper-deep: #ece7dc;
  --white: #fffdfa;
  --brand: #e3323b;
  --brand-dark: #b9252f;
  --brand-soft: #f8d8d5;
  --gold: #c69a4a;
  --sage: #c9d8cf;
  --line: rgba(16,34,56,.13);
  --shadow: 0 25px 80px rgba(16,34,56,.12);
  --ease: cubic-bezier(.22,.61,.36,1);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: Roboto, sans-serif; font-size: 16px; line-height: 1.65; overflow-x: hidden; }
h1, h2, h3, h4, .brand-wordmark, .header-call { font-family: Poppins, sans-serif; }
h1, h2, h3, h4, p { margin-top: 0; }
h1, h2, h3, h4 { line-height: 1.13; letter-spacing: -.045em; font-weight: 600; }
h1 { font-size: clamp(3.2rem, 6.6vw, 6.5rem); margin-bottom: 25px; }
h2 { font-size: clamp(2.35rem, 4.2vw, 4.4rem); margin-bottom: 24px; }
h3 { font-size: clamp(1.55rem, 2.3vw, 2.25rem); }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
.container { max-width: 1240px; }
.announcement-bar { background: var(--ink); color: var(--paper); padding: 9px 0; font-family: Poppins, sans-serif; font-size: 10px; letter-spacing: .12em; text-transform: uppercase; }
.announcement-inner { display: flex; justify-content: space-between; align-items: center; gap: 20px; }.announcement-inner i { color: var(--brand-soft); margin-right: 5px; }.announcement-inner a { color: #fff; font-weight: 600; }.announcement-inner a:hover { color: var(--brand-soft); }
.site-header { position: sticky; top: 0; z-index: 1000; background: rgba(247,244,237,.94); border-bottom: 1px solid transparent; backdrop-filter: blur(16px); transition: .3s ease; }.site-header.scrolled { border-color: var(--line); box-shadow: 0 8px 30px rgba(16,34,56,.06); }
.header-inner { display: flex; align-items: center; gap: 25px; }.brand-mark { display: flex; align-items: center; gap: 11px; min-width: 225px; }.brand-mark img { width: 47px; height: 47px; object-fit: contain; }.brand-wordmark { font-size: 10px; line-height: 1.18; letter-spacing: .1em; font-weight: 600; }.brand-wordmark b { display: block; color: var(--brand); font-size: 11px; letter-spacing: .08em; }
.navbar { padding: 16px 0; }.navbar-nav .nav-link { color: var(--ink-soft); font: 500 12px Poppins,sans-serif; padding: 10px 11px !important; position: relative; transition: color .2s ease; }.navbar-nav .nav-link::after { content: ''; position: absolute; bottom: 4px; left: 11px; right: 11px; height: 2px; background: var(--brand); transform: scaleX(0); transform-origin: left; transition: transform .25s var(--ease); }.navbar-nav .nav-link:hover, .navbar-nav .nav-link.active { color: var(--ink); }.navbar-nav .nav-link:hover::after, .navbar-nav .nav-link.active::after { transform: scaleX(1); }
.header-call { display: inline-flex; align-items: center; gap: 9px; padding: 13px 18px; background: var(--brand); color: #fff; font-size: 12px; font-weight: 600; white-space: nowrap; transition: .25s ease; }.header-call:hover { color: #fff; background: var(--brand-dark); transform: translateY(-2px); }.navbar-toggler { margin-left: auto; border: 0; color: var(--ink); font-size: 28px; padding: 0; }.navbar-toggler:focus { box-shadow: none; }
.nav-services { position: relative; }.services-nav-line { display: flex; align-items: center; }.service-toggle { display: none; border: 0; background: none; color: var(--ink-soft); padding: 7px 8px; }.service-menu { position: absolute; top: calc(100% + 16px); left: 50%; width: 620px; padding: 24px; background: var(--white); box-shadow: var(--shadow); border-top: 3px solid var(--brand); opacity: 0; pointer-events: none; transform: translate(-50%, 10px); transition: opacity .25s ease, transform .25s ease; }.nav-services:hover .service-menu, .nav-services.is-open .service-menu { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); }.service-menu-heading { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 16px; margin-bottom: 15px; border-bottom: 1px solid var(--line); }.service-menu-heading span { color: var(--brand); font: 600 11px Poppins,sans-serif; letter-spacing: .15em; text-transform: uppercase; }.service-menu-heading small { color: var(--ink-soft); font-size: 11px; max-width: 260px; line-height: 1.5; }.service-menu-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 5px 12px; }.service-menu-link { display: grid; grid-template-columns: 34px 1fr 16px; align-items: center; gap: 10px; padding: 10px 8px; transition: background .2s ease; }.service-menu-link:hover { background: var(--brand-soft); }.service-menu-icon { width: 31px; height: 31px; display: grid; place-items: center; border-radius: 50%; background: var(--paper-deep); color: var(--brand); font-size: 14px; }.service-menu-link strong, .service-menu-link small { display: block; }.service-menu-link strong { font: 600 11px Poppins,sans-serif; }.service-menu-link small { color: var(--ink-soft); font-size: 10px; }.service-menu-arrow { color: var(--brand); font-size: 11px; }
.section-padding { padding: 125px 0; }.section-padding-sm { padding: 82px 0; }.eyebrow, .section-kicker, .service-label { color: var(--brand); font: 600 11px Poppins,sans-serif; letter-spacing: .16em; text-transform: uppercase; }.eyebrow { display: flex; align-items: center; gap: 11px; margin-bottom: 22px; }.eyebrow-line { width: 34px; height: 2px; background: var(--brand); }.accent-rule { width: 82px; height: 4px; background: var(--brand); position: relative; }.accent-rule::after { content: ''; position: absolute; left: 90px; width: 23px; height: 4px; background: var(--gold); }
.hero-section { position: relative; min-height: 720px; display: flex; align-items: center; overflow: hidden; background: var(--paper); }.hero-section::before { content: ''; position: absolute; width: 720px; height: 720px; right: -230px; top: -250px; border: 1px solid rgba(227,50,59,.18); border-radius: 50%; box-shadow: 0 0 0 110px rgba(16,34,56,.025), 0 0 0 220px rgba(227,50,59,.035); }.hero-copy { max-width: 565px; color: var(--ink-soft); font-size: 18px; line-height: 1.75; margin-bottom: 31px; }.hero-copy strong { color: var(--ink); }.hero-actions { display: flex; align-items: center; gap: 25px; flex-wrap: wrap; }.btn-brand, .btn-light-brand { display: inline-flex; align-items: center; gap: 11px; padding: 15px 20px; border: 0; border-radius: 0; font: 600 12px Poppins,sans-serif; transition: transform .25s ease, background .25s ease; }.btn-brand { background: var(--brand); color: #fff; }.btn-brand:hover { color: #fff; background: var(--brand-dark); transform: translateY(-3px); }.btn-light-brand { color: var(--ink); background: var(--paper); }.btn-light-brand:hover { color: var(--brand); background: #fff; transform: translateY(-3px); }.text-link { display: inline-flex; align-items: center; gap: 9px; color: var(--brand); font: 600 12px Poppins,sans-serif; }.text-link i { transition: transform .25s ease; }.text-link:hover { color: var(--brand-dark); }.text-link:hover i { transform: translate(3px,-3px); }.dark-link { color: var(--ink); }
.hero-assurance { display: flex; align-items: center; gap: 9px; margin-top: 28px; color: var(--ink-soft); font-size: 12px; }.hero-assurance i { color: var(--brand); font-size: 18px; }.hero-visual { min-height: 565px; position: relative; display: grid; place-items: center; }.hero-image-wrap { width: min(100%, 505px); height: 565px; overflow: hidden; clip-path: polygon(14% 0,100% 0,86% 100%,0 100%); box-shadow: var(--shadow); }.hero-image-wrap img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.76) contrast(1.05); }.hero-stamp { position: absolute; left: 0; top: 36px; width: 108px; height: 108px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--brand); color: #fff; border-radius: 50%; transform: rotate(-12deg); box-shadow: 0 16px 35px rgba(189,37,46,.27); }.hero-stamp span, .hero-stamp small { font: 9px Poppins,sans-serif; letter-spacing: .12em; text-transform: uppercase; }.hero-stamp strong { font: 25px/1 Poppins,sans-serif; }.hero-note { position: absolute; right: -6px; bottom: 45px; display: flex; align-items: center; gap: 12px; min-width: 220px; padding: 15px 18px; background: var(--white); box-shadow: 0 15px 40px rgba(28,45,63,.14); }.note-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--brand); box-shadow: 0 0 0 5px var(--brand-soft); }.hero-note strong, .hero-note small { display: block; }.hero-note strong { font: 600 11px Poppins,sans-serif; }.hero-note small { color: var(--ink-soft); font-size: 10px; }
.trust-strip { padding: 25px 0; background: var(--white); border-block: 1px solid var(--line); overflow: hidden; }.trust-row { display: flex; align-items: center; gap: 40px; }.trust-label { min-width: 190px; font: 600 10px Poppins,sans-serif; letter-spacing: .12em; text-transform: uppercase; }.trust-track { display: flex; gap: 42px; min-width: max-content; color: var(--ink-soft); font: 12px Poppins,sans-serif; animation: marquee 27s linear infinite; }.trust-track span { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }.trust-track i { color: var(--brand); font-size: 17px; }@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-24%); } }
.about-preview { background: var(--white); }.about-image { height: 500px; overflow: hidden; position: relative; }.about-image img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.76); }.about-image::after { content: 'Thoughtful work / Local care'; position: absolute; bottom: 22px; left: 22px; padding: 8px 12px; color: #fff; background: var(--ink); font: 10px Poppins,sans-serif; letter-spacing: .12em; text-transform: uppercase; }.lead-copy { color: var(--ink); font: 20px/1.6 Poppins,sans-serif; }.body-copy { color: var(--ink-soft); line-height: 1.8; }
.services-section { background: var(--paper); }.section-heading-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 50px; margin-bottom: 58px; }.section-heading-row > div { max-width: 590px; }.section-heading-row > p { max-width: 370px; color: var(--ink-soft); line-height: 1.8; margin: 0; }.service-card { height: 100%; padding: 31px 28px 27px; background: var(--white); border-top: 3px solid transparent; box-shadow: 0 14px 45px rgba(16,34,56,.05); transition: transform .35s var(--ease), border-color .35s ease, box-shadow .35s ease; }.service-card:hover { transform: translateY(-8px); border-color: var(--brand); box-shadow: var(--shadow); }.service-card-icon { width: 48px; height: 48px; display: grid; place-items: center; margin-bottom: 22px; color: var(--brand); background: var(--brand-soft); border-radius: 50%; font-size: 21px; transition: background .3s ease, color .3s ease; }.service-card:hover .service-card-icon { color: #fff; background: var(--brand); }.service-card h3 { margin-bottom: 12px; font-size: 22px; }.service-card p { min-height: 50px; color: var(--ink-soft); font-size: 14px; line-height: 1.65; margin-bottom: 21px; }.service-card .text-link { font-size: 11px; }
.cta-band { position: relative; overflow: hidden; margin-top: 80px; padding: 49px 55px; color: #fff; background: var(--ink); }.cta-band::after { content: ''; position: absolute; width: 430px; height: 430px; right: -150px; top: -220px; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; }.cta-band > * { position: relative; z-index: 1; }.cta-band h3 { max-width: 550px; margin-bottom: 9px; }.cta-band p { color: rgba(255,255,255,.68); margin: 0; }
.process-section { background: var(--white); }.process-item { padding: 27px 0; border-top: 1px solid var(--line); }.process-item:last-child { border-bottom: 1px solid var(--line); }.process-number { color: var(--brand); font: 600 12px Poppins,sans-serif; }.process-item h3 { margin: 11px 0 8px; font-size: 22px; }.process-item p { color: var(--ink-soft); max-width: 400px; font-size: 14px; margin: 0; }.process-aside { padding: 40px; background: var(--paper-deep); }.process-aside h3 { margin-bottom: 17px; }.process-aside ul { list-style: none; padding: 0; margin: 0; }.process-aside li { display: flex; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); color: var(--ink-soft); font-size: 13px; }.process-aside li i { color: var(--brand); }
.stats-panel { position: relative; display: grid; grid-template-columns: 1fr 1.5fr; gap: 45px; overflow: hidden; padding: 62px 65px; color: #fff; background: var(--brand); }.stats-panel::before, .stats-panel::after { content: ''; position: absolute; border: 1px solid rgba(255,255,255,.18); border-radius: 50%; pointer-events: none; }.stats-panel::before { width: 430px; height: 430px; right: -130px; top: -200px; }.stats-panel::after { width: 610px; height: 610px; right: -230px; top: -290px; }.stats-panel > * { position: relative; z-index: 1; }.stats-panel h2 { max-width: 350px; font-size: clamp(2rem,3.2vw,3.3rem); }.light-kicker { color: var(--brand-soft); }.stat-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 35px; align-content: center; }.stat { border-left: 1px solid rgba(255,255,255,.34); padding-left: 23px; }.stat strong { display: block; font: 4rem/1 Poppins,sans-serif; letter-spacing: -.06em; }.stat span { display: block; margin-top: 10px; color: rgba(255,255,255,.75); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }
.areas-section { background: var(--white); }.area-list { display: grid; grid-template-columns: repeat(3,1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }.area-list span { padding: 13px 15px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--ink-soft); font: 12px Poppins,sans-serif; transition: background .2s ease, color .2s ease; }.area-list span:hover { color: var(--ink); background: var(--brand-soft); }.map-wrap { position: relative; margin-top: 58px; box-shadow: var(--shadow); }#serviceMap { height: 420px; filter: saturate(.72) contrast(.96); }.leaflet-control-attribution { font-size: 9px; }.custom-map-marker { background: transparent; border: 0; }.custom-map-marker span { display: block; width: 22px; height: 22px; border: 4px solid #fff; border-radius: 50% 50% 50% 0; background: var(--brand); box-shadow: 0 4px 12px rgba(16,34,56,.26); transform: rotate(-45deg); }.map-card { position: absolute; left: 25px; bottom: 25px; z-index: 500; display: flex; align-items: center; gap: 12px; padding: 14px 17px; background: var(--white); box-shadow: 0 12px 30px rgba(16,34,56,.16); }.map-pin { width: 34px; height: 34px; display: grid; place-items: center; color: #fff; background: var(--brand); border-radius: 50%; }.map-card small, .map-card strong { display: block; }.map-card small { color: var(--ink-soft); font-size: 10px; }.map-card strong { font: 600 12px Poppins,sans-serif; }
.testimonial-section { background: var(--paper-deep); overflow: hidden; }.testimonial-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 30px; margin-bottom: 40px; }.testimonial-arrows { display: flex; gap: 10px; }.slider-btn { width: 44px; height: 44px; border: 1px solid var(--ink); color: var(--ink); background: transparent; transition: .25s ease; }.slider-btn:hover { color: #fff; background: var(--ink); }.testimonial-slider { overflow: hidden; }.testimonial-track { display: flex; transition: transform .55s var(--ease); }.testimonial-card { flex: 0 0 calc(33.333% - 16px); margin-right: 24px; min-height: 295px; display: flex; flex-direction: column; padding: 34px; background: var(--white); }.quote-mark { color: var(--brand); font: 52px/.7 Georgia,serif; }.testimonial-card p { color: var(--ink-soft); line-height: 1.75; margin: 20px 0 28px; }.testimonial-person { display: flex; align-items: center; gap: 11px; margin-top: auto; }.avatar { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: var(--ink); background: var(--sage); font: 600 12px Poppins,sans-serif; }.avatar.coral { background: var(--brand-soft); }.avatar.gold { background: #ead6ae; }.testimonial-person strong, .testimonial-person small { display: block; }.testimonial-person strong { font: 600 12px Poppins,sans-serif; }.testimonial-person small { color: var(--ink-soft); font-size: 11px; }
.faq-section { background: var(--white); }.accordion-clean .accordion-item { border: 0; border-bottom: 1px solid var(--line); background: transparent; }.accordion-clean .accordion-button { padding: 24px 0; color: var(--ink); background: transparent; box-shadow: none; font: 600 15px Poppins,sans-serif; }.accordion-clean .accordion-button::after { width: auto; height: auto; content: '+'; background-image: none; color: var(--brand); font: 23px Roboto,sans-serif; }.accordion-clean .accordion-button:not(.collapsed)::after { content: '−'; transform: none; }.accordion-clean .accordion-body { padding: 0 30px 24px 0; color: var(--ink-soft); font-size: 15px; line-height: 1.75; }
.contact-section { background: var(--white); }.contact-panel { position: relative; overflow: hidden; padding: 70px 75px; color: #fff; background: var(--ink); }.contact-panel::before { content: ''; position: absolute; width: 660px; height: 660px; right: -300px; top: -260px; border: 1px solid rgba(255,255,255,.1); border-radius: 50%; }.contact-panel > .row { position: relative; z-index: 1; }.contact-panel h2 { max-width: 420px; }.contact-panel p { max-width: 410px; color: rgba(255,255,255,.7); line-height: 1.8; }.contact-details { display: flex; flex-direction: column; gap: 17px; margin-top: 33px; }.contact-details a { display: flex; align-items: center; gap: 13px; color: #fff; }.contact-details i { color: var(--brand-soft); font-size: 19px; }.contact-details small, .contact-details span { display: block; }.contact-details small { color: rgba(255,255,255,.55); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; }.contact-details span { font: 14px Poppins,sans-serif; }.areas-section .contact-details a { color: var(--ink); }.areas-section .contact-details small { color: var(--ink-soft); }.contact-form { padding: 30px; background: rgba(255,255,255,.08); }.contact-form label { display: block; margin-bottom: 7px; color: rgba(255,255,255,.7); font-size: 11px; }.contact-form input, .contact-form select, .contact-form textarea { width: 100%; padding: 12px 13px; outline: none; border: 1px solid rgba(255,255,255,.2); color: #fff; background: rgba(255,255,255,.08); font: 14px Roboto,sans-serif; }.contact-form input::placeholder, .contact-form textarea::placeholder { color: rgba(255,255,255,.48); }.contact-form select option { color: var(--ink); }.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus { border-color: var(--brand-soft); background: rgba(255,255,255,.13); }.form-note { color: rgba(255,255,255,.5); font-size: 11px; }
.page-hero { padding: 100px 0 95px; background: var(--paper); border-bottom: 1px solid var(--line); }.page-hero h1 { max-width: 780px; }.page-hero p { max-width: 650px; color: var(--ink-soft); font-size: 18px; line-height: 1.75; }.breadcrumb-line { display: flex; gap: 9px; align-items: center; margin-bottom: 28px; color: var(--ink-soft); font: 11px Poppins,sans-serif; }.breadcrumb-line a:hover { color: var(--brand); }.breadcrumb-line span { color: var(--brand); }.service-detail-image { height: 480px; overflow: hidden; }.service-detail-image img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.78); }.detail-copy p { color: var(--ink-soft); font-size: 16px; line-height: 1.85; }.detail-copy h2 { font-size: clamp(2rem,3.5vw,3.5rem); }.detail-list { list-style: none; padding: 0; margin: 0; }.detail-list li { display: flex; gap: 11px; padding: 12px 0; border-bottom: 1px solid var(--line); color: var(--ink-soft); }.detail-list i { color: var(--brand); }.service-callout { padding: 38px; color: #fff; background: var(--brand); }.service-callout h3 { font-size: 2rem; }.service-callout p { color: rgba(255,255,255,.78); }.article-card { height: 100%; background: var(--white); border-top: 3px solid var(--brand); padding: 30px; transition: .3s ease; }.article-card:hover { transform: translateY(-7px); box-shadow: var(--shadow); }.article-card small { color: var(--brand); font: 600 10px Poppins,sans-serif; letter-spacing: .13em; text-transform: uppercase; }.article-card h3 { margin: 18px 0 13px; font-size: 23px; }.article-card p { color: var(--ink-soft); font-size: 14px; line-height: 1.75; }.article-meta { color: var(--ink-soft); font: 11px Poppins,sans-serif; }.blog-image { height: 220px; margin: -30px -30px 25px; overflow: hidden; }.blog-image img { width: 100%; height: 100%; object-fit: cover; }.contact-page-card { padding: 35px; background: var(--white); border-top: 3px solid var(--brand); }.contact-page-card h3 { margin-bottom: 12px; font-size: 24px; }.contact-page-card p { color: var(--ink-soft); }
.site-footer { padding: 62px 0 23px; background: var(--paper-deep); }.footer-top { display: flex; justify-content: space-between; gap: 50px; padding-bottom: 50px; border-bottom: 1px solid var(--line); }.footer-brand { max-width: 320px; }.footer-brand p { margin: 22px 0 0; color: var(--ink-soft); font-size: 14px; line-height: 1.75; }.footer-links { display: flex; gap: 80px; }.footer-links > div { display: flex; flex-direction: column; gap: 9px; }.footer-label { margin-bottom: 8px; font: 600 11px Poppins,sans-serif; letter-spacing: .13em; text-transform: uppercase; }.footer-links a { color: var(--ink-soft); font-size: 13px; }.footer-links a:hover { color: var(--brand); }.footer-bottom { display: flex; justify-content: space-between; gap: 20px; padding-top: 22px; color: var(--ink-soft); font-size: 11px; }
.reveal-up { opacity: 0; transform: translateY(24px); transition: opacity .8s var(--ease), transform .8s var(--ease); }.reveal-up.is-visible { opacity: 1; transform: translateY(0); }.delay-1 { transition-delay: .1s; }.delay-2 { transition-delay: .2s; }
@media (max-width: 991px) { .navbar-collapse { padding: 15px 0 4px; }.navbar-nav { align-items: flex-start !important; }.navbar-nav .nav-link { padding-left: 0 !important; }.navbar-nav .nav-link::after { left: 0; right: 0; }.header-call { width: fit-content; margin-top: 9px; }.service-toggle { display: block; }.service-menu { position: static; display: none; width: 100%; padding: 15px 0; box-shadow: none; border-top: 1px solid var(--line); opacity: 1; transform: none; pointer-events: auto; }.nav-services.is-open .service-menu { display: block; }.service-menu-heading { display: none; }.service-menu-grid { gap: 2px 7px; }.hero-section { padding-top: 80px; }.hero-visual { min-height: 500px; }.hero-image-wrap { height: 500px; }.section-padding { padding: 95px 0; }.stats-panel { grid-template-columns: 1fr; }.contact-panel { padding: 55px 45px; }.testimonial-card { flex-basis: calc(50% - 12px); } }
@media (max-width: 767px) { .announcement-bar { display: none; }.brand-wordmark { display: none; }.brand-mark { min-width: auto; }.hero-section { min-height: 0; padding: 70px 0 78px; }.hero-copy { font-size: 16px; }.hero-visual { min-height: 420px; margin-top: 18px; }.hero-image-wrap { height: 430px; }.hero-stamp { left: 0; top: 10px; }.hero-note { right: -2px; bottom: 22px; }.trust-row { display: block; }.trust-label { display: block; margin-bottom: 17px; }.trust-track { gap: 25px; }.section-padding { padding: 78px 0; }.section-heading-row, .testimonial-heading { display: block; }.section-heading-row > p { margin-top: 23px; }.about-image { height: 350px; }.service-card p { min-height: 0; }.cta-band { padding: 35px 27px; }.cta-band .btn { margin-top: 24px; }.process-aside { margin-top: 25px; }.stats-panel { padding: 44px 28px; }.stat-grid { gap: 28px 18px; }.stat { padding-left: 13px; }.stat strong { font-size: 2.65rem; }.stat span { font-size: 9px; }.area-list { grid-template-columns: repeat(2,1fr); }.map-wrap { margin-top: 42px; }.map-card { left: 12px; bottom: 12px; }.testimonial-card { flex-basis: 100%; margin-right: 0; }.testimonial-arrows { margin-top: 24px; }.contact-panel { padding: 42px 22px; }.contact-form { padding: 21px; margin-top: 10px; }.footer-top { display: block; }.footer-links { margin-top: 40px; gap: 50px; }.footer-bottom { display: block; }.footer-bottom span { display: block; margin-top: 7px; }.page-hero { padding: 72px 0; }.page-hero p { font-size: 16px; }.service-detail-image { height: 320px; }.detail-copy { margin-top: 35px; }.service-callout { padding: 30px; } }
@media (prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } }

/* ==========================================================================
   v2 refinements — type scale, rounded corners, floating cards, area cards
   ========================================================================== */
:root { --radius: 20px; --radius-lg: 28px; --radius-sm: 12px; --radius-pill: 999px; }

/* --- type scale (smaller, consistent headings) --- */
h1, h2, h3, h4 { letter-spacing: -.025em; line-height: 1.18; text-wrap: balance; }
h1 { font-size: clamp(2rem, 3.5vw, 3.15rem); margin-bottom: 20px; }
h1 em { white-space: nowrap; }
h2 { font-size: clamp(1.6rem, 2.4vw, 2.25rem); margin-bottom: 18px; }
h3 { font-size: clamp(1.15rem, 1.5vw, 1.4rem); line-height: 1.28; }
.page-hero h1 { font-size: clamp(1.9rem, 3vw, 2.75rem); max-width: 820px; }
.detail-copy h2, .stats-panel h2 { font-size: clamp(1.6rem, 2.4vw, 2.25rem); }
.contact-panel h2 { max-width: 440px; }
.cta-band h3, .service-callout h3 { font-size: clamp(1.3rem, 1.9vw, 1.7rem); max-width: 620px; }
.service-card h3, .feature-card h3, .article-card h3, .contact-page-card h3 { font-size: 1.15rem; margin-bottom: 10px; }
.process-item h3 { font-size: 1.1rem; }
.process-aside h3 { font-size: 1.3rem; }
.stat strong { font-size: clamp(2.2rem, 3.4vw, 3rem); }
.lead-copy { font-size: 18px; }
.hero-copy, .page-hero p { font-size: 17px; }
.section-padding { padding: 100px 0; }
.section-padding-sm { padding: 72px 0; }
.section-heading-row { margin-bottom: 46px; }
.section-heading-row > div { max-width: 640px; }
.section-heading-row h2 { margin-bottom: 0; }
.section-kicker { margin-bottom: 12px; }

/* --- rounded corners everywhere --- */
.btn-brand, .btn-light-brand, .btn-outline-ink, .header-call { border-radius: var(--radius-pill); }
.btn-brand, .btn-light-brand, .btn-outline-ink { padding: 14px 24px; }
.btn-outline-ink { display: inline-flex; align-items: center; gap: 10px; border: 1.5px solid var(--ink); color: var(--ink); background: transparent; font: 600 12px Poppins, sans-serif; transition: transform .25s ease, background .25s ease, color .25s ease; }
.btn-outline-ink:hover { color: #fff; background: var(--ink); transform: translateY(-3px); }
.service-menu { border-radius: var(--radius); overflow: hidden; }
.service-menu::before { content: ''; position: absolute; left: 0; right: 0; top: -20px; height: 20px; }
.nav-services:hover .service-menu, .nav-services.is-open .service-menu { overflow: visible; }
.service-menu-link { border-radius: var(--radius-sm); }
.hero-image-wrap { clip-path: none; border-radius: var(--radius-lg); }
.hero-image-wrap img, .about-image img, .service-detail-image img { border-radius: var(--radius-lg); }
.about-image, .service-detail-image { overflow: visible; }
.about-image::after { content: none; }
.about-image img, .service-detail-image img { box-shadow: var(--shadow); }
.service-card, .feature-card, .article-card, .contact-page-card, .testimonial-card, .process-aside, .resource-box { border-radius: var(--radius); }
.service-card, .article-card, .contact-page-card { border: 1px solid var(--line); border-top: 1px solid var(--line); }
.service-card:hover, .article-card:hover { border-color: var(--brand); }
.cta-band, .stats-panel, .contact-panel, .service-callout { border-radius: var(--radius-lg); }
.contact-form { border-radius: var(--radius); }
.contact-form input, .contact-form select, .contact-form textarea { border-radius: var(--radius-sm); }
.map-wrap { border-radius: var(--radius-lg); overflow: hidden; }
.map-card { border-radius: 16px; }
.slider-btn { border-radius: 50%; }
.page-hero { position: relative; overflow: hidden; padding: 84px 0 80px; }
.page-hero::before { content: ''; position: absolute; width: 560px; height: 560px; right: -180px; top: -220px; border: 1px solid rgba(227,50,59,.18); border-radius: 50%; box-shadow: 0 0 0 90px rgba(16,34,56,.025), 0 0 0 180px rgba(227,50,59,.035); pointer-events: none; }
.page-hero .container { position: relative; }
.page-hero .hero-actions { margin-top: 28px; }
.blog-image { position: relative; margin: -30px -30px 25px; border-radius: var(--radius) var(--radius) 0 0; }
.article-card { overflow: hidden; }

/* --- service cards: one consistent pattern on every page --- */
.service-card { display: flex; flex-direction: column; padding: 28px 24px 24px; }
.service-card p { min-height: 0; flex: 1; }
.service-card-icon, .feature-icon { border-radius: 16px; }
.feature-card { height: 100%; padding: 28px 24px; background: var(--white); border: 1px solid var(--line); transition: transform .35s var(--ease), box-shadow .35s ease; }
.feature-card:hover { transform: translateY(-6px); box-shadow: var(--shadow); }
.feature-icon { width: 48px; height: 48px; display: grid; place-items: center; margin-bottom: 20px; color: var(--brand); background: var(--brand-soft); font-size: 21px; }
.feature-card p, .contact-page-card p { color: var(--ink-soft); font-size: 14px; line-height: 1.65; margin: 0; }

/* --- floating info cards on images --- */
.media { position: relative; }
.float-card { position: absolute; z-index: 3; display: flex; align-items: center; gap: 12px; max-width: 250px; padding: 13px 16px; background: var(--white); border-radius: 16px; box-shadow: 0 16px 40px rgba(16,34,56,.16); animation: floaty 6s ease-in-out infinite; }
.float-card .fc-icon { flex: 0 0 38px; height: 38px; display: grid; place-items: center; border-radius: 12px; color: var(--brand); background: var(--brand-soft); font-size: 18px; }
.float-card strong, .float-card small { display: block; }
.float-card strong { font: 600 12.5px/1.3 Poppins, sans-serif; color: var(--ink); }
.float-card small { margin-top: 2px; color: var(--ink-soft); font-size: 11px; line-height: 1.4; }
.float-card.dark { background: var(--ink); }
.float-card.dark strong { color: #fff; }
.float-card.dark small { color: rgba(255,255,255,.7); }
.float-card.dark .fc-icon { color: var(--brand-soft); background: rgba(255,255,255,.12); }
.float-card.tl { top: 26px; left: -22px; }
.float-card.br { right: -22px; bottom: 30px; animation-delay: -3s; }
.float-card.hero-a { right: -6px; bottom: 48px; }
.float-card.hero-b { left: -6px; bottom: 150px; animation-delay: -3s; }
.hero-stamp { z-index: 3; }
@keyframes floaty { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }

/* --- areas: pills on home, image cards on the areas page --- */
.area-list { display: flex; flex-wrap: wrap; gap: 10px; border: 0; }
.area-list a, .area-list span { padding: 10px 16px; border: 1px solid var(--line); border-radius: var(--radius-pill); color: var(--ink-soft); background: var(--paper); font: 500 12px Poppins, sans-serif; transition: background .2s ease, color .2s ease, border-color .2s ease; }
.area-list a:hover, .area-list span:hover { color: var(--brand-dark); background: var(--brand-soft); border-color: var(--brand-soft); }
.area-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 22px; }
.area-card { display: flex; flex-direction: column; overflow: hidden; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); scroll-margin-top: 110px; transition: transform .35s var(--ease), box-shadow .35s ease, border-color .35s ease, opacity .8s var(--ease); }
.area-card:hover { transform: translateY(-6px); border-color: var(--brand); box-shadow: var(--shadow); }
.area-card-media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--paper-deep); }
.area-card-media img, .blog-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.area-card:hover .area-card-media img, .article-card:hover .blog-image img { transform: scale(1.06); }
.area-chip { position: absolute; left: 12px; bottom: 12px; display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: var(--radius-pill); color: var(--ink); background: rgba(255,253,250,.96); box-shadow: 0 6px 18px rgba(16,34,56,.16); font: 600 10px Poppins, sans-serif; letter-spacing: .02em; }
.area-chip i { color: var(--brand); }
.area-card-body { display: flex; flex: 1; flex-direction: column; padding: 18px 18px 20px; }
.area-card h3 { margin-bottom: 8px; font-size: 1.05rem; }
.area-card p { flex: 1; margin-bottom: 14px; color: var(--ink-soft); font-size: 13px; line-height: 1.6; }
.area-card .text-link { font-size: 11px; }

/* --- long-form content --- */
.prose h2 { margin-bottom: 18px; }
.prose h3 { margin: 28px 0 10px; font-size: 1.2rem; }
.prose p, .blog-post p { color: var(--ink-soft); line-height: 1.8; }
.prose strong { color: var(--ink); font-weight: 500; }
.prose a, .accordion-body a, .inline-link { color: var(--brand-dark); font-weight: 500; text-decoration: underline; text-decoration-color: rgba(227,50,59,.35); text-underline-offset: 3px; transition: color .2s ease, text-decoration-color .2s ease; }
.prose a:hover, .accordion-body a:hover, .inline-link:hover { color: var(--brand); text-decoration-color: currentColor; }
.inline-link.light { color: #fff; text-decoration-color: rgba(255,255,255,.5); }
.inline-link.light:hover { color: var(--brand-soft); }
.detail-copy p a { color: var(--brand-dark); font-weight: 500; text-decoration: underline; text-decoration-color: rgba(227,50,59,.35); text-underline-offset: 3px; }
.detail-list li a { color: var(--brand-dark); text-decoration: underline; text-underline-offset: 3px; }
.feature-card p a { color: var(--brand-dark); font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.blog-post { padding: 0 0 44px; margin-bottom: 44px; border-bottom: 1px solid var(--line); scroll-margin-top: 110px; }
.blog-post:last-child { padding-bottom: 0; margin-bottom: 0; border-bottom: 0; }
.sticky-side { position: sticky; top: 110px; }
.resource-box { margin-top: 30px; padding: 26px 26px 14px; background: var(--paper); border: 1px solid var(--line); }
.resource-box ul, .link-list { list-style: none; padding: 0; margin: 0; }
.resource-box li { border-top: 1px solid var(--line); }
.resource-box li:first-child { border-top: 0; }
.resource-box a { display: flex; align-items: flex-start; gap: 12px; padding: 13px 0; }
.resource-box a i { margin-top: 2px; color: var(--brand); }
.resource-box strong, .resource-box small { display: block; }
.resource-box strong { font: 600 13px/1.4 Poppins, sans-serif; transition: color .2s ease; }
.resource-box small { color: var(--ink-soft); font-size: 12px; }
.resource-box a:hover strong { color: var(--brand); }
.link-list li a { display: flex; align-items: center; gap: 12px; padding: 13px 16px; margin-bottom: 8px; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius-sm); font: 500 13px Poppins, sans-serif; transition: border-color .2s ease, transform .2s ease; }
.link-list li a:hover { border-color: var(--brand); transform: translateX(4px); }
.link-list li a i:first-child { color: var(--brand); font-size: 17px; }
.link-list li a .ms-auto { color: var(--brand); font-size: 12px; }
.process-aside .contact-details a { color: var(--ink); }
.process-aside .contact-details small { color: var(--ink-soft); }
.process-aside .contact-details i { color: var(--brand); }
.process-aside .btn-brand { margin-top: 6px; }
.cta-band { margin-top: 64px; }

/* --- footer with service links --- */
.footer-links { gap: 56px; flex-wrap: wrap; }

@media (max-width: 1199px) { .area-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .float-card.tl { left: 14px; } .float-card.br { right: 14px; } }
@media (max-width: 991px) { .section-padding { padding: 84px 0; } .float-card.hero-a { right: 8px; } .float-card.hero-b { left: 8px; } .sticky-side { position: static; } }
@media (max-width: 767px) {
  .section-padding { padding: 68px 0; } .section-padding-sm { padding: 56px 0; }
  .page-hero { padding: 60px 0; } .hero-copy, .page-hero p { font-size: 16px; }
  .area-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .area-card-body { padding: 14px 14px 16px; }
  .float-card { max-width: 205px; padding: 10px 12px; gap: 9px; }
  .float-card .fc-icon { flex-basis: 32px; height: 32px; font-size: 15px; }
  .float-card.tl { top: 14px; left: 10px; } .float-card.br { right: 10px; bottom: 14px; }
  .float-card.hero-a { bottom: 20px; } .float-card.hero-b { bottom: 104px; }
  .hero-actions { gap: 12px; } .footer-links { gap: 36px; }
  .cta-band, .stats-panel, .contact-panel, .service-callout { border-radius: var(--radius); }
  .section-heading-row h2 { margin-bottom: 0; }
}
@media (max-width: 420px) { .area-grid { grid-template-columns: 1fr; } }
/* keep wide Bootstrap gutters (g-5) inside the viewport on tablet and mobile */
@media (max-width: 1320px) { .container { --bs-gutter-x: 3rem; } }
h1 em { font-style: normal; color: var(--brand); }

/* ==========================================================================
   v3 — 16px body text, larger header/footer, 4-up areas, compact footer
   ========================================================================== */
.service-card p, .feature-card p, .contact-page-card p, .article-card p, .process-item p, .area-card p, .footer-brand p,
.accordion-clean .accordion-body, .process-aside li, .detail-list li, .body-copy, .contact-panel p, .cta-band p, .service-callout p { font-size: 16px; }
.process-item p { max-width: 480px; }
.accordion-clean .accordion-button { font-size: 16px; }

/* header */
.announcement-bar { font-size: 12px; letter-spacing: .1em; }
.navbar-nav .nav-link, .navbar-nav .nav-link:hover, .navbar-nav .nav-link.active { color: #000; }
.navbar-nav .nav-link { font-size: 16px; }
.service-toggle { color: #000; font-size: 16px; }
.header-call { padding: 13px 22px; font-size: 16px; }
.brand-mark { min-width: 0; }
.brand-mark img { width: 54px; height: 54px; }
.brand-wordmark, .brand-wordmark b { font-size: 16px; letter-spacing: .05em; line-height: 1.2; }
.service-menu { width: 720px; }
.service-menu-heading span { font-size: 13px; }
.service-menu-heading small { max-width: 320px; font-size: 14px; }
.service-menu-link { grid-template-columns: 38px 1fr 16px; padding: 11px 10px; }
.service-menu-icon { width: 36px; height: 36px; font-size: 16px; }
.service-menu-link strong { font-size: 16px; }
.service-menu-link small { font-size: 13px; }
@media (min-width: 1200px) { .navbar-nav .nav-link { padding: 10px 13px !important; } .navbar-nav .nav-link::after { left: 13px; right: 13px; } }
/* nav now collapses below 1200px so the larger text always fits */
@media (max-width: 1199px) {
  .navbar-collapse { padding: 15px 0 4px; }
  .navbar-nav { align-items: flex-start !important; }
  .navbar-nav .nav-link { padding-left: 0 !important; }
  .navbar-nav .nav-link::after { left: 0; right: 0; }
  .header-call { width: fit-content; margin-top: 9px; }
  .service-toggle { display: block; }
  .service-menu { position: static; display: none; width: 100%; padding: 15px 0; box-shadow: none; border-top: 1px solid var(--line); border-radius: 0; opacity: 1; transform: none; pointer-events: auto; }
  .nav-services.is-open .service-menu { display: block; }
  .service-menu-heading { display: none; }
  .service-menu-grid { gap: 2px 7px; }
}
@media (max-width: 575px) { .service-menu-grid { grid-template-columns: 1fr; } }

/* service cards: the heading is the link, the whole card is clickable */
.service-card { position: relative; }
.service-card h3 { padding-right: 26px; }
.service-card h3 a { color: inherit; transition: color .2s ease; }
.service-card:hover h3 a, .service-card h3 a:focus-visible { color: var(--brand); }
.service-card p { margin-bottom: 0; }
.service-card-arrow { position: absolute; top: 30px; right: 24px; color: var(--brand); font-size: 17px; opacity: .45; transition: transform .25s ease, opacity .25s ease; }
.service-card:hover .service-card-arrow { opacity: 1; transform: translate(3px, -3px); }

/* home process: centred intro, two columns below */
.section-intro { max-width: 720px; margin: 0 auto 50px; text-align: center; }
.section-intro p { margin-bottom: 0; }
.process-section .process-aside ul li { padding: 13px 0; }

/* areas: 4 cities per row */
@media (min-width: 1200px) { .area-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; } }
.area-card h3 { font-size: 1.15rem; }
.area-card .text-link { font-size: 13px; }

/* map popups */
.leaflet-popup-content-wrapper { border-radius: 16px; box-shadow: 0 16px 40px rgba(16,34,56,.18); }
.leaflet-popup-content { margin: 16px 18px; }
.map-popup strong, .map-popup small, .map-popup a { display: block; }
.map-popup strong { font: 600 16px Poppins, sans-serif; color: var(--ink); }
.map-popup small { margin: 2px 0 10px; color: var(--ink-soft); font-size: 13px; }
.map-popup a { margin-top: 4px; color: var(--brand-dark); font: 600 13px Poppins, sans-serif; }
.map-popup a:hover { color: var(--brand); }
.custom-map-marker span { cursor: pointer; }

/* footer: tighter, larger text */
.site-footer { padding: 44px 0 18px; }
.footer-top { display: grid; grid-template-columns: minmax(280px, 1.25fr) 2.2fr; gap: 48px; padding-bottom: 30px; }
.footer-brand { max-width: 380px; }
.footer-brand p { margin-top: 16px; line-height: 1.65; }
.footer-links { display: grid; grid-template-columns: 1.15fr 1fr 1.15fr; gap: 32px; margin-top: 0; }
.footer-links > div { gap: 8px; }
.footer-label { margin-bottom: 6px; font-size: 16px; letter-spacing: .08em; }
.footer-links a { font-size: 16px; }
.footer-bottom { padding-top: 16px; font-size: 14px; }
@media (max-width: 991px) { .footer-top { grid-template-columns: 1fr; gap: 30px; } }
@media (max-width: 575px) { .footer-links { grid-template-columns: 1fr 1fr; gap: 28px 20px; } }


/* ==========================================================================
   WordPress additions (not part of the original static design)
   ========================================================================== */
.odc-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } }
.screen-reader-text { border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal !important; }
.screen-reader-text:focus { background: #fff; clip: auto; clip-path: none; color: var(--ink, #102238); display: block; height: auto; left: 8px; padding: 12px 18px; top: 8px; width: auto; z-index: 100000; }
.alignleft { float: left; margin: 0 1.5rem 1rem 0; }
.alignright { float: right; margin: 0 0 1rem 1.5rem; }
.aligncenter { display: block; margin: 0 auto 1rem; }
.wp-caption { max-width: 100%; }
.wp-caption-text { font-size: .875rem; opacity: .75; }
.entry-content > * + * { margin-top: 1.1rem; }
.entry-content img { max-width: 100%; height: auto; border-radius: 16px; }
.nav-links { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-top: 2.5rem; }
.nav-links .page-numbers { padding: 8px 16px; border: 1px solid var(--line, #ddd6c8); border-radius: 999px; text-decoration: none; color: inherit; }
.nav-links .page-numbers.current { background: var(--ink, #102238); color: #fff; border-color: transparent; }
.search-form { display: flex; gap: 10px; max-width: 520px; }
.search-form label { flex: 1; margin: 0; }
.search-form .search-field { width: 100%; padding: 14px 18px; border: 1px solid var(--line, #ddd6c8); border-radius: 999px; background: #fff; font: inherit; }
.search-form .search-submit { padding: 14px 24px; border: 0; border-radius: 999px; background: var(--ink, #102238); color: #fff; font: inherit; font-weight: 600; cursor: pointer; }
.error-code { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: clamp(5rem, 14vw, 9rem); line-height: 1; margin: 0 0 .5rem; opacity: .12; }

/* Mobile / tablet menu: the desktop hover/open rule (translate -50%) was shifting the open Services list off-screen */
@media (max-width: 1199px) {
	.nav-services:hover .service-menu,
	.nav-services.is-open .service-menu { transform: none; left: auto; }
	.service-menu::before { display: none; }
	.service-menu { overflow: visible; }
}
