/* ============================================================
   VOLT — AGENCY SKIN
   A pure CSS override layer. No widget markup was rewritten, so
   every Elementor section and its saved settings are preserved.
   Toggle in Appearance > Customize > VOLT Skin.

   Design language: warm off-white paper, deep emerald primary,
   acid-lime used sparingly, asymmetric heads, hairline rules,
   soft depth. Deliberately NOT a copy of any reference site.
   ============================================================ */

/* ---------- 1. TOKENS ------------------------------------- */
:root{
  /* derived from the five Customizer colours */
  --violet-2:#0a5c34;
  --violet-soft:#eaf5ee;
  --violet-line:#c9e2d3;
  --lime-2:#b2e132;
  --ink-2:#3a463f;
  --muted:#6c7a72;
  --bg-2:#f2f2ec;
  --card:#ffffff;
  --line:#e4e4dc;
  --line-2:#d2d3c8;
  --paper:#faf9f4;

  --r:18px;
  --r-sm:12px;
  --r-lg:28px;
  --pill:999px;

  --sh-1:0 1px 2px rgba(16,25,20,.04), 0 10px 26px -14px rgba(16,25,20,.16);
  --sh-2:0 2px 6px rgba(16,25,20,.05), 0 26px 50px -22px rgba(16,25,20,.28);
  --sh-btn:0 10px 22px -10px rgba(14,122,70,.55);

  --disp:'Bricolage Grotesque','Plus Jakarta Sans',system-ui,sans-serif;
  --sans:'Inter',system-ui,-apple-system,sans-serif;

  --pad:clamp(60px,6.6vw,104px);
  --ease:cubic-bezier(.33,1,.68,1);
}

/* ---------- 2. BASE --------------------------------------- */
body{background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.62;letter-spacing:0}
h1,h2,h3,h4,h5,h6,.hero-left h1,.sec-head h2{font-family:var(--disp);letter-spacing:-.032em;line-height:1.14;text-transform:none}
.wrap{max-width:1200px;padding:0 26px}
.sec,.volt-sec{padding:var(--pad) 0;border-bottom:0}
::selection{background:var(--lime);color:var(--ink)}

/* ---------- 3. BUTTONS ------------------------------------ */
.btn{border-radius:var(--pill);border-width:1.5px;font-family:var(--sans);font-weight:600;font-size:12.5px;
  letter-spacing:.07em;text-transform:uppercase;padding:15px 27px;gap:10px;
  transition:transform .28s var(--ease),box-shadow .28s,background .22s,color .22s,border-color .22s}
.btn svg{width:14px;height:14px;stroke-width:2.5}
.btn:hover{transform:translateY(-2px)}
.btn-violet{background:var(--violet);border-color:var(--violet);color:#fff;box-shadow:var(--sh-btn)}
.btn-violet:hover{background:var(--violet-2);border-color:var(--violet-2);box-shadow:0 14px 30px -10px rgba(14,122,70,.6)}
.btn-lime{background:var(--lime);border-color:var(--lime);color:var(--ink);box-shadow:0 10px 22px -12px rgba(16,25,20,.5)}
.btn-out{background:transparent;border-color:var(--line-2);color:var(--ink);box-shadow:none}
.btn-out:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-dark{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-outlight{border-color:rgba(255,255,255,.36);color:#fff}
.btn-outlight:hover{background:#fff;border-color:#fff;color:var(--ink)}

/* text-arrow link used across sections */
.svc-go,.gr-go,.price-go,.crumb a{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:var(--violet);border-bottom:1.5px solid currentColor;
  padding-bottom:4px;width:auto;position:static}
.svc-go svg,.gr-go svg{width:13px;height:13px;stroke:currentColor;stroke-width:2.6;fill:none;transition:transform .25s}
.svc-row:hover .svc-go svg{transform:translateX(4px)}

/* ---------- 4. HEADER ------------------------------------- */
.volt-header{background:rgba(250,249,244,.88);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.volt-header .wrap{height:80px}
.volt-logo{font-family:var(--disp);letter-spacing:-.04em;font-weight:800}
.volt-logo .mark{border-radius:12px;border:0;background:var(--violet);box-shadow:0 8px 18px -8px rgba(14,122,70,.6)}
.volt-logo .mark svg{fill:var(--lime)}
.volt-nav a{font-size:14.5px;font-weight:500;color:var(--ink-2);position:relative;padding:6px 0}
.volt-nav a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background:var(--lime);
  transition:width .28s var(--ease)}
.volt-nav a:hover{color:var(--violet)}
.volt-nav a:hover::after,.volt-nav .current-menu-item>a::after{width:100%}
.cur-btn{border:1px solid var(--line-2);border-radius:var(--pill);font-family:var(--sans);font-weight:600;padding:9px 15px}
.cur-btn:hover{background:var(--violet);border-color:var(--violet);color:#fff}
.cur-menu{border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--sh-2);overflow:hidden}
.cur-menu button:hover{background:var(--violet-soft);color:var(--violet)}
.volt-cart{border:1px solid var(--line-2);border-radius:var(--pill);width:46px;height:46px;background:var(--card)}
.volt-cart:hover{background:var(--violet);border-color:var(--violet)}
.volt-cart svg{stroke:var(--ink)}
.volt-cart .count{background:var(--lime);border:2px solid var(--paper);border-radius:var(--pill)}
.volt-mobile{border-bottom:1px solid var(--line);background:var(--card)}

/* ---------- 5. SECTION HEADS ------------------------------
   Signature: green dot + label + hairline rule running right.  */
.sec-head{display:block;max-width:none;margin-bottom:clamp(38px,4.4vw,58px)}
.sec-head>div:first-child{max-width:none}
.sec-tag{display:flex;align-items:center;gap:12px;background:none;border:0;padding:0;margin-bottom:20px;
  font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--violet)}
.sec-tag::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--lime);
  box-shadow:0 0 0 4px rgba(198,242,78,.28);flex:none}
.sec-tag::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--line-2),transparent);max-width:220px}
.sec-tag svg{display:none}
.sec-head h2{font-size:clamp(29px,4vw,48px);max-width:18ch;margin-bottom:0}
.sec-head .sr{color:var(--muted);font-size:15px;line-height:1.75;max-width:56ch;margin-top:16px}
.showcase .sec-head h2,.portal .sec-head h2,.vst .sec-head h2{color:#fff}
.showcase .sec-tag,.portal .sec-tag,.vst .sec-tag{color:var(--lime)}
.showcase .sec-tag::after,.portal .sec-tag::after,.vst .sec-tag::after{background:linear-gradient(90deg,rgba(255,255,255,.28),transparent)}
.showcase .sr,.portal .sr,.vst .sr{color:rgba(255,255,255,.6)}

/* ---------- 6. HERO --------------------------------------- */
.hero{background:
  radial-gradient(80% 120% at 88% 6%, rgba(198,242,78,.20) 0%, transparent 56%),
  radial-gradient(70% 100% at 4% 92%, rgba(14,122,70,.12) 0%, transparent 60%),
  var(--paper);
  padding:clamp(52px,6vw,92px) 0 clamp(56px,6vw,96px);position:relative;overflow:hidden}
.hero-flag{display:inline-flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--pill);padding:8px 18px 8px 9px;font-size:13px;font-weight:600;color:var(--ink-2);
  box-shadow:var(--sh-1);margin-bottom:28px;text-transform:none;letter-spacing:0;font-family:var(--sans)}
.hero-flag .dot{width:9px;height:9px;border-radius:50%;background:var(--lime);margin-left:6px;
  box-shadow:0 0 0 4px rgba(198,242,78,.3);animation:vaPulse 2.4s infinite}
@keyframes vaPulse{0%,100%{opacity:1}50%{opacity:.35}}
.hero-main{grid-template-columns:1.06fr .94fr;gap:clamp(40px,5vw,72px);align-items:center}
.hero-left h1{font-size:clamp(38px,5.4vw,70px);line-height:1.03;letter-spacing:-.045em;margin-bottom:22px}
.hero-left h1 .vi{color:var(--violet)}
.hero-left h1 .out{position:relative;-webkit-text-stroke:0;color:var(--ink);display:inline-block}
.hero-left h1 .out::after{content:"";position:absolute;left:-2px;right:-2px;bottom:.1em;height:.16em;
  background:var(--lime);border-radius:3px;z-index:-1}
