/* HYDRO ELECTRICA — hydro-electrica.com (WordPress port 2026-07-22, multi-page SEO rebuild 2026-09-08).
   NOTE: no global border-box reset — the original column widths resolve %-flex-basis against
   content-box and the flex-shrink math depends on it. Only elements that pair an explicit
   width with padding opt into border-box (every 2026-09 component does so explicitly). */

@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/inter-var.woff2) format("woff2")}
@font-face{font-family:Jost;font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/jost-var.woff2) format("woff2")}

:root{
 --base:#EBEBEF;--base2:#DCE0E6;--contrast:#1C2930;--contrast2:#37505d;--contrast3:#96A5B2;--white:#fff;
 --fh:Inter,sans-serif;--fb:Jost,sans-serif;
 --fs-s:1rem;--fs-m:1.0625rem;
 --fs-l:clamp(1.2rem, 1.2rem + ((1vw - 0.2rem) * 0.6664), 1.6rem);
 --fs-xl:clamp(1.6rem, 1.6rem + ((1vw - 0.2rem) * 0.8664), 2.12rem);
 --fs-xxl:clamp(2.12rem, 2.12rem + ((1vw - 0.2rem) * 1.1336), 2.8rem);
 --fs-hero-title:clamp(2rem, 2rem + ((1vw - 0.2rem) * 1.083), 2.65rem);
 --fs-hero-big:clamp(2.65rem, 2.65rem + ((1vw - 0.2rem) * 1.417), 3.5rem);
 --sp10:1rem;--sp20:min(1.5rem,2vw);--sp30:min(2.5rem,3vw);--sp40:min(4rem,5vw);--sp50:min(6.5rem,8vw);--sp60:min(10.5rem,13vw);
 --gap:1.2rem;
}

/* Jost ships NO Greek glyphs (CDP probe 2026-09-08): Greek pages use Inter for body text too, never the OS fallback. */
html[lang="el"]{--fb:Inter,sans-serif}
body{margin:0;background:var(--base);color:var(--contrast);font-family:var(--fb);font-size:var(--fs-m);font-weight:400;line-height:1.55}
.inner-page{--fs-m:1rem;--fs-l:clamp(1.125rem,1rem + .65vw,1.4375rem);--fs-xl:clamp(1.5rem,1.25rem + .8vw,1.875rem);--fs-xxl:clamp(1.875rem,1.625rem + 1.25vw,2.5rem)}
h1,h2,h3{color:var(--contrast);font-family:var(--fh);font-weight:400;letter-spacing:0;line-height:1.2;margin:0}
h1{font-size:var(--fs-xxl);line-height:1.15}
h2{font-size:var(--fs-xl)}
h3{font-size:var(--fs-l)}
p,ul,figure{margin:0}
img{max-width:100%;height:auto;vertical-align:bottom}
a{color:var(--contrast);text-decoration:underline}
a:hover{text-decoration:none}
:focus-visible{outline:2px solid var(--contrast2);outline-offset:2px}
.tc{text-align:center}
.skip{position:absolute;left:-9999px;top:auto;overflow:hidden}
.skip:focus{left:8px;top:8px;background:var(--white);padding:1rem;z-index:100001}

/* ---------- hero (WP cover block) ---------- */
.hero{position:relative;display:flex;justify-content:center;align-items:flex-start;min-height:1100px;overflow:clip;background-position:50%}
.hero-bg{position:absolute;inset:0;background:url(../img/bg-jpeg.avif) 50% 50%/cover no-repeat}
/* iOS crops fixed backgrounds incorrectly; reserve the fixed effect for desktop pointers. */
@media(min-width:1100px) and (hover:hover) and (pointer:fine){.hero-bg{background-attachment:fixed}}
/* Shade: the WordPress version washed the TOP white (menu + kicker measured 1.3–2.6:1 on the sky, tools/hero-contrast.mjs
   2026-09-08). Now a dark scrim at the top for the menu/kicker, transparent middle, dark bottom as before. */
.hero-shade{position:absolute;inset:0;background:linear-gradient(354deg,rgba(28,41,48,.58) 33%,rgba(28,41,48,0) 52%,rgba(28,41,48,.55) 66%,rgba(28,41,48,.62) 80%,rgba(28,41,48,.68) 100%)}
.hero-inner{position:relative;width:100%;box-sizing:border-box;padding-left:var(--sp50);padding-right:var(--sp50);color:var(--white)}
.hero h1,.hero h2{color:inherit}

.topbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:0;padding-top:var(--sp30);padding-bottom:var(--sp30);color:var(--base)}
.topbar a{color:var(--base)}
.logo{display:block}

.mainnav{font-weight:500}
.nav-open{display:none}
.nav-list{display:flex;justify-content:flex-end;align-items:center;gap:var(--gap);list-style:none;margin:0;padding:0}
.nav-list a{color:var(--white);text-decoration:none}
.nav-list a:hover{text-decoration:underline}
.nav-close{display:none}

.hero-cols{display:flex;flex-wrap:wrap;padding-top:var(--sp20);padding-bottom:var(--sp20);align-items:flex-end;gap:0}
.hc1{flex:0 1 70%}
.hc2{flex:0 1 60%}
.hero-title{font-size:var(--fs-hero-title);line-height:1.2;text-align:center;padding-top:var(--sp20);padding-bottom:var(--sp20)}

.btn-row{display:flex;flex-wrap:wrap;justify-content:center;gap:0;margin-top:var(--sp20);margin-bottom:var(--sp20)}
.btn-w{width:calc(50% - .6rem)}
.btn{display:inline-block;width:100%;box-sizing:border-box;background:transparent;border:1px solid currentColor;border-radius:30px;color:currentColor;cursor:pointer;font-family:var(--fh);font-size:1rem;font-weight:500;letter-spacing:.04em;line-height:inherit;padding:var(--sp10) 0;text-align:center;text-decoration:none;text-transform:uppercase}
.btn:hover{background:var(--contrast2);border-color:var(--contrast2);color:var(--base)}

.badges{display:flex;flex-wrap:nowrap;justify-content:center;gap:var(--sp20)}
.badges img{width:150px;border-radius:var(--sp20)}

.hero-big{font-family:var(--fh);font-size:var(--fs-hero-big);line-height:1.15;text-align:right;color:inherit}
.here-row{padding:var(--sp10) var(--sp50);display:flow-root}
.herefig{float:right}

/* ---------- shared layout ---------- */
main{display:flow-root;margin-top:var(--gap)}
.cols{display:flex;flex-wrap:wrap}
.cols>*{min-width:0}
@media(min-width:782px){.cols{flex-wrap:nowrap}.hero-cols{flex-wrap:nowrap}}
@media(max-width:781px){.cols>*,.hero-cols>*{flex-basis:100%!important}}
.sp{display:block}
.wide{max-width:1280px;margin-left:auto;margin-right:auto}


.imgfig{display:table;margin-left:auto;margin-right:auto;text-align:center}
figcaption{display:table-caption;caption-side:bottom;margin-top:.5em;margin-bottom:1em;color:var(--contrast2);font-family:var(--fb);font-size:.8rem}
.rounded img{border-radius:var(--sp20)}

/* ---------- sections ---------- */
.sec-company{margin-top:var(--sp50);margin-bottom:var(--sp50);padding:var(--sp40) var(--sp30)}
.cols-company{align-items:flex-start;gap:var(--sp40)}
.cc-img{flex:0 1 60%}
.cc-txt{flex:0 1 70%}
.cc-txt>*+*{margin-block-start:var(--sp30)}
.sec-company.prepayment-intro{box-sizing:border-box;margin:0 auto;padding:64px 32px}
.prepayment-intro .cols-company{align-items:center;max-width:1040px}
.prepayment-intro .cc-img .imgfig{display:block;width:100%;max-width:320px}
.prepayment-intro figcaption{display:block}
@media(min-width:1100px){.prepayment-intro .cc-img{flex:0 0 320px}.prepayment-intro .cc-txt{flex:1 1 0}}
@media(max-width:781px){.sec-company.prepayment-intro{padding:40px 20px}}
.cols-half{gap:0}
.cols-half>div{flex:1 1 0}

.sec-services{box-sizing:border-box;width:min(1280px,calc(100% - 2*var(--sp50)));margin:var(--sp50) auto;padding:var(--sp40) var(--sp30)}
.sec-services>*+*{margin-block-start:var(--sp30)}
.sec-text.telemetry-intro{padding-bottom:32px}
.sec-services.telemetry-services{margin-top:0;padding-top:32px}
@media(max-width:781px){.sec-text.telemetry-intro{padding-bottom:24px}.sec-services.telemetry-services{padding-top:24px}}
/* WP constrained layout caps non-aligned children at content-size 620px */
.intro{display:flex;flex-direction:column;align-items:center;gap:var(--sp30);max-width:620px;margin-left:auto;margin-right:auto}
.svc-row{gap:0 var(--sp50)}
.svc-txt{flex:0 1 40%;align-self:center}
.svc-txt>*+*{margin-block-start:var(--sp30)}
.svc-txt2{flex:0 1 40%;align-self:center}
.svc-txt2>*+*{margin-block-start:var(--gap)}
.svc-img{flex:0 1 50%}
.checklist{list-style-type:"✓";padding-inline-start:1rem}
.checklist li{padding-inline-start:1ch}

