/*
Theme Name: MPG Electrical
Theme URI: https://matthewjames-webdesign.co.uk/
Author: Matthew James Web Design
Author URI: https://matthewjames-webdesign.co.uk/
Description: Custom WordPress theme for MPG Electrical Contractor Limited. Dark, modern, trust-led layout with MPG branding (red/black).
Version: 1.0.0
Text Domain: mpg
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/

:root{
  --bg: #0b0d10;
  --bg2:#0f1217;
  --panel: rgba(255,255,255,.06);
  --panel2: rgba(255,255,255,.08);
  --border: rgba(255,255,255,.10);
  --text: rgba(255,255,255,.92);
  --muted: rgba(255,255,255,.68);
  --muted2: rgba(255,255,255,.54);
  --shadow: 0 18px 40px rgba(0,0,0,.45);
  --radius: 18px;

--accent: #ff1f2d; /* MPG red (primary) */
  --accent2: #ff4d57;
  --accentGlow: 0 0 0 3px rgba(255,31,45,.22), 0 18px 40px rgba(255,31,45,.18);

  --brandBlue: #007AFF;
--brandBlue-rgb: 0, 122, 255;

/* Secondary accent (steel blue-grey) */
--accentB: #7E95A8;
--accentB2: #9BB0C2;
--accentB-rgb: 126, 149, 168;
--accentBGlow: 0 0 0 3px rgba(var(--accentB-rgb), .12), 0 18px 40px rgba(var(--accentB-rgb), .10);

  --container: 1180px;
  --gutter: 22px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  color:var(--text);
  background:
    radial-gradient(1100px 700px at 12% 10%, rgba(255,31,45,.18), transparent 55%),
    radial-gradient(900px 600px at 82% 18%, rgba(255,255,255,.07), transparent 55%),
    radial-gradient(800px 800px at 40% 110%, rgba(255,31,45,.10), transparent 60%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg2) 100%);
  font-family: "Manrope", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  line-height:1.55;
}

a{ color:inherit; text-decoration:none; }
a:hover{ text-decoration:none; }
img{ max-width:100%; height:auto; display:block; }

.container{
  width: min(var(--container), calc(100% - (var(--gutter) * 2)));
  margin-inline:auto;
}

.skip-link{
  position:absolute; left:-999px; top:auto;
  width:1px; height:1px; overflow:hidden;
}
.skip-link:focus{
  left: 12px; top: 12px; width:auto; height:auto;
  padding: 10px 14px;
  border-radius: 12px;
  background: #fff;
  color:#000;
  z-index:9999;
}

/* Header */
.site-header{
  top:0;
  z-index:90;
  backdrop-filter: blur(12px);
  background: #fff;
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.topbar{
  padding: 8px 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
  color: #111;
  font-size: 13px;
}
.topbar .row{
  display:flex; gap:14px; align-items:center; justify-content:space-between;
}
.topbar .meta{
  display:flex; gap:16px; flex-wrap:wrap; align-items:center;
}
.badge{
  display:inline-flex; align-items:center; gap:8px;
  padding: 6px 10px;
  border: 0px solid rgba(255,255,255,.10);
  border-radius: 999px;
  
}
.badge-dot{
  width:8px;height:8px;border-radius:99px;background:var(--accent);
  box-shadow: 0 0 0 4px rgba(255,31,45,.15);
}

.navbar{
  padding: 14px 0;
}
.navbar .row{
  display:flex; align-items:center; justify-content:space-between; gap:18px;
}
.brand{
  display:flex; align-items:center; gap:12px;
}
.brand img{
  width: 170px; height:auto;
}
.brand .tagline{
  display:none;
  color:var(--muted);
  font-size: 13px;
}
.nav-toggle{
  display:none;
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.05);
  color: var(--text);
  border-radius: 14px;
  padding: 10px 12px;
}
.primary-nav{
  display:flex; align-items:center; gap: 18px;
}
.primary-nav ul{
  display:flex; align-items:center; gap: 14px;
  list-style:none; padding:0; margin:0;
}
.primary-nav a{
  color: #111;
  padding: 10px 10px;
  border-radius: 12px;
  font-weight: 600;
  font-size: 14px;
}


.btn{
  display:inline-flex; align-items:center; justify-content:center;
  gap:10px;
  padding: 12px 16px;
  border-radius: 14px;
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.06);
  color: var(--text);
  font-weight: 700;
  text-decoration:none;
  transition: transform .12s ease, background .12s ease, border-color .12s ease;
}
.btn:hover{ transform: translateY(-1px); background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.18); }
.btn--primary{
  border-color: rgba(255,31,45,.45);
  background: linear-gradient(180deg, rgba(255,31,45,.95), rgba(255,31,45,.72));
  
}
.btn--primary:hover{
  background: linear-gradient(180deg, rgba(255,31,45,1), rgba(255,31,45,.78));
}
.btn--ghost{
  background: transparent;
  border-color: rgba(255,255,255,.14);
}
.btn--small{ padding: 10px 12px; border-radius: 12px; font-size: 14px; }

.hero{
  padding: 64px 0 26px;
}
.hero .wrap{
  display:grid;
  grid-template-columns: 1.2fr .8fr;
  gap: 26px;
  align-items: stretch;
}
.hero-card{
  border-radius: calc(var(--radius) + 8px);
  overflow:hidden;
  border:1px solid rgba(255,255,255,.10);
  background:
    radial-gradient(900px 360px at 30% 0%, rgba(255,31,45,.26), transparent 60%),
    rgba(255,255,255,.05);
  box-shadow: var(--shadow);
}
.hero-card-inner{
  padding:  0px 10px;
}
.kicker{
  display:inline-flex; align-items:center; gap:10px;
  color: var(--muted);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: .02em;
  text-transform: uppercase;
}
.kicker .line{
  width: 24px; height: 1px; background: rgba(255,255,255,.20);
}
.hero h1{
  margin: 12px 0 10px;
  font-size: clamp(32px, 3.4vw, 54px);
  line-height:1.06;
}
.hero p{
  margin: 0 0 18px;
  color: var(--muted);
  font-size: 16px;
  max-width: 58ch;
}
.hero-actions{
  display:flex; gap: 12px; flex-wrap:wrap;
  margin-top: 16px;
}
.hero-trust{
  display:grid;
  grid-template-rows: auto 1fr;
  gap: 14px;
}
.trust-strip{
  border-radius: var(--radius);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  padding: 12px 14px;
}
.trust-strip .items{
  display:flex; gap: 12px; flex-wrap: wrap; align-items:center;
  color: var(--muted);
  font-size: 13px;
}
.trust-strip .items span{
  display:inline-flex; align-items:center; gap:8px;
  padding: 8px 10px;
  border-radius: 14px;
  border:1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.18);
}
.trust-strip svg{ opacity:.9; }

.panel{
  border-radius: var(--radius);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.05);
  box-shadow: var(--shadow);
}
.panel-pad{ padding: 22px; }

.section{
  padding: 82px 0;
}

.panel1{
  border-radius: var(--radius);
  border:0px solid rgba(255,255,255,.10);

}
.panel-pad1{ padding: 0px; }

.panel2{
  border:0px solid rgba(255,255,255,.10);
background: rgba(255,255,255,.05);
  box-shadow: var(--shadow);
  border-radius: var(--radius);

}
.panel-pad2{ padding: 22px; }

.section{
  padding: 82px 0;
}


.section h2{
  font-size: clamp(24px, 2.1vw, 36px);
  margin: 0 0 12px;
}
.section p.lead{
  color: var(--muted);
  margin: 0 0 22px;
  max-width: 70ch;
}

.grid{
  display:grid;
  gap: 16px;
}
.grid-3{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-4{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-2{ grid-template-columns: repeat(2, minmax(0, 1fr)); }

.card{
  border-radius: var(--radius);
  border:0px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  overflow:hidden;
  box-shadow: var(--shadow);
}
.card-pad{ padding: 18px; }
.card h3{ margin: 0 0 8px; font-size: 18px; }
.card p{ margin: 0; color: var(--muted); font-size: 14px; }
.card .meta{
  margin-top: 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 10px;
  color: var(--muted2);
  font-size: 13px;
}

.icon-pill{
  width: 42px; height: 42px;
  border-radius: 16px;
  display:grid; place-items:center;
  background: rgba(255,31,45,.12);
  border:1px solid rgba(255,31,45,.28);
}

.projects-grid .card{
  position:relative;
  min-height: 320px;
  display:flex;
}
.project-thumb{
  position:absolute; inset:0;
  background-size: cover;
  background-position:center;
  filter: saturate(1.05);
  transform: scale(1.02);
}
.project-overlay{
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(0,0,0,.25) 0%, rgba(0,0,0,.65) 70%);
}
.project-content{
  position:relative;
  margin-top:auto;
  padding: 16px;
}
.project-content h3{
  margin: 0 0 6px;
  font-size: 18px;
}
.project-content p{
  margin:0;
  color: rgba(255,255,255,.78);
  font-size: 13px;
}

.stats{
  display:grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}
.stat{
  border-radius: 18px;
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  padding: 16px;
}
.stat .num{
  font-size: 28px;
  font-weight: 800;
  letter-spacing: -.02em;
}
.stat .lbl{
  margin-top: 6px;
  color: var(--muted);
  font-size: 13px;
}

.swiper{
  border-radius: var(--radius);
}
.testimonial{
  border-radius: var(--radius);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  padding: 18px;
  min-height: 170px;
}
.testimonial .who{
  margin-top: 12px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  color: var(--muted);
  font-size: 13px;
}
.testimonial1{
  
  border-top:1px solid rgba(255,255,255,.10);
  border-bottom:0px solid rgba(255,255,255,.10);
  padding: 18px;
  min-height: 170px;
}
.stars{
  display:inline-flex; gap: 3px;
  color: rgba(255,255,255,.85);
  font-size: 12px;
}

.cta-band{
  border-radius: calc(var(--radius) + 8px);
  border:1px solid rgba(255,31,45,.32);
  background:
    radial-gradient(800px 240px at 15% 0%, rgba(255,31,45,.36), transparent 55%),
    rgba(255,255,255,.05);
  
  padding: 26px;
  display:flex; flex-wrap:wrap;
  align-items:center; justify-content:space-between;
  gap: 18px;
}
.cta-band h3{ margin:0 0 6px; font-size: 20px; }
.cta-band p{ margin:0; color: var(--muted); max-width: 70ch; }

.page-hero{
  padding: 38px 0 14px;
}
.page-hero h1{
  margin: 0 0 10px;
  font-size: clamp(30px, 3vw, 46px);
}
.breadcrumbs{
  color: var(--muted2);
  font-size: 13px;
}

.content{
  padding: 22px 0 70px;
}
.prose{
  color: var(--muted);
  max-width: 75ch;
}
.prose h2, .prose h3{ color: var(--text); }
.prose a{ color: var(--text); text-decoration: underline; text-decoration-color: rgba(255,31,45,.55); }

.form{
  display:grid; gap: 12px;
}
.field{
  display:grid; gap: 8px;
}
.field label{
  font-size: 13px;
  color: var(--muted);
  font-weight: 700;
}
.field input, .field textarea{
  width:100%;
  border-radius: 14px;
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  color: var(--text);
  padding: 12px 14px;
  outline:none;
}
.field input:focus, .field textarea:focus{
  border-color: rgba(255,31,45,.45);
  box-shadow: 0 0 0 3px rgba(255,31,45,.16);
}
.notice{
  padding: 12px 14px;
  border-radius: 14px;
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.05);
  color: var(--muted);
}