.hero-left p{color:var(--muted);font-size:17px;line-height:1.7;max-width:50ch;margin-bottom:32px}
.hero-btns{gap:14px}

/* hero visual — dark emerald panel with a floating 3D object */
.hero-visual{position:relative}
.hv-browser{background:linear-gradient(150deg,#0d2a1c 0%,var(--violet-deep) 62%);border:0;border-radius:var(--r-lg);
  padding:34px 32px 30px;color:#fff;box-shadow:var(--sh-2);position:relative;overflow:hidden}
.hv-browser::before{content:"";position:absolute;inset:-30% -20% auto auto;width:320px;height:320px;border-radius:50%;
  background:radial-gradient(circle,rgba(198,242,78,.24),transparent 68%)}
.hv-browser::after{content:"";position:absolute;right:-26px;bottom:-30px;width:180px;height:180px;
  background:url(../3d/sphere.svg) center/contain no-repeat;opacity:.95;
  animation:vaFloat 7s ease-in-out infinite}
@keyframes vaFloat{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-14px) rotate(4deg)}}
.hv-head{position:relative;z-index:1;margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.hv-proj{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(255,255,255,.55)}
.hv-stage{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--lime);
  background:rgba(198,242,78,.14);border-radius:var(--pill);padding:6px 14px}
.hv-mini{position:relative;z-index:1;height:6px;border-radius:var(--pill);background:rgba(255,255,255,.14);overflow:hidden;margin-bottom:26px}
.hv-mini i{display:block;height:100%;width:var(--pct,80%);border-radius:var(--pill);
  background:linear-gradient(90deg,var(--violet),var(--lime))}
.hv-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.hv-grid span{height:44px;border-radius:var(--r-sm);background:rgba(255,255,255,.08);border:0}
.hv-grid span.v{background:rgba(14,122,70,.65)}
.hv-grid span.l{background:rgba(198,242,78,.72)}
.hv-chip{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-2);
  padding:14px 18px;gap:13px}
.hv-chip .ci{width:38px;height:38px;border-radius:var(--pill);background:var(--violet-soft);display:grid;place-items:center;flex:none}
.hv-chip .ci svg{stroke:var(--violet);width:18px;height:18px}
.hv-chip .c1{font-family:var(--disp);font-weight:700;font-size:14px;letter-spacing:-.02em}
.hv-chip .c2{font-size:12px;color:var(--muted)}
@media(max-width:940px){.hero-main{grid-template-columns:1fr}}

