/* GridSync company site: Sprint G-R. One small token set, one hero, EL-style rows. Fonts are self-hosted. No third-party requests. */
@font-face{font-family:Inter;src:url('/assets/fonts/inter-var-latin.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:Manrope;src:url('/assets/fonts/manrope-var-latin.woff2') format('woff2');font-weight:200 800;font-display:swap}
:root{
  --navy:#001E3B;--deep:#00152A;--mint:#00DFA3;--teal:#00735A;--ink:#0B2036;--muted:#44566D;--line:#D5DCE6;--wall:#EDE9E1;--paper:#F3F6FA;--white:#fff;
  --max:1280px;--pad:clamp(20px,4vw,40px);                                           /* grid: 1280 content, fluid gutter */
  --s1:8px;--s2:16px;--s3:24px;--s4:32px;--s5:48px;--s6:64px;--s7:96px;--s8:128px;    /* 8 px spacing scale */
  --fs-d:clamp(2.5rem,1.3rem + 3.2vw,4.25rem);                                              /* display 40 to 80 */
  --fs-h1:clamp(2.25rem,1.4rem + 2.8vw,3.5rem);--fs-h2:clamp(1.5rem,1.2rem + 1vw,2.125rem);--fs-b:1.0625rem;--fs-l:clamp(1.125rem,1rem + .5vw,1.375rem);--fs-s:.8125rem;
  --f-d:Manrope,Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--f-b:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font:400 var(--fs-b)/1.6 var(--f-b);color:var(--ink);background:var(--white);-webkit-font-smoothing:antialiased;min-height:100svh;display:flex;flex-direction:column}
main{flex:1 0 auto;display:flex;flex-direction:column}
.banner.fill{flex:1 0 auto}
img{display:block;max-width:100%;height:auto}
[hidden]{display:none!important}
a{color:inherit}
h1,h2,h3{font-family:var(--f-d);color:var(--navy);letter-spacing:-.035em;line-height:1.06;font-weight:800}
:focus-visible{outline:2px solid var(--navy);outline-offset:3px;border-radius:1px}
.recog :focus-visible,.ftr :focus-visible,.tabs :focus-visible,.why :focus-visible{outline-color:var(--mint)}
.skip{position:absolute;left:12px;top:-100px;z-index:100;background:#fff;color:var(--navy);padding:12px 18px;font-weight:600}.skip:focus{top:12px}
.in{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}

/* header */
.hdr{height:80px;background:#fff;border-bottom:1px solid var(--line);position:relative;z-index:30}
.hdr .in{height:100%;display:flex;align-items:center;gap:var(--s4)}
.logo img{width:124px;height:42px}
.nav{display:none;margin-left:auto;height:100%}
.nav a{position:relative;display:flex;align-items:center;padding:0 18px;font:600 var(--fs-s)/1 var(--f-b);letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:#2A3C52}
.nav a:after{content:"";position:absolute;left:18px;right:18px;bottom:0;height:3px;background:var(--navy);transform:scaleX(0);transform-origin:left;transition:transform .18s ease}
.nav a:hover:after,.nav a[aria-current]:after{transform:scaleX(1)}
.nav a:hover,.nav a[aria-current]{color:var(--navy)}
.menu{margin-left:auto;position:relative}
.menu summary{list-style:none;cursor:pointer;font:600 var(--fs-s)/1 var(--f-b);letter-spacing:.12em;text-transform:uppercase;color:var(--navy);padding:16px 0}
.menu summary::-webkit-details-marker{display:none}
.mlist{position:absolute;right:0;top:56px;min-width:240px;background:#fff;border:1px solid var(--line);box-shadow:0 16px 40px rgba(0,30,59,.14);display:flex;flex-direction:column}
.mlist a{padding:16px 20px;font-weight:600;text-decoration:none;border-bottom:1px solid var(--line)}.mlist a:last-child{border:0}.mlist a[aria-current]{background:var(--paper)}
@media(min-width:900px){.nav{display:flex}.menu{display:none}}

/* button */
.btn{display:inline-flex;align-items:center;gap:var(--s2);height:52px;padding:0 var(--s3);background:var(--mint);color:var(--navy);font:700 .9375rem/1 var(--f-b);text-decoration:none;border-radius:2px;transition:background .15s ease}
.btn:hover{background:#38F0B9}.btn .arw{transition:transform .18s ease}.btn:hover .arw{transform:translateX(4px)}
.btn.is-held{opacity:.55;cursor:default}.btn.is-held:hover{background:var(--mint)}.btn.is-held:hover .arw{transform:none}

/* home hero: one panel. Mobile: copy on the wall colour, photograph below. Desktop: full-bleed photograph, copy over the quiet left side. */
.hero{position:relative;background:var(--wall);display:flex;flex-direction:column}
.copy{order:1;padding:var(--s4) 0}
.hero h1{font-size:var(--fs-d);letter-spacing:-.045em;line-height:1.02;font-weight:800;max-width:8.6em}
.sub{margin:var(--s3) 0 var(--s4);max-width:28ch;font-size:var(--fs-l);line-height:1.45;color:var(--navy)}
.stage{order:2;position:relative;aspect-ratio:5/4;overflow:hidden;background:var(--paper)}
.slide{position:absolute;inset:0;margin:0;opacity:0;transition:opacity .6s ease;z-index:0}
.slide.is-active{opacity:1;z-index:2}
.slide picture,.slide img{display:block;width:100%;height:100%}
.slide img{object-fit:cover;object-position:center 55%}
.slide:nth-child(1) img{object-position:center 62%}.slide:nth-child(3) img{object-position:center 8%}
.ctl{position:absolute;z-index:5;right:var(--pad);bottom:20px;display:flex;align-items:center;gap:8px}
.ctl[hidden],.bar[hidden]{display:none}
.cnt{display:inline-flex;align-items:center;height:40px;padding:0 14px;background:rgba(0,30,59,.88);color:#fff;font:600 var(--fs-s)/1 var(--f-b);letter-spacing:.12em}
.ctl button{width:40px;height:40px;border:0;background:#fff;color:var(--navy);display:grid;place-items:center;cursor:pointer}.ctl button:hover{background:var(--wall)}
.bar{position:absolute;z-index:5;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(3,1fr)}
.bar button{height:24px;border:0;border-top:3px solid rgba(0,30,59,.28);background:transparent;cursor:pointer}
.bar button[aria-current="true"]{border-top-color:var(--navy)}
.tabs{background:var(--navy)}
.tabs .in{display:grid;grid-template-columns:1fr}
.tabs a{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding:var(--s2) 0;border-top:3px solid rgba(255,255,255,.14);color:#fff;text-decoration:none;font:700 1.125rem/1.3 var(--f-d);transition:border-color .18s ease}
.tabs a:hover{border-top-color:var(--mint)}.tabs .arw{flex:none;color:var(--mint);transition:transform .18s ease}.tabs a:hover .arw{transform:translateX(4px)}
.recog{background:var(--deep);color:#C9D7E8;border-top:1px solid rgba(255,255,255,.1)}
.recog .in{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s5);padding-top:var(--s3);padding-bottom:var(--s3)}
.recog .rh{flex:0 0 100%;color:#fff;font-size:var(--fs-h2)}
.marks{display:flex;align-items:center;gap:var(--s4)}.marks img{height:36px;width:auto}
.recog p{font-size:1rem;line-height:1.5}
@media(min-width:1040px){
  .hero{display:block;height:calc(100svh - 80px - 96px);min-height:560px;max-height:820px;background:var(--navy)}
  .stage{position:absolute;inset:0;aspect-ratio:auto;max-width:1800px;margin:0 auto}
  .slide img{object-position:right 55%}.slide:nth-child(1) img{object-position:right 60%}.slide:nth-child(3) img{object-position:right 40%}
  .ct{position:relative;isolation:isolate;display:inline-block}
  .ct:before{content:"";position:absolute;z-index:-1;pointer-events:none;inset:-64px -150px -64px -150px;background:radial-gradient(closest-side,rgba(237,233,225,.93) 0%,rgba(237,233,225,.84) 52%,rgba(237,233,225,0) 100%)}
  .copy{position:absolute;inset:0;z-index:6;display:flex;align-items:flex-start;padding:clamp(40px,10.5vh,104px) 0 0;pointer-events:none}
  .copy .in{width:100%}.copy .in>*{pointer-events:auto}
  .ctl{bottom:28px}
  .tabs .in{grid-template-columns:repeat(3,1fr);gap:0}
  .tabs a{padding:var(--s4) var(--s3) var(--s4) 0}.tabs a+a{padding-left:var(--s3)}
  .recog .in{padding-top:var(--s4);padding-bottom:var(--s4)}.ftr .in{padding-top:var(--s5);padding-bottom:var(--s4)}
}

/* banner + rows (What we do, About, Insights) */
.banner{background:var(--wall)}
.banner .in{display:grid;gap:var(--s4);padding-top:var(--s6);padding-bottom:var(--s6)}
.banner h1,.paper h1,.doc h1{font-size:var(--fs-h1);letter-spacing:-.045em;font-weight:800;max-width:18ch;text-wrap:balance}
.lead{margin-top:var(--s3);font-size:var(--fs-l);line-height:1.55;color:#25374D;max-width:34em}
.bm img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
@media(min-width:1040px){.banner .in{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:var(--s7);align-items:center;padding-top:var(--s7);padding-bottom:var(--s7)}.bm img{aspect-ratio:3/2}}
.rows{border-top:1px solid var(--line)}
.row{display:grid;gap:var(--s4);max-width:var(--max);margin:0 auto;padding:var(--s6) var(--pad);border-bottom:1px solid var(--line);scroll-margin-top:16px}
.row .media img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.op-municipalities{object-position:60% 50%}.op-installers{object-position:50% 30%}.op-households{object-position:60% 40%}
.tag{display:flex;gap:var(--s2);align-items:baseline;font:700 var(--fs-s)/1.3 var(--f-b);letter-spacing:.12em;text-transform:uppercase;color:var(--teal);margin-bottom:var(--s2)}.tag span{color:var(--muted)}
.row h2{font-size:var(--fs-h2);max-width:18ch}
.txt{margin:var(--s2) 0 var(--s3);max-width:34em;color:#25374D}
.uses{list-style:none;margin:0 0 var(--s4);max-width:34em}.uses li{padding:12px 0;border-top:1px solid var(--line);font-weight:600;color:var(--navy)}.uses li:last-child{border-bottom:1px solid var(--line)}
.row .body{align-self:center}
@media(min-width:1040px){.row{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--s7);padding-top:var(--s7);padding-bottom:var(--s7)}.row:nth-child(even) .media{order:2}}
.why{background:var(--navy);color:#fff}.why .in{padding-top:var(--s6);padding-bottom:var(--s6);display:grid;gap:var(--s4)}
.why h2{color:#fff;font-size:var(--fs-h2)}
.why ul{list-style:none;display:grid;gap:0}.why li{padding:var(--s3) 0;border-top:1px solid rgba(255,255,255,.18);font:700 1.125rem/1.4 var(--f-d);max-width:30em}.why li:last-child{border-bottom:1px solid rgba(255,255,255,.18)}
.why .cta{margin-top:var(--s2)}
@media(min-width:1040px){.why .in{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:var(--s7);padding-top:var(--s7);padding-bottom:var(--s7)}.why h2{max-width:12ch}}
.blocks .in{display:grid;gap:0;padding-top:var(--s6);padding-bottom:var(--s6)}
.blocks article{padding:var(--s4) 0;border-top:1px solid var(--line)}
.blocks h2{font-size:1.5rem;margin-bottom:var(--s1)}.blocks p{max-width:30em;color:#25374D}
.blocks .sh{font-size:var(--fs-h2);max-width:20ch;margin-bottom:var(--s4)}
.blocks.alt{background:var(--paper)}
@media(min-width:760px){.blocks .in{grid-template-columns:1fr 1fr;column-gap:var(--s7)}.blocks .sh{grid-column:1/-1}}
.paper .in{display:grid;gap:var(--s5);padding-top:var(--s6);padding-bottom:var(--s7);align-items:center}
.paper img{width:100%;max-width:340px;height:auto;box-shadow:0 20px 48px rgba(0,30,59,.18)}
.meta{margin-top:var(--s3);color:var(--muted);font-size:1rem}
.paper .btn{margin-top:var(--s4)}
@media(min-width:900px){.paper .in{grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:var(--s7)}}

/* documents (legal, contact, 404) */
.doc .in{max-width:860px;padding-top:var(--s6);padding-bottom:var(--s7)}
.doc .kick{font:700 var(--fs-s)/1 var(--f-b);letter-spacing:.14em;text-transform:uppercase;color:var(--teal);margin-bottom:var(--s2)}
.doc h1{margin-bottom:var(--s2);max-width:none}
.doc .upd{color:var(--muted);margin-bottom:var(--s4)}
.doc section{margin-top:var(--s4)}.doc h2{font-size:1.375rem;letter-spacing:-.02em;margin-bottom:var(--s1)}
.doc p,.doc li{max-width:46em;margin-bottom:12px}.doc ul{padding-left:1.2em;margin:12px 0}
.doc a{color:var(--teal);text-decoration:underline;text-underline-offset:3px}.doc a.btn{color:var(--navy);text-decoration:none}
.doc .big{font:700 clamp(1.25rem,1rem + 1.2vw,1.75rem)/1.3 var(--f-d)}.doc .cta{margin-top:var(--s4)}

/* footer */
.ftr{flex:none;background:var(--deep);color:#C9D7E8;border-top:1px solid rgba(255,255,255,.1)}
.ftr .in{display:grid;gap:var(--s2);padding-top:var(--s4);padding-bottom:var(--s3)}
.flogo img{width:124px;height:42px}
.fmail{font:700 clamp(1.125rem,1rem + .6vw,1.375rem)/1.3 var(--f-d)}.fmail a,.flinks a{color:#fff;text-decoration:none}.fmail a:hover,.flinks a:hover{text-decoration:underline;text-underline-offset:4px}
.flinks{display:flex;flex-wrap:wrap;gap:8px var(--s3);font-size:1rem}
.fine{max-width:var(--max);margin:0 auto;padding:var(--s3) var(--pad) var(--s4);border-top:1px solid rgba(255,255,255,.1);font-size:.875rem;color:#9FB2C8}
@media(min-width:900px){.ftr .in{grid-template-columns:1fr auto auto;align-items:center;gap:var(--s6)}}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.slide{transition:none}*{transition:none!important}}
@media print{.hdr,.ctl,.bar,.tabs,.menu{display:none}.hero{display:block;height:auto}.stage{aspect-ratio:auto;height:240px}.ct:before{display:none}.copy{position:static}body{color:#000}}

/* Home only: tall screens leave a gap under the capped hero, so the page ground is the same deep navy as the strips beneath it */
body.home{background:var(--deep)}

.banner .big a{font:700 clamp(1.5rem,1rem + 2vw,2.5rem)/1.2 var(--f-d);letter-spacing:-.03em;color:var(--navy);text-decoration:underline;text-decoration-color:var(--mint);text-decoration-thickness:4px;text-underline-offset:8px}
.banner .big a:hover{text-decoration-color:var(--navy)}

/* visually hidden text (e.g. "opens in a new tab") */
.vh{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0}
/* Insights: explainers (question and answer rows, hairline rules) */
.faq{border-top:1px solid var(--line)}
.faq .in{display:grid;gap:var(--s4);padding-top:var(--s6);padding-bottom:var(--s7)}
.faq h2{font-size:var(--fs-h2);max-width:12ch}
.qa{display:grid;gap:0;border-bottom:1px solid var(--line)}
.q{border-top:1px solid var(--line)}
.q summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:var(--s3);min-height:64px;padding:var(--s2) 0}
.q summary::-webkit-details-marker{display:none}
.q summary::after{content:"+";flex:none;font:500 1.75rem/1 var(--f-d);color:var(--navy);transition:transform .18s ease}
.q[open] summary::after{content:"2"}
.q summary:hover h3{text-decoration:underline;text-decoration-color:var(--mint);text-decoration-thickness:3px;text-underline-offset:6px}
.q h3{font-size:1.125rem;letter-spacing:-.02em;margin:0}
.q p{max-width:40em;color:#25374D;padding:0 var(--s5) var(--s3) 0}
@media print{.q:not([open]) p{display:block}.q summary::after{display:none}}
@media(min-width:1040px){.faq .in{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:var(--s7);padding-top:var(--s7)}}
