/* ==========================================================================
   NXTG - components.css
   Komponen bersama situs publik (prefix nxtg-) + override Bootstrap.
   Bahasa visual: latar luar angkasa (partikel, cahaya planet, garis kontur),
   label bergaris tegak, judul Plus Jakarta Sans tebal dengan kata kunci
   bergradasi biru, tombol gradasi, kartu bergaris tipis.
   Urutan muat: bootstrap -> vendor -> tokens -> components -> pages.
   ========================================================================== */

/* ---- 1. Dasar ------------------------------------------------------------- */
html{scroll-padding-top:calc(var(--nxtg-header-h) + 16px)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{background:var(--nxtg-bg);color:var(--nxtg-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5,.h1,.h2,.h3,.h4,.h5{font-family:var(--nxtg-font-display);font-weight:700;letter-spacing:-.025em;color:var(--nxtg-text);text-wrap:balance}
p{text-wrap:pretty}
a{text-underline-offset:.2em;text-decoration-thickness:1px}
::selection{background:var(--nxtg-brand);color:#FFFFFF}
:focus-visible{outline:2px solid var(--nxtg-focus);outline-offset:3px}
.nav-link:focus-visible,.navbar-brand:focus-visible,.btn-close:focus-visible,.form-check-input:focus-visible,.nxtg-toggler:focus-visible{outline:2px solid var(--nxtg-focus);outline-offset:2px;box-shadow:none;opacity:1}
[id]{scroll-margin-top:calc(var(--nxtg-header-h) + 16px)}
.container{--bs-gutter-x:2.5rem;max-width:1320px}
@media (min-width:992px){.container{--bs-gutter-x:3rem}}
main:focus{outline:0}
.nxtg-skip{position:absolute;left:1rem;top:.75rem;z-index:1090;padding:.75rem 1rem;border-radius:var(--nxtg-radius-control);background:var(--nxtg-text);color:var(--nxtg-bg);font-weight:600;text-decoration:none}
.nxtg-skip:focus{color:var(--nxtg-bg)}

/* ---- 2. Tipografi --------------------------------------------------------- */
.nxtg-display{font-size:var(--nxtg-fs-display);line-height:1.08;letter-spacing:-.028em;font-weight:800}
.nxtg-h1{font-size:var(--nxtg-fs-h1);line-height:1.1;letter-spacing:-.025em;font-weight:800}
.nxtg-h2{font-size:var(--nxtg-fs-h2);line-height:1.14;letter-spacing:-.022em;font-weight:700}
.nxtg-h3{font-size:var(--nxtg-fs-title-lg);line-height:1.2;letter-spacing:-.02em;font-weight:700}
.nxtg-h4{font-size:var(--nxtg-fs-title-sm);line-height:1.3;letter-spacing:-.015em;font-weight:700}
.nxtg-lead{font-size:var(--nxtg-fs-lead);line-height:1.75;color:var(--nxtg-text-muted);max-width:62ch}
.nxtg-muted{color:var(--nxtg-text-muted)}
.nxtg-prose{max-width:70ch}
/* Kata kunci judul bergradasi biru (hanya pada judul besar: >= 24px tebal). */
.nxtg-grad{background:var(--nxtg-heading-grad);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;padding-bottom:.06em}
@media (forced-colors:active){.nxtg-grad{-webkit-text-fill-color:currentColor;color:CanvasText;background:none}}
/* Label bergaris tegak ("| Tentang NXTG") - pola eyebrow referensi. */
.nxtg-eyebrow{display:inline-flex;align-items:center;gap:.8rem;margin:0 0 1.1rem;font-family:var(--nxtg-font-body);font-size:var(--nxtg-fs-base);font-weight:500;letter-spacing:0;color:var(--nxtg-primary)}
.nxtg-eyebrow::before{content:'';flex:none;width:2px;height:1.15em;border-radius:1px;background:currentColor;opacity:.85}
[data-bs-theme=dark] .nxtg-eyebrow{color:#66A8FF}
.nxtg-link{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;font-weight:600;color:var(--nxtg-primary);text-decoration:none}
.nxtg-link:hover{color:var(--nxtg-primary-hover);text-decoration:underline}
.nxtg-arrow{flex:none;transition:transform .25s var(--nxtg-ease)}
.nxtg-link:hover .nxtg-arrow,.btn:hover .nxtg-arrow{transform:translateX(3px)}
.nxtg-icon{width:1.2em;height:1.2em;flex:none}

/* ---- 3. Section ----------------------------------------------------------- */
.nxtg-section{position:relative;padding-block:var(--nxtg-section-y)}
.nxtg-section--alt{background:var(--nxtg-bg-alt)}
.nxtg-section--tight{padding-block:clamp(2.5rem,1.5rem + 3vw,4.5rem)}
.nxtg-section--flush-top{padding-top:0}
.nxtg-head{max-width:48rem;margin-bottom:clamp(2.25rem,1.5rem + 2.4vw,4rem)}
.nxtg-head .nxtg-lead{margin:1.25rem 0 0}
.nxtg-head--center{margin-inline:auto;text-align:center}
.nxtg-head--center .nxtg-eyebrow{justify-content:center}
.nxtg-head--center .nxtg-lead{margin-inline:auto}
.nxtg-head-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.25rem 2rem;margin-bottom:clamp(2.25rem,1.5rem + 2.4vw,4rem)}
.nxtg-head-row .nxtg-head{margin-bottom:0}
.nxtg-head-split{display:grid;gap:1.25rem 4rem;margin-bottom:clamp(2.25rem,1.5rem + 2.4vw,4rem)}
.nxtg-head-split .nxtg-h2{margin:0}
.nxtg-head-split .nxtg-lead{margin:0;align-self:center}
@media (min-width:992px){.nxtg-head-split{grid-template-columns:1.1fr 1fr}}

/* ---- 4. Lapisan luar angkasa ---------------------------------------------
   .nxtg-space = wadah; anak: kanvas partikel, cahaya, bintang statis (tanpa
   JS), garis kontur. Semua dekoratif (aria-hidden) dan tidak menangkap klik. */
.nxtg-space{position:relative;isolation:isolate;overflow:hidden}
.nxtg-space>.container,.nxtg-space>.nxtg-space__content{position:relative;z-index:2}
.nxtg-space__canvas,.nxtg-space__glow,.nxtg-space__stars,.nxtg-space__topo{position:absolute;inset:0;z-index:0;pointer-events:none}
.nxtg-space__canvas{display:block;width:100%;height:100%;z-index:1}
.nxtg-space__glow{background:
  radial-gradient(40% 55% at 18% 12%,var(--nxtg-glow-2),transparent 70%),
  radial-gradient(45% 60% at 85% 20%,var(--nxtg-glow-3),transparent 70%),
  radial-gradient(60% 50% at 50% 100%,var(--nxtg-glow-1),transparent 70%)}
/* Bintang statis: hanya tampil bila kanvas tidak aktif (tanpa JS / gagal). */
.nxtg-space__stars{opacity:.9;background-image:
  radial-gradient(1px 1px at 12% 18%,rgba(var(--nxtg-particle),.8),transparent 60%),
  radial-gradient(1px 1px at 38% 72%,rgba(var(--nxtg-particle),.6),transparent 60%),
  radial-gradient(1.5px 1.5px at 66% 28%,rgba(var(--nxtg-particle),.7),transparent 60%),
  radial-gradient(1px 1px at 84% 62%,rgba(var(--nxtg-particle),.55),transparent 60%),
  radial-gradient(1px 1px at 52% 44%,rgba(var(--nxtg-particle),.5),transparent 60%),
  radial-gradient(1.5px 1.5px at 24% 88%,rgba(var(--nxtg-particle),.6),transparent 60%);background-size:280px 280px}
.nxtg-cosmos-ready .nxtg-space__stars{display:none}
.nxtg-space__topo{background:var(--nxtg-topo);-webkit-mask:url('../../img/landing/topo-lines.svg') center/cover no-repeat;mask:url('../../img/landing/topo-lines.svg') center/cover no-repeat}

/* Planet bercahaya di belakang judul (busur atas terang, badan memudar). */
/* Kanvas adegan three.js (public/js/landing/scene3d.js). Selalu menumpang di
   atas visual CSS/SVG yang sudah lengkap dan baru terlihat setelah frame
   pertama berhasil - host mendapat data-gl="ready". Tanpa WebGL, tanpa modul,
   atau saat gerak dibatasi: kanvas tetap transparan dan visual CSS yang tampil. */
.nxtg-gl{position:absolute;inset:0;z-index:1;display:block;width:100%;height:100%;opacity:0;transition:opacity 1s ease;pointer-events:none}
[data-gl=ready]>.nxtg-gl{opacity:1}
/* Planet CSS menyingkir hanya setelah planet WebGL benar-benar menggambar
   (opacity, bukan display: posisinya masih dibaca adegan sebagai acuan). */
[data-gl=ready]>.nxtg-planet{opacity:0;transition:opacity 1s ease}

.nxtg-planet{position:absolute;left:50%;top:var(--planet-top,30%);z-index:0;width:var(--planet-size,min(1180px,150vw));aspect-ratio:1;border-radius:50%;transform:translateX(-50%);pointer-events:none;
  background:radial-gradient(circle at 50% 2%,var(--nxtg-planet-rim-soft,rgba(120,190,255,.28)),transparent 32%),radial-gradient(circle at 50% 40%,var(--nxtg-planet-core,rgba(10,50,150,.35)),transparent 72%);
  box-shadow:inset 0 1.5px 0 var(--nxtg-planet-rim,rgba(150,205,255,.7)),inset 0 40px 90px -30px var(--nxtg-planet-glow,rgba(0,110,255,.6)),0 -30px 120px -50px var(--nxtg-planet-glow,rgba(0,110,255,.6));
  -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 22%,transparent 58%);mask-image:linear-gradient(to bottom,#000 0,#000 22%,transparent 58%)}
:root,[data-bs-theme=light]{--nxtg-planet-rim:rgba(0,100,255,.42);--nxtg-planet-rim-soft:rgba(80,160,255,.22);--nxtg-planet-core:rgba(120,180,255,.18);--nxtg-planet-glow:rgba(0,110,255,.28)}
[data-bs-theme=dark]{--nxtg-planet-rim:rgba(150,205,255,.75);--nxtg-planet-rim-soft:rgba(110,180,255,.30);--nxtg-planet-core:rgba(12,52,160,.40);--nxtg-planet-glow:rgba(0,110,255,.62)}

/* ---- 5. Tombol ------------------------------------------------------------ */
.btn{--bs-btn-padding-x:1.5rem;--bs-btn-padding-y:.75rem;--bs-btn-font-family:var(--nxtg-font-body);--bs-btn-font-weight:600;--bs-btn-font-size:var(--nxtg-fs-base);--bs-btn-line-height:1.35;--bs-btn-border-radius:var(--nxtg-radius-control);--bs-btn-focus-box-shadow:none;min-height:50px;display:inline-flex;align-items:center;justify-content:center;gap:.55rem;text-align:center;transition:background .25s ease,box-shadow .25s ease,border-color .2s ease,color .2s ease,transform .25s var(--nxtg-ease)}
.btn-sm{--bs-btn-padding-x:1.1rem;--bs-btn-padding-y:.5rem;--bs-btn-font-size:var(--nxtg-fs-sm);min-height:44px}
.btn-lg{--bs-btn-padding-x:1.85rem;--bs-btn-padding-y:.85rem;--bs-btn-font-size:var(--nxtg-fs-base);--bs-btn-border-radius:var(--nxtg-radius-control);min-height:56px}
.btn:focus-visible{box-shadow:none;outline:2px solid var(--nxtg-focus);outline-offset:3px}
.btn-primary{--bs-btn-color:#FFFFFF;--bs-btn-bg:#005CE0;--bs-btn-border-color:transparent;--bs-btn-hover-color:#FFFFFF;--bs-btn-hover-bg:#004CB8;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#FFFFFF;--bs-btn-active-bg:#004CB8;--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#FFFFFF;--bs-btn-disabled-bg:#005CE0;--bs-btn-disabled-border-color:transparent;--bs-btn-disabled-opacity:.6;background-image:var(--nxtg-grad-btn);box-shadow:0 10px 26px -14px rgba(0,98,255,.75),inset 0 1px 0 rgba(255,255,255,.22)}
.btn-primary:hover{background-image:var(--nxtg-grad-btn-hover);box-shadow:0 16px 34px -14px rgba(0,98,255,.85),inset 0 1px 0 rgba(255,255,255,.22);transform:translateY(-1px)}
.btn-outline{--bs-btn-color:var(--nxtg-text);--bs-btn-bg:transparent;--bs-btn-border-color:var(--nxtg-control-border);--bs-btn-hover-color:var(--nxtg-text);--bs-btn-hover-bg:var(--nxtg-accent-soft);--bs-btn-hover-border-color:var(--nxtg-accent);--bs-btn-active-color:var(--nxtg-text);--bs-btn-active-bg:var(--nxtg-accent-soft);--bs-btn-active-border-color:var(--nxtg-accent);--bs-btn-disabled-color:var(--nxtg-text-muted);--bs-btn-disabled-border-color:var(--nxtg-border)}
.btn-secondary{--bs-btn-color:var(--nxtg-text);--bs-btn-bg:var(--nxtg-surface);--bs-btn-border-color:var(--nxtg-card-border);--bs-btn-hover-color:var(--nxtg-text);--bs-btn-hover-bg:var(--nxtg-surface-2);--bs-btn-hover-border-color:var(--nxtg-control-border);--bs-btn-active-color:var(--nxtg-text);--bs-btn-active-bg:var(--nxtg-surface-2);--bs-btn-active-border-color:var(--nxtg-control-border)}
[data-bs-theme=dark] .btn-secondary{--bs-btn-bg:rgba(255,255,255,.06);--bs-btn-border-color:rgba(255,255,255,.16);--bs-btn-hover-bg:rgba(255,255,255,.12);--bs-btn-hover-border-color:rgba(255,255,255,.4)}
.btn-wa{--bs-btn-color:#FFFFFF;--bs-btn-bg:#128C7E;--bs-btn-border-color:#128C7E;--bs-btn-hover-color:#FFFFFF;--bs-btn-hover-bg:#0E6F63;--bs-btn-hover-border-color:#0E6F63;--bs-btn-active-color:#FFFFFF;--bs-btn-active-bg:#0E6F63;--bs-btn-active-border-color:#0E6F63}

/* ---- 6. Header, navigasi, offcanvas --------------------------------------- */
.nxtg-header{position:sticky;top:0;z-index:1020;isolation:isolate;border-bottom:1px solid var(--nxtg-border);transition:box-shadow .25s ease}
/* Latar buram lewat pseudo-element: backdrop-filter pada header sendiri akan
   menjadikannya containing block untuk elemen position:fixed (offcanvas). */
.nxtg-header::before{content:'';position:absolute;inset:0;z-index:-1;background:var(--nxtg-header-bg);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px)}
.nxtg-header.is-scrolled{box-shadow:0 12px 34px -26px rgba(5,10,40,.55)}
.nxtg-header .navbar{--bs-navbar-padding-y:0;--bs-navbar-color:var(--nxtg-text);--bs-navbar-hover-color:var(--nxtg-primary);--bs-navbar-active-color:var(--nxtg-text);--bs-navbar-nav-link-padding-x:.95rem;min-height:var(--nxtg-header-h)}
.nxtg-brand{display:inline-flex;align-items:center;min-height:44px;margin-right:1rem;padding:0}
.nxtg-brand img{display:block;height:38px;width:auto}
@media (min-width:992px){.nxtg-brand img{height:44px}}
.nxtg-logo-invert,html[data-bs-theme=dark] .nxtg-logo-adapt,[data-bs-theme=dark] .nxtg-logo-adapt{filter:brightness(0) invert(1)}
.nxtg-nav .nav-link{position:relative;display:flex;align-items:center;gap:.35rem;min-height:44px;font-family:var(--nxtg-font-body);font-weight:500;font-size:var(--nxtg-fs-base)}
.nxtg-nav .dropdown-toggle::after{border:0;width:.72em;height:.72em;margin-left:.15rem;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat;vertical-align:middle;transition:transform .2s ease}
.nxtg-nav .dropdown-toggle[aria-expanded=true]::after{transform:rotate(180deg)}
.nxtg-toggler{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;padding:0;border:1px solid var(--nxtg-border-strong);border-radius:var(--nxtg-radius-control);background:transparent;color:var(--nxtg-text)}
.nxtg-toggler svg{width:22px;height:22px}

.dropdown-menu{--bs-dropdown-bg:var(--nxtg-surface);--bs-dropdown-color:var(--nxtg-text);--bs-dropdown-border-color:var(--nxtg-card-border);--bs-dropdown-border-radius:var(--nxtg-radius-card);--bs-dropdown-link-color:var(--nxtg-text);--bs-dropdown-link-hover-color:var(--nxtg-text);--bs-dropdown-link-hover-bg:var(--nxtg-accent-soft);--bs-dropdown-link-active-color:var(--nxtg-text);--bs-dropdown-link-active-bg:var(--nxtg-accent-soft);--bs-dropdown-divider-bg:var(--nxtg-border);--bs-dropdown-item-padding-y:.6rem;--bs-dropdown-box-shadow:0 30px 60px -30px rgba(5,10,40,.45);box-shadow:var(--bs-dropdown-box-shadow)}
[data-bs-theme=dark] .dropdown-menu{--bs-dropdown-bg:#151B23}
.dropdown-item{border-radius:10px;min-height:44px;display:flex;align-items:center;gap:.75rem;white-space:normal}
.dropdown-item:focus-visible{outline:2px solid var(--nxtg-focus);outline-offset:-2px}
.nxtg-mega{padding:.7rem}
.nxtg-mega__grid{display:grid;gap:.15rem;list-style:none;margin:0;padding:0}
.nxtg-mega__item{align-items:flex-start;padding:.75rem .8rem}
.nxtg-mega__mark{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:10px;color:#FFFFFF;background:linear-gradient(135deg,var(--div-accent),color-mix(in srgb,var(--div-accent) 55%,#001040))}
.nxtg-mega__mark svg{width:22px;height:22px}
.nxtg-mega__title{display:block;font-weight:600;line-height:1.3}
.nxtg-mega__desc{display:block;font-size:var(--nxtg-fs-meta);line-height:1.45;color:var(--nxtg-text-muted);margin-top:.15rem}
.nxtg-mega__all{justify-content:space-between;font-weight:600;color:var(--nxtg-primary)!important;border-top:1px solid var(--nxtg-border);border-radius:0 0 10px 10px;margin-top:.4rem}

.nxtg-offcanvas{--bs-offcanvas-width:min(100vw,420px);--bs-offcanvas-bg:var(--nxtg-bg);--bs-offcanvas-color:var(--nxtg-text);--bs-offcanvas-border-color:var(--nxtg-border);--bs-offcanvas-padding-x:1.25rem}
.nxtg-offcanvas .offcanvas-header{min-height:var(--nxtg-header-h);border-bottom:1px solid var(--nxtg-border)}
.nxtg-offcanvas .btn-close{width:44px;height:44px;padding:0;margin:0;background-size:14px;opacity:.85}
[data-bs-theme=dark] .nxtg-offcanvas .btn-close{filter:invert(1) grayscale(100%) brightness(200%)}
.offcanvas:target{visibility:visible;transform:none}
@media (min-width:992px){.navbar-expand-lg .offcanvas .offcanvas-body{flex-grow:1;align-items:center}}
.nxtg-actions{display:flex;align-items:center;gap:.6rem}
.nxtg-theme-toggle{visibility:hidden;display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-width:48px;min-height:48px;padding:0 .7rem;border:1px solid var(--nxtg-border-strong);border-radius:var(--nxtg-radius-control);background:transparent;color:var(--nxtg-text);font-weight:500}
.nxtg-js .nxtg-theme-toggle{visibility:visible}
.nxtg-theme-toggle:hover{border-color:var(--nxtg-accent);color:var(--nxtg-primary)}
.nxtg-theme-toggle svg{width:20px;height:20px}
html:not([data-bs-theme=dark]) .nxtg-theme-toggle .i-sun,html[data-bs-theme=dark] .nxtg-theme-toggle .i-moon{display:none}
.nxtg-switch{position:relative;display:inline-block;width:42px;height:24px;margin-left:auto;border-radius:999px;border:1px solid var(--nxtg-control-border);background:transparent}
.nxtg-switch::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--nxtg-control-border);transition:transform .2s ease}
[aria-pressed=true] .nxtg-switch{background:#005CE0;border-color:#005CE0}
[aria-pressed=true] .nxtg-switch::after{transform:translateX(18px);background:#FFFFFF}
.nxtg-lang{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-width:48px;min-height:48px;padding:0 .7rem;border:1px solid var(--nxtg-border-strong);border-radius:var(--nxtg-radius-control);color:var(--nxtg-text);font-size:var(--nxtg-fs-sm);font-weight:600;letter-spacing:.06em;text-decoration:none;transition:border-color .2s ease}
.nxtg-lang:hover{color:var(--nxtg-primary);border-color:var(--nxtg-accent)}
@media (min-width:992px){
  /* Ketiganya (bahasa, tema, CTA) setinggi 48px agar rapi sejajar di navbar. */
  .nxtg-header .nxtg-actions>.btn{min-height:48px}
  .nxtg-nav{gap:.1rem}
  .nxtg-nav .nav-link[aria-current=page],.nxtg-nav .nav-link.is-active{color:var(--nxtg-text)}
  .nxtg-nav .nav-link[aria-current=page]::before,.nxtg-nav .nav-link.is-active::before{content:'';position:absolute;left:var(--bs-navbar-nav-link-padding-x);right:var(--bs-navbar-nav-link-padding-x);bottom:.2rem;height:2px;border-radius:2px;background:var(--nxtg-accent)}
  .nxtg-nav .dropdown-toggle.is-active::before{right:calc(var(--bs-navbar-nav-link-padding-x) + 1em)}
  .nxtg-mega{min-width:min(640px,92vw)}
  .nxtg-mega__grid{grid-template-columns:1fr 1fr}
  .nxtg-theme-toggle__text,.nxtg-theme-toggle .nxtg-switch{display:none}
}
/* Navbar melebar di >=992px (navbar-expand-lg), tapi antara 992-1199px isinya
   belum muat: logo + enam menu + bahasa + tema + CTA. Akibatnya "Cara Kerja"
   dan "Hubungi Kami" pecah jadi dua baris dan tinggi header melar. Dirapatkan
   khusus di rentang ini - bukan dengan menaikkan breakpoint ke xl, karena
   menu hamburger sampai 1200px justru terasa mundur di layar selebar itu. */
@media (min-width:992px) and (max-width:1199.98px){
  .container{--bs-gutter-x:2rem}
  .nxtg-header .navbar{--bs-navbar-nav-link-padding-x:.5rem}
  .nxtg-nav .nav-link{font-size:var(--nxtg-fs-sm);white-space:nowrap}
  .nxtg-brand{margin-right:.5rem}
  .nxtg-brand img{height:38px}
  .nxtg-actions{gap:.4rem}
  .nxtg-header .nxtg-actions>.btn{white-space:nowrap;padding-inline:.9rem}
  .nxtg-lang,.nxtg-theme-toggle{min-width:44px;padding:0 .5rem}
}
@media (max-width:991.98px){
  .nxtg-nav{margin-top:.5rem}
  .nxtg-nav .nav-link{justify-content:space-between;padding:.95rem 0;border-bottom:1px solid var(--nxtg-border);font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-title-sm);font-weight:700}
  .nxtg-nav .nav-link[aria-current=page],.nxtg-nav .nav-link.is-active{color:var(--nxtg-primary)}
  .nxtg-nav .dropdown-menu{--bs-dropdown-box-shadow:none;border:0;padding:.25rem 0 .75rem;background:transparent}
  .nxtg-actions{flex-direction:column;align-items:stretch;gap:.75rem;margin-top:1.5rem}
  .nxtg-actions .nxtg-theme-toggle,.nxtg-actions .nxtg-lang{justify-content:flex-start;width:100%;padding:0 1rem;border:1px solid var(--nxtg-border-strong);font-size:var(--nxtg-fs-base);letter-spacing:0}
  .nxtg-actions .btn{width:100%}
}

/* ---- 7. Kartu dasar & ikon ------------------------------------------------ */
.nxtg-card{position:relative;border:1px solid var(--nxtg-card-border);border-radius:var(--nxtg-radius-card);background:var(--nxtg-card-bg);box-shadow:var(--nxtg-card-shadow)}
[data-bs-theme=dark] .nxtg-card{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.nxtg-icon-badge{flex:none;display:grid;place-items:center;width:48px;height:48px;border-radius:10px;background:linear-gradient(140deg,#E7F2FF,#C9E0FF);color:#004CB8;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
[data-bs-theme=dark] .nxtg-icon-badge{background:linear-gradient(140deg,#CFEAFF,#6DB9FF);color:#0B0F14;box-shadow:0 8px 24px -10px rgba(80,170,255,.7)}
.nxtg-icon-badge svg{width:24px;height:24px}
.nxtg-glyph{display:block;width:60px;height:60px;color:var(--div-accent,var(--nxtg-accent))}
[data-bs-theme=dark] .nxtg-glyph{color:#FFFFFF}

/* Kartu fitur/layanan - label kanan atas, glyph besar, judul tebal. */
/* Kartu divisi memakai grid 5 baris (tag, glyph, judul, teks, CTA). Di dalam
   .nxtg-feat-grid baris-baris itu dipinjam dari grid induk lewat `subgrid`,
   jadi kelima kartu dalam satu baris memakai TINGGI BARIS YANG SAMA: judul dua
   baris pada satu kartu ikut melebarkan jalur judul kartu lain, sehingga awal
   deskripsi dan CTA tetap sejajar tanpa mengunci tinggi atau memotong teks.
   Terukur: sebelumnya awal deskripsi meleset 25,9px (tiga judul dua baris vs
   dua judul satu baris) di ID maupun EN. Dipilih subgrid, bukan min-height
   judul, karena panjang judul berubah menurut bahasa, lebar, dan zoom. */
.nxtg-feat{display:flex;flex-direction:column;height:100%;padding:clamp(1.5rem,1.2rem + 1vw,2.25rem);transition:border-color .3s ease,box-shadow .3s ease,transform .35s var(--nxtg-ease)}
.nxtg-feat::before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(80% 60% at 50% 0%,rgba(61,155,255,.16),transparent 70%);transition:opacity .35s ease}
.nxtg-feat:hover{transform:translateY(-4px);box-shadow:var(--nxtg-card-shadow-hover);border-color:color-mix(in srgb,var(--div-accent,var(--nxtg-accent)) 45%,transparent)}
.nxtg-feat:hover::before{opacity:1}
.nxtg-feat:has(.stretched-link:focus-visible){outline:2px solid var(--nxtg-focus);outline-offset:3px}
.nxtg-feat .stretched-link:focus-visible{outline:none}
.nxtg-feat__tag{align-self:flex-end;margin:0 0 1.25rem;font-size:var(--nxtg-fs-sm);font-weight:500;color:var(--nxtg-primary)}
[data-bs-theme=dark] .nxtg-feat__tag{color:#66A8FF}
.nxtg-feat__title{margin:1.75rem 0 .75rem;font-size:var(--nxtg-fs-title-lg);line-height:1.2}
.nxtg-feat__title a{color:inherit;text-decoration:none}
.nxtg-feat__text{margin:0;color:var(--nxtg-text-muted);font-size:var(--nxtg-fs-base);line-height:1.75}
.nxtg-feat__more{display:inline-flex;align-items:center;gap:.45rem;margin-top:auto;padding-top:1.5rem;font-weight:600;color:var(--nxtg-text)}
.nxtg-feat:hover .nxtg-feat__more{color:var(--nxtg-primary)}
.nxtg-feat:hover .nxtg-arrow{transform:translateX(3px)}

/* Kartu alasan - lencana ikon kiri, teks kanan, keduanya di baris yang sama.
   Sebelumnya ikon berdiri sendiri di baris 1 kolom 2 (kanan atas) sementara
   teks dipindah ke baris 2 selebar dua kolom, jadi kolom 1 baris 1 kosong dan
   judulnya masih menambah margin-top 1,5rem. Pada cara-kerja.blade.php yang
   satu kartunya hanya berisi SATU kalimat, ruang kosong itu lebih tinggi dari
   teksnya sendiri. Susunan ikon-kiri memakai satu baris untuk keduanya,
   sehingga tinggi kartu mengikuti panjang teks - di beranda (judul + paragraf)
   maupun di cara-kerja (satu kalimat). */
.nxtg-reason{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1rem 1.25rem;align-items:start;padding:clamp(1.35rem,1rem + 1vw,2rem)}
.nxtg-reason .nxtg-icon-badge{grid-column:1;grid-row:1}
.nxtg-reason__body{grid-column:2;grid-row:1}
.nxtg-reason__title{margin:0 0 .5rem;font-size:var(--nxtg-fs-title-sm)}
.nxtg-reason__text{margin:0;color:var(--nxtg-text-muted);line-height:1.7}
/* Kartu satu kalimat (cara-kerja) tidak menyisakan celah di bawah teks. */
.nxtg-reason__body>:last-child{margin-bottom:0}

/* Kotak angka nyata */
.nxtg-stat{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;padding:1.5rem 1rem;text-align:center}
.nxtg-stat__value{font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-h2);font-weight:700;line-height:1;letter-spacing:-.03em;color:var(--nxtg-text)}
.nxtg-stat__value span{color:var(--nxtg-accent)}
.nxtg-stat__label{margin:0;font-size:var(--nxtg-fs-sm);color:var(--nxtg-text-muted);line-height:1.4}

/* Daftar centang */
.nxtg-checks{list-style:none;margin:0;padding:0;display:grid;gap:.85rem}
.nxtg-checks li{display:flex;gap:.85rem;align-items:flex-start;font-size:var(--nxtg-fs-base);color:var(--nxtg-text)}
.nxtg-checks svg{flex:none;width:20px;height:20px;margin-top:.25rem;color:var(--div-accent,var(--nxtg-accent))}
.nxtg-checks--muted li{color:var(--nxtg-text-muted);font-size:var(--nxtg-fs-base)}
.nxtg-checks--cols{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));column-gap:1.5rem}

/* Chip / lencana */
.nxtg-badge{display:inline-flex;align-items:center;gap:.4rem;min-height:30px;padding:.25rem .75rem;border:1px solid var(--nxtg-card-border);border-radius:999px;background:var(--nxtg-surface);color:var(--nxtg-text);font-size:var(--nxtg-fs-caption);font-weight:500;line-height:1.2;text-decoration:none}
.nxtg-badge svg{width:14px;height:14px;color:var(--div-accent,var(--nxtg-accent))}
a.nxtg-badge{min-height:44px}
a.nxtg-badge:hover{border-color:var(--div-accent,var(--nxtg-accent));color:var(--nxtg-text)}
.nxtg-chip{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:.5rem 1.05rem;border:1px solid var(--nxtg-card-border);border-radius:var(--nxtg-radius-control);background:var(--nxtg-surface);color:var(--nxtg-text);font-size:var(--nxtg-fs-sm);font-weight:500;text-decoration:none;transition:border-color .2s ease,background .2s ease}
[data-bs-theme=dark] .nxtg-chip{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.1)}
.nxtg-chip:hover{border-color:var(--nxtg-accent);color:var(--nxtg-text)}
.nxtg-chip svg{width:16px;height:16px;color:var(--div-accent,var(--nxtg-accent))}
.nxtg-chip[aria-current=true]{background:var(--nxtg-text);border-color:var(--nxtg-text);color:var(--nxtg-bg)}
.nxtg-chip[aria-current=true] svg{color:var(--nxtg-bg)}
.nxtg-chip__count{font-size:var(--nxtg-fs-meta);opacity:.8}
.nxtg-filter{display:flex;flex-wrap:wrap;gap:.6rem;margin:0;padding:0;list-style:none}

/* Tab bergaris bawah (penyaring karya) */
.nxtg-tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:.25rem 1.75rem;margin:0 0 clamp(2rem,1.5rem + 2vw,3.25rem);padding:0;list-style:none}
/* Di bawah 768px enam penyaring membungkus jadi empat baris dan memakan ~400px
   tinggi sebelum karya pertama terlihat. Satu baris yang digulir mendatar
   menjaga semuanya sejajar dan sekali lihat; scrollbar disembunyikan, gulir
   tetap jalan lewat sentuh/trackpad. */
@media (max-width:767.98px){
  /* Tanpa scroll-snap: snapping meratakan tepi item pertama ke tepi snapport,
     yang MENELAN padding-inline di bawah - penyaring pertama jadi menempel ke
     tepi layar (terukur: kiri 0px, sementara kartu mulai di 20px). Gulir bebas
     sudah cukup untuk strip penyaring. */
  .nxtg-tabs{flex-wrap:nowrap;justify-content:flex-start;gap:0 1.25rem;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    /* ditarik ke tepi layar agar strip bisa digulir penuh, lalu didorong balik
       oleh padding supaya sejajar dengan kartu di bawahnya */
    margin-inline:calc(var(--bs-gutter-x,2.5rem) * -.5);padding-inline:calc(var(--bs-gutter-x,2.5rem) * .5)}
  .nxtg-tabs::-webkit-scrollbar{display:none}
  .nxtg-tabs>li{flex:none}
  .nxtg-tabs a{white-space:nowrap;font-size:var(--nxtg-fs-base)}
}
/* min-width menyusul min-height: label pendek seperti "All" di EN hanya
   selebar 24px, jadi target sentuhnya tinggi tapi terlalu sempit. */
.nxtg-tabs a{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px;min-width:44px;padding:0 .15rem;color:var(--nxtg-text-muted);font-size:var(--nxtg-fs-base);font-weight:500;text-decoration:none}
.nxtg-tabs a:hover{color:var(--nxtg-text)}
.nxtg-tabs a[aria-current=true],.nxtg-tabs a.is-active{color:var(--nxtg-text)}
.nxtg-tabs a[aria-current=true]::after,.nxtg-tabs a.is-active::after{content:'';position:absolute;left:0;right:0;bottom:4px;height:2px;border-radius:2px;background:var(--nxtg-text)}
.nxtg-tabs__count{font-size:var(--nxtg-fs-meta);opacity:.75}

/* ---- 8. Kartu karya ------------------------------------------------------- */
.nxtg-work{position:relative;display:flex;flex-direction:column;justify-content:flex-end;height:100%;min-height:320px;overflow:hidden;border-radius:var(--nxtg-radius-card);background:#0B0F14;color:#FFFFFF;isolation:isolate;transition:transform .4s var(--nxtg-ease),box-shadow .4s ease}
.nxtg-work:hover{transform:translateY(-4px);box-shadow:0 30px 60px -32px rgba(0,40,140,.6)}
.nxtg-work:has(.stretched-link:focus-visible){outline:2px solid var(--nxtg-focus);outline-offset:3px}
.nxtg-work .stretched-link:focus-visible{outline:none}
.nxtg-work__media{position:absolute;inset:0;z-index:-2}
.nxtg-work__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s var(--nxtg-ease)}
.nxtg-work:hover .nxtg-work__media img{transform:scale(1.045)}
.nxtg-work::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(11,15,20,0) 42%,rgba(11,15,20,.48) 66%,rgba(11,15,20,.92) 100%)}
/* Sampul generatif bila ERP belum punya gambar: bidang angkasa + glyph divisi. */
.nxtg-work__placeholder{position:absolute;inset:0;display:grid;place-items:start center;padding-top:13%;overflow:hidden;background:
  radial-gradient(60% 70% at 70% 20%,color-mix(in srgb,var(--div-accent,#006FFF) 55%,transparent),transparent 70%),
  radial-gradient(50% 60% at 15% 90%,rgba(40,90,255,.35),transparent 70%),
  linear-gradient(160deg,#14294F,#0B0F14)}
.nxtg-work__placeholder::before{content:'';position:absolute;inset:0;background-image:radial-gradient(1px 1px at 20% 30%,rgba(200,225,255,.8),transparent 60%),radial-gradient(1px 1px at 70% 60%,rgba(200,225,255,.6),transparent 60%),radial-gradient(1.5px 1.5px at 45% 80%,rgba(200,225,255,.7),transparent 60%),radial-gradient(1px 1px at 85% 25%,rgba(200,225,255,.6),transparent 60%);background-size:160px 160px;opacity:.7}
.nxtg-work__placeholder::after{content:'';position:absolute;left:50%;top:62%;width:150%;aspect-ratio:1;border-radius:50%;transform:translateX(-50%);box-shadow:inset 0 1.5px 0 rgba(150,205,255,.7),inset 0 30px 70px -30px rgba(0,110,255,.7);-webkit-mask-image:linear-gradient(#000 0,#000 18%,transparent 45%);mask-image:linear-gradient(#000 0,#000 18%,transparent 45%)}
.nxtg-work__placeholder svg{position:relative;width:clamp(44px,17%,80px);height:auto;color:rgba(220,236,255,.85);opacity:.3;filter:drop-shadow(0 0 18px rgba(0,111,255,.7))}
.nxtg-work--lead .nxtg-work__placeholder{padding-top:22%}
.nxtg-work--lead .nxtg-work__placeholder svg{opacity:.9}

/* Sampul generatif per divisi - bahasa visual sama dengan panel .nxtg-art di
   halaman layanan (kertas grafik untuk marketing, bidang warna untuk desain,
   kisi teknis untuk jaringan), diringkas untuk ukuran kartu kecil. Web
   Development & SaaS memakai gaya angkasa default di atas, tidak berubah. */
.nxtg-work__placeholder--ascend{background:
  radial-gradient(60% 70% at 75% 15%,color-mix(in srgb,var(--div-accent,#006FFF) 55%,transparent),transparent 70%),
  linear-gradient(160deg,#101B3D,#0B0F14)}
.nxtg-work__placeholder--ascend::before{background-image:linear-gradient(rgba(150,205,255,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(150,205,255,.16) 1px,transparent 1px);background-size:28px 28px;opacity:1;-webkit-mask-image:linear-gradient(to top,#000,transparent 88%);mask-image:linear-gradient(to top,#000,transparent 88%)}
.nxtg-work__placeholder--ascend::after{top:auto;bottom:-10%;left:-10%;width:85%;height:60%;aspect-ratio:auto;border-radius:0;transform:none;background:linear-gradient(35deg,transparent 40%,rgba(150,205,255,.4) 50%,transparent 60%);box-shadow:none;-webkit-mask-image:none;mask-image:none}

.nxtg-work__placeholder--artboard{background:
  radial-gradient(55% 65% at 80% 12%,color-mix(in srgb,var(--div-accent,#2440A8) 60%,transparent),transparent 70%),
  radial-gradient(45% 55% at 12% 88%,rgba(150,205,255,.28),transparent 70%),
  linear-gradient(155deg,#141634,#0B0F14)}
.nxtg-work__placeholder--artboard::before{background-image:radial-gradient(10px 10px at 22% 28%,rgba(102,168,255,.5),transparent 70%),radial-gradient(7px 7px at 78% 62%,rgba(200,225,255,.55),transparent 70%),radial-gradient(5px 5px at 55% 82%,rgba(255,255,255,.4),transparent 70%);background-size:auto;opacity:1}
.nxtg-work__placeholder--artboard::after{display:none}

.nxtg-work__placeholder--mesh{background:
  radial-gradient(55% 60% at 50% 100%,rgba(20,41,79,.9),transparent 70%),#0B0F14}
.nxtg-work__placeholder--mesh::before{background-image:linear-gradient(rgba(150,205,255,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(150,205,255,.16) 1px,transparent 1px);background-size:26px 26px;opacity:1;-webkit-mask-image:radial-gradient(70% 70% at 50% 40%,#000,transparent 90%);mask-image:radial-gradient(70% 70% at 50% 40%,#000,transparent 90%)}
.nxtg-work__placeholder--mesh::after{display:none}
.nxtg-work__pill{position:absolute;top:1rem;left:1rem;display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .75rem;border-radius:999px;background:#FFFFFF;color:#0B0F14;font-size:var(--nxtg-fs-meta);font-weight:600;line-height:1.2}
.nxtg-work__pill svg{width:14px;height:14px;color:#005CE0}
.nxtg-work__year{position:absolute;top:1rem;right:1rem;padding:.3rem .6rem;border-radius:999px;background:rgba(11,15,20,.6);color:#FFFFFF;font-size:var(--nxtg-fs-meta);font-weight:500}
.nxtg-work__body{position:relative;padding:1.1rem 1.25rem 1.25rem}
@media (min-width:768px){.nxtg-work__body{padding:1.25rem 1.4rem 1.4rem}}
.nxtg-work__title{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:0;font-size:var(--nxtg-fs-title-sm);line-height:var(--nxtg-lh-title);color:#FFFFFF}
.nxtg-work__title a{color:inherit;text-decoration:none}
.nxtg-work__summary{margin:.45rem 0 0;font-size:var(--nxtg-fs-sm);line-height:1.6;color:rgba(226,234,250,.86);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* CTA WhatsApp per karya - menggantikan ringkasan harga. z-index:2 WAJIB:
   .stretched-link pada judul menghamparkan ::after ke seluruh kartu, jadi tanpa
   ini tombol tertimbun dan klik jatuh ke tautan detail. */
.nxtg-work__cta{position:relative;z-index:2;display:inline-flex;align-items:center;gap:.5rem;align-self:flex-start;min-height:44px;margin:.9rem 0 0;padding:.5rem 1.05rem;border-radius:999px;background:#FFFFFF;color:#0B0F14;font-size:var(--nxtg-fs-sm);font-weight:600;line-height:1.2;text-decoration:none;transition:background .25s ease,color .25s ease,transform .25s var(--nxtg-ease)}
.nxtg-work__cta svg{flex:none;width:18px;height:18px;color:#128C7E;transition:color .25s ease}
.nxtg-work__cta:hover,.nxtg-work__cta:focus-visible{background:#25D366;color:#0B0F14;transform:translateY(-1px)}
.nxtg-work__cta:hover svg,.nxtg-work__cta:focus-visible svg{color:#0B0F14}
.nxtg-work__price{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem;margin:.85rem 0 0;padding-top:.8rem;border-top:1px solid rgba(255,255,255,.16);font-size:var(--nxtg-fs-caption);color:rgba(226,234,250,.86)}
.nxtg-work__price strong{font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-base);font-weight:700;color:#FFFFFF}
.nxtg-work__more{margin-left:auto;font-size:var(--nxtg-fs-meta)}
.nxtg-work--lead{min-height:clamp(380px,40vw,560px)}
.nxtg-work--lead .nxtg-work__title{font-size:var(--nxtg-fs-title-md);-webkit-line-clamp:3;line-clamp:3}
.nxtg-work--lead .nxtg-work__summary{-webkit-line-clamp:3;line-clamp:3;max-width:60ch}

/* Galeri karya bergaya mosaik */
.nxtg-mosaic{display:grid;gap:1.25rem;grid-template-columns:1fr;list-style:none;margin:0;padding:0}
@media (min-width:768px){.nxtg-mosaic{grid-template-columns:repeat(2,minmax(0,1fr))}.nxtg-mosaic>li:first-child{grid-column:1/-1}.nxtg-mosaic[data-count="2"]>li:first-child,.nxtg-mosaic[data-count="4"]>li:first-child{grid-column:auto}}
@media (min-width:1200px){
  /* Satu karya besar 2x2 + sisanya 1x1 di kanan (pas untuk 3-5 karya). */
  .nxtg-mosaic{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:290px}
  .nxtg-mosaic>li:first-child{grid-column:span 2;grid-row:span 2}
  .nxtg-mosaic[data-count="1"]>li:first-child{grid-column:1/-1}
  .nxtg-mosaic[data-count="2"]>li{grid-column:span 2;grid-row:span 2}
  .nxtg-mosaic[data-count="3"]>li:not(:first-child),.nxtg-mosaic[data-count="4"]>li:last-child{grid-column:span 2}
  .nxtg-mosaic>li .nxtg-work{min-height:0}
}
.nxtg-grid-works{display:grid;gap:1.5rem;grid-template-columns:1fr;list-style:none;margin:0;padding:0}
@media (min-width:768px){.nxtg-grid-works{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1200px){.nxtg-grid-works{grid-template-columns:repeat(3,minmax(0,1fr))}}
.nxtg-grid-works .nxtg-work{min-height:360px}

/* ---- 9. Langkah proses bernomor ------------------------------------------ */
.nxtg-steps{list-style:none;margin:0;padding:0}
.nxtg-step{display:grid;grid-template-columns:auto 1fr;gap:.25rem 1.75rem;padding:1.6rem 0;border-bottom:1px solid var(--nxtg-border)}
.nxtg-step:first-child{padding-top:0}
.nxtg-step:last-child{border-bottom:0}
.nxtg-step__num{font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-h2);font-weight:600;line-height:1;letter-spacing:-.04em;min-width:2.2ch;background:var(--nxtg-heading-grad);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.nxtg-step__title{margin:0 0 .45rem;font-size:var(--nxtg-fs-title-md);line-height:1.3}
.nxtg-step__text{margin:0;color:var(--nxtg-text-muted);line-height:1.75}
.nxtg-steps--grid{display:grid;gap:1.25rem}
@media (min-width:768px){.nxtg-steps--grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1200px){.nxtg-steps--grid{grid-template-columns:repeat(var(--steps,4),minmax(0,1fr))}}
.nxtg-steps--grid .nxtg-step{display:flex;flex-direction:column;gap:0;height:100%;padding:clamp(1.5rem,1.2rem + 1vw,2rem);border:1px solid var(--nxtg-card-border);border-radius:var(--nxtg-radius-card);background:var(--nxtg-card-bg);box-shadow:var(--nxtg-card-shadow)}
.nxtg-steps--grid .nxtg-step__num{margin-bottom:1.5rem}

/* ---- 10. Marquee kapabilitas --------------------------------------------- */
.nxtg-marquee{position:relative;display:grid;gap:1.1rem;overflow:hidden;padding-block:.5rem;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
/* Jarak antar-chip ditulis sebagai margin-right pada tiap <li>, BUKAN sebagai
   gap pada row/list. Dengan gap, lebar lintasan = 2L + g sementara animasi
   menggeser -50% (= L + g/2), jadi setiap putaran melompat g/2 - terukur 8,78px
   dan 8,82px pada kedua baris. Margin per chip membuat satuan ulangnya seragam,
   sehingga -50% mendarat tepat di batas chip dan loop-nya benar-benar mulus
   tanpa perlu menghitung gap sama sekali. */
.nxtg-marquee__row{display:flex;width:max-content;gap:0;animation:nxtg-marquee var(--dur,48s) linear infinite}
.nxtg-marquee__row--rev{animation-direction:reverse}
/* Jeda tanpa tombol: menyorot atau memfokus lintasan menghentikannya. */
.nxtg-marquee:hover .nxtg-marquee__row,
.nxtg-marquee:focus-within .nxtg-marquee__row{animation-play-state:paused}
.nxtg-marquee__list{display:flex;gap:0;margin:0;padding:0;list-style:none}
.nxtg-marquee__list>li{margin-right:1.1rem}

/* Kepala section + tombol jeda sejajar. Tombol hanya berguna dengan JS. */
.nxtg-tag{display:inline-flex;align-items:center;gap:.6rem;padding:.95rem 1.5rem;border:1px solid var(--nxtg-card-border);border-radius:var(--nxtg-radius-control);background:var(--nxtg-surface);box-shadow:0 12px 30px -22px rgba(16,42,94,.35);font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-title-xs);font-weight:600;white-space:nowrap;color:var(--nxtg-text)}
[data-bs-theme=dark] .nxtg-tag{background:rgba(255,255,255,.04);border-color:rgba(140,170,255,.14);box-shadow:none}
.nxtg-tag svg{width:18px;height:18px;color:var(--div-accent,var(--nxtg-accent))}
@keyframes nxtg-marquee{to{transform:translateX(-50%)}}
/* Tampilan statis: hanya daftar unik (semua salinan dekoratif ber-aria-hidden,
   termasuk seluruh baris kedua), dibungkus rapi tanpa mask tepi dan tanpa
   tombol jeda karena tidak ada yang bergerak. Dipakai pada dua kondisi:
   (1) prefers-reduced-motion, (2) layar sempit - lintasan berisi tiga salinan
   dari enam chip yang sama terasa seperti pengisi ruang di lebar telepon,
   sedangkan grid statisnya terbaca sekali dan selesai. */
@media (prefers-reduced-motion:reduce),(max-width:767.98px){
  .nxtg-marquee{-webkit-mask-image:none;mask-image:none}
  .nxtg-marquee__row{animation:none;width:auto}
  .nxtg-marquee__list[aria-hidden=true]{display:none}
  .nxtg-marquee__list{flex-wrap:wrap;justify-content:center;gap:.6rem}
  .nxtg-marquee__list>li{margin-right:0}
}

/* ---- 11. Kutipan & slider ------------------------------------------------- */
.nxtg-quote{display:flex;flex-direction:column;gap:1.5rem;height:100%;margin:0;padding:clamp(1.5rem,3vw,2.25rem)}
.nxtg-quote__mark{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--nxtg-text);color:var(--nxtg-bg)}
.nxtg-quote__mark svg{width:24px;height:24px}
.nxtg-quote blockquote{flex:1;margin:0;font-size:var(--nxtg-fs-md);line-height:1.75;color:var(--nxtg-text)}
.nxtg-quote figcaption{display:flex;align-items:center;gap:.875rem;font-size:var(--nxtg-fs-sm);color:var(--nxtg-text-muted)}
.nxtg-quote figcaption strong{display:block;color:var(--nxtg-text);font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-md);font-weight:700}
.nxtg-quote__logo{height:28px;width:auto;max-width:5rem;object-fit:contain}
.nxtg-slider:not(.swiper-initialized) .swiper-wrapper{display:grid;gap:1.5rem;grid-template-columns:1fr;transform:none!important}
@media (min-width:768px){.nxtg-slider:not(.swiper-initialized) .swiper-wrapper{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1200px){.nxtg-slider[data-per-view-lg="3"]:not(.swiper-initialized) .swiper-wrapper{grid-template-columns:repeat(3,minmax(0,1fr))}}
.nxtg-slider:not(.swiper-initialized) .swiper-slide{width:auto}
.nxtg-slider .swiper-slide{height:auto}
.nxtg-slider-controls{display:flex;align-items:center;justify-content:center;gap:.6rem;margin-top:2rem}
.nxtg-slider-controls[hidden]{display:none}
/* flex:none wajib - tombol ini duduk di baris flex, dan tanpa itu
   flex-shrink memerasnya jadi 39px di 360px (target sentuh < 44px). */
.nxtg-slider-btn{display:grid;place-items:center;flex:none;width:56px;height:56px;padding:0;border:1px solid var(--nxtg-border-strong);border-radius:50%;background:transparent;color:var(--nxtg-text)}
.nxtg-slider-btn:hover{border-color:var(--nxtg-accent);color:var(--nxtg-primary)}
.nxtg-slider-btn.is-disabled{opacity:.35;cursor:default}
.nxtg-slider-btn svg{width:22px;height:22px}
.nxtg-slider-status{min-width:4rem;text-align:center;font-size:var(--nxtg-fs-sm);color:var(--nxtg-text-muted)}
.nxtg-slider-status.swiper-pagination-lock,.nxtg-slider-btn.swiper-button-lock{display:none}

/* ---- 12. Akordeon - pertanyaan tebal besar, garis bawah ------------------- */
.accordion{--bs-accordion-bg:transparent;--bs-accordion-color:var(--nxtg-text);--bs-accordion-border-color:var(--nxtg-border);--bs-accordion-border-width:0;--bs-accordion-border-radius:0;--bs-accordion-inner-border-radius:0;--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1.5rem;--bs-accordion-btn-color:var(--nxtg-text);--bs-accordion-btn-bg:transparent;--bs-accordion-active-color:var(--nxtg-text);--bs-accordion-active-bg:transparent;--bs-accordion-btn-focus-box-shadow:none;--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:0}
.accordion-item{border-bottom:1px solid var(--nxtg-border)!important}
.accordion-item:has(.accordion-button:not(.collapsed)){border-bottom-color:var(--nxtg-text)!important}
.accordion-button{gap:1.25rem;min-height:64px;font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-title-md);font-weight:700;line-height:1.35;letter-spacing:-.015em}
.accordion-button:focus-visible{z-index:3;outline:2px solid var(--nxtg-focus);outline-offset:-3px}
.accordion-button::after{width:1.1rem;height:1.1rem;background-size:1.1rem;background-image:none;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat}
.accordion-button:not(.collapsed){box-shadow:none}
.accordion-body{padding-bottom:1.6rem;color:var(--nxtg-text-muted);font-size:var(--nxtg-fs-base);line-height:1.8;border-top:1px solid var(--nxtg-border);padding-top:1.25rem}
.accordion-body p:last-child{margin-bottom:0}
html:not(.nxtg-js) .accordion .collapse{display:block}

/* ---- 13. Form ------------------------------------------------------------- */
.form-label{margin-bottom:.45rem;font-weight:600;font-size:var(--nxtg-fs-sm);color:var(--nxtg-text)}
.form-control,.form-select{min-height:52px;padding:.8rem 1rem;border-color:var(--nxtg-control-border);border-radius:var(--nxtg-radius-control);background-color:var(--nxtg-surface-2);color:var(--nxtg-text);font-size:var(--nxtg-fs-base)}
[data-bs-theme=dark] .form-control,[data-bs-theme=dark] .form-select{background-color:rgba(11,15,20,.6)}
.form-select{padding-right:2.5rem}
/* Daftar pilihan native digambar OS/browser dari warna KOMPUTASI select-nya,
   bukan dari elemen di halaman. Kontrol kita sengaja tembus pandang (bar
   konsultasi `transparent`, select gelap `rgba(11,15,20,.6)`), jadi Chrome di
   Windows tidak punya warna latar untuk dipakai dan jatuh ke putih - sementara
   teks option tetap mewarisi `--nxtg-text` yang di tema gelap PUTIH, sehingga
   popup-nya putih di atas putih dan tidak terbaca. `color-scheme` saja tidak
   menolong karena background transparan yang eksplisit tetap menang. Karena itu
   option membawa pasangan warna solidnya sendiri (#FFFFFF di #151B23 = 15,8:1;
   #0B0F14 di #FFFFFF = 19,2:1). Ini juga berlaku untuk select di halaman
   kontak, bukan hanya bar konsultasi. */
.form-select option,.form-select optgroup{background-color:var(--nxtg-surface);color:var(--nxtg-text)}
.form-control::placeholder{color:var(--nxtg-text-muted);opacity:1}
.form-control:focus,.form-select:focus{border-color:var(--nxtg-focus);box-shadow:0 0 0 1px var(--nxtg-focus),0 0 0 5px color-mix(in srgb,var(--nxtg-focus) 18%,transparent);outline:0;background-color:var(--nxtg-surface);color:var(--nxtg-text)}
.form-control:disabled,.form-select:disabled{opacity:.7}
.form-control.is-invalid,.form-select.is-invalid{border-color:var(--nxtg-danger-text);background-image:none;padding-right:1rem}
.form-select.is-invalid{padding-right:2.5rem;background-image:var(--bs-form-select-bg-img)}
.form-control.is-invalid:focus,.form-select.is-invalid:focus{border-color:var(--nxtg-danger-text);box-shadow:0 0 0 1px var(--nxtg-danger-text)}
.invalid-feedback{display:none;align-items:flex-start;gap:.4rem;margin-top:.4rem;color:var(--nxtg-danger-text);font-size:var(--nxtg-fs-caption);font-weight:500}
.is-invalid~.invalid-feedback{display:flex}
.form-text{color:var(--nxtg-text-muted);font-size:var(--nxtg-fs-caption)}
.nxtg-req{color:var(--nxtg-danger-text)}
.nxtg-form-card{padding:clamp(1.35rem,1rem + 2vw,2.75rem)}
.nxtg-smart{padding:1.25rem;border:1px solid var(--nxtg-card-border);border-radius:var(--nxtg-radius-card);background:var(--nxtg-accent-soft)}
.nxtg-smart[hidden]{display:none}
.nxtg-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}

/* Batang konsultasi cepat (pola "prompt bar" referensi) */
.nxtg-consult{display:flex;flex-wrap:wrap;gap:.6rem;max-width:880px;margin-inline:auto;padding:.6rem;border:1px solid var(--nxtg-card-border);border-radius:calc(var(--nxtg-radius-control) + 6px);background:var(--nxtg-surface);box-shadow:0 30px 60px -36px rgba(16,42,94,.45)}
[data-bs-theme=dark] .nxtg-consult{background:rgba(21,27,35,.78);border-color:rgba(140,170,255,.16);box-shadow:0 0 0 1px rgba(61,155,255,.08),0 40px 80px -40px rgba(0,60,200,.6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.nxtg-consult .form-select,.nxtg-consult .form-control{min-height:54px;border-color:transparent;background-color:transparent}
.nxtg-consult .form-select{flex:1 1 200px;max-width:100%}
.nxtg-consult .form-control{flex:3 1 260px}
.nxtg-consult .form-select:focus,.nxtg-consult .form-control:focus{background-color:var(--nxtg-surface-2)}
[data-bs-theme=dark] .nxtg-consult .form-select:focus,[data-bs-theme=dark] .nxtg-consult .form-control:focus{background-color:rgba(255,255,255,.05)}
.nxtg-consult__sep{align-self:stretch;width:1px;margin-block:.6rem;background:var(--nxtg-border)}
.nxtg-consult .btn{flex:0 0 auto;min-height:54px}
@media (max-width:767.98px){.nxtg-consult__sep{display:none}.nxtg-consult .btn{flex:1 1 100%}.nxtg-consult .form-select{border-bottom:1px solid var(--nxtg-border);border-radius:var(--nxtg-radius-control) var(--nxtg-radius-control) 0 0}}
.nxtg-quick{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.75rem 1rem;margin:1.9rem 0 0}.nxtg-quick .nxtg-filter{justify-content:center}
.nxtg-quick__label{font-weight:600;color:var(--nxtg-text);margin-right:.25rem}

/* ---- 14. Status (alert, kosong), pagination ------------------------------- */
.nxtg-alert{display:flex;gap:.75rem;align-items:flex-start;padding:1rem 1.25rem;border:1px solid;border-radius:var(--nxtg-radius-card);font-size:var(--nxtg-fs-sm)}
.nxtg-alert svg{flex:none;width:20px;height:20px;margin-top:.1rem}
.nxtg-alert ul{margin:.35rem 0 0;padding-left:1.1rem}
.nxtg-alert:focus{outline:2px solid var(--nxtg-focus);outline-offset:3px}
.nxtg-alert--danger{color:var(--nxtg-danger-text);background:var(--nxtg-danger-bg);border-color:var(--bs-danger-border-subtle)}
.nxtg-alert--success{color:var(--nxtg-success-text);background:var(--nxtg-success-bg);border-color:var(--bs-success-border-subtle)}
.nxtg-alert--info{color:var(--nxtg-info-text);background:var(--nxtg-info-bg);border-color:var(--bs-info-border-subtle)}
.nxtg-empty{padding:clamp(1.75rem,4vw,3.25rem);text-align:center}
.nxtg-empty .nxtg-icon-badge{margin:0 auto 1.25rem}
.nxtg-empty p{max-width:52ch;margin-inline:auto;color:var(--nxtg-text-muted)}
.pagination{--bs-pagination-color:var(--nxtg-text);--bs-pagination-bg:transparent;--bs-pagination-border-color:var(--nxtg-border-strong);--bs-pagination-hover-color:var(--nxtg-text);--bs-pagination-hover-bg:var(--nxtg-accent-soft);--bs-pagination-hover-border-color:var(--nxtg-accent);--bs-pagination-focus-color:var(--nxtg-text);--bs-pagination-focus-bg:var(--nxtg-accent-soft);--bs-pagination-focus-box-shadow:none;--bs-pagination-active-color:#FFFFFF;--bs-pagination-active-bg:#005CE0;--bs-pagination-active-border-color:#005CE0;--bs-pagination-disabled-color:var(--nxtg-text-muted);--bs-pagination-disabled-bg:transparent;--bs-pagination-disabled-border-color:var(--nxtg-border);flex-wrap:wrap;gap:.45rem}
.page-link{display:flex;align-items:center;justify-content:center;min-width:48px;min-height:48px;border-radius:var(--nxtg-radius-control)!important;font-weight:600}
.page-item:not(:first-child) .page-link{margin-left:0}
.page-link:focus-visible{outline:2px solid var(--nxtg-focus);outline-offset:2px}

/* ---- 15. Harga ------------------------------------------------------------ */
.nxtg-prices{display:grid;gap:.85rem;margin:0;padding:0;list-style:none}
.nxtg-price{min-width:0;padding:1.1rem 1.25rem;border:1px solid var(--nxtg-card-border);border-radius:var(--nxtg-radius-control);background:var(--nxtg-surface-2)}
[data-bs-theme=dark] .nxtg-price{background:rgba(255,255,255,.04)}
.nxtg-price__label{margin:0;font-size:var(--nxtg-fs-caption);font-weight:600;color:var(--nxtg-text-muted)}
.nxtg-price__amount{margin:.3rem 0 0;font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-title-lg);font-weight:700;line-height:1.15;letter-spacing:-.025em;color:var(--nxtg-text);overflow-wrap:anywhere}
.nxtg-price__period{font-family:var(--nxtg-font-body);font-size:var(--nxtg-fs-sm);font-weight:500;letter-spacing:0;color:var(--nxtg-text-muted)}
.nxtg-price__meta{margin:.25rem 0 0;font-size:var(--nxtg-fs-caption);color:var(--nxtg-text-muted)}
.nxtg-price-note{margin:.9rem 0 0;font-size:var(--nxtg-fs-caption);line-height:1.6;color:var(--nxtg-text-muted)}

/* ---- 16. Galeri & video --------------------------------------------------- */
.nxtg-gallery{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));margin:0;padding:0;list-style:none}
.nxtg-gallery__fig{margin:0}
.nxtg-gallery__link{position:relative;display:block;overflow:hidden;aspect-ratio:16/10;border-radius:var(--nxtg-radius-card);background:#0B0F14}
.nxtg-gallery__link img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--nxtg-ease)}
.nxtg-gallery__link:hover img{transform:scale(1.04)}
.nxtg-gallery__zoom{position:absolute;right:.75rem;bottom:.75rem;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:rgba(11,15,20,.72);color:#FFFFFF}
.nxtg-gallery__zoom svg{width:18px;height:18px}
.nxtg-gallery__caption{margin-top:.6rem;font-size:var(--nxtg-fs-caption);color:var(--nxtg-text-muted)}
.nxtg-gallery .nxtg-work__placeholder svg{margin:0}
.nxtg-video{position:relative;overflow:hidden;aspect-ratio:16/9;border-radius:var(--nxtg-radius-card);background:#0B0F14}
.nxtg-video__trigger{position:absolute;inset:0;display:block;color:#FFFFFF}
.nxtg-video__trigger img{width:100%;height:100%;object-fit:cover;opacity:.8}
.nxtg-video__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:.65rem;padding:.5rem 1.15rem .5rem .5rem;border-radius:999px;background:rgba(11,15,20,.8);color:#FFFFFF;font-weight:600;white-space:nowrap}
.nxtg-video__play svg{width:40px;height:40px;padding:10px;border-radius:50%;background:var(--nxtg-grad-btn)}
.nxtg-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.glightbox-clean .gslide-description{background:var(--nxtg-surface)}
.glightbox-clean .gslide-title{margin-bottom:.25rem;color:var(--nxtg-text);font-family:var(--nxtg-font-display);font-size:var(--nxtg-fs-base);font-weight:700}
.glightbox-clean .gslide-desc{color:var(--nxtg-text-muted);font-family:var(--nxtg-font-body);font-size:var(--nxtg-fs-sm)}
.glightbox-clean .gdesc-inner{padding:1rem 1.25rem}
.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(11,15,20,.78);border-radius:50%}
.glightbox-clean .gclose{width:44px;height:44px}
.glightbox-container .gbtn:focus-visible{outline:2px solid #66A8FF;outline-offset:2px}

/* ---- 17. Banner halaman internal ------------------------------------------
   Judul tengah + breadcrumb di atas bidang angkasa (pola banner referensi,
   tanpa foto stok: partikel, cahaya planet, garis kontur). */
.nxtg-banner{display:flex;align-items:center;min-height:clamp(320px,26vw + 180px,500px);padding-block:clamp(3.5rem,6vw,6rem);text-align:center;background:var(--nxtg-bg-deep)}
[data-bs-theme=dark] .nxtg-banner{background:radial-gradient(90% 120% at 50% 0%,#14294F,#0B0F14 72%)}
.nxtg-banner .nxtg-planet{--planet-top:62%;--planet-size:min(1500px,190vw)}
.nxtg-banner .nxtg-space__topo{opacity:.55;-webkit-mask-size:cover;mask-size:cover}
.nxtg-banner__inner{position:relative;z-index:2;max-width:56rem;margin-inline:auto}
.nxtg-banner__meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.6rem .9rem;margin-bottom:1.25rem}
.nxtg-banner .nxtg-h1{margin:0}
.nxtg-banner .nxtg-lead{margin:1.15rem auto 0}
.nxtg-banner .breadcrumb{justify-content:center;margin:1.4rem 0 0}
.nxtg-banner .nxtg-actions-row{justify-content:center}
.breadcrumb{--bs-breadcrumb-divider-color:var(--nxtg-text-muted);--bs-breadcrumb-item-active-color:var(--nxtg-primary);--bs-breadcrumb-margin-bottom:0;--bs-breadcrumb-item-padding-x:.6rem;font-size:var(--nxtg-fs-base);font-weight:500}
[data-bs-theme=dark] .breadcrumb{--bs-breadcrumb-item-active-color:#66A8FF}
.breadcrumb a{color:var(--nxtg-text);text-decoration:underline;text-decoration-thickness:1.5px}
.breadcrumb a:hover{color:var(--nxtg-primary)}
.nxtg-actions-row{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2.25rem}

/* ---- 18. Banner penutup (panel seni + panel kontur) ----------------------- */
.nxtg-meet{display:grid;gap:12px;padding:12px}
@media (min-width:992px){.nxtg-meet{grid-template-columns:1fr 1fr;padding:12px 12px 0}}
.nxtg-meet__art,.nxtg-meet__body{position:relative;overflow:hidden;min-height:clamp(320px,32vw,520px);border-radius:var(--nxtg-radius-panel)}
.nxtg-meet__art{display:grid;place-items:center;background:radial-gradient(80% 90% at 50% 100%,#14294F,#0B0F14 74%)}
.nxtg-meet__art .nxtg-planet{--planet-top:48%;--planet-size:115%}
.nxtg-meet__logo{position:relative;z-index:2;width:min(52%,300px);height:auto;filter:brightness(0) invert(1) drop-shadow(0 0 30px rgba(80,160,255,.6));margin-bottom:12%}
.nxtg-meet__body{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(2rem,4vw,4rem);text-align:center;background:var(--nxtg-bg-deep)}
[data-bs-theme=dark] .nxtg-meet__body{background:radial-gradient(90% 90% at 50% 100%,#14294F,#0B0F14 72%)}
.nxtg-meet__body>*{position:relative;z-index:2}
.nxtg-meet__body .nxtg-lead{margin:1.1rem auto 0;max-width:48ch}
.nxtg-meet__body .nxtg-actions-row{justify-content:center;margin-top:2rem}
.nxtg-social{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin:1.75rem 0 0;padding:0;list-style:none}
.nxtg-social a{display:grid;place-items:center;width:46px;height:46px;border-radius:var(--nxtg-radius-control);background:var(--nxtg-surface);border:1px solid var(--nxtg-card-border);color:var(--nxtg-text)}
[data-bs-theme=dark] .nxtg-social a{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.1)}
.nxtg-social a:hover{border-color:var(--nxtg-accent);color:var(--nxtg-primary)}
.nxtg-social svg{width:20px;height:20px}

/* ---- 19. Footer (selalu gelap - jangkar halaman) --------------------------- */
.nxtg-footer{position:relative;overflow:hidden;background:#0B0F14;color:var(--nxtg-text-muted);padding-block:clamp(3.5rem,2.5rem + 3vw,5.5rem) 0}
.nxtg-footer a:not(.btn){color:var(--nxtg-text);text-decoration:none}
.nxtg-footer a:not(.btn):hover{color:#8BBDFF;text-decoration:underline}
.nxtg-footer__brand img{height:44px;width:auto}
.nxtg-footer__title{margin:0 0 1.35rem;font-size:var(--nxtg-fs-title-sm);font-weight:700;color:#FFFFFF}
.nxtg-footer__big{margin:1.5rem 0 0;font-size:var(--nxtg-fs-h2);line-height:1.1;letter-spacing:-.03em}
.nxtg-footer__text{margin:1rem 0 0;max-width:44ch;line-height:1.75}
.nxtg-footer__form{display:flex;gap:.5rem;max-width:520px;margin-top:1.75rem;padding:.4rem;border-radius:calc(var(--nxtg-radius-control) + 4px);background:#FFFFFF}
.nxtg-footer__form .form-control{flex:1;min-width:0;min-height:50px;border:0;background:transparent;color:#0B0F14}
.nxtg-footer__form .form-control::placeholder{color:#57616F}
.nxtg-footer__form .form-control:focus{box-shadow:none;background:transparent;color:#0B0F14}
.nxtg-footer__form:focus-within{outline:2px solid #66A8FF;outline-offset:3px}
.nxtg-footer__list{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}
.nxtg-footer__list a{display:inline-flex;align-items:center;gap:.5rem;min-height:40px;font-size:var(--nxtg-fs-base)}
.nxtg-footer__divider{display:none}
@media (min-width:992px){.nxtg-footer__divider{display:block;position:absolute;left:0;top:0;bottom:0;width:1px;background:linear-gradient(transparent,rgba(92,172,255,.6),transparent)}}
.nxtg-contact-lines{list-style:none;margin:0;padding:0;display:grid;gap:.9rem}
.nxtg-contact-lines li{display:flex;gap:.75rem;align-items:flex-start;line-height:1.55}
.nxtg-contact-lines svg{flex:none;width:20px;height:20px;margin-top:.15rem;color:#66A8FF}
.nxtg-footer__bottom{position:relative;display:flex;flex-wrap:wrap;gap:.75rem 2rem;justify-content:space-between;align-items:center;margin-top:clamp(3rem,4vw,4.5rem);padding-block:1.6rem;border-top:1px solid rgba(140,170,255,.14);font-size:var(--nxtg-fs-sm)}
.nxtg-footer__bottom::before{content:'';position:absolute;left:50%;top:-1px;width:70px;height:2px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#3D9BFF,transparent)}
.nxtg-footer__bottom p{margin:0}
.nxtg-footer__legal{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin:0;padding:0;list-style:none}
@media (max-width:767.98px){.nxtg-footer__bottom{padding-bottom:88px}}

/* ---- 20. Tombol WhatsApp melayang ----------------------------------------- */
/* Bentuk pil, bukan lingkaran: di perangkat berkursor label "Chat via WhatsApp"
   melebar saat disorot, jadi tujuannya jelas tanpa menebak ikon. Di layar
   sentuh label disembunyikan (lebar 0) supaya tetap ringkas. */
.nxtg-wa{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:var(--nxtg-z-float);display:inline-flex;align-items:center;gap:0;height:56px;padding:0 14px;border-radius:999px;background:#128C7E;color:#FFFFFF;font-size:var(--nxtg-fs-sm);font-weight:600;line-height:1;text-decoration:none;box-shadow:var(--nxtg-shadow-float);transition:opacity .2s ease,visibility .2s ease,transform .25s var(--nxtg-ease),background .2s ease,gap .3s var(--nxtg-ease)}
.nxtg-wa:hover{color:#FFFFFF;background:#0E6F63;transform:translateY(-2px)}
.nxtg-wa svg{flex:none;width:28px;height:28px}
.nxtg-wa__label{max-width:0;overflow:hidden;white-space:nowrap;opacity:0;transition:max-width .35s var(--nxtg-ease),opacity .25s ease}
@media (hover:hover) and (pointer:fine){
  .nxtg-wa:hover,.nxtg-wa:focus-visible{gap:.55rem}
  .nxtg-wa:hover .nxtg-wa__label,.nxtg-wa:focus-visible .nxtg-wa__label{max-width:12rem;opacity:1}
}
.nxtg-wa.is-hidden{opacity:0;visibility:hidden;transform:translateY(12px)}
/* Layar kecil: tombol mengambang di atas konten, jadi ekor tiap halaman diberi
   ruang bebas setinggi tombol + jarak aman. Tanpa ini tombol menutupi kartu
   terakhir, pagination, atau tombol kirim form. */
@media (max-width:991.98px){
  .nxtg-wa{height:52px;padding:0 12px}
  .nxtg-wa svg{width:26px;height:26px}
  body:has(.nxtg-wa) main{padding-bottom:calc(56px + max(16px,env(safe-area-inset-bottom)))}
}

/* ---- 21. Teks kaya -------------------------------------------------------- */
.rich-text>*+*{margin-top:.9rem}
.rich-text>*{margin-bottom:0}
.rich-text ul{list-style:none;padding-left:0}
.rich-text ol{padding-left:1.25rem}
.rich-text li+li{margin-top:.45rem}
.rich-text ul>li{position:relative;padding-left:1.6rem}
.rich-text ul>li::before{content:'';position:absolute;left:0;top:.45em;width:1rem;height:1rem;background:var(--nxtg-accent);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat}
.rich-text strong{font-weight:700;color:var(--nxtg-text)}
.rich-text a{color:var(--nxtg-primary);text-decoration:underline}
.rich-text blockquote{margin:0;padding:.25rem 0 .25rem 1rem;border-left:2px solid var(--nxtg-accent);color:var(--nxtg-text)}

/* ---- 22. Gerak: reveal, parallax, pergantian tema --------------------------
   Kontrak fail-open: [data-reveal] hanya disembunyikan bila <html> punya
   .nxtg-motion (dipasang theme-init.js) DAN dicabut otomatis 2,5 dtk bila
   main.js tidak pernah melapor siap. Tanpa JS = semua terlihat. */
.nxtg-motion [data-reveal]{opacity:0;transform:translate3d(0,var(--reveal-y,22px),0);transition:opacity .6s var(--nxtg-ease),transform .6s var(--nxtg-ease);transition-delay:var(--reveal-delay,0ms)}
.nxtg-motion [data-reveal].is-revealed{opacity:1;transform:none}
.nxtg-theme-switching,.nxtg-theme-switching *,.nxtg-theme-switching *::before,.nxtg-theme-switching *::after{transition:background-color .25s ease,border-color .25s ease,color .25s ease,fill .25s ease!important}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .nxtg-motion [data-reveal]{opacity:1!important;transform:none!important}
  [data-parallax]{transform:none!important}
  .nxtg-feat:hover,.nxtg-work:hover,.btn-primary:hover{transform:none}
}
@media print{
  .nxtg-motion [data-reveal]{opacity:1!important;transform:none!important}
  .nxtg-header,.nxtg-wa,.nxtg-space__canvas,.nxtg-gl{display:none!important}
}
