@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500&family=IBM+Plex+Sans:wght@300;400;500;600;700&display=swap');

:root{
  --bg:#07090D; --s1:#0C0F15; --s2:#111820; --s3:#161C26;
  --border:rgba(255,255,255,0.07); --border2:rgba(255,255,255,0.12);
  --teal:#1FCFB4; --teal2:#46E3CB; --teald:#0E8C7A;
  --text:#E2EAF0; --mid:#7A8EA0; --muted:#3A4A5A;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:'IBM Plex Sans',sans-serif;
  line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
.mono{font-family:'IBM Plex Mono',monospace}
code{font-family:'IBM Plex Mono',monospace;font-size:.88em;background:rgba(255,255,255,.06);padding:1px 6px;border-radius:4px}

/* ── Header ── */
header{position:sticky;top:0;z-index:50;height:56px;display:flex;align-items:center;
  gap:18px;padding:0 20px;background:rgba(7,9,13,.82);backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border)}
.logo{display:flex;align-items:center;gap:9px;font-family:'IBM Plex Mono',monospace;
  font-size:15px;font-weight:600;letter-spacing:.3px}
.logo .nm{color:var(--text)}
nav{display:flex;gap:20px;margin-left:14px}
nav a{font-size:13px;color:var(--mid);transition:.2s}
nav a:hover{color:var(--text)}
.spacer{flex:1}
.langsw{display:flex;gap:4px}
.lang-btn{background:none;border:1px solid var(--border);border-radius:5px;padding:4px 9px;
  color:var(--mid);font-size:12px;font-family:'IBM Plex Mono',monospace;cursor:pointer;transition:.2s}
.lang-btn.active{border-color:var(--teal);color:var(--teal)}
.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 18px;border-radius:7px;
  font-size:14px;font-weight:600;cursor:pointer;transition:.2s;white-space:nowrap}
.btn.primary{background:var(--teal);color:var(--bg)}
.btn.primary:hover{opacity:.88}
.btn.ghost{border:1px solid var(--border2);color:var(--text)}
.btn.ghost:hover{border-color:var(--teal);color:var(--teal)}
@media(max-width:760px){nav{display:none}}

.wrap{max-width:1080px;margin:0 auto;padding:0 22px}
section{padding:64px 0}
.kicker{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:2px;
  text-transform:uppercase;color:var(--teal);margin-bottom:12px}
h2{font-size:clamp(26px,4.4vw,40px);font-weight:700;letter-spacing:-1px;line-height:1.08}
h3{font-size:17px;font-weight:600}
p{color:#C2CEDA}
.sub{color:var(--mid);max-width:640px;margin-top:12px;font-size:16px}

/* monochrome line icons */
.ic-svg{width:26px;height:26px;color:var(--teal);flex:0 0 auto}
.ic-svg.lg{width:30px;height:30px}

/* ── Hero ── */
.hero{position:relative;padding:88px 0 60px;text-align:center;overflow:hidden;
  border-bottom:1px solid var(--border)}
.hero-bg{position:absolute;inset:0;z-index:0;opacity:.6;
  background:radial-gradient(720px 400px at 50% -5%,rgba(31,207,180,.18),transparent 60%)}
.hero .wrap{position:relative;z-index:1}
.hero .mark{width:110px;height:110px;margin:0 auto 30px;position:relative;display:grid;place-items:center}
.hero .ring{position:absolute;inset:0;border-radius:26px;border:1px solid rgba(31,207,180,.3);
  animation:pulse 3.4s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.45;transform:scale(.9)}50%{opacity:1;transform:scale(1)}}
.hero h1{font-size:clamp(40px,8vw,76px);font-weight:700;letter-spacing:-2px;line-height:1}
.hero h1 .t{color:var(--teal)}
.hero .tagline{font-size:clamp(17px,2.6vw,21px);color:var(--text);margin-top:18px;font-weight:500}
.hero .lead{color:var(--mid);max-width:620px;margin:16px auto 0;font-size:16px}
.cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:34px}
.btn.lg{padding:13px 24px;font-size:15px}