.site-footer{
  border-top: 1px solid rgba(255,255,255,.08);
  padding: 38px 0;
  color: var(--muted);
  background: rgba(0,0,0,.18);
}
.footer-grid{
  display:grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 18px;
}
.footer-grid h4{
  margin: 0 0 10px;
  color: var(--text);
  font-size: 14px;
}
.footer-grid ul{
  margin:0; padding:0; list-style:none;
  display:grid; gap: 8px;
}
.footer-grid a{ color: var(--muted); }
.footer-grid a:hover{ color: var(--text); }

.footer-bottom{
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.08);
  display:flex; flex-wrap:wrap;
  align-items:center; justify-content:space-between;
  gap: 12px;
  font-size: 13px;
}

/* Responsive */
@media (max-width: 980px){
  .hero .wrap{ grid-template-columns: 1fr; }
  .grid-3{ grid-template-columns: 1fr; }
  .grid-4{ grid-template-columns: 1fr; }
  .grid-2{ grid-template-columns: 1fr; }
  .stats{ grid-template-columns: repeat(2, minmax(0,1fr)); }
  .footer-grid{ grid-template-columns: 1fr; }
  .nav-toggle{ display:inline-flex; }
  .primary-nav{ display:none; }
  .primary-nav.is-open{ display:flex; }
  .primary-nav ul{
    position:absolute;
    right: var(--gutter);
    top: 58px;
    flex-direction:column;
    align-items:stretch;
    min-width: 240px;
    padding: 10px;
    border-radius: 18px;
    border:1px solid rgba(255,255,255,.12);
    background: rgba(7,9,12,.92);
    box-shadow: var(--shadow);
  }
}

.hero.hero--bg{
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background: #0b0f14; /* fallback colour */
}

.hero.hero--bg::before{
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--hero-bg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transform: scale(1.03); /* avoids edge gaps on some screens */
  z-index: -2;
}

.hero.hero--bg::after{
  content: "";
  position: absolute;
  inset: 0;
  /* dark overlay for readability */
  background: linear-gradient(
    90deg,
    rgba(11,15,20,.82) 0%,
    rgba(11,15,20,.62) 55%,
    rgba(11,15,20,.30) 100%
  );
  z-index: -1;
}

.locations-covered .locations-head{
  margin-bottom: 16px;
}

.locations-covered .locations-grid{
  display: grid;
  gap: 18px;
  align-items: center;
  grid-template-columns: 1.15fr .85fr;
}

.locations-covered .locations-map{
  overflow: hidden;

}

.locations-covered .locations-map img{
  display: block;
  width: 100%;
  height: auto;
}

.locations-covered .locations-badges{
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

@media (max-width: 900px){
  .locations-covered .locations-grid{
    grid-template-columns: 1fr;
  }
}

.service-card{
  position: relative;
  overflow: hidden;
  color: rgba(255,255,255,.92);
  isolation: isolate;
}

.service-card::before{
  content:"";
  position:absolute;
  inset:0;
  background-image: var(--svc-bg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transform: scale(1.03);
  z-index:-2;

  /* smoother, slower zoom */
  transition: transform 1.25s cubic-bezier(.22, 1, .36, 1);
  will-change: transform;
}

.service-card:hover::before{
  transform: scale(1.06);
}

.service-card::after{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,.70) 0%,
    rgba(0,0,0,.55) 45%,
    rgba(0,0,0,.70) 100%
  );
  z-index:-1;
}

/* make existing text styles readable */
.service-card p,
.service-card .meta span{
  color: rgba(255,255,255,.78);
}

/* optional: subtle hover */
.service-card:hover::before{
  transform: scale(1.06);
}

/* optional: if icon-pill has dark text by default */
.service-card .icon-pill svg{
  opacity: .95;
}

/* Square service cards */
.grid.grid-3 .service-card{
  aspect-ratio: 1 / 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

/* push the meta row to the bottom */
.grid.grid-3 .service-card .meta{
  margin-top: auto;
}

/* Secondary accent buttons */
.btn--secondary{
  border-color: rgba(var(--accentB-rgb), .45);
  background: linear-gradient(180deg, rgba(var(--accentB-rgb), .95), rgba(var(--accentB-rgb), .72));
  box-shadow: var(--accentBGlow);
}
.btn--secondary:hover{
  background: linear-gradient(180deg, rgba(var(--accentB-rgb), 1), rgba(var(--accentB-rgb), .78));
}

/* Secondary accent ghost (subtle) */
.btn--ghost.btn--alt{
  border-color: rgba(var(--accentB-rgb), .28);
  color: rgba(var(--accentB-rgb), .95);
}
.btn--ghost.btn--alt:hover{
  border-color: rgba(var(--accentB-rgb), .45);
  box-shadow: 0 0 0 3px rgba(var(--accentB-rgb), .14);
}

.service-card .icon-pill{
  background: rgba(var(--accentB-rgb), .12);
  border: 1px solid rgba(var(--accentB-rgb), .30);
}



.section-projects{
  position: relative;
  overflow: hidden;
  isolation: isolate;
  padding: 64px 0;
}

.section-projects::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-2;

  background:
    /* softer top/bottom blend */
    /* softer top/bottom blend (less dark “slant”) */
    linear-gradient(
      to bottom,
      rgba(0,0,0,.05) 0%,
      rgba(0,0,0,.16) 22%,
      rgba(0,0,0,.16) 78%,
      rgba(0,0,0,.05) 100%
    ),

    /* much lighter accent wash */
    radial-gradient(900px 420px at 12% 20%, rgba(var(--accentB-rgb), .08), transparent 62%),
    radial-gradient(760px 420px at 88% 65%, rgba(var(--accentB-rgb), .05), transparent 65%),

    /* very subtle texture bands */
    repeating-linear-gradient(
      135deg,
      rgba(255,255,255,.020) 0px,
      rgba(255,255,255,.020) 1px,
      rgba(255,255,255,0) 10px,
      rgba(255,255,255,0) 20px
    ),

    /* base */
    linear-gradient(180deg, rgba(10,12,16,1) 0%, rgba(6,7,10,1) 100%);
}

.section-projects::after{
  content:"";
  position:absolute;
  inset:-40px;
  z-index:-1;
  pointer-events:none;
  opacity:.05;          /* lower noise */
  mix-blend-mode: overlay;
  background-image: repeating-radial-gradient(
    circle at 20% 20%,
    rgba(255,255,255,.07) 0 1px,
    rgba(255,255,255,0) 1px 4px
  );
  transform: rotate(-2deg);
}

/* optional: make the section headings pop a touch */
.section-projects .lead{
  color: rgba(255,255,255,.72);
}

/* Progressive enhancement: by default, cards render normally */
.services-grid .service-card{
  --dx: 0px;
  --dy: 0px;
  --delay: 0ms;
}

/* Only apply hidden/reveal state when JS adds .reveal-ready */
.services-grid.reveal-ready .service-card{
  opacity: 0;
  filter: blur(0px);
  transform: translate3d(var(--dx), var(--dy), 0);
  transition:
    opacity .60s ease,
    transform .60s ease,
    filter .60s ease;
  transition-delay: var(--delay);
  will-change: opacity, transform, filter;
}

.services-grid.reveal-ready .service-card.is-in{
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0,0,0);
}

/* Your exact order + direction:
   1 left, 2 top, 3 right, 6 right, 5 bottom, 4 right (last) */
.services-grid .service-card:nth-child(1){ --dx: -58px; --dy: 0px;  --delay: 0ms;   }
.services-grid .service-card:nth-child(2){ --dx: 0px;  --dy: -58px; --delay: 240ms; }
.services-grid .service-card:nth-child(3){ --dx: 58px; --dy: 0px;  --delay: 480ms; }
.services-grid .service-card:nth-child(6){ --dx: 58px; --dy: 0px;  --delay: 720ms; }
.services-grid .service-card:nth-child(5){ --dx: 0px;  --dy: 58px; --delay: 960ms; }
.services-grid .service-card:nth-child(4){ --dx: -58px; --dy: 0px;  --delay: 1200ms; }


/* Services reveal: NO stagger on stacked/mobile layouts */
@media (max-width: 980px){
  .services-grid .service-card{
.services-grid .service-card:nth-child(1){ --dx: -58px; --dy: 0px;  --delay: 0ms;   }
.services-grid .service-card:nth-child(2){ --dx: 0px;  --dy: -58px; --delay: 0ms; }
.services-grid .service-card:nth-child(3){ --dx: 58px; --dy: 0px;  --delay: 0ms; }
.services-grid .service-card:nth-child(6){ --dx: 58px; --dy: 0px;  --delay: 0ms; }
.services-grid .service-card:nth-child(5){ --dx: 0px;  --dy: 58px; --delay: 0ms; }
.services-grid .service-card:nth-child(4){ --dx: -58px; --dy: 0px;  --delay: 0ms; }
  }

  /* Optional: slightly faster on mobile so it feels snappy */
  .services-grid.reveal-ready .service-card{
    transition-duration: .45s;
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  .services-grid.reveal-ready .service-card{
    opacity: 1;
    filter: none;
    transform: none;
    transition: none;
  }
}

.text-red{
  color: var(--accent);
}

/* Subtle radial texture on standard sections (exclude the custom bg ones) */
.section:not(.section-projects):not(.locations-covered){
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

.section:not(.section-projects):not(.locations-covered)::before{
  content:"";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;

  background:
    radial-gradient(700px 460px at 18% 28%, rgba(255,255,255,.035), transparent 62%),
    radial-gradient(620px 420px at 82% 72%, rgba(255,255,255,.025), transparent 64%),
    radial-gradient(520px 380px at 55% 55%, rgba(255,255,255,.015), transparent 70%);
}

.project-card{
  border-top-right-radius: 100px;
}

.section-projects h2{
  position: relative;
  padding-left: 28px; /* space for the chevron */
}

.section-projects h2::before{
  content: "›";              /* cleaner chevron than ">" */
  position: absolute;
  left: 0;
  top: 0.02em;
  color: var(--accent);      /* MPG red */
  font-weight: 900;
  font-size: 1.15em;
  line-height: 1;
  opacity: .95;
}


/* Full-bleed slider while headings stay in .container */
.projects-bleed{
  width: 100vw;
  margin-left: calc(50% - 50vw);
  padding: 0 var(--gutter);
}

.projects-swiper{
  border-radius: 0;      /* avoid rounded swiper container */
  overflow: visible;     /* let slides breathe */
}

.projects-swiper .swiper-slide{
  height: auto;
}

.project-card{
  position: relative;
  min-height: 300px;     /* increase height here */
  display: flex;
}

/* Ensure correct stacking */
.projects-swiper .project-card{
  position: relative;
  overflow: hidden;
}

.projects-swiper .project-thumb{
  position: absolute;
  inset: 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  transform: scale(1.02);
  transition: filter .5s ease;
}

/* This is the overlay you already have in the HTML */
.projects-swiper .project-overlay{
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, rgba(0,0,0,.35) 0%, rgba(0,0,0,.92) 75%);
  opacity: var(--ov, .88);
  transition: opacity .5s ease;
  pointer-events: none;
}

.projects-swiper .project-content{
  position: relative;
  z-index: 2;
}

/* Base (fallback if a slide isn't caught by the chain) */
.projects-swiper .swiper-slide{ --ov: .90; --bright: .68; }
.projects-swiper .swiper-slide .project-thumb{ filter: brightness(var(--bright)) saturate(1.05); }

/* Focus = 2nd visible (brightest / least overlay) */
.projects-swiper .swiper-slide-next{ --ov: .10; --bright: 1.00; }

/* Gradual darkening: 3rd, 4th, 5th */
.projects-swiper .swiper-slide-next + .swiper-slide{ --ov: .32; --bright: .90; }                 /* 3rd */
.projects-swiper .swiper-slide-next + .swiper-slide + .swiper-slide{ --ov: .55; --bright: .80; } /* 4th */
.projects-swiper .swiper-slide-next + .swiper-slide + .swiper-slide + .swiper-slide{ --ov: .78; --bright: .72; } /* 5th */

/* 1st (active) = darkest (match or slightly darker than 5th) */
.projects-swiper .swiper-slide-active{ --ov: .86; --bright: .66; }

/* keep arrows up top */
.section-projects .container{ position: relative; }

.section-projects .projects-nav{
  position: absolute;
  top: 6px;
  right: 0;
  margin-top: 0;
  z-index: 10;
}

.badge--dot{
  gap: 10px; /* keep spacing nice */
}

.badge--dot .dot{
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--accent); /* your red */
  flex: 0 0 auto;
}


