:root{--red:#ea2d30;--red-text:#c8202a;--red-soft:#fdecec;--ink:#231f20;--ink-2:#3a3536;--muted:#5f5a5b;--line:#e3e1e1;--gray:#f2f2f2;--gray-2:#fafafa;--white:#fff;--radius:12px;--radius-sm:8px;--shadow:0 1px 2px #0000000d,0 8px 24px -12px #231f202e;--container:1200px;--font:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--ink);background:var(--white);margin:0;font-size:16px;line-height:1.6}img{max-width:100%;display:block}a{color:var(--red-text);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{letter-spacing:-.015em;color:var(--ink);text-wrap:balance;margin:0;line-height:1.15}h1{font-size:clamp(2rem,4.2vw,3.25rem);font-weight:800}h1.h1--long{font-size:clamp(1.75rem,3.2vw,2.6rem)}h2{font-size:clamp(1.6rem,2.6vw,2.25rem);font-weight:800}h3{font-size:1.2rem;font-weight:700}p{margin:0}ul{margin:0;padding:0;list-style:none}.container{width:min(var(--container),calc(100% - 2.5rem));margin-inline:auto}.section{padding-block:clamp(3rem,6vw,5.5rem)}.section--tight{padding-block:clamp(2.25rem,4vw,3.5rem)}.section--gray{background:var(--gray)}.section--dark{background:var(--ink);color:#fff}.section--dark h2,.section--dark h3{color:#fff}.section--dark p{color:#ffffffd1}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--red-text);margin-bottom:.75rem;font-size:.75rem;font-weight:700;display:inline-block}.section--dark .eyebrow{color:var(--red)}.lead{color:var(--ink-2);max-width:62ch;font-size:1.125rem}.section--dark .lead{color:#ffffffd9}.prose p+p{margin-top:1rem}.prose{max-width:66ch}.stack>*+*{margin-top:1rem}.center{text-align:center}.center .lead{margin-inline:auto}.grid{gap:1.5rem;display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.split{grid-template-columns:1.05fr .95fr;align-items:center;gap:clamp(2rem,5vw,5rem);display:grid}.split--reverse>:first-child{order:2}@media (width<=900px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.split--reverse>:first-child{order:0}}@media (width<=600px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.section{padding-block:2.5rem}}.btn{border-radius:var(--radius-sm);cursor:pointer;border:2px solid #0000;justify-content:center;align-items:center;gap:.5rem;min-height:44px;padding:.8rem 1.4rem;font-size:.95rem;font-weight:700;line-height:1;transition:background .15s,color .15s,border-color .15s,transform .15s;display:inline-flex;text-decoration:none!important}.btn-primary{background:var(--red);color:#fff}.btn-primary:hover{background:#c8202a}.btn-secondary{color:var(--ink);border-color:var(--ink);background:0 0}.btn-secondary:hover{background:var(--ink);color:#fff}.section--dark .btn-secondary{color:#fff;border-color:#ffffffb3}.section--dark .btn-secondary:hover{color:var(--ink);background:#fff}.btn-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.btn-row--center{justify-content:center}.text-link{color:var(--red-text);align-items:center;gap:.35rem;font-weight:700;display:inline-flex}.text-link:after{content:"→";transition:transform .15s}.text-link:hover:after{transform:translate(3px)}.card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;flex-direction:column;display:flex;overflow:hidden}.card-body{flex-direction:column;flex:1;gap:.6rem;padding:1.25rem 1.35rem 1.4rem;display:flex}.card-body h3{font-size:1.1rem}.card-body p{color:var(--ink-2);font-size:.95rem}.card-media{aspect-ratio:16/10;background:var(--gray);overflow:hidden}.card-media img{object-fit:cover;width:100%;height:100%;transition:transform .3s}a.card{color:inherit;text-decoration:none!important}a.card:hover{border-color:var(--ink);transition:transform .15s,border-color .15s;transform:translateY(-2px)}a.card:hover .card-media img{transform:scale(1.03)}.card .text-link{margin-top:auto;font-size:.9rem}.bullets{color:var(--ink-2);gap:.4rem;font-size:.92rem;display:grid}.bullets li{padding-left:1.2rem;position:relative}.bullets li:before{content:"";background:var(--red);border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:.55em;left:0}.feature{align-items:flex-start;gap:1rem;display:flex}.feature-icon{background:var(--red-soft);width:48px;height:48px;color:var(--red);border-radius:12px;flex:0 0 48px;place-items:center;display:grid}.feature-icon svg{width:24px;height:24px}.feature h3{margin-bottom:.25rem;font-size:1.05rem}.feature p{color:var(--ink-2);font-size:.95rem}.section--dark .feature-icon{color:var(--red);background:#ffffff14}.checklist{gap:.7rem;display:grid}.checklist li{align-items:flex-start;gap:.65rem;font-size:.95rem;display:flex}.checklist li svg{width:20px;height:20px;color:var(--red);flex:0 0 20px;margin-top:.15rem}.checklist b{font-weight:700}.chips{flex-wrap:wrap;gap:.6rem;display:flex}.chip{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:999px;align-items:center;gap:.45rem;padding:.45rem .8rem;font-size:.85rem;font-weight:600;display:inline-flex}.chip--dark{color:#fff;background:#ffffff14;border-color:#ffffff26}.chip .dot{background:var(--red);border-radius:50%;width:.5rem;height:.5rem}.stats{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.stat{border-left:3px solid var(--red);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:#fff;padding:1.1rem 1.25rem}.stat b{font-size:1.5rem;font-weight:800;line-height:1.1;display:block}.stat span{color:var(--muted);font-size:.85rem}@media (width<=600px){.stats{gap:.5rem}.stat{padding:.75rem .8rem}.stat b{font-size:1.1rem}.stat span{font-size:.75rem}}.media{border-radius:var(--radius);background:var(--gray);box-shadow:var(--shadow);overflow:hidden}.media img{object-fit:cover;width:100%;height:100%}.media--contain{background:#fff;padding:1.5rem}.media--contain img{object-fit:contain}.faq{border-top:1px solid var(--line);max-width:820px;margin-inline:auto}.faq details{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem 0;font-size:1.02rem;font-weight:700;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--red);flex:none;font-size:1.4rem;font-weight:400;transition:transform .2s}.faq details[open] summary:after{transform:rotate(45deg)}.faq details p{color:var(--ink-2);max-width:70ch;padding:0 0 1.2rem}.crumbs{color:var(--muted);flex-wrap:wrap;gap:.5rem;font-size:.85rem;display:flex}.crumbs a{color:var(--muted)}.crumbs li+li:before{content:"/";color:var(--line);margin-right:.5rem}.steps{grid-template-columns:repeat(4,1fr);gap:1rem;display:grid;position:relative}.step{border:1px solid var(--line);border-radius:var(--radius);text-align:center;background:#fff;padding:1.5rem 1.25rem;position:relative}.step-num{background:var(--ink);color:#fff;border-radius:999px;padding:.2rem .55rem;font-size:.75rem;font-weight:700;position:absolute;top:-.8rem;left:1rem}.step .feature-icon{border-radius:50%;width:56px;height:56px;margin:0 auto .9rem}.step .feature-icon svg{width:26px;height:26px}.step h3{margin-bottom:.35rem;font-size:1.05rem}.step p{color:var(--ink-2);font-size:.9rem}.step:not(:last-child):after{content:"→";color:var(--red);font-size:1.25rem;font-weight:700;position:absolute;top:50%;right:-.85rem;transform:translateY(-50%)}@media (width<=900px){.steps{grid-template-columns:repeat(2,1fr)}.step:after{display:none}}@media (width<=600px){.steps{grid-template-columns:1fr}}.group-head{align-items:center;gap:1rem;margin:2.5rem 0 1.25rem;display:flex}.group-head:first-of-type{margin-top:0}.group-head h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink);font-size:.9rem}.group-head:after{content:"";background:var(--line);flex:1;height:1px}.tile{border-radius:var(--radius);aspect-ratio:4/3;color:#fff;display:block;position:relative;overflow:hidden;text-decoration:none!important}.tile img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.tile:hover img{transform:scale(1.04)}.tile span{background:linear-gradient(#231f2000,#231f20e6);padding:1.25rem 1rem 1rem;font-size:1.05rem;font-weight:700;position:absolute;inset:auto 0 0}.hero{background:linear-gradient(180deg,var(--gray-2),#fff);padding-block:clamp(2.5rem,5vw,4.5rem)}.hero .split{align-items:center}.hero h1 .h1-sub{color:var(--ink-2);letter-spacing:0;margin-top:.5rem;font-size:.5em;font-weight:600;display:block}.hero .lead{margin-top:1.25rem}.hero .btn-row,.hero .chips{margin-top:1.75rem}.hero .media{aspect-ratio:5/4}.hero--dark{background:var(--ink);color:#fff}.hero--dark h1,.hero--dark .h1-sub{color:#fff}.hero--dark .lead{color:#ffffffd9}.hero--dark .btn-secondary{color:#fff;border-color:#ffffffb3}.hero--dark .btn-secondary:hover{color:var(--ink);background:#fff}.hero--dark .crumbs,.hero--dark .crumbs a{color:#fff9}.poc{color:#5b4a00;text-align:center;background:#fff7d6;border-bottom:1px solid #f0e2a0;padding:.5rem 1rem;font-size:.85rem}.poc a{color:inherit;font-weight:700}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.filters{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-bottom:2rem;display:flex}.filters label{cursor:pointer;border:1px solid var(--line);color:var(--ink-2);background:#fff;border-radius:999px;padding:.5rem 1rem;font-size:.9rem;font-weight:600}.filters label:hover{border-color:var(--ink)}#f-all:checked~.filters label[for=f-all],#f-water:checked~.filters label[for=f-water],#f-wastewater:checked~.filters label[for=f-wastewater],#f-stormwater:checked~.filters label[for=f-stormwater],#f-platform:checked~.filters label[for=f-platform]{background:var(--ink);color:#fff;border-color:var(--ink)}#f-water:checked~.apps [data-group]:not([data-group=water]),#f-wastewater:checked~.apps [data-group]:not([data-group=wastewater]),#f-stormwater:checked~.apps [data-group]:not([data-group=stormwater]),#f-platform:checked~.apps [data-group]:not([data-group=platform]){display:none}.glance{grid-template-columns:repeat(2,1fr);gap:.75rem;margin:0;display:grid}.glance div{border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;padding:.7rem .9rem}.glance dt{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:700}.glance dd{margin:.15rem 0 0;font-size:.95rem;font-weight:700}.subnav{z-index:40;border-bottom:1px solid var(--line);background:#fff;position:sticky;top:76px}.subnav ul{scrollbar-width:none;gap:.25rem;display:flex;overflow-x:auto}.subnav li a{color:var(--ink-2);white-space:nowrap;border-bottom:3px solid #0000;padding:.85rem .9rem;font-size:.9rem;font-weight:600;display:inline-block}.subnav li a:hover{color:var(--ink);border-bottom-color:var(--red);text-decoration:none}.specs{border-collapse:collapse;border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:100%;font-size:.95rem;overflow:hidden}.specs th,.specs td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:.8rem 1rem}.specs tr:last-child th,.specs tr:last-child td{border-bottom:0}.specs th{background:var(--gray-2);width:34%;font-weight:700}.specs td{color:var(--ink-2)}section[id]{scroll-margin-top:130px}@media (width<=600px){.glance{grid-template-columns:1fr 1fr}.subnav{top:0}}.topbar[data-astro-cid-nen7h5rs]{background:var(--ink);color:#fff;font-size:.85rem}.topbar-in[data-astro-cid-nen7h5rs]{justify-content:space-between;align-items:center;min-height:38px;display:flex}.topbar-left[data-astro-cid-nen7h5rs]{align-items:center;gap:1.5rem;display:flex}.phone[data-astro-cid-nen7h5rs]{color:#fff;align-items:center;gap:.4rem;font-weight:700;display:inline-flex}.socials[data-astro-cid-nen7h5rs]{gap:1rem;display:flex}.socials[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:#fff;opacity:.75;font-weight:700}.socials[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{opacity:1}.utility[data-astro-cid-nen7h5rs]{gap:1.5rem;display:flex}.utility[data-astro-cid-nen7h5rs] button[data-astro-cid-nen7h5rs]{color:#fff;font:inherit;cursor:pointer;background:0 0;border:0;padding:.5rem 0;font-weight:700}.header[data-astro-cid-nen7h5rs]{border-bottom:1px solid var(--line);z-index:50;background:#fff;position:sticky;top:0}.header-in[data-astro-cid-nen7h5rs]{align-items:center;gap:2rem;min-height:76px;display:flex}.logo[data-astro-cid-nen7h5rs] img[data-astro-cid-nen7h5rs]{width:auto;height:44px}.nav[data-astro-cid-nen7h5rs]{margin-left:auto;position:relative}.nav-list[data-astro-cid-nen7h5rs]{gap:.25rem;display:flex}.nav-list[data-astro-cid-nen7h5rs]>li[data-astro-cid-nen7h5rs]>a[data-astro-cid-nen7h5rs]{color:var(--ink);border-bottom:3px solid #0000;padding:1.6rem .95rem;font-weight:600;text-decoration:none;display:inline-block}.nav-list[data-astro-cid-nen7h5rs]>li[data-astro-cid-nen7h5rs].active>a[data-astro-cid-nen7h5rs],.nav-list[data-astro-cid-nen7h5rs]>li[data-astro-cid-nen7h5rs]:hover>a[data-astro-cid-nen7h5rs]{border-bottom-color:var(--red)}.has-menu[data-astro-cid-nen7h5rs]{position:relative}.nav-list[data-astro-cid-nen7h5rs]>li[data-astro-cid-nen7h5rs].has-menu{position:static}.nav-list[data-astro-cid-nen7h5rs]>li[data-astro-cid-nen7h5rs].has-menu>.menu[data-astro-cid-nen7h5rs]:not(.menu--wide){left:auto;right:0}.menu[data-astro-cid-nen7h5rs]{border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);z-index:60;background:#fff;min-width:220px;padding:.6rem;display:none;position:absolute;top:100%;left:0}.topbar[data-astro-cid-nen7h5rs] .menu[data-astro-cid-nen7h5rs],.menu--right[data-astro-cid-nen7h5rs]{color:var(--ink);left:auto;right:0}.has-menu[data-astro-cid-nen7h5rs]:hover>.menu[data-astro-cid-nen7h5rs],.has-menu[data-astro-cid-nen7h5rs]:focus-within>.menu[data-astro-cid-nen7h5rs]{display:block}.menu[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--ink);border-radius:6px;padding:.45rem .7rem;font-size:.92rem;text-decoration:none;display:block}.menu[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{background:var(--gray)}.menu--wide[data-astro-cid-nen7h5rs]{grid-auto-flow:column;gap:.25rem 1.75rem;min-width:max-content;padding:1.1rem 1.25rem 1.25rem;display:none;left:auto;right:0}.has-menu[data-astro-cid-nen7h5rs]:hover>.menu--wide[data-astro-cid-nen7h5rs],.has-menu[data-astro-cid-nen7h5rs]:focus-within>.menu--wide[data-astro-cid-nen7h5rs]{display:grid}.menu-group[data-astro-cid-nen7h5rs]>a[data-astro-cid-nen7h5rs]{text-transform:uppercase;letter-spacing:.08em;color:var(--red-text);margin-bottom:.2rem;font-size:.78rem;font-weight:700}.menu-group[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{min-width:180px}.header-cta[data-astro-cid-nen7h5rs]{padding:.65rem 1.1rem;font-size:.9rem}.header-cta-wrap[data-astro-cid-nen7h5rs] .menu[data-astro-cid-nen7h5rs]{min-width:200px;margin-top:-.25rem}.mobile-nav[data-astro-cid-nen7h5rs]{display:none}@media (width<=1080px){.nav[data-astro-cid-nen7h5rs],.header-cta-wrap[data-astro-cid-nen7h5rs]{display:none}.mobile-nav[data-astro-cid-nen7h5rs]{margin-left:auto;display:block}.mobile-nav[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs]{cursor:pointer;place-content:center;gap:5px;width:44px;height:44px;list-style:none;display:grid}.mobile-nav[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs] span[data-astro-cid-nen7h5rs]{background:var(--red);border-radius:2px;width:24px;height:3px;display:block}.mobile-nav[data-astro-cid-nen7h5rs]>ul[data-astro-cid-nen7h5rs]{border-bottom:1px solid var(--line);background:#fff;max-height:80vh;padding:1rem 1.25rem 1.5rem;position:absolute;top:100%;left:0;right:0;overflow:auto}.mobile-nav[data-astro-cid-nen7h5rs]>ul[data-astro-cid-nen7h5rs]>li[data-astro-cid-nen7h5rs]{border-bottom:1px solid var(--line);padding:.5rem 0}.mobile-nav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{padding-left:1rem}.mobile-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--ink);padding:.35rem 0;display:block}.topbar[data-astro-cid-nen7h5rs] .utility[data-astro-cid-nen7h5rs],.topbar[data-astro-cid-nen7h5rs] .socials[data-astro-cid-nen7h5rs]{display:none!important}}.footer[data-astro-cid-jo6i4kqk]{background:var(--ink);color:#fffc;margin-top:auto;font-size:.9rem}.footer-grid[data-astro-cid-jo6i4kqk]{grid-template-columns:1.6fr repeat(5,1fr);gap:2rem;padding-block:3.5rem 2.5rem;display:grid}.footer[data-astro-cid-jo6i4kqk] h4[data-astro-cid-jo6i4kqk]{color:#fff;letter-spacing:.1em;text-transform:uppercase;margin-bottom:1rem;padding-bottom:.6rem;font-size:.8rem;position:relative}.footer[data-astro-cid-jo6i4kqk] h4[data-astro-cid-jo6i4kqk]:after{content:"";background:var(--red);width:28px;height:2px;position:absolute;bottom:0;left:0}.footer[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:#fffc}.footer[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:#fff}.footer[data-astro-cid-jo6i4kqk] li[data-astro-cid-jo6i4kqk]{margin-bottom:.4rem}.socials[data-astro-cid-jo6i4kqk]{gap:1rem;margin-top:1.25rem;display:flex}.footer-bottom[data-astro-cid-jo6i4kqk]{color:#fff9;border-top:1px solid #ffffff1a;flex-wrap:wrap;justify-content:space-between;gap:.5rem;padding-block:1.25rem;font-size:.8rem;display:flex}@media (width<=900px){.footer-grid[data-astro-cid-jo6i4kqk]{grid-template-columns:1fr 1fr}}@media (width<=600px){.footer-grid[data-astro-cid-jo6i4kqk]{grid-template-columns:1fr}}body{flex-direction:column;min-height:100vh;display:flex}
