/*
 * West Michigan Generator - site-specific overrides on top of the base theme.
 * Loaded AFTER style.css so these win.
 */

/* Brand color: WMG royal blue (sampled from the logo) replaces the reference theme's gold.
   --title-color stays the theme's navy, which matches WMG's dark logo text. */
:root {
    --theme-color:     #1754B8;
    --theme-color2:    #123f8c;
    --theme-color3:    #1754B8;
    --theme-color-rgb: 23, 84, 184;
    --smoke-color2:    #f4f7fb;
    --smoke-color3:    #eef3fb;
}

/* The hero content sits above the fold. Keep it visible even when the theme's
   data-ani entrance animation does not run to completion (headless capture,
   prefers-reduced-motion, etc.). The animation still plays where supported. */
.hero-style1 [data-ani] {
    opacity: 1 !important;
}

/* Logo sizing (header, mobile menu, footer). */
.header-logo img { max-height: 54px; width: auto; }
.mobile-logo img { max-height: 46px; width: auto; }
.footer-wrapper .about-logo img { max-height: 54px; width: auto; }

/* Header height: WMG's wide, short horizontal logo left the white nav bar at ~56px, which
   read as cramped. Give it the reference's vertical breathing room (~100px) with the logo,
   nav, and button centered. */
.th-header.header-layout1 .menu-area {
    padding-top: 22px;
    padding-bottom: 22px;
}

/* Footer: the reference theme's dark footer comes from mask-image shapes that were
   simplified out of footer.php; use a solid brand-navy background instead so the
   white logo and light text read correctly. */