/* =========================
   1) HEADER: make it feel integrated (frosted + shadow)
   ========================= */

/* If you want it to stick while scrolling */
.site-header{
  position: sticky;
  top: 0;
  z-index: 90;

  background: rgba(255,255,255,.9);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);

  border-bottom: 1px solid rgba(0,0,0,.08);
  box-shadow: 0 12px 30px rgba(0,0,0,.22);
}

/* Topbar: soften the harsh black */
.topbar{
  color: rgba(0,0,0,.78);
  border-bottom: 1px solid rgba(0,0,0,.06);
}

/* Fix nav hover/active (your current rule turns text white on a pale bg) */
.primary-nav a{
  color: rgba(0,0,0,.82);
}
.primary-nav a:hover,
.primary-nav .current-menu-item > a,
.primary-nav .current_page_item > a{
  color: rgba(0,0,0,.90);
  background: rgba(0,0,0,.06);
}





/* =========================
   3) SERVICES: make text consistently readable
   ========================= */



/* Give headings/body a subtle lift without looking “glowy” */
.service-card h3,
.service-card p,
.service-card .meta{
  text-shadow: 0 2px 14px rgba(0,0,0,.70);
}

/* Optional: make the location pill easier to scan */
.service-card .meta span{
  background: rgba(0,0,0,.22);
  border: 1px solid rgba(255,255,255,.10);
  padding: 6px 10px;
  border-radius: 999px;
}

.services-grid .service-card h3{
  font-size: clamp(20px, 1.25vw + 14px, 27px);
  line-height: 1.15;
}

.site-header{
  position: relative;   /* not sticky */
  top: auto;
  z-index: 90;
}

.navbar{
  position: sticky;
  top: 0;
  z-index: 91;

  background: rgba(255,255,255,.86);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);

  border-bottom: 1px solid rgba(0,0,0,.08);
  box-shadow: 0 12px 30px rgba(0,0,0,.22);
}

.hero-trust{
  display: grid;
  grid-template-rows: auto auto; /* or just remove grid-template-rows entirely */
  gap: 14px;
  align-content: start;
}





/* Footer: subtle blue ambient glow */
.site-footer{
  position: relative;
  overflow: hidden;
  border-top: 1px solid rgba(var(--brandBlue-rgb), .14);
}

.site-footer::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(900px 320px at 15% 0%, rgba(var(--brandBlue-rgb), .14), transparent 60%),
    radial-gradient(900px 320px at 85% 110%, rgba(var(--brandBlue-rgb), .10), transparent 65%);
  opacity: .65;
}

/* Ensure footer content stays above the glow */
.site-footer > *{
  position: relative;
  z-index: 1;
}

/* Optional: tiny blue hover cue on footer links */
.site-footer a:hover{
  color: rgba(var(--brandBlue-rgb), .95);
}



/* Blue CTA band (only in the projects section) */
.section-projects .cta-band{
  border-color: rgba(var(--brandBlue-rgb), .28);
  background:
    radial-gradient(800px 240px at 15% 0%, rgba(var(--brandBlue-rgb), .08), transparent 55%),
    rgba(255,255,255,.05);
}

.section-testimonials .container{
  position: relative;
}

.section-testimonials .testimonials-nav{
  position: absolute;
  top: 6px;
  right: 0;
  display: flex;
  gap: 10px;
  z-index: 10;
}

/* create a bit of breathing room between the header area and the panel */
.section-testimonials .panel{
  margin-top: 18px;
}

/* Header CTA in blue (only where you add .btn--blue) */
.btn--blue{
  border-color: rgba(var(--brandBlue-rgb), .55);
  background: linear-gradient(180deg,
    rgba(var(--brandBlue-rgb), .95),
    rgba(var(--brandBlue-rgb), .72)
  );
  color:#fff;
  
}

.btn--blue:hover{
  background: linear-gradient(180deg,
    rgba(var(--brandBlue-rgb), 1),
    rgba(var(--brandBlue-rgb), .78)
  );
}

/* Header CTA in blue */
.btn.btn--blue{
  color: #fff !important;
}

/* keep it white on hover/focus/active too */
.btn.btn--blue:hover,
.btn.btn--blue:focus,
.btn.btn--blue:active{
  color: #fff !important;
}

/* Testimonial stars = gold */
 .stars{
  color: #f5c542; /* gold */
  letter-spacing: 2px;
}

/* Locations reveal (map from right, panel from left) */
.locations-covered .locations-grid{
  /* tweak these if you want */
  --loc-dur: .75s;
  --loc-ease: cubic-bezier(.22, 1, .36, 1);
}

.locations-covered .locations-map,
.locations-covered .locations-panel{
  opacity: 0;
  filter: blur(8px);
  transition:
    opacity var(--loc-dur) var(--loc-ease),
    transform var(--loc-dur) var(--loc-ease),
    filter var(--loc-dur) var(--loc-ease);
  will-change: opacity, transform, filter;
}

/* map comes from right */
.locations-covered .locations-map{
  transform: translateX(-70px);
}

/* locations panel comes from left */
.locations-covered .locations-panel{
  transform: translateX(70px);
}

/* when in view, both animate in at the same time */
.locations-covered .locations-grid.is-in .locations-map,
.locations-covered .locations-grid.is-in .locations-panel{
  opacity: 1;
  filter: blur(0);
  transform: translateX(0);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  .locations-covered .locations-map,
  .locations-covered .locations-panel{
    opacity: 1;
    filter: none;
    transform: none;
    transition: none;
  }
}

/* Testimonials reveal up */
.section-testimonials{
  --t-dur: .75s;
  --t-ease: cubic-bezier(.22, 1, .36, 1);
}

.section-testimonials .panel,
.section-testimonials .testimonials-nav{
  opacity: 0;
  transform: translateY(42px);
  filter: blur(8px);
  transition:
    opacity var(--t-dur) var(--t-ease),
    transform var(--t-dur) var(--t-ease),
    filter var(--t-dur) var(--t-ease);
  will-change: opacity, transform, filter;
}