.sec-features{background:var(--base2);margin-top:var(--sp50);margin-bottom:var(--sp50);padding:var(--sp50) var(--sp30)}
.sec-features>*+*{margin-block-start:var(--sp30)}
.feat-row{gap:0}
.feat-row>div{flex:1 1 0;padding-left:var(--sp30);padding-right:var(--sp30)}
.feat-row>div>*+*{margin-block-start:var(--sp10)}
.feath{font-family:var(--fb);font-size:var(--fs-m);font-weight:600;line-height:1.2;text-align:left}

.sec-app,.sec-plc{margin-top:var(--sp50);margin-bottom:var(--sp50);padding:var(--sp40)}
.sec-app>*+*,.sec-plc>*+*{margin-block-start:var(--sp30)}
.cols-app{gap:0 var(--sp30);padding-right:var(--sp10);padding-left:var(--sp60)}
.app-txt{flex:0 1 50%;padding-left:var(--sp40);padding-right:var(--sp40);align-self:stretch}
.app-img{flex:0 1 60%;align-self:center}
.plc-img{flex:0 1 60%;align-self:center}
.plc-txt{flex:0 1 50%;padding-left:var(--sp20);padding-right:var(--sp20);align-self:stretch}
.stack{display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;gap:var(--sp40)}
.stack-plc{gap:var(--sp30)}

.sec-partners{background:var(--base2);margin-top:var(--sp30);margin-bottom:var(--sp30);padding:var(--sp40) var(--sp60)}
.sec-partners>*+*{margin-block-start:var(--sp30)}
.logo-row{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp40)}
.plogo img{width:150px;aspect-ratio:4/3;object-fit:contain}

.sec-contact{margin-top:var(--sp40);margin-bottom:var(--sp40);padding:var(--sp40) var(--sp60)}
.sec-contact>*+*{margin-block-start:var(--sp40)}
.card{background:var(--base2);border-radius:30px;margin-top:var(--sp40);margin-bottom:var(--sp40);padding:var(--sp40);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--sp30)}
.card-info{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp20);font-style:normal}
.card-info p{font-size:var(--fs-l);text-align:left}
.card-info a{color:var(--contrast)}
a.tel{color:inherit;text-decoration:none}
.card iframe{border:0;max-width:100%}

/* ---------- footer ---------- */
.foot{margin-top:var(--gap);padding:var(--sp50) var(--sp50)}
.foot-cols{gap:var(--gap)}
.f1{flex:0 1 30%;align-self:center}
.f1 p{color:var(--contrast2)}
.f-sp{flex:0 1 20%}
.f3{flex:0 1 30%;align-self:center}
.foot-groups{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:var(--gap)}
.fg{display:flex;flex-direction:column;align-items:stretch;gap:var(--gap)}
.fg h2{font-family:var(--fb);font-size:var(--fs-m);font-weight:600;line-height:1.2}
.fg ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp10);font-size:var(--fs-s)}
.fg a{color:var(--contrast);text-decoration:none}
.fg a:hover{text-decoration:underline}

/* ---------- full-screen mobile/tablet navigation ---------- */
@media(max-width:1099.9px){
 .nav-open{display:flex;align-items:center;background:none;border:0;padding:0;margin:0;color:var(--white);cursor:pointer}
 .nav-open svg{fill:currentColor}
 .nav-modal{display:none}
 .nav-modal.open{display:flex;flex-direction:column;align-items:center;box-sizing:border-box;position:fixed;inset:0;width:100%;height:100vh;height:100dvh;z-index:100000;background:var(--base2);color:var(--contrast);padding:80px 24px;overflow:auto;overscroll-behavior:contain}
 .nav-modal.open .nav-list{flex-direction:column;justify-content:center;align-items:center;flex-shrink:0;gap:clamp(.6rem,2vh,1.4rem);width:100%;margin:auto 0;padding:0;text-align:center}
 .nav-modal.open .nav-list>li>a{display:block;padding:.5rem 0;font-size:clamp(1.05rem,3.5vw,1.5rem);line-height:1.35}
 .nav-modal.open a{color:var(--contrast);text-shadow:none}
 .nav-close{display:flex;align-items:center;justify-content:center;position:fixed;top:max(16px,env(safe-area-inset-top));right:max(20px,env(safe-area-inset-right));width:44px;height:44px;background:var(--base2);border:0;border-radius:50%;padding:0;margin:0;color:var(--contrast);cursor:pointer}
 .nav-close svg{fill:currentColor}
 body.menu-open{overflow:hidden}
}

