/* =============================================================
   NxtLevelCode homepage  |  OBSIDIAN GLASS v5
   Matte charcoal base + liquid-glass surfaces, lit by ONE accent.
   Palette is deliberately two-note: cyan #1ECAD3 against navy
   #2F6F9A. An earlier revision introduced violet and magenta; it
   broke the brand scheme and is removed everywhere. Static hex only
   - nothing inherits from the Elementor global palette.
   Front page only. Namespaced .nxt / body.nxt-home.
   ============================================================= */

@font-face{font-family:'Cabinet Grotesk';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/cabinet-grotesk-500.woff2') format('woff2')}
@font-face{font-family:'Cabinet Grotesk';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/cabinet-grotesk-700.woff2') format('woff2')}
@font-face{font-family:'Cabinet Grotesk';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/cabinet-grotesk-800.woff2') format('woff2')}
@font-face{font-family:'SatoshiW';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/satoshi-400.woff2') format('woff2')}
@font-face{font-family:'SatoshiW';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/satoshi-500.woff2') format('woff2')}
@font-face{font-family:'SatoshiW';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/satoshi-700.woff2') format('woff2')}

body.nxt-home{
  --ink:#FFFFFF; --ink2:#DFE6EC; --mut:#9DAAB6; --dim:#8794A0;
  --acc:#1ECAD3; --acc2:#6FE6EE; --nav:#2F6F9A; --deep:#0F2A44;
  --dsp:'Cabinet Grotesk','SatoshiW',system-ui,sans-serif;
  --ui:'SatoshiW',system-ui,sans-serif;
  --fs-hero:clamp(46px,10.6vw,176px);
  --fs-h2:clamp(34px,6vw,96px);
  --fs-h3:clamp(20px,1.9vw,29px);
  --fs-lead:clamp(16px,1.3vw,20px);
  --fs-body:16px; --fs-sm:14.5px; --fs-mono:11px;
  --pad:clamp(80px,10vw,156px);
  --gut:clamp(18px,4vw,54px);
  --maxw:1520px;
  --r:16px; --r-lg:24px; --pill:999px;
  --eo:cubic-bezier(.16,1,.3,1); --ex:cubic-bezier(.19,1,.22,1);
  /* liquid glass */
  --g-fill:linear-gradient(158deg,rgba(255,255,255,.115),rgba(255,255,255,.034) 44%,rgba(255,255,255,.075));
  --g-blur:blur(30px) saturate(200%);
  --g-edge:rgba(255,255,255,.15);
  --g-lip:inset 0 1px 0 rgba(255,255,255,.26),inset 0 -1px 0 rgba(255,255,255,.06),inset 0 0 40px rgba(255,255,255,.03);
  --g-cast:0 24px 62px rgba(0,0,0,.52);
  /* hover: thicker glass, a whisper of accent in the fill, one soft halo */
  --g-fill-h:linear-gradient(158deg,rgba(255,255,255,.155),rgba(30,202,211,.055) 46%,rgba(255,255,255,.1));
  --g-blur-h:blur(34px) saturate(215%);
  --g-lip-h:inset 0 1px 0 rgba(255,255,255,.34),inset 0 -1px 0 rgba(255,255,255,.07),inset 0 0 54px rgba(30,202,211,.06);
  --g-glow:0 0 0 1px rgba(30,202,211,.28),0 0 46px rgba(30,202,211,.2),0 26px 70px rgba(0,0,0,.55);
  /* one accent line, used for every meter, rule and progress bar */
  --acc-line:linear-gradient(90deg,#1ECAD3,#6FE6EE);
}

/* Matte base. Pure black reads as a hole in the screen; a lifted
   charcoal plus grain reads as a surface with a finish on it. */
html{background-color:#0A0C0F}
body.nxt-home{background-color:#0A0C0F;color:#FFFFFF;font-family:var(--ui);-webkit-font-smoothing:antialiased}
body.nxt-home .site-main,body.nxt-home #content{background:transparent}
html.nxt-smooth.lenis-stopped{overflow:hidden}

/* the matte finish itself: fine grain, always on */
body.nxt-home::after{content:"";position:fixed;inset:-50%;width:200%;height:200%;z-index:9998;pointer-events:none;opacity:.07;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:150px 150px;animation:nxtgr .62s steps(1) infinite}
@keyframes nxtgr{0%,100%{transform:translate(0,0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(3%,1%)}}

/* Ambient field. Cyan and navy only, held well back - it is depth
   behind the glass, not a light show. --nxtp is scroll progress 0..1
   from home.js, so it drifts slowly as the page moves. */
body.nxt-home::before{content:"";position:fixed;inset:-12%;z-index:0;pointer-events:none;
  background:
    radial-gradient(38% 34% at calc(14% + var(--nxtp,0) * 32%) 16%,rgba(30,202,211,.13),transparent 66%),
    radial-gradient(40% 36% at calc(88% - var(--nxtp,0) * 34%) 66%,rgba(47,111,154,.22),transparent 68%),
    radial-gradient(56% 44% at 50% calc(120% - var(--nxtp,0) * 74%),rgba(15,42,68,.5),transparent 70%),
    radial-gradient(130% 88% at 50% -6%,rgba(255,255,255,.03),transparent 58%);
  filter:blur(26px)}

/* The 3D world: atmosphere, not a subject. Held down so it never
   competes with type, with a soft centre relief where copy sits. */
#nxt-world{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity 1.8s var(--eo);
  -webkit-mask-image:radial-gradient(ellipse 50% 44% at 50% 50%,rgba(0,0,0,.56) 0%,rgba(0,0,0,.86) 54%,#000 80%);
  mask-image:radial-gradient(ellipse 50% 44% at 50% 50%,rgba(0,0,0,.56) 0%,rgba(0,0,0,.86) 54%,#000 80%)}
#nxt-world.is-live{opacity:.78}
#nxt-world canvas{display:block;width:100%;height:100%}
body.nxt-home .site-main{position:relative;z-index:1}


.nxt-prog{position:fixed;top:0;left:0;right:0;height:2px;z-index:700;pointer-events:none}
.nxt-prog i{display:block;height:100%;background:var(--acc-line);box-shadow:0 0 12px rgba(30,202,211,.7);transform:scaleX(0);transform-origin:left}

.nxt-cur{position:fixed;top:0;left:0;width:8px;height:8px;border-radius:50%;background:#1ECAD3;box-shadow:0 0 12px rgba(30,202,211,.8);pointer-events:none;z-index:9999;transform:translate3d(-50%,-50%,0);transition:width .35s var(--eo),height .35s var(--eo),border-color .35s var(--eo),background-color .35s var(--eo)}
.nxt-cur--ring{width:34px;height:34px;background:transparent;box-shadow:none;border:1px solid rgba(255,255,255,.32)}
.nxt-cur.is-hot{width:58px;height:58px;border-color:#1ECAD3;background:rgba(30,202,211,.1)}
.nxt-cur--dot.is-hot{width:0;height:0}
@media (hover:none),(pointer:coarse){.nxt-cur{display:none}}

/* ========================== 00 HEADER ==========================
   The homepage renders its OWN header from the loader; the shared
   Elementor header is hidden on this view only, so every other page
   keeps its normal header untouched. Built as an instrument bar:
   a live chapter readout on the left, a sliding glass pill under the
   nav, and a condensing shell that thickens as the page scrolls. */

body.nxt-home .nxt-logo-onlight{display:none !important}

.nxt-hd{position:fixed;top:0;left:0;right:0;z-index:600;border-bottom:1px solid transparent;
  transition:transform .65s var(--eo),background .5s var(--eo),border-color .5s var(--eo),box-shadow .5s var(--eo),
             -webkit-backdrop-filter .5s var(--eo),backdrop-filter .5s var(--eo)}
.nxt-js .nxt-hd{transform:translate3d(0,-102%,0)}
.nxt-js .nxt-hd.is-ready{transform:translate3d(0,0,0)}
/* condensed state: the bar thickens into glass once you leave the hero */
.nxt-hd.is-solid{background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.03));
  -webkit-backdrop-filter:blur(30px) saturate(190%) brightness(.68);
  backdrop-filter:blur(30px) saturate(190%) brightness(.68);
  border-bottom-color:rgba(255,255,255,.1);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 18px 44px rgba(0,0,0,.42)}
/* direction-aware: gets out of the way going down, returns going up */
.nxt-js .nxt-hd.is-ready.is-away{transform:translate3d(0,-102%,0)}

.nxt-hd__in{--hd-h:88px;width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gut);
  height:var(--hd-h);display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;
  gap:clamp(16px,2.2vw,42px);transition:height .5s var(--eo)}
.nxt-hd.is-solid .nxt-hd__in{--hd-h:66px}

.nxt-hd__logo{display:flex;align-items:center;flex:0 0 auto;transition:transform .5s var(--eo)}
/* needs body.nxt-home to out-rank the generic `.nxt img{height:auto}` rule,
   which is declared later in this file and would otherwise win the tie */
body.nxt-home .nxt-hd__logo img{height:40px;width:auto;max-width:none;display:block;transition:height .5s var(--eo)}
body.nxt-home .nxt-hd.is-solid .nxt-hd__logo img{height:33px}
.nxt-hd__logo:hover{transform:translateY(-1px)}
.nxt-hd__wordmark{font-family:var(--dsp);font-size:21px;font-weight:800;letter-spacing:-.03em;color:#FFFFFF}

/* live chapter readout - reads the page's own 01..09 eyebrows */
.nxt-hd__now{display:flex;align-items:center;gap:clamp(10px,1vw,16px);padding-left:clamp(14px,1.6vw,26px);
  border-left:1px solid rgba(255,255,255,.12);min-width:250px}
.nxt-hd__now-k{font-size:9.5px;letter-spacing:.26em;text-transform:uppercase;color:#6E7B87;font-weight:700}
.nxt-hd__now-v{display:flex;align-items:baseline;gap:9px;overflow:hidden;height:1.3em;line-height:1.3em}
.nxt-hd__now-v b{font-family:var(--dsp);font-size:15px;font-weight:800;color:#1ECAD3;font-variant-numeric:tabular-nums;
  text-shadow:0 0 14px rgba(30,202,211,.6)}
.nxt-hd__now-l{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#DFE6EC;font-weight:700;white-space:nowrap}
.nxt-hd__now.is-swap .nxt-hd__now-v{animation:nxtroll .52s var(--ex)}
@keyframes nxtroll{0%{transform:translateY(0);opacity:1}44%{transform:translateY(-105%);opacity:0}56%{transform:translateY(105%);opacity:0}100%{transform:translateY(0);opacity:1}}
.nxt-hd__seg{display:flex;gap:3px}
.nxt-hd__seg i{display:block;width:5px;height:5px;border-radius:1px;background:rgba(255,255,255,.16);
  transition:background .45s var(--eo),box-shadow .45s var(--eo)}
.nxt-hd__seg i.on{background:#1ECAD3;box-shadow:0 0 8px rgba(30,202,211,.9)}

/* nav with a sliding glass pill and a two-layer text roll */
.nxt-hd__nav{position:relative;justify-self:end}
.nxt-hd__nav ul{display:flex;align-items:center;gap:2px}
.nxt-hd__l{position:relative;z-index:1;display:block;padding:11px 16px;text-decoration:none;color:#DFE6EC;
  font-size:13.5px;font-weight:600;transition:color .35s var(--eo)}
.nxt-hd__l:hover{color:#FFFFFF}
.nxt-hd__roll{display:block;overflow:hidden;height:1.3em}
.nxt-hd__roll em{display:block;font-style:normal;line-height:1.3em;transition:transform .48s var(--ex)}
.nxt-hd__roll em:last-child{color:#1ECAD3}
.nxt-hd__l:hover .nxt-hd__roll em{transform:translateY(-1.3em)}
.nxt-hd__pill{position:absolute;top:50%;left:0;height:38px;width:0;border-radius:var(--pill);opacity:0;pointer-events:none;
  transform:translate(0,-50%);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.13);
  -webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24),0 0 22px rgba(30,202,211,.16);
  transition:transform .52s var(--ex),width .52s var(--ex),opacity .35s var(--eo)}
.nxt-hd__nav.is-on .nxt-hd__pill{opacity:1}

.nxt-hd__end{display:flex;align-items:center;gap:12px;justify-self:end}
.nxt-hd__cta{padding:13px 22px;font-size:13px;transition:padding .5s var(--eo),color .4s var(--eo),border-color .4s var(--eo),box-shadow .4s var(--eo)}
.nxt-hd.is-solid .nxt-hd__cta{padding:11px 20px}

.nxt-hd__burger{display:none;width:44px;height:44px;border-radius:50% !important;align-items:center;justify-content:center;
  flex-direction:column;gap:5px;cursor:pointer;background:rgba(255,255,255,.06) !important;border:1px solid rgba(255,255,255,.14) !important;
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.nxt-hd__burger i{display:block;width:17px;height:1.5px;background:#FFFFFF;transition:transform .4s var(--ex)}
.nxt-hd__burger[aria-expanded="true"] i:first-child{transform:translateY(3.25px) rotate(45deg)}
.nxt-hd__burger[aria-expanded="true"] i:last-child{transform:translateY(-3.25px) rotate(-45deg)}

.nxt-hd__prog{position:absolute;left:0;right:0;bottom:-1px;height:1px;overflow:hidden;pointer-events:none}
.nxt-hd__prog i{display:block;height:100%;background:var(--acc-line);box-shadow:0 0 10px rgba(30,202,211,.8);
  transform:scaleX(0);transform-origin:left}

/* full-screen overlay menu (small screens) */
.nxt-ovl{position:fixed;inset:0;z-index:590;display:flex;align-items:center;
  background:rgba(10,12,15,.72);-webkit-backdrop-filter:blur(36px) saturate(180%);backdrop-filter:blur(36px) saturate(180%);
  opacity:0;visibility:hidden;transition:opacity .5s var(--eo),visibility .5s var(--eo)}
.nxt-ovl.is-open{opacity:1;visibility:visible}
.nxt-ovl__in{width:100%;max-width:var(--maxw);margin-inline:auto;padding:clamp(90px,14vh,140px) var(--gut) var(--gut);
  display:flex;flex-direction:column;gap:clamp(20px,3vw,34px)}
.nxt-ovl__l{display:flex;flex-direction:column}
.nxt-ovl__l li{border-bottom:1px solid rgba(255,255,255,.09);opacity:0;transform:translateY(22px)}
.nxt-ovl.is-open .nxt-ovl__l li{opacity:1;transform:none;transition:opacity .6s var(--eo),transform .6s var(--eo);transition-delay:calc(var(--i) * .06s + .12s)}
.nxt-ovl__l a{display:flex;align-items:baseline;gap:16px;padding:clamp(16px,2.4vw,24px) 0;text-decoration:none;
  font-family:var(--dsp);font-size:clamp(28px,7vw,46px);font-weight:800;letter-spacing:-.04em;color:#FFFFFF;transition:color .35s var(--eo),padding-left .45s var(--ex)}
.nxt-ovl__l a:hover{color:#1ECAD3;padding-left:14px}
.nxt-ovl__l i{font-style:normal;font-family:var(--ui);font-size:11px;letter-spacing:.2em;color:#1ECAD3;font-weight:700}

/* the readout is the first thing to go when the bar runs out of room */
@media (max-width:1320px){.nxt-hd__now{display:none}.nxt-hd__in{grid-template-columns:auto 1fr auto auto}}

/* ------------------------------------------------------- PRIMITIVES */
.nxt{position:relative;z-index:1}
.nxt *,.nxt *::before,.nxt *::after{box-sizing:border-box}
.nxt button:not(.nxt-btn){background:none !important;border:0 !important;border-radius:0 !important;padding:0;margin:0;color:inherit !important;font:inherit !important;text-transform:none !important;letter-spacing:normal !important;box-shadow:none !important;width:auto;min-height:0}
.nxt ul,.nxt ol,.nxt li{list-style:none;margin:0;padding:0}
.nxt blockquote,.nxt figure,.nxt dl,.nxt dd{margin:0}
.nxt img{max-width:100%;height:auto;display:block}
body.nxt-home .nxt,body.nxt-home .nxt :is(a,span,button,p,li,dt,dd,dl,div,ul,ol,figure,article,section,aside,small,strong,b,em,i,time,label,input){font-family:var(--ui)}
body.nxt-home .nxt :is(h1,h2,h3,h4),body.nxt-home .nxt blockquote,body.nxt-home .nxt .nxt-tick__i,
body.nxt-home .nxt .nxt-words,body.nxt-home .nxt .nxt-stat__v,body.nxt-home .nxt .nxt-mode__n,
body.nxt-home .nxt .nxt-stat__v b,body.nxt-home .nxt .nxt-wm{font-family:var(--dsp)}

.nxt-sec{position:relative;padding-block:var(--pad)}
.nxt-line{border-top:1px solid rgba(255,255,255,.07)}
.nxt-wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gut)}
.nxt-scrim::before{content:"";position:absolute;inset:-9% -6%;z-index:-1;pointer-events:none;
  background:radial-gradient(ellipse 62% 70% at 50% 50%,rgba(10,12,15,.8) 0%,rgba(10,12,15,.52) 50%,transparent 84%)}

.nxt :is(h1,h2,h3,h4){margin:0;color:#FFFFFF;font-weight:800}
.nxt h1{font-size:var(--fs-hero);line-height:.86;letter-spacing:-.045em}
.nxt h2{font-size:var(--fs-h2);line-height:.93;letter-spacing:-.04em}
.nxt h3{font-size:var(--fs-h3);line-height:1.12;letter-spacing:-.025em;font-weight:700}
.nxt p{margin:0;font-size:var(--fs-body);line-height:1.62;color:#9DAAB6}
.nxt .nxt-lead{font-size:var(--fs-lead);line-height:1.48;color:#DFE6EC}
.nxt-em{color:#1ECAD3;text-shadow:0 0 26px rgba(30,202,211,.45)}

.nxt-mono{display:inline-flex;align-items:center;gap:10px;font-family:var(--ui);font-size:var(--fs-mono);font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:#8794A0;font-variant-numeric:tabular-nums}
.nxt-mono::before{content:"";width:18px;height:1px;background:#1ECAD3;box-shadow:0 0 7px rgba(30,202,211,.8);flex:0 0 auto}
.nxt-mono--b::before{display:none}

/* ---------------------------------------------------- LIQUID GLASS */
/* One surface recipe, reused. The blur samples whatever is behind the
   element - including the fixed WebGL canvas - which is what makes the
   accent read as if it were lit from under frosted glass. */
.nxt-cell,.nxt-card,.nxt-pan,.nxt-post,.nxt-stat,.nxt-mode__in,.nxt-about__c,.nxt-tick{
  background:var(--g-fill);
  -webkit-backdrop-filter:var(--g-blur);backdrop-filter:var(--g-blur);
  box-shadow:var(--g-lip),var(--g-cast)}
.nxt-cell,.nxt-card,.nxt-pan,.nxt-post,.nxt-stat{border:1px solid var(--g-edge)}
/* specular lip: the bright hairline along the top of a real glass edge */
.nxt-cell::after,.nxt-post::after,.nxt-pan::after,.nxt-card::after{content:"";position:absolute;top:0;left:14%;right:14%;height:1px;z-index:2;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);opacity:.6;transition:opacity .5s var(--eo),left .6s var(--ex),right .6s var(--ex),background .5s var(--eo)}
.nxt-cell:hover::after,.nxt-post:hover::after,.nxt-pan:hover::after,.nxt-card:hover::after{opacity:1;left:0;right:0;
  background:linear-gradient(90deg,transparent,rgba(30,202,211,.9),rgba(255,255,255,.95),rgba(30,202,211,.9),transparent)}

@supports not ((-webkit-backdrop-filter:blur(2px)) or (backdrop-filter:blur(2px))){
  .nxt-cell,.nxt-card,.nxt-pan,.nxt-post,.nxt-stat,.nxt-mode__in,.nxt-about__c{background:#12161B}
  .nxt-tick{background:rgba(10,12,15,.94)}
}

.nxt-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:11px;font-weight:700;font-size:14.5px;line-height:1;padding:19px 34px;border-radius:var(--pill);border:1px solid transparent;text-decoration:none;cursor:pointer;overflow:hidden;isolation:isolate;transition:color .4s var(--eo),border-color .4s var(--eo),box-shadow .4s var(--eo)}
.nxt-btn span{position:relative;z-index:2}
.nxt-btn::before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;transform:scaleY(0);transform-origin:bottom;transition:transform .5s var(--ex)}
.nxt-btn:hover::before{transform:scaleY(1)}
.nxt-btn--p{background:#1ECAD3;color:#07090B;border-color:#1ECAD3;box-shadow:0 0 30px rgba(30,202,211,.34)}
.nxt-btn--p::before{background:#FFFFFF}
.nxt-btn--p:hover{color:#07090B;border-color:#FFFFFF;box-shadow:0 0 38px rgba(255,255,255,.3)}
.nxt-btn--g{background:rgba(255,255,255,.05);color:#FFFFFF;border-color:rgba(255,255,255,.16);-webkit-backdrop-filter:blur(18px) saturate(180%);backdrop-filter:blur(18px) saturate(180%)}
.nxt-btn--g::before{background:#1ECAD3}
.nxt-btn--g:hover{color:#07090B;border-color:#1ECAD3;box-shadow:0 0 30px rgba(30,202,211,.32)}
.nxt-btns{display:flex;flex-wrap:wrap;gap:12px}
.nxt a:focus-visible,.nxt button:focus-visible{outline:2px solid #1ECAD3;outline-offset:4px;border-radius:4px}
.nxt-arw{display:inline-flex;align-items:center;gap:10px;color:#FFFFFF;text-decoration:none;font-size:var(--fs-sm);font-weight:700;transition:color .3s var(--eo),gap .3s var(--eo)}
.nxt-arw:hover{color:#1ECAD3;gap:16px}

/* reveals */
.nxt-js .nxt-rv{opacity:0;transform:translate3d(0,34px,0)}
.nxt-js .nxt-rv.is-in{opacity:1;transform:none;transition:opacity 1s var(--eo),transform 1s var(--eo)}
.nxt-js .nxt-rv[data-d="1"].is-in{transition-delay:.1s}
.nxt-js .nxt-rv[data-d="2"].is-in{transition-delay:.2s}
.nxt-js .nxt-rv[data-d="3"].is-in{transition-delay:.3s}
.nxt-ln{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.09em}
.nxt-js .nxt-ln > span{display:block;transform:translate3d(0,106%,0)}
.nxt-js .is-in .nxt-ln > span,.nxt-js .nxt-ln.is-in > span{transform:none;transition:transform 1.15s var(--ex)}
.nxt-js .is-in .nxt-ln:nth-child(2) > span{transition-delay:.1s}
.nxt-js .is-in .nxt-ln:nth-child(3) > span{transition-delay:.2s}
@media (min-width:769px){.nxt-ln > span{white-space:nowrap}}
@media (max-width:768px){.nxt-ln{overflow:visible;padding-bottom:0;margin-bottom:0}.nxt-js .nxt-ln > span{transform:none !important}}
.nxt-mask{overflow:hidden}
.nxt-js .nxt-mask > *{clip-path:inset(0 0 100% 0);transform:scale(1.1)}
.nxt-js .nxt-mask.is-in > *{clip-path:inset(0 0 0 0);transform:scale(1);transition:clip-path 1.3s var(--ex),transform 1.7s var(--ex)}

/* ====================== 01 HERO ====================== */
/* Composed, not bottom-heavy: the block is centred in the space left below
   the fixed header, and the display type is capped by viewport HEIGHT as
   well as width - 176px over three lines simply does not fit a short
   screen, which is what was pushing the headline under the fold. */
.nxt-hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;
  padding-block:clamp(104px,12vh,148px) clamp(46px,7vh,86px);overflow:clip}
.nxt-hero__top{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:clamp(18px,2.4vw,34px)}
.nxt-hero h1{font-size:min(var(--fs-hero),18vh);text-shadow:0 8px 60px rgba(0,0,0,.65)}
.nxt-hero__foot{margin-top:clamp(24px,3vw,44px);border-top:1px solid rgba(255,255,255,.1);padding-block:22px 0;display:grid;grid-template-columns:1.4fr .8fr auto;gap:clamp(20px,3vw,48px);align-items:center}
.nxt-hero__foot p{max-width:42ch;font-size:var(--fs-sm)}
.nxt-hero__stat b{display:block;font-family:var(--dsp);font-size:clamp(28px,2.8vw,44px);font-weight:800;letter-spacing:-.03em;color:#FFFFFF;line-height:1;margin-bottom:8px}
.nxt-scroll{position:absolute;right:var(--gut);bottom:clamp(26px,4vw,44px);display:flex;align-items:center;gap:12px;writing-mode:vertical-rl;font-size:var(--fs-mono);letter-spacing:.24em;text-transform:uppercase;color:#8794A0;font-weight:700}
.nxt-scroll i{width:1px;height:52px;background:linear-gradient(180deg,#1ECAD3,transparent);box-shadow:0 0 8px rgba(30,202,211,.7);display:block}

/* ====================== 02 TICKER ====================== */
.nxt-tick{padding-block:clamp(24px,3.2vw,44px);border-block:1px solid rgba(255,255,255,.09);overflow:hidden;display:flex;flex-direction:column;gap:clamp(6px,1vw,14px)}
.nxt-tick__row{display:flex;width:max-content;will-change:transform}
.nxt-tick__g{display:flex;flex:0 0 auto}
.nxt-tick__i{display:inline-flex;align-items:center;gap:clamp(20px,2.4vw,38px);padding-inline:clamp(20px,2.4vw,38px);font-size:clamp(26px,4.2vw,58px);font-weight:800;letter-spacing:-.04em;line-height:1.1;white-space:nowrap;color:#FFFFFF}
.nxt-tick__i::after{content:"";width:9px;height:9px;border-radius:50%;background:#1ECAD3;box-shadow:0 0 12px rgba(30,202,211,.85);flex:0 0 auto}
.nxt-tick__row--b .nxt-tick__i{color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.22)}
.nxt-tick__row--b .nxt-tick__i::after{background:rgba(255,255,255,.22);box-shadow:none}

/* ====================== 03 ABOUT ====================== */
.nxt .nxt-about__stmt{font-size:clamp(28px,4.8vw,78px);font-weight:700;line-height:1.06;letter-spacing:-.04em;color:#FFFFFF;max-width:26ch;margin-top:clamp(26px,3.4vw,46px)}
.nxt-about__stmt .w{display:inline-block}
.nxt-js .nxt-about__stmt .w{color:#47545F;transition:color .5s var(--eo)}
.nxt-js .nxt-about__stmt .w.on{color:#FFFFFF}
.nxt-js .nxt-about__stmt .w.acc.on{color:#1ECAD3;text-shadow:0 0 30px rgba(30,202,211,.5)}
.nxt-about__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,1.1vw,18px);margin-top:clamp(48px,6vw,90px)}
.nxt-about__c{border:1px solid var(--g-edge);border-radius:var(--r);padding:clamp(26px,3vw,44px);display:flex;flex-direction:column;gap:14px;overflow:hidden;position:relative}
.nxt-about__c b{font-family:var(--dsp);font-size:clamp(34px,3.6vw,58px);font-weight:800;letter-spacing:-.04em;color:#FFFFFF;line-height:1}
.nxt-about__c p{font-size:var(--fs-sm)}

/* ====================== 04 SERVICES ====================== */
.nxt-bento{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(12px,1.1vw,18px);margin-top:clamp(38px,5vw,70px)}
.nxt-cell{position:relative;overflow:hidden;border-radius:var(--r);padding:clamp(24px,2.3vw,38px);display:flex;flex-direction:column;justify-content:flex-end;min-height:236px;transition:border-color .5s var(--eo),transform .5s var(--eo),box-shadow .5s var(--eo)}
.nxt-cell::before{content:"";position:absolute;inset:0;opacity:0;transition:opacity .45s var(--eo);pointer-events:none;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(30,202,211,.2),transparent 48%)}
.nxt-cell:hover::before{opacity:1}
.nxt-cell:hover{border-color:rgba(30,202,211,.45);transform:translateY(-4px);box-shadow:var(--g-lip),0 0 0 1px rgba(30,202,211,.2),0 0 40px rgba(30,202,211,.16),var(--g-cast)}
.nxt-cell h3,.nxt-cell p,.nxt-cell__ico{position:relative;z-index:1}
.nxt-cell h3{margin-top:18px}
.nxt-cell p{margin-top:11px;font-size:var(--fs-sm);max-width:42ch}
.nxt-cell__ico{width:32px;height:32px;color:#1ECAD3;filter:drop-shadow(0 0 10px rgba(30,202,211,.5))}
.nxt-cell--a{grid-column:span 7;min-height:clamp(280px,25vw,372px)}
.nxt-cell--b{grid-column:span 5}
.nxt-cell--c,.nxt-cell--d,.nxt-cell--e{grid-column:span 4}
.nxt-cell--wide{grid-column:span 12;min-height:clamp(210px,19vw,286px);border-radius:var(--r-lg);
  background:linear-gradient(118deg,rgba(15,42,68,.55),rgba(255,255,255,.03) 48%,rgba(30,202,211,.13))}

/* ====================== 05 WHY US ====================== */
.nxt-why{border-top:1px solid rgba(255,255,255,.09);margin-top:clamp(38px,5vw,66px)}
.nxt-why__r{display:grid;grid-template-columns:auto 1.05fr 1.25fr auto;gap:clamp(18px,3vw,54px);align-items:center;padding:clamp(26px,3.2vw,46px) clamp(12px,1.4vw,22px);border-bottom:1px solid rgba(255,255,255,.09);position:relative;border-radius:var(--r);transition:background-color .5s var(--eo),padding-left .5s var(--eo)}
.nxt-why__r::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:0;background:var(--acc-line);box-shadow:0 0 10px rgba(30,202,211,.7);transition:width .7s var(--ex)}
.nxt-why__r:hover::after{width:100%}
.nxt-why__r:hover{background:rgba(255,255,255,.04);padding-left:clamp(20px,2.4vw,34px)}
.nxt-why__n{font-family:var(--dsp);font-size:clamp(30px,3.4vw,54px);font-weight:800;letter-spacing:-.045em;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.22);line-height:1;transition:-webkit-text-stroke-color .5s var(--eo)}
.nxt-why__r:hover .nxt-why__n{-webkit-text-stroke-color:#1ECAD3}
.nxt-why__r h3{transition:color .4s var(--eo)}
.nxt-why__r:hover h3{color:#1ECAD3}
.nxt-why__r p{font-size:var(--fs-sm);max-width:52ch}
.nxt-why__tag{font-size:var(--fs-mono);letter-spacing:.2em;text-transform:uppercase;color:#8794A0;font-weight:700;white-space:nowrap}

/* ====================== 06 PORTFOLIO ====================== */
.nxt-deck{margin-top:clamp(40px,5vw,72px)}
.nxt-card{position:sticky;top:clamp(84px,11vh,116px);margin-bottom:clamp(20px,2.4vw,34px);border-radius:var(--r-lg);overflow:hidden;will-change:transform}
.nxt-card__in{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(22px,3vw,52px);align-items:center;padding:clamp(22px,2.4vw,40px)}
.nxt-card__idx{display:flex;align-items:baseline;gap:14px;margin-bottom:18px}
.nxt-card__idx b{font-family:var(--dsp);font-size:clamp(32px,3.2vw,54px);font-weight:800;letter-spacing:-.045em;color:transparent;-webkit-text-stroke:1px rgba(30,202,211,.7);line-height:1}
.nxt-card h3{font-size:clamp(26px,3.1vw,48px);letter-spacing:-.04em;line-height:.99}
.nxt .nxt-card__d{margin-top:16px;max-width:46ch;font-size:var(--fs-sm)}
.nxt-card__meta{margin-top:24px;border-top:1px solid rgba(255,255,255,.1)}
.nxt-card__meta div{display:grid;grid-template-columns:92px 1fr;gap:14px;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.1);font-size:13.5px}
.nxt-card__meta dt{color:#8794A0;font-weight:600}
.nxt-card__meta dd{color:#DFE6EC}
.nxt-card__go{margin-top:24px;align-self:flex-start}
.nxt-shot{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid rgba(255,255,255,.12);background:rgba(8,10,13,.6);box-shadow:0 26px 60px rgba(0,0,0,.55)}
.nxt-shot__bar{display:flex;align-items:center;gap:8px;padding:12px 15px;background:rgba(255,255,255,.055);border-bottom:1px solid rgba(255,255,255,.1)}
.nxt-shot__bar i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.22);display:block}
.nxt-shot__url{margin-left:10px;font-size:11px;color:#8794A0}
.nxt-shot img{width:100%;transition:transform 1.2s var(--eo)}
.nxt-card:hover .nxt-shot img{transform:scale(1.03)}

/* ====================== 07 PROCESS RAIL ====================== */
.nxt-rail{overflow:hidden}
.nxt-rail__head{display:flex;justify-content:space-between;align-items:flex-end;gap:26px;flex-wrap:wrap;margin-bottom:clamp(36px,4.6vw,64px)}
.nxt-rail__vp{overflow:hidden}
.nxt-rail__track{display:flex;gap:clamp(14px,1.4vw,22px);padding-inline:var(--gut);will-change:transform}
.nxt-pan{flex:0 0 clamp(268px,27vw,420px);min-height:clamp(330px,33vw,440px);border-radius:var(--r);padding:clamp(24px,2.2vw,34px);display:flex;flex-direction:column;position:relative;overflow:hidden;transition:border-color .5s var(--eo),transform .5s var(--eo),box-shadow .5s var(--eo)}
.nxt-pan:hover{border-color:rgba(30,202,211,.5);transform:translateY(-6px);box-shadow:var(--g-lip),0 0 38px rgba(30,202,211,.16),var(--g-cast)}
.nxt-pan__n{font-family:var(--dsp);font-size:clamp(52px,5.4vw,84px);font-weight:800;line-height:.85;letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.22);transition:-webkit-text-stroke-color .5s var(--eo)}
.nxt-pan:hover .nxt-pan__n{-webkit-text-stroke-color:rgba(30,202,211,.75)}
.nxt-pan h3{margin-top:auto;padding-top:22px}
.nxt-pan p{margin-top:12px;font-size:var(--fs-sm);line-height:1.55}
.nxt-pan__bar{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--acc-line);box-shadow:0 0 10px rgba(30,202,211,.7);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ex)}
.nxt-pan:hover .nxt-pan__bar{transform:scaleX(1)}
.nxt-rail__meter{display:flex;align-items:center;gap:14px;margin-top:clamp(24px,3vw,38px);padding-inline:var(--gut)}
.nxt-rail__meter span{flex:0 0 clamp(90px,14vw,190px);height:2px;background:rgba(255,255,255,.12);overflow:hidden;border-radius:2px}
.nxt-rail__meter i{display:block;height:100%;background:var(--acc-line);box-shadow:0 0 8px rgba(30,202,211,.7);transform:scaleX(.08);transform-origin:left}

/* ============== 08 ENGAGEMENT (accent-edged glass) ============== */
.nxt-modes__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.4vw,22px);margin-top:clamp(38px,5vw,70px)}
.nxt-mode{position:relative;border-radius:var(--r-lg);padding:1px;
  background:linear-gradient(158deg,rgba(30,202,211,.5),rgba(255,255,255,.07) 46%,rgba(47,111,154,.45));
  transition:box-shadow .5s var(--eo),background .5s var(--eo)}
/* no transform on hover: a transformed ancestor would flatten the child's
   backdrop-filter and the glass would lose its blur mid-interaction. */
.nxt-mode:hover{box-shadow:0 0 44px rgba(30,202,211,.2);background:linear-gradient(158deg,rgba(30,202,211,.85),rgba(255,255,255,.12) 46%,rgba(47,111,154,.8))}
.nxt-mode__in{position:relative;overflow:hidden;height:100%;border-radius:calc(var(--r-lg) - 1px);padding:clamp(26px,2.4vw,40px);display:flex;flex-direction:column;gap:16px}
.nxt-mode__in::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .5s var(--eo);background:radial-gradient(74% 56% at 50% 0%,rgba(30,202,211,.17),transparent 72%)}
.nxt-mode:hover .nxt-mode__in::after{opacity:1}
.nxt-mode__n{position:relative;z-index:1;font-size:clamp(24px,2.2vw,34px);font-weight:800;letter-spacing:.04em;color:transparent;-webkit-text-stroke:1px rgba(30,202,211,.8);line-height:1}
.nxt-mode h3{position:relative;z-index:1;letter-spacing:-.03em}
.nxt .nxt-mode p{position:relative;z-index:1;font-size:var(--fs-sm)}
.nxt-mode__l{position:relative;z-index:1;margin-top:4px;border-top:1px solid rgba(255,255,255,.1);padding-top:16px;display:flex;flex-direction:column;gap:10px}
.nxt-mode__l li{display:grid;grid-template-columns:16px 1fr;gap:10px;align-items:start;font-size:14px;color:#DFE6EC;line-height:1.45}
.nxt-mode__l li::before{content:"";width:6px;height:6px;margin-top:7px;border-radius:50%;background:#1ECAD3;box-shadow:0 0 9px rgba(30,202,211,.85)}
.nxt-mode__best{position:relative;z-index:1;margin-top:auto;padding-top:18px;font-size:var(--fs-mono);letter-spacing:.18em;text-transform:uppercase;color:#8794A0;font-weight:700}
.nxt-mode__best em{font-style:normal;color:#1ECAD3}

/* ============== 09 STATS (accent under glass) ============== */
.nxt-stats__head{display:grid;grid-template-columns:1.25fr .85fr;gap:clamp(20px,3vw,54px);align-items:end;margin-bottom:clamp(38px,4.8vw,66px)}
.nxt-stats__head h2{margin-top:18px;max-width:18ch}
.nxt .nxt-stats__head p{font-size:var(--fs-sm);max-width:40ch}
.nxt-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.1vw,18px)}
.nxt-stat{position:relative;overflow:hidden;border-radius:var(--r);padding:clamp(24px,2.2vw,38px);display:flex;flex-direction:column;gap:clamp(14px,1.4vw,20px);transition:border-color .5s var(--eo),transform .5s var(--eo),box-shadow .5s var(--eo)}
.nxt-stat::before{content:"";position:absolute;top:0;left:14%;right:14%;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent,#1ECAD3,transparent);box-shadow:0 0 10px rgba(30,202,211,.6);opacity:.6;transition:opacity .5s var(--eo),left .6s var(--ex),right .6s var(--ex)}
.nxt-stat::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .5s var(--eo);background:radial-gradient(76% 58% at 50% 0%,rgba(30,202,211,.18),transparent 72%)}
.nxt-stat:hover{transform:translateY(-5px);border-color:rgba(30,202,211,.5);box-shadow:var(--g-lip),0 0 40px rgba(30,202,211,.18),var(--g-cast)}
.nxt-stat:hover::before{opacity:1;left:0;right:0}
.nxt-stat:hover::after{opacity:1}
.nxt-stat__k{position:relative;z-index:1;font-size:var(--fs-mono);letter-spacing:.24em;text-transform:uppercase;color:#8794A0;font-weight:700}
.nxt-stat__v{position:relative;z-index:1;display:flex;align-items:baseline;gap:6px;line-height:.84}
.nxt-stat__v b{font-size:clamp(46px,5.4vw,88px);font-weight:800;letter-spacing:-.05em;color:#FFFFFF;font-variant-numeric:tabular-nums;
  background:linear-gradient(176deg,#FFFFFF 26%,#6FE6EE);-webkit-background-clip:text;background-clip:text;
  filter:drop-shadow(0 0 22px rgba(30,202,211,.4))}
@supports ((-webkit-background-clip:text) or (background-clip:text)){.nxt-stat__v b{color:transparent}}
.nxt-stat__v i{font-style:normal;font-size:clamp(15px,1.3vw,20px);font-weight:700;letter-spacing:.02em;color:#1ECAD3;text-shadow:0 0 13px rgba(30,202,211,.7)}
.nxt-stat__bar{position:relative;z-index:1;display:block;height:2px;border-radius:2px;background:rgba(255,255,255,.1);overflow:hidden}
.nxt-stat__bar i{display:block;height:100%;width:var(--w,64%);border-radius:2px;transform:scaleX(1);transform-origin:left;
  background:var(--acc-line);box-shadow:0 0 12px rgba(30,202,211,.8)}
.nxt-js .nxt-stat__bar i{transform:scaleX(0);transition:transform 1.4s var(--ex) .25s}
.nxt-js .nxt-stat.is-in .nxt-stat__bar i{transform:scaleX(1)}
.nxt .nxt-stat p{position:relative;z-index:1;font-size:var(--fs-sm)}

/* ====================== 10 JOURNAL ====================== */
.nxt-jr{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.4vw,22px);margin-top:clamp(38px,5vw,66px)}
.nxt-post{border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column;position:relative;transition:border-color .5s var(--eo),transform .5s var(--eo),box-shadow .5s var(--eo)}
.nxt-post:hover{border-color:rgba(30,202,211,.42);transform:translateY(-5px);box-shadow:var(--g-lip),0 0 38px rgba(30,202,211,.15),var(--g-cast)}
.nxt-post__art{aspect-ratio:16/10;position:relative;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.1);
  background:radial-gradient(85% 75% at 22% 12%,rgba(30,202,211,.22),transparent 62%),radial-gradient(75% 68% at 88% 92%,rgba(15,42,68,.85),transparent 68%)}
.nxt-post__art::before{content:"";position:absolute;inset:0;background-image:linear-gradient(to right,rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.055) 1px,transparent 1px);background-size:36px 36px}
.nxt-post__art b{position:absolute;left:20px;bottom:16px;font-family:var(--dsp);font-size:56px;font-weight:800;color:rgba(255,255,255,.1);letter-spacing:-.05em;line-height:1}
.nxt-post__in{padding:clamp(20px,2vw,30px);display:flex;flex-direction:column;gap:12px;flex:1}
.nxt-post__in h3{font-size:clamp(18px,1.5vw,23px)}
.nxt-post__in p{font-size:var(--fs-sm)}
.nxt-post__f{margin-top:auto;padding-top:16px;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-mono);letter-spacing:.16em;text-transform:uppercase;color:#8794A0;font-weight:700}
.nxt-post__f em{font-style:normal;color:#1ECAD3}

/* ====================== 11 CTA ====================== */
.nxt-cta{padding-block:clamp(118px,15vw,230px);overflow:clip;text-align:center}
.nxt-cta::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(52% 60% at 50% 108%,rgba(30,202,211,.26),transparent 62%),radial-gradient(70% 76% at 50% 122%,rgba(15,42,68,.8),transparent 70%)}
.nxt-cta__in{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:clamp(24px,3.2vw,44px)}
.nxt-cta h2{font-size:clamp(40px,9vw,160px);line-height:.85;letter-spacing:-.05em;max-width:12ch;text-shadow:0 8px 60px rgba(0,0,0,.6)}
.nxt-cta p{max-width:44ch;font-size:var(--fs-lead)}
.nxt-cta__alt{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.nxt-chip{display:inline-flex;align-items:center;gap:8px;padding:12px 20px;border:1px solid rgba(255,255,255,.16);border-radius:var(--pill);font-size:var(--fs-sm);font-weight:600;color:#DFE6EC;text-decoration:none;background:rgba(255,255,255,.05);
  -webkit-backdrop-filter:blur(18px) saturate(180%);backdrop-filter:blur(18px) saturate(180%);
  transition:border-color .35s var(--eo),color .35s var(--eo),box-shadow .35s var(--eo)}
.nxt-chip:hover{border-color:#1ECAD3;color:#1ECAD3;box-shadow:0 0 24px rgba(30,202,211,.24)}

/* ====================== 12 FOOTER ====================== */
/* The footer closes the page as a single heavy pane of frosted glass.
   brightness() inside the backdrop filter is what does the real work: it
   darkens whatever is behind the pane, so the 3D field is suppressed to a
   soft wash instead of readable dots - the world passes BEHIND the footer
   without the surface going flat black. Grain sits over the top, so it
   still finishes matte rather than glossy. */
.nxt-foot{position:relative;border-top:1px solid rgba(255,255,255,.1);padding-block:clamp(56px,6.4vw,96px) 0;
  background:linear-gradient(180deg,rgba(255,255,255,.085),rgba(255,255,255,.032) 40%,rgba(255,255,255,.055));
  -webkit-backdrop-filter:blur(48px) saturate(180%) brightness(.5);
  backdrop-filter:blur(48px) saturate(180%) brightness(.5);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22)}
@supports not ((-webkit-backdrop-filter:blur(2px)) or (backdrop-filter:blur(2px))){
  .nxt-foot{background:#0E1217}
}
.nxt-foot__wm{font-size:clamp(58px,15.5vw,250px);font-weight:800;line-height:.8;letter-spacing:-.055em;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.14);user-select:none;margin-bottom:clamp(40px,5vw,76px)}
.nxt-foot__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:clamp(24px,3vw,56px);padding-bottom:clamp(38px,4.4vw,64px)}
.nxt-foot__grid h4{font-size:var(--fs-mono);letter-spacing:.22em;text-transform:uppercase;color:#8794A0;font-weight:700;margin-bottom:20px;font-family:var(--ui)}
.nxt-foot__grid li{margin-bottom:11px}
.nxt-foot__grid a{color:#DFE6EC;text-decoration:none;font-size:var(--fs-sm);transition:color .3s var(--eo)}
.nxt-foot__grid a:hover{color:#1ECAD3}
.nxt-foot__intro p{font-size:var(--fs-sm);max-width:34ch;margin-bottom:22px}
.nxt-foot__bar{border-top:1px solid rgba(255,255,255,.09);padding-block:24px clamp(28px,3vw,44px);display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;font-size:var(--fs-mono);letter-spacing:.16em;text-transform:uppercase;color:#8794A0;font-weight:700}
.nxt-foot__bar a{color:#8794A0;text-decoration:none}
.nxt-foot__bar a:hover{color:#1ECAD3}

/* ------------------------------------- SHARED CARD HOVER (glass + neon)
   Declared last so it wins over each card's own hover rule. Those rules
   keep their transforms; this one owns the surface: thicker glass, a
   whisper of accent in the fill, one soft halo. Deliberately a single
   halo rather than a stack of glows - restraint is what reads premium. */
.nxt-cell:hover,.nxt-card:hover,.nxt-pan:hover,.nxt-post:hover,.nxt-stat:hover{
  background:var(--g-fill-h);
  -webkit-backdrop-filter:var(--g-blur-h);backdrop-filter:var(--g-blur-h);
  border-color:rgba(30,202,211,.42);
  box-shadow:var(--g-lip-h),var(--g-glow)}
.nxt-mode:hover .nxt-mode__in{
  background:var(--g-fill-h);
  -webkit-backdrop-filter:var(--g-blur-h);backdrop-filter:var(--g-blur-h);
  box-shadow:var(--g-lip-h)}
.nxt-about__c{transition:background .5s var(--eo),border-color .5s var(--eo),box-shadow .5s var(--eo)}
.nxt-about__c:hover{
  background:var(--g-fill-h);
  -webkit-backdrop-filter:var(--g-blur-h);backdrop-filter:var(--g-blur-h);
  border-color:rgba(30,202,211,.42);
  box-shadow:var(--g-lip-h),var(--g-glow)}

/* ------------------------------------------------------ RESPONSIVE */
@media (max-width:1024px){
  /* blurring two dozen panels is too much for most mobile GPUs */
  .nxt-cell,.nxt-card,.nxt-pan,.nxt-post,.nxt-stat,.nxt-mode__in,.nxt-about__c,.nxt-tick,.nxt-btn--g,.nxt-chip{
    -webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(19,23,28,.94)}
  /* the footer must stay opaque here, or the world shows through it */
  .nxt-foot{-webkit-backdrop-filter:none;backdrop-filter:none;background:#0E1217}
  .nxt-hd__in{--hd-h:72px;grid-template-columns:auto 1fr auto}
  .nxt-hd.is-solid .nxt-hd__in{--hd-h:62px}
  .nxt-hd__nav{display:none}
  .nxt-hd__burger{display:flex}
  .nxt-hd.is-solid{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(12,15,19,.96)}
  .nxt-hd__end{grid-column:3}
  .nxt-hero{min-height:auto;padding-block:clamp(116px,15vh,166px) 0}
  .nxt-hero__foot{grid-template-columns:1fr;gap:26px}
  .nxt-scroll{display:none}
  .nxt-about__grid{grid-template-columns:1fr}
  .nxt-bento{grid-template-columns:repeat(6,1fr)}
  .nxt-cell--a,.nxt-cell--b,.nxt-cell--c,.nxt-cell--d,.nxt-cell--e,.nxt-cell--wide{grid-column:span 6}
  .nxt-why__r{grid-template-columns:auto 1fr;gap:16px 22px}
  .nxt-why__tag{display:none}
  .nxt-card{position:relative;top:auto}
  .nxt-card__in{grid-template-columns:1fr}
  .nxt-rail__track{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-right:var(--gut);scrollbar-width:none}
  .nxt-rail__track::-webkit-scrollbar{display:none}
  .nxt-pan{scroll-snap-align:start}
  .nxt-rail__meter{display:none}
  .nxt-stats__head{grid-template-columns:1fr;gap:18px}
  .nxt-stat-grid{grid-template-columns:repeat(2,1fr)}
  .nxt-modes__grid{grid-template-columns:1fr}
  .nxt-jr{grid-template-columns:1fr}
  .nxt-foot__grid{grid-template-columns:1fr 1fr}
  #nxt-world{-webkit-mask-image:none;mask-image:none}
  #nxt-world.is-live{opacity:.55}
}
@media (max-width:640px){
  body.nxt-home{--fs-body:15.5px;--fs-sm:14px}
  .nxt-stat-grid{grid-template-columns:1fr}
  .nxt-btn{width:100%}
  .nxt-cta__alt .nxt-chip{width:100%;justify-content:center}
  .nxt-foot__grid{grid-template-columns:1fr}
  .nxt-tick__i{font-size:clamp(22px,7vw,34px)}
  .nxt-why__r{grid-template-columns:1fr;gap:10px}
}

/* --------------------------------------------------- REDUCED MOTION */
@media (prefers-reduced-motion:reduce){
  .nxt-js :is(.nxt-rv,.nxt-ln > span,.nxt-mask > *){opacity:1 !important;transform:none !important;clip-path:none !important;transition:none !important}
  #nxt-world,.nxt-cur{display:none !important}
  body.nxt-home::after{animation:none !important}
  .nxt-tick__row{transform:none !important}
  .nxt-about__stmt .w{color:#FFFFFF !important}
  .nxt-card{position:relative !important;top:auto !important}
  .nxt *,.nxt *::before,.nxt *::after{animation-duration:.001ms !important;transition-duration:.001ms !important}
}
.nxt [id]{scroll-margin-top:120px}

/* ------------------------------------------------- CASCADE GUARDS
   The header and the overlay menu both carry the .nxt class for its
   resets, and `.nxt{position:relative}` is declared further up this
   file - at equal specificity it was winning and dropping both out of
   fixed positioning, which put the overlay into the document flow as a
   ~1000px invisible block above the hero. These re-assert it. */
body.nxt-home .nxt-hd{position:fixed;top:0;left:0;right:0;z-index:600}
body.nxt-home .nxt-ovl{position:fixed;inset:0;z-index:590}
/* clear the WordPress admin bar for logged-in users */
body.nxt-home.admin-bar .nxt-hd{top:32px}
@media screen and (max-width:782px){body.nxt-home.admin-bar .nxt-hd{top:46px}}

/* live-clock status dot in the header readout */
.nxt-hd__dot{width:7px;height:7px;border-radius:50%;background:#1ECAD3;box-shadow:0 0 10px rgba(30,202,211,.95);animation:nxtpulse 2.6s ease-in-out infinite}
@keyframes nxtpulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.82)}}