.section-testimonials.is-in .panel,
.section-testimonials.is-in .testimonials-nav{
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

@media (prefers-reduced-motion: reduce){
  .section-testimonials .panel,
  .section-testimonials .testimonials-nav{
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}

.service-card__copy{
  width: 80%;
  margin-right: auto;   /* keeps it pinned left */
}

.service-card__copy h3{
  margin-top: 12px;     /* move your inline style here */
  margin-bottom: 8px;
}

.service-card__copy p{
  margin: 0;
}

/* ============================
   OFFCANVAS (MOBILE)
   Paste at VERY bottom
============================ */

/* Hide topbar on mobile (info moved into offcanvas) */
@media (max-width: 980px){
  .topbar{ display:none; }

  /* Make sure desktop nav never "dropdowns" on mobile anymore */
  .primary-nav,
  .primary-nav.is-open{ display:none !important; }
}

/* Animated hamburger button */
.nav-toggle{
  display:none;
  width: 46px;
  height: 44px;
  border: 0;
  background: transparent;
  cursor: pointer;
  border-radius: 14px;
  align-items: center;
  justify-content: center;
  padding: 0;
}

@media (max-width: 980px){
  .nav-toggle{ display:inline-flex; }
}

.nav-toggle__icon{
  position: relative;
  width: 22px;
  height: 2px;
  background: #111;
  border-radius: 999px;
  transition: transform .22s ease, background .22s ease;
  display:block;
}

.nav-toggle__icon::before,
.nav-toggle__icon::after{
  content:"";
  position:absolute;
  left:0;
  width: 22px;
  height: 2px;
  background: #111;
  border-radius: 999px;
  transition: transform .22s ease, top .22s ease, opacity .22s ease;
}

.nav-toggle__icon::before{ top: -7px; }
.nav-toggle__icon::after{ top: 7px; }

/* Open state -> X */
body.mpg-nav-open .nav-toggle__icon{
  background: transparent;
}
body.mpg-nav-open .nav-toggle__icon::before{
  top: 0;
  transform: rotate(45deg);
}
body.mpg-nav-open .nav-toggle__icon::after{
  top: 0;
  transform: rotate(-45deg);
}

/* Offcanvas shell */
.mpg-offcanvas{
  position: fixed;
  inset: 0;
  z-index: 99990;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .22s ease, visibility .22s ease;
}

.mpg-offcanvas.is-open{
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.mpg-offcanvas__backdrop{
  position:absolute;
  inset:0;
  background: rgba(0,0,0,.55);
}

/* White panel */
.mpg-offcanvas__panel{
  position:absolute;
  right: 0;
  top: 0;
  height: 100%;
  width: min(380px, 92vw);
  background: #fff;
  color: #111;
  transform: translateX(100%);
  transition: transform .26s cubic-bezier(.2,.8,.2,1);
  display:flex;
  flex-direction: column;
  padding: 16px;
  gap: 14px;
}

.mpg-offcanvas.is-open .mpg-offcanvas__panel{
  transform: translateX(0);
}

/* Top area with logo + close */
.mpg-offcanvas__top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(0,0,0,.08);
}

.mpg-offcanvas__brand img{
  width: 150px;
  height: auto;
  display:block;
}

/* Close button (X) */
.mpg-offcanvas__close{
  border: 0;
  background: transparent;
  width: 46px;
  height: 44px;
  border-radius: 14px;
  cursor: pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

.mpg-offcanvas__close-icon{
  position: relative;
  width: 20px;
  height: 20px;
  display:block;
}
.mpg-offcanvas__close-icon::before,
.mpg-offcanvas__close-icon::after{
  content:"";
  position:absolute;
  left:0;
  top:50%;
  width:20px;
  height:2px;
  background:#111;
  transform-origin:center;
}
.mpg-offcanvas__close-icon::before{ transform: translateY(-50%) rotate(45deg); }
.mpg-offcanvas__close-icon::after{  transform: translateY(-50%) rotate(-45deg); }

/* Menu */
.mpg-offcanvas__nav{
  display:flex;
  flex-direction: column;
  gap: 12px;
  padding-top: 4px;
}

/* Menu list */
.mpg-offcanvas__list{
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  gap: 8px;
}

.mpg-offcanvas__list a{
  display:block;
  padding: 12px 12px;
  border-radius: 14px;
  font-weight: 700;
  color:#111;
  border: 0px solid rgba(0,0,0,.06);
  transition: transform .16s ease, background-color .16s ease, border-color .16s ease;
}

.mpg-offcanvas__list a:hover{
  transform: translateY(-1px);
  background: rgba(255,31,45,.08);
  border-color: rgba(255,31,45,.18);
}

/* CTA inside offcanvas */
.mpg-offcanvas__cta{
  width: 100%;
  justify-content: center;
}

/* Bottom meta (topbar info) */
.mpg-offcanvas__meta{
  margin-top: auto; /* pushes it to the bottom */
  padding-top: 14px;
  border-top: 1px solid rgba(0,0,0,.08);
  display:flex;
  flex-direction: column;
  gap: 10px;
}

/* Make badges look right on white */
.mpg-offcanvas__meta .badge{
  color:#111;
  background: rgba(0,0,0,.03);
  border: 1px solid rgba(0,0,0,.06);
  padding: 10px 12px;
}

/* Your dot helper (you already use badge--dot/.dot elsewhere) */
.badge--dot{ gap: 10px; }
.badge--dot .dot{
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--accent);
}

/* Lock page scroll while open */
body.mpg-nav-open{
  overflow: hidden;
}

/* Stop any sideways “extra page” (offcanvas + any 100vw bits) */
html, body{
  max-width: 100%;
  overflow-x: hidden; /* fallback */
}

/* Kill iOS / WebKit tap highlight (blue flash) */
a, button, input, textarea, select, label,
img, svg, .btn, [role="button"]{
  -webkit-tap-highlight-color: transparent;
  tap-highlight-color: transparent; /* harmless fallback */
}

/* Default: keep centred on desktop */
.hero.hero--bg::before{
  background-position: center;
}

/* Not desktop: show the RIGHT side of the image */
@media (max-width: 980px){
  .hero.hero--bg::before{
    background-position: 90% 20%;
  }
}

@media (max-width: 980px){

  .hero.hero--bg{
    --hero-mob-h: 200px;               /* <-- one value controls everything */
    background: none !important;
    position: relative !important;
    height: auto !important;
    min-height: auto !important;

    /* This is the key: reserve space for the image, so text starts underneath */
    padding-top: calc(var(--hero-mob-h) + 18px) !important;
  }

  .hero.hero--bg::before{
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: var(--hero-mob-h);
    width: 100%;
    z-index: 0;

    background-image:
      linear-gradient(to bottom, rgba(0,0,0,.15), rgba(0,0,0,.70)),
      var(--hero-bg);
    background-size: cover;
    background-position: right center;
    background-repeat: no-repeat;
  }

  /* Keep the hero content above the image and in normal flow */
  .hero.hero--bg > .container{
    position: relative !important;
    z-index: 1;
  }

  /* “Nuclear” reset for anything that might be overlaying */
  .hero.hero--bg .wrap,
  .hero.hero--bg .hero-card1,
  .hero.hero--bg .hero-trust{
    position: static !important;
    top: auto !important;
    transform: none !important;
    margin-top: 0 !important;
  }

  .hero.hero--bg .wrap{
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 16px !important;
  }
}

/* MOBILE: make the FIRST (active) slide the focus */


  /* default all slides = darker */
  .projects-swiper .swiper-slide{ --ov: .88; --bright: .70; }

  /* focus the visible first slide */
  .projects-swiper .swiper-slide-active{ --ov: .10; --bright: 1.00; }

  /* keep the peeking next/prev darker */
  .projects-swiper .swiper-slide-next,
  .projects-swiper .swiper-slide-prev{ --ov: .78; --bright: .78; }

  /* cancel the desktop progressive chain on mobile */
  .projects-swiper .swiper-slide-next + .swiper-slide,
  .projects-swiper .swiper-slide-next + .swiper-slide + .swiper-slide,
  .projects-swiper .swiper-slide-next + .swiper-slide + .swiper-slide + .swiper-slide{
    --ov: .88;
    --bright: .70;
  }



  .projects-swiper .swiper-slide{ --ov: .88; --bright: .70; }
  .projects-swiper .swiper-slide-active{ --ov: .10; --bright: 1.00; }
  .projects-swiper .swiper-slide-next,
  .projects-swiper .swiper-slide-prev{ --ov: .78; --bright: .78; }


/* Blue CTA – match red button behaviour (simple lift + slightly stronger hover gradient) */
.btn--blue{
  border-color: rgba(var(--brandBlue-rgb), .55);
  background: linear-gradient(180deg,
    rgba(var(--brandBlue-rgb), .95),
    rgba(var(--brandBlue-rgb), .72)
  );
  color:#fff;
}

.btn--blue:hover{
  /* lift is already handled by .btn:hover, but this keeps it consistent if you ever change base */
  transform: translateY(-1px);

  background: linear-gradient(180deg,
    rgba(var(--brandBlue-rgb), 1),
    rgba(var(--brandBlue-rgb), .78)
  );
}

/* Force blue hover to override the generic .btn:hover grey */
.btn.btn--blue:hover{
  background: linear-gradient(180deg,
    rgba(var(--brandBlue-rgb), 1),
    rgba(var(--brandBlue-rgb), .78)
  );
  border-color: rgba(var(--brandBlue-rgb), .55);
}

.page-hero--project .project-hero-grid{
  display:grid;
  grid-template-columns: 1.1fr .9fr;
  gap:24px;
  align-items:start;
}
@media (max-width: 960px){
  .page-hero--project .project-hero-grid{ grid-template-columns: 1fr; }
}

.project-hero-thumb img{ width:100%; height:auto; display:block; }

.project-meta-strip{
  display:grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap:12px;
  margin-top:14px;
}
@media (max-width: 700px){
  .project-meta-strip{ grid-template-columns: 1fr; }
}
.project-meta-item{
  border:0px solid rgba(255,255,255,.08);
  border-radius:14px;
  padding:12px;
  
}
.project-meta-item .kicker{ opacity:.7; font-size:12px; margin-bottom:4px; }
.project-meta-item .value{ font-weight:600; }

.project-layout{
  display:grid;
  grid-template-columns: 1fr 360px;
  gap:22px;
  align-items:start;
}
@media (max-width: 1024px){
  .project-layout{ grid-template-columns: 1fr; }
}
.project-sticky{
  position: sticky;
  top: 96px; /* adjust to your header height */
}

.project-nav{
  display:grid;
  gap:8px;
}
.project-nav a{
  display:block;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  text-decoration:none;
}
.project-nav a:hover{
  background: rgba(255,255,255,.04);
}

.project-related-list{ display:grid; gap:10px; }
.project-related-item{
  display:grid;
  grid-template-columns: 56px 1fr;
  gap:10px;
  align-items:center;
  text-decoration:none;
  padding:10px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.08);
}
.project-related-item:hover{ background: rgba(255,255,255,.04); }
.project-related-item .thumb img{
  width:56px; height:56px; object-fit:cover; border-radius:12px; display:block;
}
.project-related-item .title{ font-weight:700; }
.project-related-item .meta{ opacity:.7; font-size:12px; margin-top:2px; }

.project-section{ margin-top:22px; }
.project-more{ margin-top:40px; }

/* ===========================
   SINGLE PROJECT (Case Study)
   Paste at VERY BOTTOM
=========================== */

/* Stop the project page feeling "narrow" because of global .prose max-width */
.content--project .panel .prose,
.content--project main .prose{
  max-width: none;
}

/* Add nicer rhythm inside the main panel */
.content--project .project-section{
  margin-top: 26px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.08);
}
.content--project .project-section:first-of-type{
  margin-top: 18px;
  padding-top: 0;
  border-top: 0;
}

/* Hero layout */
.page-hero--project{
  padding: 42px 0 22px;
}
.page-hero--project .project-hero-grid{
  display:grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 22px;
  align-items:start;
}
@media (max-width: 960px){
  .page-hero--project .project-hero-grid{ grid-template-columns: 1fr; }
}

/* Thumbnail card to feel more "premium" */
.project-hero-thumb{
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
}
.project-hero-thumb img{
  width:100%;
  height:auto;
  display:block;
}

/* Details strip (Industry / Services / Location) */
.project-meta-strip{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}
@media (max-width: 700px){
  .project-meta-strip{ grid-template-columns: 1fr; }
}
.project-meta-item{
  border: 0px solid rgba(255,255,255,.10);
  border-radius: 16px;
  padding: 12px 14px;

}
.project-meta-item .kicker{
  display:block; /* override inline-flex kicker style for this context */
  font-size: 12px;
  letter-spacing: .02em;
  opacity: .75;
  margin-bottom: 6px;
}
.project-meta-item .kicker .line{ display:none; } /* hide the little line */
.project-meta-item .value{
  font-weight: 700;
  color: rgba(255,255,255,.92);
}

/* Main layout + aside */
.project-layout{
  display:grid;
  grid-template-columns: 1fr 360px;
  gap: 20px;
  align-items:start;
}
@media (max-width: 1024px){
  .project-layout{ grid-template-columns: 1fr; }
}

/* Sticky aside (your header/nav is sticky, so leave breathing room) */
.project-sticky{
  position: sticky;
  top: 110px; /* tweak if needed */
}

/* On-this-page nav */
.project-nav{
  display:grid;
  gap: 8px;
  margin-top: 10px;
}
.project-nav a{
  display:block;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.03);
}
.project-nav a:hover{
  background: rgba(255,255,255,.06);
}

/* Related list */
.project-related-list{ display:grid; gap:10px; }
.project-related-item{
  display:grid;
  grid-template-columns: 58px 1fr;
  gap: 10px;
  align-items:center;
  padding: 10px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.03);
}
.project-related-item:hover{ background: rgba(255,255,255,.06); }
.project-related-item .thumb img{
  width:58px;
  height:58px;
  object-fit:cover;
  border-radius: 14px;
}
.project-related-item .title{
  font-weight: 800;
  line-height: 1.15;
}
.project-related-item .meta{
  margin-top: 3px;
  font-size: 12px;
  opacity: .72;
}

/* ===========================
   "More projects" grid styling
   (you didn't have these classes in your theme)
=========================== */