/* ---------- privacy / 404 ---------- */
.plain{max-width:620px;margin:0 auto;padding:0 var(--sp50)}
.plain>*+*{margin-block-start:var(--gap)}
.plain h2{margin-top:var(--sp30)}
.sep{border:0;border-top:2px solid currentColor;opacity:.4;width:100%;margin:var(--sp30) 0 0}
.center-page{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp20);text-align:center;padding:var(--sp40)}

/* ---------- multi-page (2026-09 SEO rebuild) ----------
   Separators between nav/footer items are CSS, never literal «·» characters (voice-lint T5). */
.logo{display:flex;align-items:center;gap:.8rem;text-decoration:none}
.nav-list a{font-family:var(--fh);font-size:.92rem;font-weight:600;letter-spacing:.06em}
.nav-list a[aria-current=page]{text-decoration:underline;text-underline-offset:.3em}
.nav-langs{margin-left:.4rem}
.lang-menu{position:relative}
.lang-menu summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;border:1px solid currentColor;border-radius:20px;padding:.15rem .7rem;font-family:var(--fh);font-size:.8rem;font-weight:600;letter-spacing:.08em;line-height:1.4}
.lang-menu summary::-webkit-details-marker{display:none}
.lang-menu summary::after{content:"";width:.38em;height:.38em;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-.12em);transition:transform .15s}
.lang-menu[open] summary::after{transform:rotate(-135deg) translateY(.15em)}
.lang-menu ul{position:absolute;right:0;top:calc(100% + .5rem);min-width:11rem;margin:0;padding:.4rem 0;list-style:none;background:var(--white);border-radius:14px;box-shadow:0 12px 32px rgba(28,41,48,.28);z-index:30}
.nav-list .lang-menu li a{display:block;padding:.5rem 1.1rem;color:var(--contrast);text-decoration:none;font-family:var(--fb);font-size:1rem;font-weight:500;letter-spacing:0;text-shadow:none}
.nav-list .lang-menu li a:hover,.nav-list .lang-menu li a:focus-visible{background:var(--base2);text-decoration:none}
.nav-modal.open .nav-langs{margin:var(--sp10) 0 0;text-align:center}
.nav-modal.open .lang-menu summary{min-height:44px;box-sizing:border-box;padding:.5rem 1rem}
.nav-modal.open .lang-menu ul{position:static;min-width:0;box-shadow:none;background:transparent;padding:.3rem 0 0}
.nav-modal.open .lang-menu li a{padding:.4rem 0}
.lbl,.foot-tag,.kicker{font-family:var(--fh)}
.kicker{font-family:var(--fh);font-size:.92rem;font-weight:700;letter-spacing:.16em;text-align:center;margin-bottom:var(--sp10)}
.h1-kw{display:block;font-size:.5em;font-weight:500;letter-spacing:.06em;margin-bottom:.35em}
.hero-inner .kicker,.hero-title,.hero-big,.ph-body h1,.ph-body .lede,.brand-name,.nav-list a{text-shadow:0 1px 14px rgba(28,41,48,.6)}
.page-hero{min-height:0}
.page-hero .hero-shade{background:linear-gradient(354deg,rgba(28,41,48,.7) 0%,rgba(28,41,48,.58) 55%,rgba(28,41,48,.68) 100%)}
.ph-body{box-sizing:border-box;max-width:900px;padding:var(--sp40) 0 var(--sp50)}
.ph-body h1{font-size:var(--fs-xxl);color:var(--white)}
.ph-body .lede{font-size:var(--fs-l);line-height:1.35;margin-top:var(--sp20);max-width:44ch}
.inner-page .ph-body .lede{font-size:clamp(1rem,.875rem + .6vw,1.25rem);line-height:1.5;max-width:52ch}
.lead{font-size:1.125rem;line-height:1.5}
.inner-page .lead{font-size:1.0625rem}
.small{font-size:.9rem;color:var(--contrast2)}
.text-link{font-weight:600}
.sec-text,.sec-what,.sec-steps,.sec-faq{box-sizing:border-box;padding:var(--sp40) var(--sp30)}
.sec-text>*+*,.sec-what>*+*{margin-block-start:var(--sp30)}
.sec-steps.alt{background:var(--base2)}
.sec-cta{box-sizing:border-box;padding:var(--sp40) var(--sp30) var(--sp50)}
.sec-cta>*+*{margin-block-start:var(--sp20)}
.sec-cta-band{width:100%;background:var(--base2)}
.sec-cta-band>.wide>*+*{margin-block-start:var(--sp20)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--sp20)}
.card-link{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--sp10);background:var(--base2);border-radius:20px;padding:var(--sp30);text-decoration:none}
.card-link h3{font-family:var(--fb);font-size:var(--fs-m);font-weight:600}
.card-link .more{margin-top:auto;font-weight:600;text-decoration:underline}
.card-link:hover{background:var(--contrast2);color:var(--base)}
.card-link:hover h3{color:inherit}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--sp30);margin-top:var(--sp30)}
.steps h3{font-family:var(--fb);font-size:var(--fs-m);font-weight:600;margin-bottom:var(--sp10)}
.platforms{grid-template-columns:repeat(3,minmax(0,1fr))}
.platform{display:flex;flex-direction:column;min-width:0}
.platform-action{display:flex;justify-content:center;margin-top:auto;padding-top:var(--sp20)}
.platform-button{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:162px;height:48px;border-radius:30px;overflow:hidden;text-decoration:none}
.platform-button img{display:block;width:100%;height:100%;object-fit:contain}
.platform-web{background:var(--contrast);color:var(--base);font-family:var(--fh);font-size:1rem;letter-spacing:.04em}
.platform-web:hover{background:var(--contrast2)}
@media(max-width:781px){.platforms{grid-template-columns:1fr}}
.units{list-style:none;padding:0;margin:var(--sp30) auto 0;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp20)}
.units li{box-sizing:border-box;background:var(--base2);border-radius:20px;padding:var(--sp20) var(--sp30);text-align:center;min-width:120px}
.units strong{display:block;font-family:var(--fh);font-size:var(--fs-l)}
.sec-units{width:100%;background:var(--base2)}
.sec-units>.wide>*+*{margin-block-start:var(--sp30)}
.sec-units .units li{background:var(--base)}
.faq{max-width:820px;margin:var(--sp30) auto 0}
.faq details{border-top:1px solid var(--contrast3);padding:var(--sp10) 0}
.faq details:last-child{border-bottom:1px solid var(--contrast3)}
.faq summary{cursor:pointer;display:flex;justify-content:space-between;gap:1rem;list-style:none;font-weight:600;font-size:var(--fs-m);padding:var(--sp10) 0}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--fh);font-size:1.4em;line-height:1;flex:0 0 auto}
.faq details[open] summary::after{content:"−"}
.faq p{padding-bottom:var(--sp10)}
.cta-row{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--sp20);margin-top:var(--sp20)}
.btn-dark{display:inline-block;width:auto;padding:var(--sp10) var(--sp30);color:var(--base);background:var(--contrast);border-color:var(--contrast)}
.btn-dark:hover{background:var(--contrast2);border-color:var(--contrast2);color:var(--base)}
.btn-ghost{background:transparent;color:var(--contrast)}
.card-contact{flex-direction:column;align-items:center;text-align:center}
.card-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp20)}
.nap-page p{display:flex;flex-direction:column;gap:.2rem;text-align:center}
.lbl{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--contrast2)}
.map-embed{box-sizing:border-box;background:var(--base2);border-radius:30px;padding:var(--sp20);text-align:center}
.map-embed iframe{display:block;border:0;width:100%;height:450px;border-radius:20px}
.areas,.social-row{list-style:none;padding:0;margin:var(--sp20) 0;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp10)}
.areas li{background:var(--base2);border-radius:20px;padding:.4rem 1rem}
.social-row{gap:var(--sp30);font-weight:600}
.two-col{columns:2;column-gap:var(--sp40)}
.pcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp30);margin-top:var(--sp30)}
.pcard{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--sp10);background:var(--base2);border-radius:20px;padding:var(--sp30)}
.pcard .plogo{margin:0 0 var(--sp10)}
.pcard .plogo img{width:120px;aspect-ratio:4/3;object-fit:contain}
.pcard h3{font-family:var(--fb);font-size:var(--fs-m);font-weight:600}
.pcard dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:.2rem .8rem;font-size:var(--fs-s)}
.pcard dl div{display:contents}
.pcard dt{color:var(--contrast2)}
.pcard dd{margin:0}
.project-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 24px;margin-top:32px}
.project-photos figure{margin:0;min-width:0}
.project-photos a{display:block;border-radius:20px;cursor:zoom-in}
.project-photos img{display:block;width:100%;height:auto;border-radius:20px}
.project-photos figcaption{display:block;margin:12px 0 0;text-align:center}
@media(max-width:1099px){.project-photos{grid-template-columns:minmax(0,1fr);max-width:560px;margin-left:auto;margin-right:auto}}
.plain-page{max-width:760px}
.plain-page h2{font-size:var(--fs-l);margin-top:var(--sp30)}
.plain-page h2+p{margin-top:var(--sp10)}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:var(--sp30)}
.foot-name{display:inline-flex;align-items:center;gap:.8rem;font-family:var(--fh);font-size:var(--fs-m);font-weight:600;letter-spacing:.12em;text-decoration:none}
.foot-name img{width:56px;height:56px;flex-shrink:0}
.foot-tag{font-family:var(--fh);font-size:.75rem;letter-spacing:.14em;color:var(--contrast2);margin-top:.5rem}
.nap{display:flex;flex-direction:column;gap:.3rem;margin-top:var(--sp20);font-style:normal}
.nap a{text-decoration:none}
.foot-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp10);margin-top:var(--sp40);padding-top:var(--sp20);border-top:1px solid var(--contrast3);font-size:var(--fs-s);color:var(--contrast2)}
@media(max-width:781px){.two-col{columns:1}.foot-grid{grid-template-columns:1fr 1fr}.ph-body .lede{font-size:var(--fs-m)}}
@media(max-width:480px){.foot-grid{grid-template-columns:1fr}.btn-dark{width:100%;box-sizing:border-box}}