/* ── Stats strip ── */
.stats{display:flex;flex-wrap:wrap;justify-content:center;gap:40px;margin-top:54px;
  padding-top:34px;border-top:1px solid var(--border)}
.stat{text-align:center}
.stat .v{font-family:'IBM Plex Mono',monospace;font-size:30px;font-weight:500;color:var(--teal);line-height:1}
.stat .l{font-size:12px;color:var(--mid);text-transform:uppercase;letter-spacing:1px;margin-top:7px}

/* ── Flow diagram ── */
.diagram-sec{background:
  radial-gradient(600px 300px at 30% 0,rgba(31,207,180,.07),transparent 70%),var(--s1);
  border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.dgm-frame{margin-top:30px;border:1px solid var(--border2);border-radius:18px;
  background:linear-gradient(180deg,#0a0e15,#080b11);padding:14px;overflow:hidden}
.dgm{width:100%;height:auto;display:block}
.dgm-box{fill:#0E141C;stroke:rgba(255,255,255,.12)}
.dgm-box.in{stroke:rgba(31,207,180,.28)}
.dgm-core{fill:#0B2620;stroke:var(--teal);stroke-width:1.6}
.dgm-flow{fill:none;stroke:var(--teal);stroke-width:2.4;stroke-linecap:round;
  stroke-dasharray:0.5 11;animation:dgmflow 1.05s linear infinite}
.dgm-flow.slow{animation-duration:1.7s}
.dgm-flow.r{animation-direction:reverse;opacity:.55}
@keyframes dgmflow{to{stroke-dashoffset:-23}}
.dgm-base{fill:none;stroke:rgba(31,207,180,.16);stroke-width:1.2}
.dgm .lbl{fill:#E6EDF3;font-size:14px;font-weight:600;font-family:'IBM Plex Sans',sans-serif}
.dgm .sub{fill:#7A8EA0;font-size:10.5px;font-family:'IBM Plex Mono',monospace}
.dgm .cap{fill:var(--teal);font-size:11px;font-family:'IBM Plex Mono',monospace;letter-spacing:1.5px}
.dgm .flbl{fill:#9FB0C0;font-size:10px;font-family:'IBM Plex Mono',monospace}
.dgm .fchip{fill:#0c2120;stroke:#1FCFB4;stroke-opacity:.4}
.dgm .fchipt{fill:#1FCFB4;font-family:'IBM Plex Mono',monospace;font-size:9.5px;font-weight:500}
.dgm-flow.galu{stroke:#E8A43C}
.dgm-base.galu{stroke:rgba(232,164,60,.18)}
.dgm .fchip.galu{fill:#241a08;stroke:#E8A43C;stroke-opacity:.55}
.dgm .fchipt.galu{fill:#E8A43C}
.dgm .corepulse{animation:corep 3.4s ease-in-out infinite}
@keyframes corep{0%,100%{opacity:.55}50%{opacity:1}}
.dgm .en{display:none}
body.show-en .dgm .pl{display:none}
body.show-en .dgm .en{display:inline}
/* ── Map snippet animation (in flow diagram) ── */
.cov{animation:cov 3.4s ease-out infinite}
.cov2{animation:cov 3.4s ease-out infinite;animation-delay:1.7s}
@keyframes cov{0%{r:12px;opacity:.5}100%{r:74px;opacity:0}}
.evring{animation:evr 2.6s ease-out infinite}
@keyframes evr{0%{r:5px;opacity:.85}100%{r:36px;opacity:0}}

/* ── Cards grid (icons) ── */
.pillars{display:grid;grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:16px;margin-top:34px}
.pillar{background:linear-gradient(180deg,var(--s3),var(--s1));border:1px solid var(--border2);
  border-radius:16px;padding:24px;position:relative;overflow:hidden;transition:.2s}
.pillar:hover{border-color:rgba(31,207,180,.4);transform:translateY(-2px)}
.pillar::before{content:"";position:absolute;inset:0 0 auto 0;height:2px;
  background:linear-gradient(90deg,transparent,var(--teal),transparent);opacity:.55}
.pillar .ico{width:46px;height:46px;border-radius:11px;display:grid;place-items:center;
  background:rgba(31,207,180,.10);border:1px solid rgba(31,207,180,.22)}
.pillar h3{margin:14px 0 6px;color:var(--text)}
.pillar p{font-size:14px;color:var(--mid);line-height:1.55}

/* ── Capabilities ── */
.caps{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-top:34px}
.cap{display:flex;gap:16px;background:var(--s1);border:1px solid var(--border);
  border-radius:14px;padding:20px;transition:.2s}
.cap:hover{border-color:rgba(31,207,180,.34)}
.cap .ico{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;
  background:rgba(31,207,180,.09);border:1px solid rgba(31,207,180,.2)}
.cap h3{font-size:15.5px;color:var(--text)}
.cap .fl{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--teal);margin:4px 0 6px}
.cap p{font-size:13.5px;color:var(--mid);line-height:1.5}

/* ── How ── */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-top:34px}
.stepn{background:var(--s1);border:1px solid var(--border);border-radius:14px;padding:22px}
.stepn .n{font-family:'IBM Plex Mono',monospace;color:var(--teal);font-size:13px;
  border:1px solid var(--teal);width:28px;height:28px;border-radius:8px;display:grid;place-items:center;margin-bottom:12px}
.stepn h3{font-size:16px;color:var(--text)}
.stepn p{font-size:13.5px;color:var(--mid);margin-top:5px}

/* ── Split / device ── */
.split{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:center}
@media(max-width:760px){.split{grid-template-columns:1fr}}
.device{aspect-ratio:4/3;border-radius:18px;border:1px solid var(--border2);
  background:radial-gradient(420px 280px at 50% 35%,rgba(31,207,180,.12),var(--s1));
  display:grid;place-items:center;position:relative;overflow:hidden}
.chip{width:120px;height:88px;border-radius:12px;background:#0a0e16;border:1px solid var(--border2);
  display:grid;place-items:center;box-shadow:0 0 60px rgba(31,207,180,.2)}
.feat-list{margin-top:18px;display:flex;flex-direction:column;gap:12px}
.feat{display:flex;gap:12px;align-items:flex-start}
.feat .d{width:8px;height:8px;border-radius:50%;background:var(--teal);margin-top:7px;flex-shrink:0}
.feat .t{font-size:14.5px;color:#C2CEDA}.feat .t b{color:var(--text)}.feat .t span{color:var(--mid)}

/* ── Advanced grid ── */
.adv{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:34px}
.advc{background:var(--s1);border:1px solid var(--border);border-radius:12px;padding:18px}
.advc h3{font-size:15px;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.advc .tag{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:1px;text-transform:uppercase;
  color:var(--bg);background:var(--teal);padding:2px 6px;border-radius:4px}
.advc p{font-size:13.5px;color:var(--mid);margin-top:7px;line-height:1.55}

/* ── CTA band ── */
.band{text-align:center;background:linear-gradient(180deg,var(--s1),var(--bg));
  border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.band h2{margin-bottom:8px}
.band .sub{margin-left:auto;margin-right:auto}

footer{padding:40px 0;color:var(--muted);font-size:13px}
.foot{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}
.foot a{color:var(--mid)}.foot a:hover{color:var(--text)}

.en{display:none}
body.show-en .pl{display:none}
body.show-en .en{display:inline}
body.show-en h1.en,body.show-en h2.en,body.show-en h3.en,body.show-en p.en,body.show-en .tagline.en{display:block}