/* Solvegia · Boréale design system — shared by every page of the site. */
@font-face{font-family:Geist;font-weight:300 700;font-display:swap;src:url(geist.woff2) format("woff2")}
@font-face{font-family:"Geist Mono";font-weight:400 500;font-display:swap;src:url(geist-mono.woff2) format("woff2")}
@view-transition{navigation:auto}
:root{
  color-scheme:dark;
  --void:#02050c;--ink:#f4f2fb;--soft:#cfd1e4;--mute:#b1b6cc;--dim:#8a91ad;--line:rgba(205,212,255,.12);--line2:rgba(205,212,255,.22);
  --sans:Geist,ui-sans-serif,system-ui,sans-serif;--mono:"Geist Mono",ui-monospace,monospace;
  --grad:linear-gradient(100deg,#fff4fb 0%,#e8ccff 12%,#b89eff 27%,#86a6ff 42%,#6fdbe8 57%,#a3f4d3 70%,#d7c2ff 85%,#fff4fb 100%);
  --grad-soft:linear-gradient(120deg,rgba(184,158,255,.9),rgba(111,219,232,.9));
  --ease:cubic-bezier(.16,1,.3,1);--pad:clamp(20px,5vw,88px);--max:1360px;
}
*,*::before,*::after{box-sizing:border-box}
html{background:var(--void);-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--void);color:var(--ink);font:400 16px/1.62 var(--sans);font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
h1,h2,h3,h4,p,figure,ul,ol,dl,dd{margin:0;padding:0}
ul,ol{list-style:none}
a{color:inherit;text-decoration:none}
img,svg,canvas{display:block}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:#8e79ff;color:#fff}
:focus-visible{outline:2px solid #b89eff;outline-offset:5px;border-radius:6px}
.skip{position:fixed;left:16px;top:-80px;z-index:100;padding:10px 16px;border-radius:10px;background:#fff;color:#000}
.skip:focus{top:16px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Signature gradient ---------- */
.g,em{font-style:normal;background:var(--grad);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:flow 14s linear infinite;filter:drop-shadow(0 0 28px rgba(150,140,255,.22))}
/* Accent words keep the flowing gradient, set upright in the same family. */
em{font-weight:inherit;letter-spacing:inherit}
.serif{font-weight:400;color:var(--soft)}
@keyframes flow{to{background-position:-200% 0}}

/* ---------- Backgrounds ---------- */
#gl{position:fixed;left:0;top:0;width:100%;height:100vh;height:100lvh;z-index:0}
#const{position:fixed;left:0;top:0;width:100%;height:100vh;height:100lvh;z-index:1;pointer-events:none}
body.nogl #gl,body.nogl #const{display:none}
body.nogl{background:radial-gradient(ellipse 90% 45% at 50% 18%,rgba(60,230,170,.24),transparent 60%),radial-gradient(ellipse 60% 40% at 72% 30%,rgba(180,110,255,.2),transparent 60%),var(--void)}
.veil{position:fixed;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(2,5,12,.35),rgba(2,5,12,.1) 30%,rgba(2,5,12,.55))}
.grain{position:fixed;inset:-50%;z-index:2;pointer-events:none;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain 1.2s steps(6) infinite}
@keyframes grain{0%,100%{transform:none}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-4%)}75%{transform:translate(-2%,3%)}}
.cursor{position:fixed;left:0;top:0;width:380px;height:380px;margin:-190px 0 0 -190px;border-radius:50%;z-index:2;pointer-events:none;background:radial-gradient(circle,rgba(140,220,230,.08),rgba(160,130,255,.05) 40%,transparent 64%);opacity:0;transition:opacity .6s}
body.has-pointer .cursor{opacity:1}
.loader{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:var(--void);transition:opacity 1.1s var(--ease),visibility 1.1s}
.loader img{width:58px;height:58px;animation:spin 2.4s linear infinite;filter:drop-shadow(0 0 20px rgba(140,220,230,.5))}
body:not(.is-loading) .loader{opacity:0;visibility:hidden}
@keyframes spin{to{transform:rotate(-1turn)}}

/* ---------- Header ---------- */
.top{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px var(--pad);transition:padding .5s var(--ease),background .5s,backdrop-filter .5s}
.top.is-compact{padding-top:12px;padding-bottom:12px;background:linear-gradient(180deg,rgba(2,5,12,.82),rgba(2,5,12,.35));backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:11px;font-weight:600;font-size:21px;letter-spacing:-.045em}
.brand img{width:34px;height:auto;filter:drop-shadow(0 0 12px rgba(140,220,230,.45));transition:transform 1.2s var(--ease)}
.brand:hover img{transform:scale(1.08)}
.brand b{font-weight:600;background:var(--grad);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:flow 14s linear infinite}
.menu{display:flex;align-items:center;gap:4px;padding:5px;border-radius:99px;border:1px solid var(--line);background:rgba(10,14,28,.45);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.menu a{position:relative;padding:8px 15px;border-radius:99px;font-size:14px;color:var(--soft);transition:color .3s,background .3s}
.menu a:hover{color:#fff;background:rgba(255,255,255,.05)}
.menu a[aria-current="page"]{color:#fff;background:rgba(255,255,255,.08)}
.menu a[aria-current="page"]::after{content:"";position:absolute;left:50%;bottom:3px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--grad-soft)}
.top-cta{display:inline-flex;align-items:center;gap:10px;padding:10px 18px;border-radius:99px;font-size:14px;font-weight:500;color:#06101a;background:var(--grad);background-size:200% 100%;animation:flow 14s linear infinite;box-shadow:0 8px 34px -12px rgba(130,200,240,.7)}
.burger{display:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line2);position:relative}
.burger span,.burger span::before{position:absolute;left:14px;width:16px;height:1.5px;background:#fff;border-radius:2px;transition:transform .4s var(--ease)}
.burger span{top:21px}.burger span::before{content:"";left:0;top:-5px}
body.menu-open .burger span{transform:rotate(45deg)}body.menu-open .burger span::before{transform:translateY(5px) rotate(-90deg)}
.sheet{position:fixed;inset:0;z-index:45;display:flex;flex-direction:column;justify-content:center;gap:6px;padding:90px var(--pad) 40px;background:rgba(2,5,12,.94);backdrop-filter:blur(18px);opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s}
.sheet a{font-weight:560;letter-spacing:-.04em;font-size:clamp(40px,11vw,64px);line-height:1.1;transform:translateY(20px);opacity:0;transition:transform .7s var(--ease),opacity .7s var(--ease)}
.sheet a[aria-current="page"]{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
body.menu-open .sheet{opacity:1;visibility:visible}
body.menu-open .sheet a{transform:none;opacity:1}
body.menu-open .sheet a:nth-child(2){transition-delay:.05s}body.menu-open .sheet a:nth-child(3){transition-delay:.1s}body.menu-open .sheet a:nth-child(4){transition-delay:.15s}body.menu-open .sheet a:nth-child(5){transition-delay:.2s}body.menu-open .sheet a:nth-child(6){transition-delay:.25s}

/* ---------- Type & primitives ---------- */
main{position:relative;z-index:3}
.wrap{width:min(var(--max),100%);margin:0 auto;padding:0 var(--pad)}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font:500 11.5px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#bfc6e6}
.eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--grad-soft);box-shadow:0 0 12px rgba(140,220,230,.8)}
.display{font-weight:560;font-size:clamp(58px,10.5vw,188px);line-height:.9;letter-spacing:-.06em}

.h2{font-weight:500;font-size:clamp(36px,5vw,84px);line-height:1;letter-spacing:-.05em}
.h3{font-weight:560;font-size:clamp(22px,1.9vw,28px);line-height:1.15;letter-spacing:-.03em}
.lede{max-width:620px;font-size:clamp(16px,1.3vw,19.5px);line-height:1.6;color:var(--soft)}
.muted{color:var(--mute)}
.mono{font-family:var(--mono);font-size:12.5px;letter-spacing:.04em}
.btn{display:inline-flex;align-items:center;gap:18px;padding:8px 8px 8px 24px;border-radius:99px;font-size:14.5px;font-weight:500;color:#06101a;background:var(--grad);background-size:200% 100%;animation:flow 14s linear infinite;box-shadow:0 14px 50px -16px rgba(130,200,240,.75);transition:transform .5s var(--ease),box-shadow .5s}
.btn b{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#040a14;color:#fff;font-weight:400;transition:transform .5s var(--ease)}
.btn:hover{transform:translateY(-2px);box-shadow:0 18px 70px -14px rgba(160,140,255,.8)}
.btn:hover b{transform:rotate(-45deg)}
.ghost{display:inline-flex;align-items:center;gap:10px;padding:13px 20px;border-radius:99px;border:1px solid var(--line2);font-size:14.5px;color:var(--soft);background:rgba(10,14,28,.35);backdrop-filter:blur(10px);transition:all .4s var(--ease)}
.ghost:hover{color:#fff;border-color:rgba(184,158,255,.55)}
.glass{position:relative;border-radius:26px;background:linear-gradient(160deg,rgba(22,26,52,.62),rgba(8,10,24,.52));backdrop-filter:blur(22px) saturate(140%);-webkit-backdrop-filter:blur(22px) saturate(140%);box-shadow:0 40px 120px -50px rgba(0,0,0,.9)}
.glass::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(140deg,var(--c1,rgba(184,158,255,.8)),transparent 38%,transparent 62%,var(--c2,rgba(111,219,232,.8)));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.65;pointer-events:none}
.chip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:99px;border:1px solid var(--line);background:rgba(255,255,255,.035);font-size:12.5px;color:var(--soft)}
.plogo{display:inline-block;flex:none;-webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat;background:linear-gradient(135deg,var(--c1),var(--c2))}
.split .w{display:inline-block;white-space:nowrap}
.split .ch{display:inline-block;opacity:0;filter:blur(16px);transform:translateY(.3em);transition:opacity 1.2s var(--ease),filter 1.2s var(--ease),transform 1.2s var(--ease);transition-delay:calc(var(--i)*34ms + .2s)}
body.ready .split .ch{opacity:1;filter:none;transform:none}
.reveal{opacity:0;transform:translateY(40px);filter:blur(10px);transition:opacity 1.2s var(--ease),transform 1.2s var(--ease),filter 1.2s var(--ease)}
.reveal.in{opacity:1;transform:none;filter:none}
.d1{transition-delay:.08s}.d2{transition-delay:.16s}.d3{transition-delay:.24s}.d4{transition-delay:.32s}

/* ---------- Inner page layout ---------- */
.page-hero{min-height:82svh;display:flex;flex-direction:column;justify-content:flex-end;gap:26px;padding-top:150px;padding-bottom:9vh}
.page-hero .display{font-size:clamp(54px,9.2vw,160px)}
.sec{padding-top:13vh;padding-bottom:13vh}
.sec-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr);gap:40px;align-items:end;margin-bottom:56px}
.sec-head .lede{justify-self:end}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.card{padding:30px;display:flex;flex-direction:column;gap:14px}
.card .num{font:500 12px var(--mono);letter-spacing:.12em;color:var(--mute)}
.card p{color:var(--mute);font-size:15px}
.big-num{font-weight:600;letter-spacing:-.05em;font-size:60px;line-height:1;background:var(--grad);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:flow 14s linear infinite}
.rule{height:1px;background:linear-gradient(90deg,transparent,var(--line2),transparent);margin:0}
.cta-band{margin:4vh 0 10vh;padding:clamp(34px,6vw,80px);display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap}
.cta-band .h2{max-width:760px}

/* ---------- Footer ---------- */
.foot{position:relative;z-index:3;margin-top:6vh;border-top:1px solid var(--line);background:linear-gradient(180deg,rgba(2,5,12,.4),rgba(2,5,12,.94) 40%)}
.foot-top{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:40px;padding:70px 0 50px}
.foot-mark{display:flex;flex-direction:column;gap:18px}
.foot-word{font-weight:600;font-size:clamp(46px,6vw,92px);letter-spacing:-.06em;line-height:.9}
.foot h4{font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin-bottom:16px}
.foot li{margin-bottom:9px;font-size:14px;color:var(--soft)}
.foot li a:hover{color:#fff}
.foot-legal{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:22px 0 30px;border-top:1px solid var(--line);font:400 12px var(--mono);letter-spacing:.03em;color:var(--dim)}

@media (max-width:1180px){.top-cta{display:none}}
@media (max-width:1080px){.grid4{grid-template-columns:repeat(2,1fr)}.foot-top{grid-template-columns:1fr 1fr}}
@media (max-width:900px){
  .menu,.top-cta{display:none}.burger{display:block}
  .sec-head{grid-template-columns:1fr}.sec-head .lede{justify-self:start}
  .grid3,.grid2{grid-template-columns:1fr}
  .cursor{display:none}
}
@media (max-width:560px){.grid4,.foot-top{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.split .ch,.reveal{filter:none}}

/* ---------- Scene beats (home systems and product pages) ---------- */
.steps{display:flex;gap:14px;margin:6px 0 26px;max-width:460px}
.steps li{position:relative;flex:1;min-width:0;padding-top:12px;border-top:1px solid var(--line);font-size:13px;line-height:1.45;color:var(--mute);transition:color .4s}
.steps li span{display:block;font:500 11px var(--mono);letter-spacing:.08em;color:var(--dim);margin-bottom:4px;transition:color .4s}
.steps li::before{content:"";position:absolute;left:0;top:-1px;width:100%;height:1px;background:linear-gradient(90deg,var(--c1,#b89eff),var(--c2,#6fdbe8));transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.steps li.is-current,.steps li.is-current span{color:var(--c1,#fff)}
.steps li.is-current::before,.steps li.is-done::before{transform:scaleX(1)}
canvas.art{display:block;width:100%;aspect-ratio:600/560}

/* ---------- Readability over the sky ----------
   Text sitting directly on the galaxy gets a soft dark halo, and text blocks a local
   veil, so white text never lands on a bright star cluster without separation.
   Gradient text keeps no text-shadow (it would show through the clipped glyphs). */
body{text-shadow:0 0 2px rgba(2,5,12,.6),0 1px 16px rgba(2,5,12,.8)}
.g,em,.tint-text,.prod-line,.svc-line,.brand b,.btn,.top-cta,.n-stats strong,.glass,.glass *,.p-demo,.p-demo *,.code,.code *,.menu,.sheet,.chip,.split .ch em{text-shadow:none}
.hero-copy,.intro-inner,.sovereign>div,.page-hero,.p-hero-copy,.story-copy,.sec-head>div:first-child,.sec-head>.lede,.thesis,.p-facts,.faq,.trust{position:relative;isolation:isolate}
.hero-copy::after,.intro-inner::after,.sovereign>div::after,.page-hero::after,.p-hero-copy::after,.story-copy::after,.sec-head>div:first-child::after,.sec-head>.lede::after,.thesis::after,.p-facts::after{content:"";position:absolute;inset:-14% -12%;z-index:-1;pointer-events:none;background:radial-gradient(closest-side,rgba(2,5,12,.66),rgba(2,5,12,.4) 55%,rgba(2,5,12,0))}
.page-hero::after{inset:30% -10% -6% -12%}
