/* ===================================================================
   Midwest Technologies — site.css
   Light theme · white background, dark text, brand green #008000
   Angular, engineered look: square corners, hairline rules, notched CTAs.
   Motion is deliberately subtle: soft reveals and small hover lifts only.
   =================================================================== */

:root{
  --base:#ffffff;
  --base-2:#f4f7f4;          /* light gray-green for alt sections */
  --surface:#ffffff;
  --card:#f7faf7;            /* card background, faint green tint */
  --ink:#101914;             /* near-black text */
  --ink-soft:#24332a;
  --muted:#5a6b60;           /* secondary text */
  --green:#008000;           /* logo exact */
  --green-deep:#046a26;      /* readable green for small text/icons */
  --green-bright:#0a9d3f;
  --black:#0b120d;
  --line:rgba(13,25,18,.14);
  --line-2:rgba(13,25,18,.26);
  --teal:#0e8f74;
  --blue:#20734b;
  --cyan:#3ddc74;
  --grad:linear-gradient(120deg,#0a9d3f,#046a26 70%,#0b3b1c);      /* green range for headings */
  --grad-btn:linear-gradient(120deg,#0a8c37,#046a26 80%);          /* button green, near-solid */
  --grad-elec:linear-gradient(120deg,#2fbf62,#0f9445);             /* accent green on dark */
  --grad-wire:linear-gradient(90deg,transparent,#0a9d3f 30%,#35d06b 50%,#0a9d3f 70%,transparent); /* static rule */
  --grad-soft:linear-gradient(135deg,rgba(0,128,0,.10),rgba(10,157,63,.05));
  --r:4px;
  --r-sm:3px;
  --f-disp:"Archivo",system-ui,sans-serif;
  --f-body:"IBM Plex Sans",system-ui,sans-serif;
  --s--1:clamp(.8rem,.76rem + .2vw,.9rem);
  --s-0:clamp(1rem,.96rem + .2vw,1.08rem);
  --s-1:clamp(1.2rem,1.06rem + .55vw,1.5rem);
  --s-2:clamp(1.7rem,1.35rem + 1.5vw,2.55rem);
  --s-3:clamp(2.2rem,1.65rem + 2.8vw,3.9rem);
  --s-4:clamp(2.9rem,1.9rem + 5vw,6.4rem);
  --ease:cubic-bezier(.22,1,.36,1);
  --maxw:1240px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:5.5rem}
body{
  background:var(--base);color:var(--ink);
  font-family:var(--f-body);font-size:var(--s-0);line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
h1,h2,h3{font-family:var(--f-disp);font-weight:700;line-height:1.06;letter-spacing:-.015em;color:var(--ink)}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
ul{list-style:none}

.pad{padding-inline:clamp(1.15rem,5vw,4.5rem)}
.eyebrow{display:inline-flex;align-items:center;gap:.6rem;
  font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--green-deep);font-weight:700}
.eyebrow::before{content:"";width:8px;height:8px;background:var(--green);flex:0 0 auto}
.gt{color:var(--green-deep)}
.gt-elec{color:#35d06b}
:focus-visible{outline:2px solid var(--green);outline-offset:3px}
::selection{background:rgba(0,128,0,.18);color:var(--ink)}

/* ---------- Buttons (rectangular, primary has a notched corner) ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.55em;
  padding:.95rem 1.5rem;border-radius:var(--r-sm);font-weight:600;font-size:var(--s-0);
  font-family:var(--f-disp);cursor:pointer;border:0;line-height:1;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s,background .25s,filter .25s;
}
.btn .ic{width:18px;height:18px}
.btn-grad{position:relative;background:var(--grad-btn);color:#fff;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%);
  filter:drop-shadow(0 10px 20px rgba(4,106,38,.28))}
.btn-grad:hover{transform:translateY(-2px);filter:drop-shadow(0 14px 26px rgba(4,106,38,.38)) brightness(1.05)}
.btn-grad:active{transform:translateY(0)}
.btn-ghost{border:1px solid var(--line-2);color:var(--ink);background:#fff}
.btn-ghost:hover{border-color:var(--green);transform:translateY(-2px);color:var(--green-deep)}

/* ---------- Utility topbar ---------- */
.topbar{background:var(--black);color:rgba(255,255,255,.78);font-size:.8rem}
/* spans the true page edges, matching the header below it */
.topbar-inner{width:100%;padding:.5rem clamp(1.15rem,5vw,4.5rem);
  display:flex;align-items:center;justify-content:space-between;gap:1rem}
.topbar-note{letter-spacing:.08em;text-transform:uppercase;font-family:var(--f-disp);font-weight:500;font-size:.72rem}
.topbar-links{display:flex;align-items:center;gap:1.4rem;white-space:nowrap}
.topbar-links a:hover{color:#fff}
.topbar-links a{color:rgba(255,255,255,.86)}
@media (max-width:860px){.topbar-note{display:none}.topbar-inner{justify-content:center}}
@media (max-width:560px){.topbar-links a[href^="mailto"]{display:none}}

/* ---------- Header (solid white, sticky) ---------- */
header{
  position:sticky;top:0;left:0;right:0;z-index:200;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:.8rem clamp(1.15rem,5vw,4.5rem);
  background:#fff;border-bottom:1px solid var(--line);
  transition:box-shadow .3s;
}
header.scrolled{box-shadow:0 6px 22px rgba(13,25,18,.07)}
.brand{display:flex;align-items:center;gap:.6rem}
/* the nav (~43px) sets the header height, so the mark can grow to 36px
   without making the bar any taller */
.brand-mark{height:36px;width:auto}
@media (max-width:520px){.brand-mark{height:32px}}
/* wordmark set to match the real logo artwork: MIDWEST over TECHNOLOGIES,
   both lines the same size and weight, tightly stacked beside the mark */
.brand-name{font-family:var(--f-disp);font-weight:800;font-size:1.04rem;letter-spacing:-.005em;line-height:1;
  display:flex;flex-direction:column;color:var(--ink);text-transform:uppercase}
.brand-name-2{font-weight:800;font-size:1.04rem;letter-spacing:-.005em;line-height:1;
  text-transform:uppercase;color:var(--ink)}
@media (max-width:520px){.brand-name,.brand-name-2{font-size:.92rem}}
.mainnav{display:flex;gap:.2rem;margin-left:auto}
.mainnav a{position:relative;font-size:.93rem;font-weight:500;color:var(--ink-soft);padding:.55rem .85rem;transition:color .2s}
.mainnav a:hover{color:var(--green-deep)}
.mainnav a::after{content:"";position:absolute;left:.85rem;right:.85rem;bottom:.2rem;height:2px;background:var(--green);
  transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease)}
.mainnav a:hover::after,.mainnav a[aria-current="page"]::after{transform:scaleX(1)}
.mainnav a[aria-current="page"]{color:var(--ink);font-weight:600}
.header-actions{display:flex;align-items:center;gap:.6rem}

.menu-toggle{display:none;flex-direction:column;gap:5px;width:42px;height:42px;
  align-items:center;justify-content:center;background:#fff;
  border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer}
.menu-toggle span{display:block;width:20px;height:2px;background:var(--ink);transition:transform .3s var(--ease),opacity .25s}
.menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

body.nav-locked{overflow:hidden}
/* The drawer and its scrim slide out from UNDER the sticky header: both sit
   below it in the stacking order (header is z-index 200) and start at its
   bottom edge, so the header stays fully visible and nothing is cast over it.
   --drawer-top is the header's bottom edge, measured in JS as the drawer opens
   (the header is sticky, so that edge moves with scroll). */
.nav-scrim{position:fixed;top:var(--drawer-top,0);left:0;right:0;bottom:0;z-index:180;background:rgba(6,14,9,.55);
  opacity:0;transition:opacity .35s var(--ease)}
.nav-scrim.in{opacity:1}
.nav-scrim[hidden]{display:none}
.mobilenav{position:fixed;right:0;z-index:190;width:min(82vw,320px);
  top:var(--drawer-top,0);height:calc(100svh - var(--drawer-top,0px));
  background:#fff;border-left:1px solid var(--line);box-shadow:-26px 0 64px rgba(11,18,13,.34);
  display:flex;flex-direction:column;gap:.3rem;overflow-y:auto;
  padding:1.1rem 1.4rem 2rem;
  transform:translateX(100%);transition:transform .35s var(--ease)}
.mobilenav[hidden]{display:none}
.mobilenav.open{transform:translateX(0)}
.mobilenav a{font-family:var(--f-disp);font-size:1.15rem;font-weight:600;padding:.85rem .4rem;border-bottom:1px solid var(--line);color:var(--ink)}
.mobilenav a[aria-current="page"]{color:var(--green-deep)}
.mobilenav .btn{margin-top:1.2rem;justify-content:center;border-bottom:0}
.mobilenav a.btn-grad{color:#fff}

@media (max-width:900px){
  .mainnav{display:none}
  .menu-toggle{display:flex}
}
/* Safety net: at desktop the toggle is hidden, so the drawer must never be able
   to stay open or keep the page scroll-locked, whatever state JS is in. */
@media (min-width:901px){
  .mobilenav,.nav-scrim{display:none !important}
  body.nav-locked{overflow:visible}
}

/* ---------- Layout helpers ---------- */
main{position:relative}
.band{max-width:var(--maxw);margin-inline:auto;padding-block:clamp(3.5rem,8vw,6.5rem)}
.band-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.4rem 2rem;margin-bottom:3rem}
.band-head h2{font-size:var(--s-3);margin-top:.6rem}
.band-sub{color:var(--muted);max-width:40ch;font-size:var(--s-0)}

/* ---------- Hero (dark, full-bleed workshop photo, hairline grid) ---------- */
.hero{position:relative;min-height:clamp(560px,82svh,860px);display:grid;align-content:center;
  padding-top:3.5rem;padding-bottom:3.5rem;overflow:hidden;color:#fff;isolation:isolate}
.hero-photo{position:absolute;inset:0;z-index:-3;
  background:url("/assets/images/hero.jpg") center 42%/cover no-repeat}
.hero::before{content:"";position:absolute;inset:0;z-index:-2;background:
  linear-gradient(100deg,rgba(5,13,9,.94) 0%,rgba(5,14,11,.8) 44%,rgba(6,16,12,.5) 100%),
  linear-gradient(180deg,transparent 60%,rgba(5,13,9,.6))}
/* static vertical hairlines, engineering-drawing feel */
.hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:25% 100%}
.hero-inner{max-width:var(--maxw);margin-inline:auto;width:100%}
.hero h1{font-size:clamp(2.6rem,1.6rem + 3.8vw,4.9rem);font-weight:800;margin:1.1rem 0 1.3rem;color:#fff;max-width:17ch}
.hero .lead{font-size:var(--s-1);color:rgba(255,255,255,.8);max-width:46ch;font-weight:400;line-height:1.55}
.hero .eyebrow{color:#7ce8a4}
.hero .eyebrow::before{background:#35d06b}
.hero-cta{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2rem}
.hero-trust{display:flex;flex-wrap:wrap;gap:.6rem 2.4rem;margin-top:3rem;padding-top:2rem;
  border-top:1px solid rgba(255,255,255,.18);font-size:var(--s--1);color:rgba(255,255,255,.72)}
.hero-trust li{display:flex;flex-direction:column;gap:.1rem}
.hero-trust b{color:#fff;font-family:var(--f-disp);font-size:1.4rem;font-weight:700}

/* small framed photo (used on the contact page) */
.hero-media{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);
  box-shadow:0 20px 48px rgba(13,25,18,.14);aspect-ratio:5/4}
.hero-media img{width:100%;height:100%;object-fit:cover}
.hero-media figcaption{position:absolute;left:1rem;bottom:1rem;z-index:3;display:flex;align-items:center;gap:.5rem;
  font-family:var(--f-disp);font-weight:500;font-size:.84rem;color:#fff;
  background:rgba(6,14,9,.55);backdrop-filter:blur(8px);padding:.45rem .85rem;border-radius:var(--r-sm);border:1px solid rgba(255,255,255,.2)}
.hero-media figcaption .dot{width:8px;height:8px;background:#46e887;animation:pulse-dot 2.4s infinite}
@keyframes pulse-dot{0%{box-shadow:0 0 0 0 rgba(70,232,135,.5)}70%{box-shadow:0 0 0 8px rgba(70,232,135,0)}100%{box-shadow:0 0 0 0 rgba(70,232,135,0)}}
.hero-media-arc{position:absolute;top:0;left:0;right:0;height:3px;z-index:3;background:var(--grad-wire)}

/* ---------- Service cards (white, sharp, top-accent on hover) ---------- */
.grid-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}
.gcard{position:relative;border-radius:var(--r);background:#fff;
  padding:1.8rem;display:flex;flex-direction:column;gap:.85rem;color:var(--ink);
  border:1px solid var(--line);overflow:hidden;
  transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.gcard::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--green);
  transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.gcard:hover{transform:translateY(-4px);border-color:var(--line-2);box-shadow:0 18px 40px rgba(13,25,18,.10)}
.gcard:hover::before{transform:scaleX(1)}
.gcard-ic{width:46px;height:46px;border-radius:var(--r-sm);display:grid;place-items:center;
  background:var(--grad-soft);border:1px solid var(--line);color:var(--green-deep)}
.gcard-ic svg{width:24px;height:24px}
.gcard h3{font-size:var(--s-1);color:var(--ink)}
.gcard p{color:var(--muted);font-size:.97rem}
.gcard-cta{background:var(--black);border-color:var(--black);color:#fff}
.gcard-cta::before{transform:scaleX(1)}
.gcard-cta .gcard-ic{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:#46e887}
.gcard-cta h3{color:#fff}
.gcard-cta p{color:rgba(255,255,255,.66)}
.card-link{display:inline-flex;align-items:center;gap:.4rem;margin-top:.4rem;
  font-family:var(--f-disp);font-weight:600;color:var(--green-deep)}
.gcard-cta .card-link{color:#46e887}
.card-link .ic{width:18px;height:18px;transition:transform .25s var(--ease)}
.card-link:hover .ic{transform:translateX(4px)}
@media (max-width:900px){.grid-cards{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.grid-cards{grid-template-columns:1fr}}

/* ---------- Gallery ---------- */
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.shot{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);
  aspect-ratio:4/3;background:#e9efe9}
.shot img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.shot:hover img{transform:scale(1.03)}
.shot figcaption{position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:1.4rem 1.2rem .95rem;font-family:var(--f-disp);font-weight:500;font-size:.98rem;color:#fff;
  background:linear-gradient(to top,rgba(6,14,9,.88),transparent);display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.tag{font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;
  padding:.32rem .6rem;border-radius:2px;background:var(--green-deep);color:#fff}
@media (max-width:560px){.gallery{grid-template-columns:1fr}}

/* ---------- About ---------- */
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:center}
.about-img{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line)}
.about-img img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3.4}
.about-img-badge{position:absolute;left:1rem;bottom:1rem;z-index:2;
  font-family:var(--f-disp);font-weight:500;font-size:.82rem;padding:.5rem .9rem;border-radius:var(--r-sm);
  background:rgba(6,14,9,.66);color:#fff;backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.18)}
.about-copy h2{font-size:var(--s-2);margin:.7rem 0 1.1rem}
.about-copy p{color:var(--muted)}
.ticks{margin:1.5rem 0;display:grid;gap:.7rem}
.ticks li{position:relative;padding-left:1.9rem;color:var(--ink);font-size:.98rem}
.ticks li::before{content:"";position:absolute;left:0;top:.15em;width:1.15rem;height:1.15rem;border-radius:2px;
  background:var(--green-deep);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='3.5' stroke-linecap='square' d='M5 13l4 4L19 7'/%3E%3C/svg%3E") center/72% no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='3.5' stroke-linecap='square' d='M5 13l4 4L19 7'/%3E%3C/svg%3E") center/72% no-repeat}
.partners{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.6rem}
.partners span{font-family:var(--f-disp);font-size:.82rem;font-weight:500;color:var(--ink-soft);
  padding:.5rem .95rem;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff}
@media (max-width:820px){.about-grid{grid-template-columns:1fr}.about-img{order:-1}}

/* ---------- Service detail rows ---------- */
.srows{max-width:var(--maxw);margin-inline:auto}
.srow{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:center;
  padding-block:clamp(2rem,4vw,3.2rem)}
.srow + .srow{border-top:1px solid var(--line)}
.srow-media{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);
  box-shadow:0 14px 36px rgba(13,25,18,.08)}
.srow-media::after{content:"";position:absolute;inset:0;border-top:3px solid var(--green);opacity:.9;pointer-events:none}
.srow-media img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3;display:block}
.srows .srow:nth-child(even) .srow-media{order:2}
.srow-ic{width:46px;height:46px;border-radius:var(--r-sm);display:grid;place-items:center;
  background:var(--grad-soft);border:1px solid var(--line);color:var(--green-deep);margin-bottom:1rem}
.srow-ic svg{width:24px;height:24px}
.srow h2{font-size:var(--s-2);margin:.2rem 0 .8rem}
.srow p{color:var(--muted)}
.srow .ticks{margin-top:1.1rem}
@media (max-width:820px){
  .srow{grid-template-columns:1fr;gap:1.2rem}
  .srows .srow .srow-media,.srows .srow:nth-child(even) .srow-media{order:-1}
}

/* ---------- Capability strip ---------- */
.capstrip{display:grid;grid-template-columns:repeat(4,1fr);gap:1.4rem}
.cap{position:relative;padding-top:1.3rem;border-top:2px solid var(--line)}
.cap::before{content:"";position:absolute;top:-2px;left:0;width:44px;height:2px;background:var(--green)}
.cap h3{font-size:var(--s-1);margin:.2rem 0 .4rem;font-family:var(--f-disp)}
.cap p{color:var(--muted);font-size:.94rem}
@media (max-width:760px){.capstrip{grid-template-columns:1fr 1fr}}
@media (max-width:420px){.capstrip{grid-template-columns:1fr}}

/* ---------- Black CTA banner ---------- */
.cta-banner{position:relative;overflow:hidden;background:var(--black);color:#fff;margin-top:3rem}
.cta-banner::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(46% 90% at 14% 20%,rgba(10,157,63,.16),transparent 62%)}
.cta-inner{position:relative;max-width:var(--maxw);margin-inline:auto;display:flex;flex-wrap:wrap;
  align-items:center;justify-content:space-between;gap:1.6rem 2.5rem;padding-block:clamp(2.6rem,6vw,4.2rem)}
.cta-inner h2{color:#fff;font-size:var(--s-3);max-width:18ch}
.cta-inner .eyebrow{color:#7ce8a4}
.cta-inner .eyebrow::before{background:#35d06b}
.cta-sub{color:rgba(255,255,255,.72);max-width:42ch;margin-top:.8rem}
.cta-actions{display:flex;flex-wrap:wrap;gap:.8rem}
.btn-ghost-dark{border:1px solid rgba(255,255,255,.34);color:#fff;background:transparent}
.btn-ghost-dark:hover{border-color:#46e887;transform:translateY(-2px);color:#fff}
.cta-wire{position:absolute;left:0;right:0;height:2px;z-index:2;background:var(--grad-wire);opacity:.7}
.cta-wire{top:0}
.cta-wire-bottom{top:auto;bottom:0}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(1.6rem,4vw,3.5rem)}
.contact-intro h2{font-size:var(--s-2);margin:.7rem 0 1rem}
.contact-lead{color:var(--muted);max-width:38ch}
.contact-meta{margin-top:2rem;display:grid;gap:1.2rem}
.contact-meta li{display:flex;align-items:center;gap:.9rem}
.cm-ic{flex:0 0 auto;width:44px;height:44px;border-radius:var(--r-sm);display:grid;place-items:center;
  background:var(--grad-soft);border:1px solid var(--line);color:var(--green-deep)}
.cm-ic svg{width:21px;height:21px}
.contact-meta b{display:block;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:.1rem}
.contact-meta a{font-family:var(--f-disp);font-weight:500;font-size:1.05rem}
.contact-meta a:hover{color:var(--green-deep)}
.contact-meta span span{font-family:var(--f-disp);font-weight:500;font-size:1.05rem}

.contact-form-wrap{position:relative;border-radius:var(--r);padding:clamp(1.4rem,3vw,2.2rem);
  background:var(--card);border:1px solid var(--line);border-top:3px solid var(--green);
  box-shadow:0 14px 40px rgba(13,25,18,.05)}
.quote-form{display:grid;gap:1rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.field{position:relative}
.field input,.field textarea{
  width:100%;font:inherit;color:var(--ink);background:#fff;
  border:1px solid var(--line-2);border-radius:var(--r-sm);padding:1.35rem .95rem .55rem;
  transition:border-color .25s,box-shadow .25s;resize:vertical}
.field textarea{padding-top:1.5rem}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(0,128,0,.12)}
.field label{position:absolute;left:.95rem;top:.95rem;color:var(--muted);font-size:.95rem;
  pointer-events:none;transition:transform .2s var(--ease),color .2s,font-size .2s;transform-origin:left top}
.field input:focus+label,.field input:not(:placeholder-shown)+label,
.field textarea:focus+label,.field textarea:not(:placeholder-shown)+label{
  transform:translateY(-.55rem) scale(.78);color:var(--green-deep)}
.field .opt{opacity:.6;font-size:.82em}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.btn-submit{justify-content:center;margin-top:.3rem;width:100%}
.btn-submit[aria-busy="true"]{opacity:.75;pointer-events:none}
.form-note{font-size:.92rem;min-height:1.2em;color:var(--muted)}
.form-note.ok{color:var(--green-deep);font-weight:500}
.form-note.err{color:#c2391b}
.form-note a{color:inherit;text-decoration:underline}
@media (max-width:980px){.contact-grid{grid-template-columns:1fr}}
@media (max-width:480px){.form-row{grid-template-columns:1fr}}

/* ---------- Component brand strip ----------
   Each mark is sized for equal optical weight rather than a shared max-height:
   a uniform cap makes the tall Australian Standard mark tiny and the wide
   ELSTEEL mark dominate. Heights are tuned per logo from its aspect ratio. */
.brandstrip{display:grid;grid-template-columns:repeat(5,1fr);
  border:1px solid var(--line);border-top:3px solid var(--green);border-radius:var(--r);
  background:#fff;overflow:hidden}
.brandstrip li{display:grid;place-items:center;padding:1.6rem 1.2rem;min-height:176px}
.brandstrip li + li{border-left:1px solid var(--line)}
.brandstrip img{width:auto;max-width:92%;object-fit:contain;
  transition:transform .3s var(--ease)}
.brandstrip li:hover img{transform:scale(1.04)}
.brandstrip img[alt="Schneider Electric"]{max-height:74px}
.brandstrip img[alt="NHP"]{max-height:88px}
.brandstrip img[alt="IPD"]{max-height:62px}
.brandstrip img[alt="Modular Elsteel Enclosures"]{max-height:66px}
.brandstrip img[alt="Australian Standard certified product"]{max-height:116px}
@media (max-width:900px){
  .brandstrip{grid-template-columns:repeat(3,1fr)}
  .brandstrip li:nth-child(3n+1){border-left:0}
  .brandstrip li:nth-child(n+4){border-top:1px solid var(--line)}
  /* the odd one out spans the row instead of stranding in a half-empty cell */
  .brandstrip li:last-child{grid-column:1 / -1;border-left:0}
}
@media (max-width:560px){
  .brandstrip{grid-template-columns:repeat(2,1fr)}
  .brandstrip li{padding:1.15rem .8rem;min-height:132px}
  .brandstrip li:nth-child(n){border-left:0;border-top:0}
  .brandstrip li:nth-child(2n){border-left:1px solid var(--line)}
  .brandstrip li:nth-child(n+3){border-top:1px solid var(--line)}
  .brandstrip li:last-child{grid-column:1 / -1;border-left:0}
  /* fill the cells properly on a small screen */
  .brandstrip img{max-width:96%}
  .brandstrip img[alt="Schneider Electric"]{max-height:70px}
  .brandstrip img[alt="NHP"]{max-height:82px}
  .brandstrip img[alt="IPD"]{max-height:58px}
  .brandstrip img[alt="Modular Elsteel Enclosures"]{max-height:62px}
  .brandstrip img[alt="Australian Standard certified product"]{max-height:104px}
}

/* ---------- Switchboard detail (specs + product shots) ---------- */
.spec-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:1.1rem;margin-bottom:1.1rem}
.spec-block{background:#fff;border:1px solid var(--line);border-top:3px solid var(--green);
  border-radius:var(--r);padding:1.5rem 1.6rem}
.spec-block h3{font-size:var(--s-1);margin-bottom:.6rem}
.spec-block p{color:var(--muted)}
.spec-list{display:grid;gap:.45rem;margin-top:.2rem}
.spec-list li{position:relative;padding-left:1.15rem;color:var(--ink-soft);font-size:.97rem}
.spec-list li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;background:var(--green)}
@media (max-width:820px){.spec-grid{grid-template-columns:1fr}}

.work-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}
.work-strip figure{position:relative;border-radius:var(--r);overflow:hidden;
  border:1px solid var(--line);background:#eef1ee}
.work-strip img{width:100%;height:100%;aspect-ratio:3/4;object-fit:cover;display:block;
  transition:transform .6s var(--ease)}
.work-strip figure:hover img{transform:scale(1.04)}
.work-strip figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.4rem .9rem .8rem;
  font-family:var(--f-disp);font-weight:600;font-size:.9rem;color:#fff;
  background:linear-gradient(to top,rgba(6,14,9,.9),transparent)}
@media (max-width:820px){.work-strip{grid-template-columns:repeat(2,1fr)}}

/* ---------- Trading document cards (contact page) ---------- */

/* ---------- Trading document cards (contact page) ---------- */
.doc-cards{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.doc-card{display:flex;align-items:center;gap:1rem;padding:1.2rem 1.3rem;background:#fff;
  border:1px solid var(--line);border-radius:var(--r);position:relative;overflow:hidden;
  transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.doc-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--green);
  transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.doc-card:hover{transform:translateY(-3px);border-color:var(--line-2);box-shadow:0 16px 36px rgba(13,25,18,.10)}
.doc-card:hover::before{transform:scaleX(1)}
.doc-ic{flex:0 0 auto;width:46px;height:46px;border-radius:var(--r-sm);display:grid;place-items:center;
  background:var(--grad-soft);border:1px solid var(--line);color:var(--green-deep)}
.doc-ic svg{width:24px;height:24px}
.doc-body{display:flex;flex-direction:column;gap:.2rem;min-width:0}
.doc-body b{font-family:var(--f-disp);font-size:1.02rem;color:var(--ink)}
.doc-meta{font-size:.82rem;color:var(--muted);line-height:1.4}
.doc-dl{margin-left:auto;flex:0 0 auto;font-family:var(--f-disp);font-weight:600;font-size:.86rem;
  color:var(--green-deep);white-space:nowrap}
@media (max-width:820px){.doc-cards{grid-template-columns:1fr}.doc-dl{display:none}}

/* ---------- Footer (black) ---------- */
footer{position:relative;overflow:hidden;margin-top:0;padding-block:3.4rem 2rem;
  background:var(--black);color:rgba(255,255,255,.7);border-top:1px solid rgba(255,255,255,.08)}
footer::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(50% 120% at 15% 0%,rgba(0,128,0,.13),transparent 60%)}
.foot-grid{position:relative;z-index:1;max-width:var(--maxw);margin-inline:auto;display:grid;grid-template-columns:1.5fr .8fr 1.2fr 1.1fr;gap:2rem;padding-bottom:2.5rem}
@media (max-width:1020px){.foot-grid{grid-template-columns:1fr 1fr}}
footer .brand-name{color:#fff}
footer .brand-name-2{color:#fff}
footer .brand-mark{filter:brightness(1.35) saturate(1.05)}
.foot-brand p{color:rgba(255,255,255,.55);font-size:.92rem;margin-top:.9rem;max-width:30ch}
.foot-nav{display:flex;flex-direction:column;gap:.55rem}
.foot-nav a{color:rgba(255,255,255,.62);font-size:.95rem}
.foot-nav a:hover{color:#fff}
.foot-contact{display:flex;flex-direction:column;gap:.55rem;color:rgba(255,255,255,.62);font-size:.95rem}
.foot-contact a:hover{color:#46e887}
.foot-docs{display:flex;flex-direction:column;gap:.55rem;font-size:.95rem}
.foot-docs b{font-family:var(--f-disp);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(255,255,255,.5);font-weight:600}
.foot-docs a{color:rgba(255,255,255,.62)}
.foot-docs a:hover{color:#46e887}
.foot-base{position:relative;z-index:1;max-width:var(--maxw);margin-inline:auto;border-top:1px solid rgba(255,255,255,.1);padding-top:1.5rem;
  display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;justify-content:space-between;color:rgba(255,255,255,.45);font-size:.84rem}
.foot-credit{opacity:.8}
.foot-credit a{color:rgba(255,255,255,.6);text-decoration:underline}
@media (max-width:760px){.foot-grid{grid-template-columns:1fr;gap:1.6rem}}

/* ---------- Local band (full-width Geraldton panorama) ---------- */
.localband{position:relative;width:100%;min-height:clamp(240px,32vw,400px);overflow:hidden;
  display:grid;align-items:center;margin-block:0}
/* the photo must paint UNDER the scrim: without explicit z-indexes the <img>
   comes later in tree order and covers ::before, leaving the type unreadable */
.localband img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.localband::before{content:"";position:absolute;inset:0;z-index:1;background:
  linear-gradient(90deg,rgba(5,15,9,.88) 0%,rgba(5,15,9,.7) 50%,rgba(5,15,9,.55) 100%),
  linear-gradient(180deg,rgba(5,15,9,.25),transparent 38%,transparent 66%,rgba(5,15,9,.3))}
.localband-overlay{position:relative;z-index:2;max-width:var(--maxw);margin-inline:auto;width:100%;color:#fff}
.localband-overlay .eyebrow{color:#8ef0ad}
.localband-overlay .eyebrow::before{background:#35d06b}
.localband-overlay h2{color:#fff;font-size:var(--s-3);margin-top:.5rem}
.localband-wire{position:absolute;bottom:0;left:0;right:0;height:3px;z-index:3;background:var(--grad-wire)}

/* ---------- Sub-page hero (dark) ---------- */
.subhero{position:relative;padding-top:5rem;padding-bottom:3.2rem;overflow:hidden;color:#fff;isolation:isolate}
.subhero::before{content:"";position:absolute;inset:0;z-index:-2;background:
  linear-gradient(120deg,#08130d,#0a1510 55%,#0b130f),
  radial-gradient(50% 90% at 12% 24%,rgba(0,128,0,.2),transparent 60%)}
.subhero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:25% 100%}
.subhero-inner{position:relative;z-index:1;max-width:var(--maxw);margin-inline:auto}
.subhero .eyebrow{color:#7ce8a4}
.subhero .eyebrow::before{background:#35d06b}
.subhero h1{font-size:clamp(2.2rem,1.6rem + 2.6vw,3.6rem);margin:.7rem 0 .9rem;color:#fff}
.subhero p{color:rgba(255,255,255,.74);max-width:54ch;font-size:var(--s-1);line-height:1.5}

/* ---------- Scroll reveal ----------
   One signature move: content sets itself down onto the baseline, precise and
   damped, the way a part gets placed rather than floated in. Items in a row
   land in sequence (--i is set by site.js). */
.reveal{opacity:0;transform:translateY(20px) scale(.994);
  transition:opacity .5s cubic-bezier(.2,.7,.3,1),transform .62s cubic-bezier(.2,.7,.3,1);
  transition-delay:calc(var(--i,0) * 80ms)}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none;transition-delay:0s}
  .hero-media figcaption .dot{animation:none}
}

/* ---------- LSLI group line ---------- */
.foot-lsli{font-family:var(--f-disp);font-size:.8rem;letter-spacing:.08em;color:#8ef0ad;margin-top:.6rem;display:block}

/* ---------- Map frame (contact) ---------- */
.mapframe{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);
  box-shadow:0 18px 44px rgba(13,25,18,.10);aspect-ratio:21/9;background:#e9efe9}
.mapframe iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
@media (max-width:700px){.mapframe{aspect-ratio:4/3}}

/* ---------- Gallery: break the uniform 2×2 ---------- */
.gallery{grid-template-columns:repeat(12,1fr);grid-auto-rows:clamp(180px,22vw,320px)}
.gallery .shot{aspect-ratio:auto}
.gallery .shot:nth-child(1){grid-column:span 7;grid-row:span 2}
.gallery .shot:nth-child(2){grid-column:span 5}
.gallery .shot:nth-child(3){grid-column:span 5}
.gallery .shot:nth-child(4){grid-column:span 12}
@media (max-width:700px){
  .gallery{grid-template-columns:1fr;grid-auto-rows:auto}
  .gallery .shot{grid-column:auto !important;grid-row:auto !important;aspect-ratio:4/3}
}

/* ---------- Mobile polish: spacious + collapsible details ---------- */
@media (max-width:820px){
  .pad{padding-inline:1.35rem}
  .band{padding-block:3.2rem}
  .band-head{margin-bottom:2.2rem}
  .subhero{padding-top:3.4rem;padding-bottom:2.6rem}
  .hero-trust{gap:1.1rem 2rem}
  .srow{padding-block:2.4rem}
  .srow .ticks{display:none;margin-top:.9rem}
  .srow .ticks.open{display:grid}
  .about-copy .ticks{display:none}
  .about-copy .ticks.open{display:grid}
  .read-more{display:inline-flex;align-items:center;gap:.45rem;margin-top:.9rem;
    font-family:var(--f-disp);font-weight:600;font-size:.9rem;color:var(--green-deep);
    background:none;border:1px solid var(--line-2);border-radius:var(--r-sm);padding:.55rem 1.05rem;cursor:pointer}
  .read-more::after{content:"+";font-size:1rem;line-height:1}
  .read-more.open::after{content:"–"}
  .capstrip{gap:1rem}
  .cta-inner{padding-block:2.4rem}
  .foot-grid{gap:2rem}
}
@media (min-width:821px){.read-more{display:none}}

/* ---------- Mobile hero: clean image, one line, one action ---------- */
.m-only{display:none}
@media (max-width:820px){
  .d-only{display:none}
  .m-only{display:inline}
  .hero{min-height:72svh;padding-top:3rem;padding-bottom:3rem;align-content:center}
  /* scoped to the hero: .hero-cta is reused in the service rows */
  .hero .eyebrow,.hero .hero-trust{display:none}
  .hero::before{background:
    radial-gradient(130% 100% at 50% 50%,rgba(5,14,10,.66),rgba(5,14,10,.5) 55%,rgba(5,14,10,.35)),
    linear-gradient(180deg,rgba(5,14,10,.45),rgba(5,14,10,.2) 45%,rgba(5,14,10,.55))}
  .hero-inner{text-align:center;display:grid}
  .hero h1{font-size:clamp(2.1rem,8.8vw,2.7rem);margin:0 auto 1rem;max-width:13ch}
  .hero .lead{display:block;font-size:1.02rem;max-width:30ch;margin:0 auto 1.6rem}
  .hero .hero-cta{margin-top:0;justify-content:center}
  .hero .hero-cta .btn{min-width:220px;justify-content:center}
  .hero .hero-cta .btn-ghost-dark{display:none}
}
