/*
Theme Name: Academy 2026
Theme URI: https://academyplumbing.net
Author: Peregrine Digital Media
Author URI: https://peregrinedigital.com
Description: Custom lightweight theme for Academy Plumbing, Heating, Air Conditioning and Electric. Dispatch Bold direction: dark chrome, conversion-first, with a four-season color and messaging engine driven by CSS custom properties and a data-season body attribute. Spring runs sage and cactus green.
Version: 0.4.0
Requires at least: 6.0
Requires PHP: 7.4
License: Proprietary
Text Domain: academy2026
*/

/* ============================================================
   DISPATCH BOLD + SEASONAL ENGINE
   Dark chrome, seasonal color at full strength in big blocks.
   Spring: sage + cactus green. Summer: blue. Fall: burnt orange.
   Winter: red.
   ============================================================ */
:root {
  --ink: #10151d;
  --ink-2: #1b2330;
  --ink-soft: #55606e;
  --paper: #ffffff;
  --paper-dim: #f2f4f7;
  --line: #e2e6eb;
  --max: 1180px;
  --accent: #0f6fc5;
  --accent-deep: #0a5498;
  --accent-tint: #e5f0fa;
  --accent-glow: rgba(15,111,197,.35);
}
[data-season="summer"] { --accent:#0f6fc5; --accent-deep:#0a5498; --accent-tint:#e5f0fa; --accent-glow:rgba(15,111,197,.35); }
[data-season="fall"]   { --accent:#cc5a1e; --accent-deep:#a04415; --accent-tint:#fbeee4; --accent-glow:rgba(204,90,30,.35); }
[data-season="winter"] { --accent:#c22c31; --accent-deep:#971f24; --accent-tint:#fae8e9; --accent-glow:rgba(194,44,49,.35); }
/* Spring: sage green accent, cactus green deep */
[data-season="spring"] { --accent:#6b8f5e; --accent-deep:#49683f; --accent-tint:#eef3ea; --accent-glow:rgba(107,143,94,.38); }

* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior: smooth; }
body {
  font-family: "Avenir Next", "Segoe UI", Helvetica, Arial, sans-serif;
  color: var(--ink); background: var(--paper); line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { max-width:100%; height:auto; display:block; }
.wrap { max-width: var(--max); margin: 0 auto; padding: 0 24px; }
.screen-reader-text { position:absolute; clip:rect(1px,1px,1px,1px); overflow:hidden; height:1px; width:1px; }

/* ---- Emergency strip ---- */
.emergency {
  background: var(--accent-deep); color:#fff; font-size:14px; font-weight:600;
  transition: background .4s;
}
.emergency .wrap { display:flex; justify-content:center; align-items:center; gap:10px;
  min-height:40px; flex-wrap:wrap; text-align:center; padding-top:6px; padding-bottom:6px; }
.emergency .pulse {
  width:9px; height:9px; border-radius:50%; background:#fff; animation: acadPulse 1.6s infinite; flex-shrink:0;
}
@keyframes acadPulse { 0%,100%{opacity:1} 50%{opacity:.35} }
@media (prefers-reduced-motion: reduce) { .emergency .pulse { animation:none; } }
.emergency a { text-decoration: underline; text-underline-offset: 3px; font-weight:800; }

/* ---- Dark header: logo, nav, one call button ---- */
.site-header { background: var(--ink); color:#fff; position: sticky; top:0; z-index:60; }
.nav { display:flex; align-items:center; gap:26px; min-height:74px; }
.logo { display:flex; align-items:center; margin-right:auto; flex-shrink:0; }
.logo-chip { background:#fff; border-radius:8px; padding:5px 10px; display:block; }
.logo img { width:auto; max-height:42px; }
nav.links ul { display:flex; gap:22px; font-size:14.5px; font-weight:600; color:#d7dde5; list-style:none; }
nav.links a:hover, nav.links .current-menu-item a { color:#fff; }
.call-btn {
  background: var(--accent); color:#fff; font-weight:800; font-size:15.5px;
  padding:13px 24px; border-radius:8px; transition: background .3s; white-space:nowrap;
  box-shadow: 0 8px 24px -10px var(--accent-glow);
}
.call-btn:hover { background: var(--accent-deep); }

/* ---- Hero ---- */
.hero { background: var(--ink-2); color:#fff; position:relative; overflow:hidden; }
.hero::after {
  content:""; position:absolute; right:-180px; top:-120px; width:560px; height:560px;
  border-radius:50%; background: radial-gradient(circle, var(--accent-glow), transparent 65%);
  transition: background .4s; pointer-events:none;
}
.hero .wrap { display:grid; grid-template-columns: 1.05fr .95fr; gap:54px; align-items:center;
  padding-top:78px; padding-bottom:78px; position:relative; z-index:1; }
.season-chip {
  display:inline-flex; align-items:center; gap:8px; background: var(--accent);
  color:#fff; font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.07em;
  padding:7px 16px; border-radius:6px; margin-bottom:20px; transition: background .4s;
}
.hero h1 { font-size: clamp(36px, 5vw, 60px); font-weight:900; line-height:1.06; letter-spacing:-0.02em; }
.hero h1 .accent { color: var(--accent); transition: color .4s; text-shadow: 0 0 40px var(--accent-glow); }
.hero p.lede { color:#b9c2ce; font-size:18px; margin:20px 0 30px; max-width:46ch; }
.hero-ctas { display:flex; gap:14px; flex-wrap:wrap; }
.btn-mega {
  background: var(--accent); color:#fff; font-size:19px; font-weight:800;
  padding:18px 34px; border-radius:10px; transition: all .3s;
  box-shadow: 0 14px 34px -12px var(--accent-glow); display:inline-block;
}
.btn-mega:hover { background: var(--accent-deep); transform: translateY(-2px); }
.btn-dark {
  border: 1.5px solid rgba(255,255,255,.3); color:#fff; font-size:17px; font-weight:700;
  padding:18px 30px; border-radius:10px; display:inline-block;
}
.btn-dark:hover { border-color:#fff; }
.trust-row { display:flex; gap:26px; margin-top:34px; flex-wrap:wrap; font-size:13.5px; color:#b9c2ce; }
.trust-row b { color:#fff; }

/* ---- Season control panel ---- */
.panel {
  background: rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12);
  border-radius:16px; padding:26px; backdrop-filter: blur(6px);
}
.panel .panel-title { font-size:12px; font-weight:800; text-transform:uppercase;
  letter-spacing:.12em; color:#9aa5b3; margin-bottom:14px; }
.season-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:20px; }
.season-grid button {
  font:inherit; font-weight:700; font-size:14px; cursor:pointer; color:#d7dde5;
  background: rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.14);
  border-radius:10px; padding:13px 10px; transition: all .25s; text-align:left;
}
.season-grid button small { display:block; font-weight:500; font-size:11.5px; color:#9aa5b3; }
.season-grid button.active { background: var(--accent); border-color: var(--accent); color:#fff;
  box-shadow: 0 8px 22px -10px var(--accent-glow); }
.season-grid button.active small { color: rgba(255,255,255,.8); }
.panel .auto-note { font-size:12px; color:#9aa5b3; margin-bottom:18px; }
.panel .dispatch { border-top:1px solid rgba(255,255,255,.12); padding-top:18px; }
.dispatch-row { display:flex; justify-content:space-between; align-items:center; padding:9px 0; font-size:14.5px; }
.dispatch-row .k { color:#9aa5b3; }
.dispatch-row .v { font-weight:800; }
.dispatch-row .v a { color:#fff; }
.dispatch-row .v.hot a { color: var(--accent); transition: color .4s; }

/* ---- Quick services ---- */
.quick { padding: 70px 0; }
.quick-grid { display:grid; grid-template-columns: repeat(4, 1fr); gap:16px; }
.qcard {
  border:1.5px solid var(--line); border-radius:14px; padding:26px 22px;
  transition: all .25s; position:relative; overflow:hidden; display:block; color:var(--ink);
}
.qcard:hover { border-color: var(--accent); transform: translateY(-4px);
  box-shadow: 0 20px 44px -22px var(--accent-glow); }
.qcard .big-ico {
  font-size:26px; width:54px; height:54px; border-radius:12px; background: var(--accent-tint);
  display:grid; place-items:center; margin-bottom:16px; transition: background .4s;
}
.qcard h3 { font-size:18px; font-weight:800; margin-bottom:6px; }
.qcard p { font-size:14px; color: var(--ink-soft); margin-bottom:14px; }
.qcard .go { font-size:14px; font-weight:700; color: var(--accent-deep); transition: color .4s; }
.qcard .hot-tag {
  position:absolute; top:14px; right:14px; background: var(--accent); color:#fff;
  font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.08em;
  padding:4px 10px; border-radius:100px; transition: background .4s;
}

/* ---- Stats ---- */
.stats { background: var(--paper-dim); border-block:1px solid var(--line); padding:58px 0; }
.stats .wrap { display:grid; grid-template-columns: repeat(4, 1fr); gap:20px; text-align:center; }
.stat b { font-size: clamp(30px, 3.6vw, 44px); font-weight:900; color: var(--accent);
  transition: color .4s; display:block; letter-spacing:-0.02em; }
.stat span { font-size:14px; color: var(--ink-soft); font-weight:600; }

/* ---- Owner band ---- */
.owner { padding: 76px 0; }
.owner .wrap { display:grid; grid-template-columns: 1fr 1fr; gap:56px; align-items:center; }
.owner .photo-ph {
  aspect-ratio: 4/3; border-radius:18px; background:
    linear-gradient(135deg, var(--accent-tint), var(--paper-dim));
  border:1.5px solid var(--line); display:grid; place-items:center;
  color: var(--ink-soft); font-size:14px; font-weight:600; transition: background .4s;
}
.owner .photo-ph img { border-radius:18px; object-fit:cover; width:100%; height:100%; }
.owner .tag { color: var(--accent-deep); font-weight:800; font-size:13px;
  text-transform:uppercase; letter-spacing:.1em; transition: color .4s; }
.owner h2 { font-size: clamp(26px, 3.4vw, 38px); font-weight:900; letter-spacing:-0.015em; margin:10px 0 16px; }
.owner blockquote { font-size:18px; color: var(--ink-soft); border-left:4px solid var(--accent);
  padding-left:20px; margin-bottom:16px; font-style:italic; transition: border-color .4s; }
.owner .sig b { font-size:15.5px; }
.owner .sig span { color: var(--ink-soft); font-size:13.5px; }

/* ---- Bottom CTA ---- */
.bottom-cta { background: var(--ink-2); color:#fff; padding: 80px 0; text-align:center; }
.bottom-cta h2 { font-size: clamp(30px, 4vw, 46px); font-weight:900; letter-spacing:-0.02em; }
.bottom-cta p { color:#b9c2ce; font-size:17px; margin:12px 0 30px; }
.phone-mega {
  display:inline-block; background: var(--accent); color:#fff; font-size: clamp(22px, 3vw, 32px);
  font-weight:900; padding:20px 44px; border-radius:14px; transition: all .3s;
  box-shadow: 0 18px 44px -14px var(--accent-glow);
}
.phone-mega:hover { background: var(--accent-deep); transform: scale(1.02); }
.bottom-cta .sub { margin-top:16px; font-size:14px; color:#9aa5b3; }
.bottom-cta .sub a { color:#fff; text-decoration:underline; text-underline-offset:3px; }

/* ---- Footer ---- */
.site-footer { background: var(--ink); color:#9aa5b3; font-size:14px; padding:50px 0 30px; }
.site-footer .cols { display:grid; grid-template-columns: 1.5fr 1fr 1fr; gap:36px; margin-bottom:36px; }
.site-footer h4 { color:#fff; font-size:12px; text-transform:uppercase; letter-spacing:.1em; margin-bottom:14px; }
.site-footer ul { list-style:none; }
.site-footer li { margin-bottom:8px; }
.site-footer a:hover { color:#fff; }
.fine { border-top:1px solid rgba(255,255,255,.1); padding-top:20px; display:flex;
  justify-content:space-between; gap:10px; flex-wrap:wrap; font-size:12.5px; }

/* ---- Interior pages + blog (light content, dark chrome) ---- */
.content-area { padding: 56px 0 72px; }
.content-narrow { max-width: 760px; margin: 0 auto; }
.page-title { font-size: clamp(30px, 4vw, 44px); font-weight:900; letter-spacing:-0.02em; line-height:1.12; margin-bottom:18px; }
.entry-meta { color: var(--ink-soft); font-size:14px; margin-bottom:28px; }
.entry-content h2 { font-size:26px; font-weight:800; margin:36px 0 12px; letter-spacing:-0.01em; }
.entry-content h3 { font-size:20px; font-weight:800; margin:28px 0 10px; }
.entry-content p, .entry-content ul, .entry-content ol { margin-bottom:16px; font-size:16.5px; }
.entry-content ul, .entry-content ol { padding-left:24px; }
.entry-content a { color: var(--accent-deep); text-decoration:underline; text-underline-offset:3px; }
.entry-content blockquote { border-left:4px solid var(--accent); padding:6px 0 6px 20px; color:var(--ink-soft); margin-bottom:16px; }
.entry-content img { border-radius:14px; margin:8px 0; }
.entry-content iframe { max-width:100%; border:0; }
.post-thumb img { border-radius:16px; margin-bottom:28px; }

.post-list { display:grid; grid-template-columns: repeat(3, 1fr); gap:22px; }
.post-card { border:1.5px solid var(--line); border-radius:14px; overflow:hidden; background:var(--paper); transition: all .25s; display:flex; flex-direction:column; }
.post-card:hover { border-color: var(--accent); transform: translateY(-4px); box-shadow: 0 20px 44px -22px var(--accent-glow); }
.post-card .thumb { aspect-ratio:16/9; object-fit:cover; width:100%; }
.post-card .pad { padding:20px 22px 24px; display:flex; flex-direction:column; gap:8px; flex:1; }
.post-card h2 { font-size:18px; font-weight:800; line-height:1.35; }
.post-card time { font-size:13px; color:var(--ink-soft); }
.post-card .more { margin-top:auto; font-weight:700; font-size:14px; color:var(--accent-deep); }
.pagination { margin-top:40px; display:flex; gap:8px; justify-content:center; font-weight:600; }
.pagination .page-numbers { padding:8px 14px; border:1.5px solid var(--line); border-radius:8px; }
.pagination .current, .pagination .page-numbers:hover { background:var(--accent); color:#fff; border-color:var(--accent); }

/* ---- Landing pages ---- */
.landing-hero { background: var(--ink-2); color:#fff; position:relative; overflow:hidden; }
.landing-hero::after {
  content:""; position:absolute; right:-180px; top:-140px; width:520px; height:520px;
  border-radius:50%; background: radial-gradient(circle, var(--accent-glow), transparent 65%);
  pointer-events:none;
}
.landing-hero .wrap { padding-top:64px; padding-bottom:58px; position:relative; z-index:1; max-width:900px; }
.landing-hero .page-title { color:#fff; margin-bottom:0; }
.landing-hero .lede { color:#b9c2ce; font-size:18px; margin:16px 0 28px; max-width:56ch; }
.landing-hero .trust-row { margin-top:28px; }

.landing-content { max-width: 880px; }
.landing .entry-content h2 { margin-top:40px; }
.landing .entry-content img { border-radius:14px; }
.landing .entry-content img.alignleft { float:none; margin:8px 0; }
/* Link walls become service grids */
.landing .entry-content ul { list-style:none; padding:0; display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:18px 0 26px; }
.landing .entry-content ul li { margin:0; }
.landing .entry-content ul li a {
  display:block; border:1.5px solid var(--line); border-radius:10px; padding:11px 14px;
  font-weight:600; font-size:14.5px; text-decoration:none; color:var(--ink);
  transition: all .2s; background:var(--paper);
}
.landing .entry-content ul li a:hover { border-color:var(--accent); color:var(--accent-deep);
  box-shadow: 0 10px 24px -16px var(--accent-glow); transform:translateY(-2px); }
.landing .entry-content ul li:not(:has(a)) {
  border:1.5px solid var(--line); border-radius:10px; padding:11px 14px;
  font-weight:600; font-size:14.5px; background:var(--paper);
}
/* Tame WPBakery leftovers */
.landing .entry-content .vc_row { margin:0; }
.landing .entry-content .wpb_single_image { margin:18px 0; }
.landing .entry-content .wpb_single_image img { max-width:440px; width:100%; }
.landing .entry-content .vc_cta3-container { margin:32px 0 8px; }
.landing .entry-content .vc_general.vc_cta3 {
  border:1.5px solid var(--line) !important; border-radius:14px !important; background:var(--accent-tint) !important;
  padding:24px !important;
}

@media (max-width: 860px) { .landing .entry-content ul { grid-template-columns:repeat(2,1fr); } }
@media (max-width: 560px) { .landing .entry-content ul { grid-template-columns:1fr; } }

/* ---- Responsive ---- */
@media (max-width: 940px) {
  .hero .wrap, .owner .wrap { grid-template-columns:1fr; }
  .quick-grid, .stats .wrap { grid-template-columns:1fr 1fr; }
  nav.links { display:none; }
  .site-footer .cols { grid-template-columns:1fr; }
  .post-list { grid-template-columns:1fr 1fr; }
}
@media (max-width: 560px) {
  .quick-grid, .post-list { grid-template-columns:1fr; }
  .hero .wrap { padding-top:52px; padding-bottom:52px; }
}
