/*
Theme Name: SW Services
Theme URI: https://swservicesinc.com
Author: Riddle Technology
Description: Custom classic theme for SW Services Inc. — industrial pump, motor, and drive equipment sales, repair, and field service.
Version: 2.0.0
License: Proprietary
Text Domain: swservices
*/

/* ========== Design tokens ========== */
:root {
    --ink:          #0B1C2E;
    --ink-2:        #13293F;
    --ink-3:        #1E3A55;
    --paper:        #FFFFFF;
    --mist:         #F4F6F8;
    --mist-2:       #E7ECF1;
    --red:          #C8232C;
    --red-deep:     #A4181F;
    --text:         #1B2A3A;
    --muted:        #5C6B7A;
    --rule:         #E0E5EB;
    --rule-dark:    rgba(255,255,255,.12);

    /* Legacy aliases (older pages + blocks still reference these). */
    --brand-red:      var(--red);
    --brand-red-dark: var(--red-deep);
    --navy:           var(--ink);
    --navy-dark:      var(--ink);
    --gray-100:       var(--mist);
    --gray-200:       var(--mist-2);
    --gray-700:       var(--text);
    --white:          var(--paper);

    --shadow-sm:  0 1px 3px rgba(11,28,46,.08);
    --shadow-md:  0 4px 16px rgba(11,28,46,.10);
    --shadow-lg:  0 12px 40px -10px rgba(11,28,46,.25);
    --radius:     4px;
    --radius-lg:  8px;
    --container:  1200px;
    --font-head:  "Archivo", system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
    --font-body:  "Geist", system-ui, -apple-system, Segoe UI, Helvetica, Arial, sans-serif;
    --font-mono:  "Geist Mono", "SFMono-Regular", ui-monospace, monospace;
}

/* ========== Reset ========== */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    padding: 0;
    font-family: var(--font-body);
    color: var(--text);
    background: var(--paper);
    font-size: 16px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-head);
    color: var(--ink);
    letter-spacing: -0.015em;
    margin: 0;
}
h1 { font-weight: 700; line-height: 1.08; }
h2 { font-weight: 700; line-height: 1.12; }
h3 { font-weight: 600; line-height: 1.2; }
p { margin: 0 0 1em; }

.wrap, .container {
    max-width: var(--container);
    margin: 0 auto;
    padding: 0 32px;
}
@media (max-width: 760px) {
    .wrap, .container { padding: 0 20px; }
}

/* ========== Eyebrow ========== */
.eyebrow {
    display: inline-block;
    font-family: var(--font-head);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--red);
}

/* ========== Buttons ==========
   Two sources of buttons on this site:
     1. Direct anchors in our theme:        <a class="btn btn-primary">...</a>
     2. Gutenberg wp:button blocks:
            <div class="wp-block-button btn-primary">
              <a class="wp-block-button__link wp-element-button">text</a>
            </div>
   For (2), Gutenberg's save() puts the user className ONLY on the wrapper
   div, never on the inner anchor. So our color/border rules MUST target
   either `a.btn-X` (case 1) or `.wp-block-button.btn-X > .wp-block-button__link`
   (case 2). A bare `.btn-X` selector matches BOTH the wrapper div and any
   anchor — which causes a "button in a button" double-paint bug.
   ============================================================ */

a.btn,
.wp-block-button > .wp-block-button__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-family: var(--font-head);
    font-weight: 600;
    font-size: 14.5px;
    padding: 14px 26px;
    border-radius: 4px;
    border: 1.5px solid transparent;
    transition: all 0.18s ease;
    cursor: pointer;
    text-decoration: none;
    box-shadow: none;
    line-height: 1.2;
}

/* The wp-block-button wrapper is a layout-only container, NOT a button.
   Strip any borders/padding/backgrounds Gutenberg or other CSS might apply. */
.wp-block-button { background: transparent; border: 0; padding: 0; }

