@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/archivo-latin-wght-normal.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--paper:#F3F6FF;--card:#fff;--ink:#0B1A4A;--mut:#4F5D85;--line:#0B1A4A24;--navy:#0B1A4A;--navy2:#1B3560;
  --blue:#2A5C9E;--blue2:#3770B5;--acc:#2A5C9E;--steel:#9FB2CB;--tint:#E3E9F2;--tint2:#D9DFE8;
  color-scheme:light;box-sizing:border-box}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--paper:#070E26;--card:#0F1B45;--ink:#EEF2FF;--mut:#9DAAD6;--line:#EEF2FF29;--tint:#17284A;--tint2:#1A2433;--acc:#86ADDC;color-scheme:dark}}
:root[data-theme="dark"]{--paper:#070E26;--card:#0F1B45;--ink:#EEF2FF;--mut:#9DAAD6;--line:#EEF2FF29;--tint:#17284A;--tint2:#1A2433;--acc:#86ADDC;color-scheme:dark}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{height:100%}
body{margin:0;height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--paper);color:var(--ink);font:400 16px/1.5 Archivo,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;transition:background .5s;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
body.home{background:var(--navy);color:#fff}
a{color:inherit;text-decoration:none}
a:focus-visible{outline:2px solid var(--steel);outline-offset:3px}
p,h1,h2,h3{margin:0}
h1,h2,h3{font-weight:800;letter-spacing:-.035em;line-height:1.03}
.wrap{max-width:1300px;margin:0 auto;padding:0 clamp(18px,2.6vw,40px);width:100%}

/* ---------- moving backdrop (flat shapes and lines only) ---------- */
.bd{position:fixed;inset:0;z-index:-1;overflow:hidden;color:var(--ink);opacity:.08;transition:color .6s,opacity .6s;pointer-events:none}
body.home .bd{color:#fff;opacity:.17}
.sh{position:absolute;left:-30vw;right:-30vw;top:-20vh;bottom:-20vh;transform:translate(calc(var(--pi,0)*-5vw),calc(var(--pi,0)*-3vh));transition:transform 1.8s cubic-bezier(.2,.7,.2,1)}
.gsvg{position:absolute;left:0;top:0;width:100%;height:100%}
.mv{animation:slide 7s linear infinite}
@keyframes slide{to{transform:translate(64px,64px)}}
.sp{position:absolute;transform:translate(calc(var(--pi,0)*var(--mx)),calc(var(--pi,0)*var(--my)));transition:transform 1.8s cubic-bezier(.2,.7,.2,1)}
.sp i{display:block;border:2px solid currentColor}
.s1{width:46vmin;height:46vmin;border-radius:50%;animation:dr1 21s ease-in-out infinite alternate}
.s2{width:26vmin;height:26vmin;animation:dr2 26s ease-in-out infinite alternate}
.s3{width:10vmin;height:10vmin;background:currentColor;border:0!important;animation:dr3 17s ease-in-out infinite alternate}
.s4{width:18vmin;height:18vmin;border-radius:50%;animation:dr1 29s ease-in-out infinite alternate-reverse}
@keyframes dr1{to{transform:translate(-6vw,7vh)}}
@keyframes dr2{from{transform:rotate(12deg)}to{transform:translate(7vw,-5vh) rotate(58deg)}}
@keyframes dr3{from{transform:rotate(0)}to{transform:translate(-5vw,-8vh) rotate(90deg)}}

/* ---------- shared ---------- */
.btn{position:relative;display:inline-flex;align-items:center;gap:10px;padding:clamp(11px,2vh,16px) 24px;background:var(--blue);color:#fff;font-weight:600;font-size:15.5px;border:1px solid var(--blue);border-radius:12px;transition:background .2s,transform .2s,box-shadow .2s}
.btn::after{content:"→";transition:transform .2s}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(42,92,158,.4);background:var(--blue2)}
.btn:hover::after{transform:translateX(4px)}
.btn.out{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn.out:hover{background:var(--ink);color:var(--paper);box-shadow:none}
body.home .btn.out{color:#fff;border-color:#ffffff66}
body.home .btn.out:hover{background:#fff;color:var(--navy)}
.acts{display:flex;gap:12px;flex-wrap:wrap}
.ic{stroke:#fff;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.tile{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--blue);box-shadow:inset 0 0 0 2px rgba(255,255,255,.28),0 8px 18px rgba(8,24,60,.3)}
.tile .ic{width:52%;height:52%}

/* header */
.top{flex:none}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:clamp(10px,1.8vh,18px);padding-bottom:clamp(10px,1.8vh,18px)}
.logo{display:flex;align-items:center;gap:12px;font-weight:800;font-size:20px;letter-spacing:-.01em}
.logo svg{width:44px;height:auto;fill:currentColor;transition:transform .35s}
.logo:hover svg{transform:translateX(3px) rotate(-4deg)}
.logo small{font-weight:500;letter-spacing:.32em;font-size:11px;margin-left:8px;opacity:.7}
nav{display:flex;gap:4px;font-size:15px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:5px;transition:background .4s}
nav a{padding:7px 15px;border-radius:999px;color:var(--mut);font-weight:500;transition:background .2s,color .2s;white-space:nowrap}
nav a:hover{background:var(--tint);color:var(--ink)}
nav a[aria-current]{background:var(--navy);color:#fff}
body.home nav{background:#ffffff14;border-color:#ffffff33}
body.home nav a{color:#C3CFDF}
body.home nav a:hover{background:#ffffff1f;color:#fff}
body.home nav a[aria-current]{background:#fff;color:var(--navy)}
.top .btn{padding:10px 20px;font-size:15px}

/* pages fill the space between header and footer */
main{flex:1;min-height:0;position:relative}
.page{position:absolute;inset:0;animation:in .6s cubic-bezier(.2,.7,.2,1) both}
.page>.wrap{height:100%}
@keyframes in{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@keyframes up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
.up{animation:up .7s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0)*90ms)}
.svc>*,.proc>*,.ind>*,.stats>*,.cmp>*,.quick>*{animation:up .65s cubic-bezier(.2,.7,.2,1) both}
.svc>:nth-child(2),.proc>:nth-child(2),.ind>:nth-child(2),.stats>:nth-child(2),.quick>:nth-child(2){animation-delay:.08s}
.svc>:nth-child(3),.proc>:nth-child(3),.ind>:nth-child(3),.stats>:nth-child(3),.quick>:nth-child(3){animation-delay:.16s}
.svc>:nth-child(4),.proc>:nth-child(4),.ind>:nth-child(4),.quick>:nth-child(4){animation-delay:.24s}
.svc>:nth-child(5),.proc>:nth-child(5),.ind>:nth-child(5){animation-delay:.32s}
.svc>:nth-child(6){animation-delay:.4s}
.cmp>:nth-child(2){animation-delay:.1s}.cmp>:nth-child(3){animation-delay:.2s}.cmp>:nth-child(4){animation-delay:.3s}.cmp>:nth-child(5){animation-delay:.4s}

/* ---------- home ---------- */
#p-home>.wrap{display:flex;flex-direction:column}
.wm{position:absolute;right:-4%;top:2%;width:min(54vw,680px);fill:#fff;opacity:.05;pointer-events:none;animation:wm 1.6s ease .2s both}
@keyframes wm{from{opacity:0;transform:translateX(40px)}to{opacity:.05;transform:none}}
.hero{flex:1;min-height:0;display:grid;grid-template-columns:1.05fr .95fr;gap:24px;align-items:center}
.hero h1{font-size:clamp(38px,min(6vw,11vh),92px);max-width:9ch;line-height:.96}
.hero h1 span{display:block;overflow:hidden;padding-bottom:.06em}
.hero h1 span>b{display:block;font-weight:800;animation:rise .9s cubic-bezier(.2,.8,.2,1) both}
.hero h1 span:nth-child(2)>b{animation-delay:.12s}.hero h1 span:nth-child(3)>b{animation-delay:.24s;color:var(--steel)}
@keyframes rise{from{transform:translateY(105%)}to{transform:none}}
.hero .sub{margin:clamp(12px,2.4vh,26px) 0 clamp(14px,3vh,30px);font-size:clamp(16px,2.6vh,20px);color:#C3CFDF;max-width:30em}
.net{position:relative;height:min(100%,480px)}
.net svg.ln{position:absolute;inset:0;width:100%;height:100%}
.net polyline{fill:none;stroke:var(--steel);stroke-width:1.5;stroke-dasharray:5 6;opacity:.7;vector-effect:non-scaling-stroke;animation:dash 20s linear infinite}
@keyframes dash{to{stroke-dashoffset:-220}}
.nd{position:absolute;width:88px;margin:-44px 0 0 -44px;text-align:center;font-size:13px;font-weight:500;color:#B3C1D6;animation:pop .7s cubic-bezier(.2,.9,.3,1.3) both,fl 6s ease-in-out infinite;transition:color .2s}
.nd .tile{width:clamp(58px,10vh,82px);height:clamp(58px,10vh,82px);border-radius:20px;margin:0 auto 8px;transition:transform .25s}
.nd:hover{color:#fff}.nd:hover .tile{transform:scale(1.08) rotate(-4deg)}
.nd .tile::after{content:"";position:absolute;inset:0;border-radius:inherit;border:2px solid var(--steel);opacity:0;animation:ping 7.2s ease-out infinite;animation-delay:calc(var(--k)*.9s + 1.5s)}
@keyframes ping{0%{opacity:.9;transform:scale(1)}14%,100%{opacity:0;transform:scale(1.45)}}
@keyframes pop{from{opacity:0;transform:scale(.4)}}
.nd:nth-of-type(1){--k:0;animation-delay:.3s,.3s}.nd:nth-of-type(2){--k:1;animation-delay:.42s,-1s}.nd:nth-of-type(3){--k:2;animation-delay:.54s,-2s}
.nd:nth-of-type(4){--k:3;animation-delay:.66s,-3s}.nd:nth-of-type(5){--k:4;animation-delay:.78s,-4s}.nd:nth-of-type(6){--k:5;animation-delay:.9s,-5s}
@keyframes fl{50%{transform:translateY(-9px)}}
.net .lt .tile{background:var(--steel);box-shadow:inset 0 0 0 2px rgba(255,255,255,.4),0 8px 18px rgba(8,24,60,.3)}
.net .lt .ic{stroke:#0B1A4A}
.quick{flex:none;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding-bottom:clamp(10px,2.2vh,24px)}
.q{display:flex;flex-direction:column;gap:2px;padding:clamp(11px,2vh,18px) 20px;background:#ffffff12;border:1px solid #ffffff2e;border-radius:16px;position:relative;transition:transform .2s,border-color .2s,background .2s}
.q:hover{transform:translateY(-4px);border-color:var(--steel);background:#ffffff1f}
.q b{font-weight:800;font-size:17px;letter-spacing:-.02em}
.q span{color:#B3C1D6;font-size:14px;padding-right:24px}
.q i{position:absolute;right:18px;top:15px;font-style:normal;color:var(--steel);transition:transform .2s}
.q:hover i{transform:translateX(4px)}

/* ---------- inner pages ---------- */
.pg{display:flex;flex-direction:column;padding-top:clamp(6px,1.6vh,22px);padding-bottom:clamp(8px,1.6vh,18px)}
.ph{flex:none;display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(20px,4vw,64px);align-items:end;margin-bottom:clamp(10px,2vh,22px)}
.ph h1{font-size:clamp(26px,min(3.9vw,6.4vh),58px);max-width:20ch;color:var(--ink)}
.ph p{color:var(--mut);font-size:clamp(14px,2.1vh,18px);max-width:46ch}
.ph::after{content:"";grid-column:1/-1;height:3px;background:var(--blue);transform-origin:left;animation:line 1s cubic-bezier(.2,.8,.2,1) .2s both}
@keyframes line{from{transform:scaleX(0)}}
.card,.step,.cmp,.stat{transition:transform .25s,border-color .25s,box-shadow .25s}

.svc{flex:1;min-height:0;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,minmax(0,1fr));gap:clamp(8px,1.6vh,14px)}
.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:clamp(12px,2vh,22px);display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto 1fr auto;align-items:center;column-gap:12px;row-gap:clamp(5px,1vh,9px);overflow:hidden}
.card:hover{transform:translateY(-4px);border-color:var(--blue);box-shadow:0 16px 36px rgba(11,26,74,.16)}
.card:hover .tile{transform:rotate(-6deg) scale(1.06)}
.card .tile{transition:transform .3s}
.card h3{font-size:clamp(17px,2.9vh,22px)}
.card>p,.card ul,.card .why{grid-column:1/-1}
.card>p{color:var(--mut);font-size:clamp(12.8px,1.8vh,14.5px);line-height:1.4}
.card ul{margin:0;padding:0;list-style:none;font-size:clamp(12.3px,1.75vh,14px);align-self:start}
.card li{padding:0 0 3px 20px;position:relative;line-height:1.38}
.card li::before{content:"+";position:absolute;left:0;color:var(--acc);font:500 14px "IBM Plex Mono",monospace}
.card .why{display:none;padding-top:8px;border-top:1px solid var(--line);color:var(--acc);font:500 12px/1.5 "IBM Plex Mono",monospace}
@media (min-height:880px){.card .why{display:block}}
@media (max-height:860px){.card .tile{width:36px;height:36px;border-radius:10px}.card{padding:12px 16px;row-gap:5px}.card li{padding-bottom:1px}}
.end{display:none;margin-top:30px}

.proc{flex:none;display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(8px,1.4vh,12px)}
.step{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:clamp(12px,2vh,20px)}
.step:hover{transform:translateY(-4px);border-color:var(--blue);box-shadow:0 16px 36px rgba(11,26,74,.16)}
.step .m{font-weight:800;font-size:clamp(26px,4.4vh,36px);line-height:1;letter-spacing:-.04em;color:var(--acc)}
.step h3{font-size:clamp(18px,2.9vh,22px);margin:clamp(8px,2vh,22px) 0 6px}
.step p{color:var(--mut);font-size:clamp(13px,1.9vh,14.5px);line-height:1.4}
.band{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;background:var(--navy);color:#fff;border-radius:24px;padding:clamp(14px,3vh,34px) clamp(18px,3vw,40px);margin-top:clamp(8px,1.4vh,12px);animation:up .7s .35s cubic-bezier(.2,.7,.2,1) both}
.band h2{font-size:clamp(22px,min(3vw,4.6vh),38px)}
.band .l{color:#B3C1D6;margin-top:6px;font-size:clamp(13px,2vh,16px)}
.f6{display:grid;grid-template-columns:repeat(6,1fr);position:relative;margin-top:clamp(12px,3vh,32px)}
.f6::before{content:"";position:absolute;left:calc(100%/12);right:calc(100%/12);top:35px;border-top:2px solid var(--steel);transform-origin:left;animation:line 1.8s cubic-bezier(.4,0,.2,1) .7s both}
.f6 div{text-align:center;padding:0 6px;position:relative}
.f6 .m{display:block;height:16px;font:400 12px/16px "IBM Plex Mono",monospace;color:#8FA3BF}
.f6 i{display:block;width:20px;height:20px;border-radius:50%;background:var(--navy);border:2px solid var(--steel);margin:10px auto;box-shadow:0 0 0 7px var(--navy);animation:lit 7s ease-in-out infinite;animation-delay:calc(var(--k)*.45s + 1.2s)}
@keyframes lit{0%,12%,100%{background:var(--navy);box-shadow:0 0 0 7px var(--navy)}5%{background:var(--steel);box-shadow:0 0 0 7px var(--navy),0 0 0 11px rgba(159,178,203,.35)}}
.f6 div:nth-child(1){--k:0}.f6 div:nth-child(2){--k:1}.f6 div:nth-child(3){--k:2}.f6 div:nth-child(4){--k:3}.f6 div:nth-child(5){--k:4}.f6 div:nth-child(6){--k:5}
.f6 b{display:block;font-weight:700;font-size:clamp(14px,2.2vh,17px)}
.f6 small{display:block;color:#B3C1D6;font-size:13px;line-height:1.3;margin-top:3px}

.why2{flex:1;min-height:0;display:grid;grid-template-columns:5fr 7fr;gap:clamp(8px,1.4vh,14px);align-items:stretch}
.stats{display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:clamp(8px,1.4vh,12px)}
.stat{background:var(--navy);color:#fff;border-radius:20px;padding:0 clamp(16px,2vw,24px);display:flex;align-items:center;gap:20px}
.stat:nth-child(2){background:var(--blue)}
.stat:nth-child(3){background:var(--navy2)}
.stat:hover{transform:scale(1.02)}
.stat .n{font-size:clamp(38px,min(5vw,8.4vh),64px);font-weight:800;letter-spacing:-.05em;line-height:1;color:var(--steel);flex:none;min-width:2.4ch}
.stat:nth-child(2) .n{color:#fff}
.stat .n sup{font:400 12px "IBM Plex Mono",monospace;margin-left:4px;vertical-align:top;position:relative;top:.9em;color:#B3C1D6}
.stat p{color:#DCE4F0;font-size:clamp(13.5px,2vh,15.5px);line-height:1.4}
.cmp{background:var(--card);border:1px solid var(--line);border-radius:20px;overflow:hidden;display:grid;grid-template-rows:repeat(5,minmax(0,1fr))}
.cmp div{display:grid;grid-template-columns:minmax(120px,3fr) 8fr;gap:20px;align-items:center;padding:0 clamp(16px,2vw,26px);border-top:1px solid var(--line);transition:background .2s}
.cmp div:hover{background:var(--tint)}
.cmp div:first-child{border-top:0}
.cmp b{font-weight:700;font-size:clamp(14px,2vh,16px)}.cmp span{color:var(--mut);font-size:clamp(13px,1.95vh,15px);line-height:1.4}
.buy{flex:none;display:flex;gap:10px;flex-wrap:wrap;margin-top:clamp(8px,1.6vh,16px)}
.buy div{padding:7px 16px;border:1.5px solid var(--ink);border-radius:999px;font-weight:600;font-size:14px;color:var(--ink)}
.src{flex:none;margin-top:clamp(6px,1.2vh,12px);font-size:11.5px;color:var(--mut);line-height:1.5}

.ind{flex:1;min-height:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(2,minmax(0,1fr));gap:clamp(8px,1.6vh,14px)}
.ind div{grid-column:span 2;border-radius:22px;padding:clamp(16px,3vh,28px) 24px;background:var(--tint);transition:transform .25s;display:flex;flex-direction:column;justify-content:flex-end}
.ind div:hover{transform:translateY(-5px)}
.ind div:nth-child(2){background:var(--navy);color:#fff}
.ind div:nth-child(2) p{color:#C3CFDF}
.ind div:nth-child(3){background:var(--tint2)}
.ind div:nth-child(4){background:var(--blue);color:#fff}
.ind div:nth-child(4) p{color:#E2EAF5}
.ind div:nth-child(1),.ind div:nth-child(5){grid-column:span 3}
.ind h3{font-size:clamp(19px,3.2vh,25px);margin-bottom:8px}
.ind p{color:var(--mut);font-size:clamp(13.5px,2vh,15.5px);max-width:34em;line-height:1.45}
.note{flex:none;margin-top:clamp(8px,1.6vh,18px);color:var(--mut);font-size:14.5px}

.pan{flex:1;min-height:0;position:relative;overflow:hidden;border-radius:28px;padding:clamp(20px,4.5vh,56px) clamp(22px,4.5vw,64px);color:#fff;display:flex;flex-direction:column;justify-content:center;background:var(--navy2)}
.pan::before{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cpath d='M60 50v20M50 60h20' stroke='white' stroke-width='2' stroke-linecap='round' opacity='.22'/%3E%3C/svg%3E");animation:drift 30s linear infinite}
@keyframes drift{to{background-position:120px 120px}}
.pan>*{position:relative}
.pan .wm2{position:absolute;right:-3%;top:-6%;width:min(44%,440px);fill:#fff;opacity:.07}
.pan h1{font-size:clamp(30px,min(5vw,8.4vh),80px);max-width:16ch}
.pan .lead{color:#D3DDEC;margin:clamp(10px,2.4vh,24px) 0 clamp(14px,3vh,30px);font-size:clamp(15px,2.4vh,19px);max-width:44ch}
.pan .btn{align-self:flex-start;background:#fff;color:var(--navy);border-color:#fff}
.pan .btn:hover{background:var(--steel);border-color:var(--steel);color:#0B1A4A;box-shadow:0 12px 28px rgba(0,0,0,.25)}
.info{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:clamp(16px,4vh,48px);padding-top:clamp(10px,2vh,20px);border-top:1px solid #ffffff55;font-size:15px}
.info small{display:block;font:400 12px "IBM Plex Mono",monospace;color:#B3C7E3;margin-bottom:4px}

footer{flex:none}
footer .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:4px;padding-bottom:clamp(8px,1.6vh,16px);color:var(--mut);font:400 12.5px "IBM Plex Mono",monospace}
footer svg{width:24px;fill:currentColor;vertical-align:middle;margin-right:10px}
body.home footer .wrap{color:#A9B8CC}

/* ---------- short laptop screens ---------- */
@media (max-height:720px){
  .band .l{display:none}
  .f6 small{display:none}
  .info small{margin-bottom:2px}
  .nd{font-size:12px}
}

/* ---------- small screens / very short windows: let the page scroll ---------- */
@media (max-width:980px),(max-height:520px){
  body{height:auto;min-height:100dvh;overflow:auto}
  main{position:static}
  .page{position:static}
  .page>.wrap{height:auto}
  .top .wrap{flex-wrap:wrap}
  nav{order:3;width:100%;overflow-x:auto}
  .top .btn{display:none}
  .hero{grid-template-columns:1fr}
  .net{max-width:520px;height:380px}
  .quick{grid-template-columns:1fr 1fr}
  .ph,.why2{grid-template-columns:1fr}
  .svc{grid-template-columns:1fr 1fr;grid-template-rows:none}
  .card .why{display:block}
  .card .tile{width:44px;height:44px}
  .proc{grid-template-columns:1fr 1fr}
  .band{padding:24px}
  .f6{grid-template-columns:1fr 1fr 1fr;row-gap:30px}.f6::before{display:none}
  .stats,.cmp{grid-template-rows:none}
  .stat{padding:18px 20px}
  .cmp div{padding:16px 22px}
  .ind{grid-template-rows:none}
  .info{grid-template-columns:1fr 1fr}
  .end{display:flex}
  .pg{padding-bottom:40px}
}
@media (max-width:640px){
  .svc,.proc,.info{grid-template-columns:1fr}
  .ind{grid-template-columns:1fr}.ind div,.ind div:nth-child(1),.ind div:nth-child(5){grid-column:auto}
  .cmp div{grid-template-columns:1fr;gap:4px}
  .f6{grid-template-columns:1fr 1fr}
  .net{height:420px}
  .nd{width:72px;margin:-36px 0 0 -36px;font-size:12px}.nd .tile{width:60px;height:60px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* ====================== additions for the multi-page build ====================== */
main{overflow-x:clip}
.skip{position:absolute;left:12px;top:-64px;z-index:100;background:#fff;color:var(--navy);padding:10px 16px;border-radius:10px;font-weight:600;transition:top .2s}
.skip:focus{top:8px}
footer .fl{display:flex;gap:18px}
footer .fl a:hover{text-decoration:underline}

/* contact page: text on the left, enquiry form on the right */
.cpan{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(20px,3.5vw,56px);align-items:center;justify-content:normal}
.cpan h1{font-size:clamp(28px,min(3.8vw,6.6vh),64px);max-width:15ch}
.cpan .lead{margin:clamp(8px,1.8vh,18px) 0 clamp(12px,2.4vh,22px)}
.cpan .acts .btn{align-self:auto}
.pan .btn.out{background:transparent;color:#fff;border-color:#ffffff88}
.pan .btn.out:hover{background:#fff;color:var(--navy);border-color:#fff}
.cpan .info{grid-template-columns:1fr 1fr;gap:12px 24px;margin-top:clamp(14px,3vh,32px);padding-top:clamp(10px,1.8vh,18px)}
.cpan .info a:hover{text-decoration:underline}
.cf{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:20px;padding:clamp(14px,2.4vh,24px);display:grid;grid-template-columns:1fr 1fr;gap:clamp(8px,1.5vh,12px);min-height:0;max-height:100%;overflow:auto}
.cf label{display:flex;flex-direction:column;gap:5px;font:500 12px "IBM Plex Mono",monospace;color:var(--mut)}
.cf .full{grid-column:1/-1}
.cf input,.cf textarea{font:400 15px Archivo,system-ui,sans-serif;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%;transition:border-color .2s}
.cf input:hover,.cf textarea:hover{border-color:var(--blue)}
.cf textarea{resize:vertical;min-height:84px;max-height:220px}
.cf input:focus-visible,.cf textarea:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
.cf .fine{grid-column:1/-1;font-size:12.5px;color:var(--mut);line-height:1.45}
.cf .fine a{text-decoration:underline}
.pan .cf .btn{background:var(--blue);color:#fff;border-color:var(--blue);justify-self:start;cursor:pointer;font-family:inherit}
.pan .cf .btn:hover{background:var(--blue2);border-color:var(--blue2);color:#fff;box-shadow:0 12px 28px rgba(42,92,158,.4)}
@media (max-height:720px){.cf textarea{min-height:64px}.cpan .lead{font-size:15px;margin:8px 0 14px}.cpan h1{font-size:clamp(28px,min(3.4vw,6vh),64px)}}

/* thank-you / 404 */
.tpan{align-items:flex-start}
.tpan h1{font-size:clamp(30px,min(4.6vw,8vh),68px);max-width:18ch}

/* legal pages scroll normally */
body.doc{height:auto;min-height:100dvh;overflow:auto}
body.doc main{position:static}
body.doc .page{position:static}
body.doc .page>.wrap{height:auto}
body.doc .ph{align-items:end}
.prose{max-width:72ch;padding:clamp(10px,2vh,20px) 0 48px;color:var(--ink);line-height:1.7}
.prose h2{font-size:clamp(19px,2.4vw,24px);margin:32px 0 8px}
.prose p,.prose ul{margin:0 0 12px;color:var(--mut)}
.prose ul{padding-left:22px}
.prose li{margin-bottom:5px}
.prose a{color:var(--acc);text-decoration:underline}
.prose strong{color:var(--ink)}

/* cookie notice (only shown when Google Analytics is switched on in assets/analytics.js) */
.consent{position:fixed;left:16px;right:16px;bottom:16px;z-index:50;max-width:560px;margin:0 auto;background:var(--navy);color:#fff;border:1px solid #ffffff33;border-radius:16px;padding:16px 18px;box-shadow:0 18px 40px rgba(0,0,0,.35);font-size:14px;line-height:1.5}
.consent p{margin:0 0 12px;color:#DCE4F0}
.consent a{text-decoration:underline}
.consent .acts{gap:8px}
.consent button{font:600 14px Archivo,system-ui,sans-serif;padding:9px 16px;border-radius:10px;border:1px solid #ffffff66;background:transparent;color:#fff;cursor:pointer}
.consent button.ok{background:#fff;color:var(--navy);border-color:#fff}

@media (max-width:980px),(max-height:520px){
  .cpan{grid-template-columns:1fr;align-items:start}
  .cf{max-height:none;overflow:visible}
  body.doc .ph{grid-template-columns:1fr}
}
@media (max-width:640px){
  .cf,.cpan .info{grid-template-columns:1fr}
}