/* Contact form */
.sec-contact-form{box-sizing:border-box;padding:var(--sp40) var(--sp30);max-width:900px}
.form-intro{margin:1rem auto 2rem;max-width:40ch}
.contact-form{position:relative;padding:clamp(1.25rem,4vw,3rem);border-radius:24px;background:var(--base2)}
.form-required,.form-notice{font-size:.95rem;color:var(--contrast2)}
.form-required{margin-bottom:1.5rem}
.form-fields{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.form-field{display:flex;flex-direction:column;gap:.5rem;min-width:0}
.form-field label{font-size:1rem;font-weight:600}
.form-field input,.form-field textarea{box-sizing:border-box;width:100%;min-height:50px;padding:.75rem 1rem;border:1px solid var(--contrast3);border-radius:10px;background:var(--white);color:var(--contrast);font:inherit;font-size:1rem;line-height:1.5}
.form-field textarea{min-height:170px;resize:vertical}
.form-field input:focus-visible,.form-field textarea:focus-visible{outline:2px solid var(--contrast2);outline-offset:2px;border-color:var(--contrast2)}
.form-full{grid-column:1/-1}
.form-trap{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.form-notice{margin:1.5rem 0}
.form-submit{min-height:48px;padding:.85rem 1.5rem;font-size:1rem;letter-spacing:.04em}
.form-submit:disabled{opacity:.65;cursor:wait}
.form-status{margin-top:1rem;padding:1rem;border:1px solid currentColor;border-radius:10px;font-size:1rem}
.form-status[data-state=error]{color:#842c24}
.form-status[data-state=success]{color:#225a36}
@media(max-width:600px){.form-fields{grid-template-columns:1fr}.form-submit{width:100%}}

/* Contact details and enquiry form share the desktop row. */
.contact-layout{box-sizing:border-box;display:grid;gap:40px;padding:48px 24px}
.contact-layout>section{width:100%;min-width:0;max-width:none;margin:0;padding:0}
.contact-layout .card-contact{box-sizing:border-box;margin:0;padding:32px;align-items:stretch}
.contact-layout .card-info{align-items:stretch}
.contact-layout .nap-page p{text-align:left;font-size:1.25rem;overflow-wrap:anywhere}
.contact-layout .card-contact h2{font-size:var(--fs-xl);font-weight:400}
.contact-layout .card-actions .btn{width:100%}
.contact-layout .contact-form{padding:28px}
.contact-layout .contact-coverage h2,.contact-layout .contact-coverage p{text-align:left}
@media(min-width:1100px){
 .contact-layout{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);grid-template-rows:auto 1fr;gap:32px 48px;padding:64px 32px}
 .contact-layout .sec-contact-page{grid-column:1;grid-row:1}
 .contact-layout .sec-contact-form{grid-column:2;grid-row:1 / span 2}
 .contact-layout .contact-coverage{grid-column:1;grid-row:2;padding:0 8px;align-self:start}
}
@media(max-width:600px){.contact-layout{padding:40px 20px}.contact-layout .card-contact,.contact-layout .contact-form{padding:24px 20px}.contact-layout .nap-page p{font-size:1.0625rem}}

/* Give project photos and app screenshots their own row before desktop columns get cramped. */
@media(max-width:1099px){
 .cols-app .imgfig,.cols-company .imgfig,.svc-row .imgfig{display:block;width:100%;max-width:640px}
 .cc-img .imgfig{max-width:520px}
 .svc-img .imgfig{max-width:560px}
 .cols-app .imgfig img,.cols-company .imgfig img,.svc-row .imgfig img{width:100%;height:auto}
 .cols-app .imgfig figcaption,.cols-company .imgfig figcaption,.svc-row .imgfig figcaption{display:block}
}
@media(min-width:782px) and (max-width:1099px){
 .sec-app,.sec-plc,.sec-company,.sec-services{box-sizing:border-box;width:100%;padding:40px 32px;margin:24px auto}
 .cols-app,.cols-company,.svc-row{display:grid;grid-template-columns:minmax(0,1fr);gap:32px;max-width:720px;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}
 .app-txt,.plc-txt{padding-left:0;padding-right:0}
 .cols-half{gap:24px}
}

/* Mobile spacing: keep readable gutters and separate columns when they stack. */
@media(max-width:781px){
 :root{--sp20:1rem;--sp30:1.5rem;--sp40:2rem;--sp50:3rem;--sp60:3rem}
 .hero-bg{background-position:57% center}
 .hero-inner{padding-left:20px;padding-right:20px}
 .topbar{padding-top:20px;padding-bottom:20px}
 .nav-open{justify-content:center;width:44px;height:44px}
 .hero:not(.page-hero){min-height:760px;min-height:max(760px,100svh)}
 .hero:not(.page-hero)>.hero-inner{display:flex;flex-direction:column;min-height:inherit;padding-bottom:32px}
 .hero:not(.page-hero) .sp{display:none}
 .hero-cols{padding:0;margin-top:clamp(40px,7svh,72px)}
 .hero-title{padding:0}
 .hero-cols .hc2{display:none}
 .hero .btn-row{margin-top:24px;margin-bottom:16px}
 .hero .btn-w{width:min(100%,220px)}
 .badges{gap:12px}
 .badges a{min-width:0}
 .badges img{width:150px}
 .hero-big{margin-top:auto;padding-top:56px}
 .here-row{padding:16px 12px 0}
 .ph-body{padding-top:24px;padding-bottom:48px}
 .ph-body .lede{margin-top:20px;line-height:1.55}
 main{margin-top:0}
 main>section{box-sizing:border-box;margin-top:0;margin-bottom:0;padding:40px 20px}
 .sec-services{width:100%}
 .cols{row-gap:32px}
 .cols-half{row-gap:24px}
 .cols-app,.app-txt,.plc-txt,.feat-row>div{padding-left:0;padding-right:0}
 .stack{gap:24px}
 .steps{row-gap:32px}
 .platform-action{padding-top:20px}
 .checklist li+li{margin-top:12px}
 .card{margin-top:24px;margin-bottom:0;padding:24px 20px}
 .card-info{gap:20px;max-width:100%}
 .card-info p{font-size:1.0625rem;overflow-wrap:anywhere}
 .nap-page p{gap:8px}
 .card-actions{width:100%;gap:16px}
 .foot{padding:48px 20px 32px}
 .foot-grid{row-gap:48px}
 .fg{gap:12px}
 .fg ul{gap:4px}
 .fg a,.nap a{display:inline-flex;align-items:center;box-sizing:border-box;min-height:44px}
 .foot-bottom{margin-top:32px;row-gap:16px}
}

/* Rivers and springs: extend the existing service layout with full-frame landscapes. */
.water-teaser,.water-control{background:var(--base2);padding:64px 0}
.water-row.wide,.water-content{width:calc(100% - 40px);max-width:1120px}
.water-content{padding-top:64px;padding-bottom:64px;padding-inline:0}
.water-row{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:56px;align-items:center}
.water-content>.water-row+.water-row{margin-top:72px}
.water-row-reverse>.water-photo{grid-column:2;grid-row:1}
.water-row-reverse>.water-copy{grid-column:1;grid-row:1}
.water-photo{margin:0;min-width:0}
.water-photo img{display:block;width:100%;height:auto;border-radius:16px}
.water-photo figcaption{display:block;font-size:14px;line-height:1.5;color:var(--contrast2);margin-top:12px;text-align:left}
.water-photo figcaption a{color:inherit;text-underline-offset:3px}
.water-copy{min-width:0}
.water-copy h2{margin:0 0 20px;text-wrap:balance}
.water-copy p{max-width:65ch;margin:0 0 20px}
.water-copy ul{padding-left:22px;margin:0 0 24px}
.water-copy li+li{margin-top:12px}
.water-control .imgfig{margin:0}
.water-control figcaption{display:block}
.water-control .imgfig img{width:100%;height:auto}
@media(max-width:1099px){
 .water-row{grid-template-columns:minmax(0,1fr);gap:28px}
 .water-row-reverse>.water-photo,.water-row-reverse>.water-copy{grid-column:auto;grid-row:auto}
 .water-photo,.water-control .imgfig{width:100%;max-width:640px;margin-inline:auto}
 .water-content>.water-row+.water-row{margin-top:56px}
 .water-teaser,.water-control{padding:48px 0}
 .water-content{padding-top:48px;padding-bottom:48px}
}

/* Four primary choices; services are a native disclosure on every device. */
.topbar{position:relative;z-index:40}
.solutions-menu{position:relative}
.solutions-menu>summary{display:flex;align-items:center;gap:9px;min-height:44px;list-style:none;cursor:pointer;color:var(--white);font-family:var(--fh);font-size:.92rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-shadow:0 1px 14px rgba(28,41,48,.6)}
.solutions-menu>summary::-webkit-details-marker{display:none}
.solutions-menu>summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.solutions-menu[open]>summary::after{transform:rotate(225deg) translate(-1px,-1px)}
.solutions-menu.has-current>summary{text-decoration:underline;text-underline-offset:.3em}
.solutions-menu>ul{position:absolute;top:calc(100% + 8px);left:0;width:330px;box-sizing:border-box;list-style:none;margin:0;padding:8px;background:var(--white);border-radius:14px;box-shadow:0 12px 32px rgba(28,41,48,.22);text-align:left}
.nav-list .solutions-menu li a{display:block;padding:12px 14px;color:var(--contrast);font-family:var(--fb);font-size:16px;font-weight:500;letter-spacing:0;line-height:1.4;text-shadow:none;border-radius:8px}
.nav-list .solutions-menu li a:hover,.nav-list .solutions-menu li a:focus-visible{background:var(--base2)}
.solutions-menu>summary:focus-visible{outline:2px solid currentColor;outline-offset:5px;border-radius:3px}
@media(max-width:1099.9px){
 .nav-modal.open .nav-list>li{max-width:100%}
 .nav-modal.open .solutions-menu>summary{justify-content:center;padding:8px 0;color:var(--contrast);font-size:clamp(1.05rem,3.5vw,1.5rem);line-height:1.35;text-shadow:none}
 .nav-modal.open .solutions-menu>ul{position:static;width:min(340px,calc(100vw - 48px));margin-top:8px;background:transparent;border-radius:0;box-shadow:none;padding:4px 0;border-top:1px solid var(--contrast3);border-bottom:1px solid var(--contrast3);text-align:center}
 .nav-modal.open .solutions-menu li a{padding:12px 8px}
 html:not(.nav-ready) .nav-open,html:not(.nav-ready) .nav-close{display:none}
 html:not(.nav-ready) .nav-modal{display:block}
 html:not(.nav-ready) .topbar{gap:24px}
 html:not(.nav-ready) .nav-list{flex-wrap:wrap;justify-content:flex-start;gap:16px}
 html:not(.nav-ready) .solutions-menu>ul{position:static;width:min(330px,calc(100vw - 40px))}
}

@media(min-width:1100px){
 .nav-list{gap:clamp(32px,3vw,44px)}
}