.section-header{
  margin: 34px 0 16px;
}
.section-kicker{
  color: var(--muted2);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 8px;
}
.section-title{
  margin: 0 0 10px;
  font-size: clamp(22px, 2.2vw, 34px);
  line-height: 1.15;
}

.blog-grid{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
@media (max-width: 980px){
  .blog-grid{ grid-template-columns: 1fr; }
}

.blog-card{
  border-radius: var(--radius);
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  overflow:hidden;
  box-shadow: var(--shadow);
  display:flex;
  flex-direction: column;
  min-height: 100%;
}
.blog-card-thumb{
  display:block;
}
.blog-card-thumb img{
  width:100%;
  height: 200px;
  object-fit: cover;
}
.blog-card-body{
  padding: 16px;
  display:flex;
  flex-direction: column;
  gap: 10px;
}
.blog-card-body h3{
  margin: 0;
  font-size: 18px;
}
.blog-card-body p{
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.55;
}
.read-more{
  margin-top: auto;
  font-weight: 800;
  color: rgba(255,255,255,.92);
  text-decoration: underline;
  text-decoration-color: rgba(255,31,45,.55);
}
.read-more:hover{
  text-decoration-color: rgba(255,31,45,.95);
}

/* ===========================
   SINGLE PROJECT – FIX (v3)
   Paste at VERY BOTTOM
=========================== */

/* HERO: make it feel like one composed header, not two random columns */
.page-hero--project{
  padding: 34px 0 24px;
  border-bottom: 1px solid rgba(255,255,255,.08);
  background:
    radial-gradient(900px 520px at 18% 18%, rgba(255,31,45,.18), transparent 60%),
    radial-gradient(700px 480px at 85% 25%, rgba(255,255,255,.06), transparent 62%);
}

.page-hero--project .project-hero-grid{
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 22px;
  align-items: center;
  min-height: 420px; /* stops the hero feeling “floaty” */
}

@media (max-width: 900px){
  .page-hero--project .project-hero-grid{
    grid-template-columns: 1fr;
    min-height: 0;
  }
}

/* Featured image: FORCE a nice crop instead of letting portrait images wreck the layout */
.project-hero-thumb{
  width: 100%;
  margin-left: auto;
  height: 420px;           /* key: fixes the “massive hero” problem */
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  overflow: hidden;
}

.project-hero-thumb img{
  width: 100%;
  height: 100%;
  object-fit: cover;       /* key: crops portrait images nicely */
  object-position: center;
  display: block;
}

/* Meta strip: make it compact and “Chris Lewis”-ish */
.project-meta-strip{
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
}

.project-meta-item{
  border: 0px solid rgba(255,255,255,.10);
  border-radius: 14px;
  padding: 10px 12px;
  min-width: 160px;
}

.project-meta-item .kicker{
  display: block;          /* override inline-flex kicker */
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: 11px;
  opacity: .70;
  margin: 0 0 6px;
}

.project-meta-item .kicker .line{ display:none; }
.project-meta-item .value{ font-weight: 800; }

/* CONTENT: pull the content up so it feels connected to the hero */
.content--project{
  padding-top: 0;
}

.content--project .project-layout{
  margin-top: -34px;       /* key: makes it feel “attached” */
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 18px;
  align-items: start;
}

/* Keep the aside visible until it truly needs to stack */
@media (max-width: 860px){
  .content--project .project-layout{
    grid-template-columns: 1fr;
    margin-top: 0;
  }
}

.project-sticky{
  position: sticky;
  top: 110px;
}

/* Your global .prose max-width makes the main panel feel skinny/odd */
.content--project main.panel .prose{
  max-width: none;
}

/* Section rhythm inside the main panel */
.content--project .project-section{
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.08);
}

.content--project .project-section:first-of-type{
  margin-top: 14px;
  padding-top: 0;
  border-top: 0;
}

/* Gallery: if swiper shows half width, this prevents the “blank half” look */
.js-project-gallery .swiper-slide{
  width: 100% !important;
}

.mpg-quals-gallery{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
}

.mpg-quals-card{
  display: block;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 16px;
  overflow: hidden;
  background: rgba(255,255,255,.03);
  transition: transform .18s ease, border-color .18s ease;
}

.mpg-quals-card:hover{
  transform: translateY(-1px);
  border-color: rgba(255,255,255,.18);
}

.mpg-quals-card__thumb{
  aspect-ratio: 4 / 3;
  background: rgba(0,0,0,.18);
}

.mpg-quals-thumb{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.mpg-quals-fallback{
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  font-weight: 700;
  letter-spacing: .12em;
}

.mpg-quals-card__meta{
  padding: 12px 12px 14px;
}

.mpg-quals-card__title{
  font-weight: 600;
  line-height: 1.2;
}

.mpg-quals-card__cta{
  margin-top: 6px;
  opacity: .8;
  font-size: 13px;
}

.mpg-quals-pdf-canvas{
  width: 100%;
  height: 100%;
  display: none;           /* becomes block after render */
}

.mpg-quals-card__thumb{
  position: relative;
  overflow: hidden;
}

.mpg-quals-fallback{
  position: absolute;
  inset: 0;
  display: grid;           /* will be hidden after render */
  place-items: center;
  font-weight: 700;
  letter-spacing: .12em;
}

.mpg-quals-card__thumb{ position: relative; overflow: hidden; }

.mpg-quals-pdf-canvas,
.mpg-quals-fallback{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}

.mpg-quals-pdf-canvas{ z-index: 2; display:block; }
.mpg-quals-fallback{
  z-index: 1;
  display:grid;
  place-items:center;
  background: rgba(0,0,0,.18);
}

/* SINGLE PROJECT: make the bottom projects section FULL-BLEED */
.content--project .section-projects{
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  border-radius: 0;
}

/* FIX: stop the project content overlapping the hero */
.content--project{
  padding-top: 28px !important;  /* gives clean separation */
}

.content--project .project-layout{
  margin-top: 0 !important;      /* remove the “pull up” */
}

/* PROJECT SWIPER (bottom of single project): force card to fill full slide width */
.section-projects .projects-swiper .swiper-slide{
  display: flex !important;           /* make child stretch */
}

.section-projects .projects-swiper .swiper-slide > a.project-card{
  display: flex !important;           /* keep your layout */
  width: 100% !important;             /* KEY: fill slide width */
  flex: 1 0 100% !important;          /* KEY: don't shrink */
  min-width: 0 !important;
}

/* ensure the background layer truly covers the whole card */
.section-projects .projects-swiper .project-thumb{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
}

/* ===========================
   THUMBNAIL GALLERY GRID
=========================== */

.mpg-gallery-grid{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

@media (max-width: 900px){
  .mpg-gallery-grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
}

.mpg-gallery-item{
  padding: 0;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.03);
  border-radius: 16px;
  overflow: hidden;
  cursor: pointer;
  display: block;
  box-shadow: var(--shadow);
  transition: transform .12s ease, border-color .12s ease, background .12s ease;
}

.mpg-gallery-item:hover{
  transform: translateY(-1px);
  border-color: rgba(255,255,255,.18);
  background: rgba(255,255,255,.05);
}

.mpg-gallery-thumb{
  width: 100%;
  height: 180px;
  object-fit: cover;
  display: block;
}

@media (max-width: 900px){
  .mpg-gallery-thumb{ height: 150px; }
}

/* ===========================
   LIGHTBOX
=========================== */

.mpg-lightbox{
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: none;
}

.mpg-lightbox.is-open{
  display: block;
}

.mpg-lightbox__backdrop{
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.70);
}

.mpg-lightbox__panel{
  position: relative;
  width: min(1100px, 94vw);
  height: min(78vh, 780px);
  margin: 6vh auto;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(15,18,23,.92);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  box-shadow: var(--shadow);
  overflow: hidden;

  display: grid;
  place-items: center;
  padding: 14px;
}

.mpg-lightbox__figure{
  margin: 0;
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
}

.mpg-lightbox__img{
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}

.mpg-lightbox__close{
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  min-width: 44px;
  min-height: 44px;
  font-size: 20px;
  line-height: 1;
}

.mpg-lightbox__nav{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  min-width: 44px;
  min-height: 44px;
}

.mpg-lightbox__prev{ left: 12px; }
.mpg-lightbox__next{ right: 12px; }

.mpg-lightbox__nav.is-disabled{
  opacity: .35;
  pointer-events: none;
}

/* Stop page scroll when lightbox is open */
body.mpg-lightbox-open{
  overflow: hidden;
}