/* ---------- 7. SERVICES ----------------------------------- */
.svc{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;border:0;background:none}
.svc-row{display:block;position:relative;overflow:hidden;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:30px 28px 28px;grid-template-columns:none;
  transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.svc-row::after{content:"";position:absolute;left:0;top:0;height:3px;width:0;background:var(--lime);transition:width .45s var(--ease)}
.svc-row:hover{transform:translateY(-6px);box-shadow:var(--sh-2);border-color:var(--violet-line);background:var(--card)}
.svc-row:hover::after{width:100%}
.svc-row>*{position:relative;z-index:1}
.svc-row .idx{display:block;font-family:var(--disp);font-size:12px;font-weight:700;letter-spacing:.16em;
  color:var(--muted);margin-bottom:22px}
.svc-row .svc-t{display:block;margin-bottom:10px}
.svc-row .svc-t h3,.svc-row h3{font-size:20px;letter-spacing:-.03em;margin-bottom:8px}
.svc-row .badge{display:inline-flex;align-items:center;gap:6px;background:var(--violet-soft);color:var(--violet);
  border:0;border-radius:var(--pill);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  padding:6px 12px;margin-bottom:14px}
.svc-row .badge svg{display:none}
.svc-row .svc-d{font-size:14px;color:var(--muted);line-height:1.72;margin-bottom:20px;display:block}
.svc-row .svc-d ul{list-style:none;margin-top:14px;display:grid;gap:8px}
.svc-row .svc-d li{display:flex;align-items:flex-start;gap:9px;font-size:13.5px;color:var(--ink-2)}
.svc-row .svc-d li svg{width:15px;height:15px;flex:none;margin-top:3px;stroke:var(--violet);stroke-width:2.6;fill:none}
@media(max-width:980px){.svc{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.svc{grid-template-columns:1fr}}

/* detailed services */
.svc-detail .sd-left{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:30px}
.sd-num{font-family:var(--disp);color:var(--violet);letter-spacing:.14em}
.sd-badge{background:var(--lime);color:var(--ink);border:0;border-radius:var(--pill);padding:6px 13px;font-size:11px;font-weight:700}
.sd-preview{border:1px solid var(--line);border-radius:var(--r);background:var(--bg-2)}
.sd-feats li{color:var(--ink-2)}

/* ---------- 8. PROCESS ------------------------------------ */
.lp-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.st{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:32px 28px;overflow:hidden}
.st::before{content:"";position:absolute;right:-40px;top:-40px;width:130px;height:130px;
  background:url(../3d/torus.svg) center/contain no-repeat;opacity:.13}
.st .n{width:44px;height:44px;border-radius:var(--pill);background:var(--violet);color:#fff;border:0;
  display:grid;place-items:center;font-family:var(--disp);font-weight:800;font-size:15px;margin-bottom:22px;
  box-shadow:0 10px 20px -10px rgba(14,122,70,.6)}
.st h4{font-size:19px;margin-bottom:9px}
.st p{font-size:14px;color:var(--muted);line-height:1.72}
@media(max-width:900px){.lp-steps{grid-template-columns:1fr}}

/* ---------- 9. STATS -------------------------------------- */
.vst{background:linear-gradient(140deg,#0d2a1c,var(--violet-deep));color:#fff;border-radius:0}
.vst-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,.1);
  border-radius:var(--r-lg);overflow:hidden}
.vst-cell{background:#0a2317;padding:42px 26px;text-align:center;position:relative}
.vst-num{font-family:var(--disp);font-weight:800;font-size:clamp(32px,4vw,50px);letter-spacing:-.05em;
  color:var(--lime);line-height:1;margin-bottom:10px;font-variant-numeric:tabular-nums}
.vst-lab{font-size:13.5px;color:rgba(255,255,255,.6);line-height:1.55;max-width:22ch;margin:0 auto}
@media(max-width:880px){.vst-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.vst-grid{grid-template-columns:1fr}}

/* ---------- 10. TRUST STRIP (marquee) ---------------------- */
.trust-strip{background:var(--violet);color:#fff;border:0;padding:0;overflow:hidden;position:relative}
.trust-strip .wrap{max-width:none;padding:0;display:flex;width:max-content;gap:0;
  animation:vaSlide 30s linear infinite}
.trust-strip:hover .wrap{animation-play-state:paused}
@keyframes vaSlide{to{transform:translateX(-50%)}}
.trust-strip .ts{display:inline-flex;align-items:center;gap:14px;font-family:var(--disp);font-weight:600;
  font-size:17px;letter-spacing:-.02em;padding:20px 30px;white-space:nowrap;color:#fff}
.trust-strip .ts svg{display:none}
.trust-strip .divi{width:7px;height:7px;border-radius:50%;background:var(--lime);flex:none;margin:0 4px}

/* ---------- 11. SHOWCASE ----------------------------------- */
.showcase{background:linear-gradient(140deg,#0d2a1c,var(--violet-deep))}
.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.work-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:var(--r);
  overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.work-card:hover{transform:translateY(-6px);border-color:rgba(198,242,78,.45);box-shadow:var(--sh-2)}
.work-thumb{aspect-ratio:4/3;overflow:hidden}
.work-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}
.work-card:hover .work-thumb img{transform:scale(1.06)}
.work-meta{padding:20px 22px 22px}
.work-cat{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.5)}
.work-title{font-size:19px;letter-spacing:-.03em;margin:7px 0 6px;color:#fff}
.work-price{background:none;border:0;padding:0;font-size:14px;font-weight:700;color:var(--lime)}
@media(max-width:980px){.work-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.work-grid{grid-template-columns:1fr}}

/* ---------- 12. TESTIMONIALS ------------------------------- */
.testi{background:var(--bg-2)}
.testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.testi-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:32px 30px;
  display:flex;flex-direction:column;position:relative;overflow:hidden;
  transition:transform .35s var(--ease),box-shadow .35s}
.testi-card:hover{transform:translateY(-5px);box-shadow:var(--sh-2)}
.testi-card .qm{font-family:var(--disp);font-size:56px;line-height:.55;color:var(--violet);opacity:.22;margin-bottom:20px}
.testi-card blockquote{font-size:15.5px;line-height:1.7;color:var(--ink-2);flex:1;margin-bottom:24px;font-style:normal}
.who{display:flex;align-items:center;gap:13px;padding-top:20px;border-top:1px solid var(--line)}
.who .av{width:44px;height:44px;border-radius:var(--pill);background:var(--violet);color:#fff;border:0;
  display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:15px;flex:none}
.who .n{font-family:var(--disp);font-weight:700;font-size:15px;letter-spacing:-.02em}
.who .r{font-size:13px;color:var(--muted)}
@media(max-width:980px){.testi-grid{grid-template-columns:1fr}}

/* ---------- 13. CTA BAND ----------------------------------- */
.cta-band{background:linear-gradient(112deg,#0d2a1c 0%,var(--violet) 58%,#12a05c 100%);color:#fff;
  padding:var(--pad) 0;position:relative;overflow:hidden;border:0}
.cta-band::before{content:"";position:absolute;left:-70px;bottom:-70px;width:260px;height:260px;
  background:url(../3d/coil.svg) center/contain no-repeat;opacity:.9}
.cta-band::after{content:"";position:absolute;right:-50px;top:-60px;width:220px;height:220px;
  background:url(../3d/cube.svg) center/contain no-repeat;opacity:.85}
.cta-band .wrap{position:relative;z-index:1;text-align:center}
.cta-band h2{color:#fff;font-size:clamp(30px,4.4vw,54px);letter-spacing:-.045em;margin-bottom:16px;max-width:20ch;margin-inline:auto}
.cta-band p{color:rgba(255,255,255,.72);font-size:17px;max-width:54ch;margin:0 auto 30px}
.cta-band .btn-dark{background:var(--lime);border-color:var(--lime);color:var(--ink)}
.cta-band .btn-out{border-color:rgba(255,255,255,.4);color:#fff}
.cta-band .btn-out:hover{background:#fff;border-color:#fff;color:var(--ink)}

/* ---------- 14. PRICING (.price-card / .pc-* / .ptabs) ------ */
.vlt-pricing .ptabs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:34px}
.vlt-pricing .ptabs button,.vlt-pricing .ptabs a{border:1px solid var(--line-2);background:var(--card);
  color:var(--ink-2);border-radius:var(--pill);padding:11px 22px;font-family:var(--sans);font-size:13.5px;
  font-weight:600;cursor:pointer;transition:.22s}
.vlt-pricing .ptabs .on,.vlt-pricing .ptabs [aria-selected="true"],.vlt-pricing .ptabs button:hover,
.vlt-pricing .ptabs a:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.pricepane{display:none}
.pricepane.on{display:block}
.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch}
.price-card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:32px 28px;position:relative;overflow:hidden;
  transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.price-card:hover{transform:translateY(-6px);box-shadow:var(--sh-2);border-color:var(--violet-line)}
.price-card.feat{background:linear-gradient(160deg,#0d2a1c,var(--violet-deep));border-color:transparent;color:#fff}
.price-card.feat::after{content:"";position:absolute;right:-58px;top:-58px;width:170px;height:170px;
  background:url(../3d/torus.svg) center/contain no-repeat;opacity:.42}
.price-card>*{position:relative;z-index:1}
.pc-tag{display:inline-flex;align-self:flex-start;background:var(--violet-soft);color:var(--violet);
  border-radius:var(--pill);font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  padding:6px 13px;margin-bottom:18px}
.price-card.feat .pc-tag{background:var(--lime);color:var(--ink)}
.pc-name{font-family:var(--disp);font-weight:700;font-size:21px;letter-spacing:-.03em;margin-bottom:7px}
.price-card.feat .pc-name{color:#fff}
.pc-desc{font-size:13.5px;color:var(--muted);line-height:1.65;margin-bottom:22px}
.price-card.feat .pc-desc{color:rgba(255,255,255,.62)}
.pc-amt{display:flex;align-items:baseline;gap:2px;font-family:var(--disp);font-weight:800;
  font-size:clamp(32px,3.6vw,44px);letter-spacing:-.05em;line-height:1;margin-bottom:4px}
.pc-amt.sm{font-size:clamp(28px,3vw,38px)}
.cur-sym{font-size:.6em;font-weight:700;opacity:.75;align-self:flex-start;margin-top:.24em}
.price-card.feat .pc-amt,.price-card.feat .price-val{color:var(--lime)}
.pc-per{font-size:12.5px;color:var(--muted);margin-bottom:24px}
.price-card.feat .pc-per{color:rgba(255,255,255,.55)}
.price-feats{list-style:none;flex:1;margin-bottom:26px}
.price-feats li{display:flex;align-items:flex-start;gap:11px;font-size:14px;color:var(--ink-2);
  padding:11px 0;border-top:1px solid var(--line)}
.price-feats li:first-child{border-top:0}
.price-card.feat .price-feats li{color:rgba(255,255,255,.8);border-color:rgba(255,255,255,.14)}
.price-feats li svg{width:17px;height:17px;flex:none;margin-top:2px;stroke:var(--violet);stroke-width:2.8;fill:none}
.price-card.feat .price-feats li svg{stroke:var(--lime)}
.price-card.feat .btn-violet{background:var(--lime);border-color:var(--lime);color:var(--ink);box-shadow:none}
@media(max-width:980px){.price-grid{grid-template-columns:1fr}}

/* ---------- 15. CATEGORY BAR (.cat-bar / .chip) ------------- */
.cat-bar{background:rgba(250,249,244,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.cat-bar.vlt-catbar-sticky{top:80px}
.cat-bar .wrap{display:flex;gap:9px;padding:15px 26px;overflow-x:auto}
.chip{white-space:nowrap;font-family:var(--sans);font-size:13.5px;font-weight:600;color:var(--ink-2);
  padding:9px 18px;border:1px solid var(--line-2);border-radius:var(--pill);background:var(--card);transition:.22s}
.chip:hover{border-color:var(--violet);color:var(--violet)}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}

/* ---------- 16. CATEGORIES (.catc) -------------------------- */
.cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.catc{position:relative;display:block;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  background:var(--card);transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.catc:hover{transform:translateY(-5px);box-shadow:var(--sh-2);border-color:var(--violet-line)}
.catc-bg{opacity:.92;transition:transform .55s var(--ease)}
.catc:hover .catc-bg{transform:scale(1.05)}
.catc-body{padding:20px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.cc-n{font-family:var(--disp);font-weight:700;font-size:17px;letter-spacing:-.025em}
.cc-c{font-size:12.5px;color:var(--muted)}
.catc-body svg{width:16px;height:16px;stroke:var(--violet);stroke-width:2.4;fill:none;flex:none;transition:transform .25s}
.catc:hover .catc-body svg{transform:translateX(4px)}
@media(max-width:980px){.cat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.cat-grid{grid-template-columns:1fr}}

/* ---------- 17. PORTAL (.portal-* / .pf / .pc-*) ------------ */
.portal{background:linear-gradient(140deg,#0d2a1c,var(--violet-deep));position:relative;overflow:hidden}
.portal::after{content:"";position:absolute;right:-80px;bottom:-80px;width:300px;height:300px;
  background:url(../3d/stack.svg) center/contain no-repeat;opacity:.45;pointer-events:none}
.portal-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;position:relative;z-index:1}
.portal-left h2{color:#fff;font-size:clamp(28px,3.6vw,44px);margin-bottom:16px}
.portal-feats{margin-top:26px}
.pf{display:flex;gap:15px;align-items:flex-start;padding:18px 0;border-bottom:1px solid rgba(255,255,255,.14)}
.pf:last-child{border-bottom:0}
.pfi{width:42px;height:42px;flex:none;border-radius:13px;background:rgba(198,242,78,.14);
  display:grid;place-items:center;color:var(--lime)}
.pfi svg{width:20px;height:20px;stroke:var(--lime);stroke-width:2;fill:none}
.pf b{display:block;font-family:var(--disp);font-weight:700;font-size:15.5px;color:#fff;margin-bottom:4px}
.pf span{font-size:13.5px;color:rgba(255,255,255,.6);line-height:1.62}
.portal-card{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.13);border-radius:var(--r-lg);
  padding:26px;color:#fff;backdrop-filter:blur(6px)}
.pc-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}
.pc-proj{font-family:var(--disp);font-weight:700;font-size:17px;letter-spacing:-.025em}
.pc-bar{height:7px;border-radius:var(--pill);background:rgba(255,255,255,.14);overflow:hidden;margin-bottom:24px}
.pc-bar>*,.pc-bar i,.pc-bar span{display:block;height:100%;border-radius:var(--pill);
  background:linear-gradient(90deg,var(--violet),var(--lime))}
.pc-steps{display:grid;gap:10px}
.pcs{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-sm);
  background:rgba(255,255,255,.04);font-size:13.5px;color:rgba(255,255,255,.72)}
.pcs.done{color:rgba(255,255,255,.5)}
.pcs.active{background:rgba(198,242,78,.12);color:#fff;border:1px solid rgba(198,242,78,.3)}
.pcs-b{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.3);flex:none}
.pcs.done .pcs-b{background:var(--violet)}
.pcs.active .pcs-b{background:var(--lime);box-shadow:0 0 0 4px rgba(198,242,78,.22)}
.pcs-m{margin-left:auto;font-size:12px;opacity:.7}
.pc-foot{margin-top:20px;padding-top:18px;border-top:1px solid rgba(255,255,255,.12);
  display:flex;align-items:center;gap:10px;font-size:13px;color:rgba(255,255,255,.62)}
.pc-ok{color:var(--lime)}
.pc-ok svg{width:16px;height:16px;stroke:var(--lime);stroke-width:2.6;fill:none}
@media(max-width:940px){.portal-grid{grid-template-columns:1fr;gap:40px}}

/* ---------- 18. GROW (.grow-* / .gr-* / .gf-*) -------------- */
.vlt-grow{background:var(--bg-2)}
.grow-box{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:clamp(28px,3.4vw,46px);box-shadow:var(--sh-1)}
.grow-head{display:flex;align-items:flex-start;justify-content:space-between;gap:26px;flex-wrap:wrap;margin-bottom:32px}
.grow-head-copy h2{font-size:clamp(25px,3.2vw,38px);margin-bottom:10px}
.grow-head-copy p{color:var(--muted);font-size:14.5px;max-width:52ch}
.grow-badge,.gr-badge,.rl-tag,.vgp-tag{display:inline-flex;align-items:center;background:var(--lime);
  color:var(--ink);border:0;border-radius:var(--pill);padding:7px 15px;font-family:var(--sans);
  font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.grow-ring{filter:drop-shadow(0 10px 20px rgba(14,122,70,.32))}
.grow-ring circle{stroke-linecap:round}
.grow-rowwrap{display:grid;gap:14px}
.grow-row,.gf-step{display:flex;align-items:center;gap:16px;padding:18px 20px;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r);transition:.28s var(--ease)}
.grow-row:hover,.gf-step:hover{border-color:var(--violet-line);transform:translateX(4px)}
.gf-step.res{background:linear-gradient(120deg,#0d2a1c,var(--violet));border-color:transparent;color:#fff}
.gf-step.res .gf-k{color:var(--lime)}
.gr-idx,.gf-k,.vgp-idx{font-family:var(--disp);font-weight:800;font-size:13px;letter-spacing:.14em;
  color:var(--violet);flex:none}
.gr-t{font-family:var(--disp);font-weight:700;font-size:16.5px;letter-spacing:-.025em}
.gr-d{font-size:13.5px;color:var(--muted);line-height:1.6}
.gf-ar{margin-left:auto;flex:none;opacity:.4}
.gf-ar svg{width:18px;height:18px;stroke:currentColor;stroke-width:2.2;fill:none}
.grow-flow{display:grid;gap:12px;margin:26px 0}
.grow-foot{margin-top:28px;padding-top:24px;border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.gr-go{margin-left:auto}

/* ---------- 18b. GROW PINNED (.vgp-*) ----------------------- */
.vgp-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:start}
.vgp-left h2{font-size:clamp(27px,3.6vw,44px);margin-bottom:16px}
.vgp-pin{position:sticky;top:110px}
.vgp-steps{display:grid;gap:16px}
.vgp-card,.vgp-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:28px 26px;transition:.3s var(--ease)}
.vgp-card:hover{border-color:var(--violet-line);box-shadow:var(--sh-2);transform:translateY(-4px)}
.vgp-card h3{font-size:19px;margin:12px 0 8px}
.vgp-card p{font-size:14px;color:var(--muted);line-height:1.7}
@media(max-width:940px){.vgp-grid{grid-template-columns:1fr;gap:36px}.vgp-pin{position:static}}

/* ---------- 19. STORE: MARKETPLACE / BESTSELLERS / PINNED --- */
.rcard,.vcp-card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.rcard:hover,.vcp-card:hover{transform:translateY(-6px);box-shadow:var(--sh-2);border-color:var(--violet-line)}
.rc-thumb,.vcp-shot{aspect-ratio:4/3;overflow:hidden;background:var(--bg-2);position:relative}
.rc-thumb img,.vcp-shot img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}
.rcard:hover .rc-thumb img,.vcp-card:hover .vcp-shot img{transform:scale(1.05)}
.rc-noimg{display:grid;place-items:center;height:100%;color:var(--muted);font-size:13px;
  background:repeating-linear-gradient(45deg,var(--bg-2) 0 12px,#eeeee6 12px 24px)}
.rc-badge{position:absolute;top:12px;left:12px;z-index:2;background:var(--lime);color:var(--ink);border:0;
  border-radius:var(--pill);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:6px 12px}
.rc-body,.vcp-body{padding:20px 22px;flex:1;display:flex;flex-direction:column}
.rc-cat,.vcp-cat,.rc-plat{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.rc-title,.vcp-name{font-family:var(--disp);font-weight:700;font-size:17px;letter-spacing:-.025em;
  line-height:1.35;margin-bottom:8px}
.rc-stars{display:flex;gap:2px;margin-bottom:10px}
.rc-stars svg{width:13px;height:13px;fill:#e8a33d;stroke:none}
.rc-foot,.vcp-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.rc-price,.vcp-price{font-family:var(--disp);font-weight:800;font-size:17px;letter-spacing:-.035em;color:var(--violet)}
.rc-was{font-size:13px;color:var(--muted);text-decoration:line-through;font-weight:500;margin-left:7px}
.rc-add,.vcp-add{border-radius:var(--pill);padding:10px 18px;font-size:11.5px}
.vcp-prog{height:6px;border-radius:var(--pill);background:var(--bg-2);overflow:hidden;margin-top:12px}
.vcp-prog>*{display:block;height:100%;background:linear-gradient(90deg,var(--violet),var(--lime))}
.vcp-rail{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.vcp-pin{position:sticky;top:110px}
.vcp-head{margin-bottom:26px}
/* bestsellers rail */
.rail-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:26px;flex-wrap:wrap}
.rail{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;
  scroll-behavior:smooth;padding-bottom:8px;scrollbar-width:none}
.rail::-webkit-scrollbar{display:none}
.rail>*{scroll-snap-align:start}
.rail-nav{display:flex;gap:10px}
.rail-nav button{width:44px;height:44px;border:1px solid var(--line-2);border-radius:var(--pill);
  background:var(--card);display:grid;place-items:center;cursor:pointer;transition:.22s}
.rail-nav button:hover{background:var(--ink);border-color:var(--ink)}
.rail-nav button svg{width:16px;height:16px;stroke:var(--ink);stroke-width:2.2;fill:none}
.rail-nav button:hover svg{stroke:#fff}
/* marketplace shell */
.shop-top{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:24px}
.shop-count{font-size:13.5px;color:var(--muted)}
.filters{position:sticky;top:110px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:24px 22px}
.fgroup{padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}
.fgroup:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.fhead{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);margin-bottom:14px}
.fgroup label{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--ink-2);padding:6px 0;cursor:pointer}
.sort-sel,.fgroup select,.fgroup input[type=text]{border:1px solid var(--line-2);border-radius:var(--pill);
  padding:10px 16px;font-family:var(--sans);font-size:13.5px;background:var(--card);color:var(--ink)}
.shop-empty{text-align:center;padding:70px 20px;color:var(--muted);border:1px dashed var(--line-2);border-radius:var(--r)}
.shop-pager{display:flex;gap:8px;justify-content:center;margin-top:40px}
.shop-pager a,.shop-pager span{border:1px solid var(--line-2);border-radius:var(--pill);padding:10px 17px;
  font-size:13.5px;font-weight:600;color:var(--ink-2)}
.shop-pager a:hover{background:var(--violet);border-color:var(--violet);color:#fff}
.shop-pager .current{background:var(--ink);border-color:var(--ink);color:#fff}
@media(max-width:1020px){.filters{position:static}
  .vcp-rail{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.vcp-rail{grid-template-columns:1fr}}

/* ---------- 19b. SERVICES DETAILED (.svc-detail / .sd-*) ---- */
.svc-detail{display:grid;grid-template-columns:1fr 1fr;gap:46px;align-items:center;
  padding:38px 0;border-bottom:1px solid var(--line)}
.svc-detail:last-child{border-bottom:0}
.sd-left{min-width:0}
.sd-num{font-family:var(--disp);font-weight:800;font-size:13px;letter-spacing:.16em;color:var(--violet);
  display:block;margin-bottom:14px}
.sd-badge{display:inline-flex;background:var(--lime);color:var(--ink);border:0;border-radius:var(--pill);
  padding:6px 13px;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px}
.sd-left h3{font-size:clamp(22px,2.7vw,30px);margin-bottom:12px}
.sd-desc{font-size:14.5px;color:var(--muted);line-height:1.72;margin-bottom:20px}
.sd-feats{display:grid;gap:10px;margin-bottom:24px}
.sd-feats li{display:flex;align-items:flex-start;gap:10px;font-size:14px;color:var(--ink-2)}
.sd-feats li svg{width:15px;height:15px;flex:none;margin-top:3px;stroke:var(--violet);stroke-width:2.8;fill:none}
.sd-note{font-size:12.5px;color:var(--muted);margin-top:14px}
.sd-preview{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-2);
  min-height:240px;overflow:hidden;box-shadow:var(--sh-1)}
@media(max-width:900px){.svc-detail{grid-template-columns:1fr;gap:30px}}

/* ---------- 19c. FEATURE ROWS (.frow / .frow-*) ------------- */
.frow{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center;
  padding:52px 0;border-bottom:1px solid var(--line)}
.frow:last-child{border-bottom:0}
.frow.flip .frow-media{order:2}
.frow-media{border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--sh-1) !important;background:var(--bg-2)}
.frow-media img{width:100%;height:100%;object-fit:cover}
.frow-tag{display:inline-flex;background:var(--violet-soft);color:var(--violet);border:0;border-radius:var(--pill);
  padding:6px 13px;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px}
.frow h3{font-size:clamp(23px,2.9vw,33px);margin-bottom:12px}
.frow p{font-size:14.5px;color:var(--muted);line-height:1.72;margin-bottom:20px}
.frow-list{display:grid;gap:11px;margin-bottom:26px}
.frow-list li{display:flex;align-items:flex-start;gap:10px;font-size:14px;color:var(--ink-2)}
.frow-list li svg{width:15px;height:15px;flex:none;margin-top:3px;stroke:var(--violet);stroke-width:2.8;fill:none}
@media(max-width:880px){.frow{grid-template-columns:1fr;gap:30px;padding:38px 0}.frow.flip .frow-media{order:0}}

/* ---------- 19d. PROMO / QUOTE FORM / PAGE HEADER ----------- */
.promo{display:flex;align-items:center;justify-content:space-between;gap:34px;flex-wrap:wrap;
  background:linear-gradient(112deg,#0d2a1c,var(--violet));border:0;border-radius:var(--r-lg);
  padding:clamp(30px,3.6vw,52px);color:#fff;position:relative;overflow:hidden}
.promo::after{content:"";position:absolute;right:-50px;bottom:-60px;width:220px;height:220px;
  background:url(../3d/cone.svg) center/contain no-repeat;opacity:.55;pointer-events:none}
.promo>*{position:relative;z-index:1}
.promo h2,.promo h3{color:#fff;font-size:clamp(24px,3vw,36px);margin-bottom:10px;max-width:20ch}
.promo p{color:rgba(255,255,255,.72);font-size:15px;max-width:52ch}
.pz-tag{display:inline-flex;background:var(--lime);color:var(--ink);border:0;border-radius:var(--pill);
  padding:7px 15px;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px}
.pz-cta{flex:none}
.lp-form{display:grid;grid-template-columns:1fr 1fr;gap:18px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:clamp(26px,3.2vw,42px);box-shadow:var(--sh-1)}
.lp-field{display:flex;flex-direction:column;gap:8px;min-width:0}
.lp-field.full,.lp-form>.btn,.fnote,.priv{grid-column:1/-1}
.lp-field label{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.lp-field input,.lp-field textarea,.lp-field select,.news-form input{width:100%;border:1px solid var(--line-2);
  border-radius:var(--r-sm);padding:14px 16px;font-family:var(--sans);font-size:14.5px;background:var(--paper);
  color:var(--ink);transition:border-color .2s,box-shadow .2s,background .2s}
.lp-field textarea{min-height:130px;resize:vertical}
.lp-field input:focus,.lp-field textarea:focus,.lp-field select:focus,.news-form input:focus{
  outline:none;background:var(--card);border-color:var(--violet);box-shadow:0 0 0 3px rgba(14,122,70,.14)}
.fnote,.priv,.np{font-size:12.5px;color:var(--muted);line-height:1.6}
@media(max-width:720px){.lp-form{grid-template-columns:1fr}}
.phead{background:radial-gradient(72% 130% at 88% 0%,rgba(198,242,78,.2),transparent 58%),var(--paper);
  padding:clamp(46px,5vw,84px) 0;border-bottom:1px solid var(--line)}
.phead h1{font-size:clamp(31px,4.6vw,56px);letter-spacing:-.045em;margin:14px 0 12px}
.phead p{color:var(--muted);font-size:15.5px;max-width:58ch}
.crumb{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);flex-wrap:wrap}
.crumb a{border:0;padding:0;font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted)}
.crumb a:hover{color:var(--violet)}
.crumb .sep{opacity:.45}
.phead .ptag{display:inline-flex;background:var(--violet-soft);color:var(--violet);border-radius:var(--pill);
  padding:7px 15px;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-top:16px}

/* ---------- 20. FOOTER ------------------------------------- */
.volt-footer{background:var(--card);border-top:1px solid var(--line);color:var(--ink)}
.volt-footer .foot-cta{background:linear-gradient(112deg,#0d2a1c,var(--violet));border:0;color:#fff;
  padding:clamp(48px,5.5vw,76px) 26px;position:relative;overflow:hidden}
.volt-footer .foot-cta::after{content:"";position:absolute;right:-40px;bottom:-50px;width:210px;height:210px;
  background:url(../3d/cone.svg) center/contain no-repeat;opacity:.8}
.volt-footer .foot-cta h3{color:#fff;text-transform:none;letter-spacing:-.045em;font-size:clamp(27px,3.8vw,46px);
  max-width:22ch;margin-inline:auto;position:relative;z-index:1}
.volt-footer .foot-cta .hero-btns{position:relative;z-index:1}
.volt-footer .foot-grid{border-bottom:1px solid var(--line);gap:40px}
.volt-footer .foot-brand p{color:var(--muted)}
.volt-footer .foot-col h5{color:var(--muted);letter-spacing:.16em;font-family:var(--sans);font-size:11px}
.volt-footer .foot-col a{color:var(--ink-2);font-size:14px}
.volt-footer .foot-col a:hover{color:var(--violet);padding-left:0;transform:translateX(3px)}
.volt-footer .foot-soc a{border:1px solid var(--line-2);border-radius:var(--pill);width:42px;height:42px}
.volt-footer .foot-soc a:hover{background:var(--violet);border-color:var(--violet)}
.volt-footer .foot-soc svg{stroke:var(--ink-2)}
.volt-footer .foot-pay span{border:1px solid var(--line-2);border-radius:var(--pill);color:var(--muted);
  font-family:var(--sans);padding:6px 13px;font-size:11px;letter-spacing:.06em}
.volt-footer .foot-bottom{color:var(--muted);font-size:13px}

/* ---------- 21. DECORATIVE 3D LAYER ------------------------ */
.volt-3d{position:absolute;pointer-events:none;background-position:center;background-repeat:no-repeat;
  background-size:contain;animation:vaFloat 8s ease-in-out infinite}
.volt-3d--sphere{background-image:url(../3d/sphere.svg)}
.volt-3d--torus{background-image:url(../3d/torus.svg)}
.volt-3d--cube{background-image:url(../3d/cube.svg)}
.volt-3d--coil{background-image:url(../3d/coil.svg)}
.volt-3d--cone{background-image:url(../3d/cone.svg)}
.volt-3d--capsule{background-image:url(../3d/capsule.svg)}
.volt-3d--trophy{background-image:url(../3d/trophy.svg)}
.volt-3d--stack{background-image:url(../3d/stack.svg)}

/* ---------- 21b. ICON SIZE SAFETY NET ----------------------
   These sizes already live in volt.css and volt-sections.css. They are
   repeated here so the skin still renders correctly if the plugin
   stylesheet ever loads after this one (Elementor can reorder them). */
.cur-btn svg{width:14px;height:14px;stroke-width:2.4;fill:none}
.volt-cart{position:relative}
.volt-cart svg{width:20px;height:20px;stroke-width:2;fill:none}
.volt-cart .count{position:absolute;top:-7px;right:-7px;min-width:20px;height:20px;font-size:11px;
  font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 5px;line-height:1;color:var(--ink)}
.btn svg,.svc-go svg,.gr-go svg,.price-go svg{width:14px;height:14px;flex:none}
.svc-go svg{width:13px;height:13px}
.svc-d li svg,.portal-feats li svg,.sd-feats li svg{width:15px;height:15px;flex:none;stroke-width:2.8;fill:none}
.hv-chip .ci svg{width:18px;height:18px;flex:none}
.foot-soc svg{width:17px;height:17px;flex:none}
.volt-logo .mark svg{width:19px;height:19px;flex:none}

/* ---------- 22. MOTION & A11Y ------------------------------ */
.reveal{transform:translateY(24px);transition:opacity .75s ease,transform .75s var(--ease)}
a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--violet);outline-offset:3px;border-radius:6px}
@media (prefers-reduced-motion: reduce){
  .volt-3d,.hv-browser::after,.trust-strip .wrap,.hero-flag .dot{animation:none !important}
  .btn:hover,.svc-row:hover,.testi-card:hover,.rcard:hover{transform:none !important}
}

/* ============================================================
   23. CONFLICT RESETS
   The base stylesheet reaches (0,3,0) in places (e.g.
   `.catc .catc-body .cc-n`). Those rules are matched here with an
   equal-or-higher selector so the skin actually lands. Everything
   below fixes a defect seen on a live install.
   ============================================================ */

/* --- services: `.svc-go` is a 56px solid-ink square in the base ---- */
body .svc-row .svc-go{width:auto;height:auto;min-width:0;background:transparent;flex:0 0 auto;
  align-self:flex-start;display:inline-flex;align-items:center;gap:8px;padding:0 0 4px;
  border:0;border-bottom:1.5px solid currentColor;border-radius:0;color:var(--violet)}
body .svc-row .svc-go svg{width:13px;height:13px;stroke:currentColor;stroke-width:2.6;fill:none}
body .svc-row:hover .svc-go{color:var(--violet-2)}
body .svc-row:hover .svc-go svg{transform:translateX(4px)}
body .svc-row .svc-t .badge{background:var(--violet-soft);color:var(--violet);border:0;
  border-radius:var(--pill);font-size:10.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;padding:6px 12px}
body .svc-row .svc-t .badge svg{display:none}

/* --- testimonials: base draws a 2px ink box round the whole grid ---- */
body .testi-grid{border:0;overflow:visible}
body .testi-grid>.testi-card{border:1px solid var(--line);border-radius:var(--r)}

/* --- pricing tabs: base is a hard-bordered segmented bar ------------ */
body .ptabs{display:flex;flex-wrap:wrap;gap:8px;border:0;border-bottom:0;width:auto;margin-bottom:32px}
body .ptabs button{border:1px solid var(--line-2);border-right:1px solid var(--line-2);
  border-radius:var(--pill);background:var(--card);color:var(--ink-2);font-family:var(--sans);
  font-size:13.5px;font-weight:600;padding:11px 22px}
body .ptabs button.on{background:var(--ink);border-color:var(--ink);color:#fff}
body .ptabs button:not(.on):hover{background:var(--paper);border-color:var(--violet);color:var(--violet)}

/* --- categories: keep the base overlay layout, soften the frame -----
   The widget paints art in `.catc-bg` and lays copy over it, so the
   card must keep its aspect ratio or the text collides with the art. */
body .catc{aspect-ratio:3/4;display:flex;align-items:flex-end;border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;background:var(--card)}
body .catc:hover{transform:translateY(-5px);box-shadow:var(--sh-2)}
body .catc .catc-body{position:relative;z-index:2;width:100%;padding:22px;
  background:linear-gradient(to top,rgba(7,27,18,.94) 12%,rgba(7,27,18,.55) 60%,transparent)}
body .catc .catc-body .cc-n{color:#fff;font-family:var(--disp);font-size:19px;letter-spacing:-.025em}
body .catc .catc-body .cc-c{color:var(--lime);font-size:12.5px;font-weight:600;margin-top:4px}

/* --- grow rows: base is a 4-col grid that crushes copy when narrow -- */
body .grow-row{grid-template-columns:64px minmax(140px,1fr) minmax(0,1.5fr) auto;
  gap:20px;padding:22px 24px;border-bottom:0;border:1px solid var(--line);border-radius:var(--r)}
body .grow-row>*{min-width:0}
body .grow-row .gr-d,body .gf-step .gr-d{font-size:13.5px;line-height:1.6;text-wrap:pretty}
body .gf-step{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
body .gf-step>*{min-width:0;flex:0 1 auto}
body .gf-step .gr-d{flex:1 1 240px}
@media(max-width:820px){
  body .grow-row{grid-template-columns:56px 1fr;row-gap:10px}
  body .grow-row .gf-ar{display:none}
}

/* --- footer: one column renders as a real list, so kill the markers - */
body .volt-footer ul,body .volt-footer ol{list-style:none;margin:0;padding:0}
body .volt-footer li{list-style:none;margin:0}
body .volt-footer li::marker{content:""}
body .volt-footer .foot-col a{padding-left:0}
body .volt-footer .foot-col a:hover{padding-left:0;transform:translateX(3px)}

/* --- promo / trust strip / newsletter: guard block forced old hues --- */
body section .promo,body .elementor-widget-container .promo{
  background:linear-gradient(112deg,#0d2a1c,var(--violet)) !important;color:#fff !important}
body section .promo p,body .elementor-widget-container .promo p{color:rgba(255,255,255,.72) !important}
body section.trust-strip,body .elementor-widget-container .trust-strip{background:var(--violet) !important}
body section .news,body .elementor-widget-container .news{
  background:linear-gradient(112deg,#0d2a1c,var(--violet)) !important}

/* --- buttons: guard block pinned 2px ink borders on every variant --- */
body a.btn-out,body .btn-out{border:1.5px solid var(--line-2) !important;color:var(--ink) !important;
  background:transparent !important;border-radius:var(--pill)}
body a.btn-out:hover,body .btn-out:hover{background:var(--ink) !important;color:#fff !important;
  border-color:var(--ink) !important}
body a.btn-violet,body .btn-violet{background:var(--violet) !important;border-color:var(--violet) !important;
  color:#fff !important}
body a.btn-lime,body .btn-lime{background:var(--lime) !important;color:var(--ink) !important;
  border-color:var(--lime) !important}
body a.btn-dark,body .btn-dark{background:var(--ink) !important;color:#fff !important;
  border-color:var(--ink) !important}
body .cta-band .btn-out,body .showcase .btn-out,body .portal .btn-out,body .vst .btn-out,
body .hero.volt-hero-dark .btn-out{
  border-color:rgba(255,255,255,.4) !important;color:#fff !important}
body .cta-band .btn-out:hover,body .showcase .btn-out:hover,
body .hero.volt-hero-dark .btn-out:hover{background:#fff !important;color:var(--ink) !important}

/* --- feature rows: guard block forced a violet gradient placeholder - */
body .frow-media{background:linear-gradient(135deg,#0d2a1c,var(--violet)) !important;
  box-shadow:var(--sh-1) !important;border-radius:var(--r-lg)}
body .frow-media img{border-radius:var(--r-lg)}

/* --- no hard offset shadows or square corners survive anywhere ------ */
body .svc-row,body .st,body .testi-card,body .price-card,body .rcard,body .vcp-card,
body .work-card,body .f-card,body .grow-box,body .vgp-card{border-radius:var(--r)}
body .catc:hover,body .svc-row:hover,body .rcard:hover,body .work-card:hover{box-shadow:var(--sh-2)}

/* ============================================================
   24. HARD-SHADOW + EYEBROW SWEEP
   The base sheet carries ~20 zero-blur offset shadows (the
   brutalist signature) on card and container selectors. Killing
   them one by one is fragile, so they are neutralised as a group
   and the soft depth is re-applied on top.
   ============================================================ */

/* --- containers that carried an offset plate behind the row ------- */
body .svc,body .lp-steps,body .cat-grid,body .price-grid,body .testi-grid,
body .work-grid,body .vst-grid,body .f-list,body .rail,body .vcp-rail,body .vgp-steps,body .grow-rowwrap,body .grow-flow{
  box-shadow:none;border:0;background:none}

/* --- cards: no zero-blur shadow in any state --------------------- */
body .svc-row,body .st,body .f-card,body .testi-card,body .price-card,body .catc,
body .rcard,body .vcp-card,body .work-card,body .vgp-card,body .grow-box,
body .grow-row,body .gf-step,body .portal-card,body .frow-media,body .sd-preview,
body .filters,body .news,body .promo,body .hv-browser,body .hv-chip{
  box-shadow:var(--sh-1)}
body .svc-row:hover,body .st:hover,body .f-card:hover,body .testi-card:hover,
body .price-card:hover,body .catc:hover,body .rcard:hover,body .vcp-card:hover,
body .work-card:hover,body .vgp-card:hover{box-shadow:var(--sh-2);transform:translateY(-5px)}
body .hv-browser,body .hv-chip{box-shadow:var(--sh-2)}

/* --- buttons carried a 4px ink plate; restore the soft lift ------- */
body .btn{box-shadow:none}
body .btn-violet{box-shadow:var(--sh-btn)}
body .btn-violet:hover{box-shadow:0 14px 30px -10px rgba(14,122,70,.6);transform:translateY(-2px)}
body .btn-lime:hover,body .btn-dark:hover{box-shadow:0 12px 26px -12px rgba(16,25,20,.45);transform:translateY(-2px)}
body .btn:hover{transform:translateY(-2px)}

/* --- eyebrow: base draws a 30x3 dash; this skin uses a dot -------- */
body .sec-tag,body .sec-head .sec-tag,body .portal-left .sec-tag{
  display:flex;align-items:center;gap:12px;font-family:var(--sans);font-size:11px;
  font-weight:700;letter-spacing:.2em;text-transform:uppercase;background:none;
  border:0;padding:0;border-radius:0;width:auto}
body .sec-tag::before,body .sec-head .sec-tag::before,body .portal-left .sec-tag::before{
  content:"";width:7px;height:7px;min-width:7px;border-radius:50%;background:var(--lime);
  box-shadow:none;flex:none}
body .sec-tag::after,body .sec-head .sec-tag::after{
  content:"";flex:1;height:1px;max-width:200px;background:linear-gradient(90deg,var(--line-2),transparent)}
body .sec-tag svg{display:none}

/* --- rail head: tag stretched full width, heading forced uppercase - */
body .rail-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}
body .rail-head>*:first-child{flex:1 1 340px;min-width:0}
body .rl-tag,body .grow-badge,body .vgp-tag,body .gr-badge{
  display:inline-flex;width:auto;align-self:flex-start;max-width:max-content}
body .rl-tag::before{display:none}
body .rail-head h2,body .vcp-head h2,body .grow-head-copy h2{
  text-transform:none;font-family:var(--disp);letter-spacing:-.032em;
  font-size:clamp(25px,3.2vw,40px);margin-top:14px}

/* --- rail cards keep a fixed track width ------------------------- */
body .rail>.rcard,body .rail>a.rcard{flex:0 0 296px;max-width:296px;scroll-snap-align:start}
body .rail .rc-thumb{aspect-ratio:4/3;flex:none}
body .rcard{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
body .rc-thumb{border-bottom:1px solid var(--line)}
@media(max-width:560px){body .rail>.rcard,body .rail>a.rcard{flex:0 0 84vw;max-width:84vw}}

/* --- process/step cards: square corners + ink border survived ----- */
body .st,body .f-card,body .svc-row,body .price-card,body .testi-card,body .work-card,
body .catc,body .vcp-card,body .vgp-card,body .portal-card{border-width:1px}
body .st,body .f-card{border:1px solid var(--line);border-radius:var(--r);background:var(--card)}
body .st .n{box-shadow:0 10px 20px -10px rgba(14,122,70,.6)}

/* ============================================================
   25. FINAL SWEEP — scoped to Elementor widget wrappers so it
   catches classes I have not seen, rather than named selectors.
   ============================================================ */

/* every zero-blur plate inside a VOLT widget, then depth re-applied */
body .elementor-widget-container *{box-shadow:none}
body .elementor-widget-container .svc-row,body .elementor-widget-container .st,
body .elementor-widget-container .f-card,body .elementor-widget-container .testi-card,
body .elementor-widget-container .price-card,body .elementor-widget-container .catc,
body .elementor-widget-container .rcard,body .elementor-widget-container .vcp-card,
body .elementor-widget-container .work-card,body .elementor-widget-container .vgp-card,
body .elementor-widget-container .grow-box,body .elementor-widget-container .grow-row,
body .elementor-widget-container .portal-card,body .elementor-widget-container .filters,
body .elementor-widget-container .frow-media,body .elementor-widget-container .sd-preview{
  box-shadow:var(--sh-1)}
body .elementor-widget-container .hv-browser,body .elementor-widget-container .hv-chip{box-shadow:var(--sh-2)}
body .elementor-widget-container .btn-violet{box-shadow:var(--sh-btn)}

/* headings: uppercase is set in six separate base rules */
body h1,body h2,body h3,body h4,body .sec-head h2,body .rail-head h2,body .portal h2,
body .final h2,body .cta-band h2,body .vcp-head h2,body .grow-head-copy h2,body .phead h1{
  text-transform:none;background:none;-webkit-text-fill-color:currentColor}
body .sec-head h2,body .phead h1{letter-spacing:-.035em;line-height:1.1}
body .cta-band h2,body .final h2{line-height:1.08;letter-spacing:-.04em}
body mark,body .sec-head h2 mark{background:none;color:inherit;padding:0}

/* selects carried a 2px ink box */
body .sort-sel,body .sort-sel select,body .lp-field select,body .lp-field input,
body .lp-field textarea,body .filters input[type=text]{
  border:1px solid var(--line-2);border-radius:var(--pill);background:var(--card);
  font-family:var(--sans);font-weight:500;box-shadow:none}
body .lp-field input,body .lp-field textarea{border-radius:var(--r-sm)}
body .sort-sel{border:0;padding:0}

/* page-header wash uses the brand green, not raw accent */
body .phead{background:
  radial-gradient(64% 120% at 92% -10%, rgba(14,122,70,.14), transparent 60%),
  radial-gradient(40% 80% at 4% 100%, rgba(198,242,78,.16), transparent 62%),
  var(--paper)}

/* marketplace hero art slot — set a real image on .phead-media to replace */
body .phead.has-art{position:relative;overflow:hidden}
body .phead.has-art .phead-media{position:absolute;inset:0;z-index:0;
  background-size:cover;background-position:center;opacity:.16}
body .phead.has-art .wrap{position:relative;z-index:1}

/* ============================================================
   26. PAGE HEADER — LIGHT BACKGROUND TEXT COLOURS
   The base sets `.phead{background:var(--violet-deep);color:#fff}`
   because the original header was a dark plate. This skin makes it
   light paper, so every inherited colour has to be reset or the
   h1 renders white on white.
   ============================================================ */
body .phead{color:var(--ink);border-bottom:1px solid var(--line)}
body .phead h1{color:var(--ink);text-transform:none;letter-spacing:-.04em;line-height:1.08;
  font-size:clamp(32px,4.8vw,58px)}
body .phead p{color:var(--muted);font-size:16px;line-height:1.7;max-width:60ch}
body .phead .crumb,body .crumb{color:var(--muted)}
body .phead .crumb a,body .crumb a{color:var(--muted);font-family:var(--sans);font-weight:500;
  text-transform:none;letter-spacing:0;border:0;padding:0}
body .phead .crumb a:hover,body .crumb a:hover{color:var(--violet)}
body .phead .crumb .sep,body .crumb .sep{color:var(--line-2)}

/* eyebrow inside the header: base draws a 30x3 lime dash */
body .phead .ptag{display:inline-flex;align-items:center;gap:10px;background:var(--violet-soft);
  color:var(--violet);border-radius:var(--pill);padding:8px 16px;font-family:var(--sans);
  font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;margin-bottom:18px}
body .phead .ptag::before{content:"";width:7px;height:7px;min-width:7px;border-radius:50%;
  background:var(--violet);flex:none}
body .phead .ptag::after{display:none}

/* if a page header IS meant to be dark, add class `phead--dark` */
body .phead.phead--dark{background:linear-gradient(140deg,#0d2a1c,var(--violet-deep));color:#fff}
body .phead.phead--dark h1{color:#fff}
body .phead.phead--dark p{color:rgba(255,255,255,.66)}
body .phead.phead--dark .crumb,body .phead.phead--dark .crumb a{color:rgba(255,255,255,.6)}
body .phead.phead--dark .ptag{background:rgba(198,242,78,.14);color:var(--lime)}
body .phead.phead--dark .ptag::before{background:var(--lime)}

/* marketplace: stray rule was drawing a divider beside the results column */
body .shop>*{border-left:0;border-right:0}
body .shop-top{border:0}

/* ============================================================
   27. MARKETPLACE — correct classes
   The grid is `.shop-grid` (270px 1fr), not `.shop`. Filters,
   checkboxes and pager all carry 2px ink borders from the base.
   ============================================================ */
body .shop{padding:32px 0 90px;background:var(--paper)}
body .shop-grid{display:grid;grid-template-columns:264px 1fr;gap:34px;align-items:start}
body .shop-grid.nofilters{grid-template-columns:1fr}
body .shop-grid>*{border-left:0;border-right:0;min-width:0}

/* filter panel */
body .filters{position:sticky;top:110px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-1)}
body .filters .fhead{display:flex;align-items:center;justify-content:space-between;
  padding:18px 22px;border-bottom:1px solid var(--line)}
body .filters .fhead h3{font-family:var(--disp);font-size:17px;font-weight:700;letter-spacing:-.025em}
body .filters .fhead a{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--violet)}
body .filters .fgroup,body .fgroup{padding:18px 22px;border-bottom:1px solid var(--line)}
body .filters .fgroup:last-child,body .fgroup:last-child{border-bottom:0}
body .filters .fgroup h4,body .fgroup h4{font-family:var(--sans);font-size:11px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}

/* link-based checkboxes */
body .filters .fopt{display:flex;align-items:center;gap:11px;padding:7px 0;font-size:14px;color:var(--ink-2)}
body .filters .fopt:hover{color:var(--violet)}
body .filters .fopt .fbox{width:18px;height:18px;border:1.5px solid var(--line-2);
  border-radius:5px;background:var(--card);flex:none}
body .filters .fopt:hover .fbox{border-color:var(--violet)}
body .filters .fopt .fbox.on{background:var(--violet);border-color:var(--violet)}
body .filters .fopt.cur{color:var(--ink);font-weight:600}
body .filters .fopt .count,body .filters .count{margin-left:auto;font-size:12px;color:var(--muted)}
body .filters .price-range .price-go{background:var(--ink);color:#fff;border:1.5px solid var(--ink);
  border-radius:var(--pill);padding:9px 16px;font-family:var(--sans);font-size:12px;font-weight:600}
body .filters .price-range .price-go:hover{background:var(--violet);border-color:var(--violet)}

/* results column */
body .shop-top{display:flex;align-items:center;justify-content:space-between;gap:18px;
  flex-wrap:wrap;margin-bottom:24px;border:0}
body .shop-count{font-size:14px;color:var(--muted)}
body .shop-empty{padding:64px 24px;border:1px dashed var(--line-2);border-radius:var(--r);
  color:var(--muted);text-align:center}
body .shop-pager a{width:auto;min-width:42px;height:42px;padding:0 15px;border:1px solid var(--line-2);
  border-radius:var(--pill);font-family:var(--sans);font-size:13.5px;font-weight:600;color:var(--ink-2)}
body .shop-pager a:hover{background:var(--violet);border-color:var(--violet);color:#fff}
body .shop-pager a.on,body .shop-pager .current{background:var(--ink);border-color:var(--ink);color:#fff}

/* add-to-cart button in product cards */
body .shop .rc-add,body .shop .rc-foot a.edd-add-to-cart{
  width:40px;height:40px;min-width:40px;border-radius:var(--pill);
  background:var(--violet) !important;border:0}
body .shop .rc-add:hover,body .shop .rc-foot a.edd-add-to-cart:hover{
  background:var(--violet-2) !important;transform:translateY(-2px)}
body .shop .rc-add svg{stroke:#fff}

/* empty-image hatch was still the old purple */
body .rc-noimg{background:repeating-linear-gradient(45deg,var(--bg-2) 0 10px,#e8e8e0 10px 20px)}
body .rc-noimg svg{width:40px;height:40px;stroke:var(--line-2);fill:none}

/* ============================================================
   28. CATALOGUE PINNED — dark rail with hard shadows
   ============================================================ */
body .vcp-wrap{background:linear-gradient(140deg,#0d2a1c,var(--violet-deep))}
body .vcp-card{flex:0 0 340px;border:1px solid rgba(255,255,255,.14);border-radius:var(--r);
  box-shadow:0 24px 48px -24px rgba(0,0,0,.6)}
body .vcp-card:hover{box-shadow:0 30px 60px -22px rgba(0,0,0,.7);transform:translateY(-5px)}
body .vcp-shot{border-bottom:1px solid var(--line)}
body .vcp-head h2{letter-spacing:-.035em;text-transform:none;line-height:1.1}
body .vcp-head p{font-family:var(--sans);font-size:11px;letter-spacing:.16em;color:rgba(255,255,255,.55)}

/* ============================================================
   29. MARKETPLACE GRID — CORRECTION
   `.shop-main` is a plain wrapper holding `.shop-top` and
   `.shop-cards`. An earlier rule in this file turned `.shop-main`
   into a 3-column grid, which placed those two children into
   columns 1 and 2 and collapsed the product grid to ~46px.
   The grid is `.shop-cards`, with a cols-N modifier.
   ============================================================ */
body .shop-main{display:block;grid-template-columns:none;gap:0;min-width:0}
body .shop-main>.shop-top{width:100%}
body .shop-cards{display:grid;gap:22px;width:100%}
body .shop-cards.cols-2{grid-template-columns:repeat(2,1fr)}
body .shop-cards.cols-3{grid-template-columns:repeat(3,1fr)}
body .shop-cards.cols-4{grid-template-columns:repeat(4,1fr)}
body .shop-cards>*{min-width:0}
@media(max-width:1100px){
  body .shop-cards.cols-3,body .shop-cards.cols-4{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  body .shop-cards.cols-2,body .shop-cards.cols-3,body .shop-cards.cols-4{grid-template-columns:1fr}
}

/* ============================================================
   30. MARKETPLACE — TRUE STRUCTURE
   section.shop > .wrap > .shop-grid > [.filters | .shop-main]
   An earlier rule in this file made `section.shop` a
   250px/1fr grid, which trapped `.wrap` in the 250px column and
   collapsed everything below it to zero width. `.shop` is a plain
   section; `.shop-grid` is the only two-column layout here.
   ============================================================ */
body section.shop,body .shop{display:block;grid-template-columns:none;gap:0}
body section.shop>.wrap,body .shop>.wrap{width:100%;max-width:1200px;margin:0 auto;padding:0 26px}
body .shop .shop-grid{display:grid;grid-template-columns:264px minmax(0,1fr);gap:34px;align-items:start;width:100%}
body .shop .shop-grid.nofilters{grid-template-columns:minmax(0,1fr)}
body .shop .shop-grid>*{min-width:0}
body .shop .shop-main{display:block;width:100%;min-width:0}
body .shop .shop-cards{display:grid;gap:22px;width:100%}
body .shop .shop-cards.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
body .shop .shop-cards.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
body .shop .shop-cards.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1020px){
  body .shop .shop-grid{grid-template-columns:minmax(0,1fr)}
  body .shop .filters{position:static}
}
@media(max-width:1100px){
  body .shop .shop-cards.cols-3,body .shop .shop-cards.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  body .shop .shop-cards.cols-2,body .shop .shop-cards.cols-3,
  body .shop .shop-cards.cols-4{grid-template-columns:minmax(0,1fr)}
}