a.btn-primary,
.wp-block-button.btn-primary > .wp-block-button__link { background: var(--red); color: #fff; border-color: var(--red); }
a.btn-primary:hover,
.wp-block-button.btn-primary > .wp-block-button__link:hover { background: var(--red-deep); border-color: var(--red-deep); color: #fff; }

a.btn-ghost-light,
.wp-block-button.btn-ghost-light > .wp-block-button__link { background: transparent; color: #fff; border-color: rgba(255,255,255,.4); }
a.btn-ghost-light:hover,
.wp-block-button.btn-ghost-light > .wp-block-button__link:hover { border-color: #fff; background: rgba(255,255,255,.06); color: #fff; }

a.btn-ghost-dark,
.wp-block-button.btn-ghost-dark > .wp-block-button__link { background: transparent; color: var(--ink); border-color: var(--rule); }
a.btn-ghost-dark:hover,
.wp-block-button.btn-ghost-dark > .wp-block-button__link:hover { border-color: var(--ink); background: var(--mist); color: var(--ink); }

a.btn-white,
.wp-block-button.btn-white > .wp-block-button__link { background: #fff; color: var(--red-deep); border-color: #fff; }
a.btn-white:hover,
.wp-block-button.btn-white > .wp-block-button__link:hover { background: #FFE8EA; color: var(--red-deep); border-color: #FFE8EA; }

a.btn-outline,
.wp-block-button.btn-outline > .wp-block-button__link { background: transparent; color: #fff; border-color: rgba(255,255,255,.7); }
a.btn-outline:hover,
.wp-block-button.btn-outline > .wp-block-button__link:hover { border-color: #fff; background: rgba(255,255,255,.08); color: #fff; }

.btn-link, a.btn-link {
    display: inline-flex; align-items: center; gap: 6px;
    font-family: var(--font-head); font-weight: 600; font-size: 13.5px;
    color: var(--red); letter-spacing: 0.01em;
}
.btn-link:hover { color: var(--red-deep); }
.btn-link .arr { transition: transform 0.18s; }
.btn-link:hover .arr { transform: translateX(3px); }

.btn-row, .wp-block-buttons.btn-row,
.wp-block-buttons { display: flex; gap: 14px; flex-wrap: wrap; margin: 0; }
.wp-block-buttons > .wp-block-button { margin: 0; }
.btn-row--center, .wp-block-buttons.btn-row--center { justify-content: center; }

/* ========== Top strip ========== */
.topstrip {
    background: var(--ink);
    color: rgba(255,255,255,.78);
    border-bottom: 1px solid rgba(255,255,255,.06);
    font-size: 12.5px;
    letter-spacing: 0.04em;
}
.topstrip .row {
    display: flex; align-items: center; justify-content: space-between; gap: 28px;
    padding: 10px 32px;
    max-width: 1440px; margin: 0 auto;
}
.topstrip .ts-left { display: flex; align-items: center; gap: 10px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; font-size: 11.5px; }
.topstrip .ts-right { display: flex; align-items: center; gap: 18px; }
.topstrip .dot {
    width: 7px; height: 7px; border-radius: 50%;
    background: #3FD47A;
    box-shadow: 0 0 0 3px rgba(63,212,122,.18);
    animation: ts-pulse 2.4s ease-in-out infinite;
}
@keyframes ts-pulse { 0%,100% { opacity: 1; } 50% { opacity: .55; } }
.topstrip a { color: rgba(255,255,255,.85); }
.topstrip a:hover { color: #fff; }
.topstrip .sep { color: rgba(255,255,255,.25); }
@media (max-width: 900px) {
    .topstrip .ts-right span:nth-child(1),
    .topstrip .ts-right span:nth-child(2),
    .topstrip .ts-right .sep { display: none; }
}
@media (max-width: 600px) { .topstrip { display: none; } }

/* ========== Nav ========== */
.site-header { background: var(--paper); position: relative; z-index: 50; }
nav.main {
    background: #fff;
    border-bottom: 1px solid var(--rule);
    position: sticky;
    top: 0;
    z-index: 50;
}
nav.main .row {
    display: flex; align-items: center; gap: 32px;
    padding: 18px 32px;
    max-width: 1440px; margin: 0 auto;
}
.site-logo,
.logo {
    display: flex; align-items: center; gap: 10px;
    font-family: var(--font-head); font-weight: 800; font-size: 22px;
    color: var(--ink); letter-spacing: -0.02em; line-height: 1;
}
.site-logo img, .logo img { max-height: 64px; width: auto; height: auto; }
.logo-mark { width: 38px; height: 38px; position: relative; flex: none; }
.logo-mark svg { width: 100%; height: 100%; }
.logo-text { display: inline-flex; flex-direction: column; gap: 3px; }
.logo-text small {
    font-family: var(--font-mono); font-weight: 500; font-size: 9.5px;
    letter-spacing: 0.22em; text-transform: uppercase; color: var(--muted);
}

nav.main ul {
    list-style: none; display: flex; gap: 4px;
    margin: 0 auto 0 12px; padding: 0;
}
nav.main ul li { list-style: none; }
nav.main ul a {
    display: inline-block; padding: 10px 14px; border-radius: 4px;
    font-family: var(--font-body); font-weight: 500; font-size: 14.5px;
    color: var(--text);
    transition: color 0.15s, background 0.15s;
}
nav.main ul a:hover { color: var(--red); background: var(--mist); }
nav.main .current-menu-item > a,
nav.main ul a.active { color: var(--red); }

.nav-right { display: flex; align-items: center; gap: 20px; }
.nav-phone {
    font-family: var(--font-head); font-weight: 700; font-size: 16px;
    color: var(--ink); line-height: 1;
    display: inline-flex; flex-direction: column; gap: 3px; text-align: right;
}
.nav-phone small {
    font-family: var(--font-mono); font-weight: 500; font-size: 9.5px;
    letter-spacing: 0.22em; text-transform: uppercase; color: var(--muted);
}
.nav-phone:hover { color: var(--red); }

.nav-toggle { display: none; background: none; border: 0; padding: 8px; cursor: pointer; }
.nav-toggle span { display: block; width: 26px; height: 3px; background: var(--ink); margin: 5px 0; border-radius: 2px; transition: all 0.2s; }
@media (max-width: 900px) {
    nav.main ul { display: none; }
    nav.main ul.is-open {
        display: block;
        position: absolute; top: 100%; left: 0; right: 0;
        background: #fff; border-top: 1px solid var(--rule);
        box-shadow: var(--shadow-md); padding: 8px;
    }
    nav.main ul.is-open li { display: block; }
    .nav-phone { display: none; }
    .nav-toggle { display: block; }
}

/* ========== Hero ========== */
.hero {
    --hero-bg: url("assets/img/hero-pumproom.jpg");
    position: relative;
    background: var(--ink);
    color: #fff;
    overflow: hidden;
    isolation: isolate;
    padding: 0;
    min-height: 720px;
    display: flex;
    align-items: center;
}
.hero::before {
    content: ""; position: absolute; inset: 0;
    background:
        linear-gradient(180deg, rgba(11,28,46,.68) 0%, rgba(11,28,46,.78) 55%, rgba(11,28,46,.92) 100%),
        var(--hero-bg, none) center/cover no-repeat;
    filter: saturate(.85) contrast(1.05);
    z-index: -2;
}
.hero::after {
    content: ""; position: absolute; inset: 0;
    background-image:
        linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
    background-size: 80px 80px;
    opacity: .35;
    z-index: -1;
}
.hero .wrap {
    position: relative;
    width: 100%;
    padding-top: 120px;
    padding-bottom: 140px;
}
.hero .content {
    text-align: center;
    max-width: 840px;
    margin: 0 auto;
    position: relative;
    z-index: 2;
}
.hero .eyebrow { color: #ff8a90; opacity: .92; }
.hero h1 {
    font-size: clamp(38px, 5.2vw, 66px);
    color: #fff;
    margin: 16px 0 22px;
    letter-spacing: -0.02em;
}
.hero p.lede {
    font-size: clamp(16px, 1.3vw, 19px);
    color: rgba(255,255,255,.82);
    margin: 0 auto 36px;
    max-width: 640px;
    line-height: 1.55;
}
.hero-ctas { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.hero-meta {
    position: absolute;
    font-family: var(--font-head); font-size: 11px;
    color: rgba(255,255,255,.55); letter-spacing: 0.22em; text-transform: uppercase;
    display: flex; gap: 28px; align-items: center;
    z-index: 2;
    margin: 0;
}
.hero-meta-left { left: 32px; bottom: 32px; }
.hero-meta-left::before { content: ""; width: 32px; height: 1px; background: rgba(255,255,255,.35); }
.hero-meta-right { right: 32px; bottom: 32px; }
.hero-meta-right::after { content: ""; width: 32px; height: 1px; background: rgba(255,255,255,.35); margin-left: 12px; }
@media (max-width: 900px) { .hero-meta { display: none; } }

/* ========== Stats bar ========== */
.stats {
    background: var(--mist);
    border-bottom: 1px solid var(--rule);
}
.stats .grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    max-width: var(--container);
    margin: 0 auto;
}
.stat {
    padding: 34px 24px;
    text-align: center;
    border-right: 1px solid var(--rule);
    position: relative;
    transition: background 0.2s, transform 0.2s;
    cursor: default;
}
.stat:last-child { border-right: none; }
.stat-icon { width: 26px; height: 26px; margin: 0 auto 12px; color: var(--red); opacity: .85; }
.stat-icon svg { width: 100%; height: 100%; }
.stat .n {
    font-family: var(--font-head); font-weight: 700;
    font-size: clamp(32px, 3.6vw, 44px);
    color: var(--red); line-height: 1;
    letter-spacing: -0.02em;
}
.stat .l {
    margin: 10px 0 0; font-size: 13px; color: var(--muted);
    letter-spacing: 0.02em;
}
.stat .n, .stat .l, .stat .stat-icon { transition: color 0.22s, transform 0.22s; }
.stat:hover { background: var(--ink); }
.stat:hover .n { color: #fff; transform: scale(1.04); }
.stat:hover .l { color: rgba(255,255,255,.78); }
.stat:hover .stat-icon { color: #ff8a90; transform: translateY(-2px); }
@media (max-width: 760px) {
    .stats .grid { grid-template-columns: repeat(2, 1fr); }
    .stat { border-bottom: 1px solid var(--rule); }
    .stat:nth-child(2) { border-right: none; }
}

/* ========== Section head ========== */
.section-head { text-align: center; max-width: 640px; margin: 0 auto 48px; }
.section-head h2 { font-size: clamp(28px, 3vw, 40px); margin: 14px 0; }
.section-head p { color: var(--muted); margin: 0; font-size: 16.5px; }

/* ========== Services grid ========== */
section.services { padding: 96px 0; }
.service-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
.service-card {
    background: #fff;
    border: 1px solid var(--rule);
    padding: 28px 24px 26px;
    border-radius: 6px;
    transition: border-color 0.18s, transform 0.18s, box-shadow 0.18s;
    display: flex; flex-direction: column; gap: 14px;
    text-align: center; align-items: center;
    position: relative; overflow: hidden;
}
.service-card:hover {
    border-color: var(--red);
    transform: translateY(-2px);
    box-shadow: 0 10px 30px -15px rgba(11,28,46,.15);
}
.service-icon {
    width: 44px; height: 44px;
    background: var(--red);
    border-radius: 4px;
    display: flex; align-items: center; justify-content: center;
    color: #fff;
    margin: 0 auto;
}
.service-icon svg { width: 24px; height: 24px; }
.service-card h3 { font-size: 19px; margin: 0; }
/* Description paragraph fills available space so the learn-more link sits at the bottom. */
.service-card p { font-size: 14.5px; color: var(--muted); margin: 0; }
.service-card p:not(.learn-more) { flex-grow: 1; }
/* learn-more wraps the .btn-link in a paragraph so it remains a native editable block. */
.service-card .learn-more { margin: 0; align-self: center; flex-grow: 0; }
.service-card .btn-link { margin: 0; }
.service-card .num {
    position: absolute; top: 12px; right: 18px;
    font-family: var(--font-head); font-weight: 800;
    font-size: 68px; line-height: 1; color: var(--mist);
    letter-spacing: -0.04em; transition: color 0.18s;
    z-index: 0;
}
.service-card:hover .num { color: #FCE7E9; }
.service-card > * { position: relative; z-index: 1; }
.service-card::after {
    content: ""; position: absolute; top: 0; right: 0;
    width: 32px; height: 32px;
    background: linear-gradient(225deg, var(--red) 50%, transparent 50%);
    opacity: 0; transition: opacity 0.18s;
}
.service-card:hover::after { opacity: 1; }
@media (max-width: 900px) { .service-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .service-grid { grid-template-columns: 1fr; } }

/* ========== Dark feature (EASA) ========== */
section.feature-dark {
    background: var(--ink);
    color: #fff;
    padding: 96px 0;
}
.feature-dark .grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 72px;
    align-items: center; position: relative;
}
.feature-dark .eyebrow { color: #ff8a90; }
.feature-dark h2 { color: #fff; font-size: clamp(30px, 3.2vw, 42px); margin: 14px 0 20px; }
.feature-dark p.copy { color: rgba(255,255,255,.78); font-size: 16.5px; margin: 0 0 28px; }
.feature-dark ul { list-style: none; padding: 0; margin: 0 0 32px; display: flex; flex-direction: column; gap: 12px; }
.feature-dark ul li { display: flex; align-items: flex-start; gap: 12px; color: rgba(255,255,255,.9); font-size: 15.5px; }
.feature-dark ul li .chk {
    flex-shrink: 0; width: 18px; height: 18px; border-radius: 50%;
    background: var(--red); color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 700; margin-top: 3px;
}
/* feature-img-real renders as a wp:image block: <figure class="wp-block-image feature-img-real"><img/></figure>
   The figure holds the aspect ratio and rounded corners; the img inside fills via object-fit. */
.feature-img-real {
    aspect-ratio: 4/3;
    border-radius: 6px;
    position: relative;
    border: 1px solid rgba(255,255,255,.1);
    overflow: hidden;
    margin: 0;
    background: linear-gradient(135deg, #1E3A55 0%, #13293F 100%); /* fallback while img loads */
}
.feature-img-real img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.feature-img-real::after {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(135deg, rgba(11,28,46,.1) 0%, rgba(11,28,46,.35) 100%);
    pointer-events: none;
}
.feature-stat-card {
    position: absolute; bottom: -28px; left: -28px; z-index: 3;
    background: var(--red); color: #fff;
    padding: 20px 24px 18px; border-radius: 6px;
    box-shadow: 0 20px 50px -15px rgba(0,0,0,.6);
    min-width: 200px;
}
.feature-stat-card .big { font-family: var(--font-head); font-weight: 800; font-size: 38px; line-height: 1; letter-spacing: -0.02em; }
.feature-stat-card .lbl { font-size: 11.5px; letter-spacing: 0.18em; text-transform: uppercase; margin-top: 6px; color: rgba(255,255,255,.92); }
@media (max-width: 900px) {
    .feature-dark .grid { grid-template-columns: 1fr; gap: 40px; }
    .feature-stat-card { position: static; margin-top: -40px; width: fit-content; }
}

/* ========== Downtime / predictive maintenance ========== */
section.downtime {
    padding: 96px 0;
    background: var(--mist);
}
.downtime .grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 72px;
    align-items: center;
}
.downtime h2 { font-size: clamp(28px, 3vw, 38px); margin: 12px 0 18px; }
.downtime p.copy { color: var(--muted); font-size: 16.5px; margin: 0 0 28px; max-width: 48ch; }
.downtime ul { list-style: none; padding: 0; margin: 0 0 28px; display: flex; flex-direction: column; gap: 10px; }
.downtime ul li { display: flex; align-items: flex-start; gap: 12px; color: var(--text); font-size: 15.5px; }
.downtime ul li .chk {
    flex-shrink: 0; width: 18px; height: 18px; border-radius: 50%;
    background: var(--red); color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 700; margin-top: 3px;
}
@media (max-width: 900px) { .downtime .grid { grid-template-columns: 1fr; gap: 40px; } }

/* Dashboard mock (predictive maintenance visualization) */
.dashboard {
    background: var(--ink); color: #fff;
    border-radius: 8px; overflow: hidden;
    aspect-ratio: 4/3; padding: 20px;
    display: grid; grid-template-rows: auto 1fr auto; gap: 14px;
    font-family: var(--font-mono);
    border: 1px solid rgba(255,255,255,.1);
    box-shadow: 0 20px 50px -20px rgba(11,28,46,.35);
}
.dash-head { display: flex; justify-content: space-between; align-items: center; font-size: 11px; letter-spacing: 0.15em; text-transform: uppercase; }
.dash-head .dot {
    display: inline-block; width: 6px; height: 6px; border-radius: 50%;
    background: #3ECF83; margin-right: 6px;
    box-shadow: 0 0 6px #3ECF83;
    animation: pulse 1.8s ease-in-out infinite;
}
@keyframes pulse { 50% { opacity: .4; } }
.dash-tag { color: rgba(255,255,255,.55); }
.dash-body { display: grid; grid-template-columns: 1.3fr 1fr; gap: 14px; min-height: 0; }
.dash-card {
    background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.07);
    border-radius: 4px; padding: 12px 14px;
    display: flex; flex-direction: column;
}
.dash-card h5 {
    font-family: var(--font-head); font-size: 11px; letter-spacing: 0.14em;
    text-transform: uppercase; color: rgba(255,255,255,.62); font-weight: 600; margin: 0 0 6px;
}
.dash-card .val { font-family: var(--font-head); font-weight: 700; font-size: 22px; letter-spacing: -0.01em; color: #fff; line-height: 1; }
.dash-card .val em { font-size: 12px; font-style: normal; color: var(--red); margin-left: 6px; font-weight: 600; }
.dash-card .trend { color: rgba(255,255,255,.45); font-size: 10.5px; margin-top: 4px; }
.dash-sparkline { flex-grow: 1; display: flex; align-items: flex-end; gap: 3px; margin-top: 10px; }
.dash-sparkline span { display: block; flex: 1; background: var(--red); opacity: .85; border-radius: 1px; }
.dash-sensors { display: grid; grid-template-rows: 1fr 1fr; gap: 10px; }
.dash-meter {
    background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.07);
    border-radius: 4px; padding: 10px 12px;
}
.dash-meter h6 {
    font-family: var(--font-head); font-size: 10px; letter-spacing: 0.14em;
    text-transform: uppercase; color: rgba(255,255,255,.55); margin: 0 0 6px;
    font-weight: 600; display: flex; justify-content: space-between;
}
.dash-meter h6 i { font-style: normal; color: #3ECF83; }
.dash-meter h6 i.warn { color: #FFB73D; }
.dash-meter .bar { height: 6px; background: rgba(255,255,255,.08); border-radius: 3px; overflow: hidden; position: relative; }
.dash-meter .bar span { display: block; height: 100%; background: linear-gradient(90deg, #3ECF83, #8FE3B3); border-radius: 3px; }
.dash-meter .bar span.warn { background: linear-gradient(90deg, #FFB73D, #FFD88A); }
.dash-meter .v { font-family: var(--font-head); font-weight: 700; font-size: 15px; color: #fff; margin-top: 4px; }
.dash-foot {
    display: flex; justify-content: space-between; font-size: 10.5px;
    color: rgba(255,255,255,.5); letter-spacing: 0.1em; text-transform: uppercase;
    padding-top: 10px; border-top: 1px solid rgba(255,255,255,.08);
}

/* ========== OEM partners ========== */
section.oem {
    padding: 72px 0 84px;
    background: #fff;
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
}
.oem-head { text-align: center; margin-bottom: 40px; }
.oem-head p { margin: 6px 0 0; color: var(--muted); font-size: 14.5px; }
.oem-grid {
    display: grid; grid-template-columns: repeat(6, 1fr);
    border: 1px solid var(--rule);
    border-radius: 6px; overflow: hidden;
}
.oem-cell {
    padding: 28px 14px; text-align: center;
    border-right: 1px solid var(--rule); border-bottom: 1px solid var(--rule);
    font-family: var(--font-head); font-weight: 700;
    font-size: 13px; letter-spacing: 0.08em; color: var(--muted);
    display: flex; align-items: center; justify-content: center;
    min-height: 88px;
    transition: color 0.2s, background 0.2s;
}
.oem-cell:hover { color: var(--ink); background: var(--mist); }
.oem-cell:nth-child(6n) { border-right: none; }
.oem-cell:nth-last-child(-n+6) { border-bottom: none; }
.oem-note {
    text-align: center; margin: 20px 0 0;
    font-size: 12.5px; color: var(--muted);
    font-style: italic; letter-spacing: 0.02em;
}
@media (max-width: 900px) {
    .oem-grid { grid-template-columns: repeat(3, 1fr); }
    .oem-cell:nth-child(6n) { border-right: 1px solid var(--rule); }
    .oem-cell:nth-child(3n) { border-right: none; }
    .oem-cell:nth-last-child(-n+6) { border-bottom: 1px solid var(--rule); }
    .oem-cell:nth-last-child(-n+3) { border-bottom: none; }
}

/* ========== Products ========== */
section.products { padding: 96px 0; }
.products-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.product-card {
    background: #fff; border: 1px solid var(--rule);
    padding: 28px 24px 24px; border-radius: 6px;
    transition: border-color 0.18s, box-shadow 0.18s;
    display: flex; flex-direction: column; gap: 12px;
    text-align: center; align-items: center;
}
.product-card:hover {
    border-color: var(--red);
    box-shadow: 0 10px 30px -15px rgba(11,28,46,.12);
}
.product-card h3 { font-size: 18px; margin: 0; }
.product-card p { font-size: 14px; color: var(--muted); margin: 0; }
.product-card p:not(.learn-more) { flex-grow: 1; }
.product-card .learn-more { margin: 0; align-self: center; flex-grow: 0; }
.product-card .btn-link { margin: 0; }
@media (max-width: 900px) { .products-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .products-grid { grid-template-columns: 1fr; } }

/* ========== Coverage map ========== */
section.coverage { padding: 100px 0; background: var(--mist); }
.coverage .grid {
    display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 80px;
    align-items: center;
}
.coverage h2 { font-size: clamp(28px, 3vw, 40px); margin: 12px 0 18px; }
.coverage p.copy { color: var(--muted); font-size: 16.5px; margin: 0 0 28px; }
.coverage-stats {
    display: grid; grid-template-columns: 1fr 1fr; gap: 0;
    border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule);
    margin-top: 28px;
    text-align: center;
}
/* Each stat is now a wp:group child → renders as <div class="wp-block-group">.
   Use > (direct child) so the inner wp-block-group__inner-container (which has
   display:contents) isn't double-padded. */
.coverage-stats > .wp-block-group,
.coverage-stats > div { padding: 22px 12px; border-right: 1px solid var(--rule); }
.coverage-stats > .wp-block-group:last-child,
.coverage-stats > div:last-child { border-right: none; }
/* Stat number/label are now native paragraphs — reset margins. */
.coverage-stats .n { font-family: var(--font-head); font-weight: 700; font-size: 32px; color: var(--red); line-height: 1; margin: 0; }
.coverage-stats .l { font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin: 6px 0 0; }
.map-wrap { position: relative; }
.map-wrap svg {
    width: 100%; height: auto; display: block;
    background: #fff; border: 1px solid var(--rule);
    border-radius: 8px; padding: 18px;
    box-shadow: 0 12px 40px -24px rgba(11,28,46,.18);
}
.map-legend {
    position: absolute; top: 32px; right: 32px;
    background: #fff; border: 1px solid var(--rule);
    border-radius: 4px; padding: 10px 14px;
    font-family: var(--font-head); font-size: 11px; letter-spacing: 0.08em;
    color: var(--muted);
}
.map-legend div { display: flex; align-items: center; gap: 8px; margin: 4px 0; }
.map-legend .pin { width: 10px; height: 10px; border-radius: 50%; background: var(--red); }
.map-legend .pin.small { background: var(--ink); width: 7px; height: 7px; }
@media (max-width: 900px) { .coverage .grid { grid-template-columns: 1fr; gap: 40px; } }

/* ========== Heritage ========== */
section.heritage { padding: 96px 0; background: #fff; }
.heritage .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: center; }
/* heritage-img renders as a wp:image block: <figure class="wp-block-image heritage-img"><img/></figure> */
.heritage-img {
    aspect-ratio: 4/3;
    border-radius: 6px;
    border: 1px solid var(--rule);
    overflow: hidden;
    margin: 0;
    background: linear-gradient(135deg, #E7ECF1 0%, #F4F6F8 100%);
}
.heritage-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.heritage h2 { font-size: clamp(28px, 3vw, 38px); margin: 12px 0 18px; }
.heritage p { color: var(--muted); font-size: 16px; margin: 0 0 16px; }
.heritage p strong { color: var(--ink); font-weight: 600; }
@media (max-width: 900px) { .heritage .grid { grid-template-columns: 1fr; gap: 40px; } }

/* ========== Red CTA band ========== */
section.cta-band {
    background:
        radial-gradient(ellipse at top left, rgba(255,255,255,.08), transparent 60%),
        radial-gradient(ellipse at bottom right, rgba(0,0,0,.22), transparent 55%),
        var(--red);
    color: #fff;
    text-align: center;
    padding: 56px 0 60px;
    position: relative;
    overflow: hidden;
}
section.cta-band::after {
    content: ""; display: block;
    position: absolute; top: 0; left: 50%; transform: translateX(-50%);
    width: 72px; height: 3px; background: #fff; opacity: .5;
}
.cta-band h2 { color: #fff; font-size: clamp(22px, 2.4vw, 30px); margin: 0 0 6px; }
.cta-band p { color: rgba(255,255,255,.9); margin: 0 0 18px; font-size: 16px; }
.cta-band .ctas { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.cta-band .eyebrow-white {
    color: rgba(255,255,255,.85); font-family: var(--font-head);
    font-weight: 700; font-size: 12px; letter-spacing: 0.18em;
    text-transform: uppercase; display: inline-block; margin-bottom: 10px;
}
.cta-band .phone-big {
    font-family: var(--font-head); font-weight: 800;
    font-size: clamp(22px, 2.6vw, 32px); letter-spacing: -0.02em;
    margin: 2px 0 14px;
    display: flex; align-items: center; gap: 14px; justify-content: center;
}
.cta-band .phone-big svg { width: 30px; height: 30px; flex-shrink: 0; }
.cta-band .phone-big p { margin: 0; }

/* ========== Footer ========== */
footer.site-footer {
    background: var(--ink);
    color: rgba(255,255,255,.72);
    padding: 72px 0 28px;
}
footer.site-footer .grid {
    display: grid;
    grid-template-columns: 1.4fr 0.8fr 0.8fr 1.1fr;
    gap: 48px;
}
footer.site-footer .logo { color: #fff; }
footer.site-footer .logo .logo-word { color: rgba(255,255,255,.55); }
footer.site-footer .brand-desc {
    color: rgba(255,255,255,.62); font-size: 14px; margin-top: 16px;
    max-width: 36ch; line-height: 1.6;
}
footer.site-footer h4 {
    color: #fff; font-family: var(--font-head); font-size: 13px;
    font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
    margin: 0 0 18px;
}
footer.site-footer ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
footer.site-footer ul a { font-size: 14.5px; color: rgba(255,255,255,.72); }
footer.site-footer ul a:hover { color: #fff; }
footer.site-footer .contact-item { font-size: 14.5px; margin-bottom: 10px; }
footer.site-footer .contact-item a { color: rgba(255,255,255,.72); }
footer.site-footer .contact-item a:hover { color: #fff; }
footer.site-footer .bar {
    margin-top: 52px; padding-top: 24px;
    border-top: 1px solid var(--rule-dark);
    display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px;
    font-size: 13px; color: rgba(255,255,255,.5);
}
@media (max-width: 900px) { footer.site-footer .grid { grid-template-columns: 1fr 1fr; gap: 40px; } }
@media (max-width: 520px) { footer.site-footer .grid { grid-template-columns: 1fr; } }

/* ========== Page header (non-home pages) ========== */
.page-header {
    background: linear-gradient(180deg, var(--ink) 0%, var(--ink-2) 100%);
    color: #fff;
    padding: 72px 0 64px;
    text-align: center;
}
.page-header h1 { color: #fff; margin-bottom: 12px; }
.page-header .eyebrow { color: var(--red); }
.page-header p { font-size: 1.05rem; color: rgba(255,255,255,.78); max-width: 720px; margin: 12px auto 0; }

/* ========== Generic section / container for non-home pages ========== */
.section { padding: 80px 0; }
.section--tight { padding: 56px 0; }
.section--navy { background: var(--ink); color: rgba(255,255,255,.9); }
.section--navy h1, .section--navy h2, .section--navy h3 { color: #fff; }
.section--gray { background: var(--mist); }

/* Legacy split/grid/card/check-list — preserved so older pages still render. */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.split img { border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); }
.split--reverse > :first-child { order: 2; }
@media (max-width: 800px) {
    .split, .split--reverse { grid-template-columns: 1fr; gap: 32px; }
    .split--reverse > :first-child { order: 0; }
}
.grid { display: grid; gap: 24px; }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.grid--4 { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }

.card {
    background: #fff; border: 1px solid var(--rule);
    border-radius: 6px; padding: 28px 24px;
    transition: border-color 0.18s, box-shadow 0.18s;
    display: flex; flex-direction: column;
}
.card:hover { border-color: var(--red); box-shadow: var(--shadow-lg); }
.card h3 { margin-bottom: 12px; }
.card p { color: var(--muted); flex-grow: 1; }
.card__icon { width: 48px; height: 48px; background: var(--red); color: #fff; border-radius: 4px; display: flex; align-items: center; justify-content: center; margin: 0 0 20px; font-weight: 800; font-size: 1.25rem; }
.card p.card__icon, .card .card__icon { color: #fff; flex-grow: 0; }
.card__link { margin-top: 16px; color: var(--red); font-weight: 600; font-size: 0.95rem; }

.check-list { list-style: none; padding: 0; margin: 0; }
.check-list li { padding: 8px 0 8px 32px; position: relative; }
.check-list li::before {
    content: ""; position: absolute; left: 0; top: 14px;
    width: 18px; height: 18px; background: var(--red); border-radius: 50%;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'%3E%3Cpath d='M6.5 10.5L3.5 7.5l1-1 2 2 4.5-4.5 1 1z'/%3E%3C/svg%3E");
    background-size: 14px; background-repeat: no-repeat; background-position: center;
}

.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
@media (max-width: 800px) { .contact-grid { grid-template-columns: 1fr; } }
.contact-info { background: var(--mist); padding: 32px; border-radius: 8px; }
.contact-info dt { font-weight: 700; color: var(--ink); margin-top: 16px; }
.contact-info dd { margin: 4px 0 0; }
.contact-form label { display: block; font-weight: 600; color: var(--ink); margin-bottom: 6px; font-size: 0.9rem; }
.contact-form input, .contact-form textarea, .contact-form select {
    width: 100%; padding: 12px 14px;
    border: 1px solid var(--rule); border-radius: 4px;
    font-family: inherit; font-size: 1rem; margin-bottom: 16px;
    background: #fff;
}
.contact-form textarea { min-height: 140px; resize: vertical; }

.prose { max-width: 780px; margin: 0 auto; }

/* Misc utilities */
.text-center { text-align: center; }
.mt-2 { margin-top: 24px; }
.mb-0 { margin-bottom: 0; }
.stats-bar { background: var(--mist); padding: 32px 0; }
.cta-band__link { color: #fff; text-decoration: underline; }
.cta-band__link:hover { color: #fff; opacity: 0.85; }

/* ============================================================
   Gutenberg compatibility
   When content is authored as native Gutenberg blocks, wp:group
   wrappers emit <div class="wp-block-group [user-class]">. Our
   CSS targets the user class (.hero, .wrap, .content, .grid,
   .section-head, .content-inner, etc.) so the wp-block-group
   class is harmless — BUT we must neutralize Gutenberg's default
   layout/margin rules that would otherwise interfere.
   ============================================================ */

/* wp:group emits an extra wp-block-group class on the element AND wraps
   its children in <div class="wp-block-group__inner-container">. That
   inner container breaks our CSS hierarchies (e.g. `.hero .content`
   no longer matches `.content` as a direct child of `.hero`).
   `display: contents` makes the wrapper layout-transparent — its
   children behave as if they were direct children of the wp:group.
   This is the cleanest way to use wp:group without rewriting our CSS. */
.wp-block-group__inner-container { display: contents; }

/* Don't reset margin/padding on .wp-block-group globally — that would
   kill the `margin: 0 auto` centering on .hero .content / .section-head /
   .content-inner / etc. */

/* wp:columns base — neutralize core flex so our grid layouts win */
.wp-block-columns.split > .wp-block-column,
.wp-block-columns.grid > .wp-block-column,
.wp-block-columns.stats > .wp-block-column { flex: none; max-width: none; width: auto; margin: 0; padding: 0; }

/* Inside .feature-dark / .downtime / .heritage, .grid is 2-col 1fr 1fr.
   When rendered as wp:columns, that .grid div has an extra wp-block-columns class
   so the rules above + our existing .feature-dark .grid rule still match. */
.feature-dark .wp-block-columns.grid,
.downtime .wp-block-columns.grid,
.heritage .wp-block-columns.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: center; }
@media (max-width: 900px) {
    .feature-dark .wp-block-columns.grid,
    .downtime .wp-block-columns.grid,
    .heritage .wp-block-columns.grid { grid-template-columns: 1fr; gap: 40px; }
}

/* Native wp:list inside our themed sections should not display the default disc bullet —
   our .chk spans handle the bullet styling. */
.feature-dark .wp-block-list,
.downtime .wp-block-list { list-style: none; padding: 0; margin: 0 0 28px; display: flex; flex-direction: column; gap: 12px; }
.feature-dark .wp-block-list li,
.downtime .wp-block-list li { display: flex; align-items: flex-start; gap: 12px; font-size: 15.5px; }

/* wp:buttons "hero-ctas" inside .hero — match the same flex layout the design uses */
.hero .wp-block-buttons.hero-ctas { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

/* CTA band buttons should be centered */
.cta-band .wp-block-buttons.ctas { justify-content: center; }

/* ========== Native-block adjustments for non-home pages ========== */

/* Page-header eyebrow is now a wp:paragraph; scope body-copy rule to non-eyebrow paragraphs only */
.page-header p:not(.eyebrow) { font-size: 1.05rem; color: rgba(255,255,255,.78); max-width: 720px; margin: 12px auto 0; }
.page-header .eyebrow { margin: 0 0 12px; }
.page-header h1 { margin: 0 0 12px; }

/* Service-grid column-count variants (replaces inline grid-template-columns) */
.service-grid.service-grid-1 { grid-template-columns: minmax(0, 520px); justify-content: center; }

/* Coverage section without the map column — center the text + stats */
.coverage .coverage-content { max-width: 760px; margin: 0 auto; text-align: center; }
.coverage .coverage-content .copy { max-width: 60ch; margin-left: auto; margin-right: auto; }
.coverage .coverage-content .coverage-stats { justify-content: center; }

/* ========== Our Team ========== */
section.team { padding: 96px 0; background: #fff; }
.team .section-head { text-align: center; margin-bottom: 48px; }
.team .section-head h2 { margin: 8px 0 0; font-size: clamp(28px, 3vw, 38px); }
.team-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 32px;
    max-width: 1120px;
    margin: 0 auto;
}
.team-card { text-align: center; }
.team-photo {
    margin: 0 auto 16px;
    width: 200px;
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    overflow: hidden;
    border: 1px solid var(--rule);
    background: var(--mist);
}
.team-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.team-card h3 { font-size: 18px; margin: 0 0 4px; }
.team-card .team-role {
    margin: 0;
    color: var(--muted);
    font-size: 14px;
    font-family: var(--font-head);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.service-grid.service-grid-2 { grid-template-columns: repeat(2, 1fr); }
.service-grid.service-grid-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) {
    .service-grid.service-grid-3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
    .service-grid.service-grid-2,
    .service-grid.service-grid-3 { grid-template-columns: 1fr; }
}

/* Custom Solutions section background (replaces inline style="background: var(--mist)") */
.custom-solutions-section { background: var(--mist); }

/* Contact section (replaces inline section style + dl/dt/dd markup) */
.contact-section { padding: 80px 0; background: #fff; }
.contact-section .wp-block-columns.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
@media (max-width: 800px) { .contact-section .wp-block-columns.contact-grid { grid-template-columns: 1fr; } }
.contact-info { background: var(--mist); padding: 32px; border-radius: 8px; }
.contact-info h3 { margin: 8px 0 20px; }
.contact-item { margin-top: 16px; }
.contact-item:first-of-type { margin-top: 0; }
.contact-label { font-weight: 700; color: var(--ink); margin: 0; }
.contact-value { margin: 4px 0 0; }
.contact-value a { color: var(--red); font-weight: 600; }