/* Project cards: service bubbles */
.project-chips{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

.project-chips .chip{
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .02em;

  color: rgba(255,255,255,.88);
  background: rgba(0,0,0,.28);
  border: 0px solid rgba(255,255,255,.12);
  backdrop-filter: blur(8px);
}

/* add a real gap between the case-study layout and the next section */
.content--project .project-layout{
  margin-bottom: 48px; /* try 48–82px */
}

.project-thumb{
  border-top-right-radius: 100px;
}

/* DESKTOP NAV: active = same as hover (visible on white header) */
.navbar .primary-nav ul li > a:hover,
.navbar .primary-nav ul li > a:focus-visible,
.navbar .primary-nav ul li.current-menu-item > a,
.navbar .primary-nav ul li.current_page_item > a,
.navbar .primary-nav ul li.current-menu-ancestor > a,
.navbar .primary-nav ul li.current_page_ancestor > a,
.navbar .primary-nav ul li.current-menu-parent > a,
.navbar .primary-nav ul li.current_page_parent > a,
.navbar .primary-nav ul li > a[aria-current="page"]{
  color: rgba(0,0,0,.90);
  background: rgba(0,0,0,.06);
}

/* Only affect this 2-col grid (contact page) */
.page-template .content .grid.grid-2{
  align-items: start; /* for CSS grid */
}

.empty-state{
  min-height: 50vh;
  display: grid;
  place-items: center;
  text-align: center;
  color: var(--muted);
  font-weight: 700;
  font-size: 16px;
}

/* Projects archive cards: make image + overlay match the 100px corner */
.projects-grid .card{
  border-top-right-radius: 100px; /* match the hero design */
  overflow: hidden;               /* clip children (thumb + overlay) */
}

/* Ensure both layers follow the same shape */
.projects-grid .card .project-thumb,
.projects-grid .card .project-overlay{
  border-top-right-radius: 100px;
}

/* Default: cards render normally (no JS = no hidden state) */
.services-grid .service-card{
  opacity: 1;
  transform: none;
}

/* Only hide when JS adds .reveal-ready */
.services-grid.reveal-ready .service-card{
  opacity: 0;
  transform: translate3d(var(--dx), var(--dy), 0) scale(.985);
  will-change: transform, opacity;
}

/* When JS runs, it will animate to visible; no .is-in class needed */

/* ===========================
   PROSE LIST INDENT (wrap aligned)
   =========================== */

:root{
  /* one knob to keep all lists aligned site-wide */
  --prose-list-indent: 1.35rem;
  --prose-list-gap: .55rem;
}

.prose :where(ul, ol){
  list-style-position: outside;         /* key: wrapped lines align with text, not the bullet */
  padding-left: var(--prose-list-indent);
  margin: 0.9em 0;                      /* tidy spacing above/below lists */
}

.prose :where(li){
  padding-left: .25rem;                 /* small gap between marker and text */
  margin: 0 0 var(--prose-list-gap);
}

.prose :where(li:last-child){
  margin-bottom: 0;
}

/* Nested lists: keep consistent but slightly tighter */
.prose :where(ul, ol) :where(ul, ol){
  margin: 0.5em 0 0.5em;
}

/* Optional: ensure markers stay readable on your dark theme */
.prose :where(li)::marker{
  color: rgba(255,255,255,.78);
}

/* ===========================
   PROSE LISTS (proper indent + wrap)
   =========================== */

.prose ul,
.prose ol{
  margin: 0.9em 0;
  padding-left: 1.35rem;          /* controls the indent */
  list-style-position: outside;   /* key for wrapped-line alignment */
}

.prose li{
  padding-left: .25rem;           /* gap between marker and text */
  margin: 0 0 .55rem;
}

.prose li:last-child{ margin-bottom: 0; }

.prose li::marker{
  color: rgba(255,255,255,.78);
}

/* Remove border/background from the project hero featured image wrapper */
.project-hero-thumb.card{
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

/* Remove the extra 70px bottom padding on the single project content wrapper */
.content.content--project{
  padding-bottom: 0; /* or 20px if you still want a little breathing room */
}

/* LIGHTBOX: let the panel be tall enough on desktop (remove 780px cap) */
.mpg-lightbox__panel{
  width: min(1200px, 96vw) !important;
  height: 92vh !important;          /* was min(78vh, 780px) */
  margin: 4vh auto !important;       /* was 6vh auto */
  padding: 0 !important;             /* keep height "real" */
  overflow: hidden !important;
}

/* keep your inner padding here instead */
.mpg-lightbox__figure{
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 14px;
  box-sizing: border-box;
}

/* image stays "contain" (no crop) but now has more room */
.mpg-lightbox__img{
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}

/* LIGHTBOX: proper "contain" behaviour */
.mpg-lightbox__panel{
  width: min(1200px, 96vw);
  height: 92vh;            /* gives portrait images real room */
  margin: 4vh auto;
  padding: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.mpg-lightbox__figure{
  margin: 0;
  width: 100%;
  height: 100%;            /* THIS makes a real container box */
  display: flex;
  align-items: center;
  justify-content: center;
}

.mpg-lightbox__img{
  width: 100% !important;
  height: 100% !important; /* THIS is what makes object-fit work */
  object-fit: contain !important;
  max-width: none !important;
  max-height: none !important;
  display: block;
}

/* =========================================
   OFFCANVAS: clean slide-in (no blur, no overshoot)
   Paste at VERY BOTTOM
========================================= */

/* Menu items: start hidden */
.mpg-offcanvas__list > li{
  opacity: 0;
  transform: translate3d(18px, 0, 0);
  transition:
    opacity .28s ease,
    transform .28s ease;
  transition-delay: 0ms; /* close = no stagger delay */
  will-change: transform, opacity;
}

/* Stagger delays (open only) */
.mpg-offcanvas__list > li:nth-child(1){  --d:  60ms; }
.mpg-offcanvas__list > li:nth-child(2){  --d: 110ms; }
.mpg-offcanvas__list > li:nth-child(3){  --d: 160ms; }
.mpg-offcanvas__list > li:nth-child(4){  --d: 210ms; }
.mpg-offcanvas__list > li:nth-child(5){  --d: 260ms; }
.mpg-offcanvas__list > li:nth-child(6){  --d: 310ms; }
.mpg-offcanvas__list > li:nth-child(7){  --d: 360ms; }
.mpg-offcanvas__list > li:nth-child(8){  --d: 410ms; }
.mpg-offcanvas__list > li:nth-child(9){  --d: 460ms; }
.mpg-offcanvas__list > li:nth-child(10){ --d: 510ms; }
.mpg-offcanvas__list > li:nth-child(11){ --d: 560ms; }
.mpg-offcanvas__list > li:nth-child(12){ --d: 610ms; }

/* Open: slide in + stagger */
.mpg-offcanvas.is-open .mpg-offcanvas__list > li{
  opacity: 1;
  transform: translate3d(0,0,0);
  transition-delay: var(--d, 0ms);
}

/* CTA: reveal after items (no blur) */
.mpg-offcanvas__cta{
  opacity: 0;
  transform: translate3d(18px, 0, 0);
  transition:
    opacity .28s ease,
    transform .28s ease;
  transition-delay: 0ms;
  will-change: transform, opacity;
}

.mpg-offcanvas.is-open .mpg-offcanvas__cta{
  opacity: 1;
  transform: translate3d(0,0,0);
  transition-delay: 360ms; /* after last nav item */
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  .mpg-offcanvas__list > li,
  .mpg-offcanvas__cta{
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* OFFCANVAS: active page highlight (match desktop hover/active) */
.mpg-offcanvas__list li > a:hover,
.mpg-offcanvas__list li > a:focus-visible,
.mpg-offcanvas__list li.current-menu-item > a,
.mpg-offcanvas__list li.current_page_item > a,
.mpg-offcanvas__list li.current-menu-ancestor > a,
.mpg-offcanvas__list li.current_page_ancestor > a,
.mpg-offcanvas__list li.current-menu-parent > a,
.mpg-offcanvas__list li.current_page_parent > a,
.mpg-offcanvas__list li > a[aria-current="page"]{
  color: rgba(0,0,0,.90);
  background: rgba(0,0,0,.06);
}

/* LIGHTBOX NAV: stop hover "jolt" (btn:hover overrides translateY(-50%)) */
.mpg-lightbox__nav{
  /* keep the centring transform stable */
  transform: translateY(-50%);
}

/* If the nav buttons also use .btn, stop the global lift from replacing the transform */
.mpg-lightbox__nav.btn:hover,
.mpg-lightbox__nav.btn:focus-visible{
  transform: translateY(-50%);            /* no lift = no jolt */
}

/* Optional: if you DO want a tiny lift, use this instead:
.mpg-lightbox__nav.btn:hover,
.mpg-lightbox__nav.btn:focus-visible{
  transform: translateY(calc(-50% - 1px));
}
*/

/* OFFCANVAS meta: spacing between icon + text (phone / email / shield) */
.mpg-offcanvas__meta .badge1{
  display: inline-flex;
  align-items: center;
  gap: 5px;                      /* <-- tweak 8–12px */
}

/* Fallback (and also helps if gap ever gets ignored) */
.mpg-offcanvas__meta .badge1 svg{
  margin-right: 5px;
  flex: 0 0 auto;
}

/* Optional: make badge1 look consistent with your other offcanvas badges */
.mpg-offcanvas__meta .badge1{
  color:#111;
  background: rgba(0,0,0,.03);
  border: 1px solid rgba(0,0,0,.06);
  padding: 10px 12px;
  border-radius: 999px;
  text-decoration: none;
}

/* Services cards only: keep the meta row but right-align the button */
.services-grid .service-card .meta{
  justify-content: flex-end;
}

/* ===========================
   ABOUT: reveal (left + right)
   =========================== */

.content--about{
  --about-dur: .75s;
  --about-ease: cubic-bezier(.22, 1, .36, 1);
}

.content--about .about-reveal{
  opacity: 0;
  transform: translate3d(0,0,0);
  transition:
    opacity var(--about-dur) var(--about-ease),
    transform var(--about-dur) var(--about-ease);
  will-change: opacity, transform;
}

.content--about .about-reveal--left{
  transform: translate3d(-60px, 0, 0);
}

.content--about .about-reveal--right{
  transform: translate3d(60px, 0, 0);
  transition-delay: 120ms; /* slight stagger so it feels deliberate */
}

.content--about .about-reveal.is-in{
  opacity: 1;
  transform: translate3d(0,0,0);
}

@media (prefers-reduced-motion: reduce){
  .content--about .about-reveal{
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* ===========================
   BACK TO TOP (shows after hero)
   =========================== */

.mpg-to-top{
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 99995;

  display: inline-flex;
  align-items: center;
  gap: 10px;

  height: 46px;
  padding: 0 14px;
  border-radius: 999px;

  border: 0px solid rgba(255,255,255,.14);
  background: rgba(15,18,23,.92);
  color: rgba(255,255,255,.92);
  box-shadow: 0 18px 40px rgba(0,0,0,.45);

  cursor: pointer;

  /* hidden by default */
  opacity: 0;
  pointer-events: none;
  transform: translate3d(0, 14px, 0);

  transition: opacity .22s ease, transform .22s ease, background .18s ease, border-color .18s ease;
  will-change: opacity, transform;
}

/* Mobile: lift Back-to-Top so it doesn’t cover footer/social icons */
@media (max-width: 980px){
  .mpg-to-top{
    bottom: calc(18px + 56px + env(safe-area-inset-bottom)); /* tweak 56px if needed */
  }
}

.mpg-to-top.is-visible{
  opacity: 1;
  pointer-events: auto;
  transform: translate3d(0,0,0);
}

.mpg-to-top.is-visible:hover{
  transform: translate3d(0,-1px,0);
  background: rgba(22,26,33,.95);
  border-color: rgba(255,255,255,.22);
}

.mpg-to-top__icon{
  width: 30px;
  height: 30px;
  border-radius: 999px;
  display: grid;
  place-items: center;

  background: rgba(255,31,45,.18);
  border: 0px solid rgba(255,31,45,.32);
  line-height: 1;
  font-weight: 900;
}

.mpg-to-top__text{
  font-weight: 800;
  font-size: 13px;
  letter-spacing: .02em;
}

.mpg-to-top:focus-visible{
  outline: none;
  box-shadow: 0 0 0 3px rgba(255,31,45,.22), 0 18px 40px rgba(0,0,0,.45);
}

@media (prefers-reduced-motion: reduce){
  .mpg-to-top{
    transition: none;
  }
}

/* ===========================
   PROJECTS ARCHIVE: reveal up (no blur)
   =========================== */

/* Default (no JS) = normal */
.projects-grid .card{
  opacity: 1;
  transform: none;
}

/* Only hide when JS enables reveal */
.projects-grid.reveal-ready .card{
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition:
    opacity .45s cubic-bezier(.22, 1, .36, 1),
    transform .45s cubic-bezier(.22, 1, .36, 1);
  will-change: opacity, transform;
}

.projects-grid.reveal-ready .card.is-in{
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  .projects-grid.reveal-ready .card{
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* ===========================
   CONTACT INFO: reveal up (no blur)
   =========================== */

/* Default (no JS) = normal */
.contact-info{
  opacity: 1;
  transform: none;
}

/* Only hide when JS enables reveal */
.contact-info.reveal-ready{
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition:
    opacity .45s cubic-bezier(.22, 1, .36, 1),
    transform .45s cubic-bezier(.22, 1, .36, 1);
  will-change: opacity, transform;
}

.contact-info.reveal-ready.is-in{
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  .contact-info.reveal-ready{
    opacity: 1;
    transform: none;
    transition: none;
  }
}


/* Only hide reveal items when JS is active */
html.js .mj-reveal,
html.js .mpg-reveal {
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
  will-change: opacity, transform;
}

/* Direction variants */
html.js .mj-reveal.mj-reveal-left,
html.js .mpg-reveal.mpg-reveal-left {
  transform: translate3d(-18px, 0, 0);
}

html.js .mj-reveal.mj-reveal-right,
html.js .mpg-reveal.mpg-reveal-right {
  transform: translate3d(18px, 0, 0);
}

/* In view */
html.js .mj-reveal.is-in-view,
html.js .mpg-reveal.is-in-view {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* Stagger delays */
html.js .mj-reveal-delay-1, html.js .mpg-reveal-delay-1 { transition-delay: 0.08s; }
html.js .mj-reveal-delay-2, html.js .mpg-reveal-delay-2 { transition-delay: 0.16s; }
html.js .mj-reveal-delay-3, html.js .mpg-reveal-delay-3 { transition-delay: 0.24s; }
html.js .mj-reveal-delay-4, html.js .mpg-reveal-delay-4 { transition-delay: 0.32s; }
html.js .mj-reveal-delay-5, html.js .mpg-reveal-delay-5 { transition-delay: 0.40s; }
html.js .mj-reveal-delay-6, html.js .mpg-reveal-delay-6 { transition-delay: 0.48s; }

/* Reduced motion: always visible, no animation */
@media (prefers-reduced-motion: reduce) {
  html.js .mj-reveal,
  html.js .mpg-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* Mobile spacing when the 2-col grids stack */
@media (max-width: 900px) {
  .about-grid,
  .page-template-contact-php .content .grid.grid-2 {
    row-gap: 30px;   /* space between stacked rows */
      }
}

/* Contact page: add spacing when the 2-col grid collapses to 1-col */
@media (max-width: 900px) {
  .content .grid.grid-2 > .contact-info {
    margin-top: 30px;
  }
}

/* About page: 2/3 + 1/3 layout */
.about-grid{
  display: grid; /* ensure it's grid even if .grid changes later */
  grid-template-columns: 3fr 1fr;
  gap: 16px; /* keep your existing rhythm */
  align-items: start;
}

/* Mobile: stack as normal */
@media (max-width: 980px){
  .about-grid{
    grid-template-columns: 1fr;
    row-gap: 30px; /* keep the spacing you already like */
  }
}

/* About grid: 2/3 + 1/3 on desktop */
@media (min-width: 981px){
  .about-grid{
    grid-template-columns: 2fr 1fr;
  }
}

/* Tabs wrapper */
.about-tabs{
  display: grid;
  gap: 14px;
}

/* Tab bar */
.about-tabs__nav{
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

@media (max-width: 680px){
  .about-tabs__nav{
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 6px;
    -webkit-overflow-scrolling: touch;
  }
  .about-tabs__nav::-webkit-scrollbar{ height: 6px; }
}

/* Tabs */
.about-tabs__tab{
  appearance: none;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  color: rgba(255,255,255,.86);
  padding: 10px 12px;
  border-radius: 999px;
  font-weight: 800;
  font-size: 13px;
  cursor: pointer;
  white-space: nowrap;
}

.about-tabs__tab:hover{
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.18);
}

.about-tabs__tab[aria-selected="true"]{
  border-color: rgba(255,31,45,.45);
  background: linear-gradient(180deg, rgba(255,31,45,.22), rgba(255,255,255,.03));
  color: rgba(255,255,255,.92);
}

/* Panel */
.about-tabs__panel{
  border-top: 1px solid rgba(255,255,255,.08);
  padding-top: 14px;
}

.about-tabs__panel[hidden]{
  display: none;
}

/* ABOUT PAGE: lists with proper wrap alignment (hanging indent) */
.page-template-about-mpg .content--about .panel1 :where(ul, ol){
  list-style-position: outside;     /* marker sits outside the text block */
  padding-left: 1.35rem;            /* controls the indent */
  margin: 0.9em 0;
}

.page-template-about-mpg .content--about .panel1 :where(li){
  padding-left: 0;                  /* IMPORTANT: removes the misalignment */
  margin: 0 0 .55rem;
}

.page-template-about-mpg .content--about .panel1 :where(li:last-child){
  margin-bottom: 0;
}

/* Optional: keep bullets readable */
.page-template-about-mpg .content--about .panel1 :where(li)::marker{
  color: rgba(255,255,255,.78);
}

/* Auto-converted bullet paragraphs -> proper hanging indent */
.content--about .panel1 ul.about-auto-list{
  list-style-position: outside;
  padding-left: 1.35rem;
  margin: .9em 0;
}
.content--about .panel1 ul.about-auto-list li{
  padding-left: 0;
  margin: 0 0 .55rem;
}
.content--about .panel1 ul.about-auto-list li:last-child{ margin-bottom: 0; }
.content--about .panel1 ul.about-auto-list li::marker{
  color: rgba(255,255,255,.78);
}

/* Sidebar should feel like a deliberate card */
.about-side{
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  box-shadow: var(--shadow);
  border-radius: var(--radius);
  align-self: start;
}

/* Sticky on desktop so the empty space disappears */
@media (min-width: 981px){
  .about-side{
    position: sticky;
    top: 110px; /* adjust to your header height */
  }
}

.about-side__inner{ padding: 18px; }

.about-facts{
  display: grid;
  gap: 10px;
}

.about-fact{
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.18);
  color: rgba(255,255,255,.86);
}

.about-fact svg{ opacity: .95; }

/* =========================================
   ABOUT: PERFECT WRAP INDENT (marker | text)
   Paste at VERY BOTTOM (after your current block)
========================================= */

.content--about .panel1 .prose{
  --about-marker-col: 2.7em;  /* <- increase/decrease to taste */
  --about-marker-gap: .55em;
}

/* Kill native markers so we don't fight browser spacing */
.content--about .panel1 .prose ul,
.content--about .panel1 .prose ol{
  list-style: none !important;
  padding-left: 0 !important;
  margin: .9em 0 !important;
}

/* Two-column list item: marker | text (wraps perfectly) */
.content--about .panel1 .prose ul > li,
.content--about .panel1 .prose ol > li{
  display: grid !important;
  grid-template-columns: var(--about-marker-col) 1fr !important;
  column-gap: var(--about-marker-gap) !important;
  align-items: start !important;
  margin: 0 0 .55em !important;
}

/* Bullet marker */
.content--about .panel1 .prose ul > li::before{
  content: "•" !important;
  color: rgba(255,255,255,.78);
  line-height: 1.55;
  text-align: right;
}

/* Numbered marker */
.content--about .panel1 .prose ol{ counter-reset: about-ol; }
.content--about .panel1 .prose ol > li{ counter-increment: about-ol; }
.content--about .panel1 .prose ol > li::before{
  content: counter(about-ol) "." !important;
  color: rgba(255,255,255,.78);
  line-height: 1.55;
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}

/* Gutenberg sometimes wraps list text in <p> */
.content--about .panel1 .prose li > p{
  margin: 0 !important;
}

/* Nested lists: indent the whole nested block */
.content--about .panel1 .prose li ul,
.content--about .panel1 .prose li ol{
  margin: .45em 0 0 !important;
  padding-left: calc(var(--about-marker-col) + var(--about-marker-gap)) !important;
}

/* Keep your bullet-paragraph fallback aligned to the same indent */
.content--about .panel1 .prose p.is-bullet-line{
  padding-left: calc(var(--about-marker-col) + var(--about-marker-gap)) !important;
  text-indent: calc(-1 * (var(--about-marker-col) + var(--about-marker-gap))) !important;
}

/* ===========================
   PAGE.PHP: Bullet paragraphs -> perfect wrap indent
   (works on default pages using page.php)
   =========================== */

body.page-template-default .prose{
  --mpg-marker-col: 2.7em; /* controls how far the wrapped line indents */
  --mpg-marker-gap: .55em;
}

/* Real lists on page.php: keep native markers + decent wrap */
body.page-template-default .prose ul:not(.mpg-auto-list),
body.page-template-default .prose ol:not(.mpg-auto-list){
  list-style-position: outside;
  padding-left: 1.6em;
  margin: .9em 0;
}

body.page-template-default .prose ul:not(.mpg-auto-list) li,
body.page-template-default .prose ol:not(.mpg-auto-list) li{
  margin: 0 0 .55em;
}

body.page-template-default .prose li::marker{
  color: rgba(255,255,255,.78);
}

/* Auto bullet lists (created by JS) = fixed marker column, perfect wrap */
body.page-template-default .prose ul.mpg-auto-list,
body.page-template-default .prose ol.mpg-auto-list{
  list-style: none;
  padding-left: 0;
  margin: .9em 0;
}

/* Two-column layout: marker | text */
body.page-template-default .prose ul.mpg-auto-list > li,
body.page-template-default .prose ol.mpg-auto-list > li{
  display: grid;
  grid-template-columns: var(--mpg-marker-col) 1fr;
  column-gap: var(--mpg-marker-gap);
  align-items: start;
  margin: 0 0 .55em;
}

/* bullets */
body.page-template-default .prose ul.mpg-auto-list > li::before{
  content: "•";
  text-align: right;
  color: rgba(255,255,255,.78);
  line-height: 1.55;
}

/* numbers */
body.page-template-default .prose ol.mpg-auto-list{ counter-reset: mpg-ol; }
body.page-template-default .prose ol.mpg-auto-list > li{ counter-increment: mpg-ol; }
body.page-template-default .prose ol.mpg-auto-list > li::before{
  content: counter(mpg-ol) ".";
  text-align: right;
  color: rgba(255,255,255,.78);
  line-height: 1.55;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}

/* Gutenberg sometimes wraps li text in <p> */
body.page-template-default .prose .mpg-auto-list li > p{
  margin: 0;
}

/* =========================================
   KILL SWITCH: disable all scroll-reveal hiding/animations
   Paste at VERY BOTTOM
========================================= */

.services-grid.reveal-ready .service-card,
.content--about .about-reveal,
.locations-covered .locations-map,
.locations-covered .locations-panel,
.section-testimonials .panel,
.section-testimonials .testimonials-nav,
.projects-grid.reveal-ready .card,
.contact-info.reveal-ready,
html.js .mj-reveal,
html.js .mpg-reveal{
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
  transition: none !important;
}

.service-card::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;

  /* Dark at top → lighter at bottom */
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,.82) 0%,
    rgba(0,0,0,.60) 28%,
    rgba(0,0,0,.28) 62%,
    rgba(0,0,0,.10) 100%
  );
}

/* Projects: light at top -> dark at bottom */
.projects-swiper .project-overlay{
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;

  background: linear-gradient(
    to bottom,
    rgba(0,0,0,.10) 0%,
    rgba(0,0,0,.30) 38%,
    rgba(0,0,0,.62) 70%,
    rgba(0,0,0,.92) 100%
  );

  opacity: var(--ov, .88);
  transition: opacity .5s ease;
}

/* =========================
   PROJECTS ARCHIVE (grid)
   - Overlay: light top -> dark bottom
   - Cards: 1:1 square
========================= */

/* Make each archive card square */
.projects-grid > a.card{
  aspect-ratio: 1 / 1;
  min-height: auto;      /* overrides your earlier min-height:320px */
  position: relative;    /* ensure absolute layers clip correctly */
  overflow: hidden;
  display: flex;         /* keeps your content pinned to bottom */
}

/* Ensure layers fill the square */
.projects-grid > a.card .project-thumb,
.projects-grid > a.card .project-overlay{
  position: absolute;
  inset: 0;
}

/* Archive overlay: lighter at top, darker at bottom */
.projects-grid > a.card .project-overlay{
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,.10) 0%,
    rgba(0,0,0,.30) 38%,
    rgba(0,0,0,.62) 70%,
    rgba(0,0,0,.92) 100%
  );
}

/* Keep content above overlay */
.projects-grid > a.card .project-content{
  position: relative;
  z-index: 2;
  margin-top: auto;
}

/* Qualifications thumbnails: crop from TOP (show top of image) */
.mpg-quals-thumb{
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center; /* key */
}

/* =========================================
   GLOBAL BACKGROUND — MUCH LIGHTER (soft slate)
   Paste at VERY BOTTOM
========================================= */

:root{
  /* Lighter base background */
  --bg:  #151a24;   /* top */
  --bg2: #0f141d;   /* bottom */

  /* Lift surfaces a touch so they don’t disappear into the bg */
  --panel:  rgba(255,255,255,.08);
  --panel2: rgba(255,255,255,.10);
  --border: rgba(255,255,255,.14);

  /* Slightly softer shadow (less “heavy”) */
  --shadow: 0 18px 40px rgba(0,0,0,.32);
}

body{
  background:
    radial-gradient(1100px 700px at 12% 10%, rgba(255,31,45,.14), transparent 58%),
    radial-gradient(900px 600px at 82% 18%, rgba(255,255,255,.10), transparent 58%),
    radial-gradient(800px 800px at 40% 110%, rgba(255,31,45,.08), transparent 62%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg2) 100%);
}

/* Optional: keep your “projects” section consistent with the lighter site bg */
.section-projects::before{
  background:
    linear-gradient(
      to bottom,
      rgba(0,0,0,.04) 0%,
      rgba(0,0,0,.12) 22%,
      rgba(0,0,0,.12) 78%,
      rgba(0,0,0,.04) 100%
    ),
    radial-gradient(900px 420px at 12% 20%, rgba(var(--accentB-rgb), .07), transparent 62%),
    radial-gradient(760px 420px at 88% 65%, rgba(var(--accentB-rgb), .045), transparent 65%),
    repeating-linear-gradient(
      135deg,
      rgba(255,255,255,.020) 0px,
      rgba(255,255,255,.020) 1px,
      rgba(255,255,255,0) 10px,
      rgba(255,255,255,0) 20px
    ),
    linear-gradient(180deg, rgba(18,22,30,1) 0%, rgba(10,12,18,1) 100%);
}

/* Optional: hero fallback a touch lighter (only matters if bg image missing) */
.hero.hero--bg{
  background: #121826;
}

/* =========================================
   OFFCANVAS: subtler, more premium typography
   Paste at VERY BOTTOM
========================================= */

/* Main menu items */
.mpg-offcanvas__list a{
  font-weight: 600;                 /* was 700 */
  font-size: 15.5px;                /* feels less “noddy” */
  letter-spacing: .01em;
  color: rgba(17,17,17,.86);        /* softer than pure #111 */
  line-height: 1.25;
}

/* Hover/active = gentle, not shouty */
.mpg-offcanvas__list a:hover{
  color: rgba(17,17,17,.92);
  background: rgba(0,0,0,.045);     /* was red wash */
  transform: none;                   /* remove the bouncy feel */
}

/* Keep active highlight consistent */
.mpg-offcanvas__list li.current-menu-item > a,
.mpg-offcanvas__list li.current_page_item > a,
.mpg-offcanvas__list li > a[aria-current="page"]{
  color: rgba(17,17,17,.92);
  background: rgba(0,0,0,.055);
}

/* Meta items (phone/email etc) */
.mpg-offcanvas__meta .badge,
.mpg-offcanvas__meta .badge1{
  font-size: 13.5px;
  font-weight: 600;
  color: rgba(17,17,17,.80);
}

/* =========================================
   RHYTHM: even spacing under the hero
   Paste at VERY BOTTOM
========================================= */

/* Hero currently ends at 26px bottom padding -> feels tighter than other transitions */
.hero{
  padding-bottom: 80px; /* was 26px */
}

/* Slightly tighter on mobile so it doesn't feel too “floaty” */
@media (max-width: 980px){
  .hero{
    padding-bottom: 80px;
  }
}

/* ABOUT: turn real <li> items into chips */
.prose--chips ul,
.prose--chips ol{
  list-style: none !important;
  padding-left: 0 !important;
  margin: 14px 0 18px !important;

  display: flex !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
}

/* each list item becomes a chip */
.prose--chips ul > li,
.prose--chips ol > li{
  display: inline-flex !important;
  align-items: center !important;

  margin: 0 !important;
  padding: 8px 12px !important;
  border-radius: 999px !important;

  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: .01em !important;
  line-height: 1.15 !important;

  color: rgba(255,255,255,.86) !important;
  background: rgba(0,0,0,.22) !important;
  border: 1px solid rgba(255,255,255,.10) !important;
  backdrop-filter: blur(8px);
}

/* remove any markers/counters from other list systems */
.prose--chips ul > li::before,
.prose--chips ol > li::before,
.prose--chips ul > li::marker,
.prose--chips ol > li::marker{
  content: none !important;
}

.prose--chips ol{ counter-reset: none !important; }

/* Gutenberg sometimes wraps list text in <p> */
.prose--chips li > p{ margin: 0 !important; }

/* =========================================
   ABOUT: UL/OL -> CHIPS (kills injected bullets)
   Paste at VERY BOTTOM of style.css
========================================= */

.content--about .panel1 .prose ul,
.content--about .panel1 .prose ol{
  list-style: none !important;
  padding-left: 0 !important;
  margin: 14px 0 18px !important;

  display: flex !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
}

/* override your "marker | text" grid list styling */
.content--about .panel1 .prose ul > li,
.content--about .panel1 .prose ol > li{
  display: inline-flex !important;
  grid-template-columns: none !important;
  column-gap: 0 !important;

  align-items: center !important;
  margin: 0 !important;
  padding: 8px 12px !important;
  border-radius: 999px !important;

  background: rgba(0,0,0,.22) !important;
  border: 1px solid rgba(255,255,255,.10) !important;
  color: rgba(255,255,255,.86) !important;

  font-size: 13px !important;
  font-weight: 650 !important;
  line-height: 1.15 !important;

  list-style: none !important;
}

/* kill BOTH native markers and your injected bullet/number pseudo elements */
.content--about .panel1 .prose ul > li::before,
.content--about .panel1 .prose ol > li::before{
  content: "" !important;
  display: none !important;
}
.content--about .panel1 .prose ul > li::marker,
.content--about .panel1 .prose ol > li::marker{
  color: transparent !important;
}

/* kill the counter system you added for ol */
.content--about .panel1 .prose ol{
  counter-reset: none !important;
}
.content--about .panel1 .prose ol > li{
  counter-increment: none !important;
}

/* Gutenberg often wraps li text in <p> */
.content--about .panel1 .prose li > p{
  margin: 0 !important;
}

/* Content separators (WP Separator block + <hr>) */
.prose hr,
.prose .wp-block-separator{
  border: 0 !important;
  height: 1px !important;                 /* thinner line */
  background: rgba(255,255,255,.10) !important;
  margin: 1.1em 0 !important;
}

/* Optional: ultra-thin on retina screens */
@media (min-resolution: 2dppx){
  .prose hr,
  .prose .wp-block-separator{
    height: .5px !important;
  }
}

/* ABOUT main content: chevron before H2 (bigger, matches Projects feel) */
.content.content--about .about-grid > .panel1 .prose :where(h2){
  position: relative !important;
  padding-left: 34px !important;  /* was 28px */
}


.content.content--about .about-grid > .panel1 .prose :where(h2)::before{
  content: "›" !important;
  position: absolute !important;
  left: 0 !important;
  top: -0.15em !important;
  color: var(--accent) !important;
  font-weight: 900 !important;
  font-size: clamp(32px, 2.8vw, 44px);
  line-height: 1 !important;
  opacity: .95 !important;
}

/* =========================================================
   PAGE.PHP (Default Pages): force ALL content text white
   Paste at VERY BOTTOM of style.css
========================================================= */

body.page-template-default .content .prose,
body.page-template-default .content .prose *{
  color: var(--text) !important; /* your white */
}

/* Make list markers white too */
body.page-template-default .content .prose li::marker{
  color: var(--text) !important;
}

/* Links still look like links */
body.page-template-default .content .prose a{
  color: var(--text) !important;
  text-decoration: underline;
  text-decoration-color: rgba(255,31,45,.55);
}

/* If you ever use a WHITE background block, flip text to dark so it stays readable */
body.page-template-default .content .prose :where(.has-white-background-color, .has-very-light-gray-background-color){
  color: #111 !important;
}
body.page-template-default .content .prose :where(.has-white-background-color, .has-very-light-gray-background-color) *{
  color: #111 !important;
}

/* About page: action row under the main content */
.about-actions{
  margin-top: 18px;
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
}

/* Make sure the ghost button looks crisp on the dark theme */
.about-actions .btn--ghost{
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.14);
}

.about-actions .btn--ghost:hover{
  background: rgba(255,255,255,.07);
  border-color: rgba(255,255,255,.22);
}

/* =========================
   SOCIAL ICONS (Header/Footer/Offcanvas)
========================= */
.mpg-social{
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.mpg-social__link{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 14px;
  text-decoration: none;
  transition: transform .12s ease, background .12s ease, border-color .12s ease;
}

.mpg-social__link svg{
  width: 18px;
  height: 18px;
  display: block;
}

/* Header (white bar) */
.mpg-social--header .mpg-social__link{
  border:0px solid rgba(0,0,0,.08);
  color: rgba(0,0,0,.82);
}
.mpg-social--header .mpg-social__link:hover{
  border-color: rgba(0,0,0,.12);
}

/* Footer (dark) */
.mpg-social--footer .mpg-social__link{
  border: 0px solid rgba(255,255,255,.12);
  color: rgba(255,255,255,.86);
}
.mpg-social--footer .mpg-social__link:hover{
  border-color: rgba(255,255,255,.18);
}

/* Offcanvas (white panel) */
.mpg-social--offcanvas{
  margin-top: 10px;
}
.mpg-social--offcanvas .mpg-social__link{
  border: 0px solid rgba(0,0,0,.08);
  color: rgba(17,17,17,.82);
}
.mpg-social--offcanvas .mpg-social__link:hover{
  border-color: rgba(0,0,0,.12);
}

/* Footer-bottom: if you want the icons to align nicely to the right */
.footer-bottom{
  align-items: center;
}

.mpg-hp{
  position:absolute;
  left:-9999px;
  width:1px;
  height:1px;
  overflow:hidden;
}