.footer-wrapper.footer-layout1 { background-color: #10233f; }
.footer-wrapper .footer-top .box-text,
.footer-wrapper .th-widget-about .about-text,
.footer-wrapper .footer-text,
.footer-wrapper .footer-text a,
.footer-wrapper .footer-widget .menu a,
.footer-wrapper .copyright-text,
.footer-wrapper .copyright-text a,
.footer-wrapper .footer-links a { color: #d8e2f2; }
.footer-wrapper .widget_title { color: #ffffff; }
.footer-wrapper .footer-top .box-text a,
.footer-wrapper .footer-text a:hover,
.footer-wrapper .footer-widget .menu a:hover,
.footer-wrapper .copyright-text a:hover,
.footer-wrapper .footer-links a:hover { color: #ffffff; }
.footer-wrapper .th-social a { color: #d8e2f2; }
.footer-wrapper .th-social a:hover { color: var(--theme-color); }

/* Contrast fixes after the blue rebrand: the theme paired navy text with the accent
   color, which read fine when the accent was gold but not now that it is blue. */
.link-btn3,
.link-btn3:hover { color: #ffffff; }
.process-card3 .box-number { color: #7aa7ea; }

/* Feature-card icons as brand-blue circular badges (the theme markup expects an <img>;
   we use FontAwesome icons, so give them a badge to match the reference's icon treatment). */
.feature-card.style2 .box-img {
    width: 72px; height: 72px; border-radius: 50%;
    background: var(--theme-color);
    display: inline-flex; align-items: center; justify-content: center;
    margin-bottom: 22px;
}
.feature-card.style2 .box-img i { font-size: 30px; color: #ffffff; line-height: 1; }

/* Testimonial "Google Review" subtitle sits on the navy card - keep it readable. */
.testi-card2 .testi-card-profile .box-desig { color: #9fb8e0; }

/* Inner-page breadcrumb: the theme colors the current-page crumb with the accent
   (theme-color2), which was a legible gold in the reference but is dark blue here and
   nearly disappears on the dark hero. Use a light tint so it stays readable. */
.breadcumb-menu li:last-child { color: #cdd9f2; }

/* Content lists: the theme force-capitalizes list items, which Title-Cases full
   sentences ("Not An Electrician Who..."). Our content is written in sentence case,
   so let it render as written. */
.page-single ul li { text-transform: none; }

/* Service-area city-link cards. */
.area-link-card {
    display: block;
    padding: 14px 18px;
    border: 1px solid #e2e8f3;
    border-radius: 8px;
    background: #f4f7fb;
    color: var(--title-color);
    font-weight: 600;
    text-decoration: none;
    transition: all 0.2s ease;
}
.area-link-card i { color: var(--theme-color); margin-right: 8px; }
/* City links are now <h3><a class="area-link-card">; the card styling lives on the
   anchor, so keep the heading from imposing its own display size/margins. */
.area-link-title { margin: 0; font-size: inherit; font-weight: inherit; line-height: inherit; }
.area-link-card:hover {
    background: var(--theme-color);
    border-color: var(--theme-color);
    color: #ffffff;
}
.area-link-card:hover i { color: #ffffff; }

/* Top-bar icons: the theme colors them with the dark title color, which vanished on
   the blue bar. Match the white bar text (the reference shows bright icons). */
.header-top .header-links i { color: #ffffff !important; }

/* Contact form section (#contact-sec): the brand-blue shape sits behind the heading
   and intro. Blue is a dark ground, so this copy goes white to stay readable (the
   template colors it dark for its light-orange reference, where dark still reads). */
#contact-sec .consulting-form-wrap1 .sub-title2,
#contact-sec .consulting-form-wrap1 .sec-title,
#contact-sec .consulting-form-wrap1 .sec-title .text-theme {
    color: #ffffff !important;
}
#contact-sec .consulting-form-wrap1 .title-area p {
    color: rgba(255, 255, 255, 0.92);
}

/* Review stars: a rating reads best as warm gold, even on a blue-brand site (the
   reference uses its orange accent). The pale-blue theme accent was hard to read. */
.testi-card_review i,
.testi-card2 .testi-card_review i { color: #f5a623; }

/* Hero title: 84px pushed the CTA buttons below the fold on a standard laptop.
   Bring the headline down to a size that keeps the buttons in view. */
.hero-2 .hero-style1 .hero-title { font-size: clamp(2.5rem, 4.4vw, 3.5rem); line-height: 1.08; }
.hero-2 .hero-style1 .hero-text { margin-top: 18px; }

/* In-content headings inherit the template's display sizes (h2 64px, h3 36px), which are
   hero-scale and tower over the body copy on every content page. Bring them to a readable
   content scale matching the reference (32px content headings). Scoped to .page-single, so
   hero / breadcrumb / section titles (which use their own classes) are untouched. */
.page-single h2 { font-size: 32px; line-height: 1.3; }
.page-single h3 { font-size: 24px; line-height: 1.4; }

/* Meet the Team - static cards. The template's .team-card hides the name until hover,
   which is wrong for a team page, so these show the photo, name, and role at all times. */
.wmg-team-photo {
    border-radius: 16px;
    overflow: hidden;
    background: #f2f7ff;
    aspect-ratio: 1 / 1;
    margin-bottom: 20px;
}
.wmg-team-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.wmg-team-name { font-size: 22px; line-height: 1.3; margin: 0 0 4px; color: var(--title-color); }
.wmg-team-role { color: var(--theme-color); font-weight: 600; }

/* Offer / ad landing hero: a darkened install-photo background (the .breadcumb-wrapper
   ::after overlay keeps the content readable), with "START HERE!" + the form card on the
   left and a framed install photo on the right. Keeps
   the main header + footer per the Power Source offer-page standard. */
.offer-hero .container { padding-top: 190px; padding-bottom: 70px; position: relative; z-index: 2; }
.offer-hero .offer-side-img { margin-top: 40px; }
.offer-start-here { margin-bottom: 14px; }
.offer-start-label { color: #f5a623; font-weight: 700; font-size: 1.4rem; letter-spacing: 0.5px; }
.offer-arrow { display: block; color: #f5a623; font-size: 1.8rem; margin-top: 4px; }
.offer-form-card { box-shadow: 0 20px 45px rgba(0, 0, 0, 0.25); }
.offer-form-card h2 { color: var(--title-color); }
.offer-form-intro { font-size: 0.95rem; color: var(--body-color); }
.offer-side-img { box-shadow: 0 15px 40px rgba(0, 0, 0, 0.35); }
/* Right-column headline + blurb beside the form (over the darkened photo). */
.offer-right-headline { color: #ffffff; font-weight: 700; font-size: clamp(1.8rem, 2.8vw, 2.4rem); line-height: 1.15; margin-bottom: 14px; text-shadow: 0 2px 12px rgba(0, 0, 0, 0.55); }
.offer-right-headline .text-theme { color: #f5a623 !important; }
.offer-right-body { color: rgba(255, 255, 255, 0.95); font-size: 1.05rem; line-height: 1.6; text-shadow: 0 1px 8px rgba(0, 0, 0, 0.55); }

/* Inner-page hero subheading (the benefit tagline under the H1). */
.breadcumb-subtitle {
    color: #ffffff;
    font-weight: 400;
    font-size: 1.15rem;
    line-height: 1.4;
    margin: 10px auto 4px;
    max-width: 680px;
    text-align: center;
}

/* CTA "Book Your Free On-Site Assessment" (style10): dark navy text on the blue fill
   read as blue-on-blue. Make the label white like the other filled buttons. */
.th-btn.style10 { color: #ffffff !important; }

/* Sticky bottom mobile nav (Power Source build standard): 3 buttons, mobile only. */
.mobile-sticky-bar { display: none; }
@media (max-width: 991px) {
    .mobile-sticky-bar {
        display: flex;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 999;
        background: #10233f;
        box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.22);
    }
    .mobile-sticky-bar__item {
        flex: 1 1 0;
        display: flex; flex-direction: column; align-items: center; justify-content: center;
        gap: 3px;
        padding: 9px 4px;
        color: #ffffff !important;
        text-decoration: none;
        line-height: 1.1;
        border-right: 1px solid rgba(255, 255, 255, 0.12);
    }
    .mobile-sticky-bar__item:last-child { border-right: none; }
    .mobile-sticky-bar__item i { font-size: 1.2rem; color: #ffffff; }
    .mobile-sticky-bar__label { font-size: 0.78rem; font-weight: 600; }
    .mobile-sticky-bar__item.is-primary { background: var(--theme-color); }
    .mobile-sticky-bar__item:active { background: var(--theme-color); }
    /* Keep content and the scroll-top button clear of the fixed bar. */
    body { padding-bottom: 60px; }
    .scroll-top { bottom: 74px !important; }
}

/* Contact map: ensure the embed has a visible height. */
.contact-map { line-height: 0; }
.contact-map iframe,
.google-map__one { width: 100%; height: 420px; border: 0; display: block; }

/* ============================================================
   SEO heading pass (home page) - keep a clean h1 > h2 > h3 > h4
   outline without altering the visual design. The headings below
   were retagged in the markup; these rules neutralize the base
   heading sizing so the original look is preserved.
   ============================================================ */

/* About list: service links are now <h3><a>. The anchor carries the
   button styling, so strip the heading's own box metrics. */
.about-wrap3 .list h3 { margin: 0; font-size: inherit; font-weight: inherit; line-height: inherit; }

/* "Communities We Serve" accordion bar is now an <h3>; the button inside
   carries the styling, so keep the header flush like the old <div>. */
.faq-wrap1 .accordion-card .accordion-header { margin: 0; }

/* Community links are now <h4><a>; the inline-styled anchor carries the
   look. (font:inherit is set inline on the h4 for the same reason.) */
.faq-wrap1 .accordion-body h4 { display: inline; margin: 0; }

/* Process section: the theme yanks the slider up 300px on large screens,
   which covered the section title and image. Bring the title to the top of
   its column and let the slider overlap only slightly (image cut a little). */
@media (min-width: 1400px) {
    .process2 .title-area { margin-top: 0; }
    .process2 .process-slider { margin-top: -60px; }
}

/* ============================================================
   Sidebar section headings + local-page "Service Area" city list.
   ============================================================ */

/* "Our Services" nav items are <li><h3><a>; the anchor carries the pill styling, so
   neutralize the heading wrappers. Scoped to list items so widget titles (and the
   offer/blog sidebars) are untouched. */
.sidebar-area .widget_categories li h3 { margin: 0; font-size: inherit; font-weight: inherit; line-height: inherit; }

/* Local-page sidebar "Service Area": all cities in two columns, each an arrow-led nav
   link. The <h3> wrappers are nav items, not display headings, so neutralize them. */
.sidebar-city-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px 18px;
}
.sidebar-city-list li { margin: 0; }
.sidebar-city-list h3 { margin: 0; font-size: inherit; font-weight: inherit; line-height: inherit; }
.sidebar-city-list a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--title-color);
    font-weight: 600;
    font-size: 16px;
}
.sidebar-city-list a i { color: var(--theme-color); font-size: 0.72em; flex: none; }
.sidebar-city-list a:hover { color: var(--theme-color); }
.sidebar-city-list li.current a { color: var(--theme-color); font-weight: 700; }

/* ============================================================
   Blog (listing, category, single post) - content migrated from the
   old Wix site. The theme's .blog-date uses an <h3> for the day number;
   these pages use <span class="blog-date__day"> instead so blog cards do
   not inject stray headings into the page's SEO heading outline.
   ============================================================ */
/* Date badge: single line "18 Mar" in a compact white pill. Selectors match the
   theme's own specificity (.th-blog.has-post-thumbnail .blog-date + the label class)
   so these win over its taller stacked day/month styling. */
.th-blog.has-post-thumbnail .blog-date {
    padding: 5px 12px;
    text-align: center;
    width: max-content;   /* size to "18 Mar" (the theme sized it for a stacked day/month) */
    max-width: none;      /* lift the theme's .blog-single .blog-date max-width:60px cap */
}
.th-blog.has-post-thumbnail .blog-date .blog-date__label {
    display: block;
    color: var(--black-color);
    font-size: 15px;
    line-height: 1.2;
    font-weight: 700;
    white-space: nowrap;
}

/* Featured image fills its container width. The migrated source images are
   narrower than the card, so without this they leave an empty gap on the right. */
.th-blog .blog-img { line-height: 0; }
.th-blog .blog-img img { width: 100%; height: auto; display: block; }

/* Blog card titles/content are left-aligned (the theme centers card titles). */
.th-blog-wrapper .blog-title,
.th-blog-wrapper .blog-content { text-align: left; }

/* Category chips: room inside the pill. `.blog-meta a.border1` matches the theme's
   `.blog-meta a:last-child` specificity (0,2,1) and, coming later, restores the right
   padding the theme strips from the last chip. Flex gap spaces the chips apart. */
.th-blog-wrapper .blog-meta { gap: 8px 10px; }
.blog-meta a.border1 { padding: 4px 14px; line-height: 1.5; margin-right: 0; }

/* Sidebar widget titles are <span>/<div> (not <h3>) on blog + content pages;
   keep the heading look without the heading tag. */
.sidebar-area .widget .widget_title { display: block; }

/* Single-post hero meta line: author / date / read time under the title. */
.breadcumb-meta {
    margin-top: 12px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px 24px;
    color: #fff;
    font-weight: 500;
}
.breadcumb-meta span { display: inline-flex; align-items: center; }
.breadcumb-meta i { margin-right: 8px; color: #fff; opacity: .85; }

/* Migrated post body spacing. */
.blog-post-body p { margin-bottom: 1.2em; }
.blog-post-body ol,
.blog-post-body ul { margin: 0 0 1.4em 1.25em; }
.blog-post-body li { margin-bottom: .5em; }
.blog-post-body a { color: var(--theme-color); word-break: break-word; }
