/* ============ Noor Labs — elegant biotech luxury theme ============ */
:root{
  --bg:            #030308;
  --bg-alt:        #07070d;
  --panel:         rgba(13,14,22,.78);
  --panel-solid:   #0d0e16;
  --panel-border:  rgba(140,220,255,.16);
  --magenta:       #ff2d8f;
  --magenta-soft:  #ff8fc9;
  --cyan:          #24e5ff;
  --cyan-soft:     #8ff4ff;
  --purple:        #8b3dff;
  --text:          #eef0f6;
  --text-dim:      #d7dcec;
  --amber:         #ffb020;
  --radius:        4px;
  --grad-brand:    linear-gradient(90deg, var(--cyan) 0%, var(--purple) 50%, var(--magenta) 100%);
  --font-display:  'Cinzel', serif;
  --font-hud:      'Montserrat', sans-serif;
  --font-mono:     'Montserrat', sans-serif;
  --font-body:     'Rajdhani', sans-serif;
  --nav-bg:        rgba(3,3,8,.75);
  --nav-bg-solid:  rgba(3,3,8,.97);
  /* Dedicated card tokens for widgets that float on always-dark hero banners (e.g. .hero-card)
     — these must follow the light/dark toggle even when their surrounding section doesn't. */
  --card-bg:       rgba(13,14,22,.82);
  --card-text:     #f4f5f9;
  --card-text-dim: #d7dcec;
  --card-border:   rgba(140,220,255,.22);
  --card-accent:   #8ff4ff;
}

/* ================= LIGHT THEME ================= */
[data-theme="light"]{
  --bg:            #eef6fb;
  --bg-alt:        #f3edfb;
  --panel:         rgba(255,255,255,.88);
  --panel-solid:   #ffffff;
  --panel-border:  rgba(60,70,140,.16);
  --text:          #0a0c14;
  --text-dim:      #2e3450;
  --cyan-soft:     #066a86;
  --magenta-soft:  #a01468;
  --nav-bg:        rgba(238,246,251,.92);
  --nav-bg-solid:  rgba(238,246,251,.97);
  --card-bg:       rgba(255,255,255,.95);
  --card-text:     #0a0c14;
  --card-text-dim: #2e3450;
  --card-border:   rgba(60,70,140,.22);
  --card-accent:   #066a86;
}
[data-theme="light"] .hud-panel{ box-shadow:0 2px 18px rgba(20,30,60,.08); }
[data-theme="light"] .grain{ opacity:.03; }

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-body);
  font-size:21px;
  font-weight:600;
  line-height:1.65;
  overflow-x:hidden;
  position:relative;
}
[data-theme="light"] body{ font-weight:700; }
h1,h2,h3,.brand-text,.hero-kicker{font-family:var(--font-display); letter-spacing:1.5px;}
a{color:inherit; text-decoration:none;}
img{display:block; max-width:100%;}
section{position:relative; padding:72px 6vw;}
.section-title{
  font-size:clamp(28px,4vw,44px);
  font-weight:900;
  letter-spacing:1px;
  margin-bottom:10px;
}
.section-title span{
  background:var(--grad-brand);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.section-sub{color:var(--text-dim); max-width:560px; margin-bottom:40px;}
.section-tag{
  display:inline-block; font-family:var(--font-mono); font-size:11px; letter-spacing:3px;
  text-transform:uppercase; color:var(--cyan-soft); margin-bottom:14px;
}
.section-tag::before{content:"// "; color:var(--magenta-soft);}

/* ================= ATMOSPHERE — soft vignette (kept clean/polished, no VHS grit) ================= */
body::before{
  content:""; position:fixed; inset:0; z-index:9000; pointer-events:none;
  background:repeating-linear-gradient(
    to bottom, rgba(160,230,255,.015) 0px, rgba(160,230,255,.015) 1px,
    transparent 1px, transparent 3px
  );
  mix-blend-mode:overlay;
  opacity:.18;
}
body::after{
  content:""; position:fixed; inset:0; z-index:9001; pointer-events:none;
  background:radial-gradient(ellipse at 50% 40%, transparent 45%, rgba(0,0,0,.55) 100%);
}
.grain{
  position:fixed; inset:-50%; width:200%; height:200%; z-index:8999; pointer-events:none;
  opacity:.018; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grainShift 8s steps(8) infinite;
}
@keyframes grainShift{
  0%{transform:translate(0,0);} 25%{transform:translate(-2%,1%);}
  50%{transform:translate(1%,-2%);} 75%{transform:translate(-1%,-1%);} 100%{transform:translate(0,0);}
}

/* ---------- glitch title utility ---------- */
.glitch{position:relative; display:inline-block; max-width:100%;}
.glitch::before, .glitch::after{
  content:attr(data-text); position:absolute; left:0; top:0; width:100%; height:100%;
  overflow:hidden; background:transparent;
}
.glitch::before{
  color:var(--cyan); clip-path:inset(0 0 55% 0);
  animation:glitchTop 4.5s infinite linear;
  transform:translate(0,0);
}
.glitch::after{
  color:var(--magenta); clip-path:inset(60% 0 0 0);
  animation:glitchBottom 5.5s infinite linear;
}
@keyframes glitchTop{
  0%,92%,100%{ transform:translate(0,0); opacity:0; }
  93%{ transform:translate(-3px,-1px); opacity:.8; }
  94%{ transform:translate(3px,1px); opacity:.8; }
  95%{ transform:translate(-2px,0); opacity:0; }
}
@keyframes glitchBottom{
  0%,90%,100%{ transform:translate(0,0); opacity:0; }
  91%{ transform:translate(3px,1px); opacity:.7; }
  92%{ transform:translate(-4px,-1px); opacity:.7; }
  93%{ transform:translate(2px,0); opacity:0; }
}

/* ---------- HUD panel: corner-bracket frame ---------- */
.hud-panel{
  position:relative;
  background:var(--panel);
  border:1px solid var(--panel-border);
  border-radius:12px;
  backdrop-filter:blur(10px);
}
.hud-panel::before, .hud-panel::after{
  content:""; position:absolute; width:14px; height:14px; pointer-events:none;
  border:2px solid var(--cyan-soft); opacity:.65;
}
.hud-panel::before{ top:6px; left:6px; border-right:none; border-bottom:none; border-top-left-radius:4px; }
.hud-panel::after{ bottom:6px; right:6px; border-left:none; border-top:none; border-bottom-right-radius:4px; }

/* ---------- shared gradient glow for cards site-wide ----------
   A soft, slowly-cycling multi-color glow (cyan → magenta → purple → amber) applied
   via box-shadow so it never conflicts with hud-panel's own corner-bracket
   pseudo-elements. One keyframe, reused everywhere for a consistent look. */
@keyframes cardGradientGlow{
  0%,100%{ box-shadow:0 0 20px -4px rgba(36,229,255,.35), 0 0 34px -6px rgba(255,45,143,.18); }
  33%{ box-shadow:0 0 22px -4px rgba(255,45,143,.35), 0 0 36px -6px rgba(139,61,255,.22); }
  66%{ box-shadow:0 0 22px -4px rgba(139,61,255,.32), 0 0 36px -6px rgba(255,176,32,.2); }
}
.hero-card, .mascot-card, .contact-card, .verify-feature-card,
.tech-card, .journal-item, .cat-spotlight-card, .product-card,
.coa-standard-item, .cart-drawer, .checkout-modal{
  animation:cardGradientGlow 6s ease-in-out infinite;
}
@media(prefers-reduced-motion:reduce){
  .hero-card, .mascot-card, .contact-card, .verify-feature-card,
  .tech-card, .journal-item, .cat-spotlight-card, .product-card,
  .coa-standard-item, .cart-drawer, .checkout-modal{
    animation:none; box-shadow:0 0 20px -4px rgba(36,229,255,.3), 0 0 34px -6px rgba(255,45,143,.16);
  }
}

/* ---------- neon flicker (very subtle, non-strobing) ---------- */
@keyframes neonFlicker{
  0%,100%{opacity:1;} 92%{opacity:1;} 93%{opacity:.85;} 94%{opacity:1;} 97%{opacity:.92;} 98%{opacity:1;}
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  padding:14px 28px;
  border-radius:var(--radius);
  font-family:var(--font-hud);
  font-size:14px;
  letter-spacing:1.5px;
  text-transform:uppercase;
  cursor:pointer;
  border:1px solid transparent;
  transition:transform .2s ease, box-shadow .2s ease, background .2s ease;
  white-space:nowrap;
}
.btn:active{transform:scale(.97);}
.btn-primary{
  background:var(--grad-brand);
  color:#050308;
  font-weight:700;
  box-shadow:0 0 20px rgba(255,45,143,.35), 0 0 40px rgba(36,229,255,.15);
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
}
.btn-primary:hover{box-shadow:0 0 30px rgba(255,45,143,.55), 0 0 60px rgba(36,229,255,.3); transform:translateY(-2px);}
.btn-ghost{
  background:rgba(255,255,255,.02);
  color:var(--text);
  border-color:var(--panel-border);
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
}
.btn-ghost:hover{border-color:var(--cyan); color:var(--cyan-soft);}
.btn-full{width:100%;}

/* ================= AGE GATE — wallpaper scene ================= */
.gate{
  position:fixed; inset:0; z-index:999;
  background:#000;
  overflow:hidden;
}
.gate-wallpaper-img{
  position:absolute; inset:0; z-index:1;
  width:100%; height:100%; object-fit:cover;
  filter:saturate(1.35) contrast(1.1) brightness(.82);
}
/* On screens wider than the wallpaper's own ~1.82 aspect ratio (most desktop/ultra-wide
   viewports), "cover" crops the top and bottom, cutting off the logo. Switch to
   "contain" there so the whole scene is always visible — this leaves transparent
   letterbox bars on the sides (object-fit never fills them with color), which the
   DNA-rain layer behind the image shows through. Narrower/taller screens (phones,
   tablets) already show the wallpaper uncropped via "cover", so the rain stays hidden
   behind a full-bleed image there. */
@media(min-aspect-ratio: 178/100){
  .gate-wallpaper-img{ object-fit:contain; }
}
.gate[hidden]{display:none;}

/* A soft ambient bloom centered behind the physical logo, using the wallpaper's exact
   sampled colors — makes the scene feel like it's lighting the logo from behind. */
.gate-logo-glow{
  position:absolute; top:40%; left:50%; transform:translate(-50%,-50%);
  width:min(60vmin,700px); height:min(60vmin,700px);
  z-index:1; pointer-events:none;
  background:radial-gradient(circle, rgba(12,216,254,.24) 0%, rgba(254,12,250,.17) 45%, transparent 72%);
  filter:blur(24px);
  animation:gateLogoGlowPulse 5s ease-in-out infinite;
}
@keyframes gateLogoGlowPulse{ 0%,100%{ opacity:.7; } 50%{ opacity:1; } }
@media(prefers-reduced-motion:reduce){ .gate-logo-glow{ animation:none; opacity:.85; } }

/* The actual Noor Labs logo, centered on the gate, with a rotating yellow/orange ring —
   same visual language as the homepage hero badge. */
.gate-logo-wrap{
  position:absolute; top:40%; left:50%; transform:translate(-50%,-50%);
  width:clamp(150px,20vw,230px); height:clamp(150px,20vw,230px);
  z-index:1;
}
.gate-logo-wrap::before{
  content:""; position:absolute; inset:-6px; border-radius:50%;
  background:conic-gradient(from 0deg,
    rgba(255,176,32,.18) 0%, rgba(255,176,32,1) 10%, rgba(255,176,32,.18) 24%,
    rgba(255,140,0,.45) 50%, rgba(255,176,32,.18) 68%, rgba(255,176,32,.18) 100%);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 5px), #000 calc(100% - 5px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 5px), #000 calc(100% - 5px));
  filter:drop-shadow(0 0 10px rgba(255,176,32,.85)) drop-shadow(0 0 18px rgba(255,140,0,.5));
  animation:gateLogoRingSpin 6s linear infinite;
}
@keyframes gateLogoRingSpin{ to{ transform:rotate(360deg); } }
.gate-logo-img{
  position:relative; z-index:1;
  width:100%; height:100%; border-radius:50%; object-fit:cover; display:block;
  background:#000;
  box-shadow:0 0 0 1px rgba(255,255,255,.15), 0 0 24px 4px rgba(255,176,32,.55);
}
/* Same rainbow ring as the homepage logo, sitting just outside the amber ring —
   keeps every logo on the site using the one consistent treatment. */
.gate-logo-rainbow{
  position:absolute; inset:-11px; border-radius:50%; z-index:1; pointer-events:none;
  background:conic-gradient(from 0deg,
    #ff3b3b, #ff9d2d, #ffe62d, #4dff5b, #2de0ff, #3b6bff, #b13bff, #ff3bd6, #ff3b3b);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px));
  filter:drop-shadow(0 0 10px rgba(255,255,255,.4));
  opacity:.85;
  animation:heroBadgeRainbowSpin 9s linear infinite;
}
@media(prefers-reduced-motion:reduce){ .gate-logo-wrap::before, .gate-logo-rainbow{ animation:none; } }
@media(max-width:480px) and (orientation:portrait){
  .gate-logo-wrap{ width:clamp(180px,42vw,260px); height:clamp(180px,42vw,260px); }
}
@media(orientation:landscape) and (max-height:500px){
  .gate-logo-wrap{ width:110px; height:110px; }
}
@media(min-width:1000px){
  .gate-logo-wrap{ width:clamp(230px,24vw,320px); height:clamp(230px,24vw,320px); top:32%; }
  .gate-logo-glow{ top:32%; }
}

/* ---------- Faint drifting molecule nodes + bonds, same system as the homepage hero ---------- */
.gate-molecules{ position:absolute; inset:0; z-index:1; pointer-events:none; overflow:hidden; }

/* ---------- Blurred backdrop fill for the letterbox bars on wide screens ----------
   Same technique Apple Music/Spotify use for mismatched-aspect artwork: a heavily
   blurred, edge-to-edge copy of the same photo sits behind the sharp "contain"-fit
   image, so the bars read as a natural glow extension of the scene instead of an
   unrelated effect layered on top. */
.gate-wallpaper-blur{
  position:absolute; inset:0; z-index:0;
  background:url('../assets/gate-wallpaper.png') center center / cover no-repeat;
  filter:blur(50px) saturate(1.4) brightness(.5);
  transform:scale(1.2);
}
.gate-helix-canvas{ display:none; } /* the wallpaper is rich enough on its own now */

/* Single unified panel at the bottom — disclaimer, agreement checkbox, Enter Lab
   button, and Exit all live together in one card, well clear of the logo/scene above
   it, instead of three separate floating pieces competing for the same real estate. */
.gate-panel{
  position:absolute; bottom:0; left:0; right:0; z-index:2;
  display:flex; justify-content:center;
  padding:16px 16px 20px;
  background:linear-gradient(transparent, rgba(0,0,0,.55) 40%);
}
.gate-panel-card{
  max-width:560px; width:100%;
  background:rgba(4,5,12,.9); backdrop-filter:blur(6px);
  border:1px solid rgba(36,229,255,.35); border-radius:14px;
  padding:16px 22px;
  display:flex; flex-direction:column; align-items:center; gap:10px;
  text-align:center;
  animation:gateCardGlow 4s ease-in-out infinite;
}
@keyframes gateCardGlow{
  0%,100%{ box-shadow:0 0 22px rgba(36,229,255,.2), 0 0 40px rgba(255,45,143,.12); }
  50%{ box-shadow:0 0 34px rgba(36,229,255,.4), 0 0 60px rgba(255,45,143,.24); }
}
@media(prefers-reduced-motion:reduce){ .gate-panel-card{ animation:none; box-shadow:0 0 26px rgba(36,229,255,.28), 0 0 46px rgba(255,45,143,.16); } }
.gate-panel-card p{
  margin:0; font-size:clamp(13px,1.4vw,15px); line-height:1.5; color:#f5f7fc; font-weight:700;
}
.gate-panel-card strong{ color:var(--amber); font-weight:800; }

/* A real, standalone button — no longer an invisible hotspot trying to line up with
   the wallpaper's own artwork (which broke every time the image or aspect ratio
   changed). Two distinct glows: a calm ambient pulse at rest, brighter/faster on hover. */
.gate-enter-btn{
  position:relative;
  padding:12px 40px;
  border-radius:999px;
  border:2px solid rgba(5,5,10,.6);
  background:var(--grad-brand);
  font-family:var(--font-hud); font-weight:800;
  font-size:clamp(15px, 2vw, 20px); letter-spacing:4px; text-transform:uppercase;
  color:#050308; cursor:pointer;
  text-shadow:0 1px 1px rgba(255,255,255,.25);
  animation:gateEnterIdleGlow 3.2s ease-in-out infinite;
  transition:transform .25s ease, border-color .25s ease;
}
@keyframes gateEnterIdleGlow{
  0%,100%{ box-shadow:0 0 22px rgba(36,229,255,.28), 0 0 40px rgba(255,45,143,.18); }
  50%{ box-shadow:0 0 34px rgba(36,229,255,.5), 0 0 60px rgba(255,45,143,.32); }
}
.gate-enter-btn:not(:disabled):hover,
.gate-enter-btn:not(:disabled):focus-visible{
  transform:translateY(-3px) scale(1.03);
  border-color:rgba(255,255,255,.45);
  animation:gateEnterHoverGlow 1.3s ease-in-out infinite;
}
@keyframes gateEnterHoverGlow{
  0%,100%{ box-shadow:0 0 40px rgba(255,176,32,.5), 0 0 70px rgba(36,229,255,.35); }
  50%{ box-shadow:0 0 56px rgba(255,176,32,.75), 0 0 96px rgba(36,229,255,.55); }
}
.gate-enter-btn:disabled{
  opacity:.4; cursor:not-allowed; animation:none;
  box-shadow:none; transform:none;
}
@media(prefers-reduced-motion:reduce){
  .gate-enter-btn{ animation:none; }
  .gate-enter-btn:not(:disabled):hover, .gate-enter-btn:not(:disabled):focus-visible{ animation:none; transform:none; }
}

.gate-agree{
  display:flex; align-items:flex-start; gap:10px; text-align:left;
  font-size:15px; font-weight:700; line-height:1.5; color:#f5f7fc; cursor:pointer;
}
.gate-agree input{ margin-top:3px; width:17px; height:17px; accent-color:var(--cyan); flex:none; cursor:pointer; }
.gate-exit-link{ font-size:12px; letter-spacing:1px; text-transform:uppercase; color:var(--text-dim); text-decoration:underline; }

@media(max-width:700px){
  .gate-panel{ padding:16px 14px 20px; }
  .gate-panel-card{ padding:20px 20px; gap:14px; }
  .gate-panel-card p{ font-size:13px; }
  .gate-enter-btn{ padding:14px 36px; letter-spacing:3px; }
  .gate-agree{ font-size:13px; }
}

@media(orientation:landscape) and (max-height:500px){
  .gate-panel{ padding:8px 12px 12px; }
  .gate-panel-card{ padding:10px 16px; gap:8px; }
  .gate-panel-card p{ font-size:11px; line-height:1.4; }
  .gate-enter-btn{ padding:9px 26px; font-size:13px; letter-spacing:2.5px; }
  .gate-agree{ font-size:11px; }
}

/* ================= BOOT SEQUENCE (first-visit cinematic entrance) ================= */
.boot-seq{
  position:fixed; inset:0; z-index:1200;
  background:#010103;
  display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none;
  transition:opacity .7s ease;
}
.boot-seq.show{opacity:1; pointer-events:auto;}
.boot-seq.hide{opacity:0;}
.boot-inner{text-align:center;}
.boot-ring-wrap{position:relative; width:180px; height:180px; margin:0 auto 26px;}
.boot-logo-mask{position:absolute; inset:14%; border-radius:50%; overflow:hidden;}
.boot-ring{position:absolute; inset:0; width:100%; height:100%;}
.boot-ring circle{
  fill:none; stroke:var(--cyan); stroke-width:2.5;
  stroke-dasharray:578; stroke-dashoffset:578;
  transform-origin:100px 100px;
  filter:drop-shadow(0 0 6px rgba(36,229,255,.8));
  animation:bootRingDraw 1.6s cubic-bezier(.2,.7,.2,1) forwards .2s,
            bootRingSpin 9s linear infinite 1.8s;
}
@keyframes bootRingDraw{ to{ stroke-dashoffset:0; } }
@keyframes bootRingSpin{ to{ transform:rotate(360deg); } }
.boot-logo{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:50%;
  background:#000;
  transform:scale(1.16);
  opacity:0;
  animation:bootLogoIn 1.2s ease forwards .5s;
  box-shadow:0 0 40px rgba(36,229,255,.35);
}
@keyframes bootLogoIn{ to{ opacity:1; transform:scale(1); } }
.boot-msg{
  font-family:var(--font-mono); font-size:11px; letter-spacing:3px; color:var(--cyan-soft);
  opacity:0; animation:bootMsgIn .6s ease forwards 1.1s;
  text-transform:uppercase;
}
@keyframes bootMsgIn{ to{ opacity:.85; } }
.boot-cursor{ animation:neonFlicker 1s steps(2) infinite; margin-left:2px; }
@media(prefers-reduced-motion:reduce){
  .boot-seq{ display:none !important; }
}

/* ================= AMBIENT PARTICLE FIELD (gate + homepage) =================
   A restrained, GPU-cheap CSS-only starfield of drifting cyan/magenta/amber motes —
   used behind the access gate and across the homepage for a "the lab is alive" feel
   without competing with foreground text or the hero's own molecule system. */
.ambient-particles{ position:fixed; inset:0; z-index:1; pointer-events:none; overflow:hidden; }
.ambient-particles span{
  position:absolute; width:3px; height:3px; border-radius:50%;
  background:var(--cyan-soft); box-shadow:0 0 6px 1px var(--cyan-soft);
  opacity:.16;
  animation:ambientDrift 28s ease-in-out infinite, ambientTwinkle 7.5s ease-in-out infinite;
}
.ambient-particles span.magenta{ background:var(--magenta-soft); box-shadow:0 0 6px 1px var(--magenta-soft); }
.ambient-particles span.amber{ background:var(--amber); box-shadow:0 0 6px 1px var(--amber); }
@keyframes ambientDrift{
  0%,100%{ transform:translate(0,0); }
  50%{ transform:translate(var(--dx,18px), var(--dy,-14px)); }
}
@keyframes ambientTwinkle{ 0%,100%{ opacity:.1; } 50%{ opacity:.4; } }
@media(prefers-reduced-motion:reduce){ .ambient-particles span{ animation:none; opacity:.14; } }

/* ================= MUSIC PLAYER (floating, dismissible) ================= */
.music-player{
  position:fixed; left:16px; bottom:16px; z-index:150;
  display:flex; align-items:center; gap:6px;
  background:var(--card-bg); border:1px solid var(--card-border);
  border-radius:999px; padding:5px 8px 5px 5px;
  box-shadow:0 8px 20px -10px rgba(0,0,0,.5);
  transition:opacity .25s ease, transform .25s ease;
}
.music-player[hidden]{ display:none; }
.music-player-toggle{
  flex:none; width:24px; height:24px; border-radius:50%; border:none; cursor:pointer;
  background:var(--grad-brand); color:#08040f;
  display:flex; align-items:center; justify-content:center; font-size:10px;
}
.music-player-toggle svg{ width:10px; height:10px; }
.music-player-info{ display:flex; flex-direction:column; line-height:1.15; max-width:88px; overflow:hidden; }
.music-player-label{ font-family:var(--font-mono); font-size:7px; letter-spacing:1px; text-transform:uppercase; color:var(--cyan-soft); }
.music-player-track{ font-size:10px; font-weight:700; color:var(--card-text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.music-player-next, .music-player-close{
  flex:none; width:20px; height:20px; border-radius:50%; border:1px solid var(--card-border);
  background:transparent; color:var(--card-text-dim); cursor:pointer;
  display:flex; align-items:center; justify-content:center; font-size:10px;
  transition:border-color .2s, color .2s;
}
.music-player-next:hover, .music-player-close:hover{ border-color:var(--cyan); color:var(--cyan-soft); }
@media(max-width:600px){
  .music-player{ left:12px; bottom:12px; padding:4px 7px 4px 4px; gap:5px; }
  .music-player-info{ max-width:64px; }
}

/* ================= MASCOT NAV (draggable full-body quick-links menu) ================= */
.mascot-nav{ position:fixed; right:24px; bottom:80px; z-index:150; touch-action:none; }
.mascot-nav-btn{
  position:relative; width:72px; height:136px; border-radius:14px; border:none; padding:0;
  background:transparent; cursor:grab;
}
.mascot-nav.dragging .mascot-nav-btn{ cursor:grabbing; }
/* drop-shadow (unlike box-shadow) follows the image's actual alpha silhouette, so a
   ring of colored drop-shadows hugs Glowrilla's real body outline instead of drawing
   a rectangle around his bounding box. Animating their offsets in a small circle
   makes the colors sweep around the silhouette like a rotating glow. Pink/purple/blue
   only — no white, no orange/green. */
.mascot-nav-img{
  width:100%; height:100%; object-fit:contain; pointer-events:none; display:block;
  filter:
    drop-shadow(1.5px 0 2px #ff3bd6) drop-shadow(0 1.5px 2px #b13bff)
    drop-shadow(-1.5px 0 2px #3b6bff) drop-shadow(0 -1.5px 2px #2de0ff)
    drop-shadow(0 6px 8px rgba(0,0,0,.5));
  animation:mascotSilhouetteGlow 5s linear infinite;
  transition:transform .2s ease;
}
@keyframes mascotSilhouetteGlow{
  0%   { filter: drop-shadow(1.5px 0 2px #ff3bd6) drop-shadow(0 1.5px 2px #b13bff) drop-shadow(-1.5px 0 2px #3b6bff) drop-shadow(0 -1.5px 2px #2de0ff) drop-shadow(0 6px 8px rgba(0,0,0,.5)); }
  25%  { filter: drop-shadow(0 1.5px 2px #ff3bd6) drop-shadow(-1.5px 0 2px #b13bff) drop-shadow(0 -1.5px 2px #3b6bff) drop-shadow(1.5px 0 2px #2de0ff) drop-shadow(0 6px 8px rgba(0,0,0,.5)); }
  50%  { filter: drop-shadow(-1.5px 0 2px #ff3bd6) drop-shadow(0 -1.5px 2px #b13bff) drop-shadow(1.5px 0 2px #3b6bff) drop-shadow(0 1.5px 2px #2de0ff) drop-shadow(0 6px 8px rgba(0,0,0,.5)); }
  75%  { filter: drop-shadow(0 -1.5px 2px #ff3bd6) drop-shadow(1.5px 0 2px #b13bff) drop-shadow(0 1.5px 2px #3b6bff) drop-shadow(-1.5px 0 2px #2de0ff) drop-shadow(0 6px 8px rgba(0,0,0,.5)); }
  100% { filter: drop-shadow(1.5px 0 2px #ff3bd6) drop-shadow(0 1.5px 2px #b13bff) drop-shadow(-1.5px 0 2px #3b6bff) drop-shadow(0 -1.5px 2px #2de0ff) drop-shadow(0 6px 8px rgba(0,0,0,.5)); }
}
@media(prefers-reduced-motion:reduce){ .mascot-nav-img{ animation:none; } }
.mascot-nav-btn:hover .mascot-nav-img{ transform:translateY(-3px) scale(1.04); }
.mascot-nav-menu{
  position:absolute; left:50%; bottom:calc(100% + 12px); transform:translateX(-50%) translateY(8px) scale(.97);
  min-width:180px;
  background:var(--card-bg); border:1px solid var(--card-border); border-radius:14px;
  padding:10px; box-shadow:0 20px 44px -14px rgba(0,0,0,.55);
  display:flex; flex-direction:column; gap:2px;
  opacity:0; pointer-events:none;
  transition:opacity .18s ease, transform .18s ease;
}
.mascot-nav.open .mascot-nav-menu{ opacity:1; transform:translateX(-50%) translateY(0) scale(1); pointer-events:auto; }
.mascot-nav-menu a{
  padding:9px 12px; border-radius:8px; font-family:var(--font-hud); font-size:13px; font-weight:700;
  color:var(--card-text); transition:background .15s ease, color .15s ease;
}
.mascot-nav-menu a:hover{ background:var(--grad-brand); color:#08040f; }
@media(max-width:600px){ .mascot-nav{ right:16px; bottom:76px; } .mascot-nav-btn{ width:58px; height:110px; } }

/* ================= BACK TO TOP ================= */
.back-to-top{
  position:fixed; right:24px; bottom:24px; z-index:150;
  width:44px; height:44px; border-radius:50%;
  background:var(--card-bg); border:1px solid var(--card-border); color:var(--card-text);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  opacity:0; pointer-events:none; transform:translateY(10px);
  transition:opacity .25s ease, transform .25s ease, border-color .2s ease;
  box-shadow:0 10px 26px -10px rgba(0,0,0,.5);
}
.back-to-top.visible{ opacity:1; pointer-events:auto; transform:translateY(0); }
.back-to-top:hover{ border-color:var(--cyan); }
@media(prefers-reduced-motion:reduce){ .back-to-top{ transition:opacity .15s ease; } }
@media(max-width:600px){ .back-to-top{ right:16px; bottom:16px; width:40px; height:40px; } }

/* ================= NAV ================= */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:200;
  background:var(--nav-bg);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--panel-border);
}
.nav-inner{
  max-width:1300px; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between;
  padding:12px 6vw;
}
.brand{display:flex; align-items:center; gap:10px;}
.brand-logo-wrap{
  position:relative; width:46px; height:46px; flex:none;
  border-radius:50%; overflow:hidden;
  display:flex; align-items:center; justify-content:center;
  background:var(--bg);
}
.brand-logo-wrap::before{
  content:''; position:absolute; inset:-2px; border-radius:50%; z-index:2; pointer-events:none;
  background:conic-gradient(from 0deg,
    var(--cyan) 0deg, transparent 55deg, transparent 190deg,
    var(--magenta) 245deg, transparent 300deg, var(--cyan) 360deg);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
  animation:gateRingSpin 5s linear infinite;
}
@media (prefers-reduced-motion: reduce){ .brand-logo-wrap::before{ animation:none; } }
.brand-logo{width:100%; height:100%; object-fit:cover; border-radius:50%;}
.brand-text{font-weight:700; font-size:17px; letter-spacing:1px; font-family:var(--font-hud);}
.brand-text span{color:var(--magenta-soft);}
.brand-icon{
  width:36px; height:36px; flex:none; border-radius:50%;
  border:2px solid var(--cyan);
  display:flex; align-items:center; justify-content:center;
  font-family:'Cinzel',serif; font-weight:700; font-size:18px; color:var(--text);
  background:var(--bg);
}
@media(max-width:480px){ .brand-logo-wrap{width:38px; height:38px;} }

.footer-logo-banner{
  width:100%; max-width:1100px; margin:0 auto 34px; display:block; height:auto;
  border-radius:10px;
  filter:drop-shadow(0 0 22px rgba(36,229,255,.28)) drop-shadow(0 0 30px rgba(255,45,143,.22));
}
.nav-links{display:flex; gap:28px;}
.nav-links a{position:relative; font-size:16px; font-weight:700; letter-spacing:.5px; color:var(--text-dim); transition:color .2s; font-family:var(--font-hud); padding-bottom:3px;}
.nav-links a:hover, .nav-links a.active{color:var(--cyan-soft);}
.nav-links a::after{
  content:""; position:absolute; left:0; right:100%; bottom:0; height:1px;
  background:var(--cyan); box-shadow:0 0 8px var(--cyan), 0 0 2px var(--cyan-soft);
  transition:right .28s cubic-bezier(.22,.8,.3,1); pointer-events:none;
}
.nav-links a:hover::after, .nav-links a.active::after{right:0;}
@media(max-width:860px){ .nav-links a::after{display:none;} }
.nav-right{display:flex; align-items:center; gap:10px;}
.nav-toggle{
  display:none; flex-direction:column; justify-content:center; gap:5px;
  width:40px; height:40px; border-radius:2px; border:1px solid var(--panel-border);
  background:transparent; cursor:pointer;
}
.nav-toggle span{width:18px; height:2px; background:var(--text); margin:0 auto; transition:transform .2s, opacity .2s;}
.cart-btn{
  position:relative; background:transparent; border:1px solid var(--panel-border);
  color:var(--text); width:40px; height:40px; border-radius:2px;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.cart-btn:hover{border-color:var(--magenta);}
.theme-toggle{
  position:relative; background:transparent; border:1px solid var(--panel-border);
  color:var(--text); width:40px; height:40px; border-radius:2px;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  flex:none;
}
.theme-toggle:hover{border-color:var(--cyan);}
.cart-count{
  position:absolute; top:-6px; right:-6px;
  background:var(--magenta); color:#fff;
  font-size:10px; font-weight:700; font-family:var(--font-mono);
  width:18px; height:18px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
}

/* ================= PAGE HEADER (used on shop.html) ================= */
.page-header{
  /* Same as .hero/.vial-hero — background is intentionally always dark, so pin text colors. */
  --text: #f4f5f9;
  --text-dim: #93a0b8;
  --cyan-soft: #8ff4ff;
  --cyan: #24e5ff;
  --magenta-soft: #ff8fc9;
  --panel: rgba(13,14,22,.78);
  --panel-solid: #0d0e16;
  --panel-border: rgba(140,220,255,.16);
  position:relative; overflow:hidden;
  padding:160px 6vw 60px; text-align:center;
  /* Solid opaque base first — this section is always dark in both themes, so it must
     never let light mode's pale body background bleed through a semi-transparent layer. */
  background-color:#030308;
  background-image:
    linear-gradient(rgba(3,3,8,.75), rgba(3,3,8,.94)),
    repeating-linear-gradient(90deg, rgba(255,45,143,.04) 0 2px, transparent 2px 60px);
  border-bottom:1px solid var(--panel-border);
}
.page-header-inner{
  position:relative; z-index:1;
  display:flex; align-items:center; justify-content:center;
  gap:44px; flex-wrap:wrap; text-align:left;
  max-width:1100px; margin:0 auto;
}
/* Same amber-ring + rainbow-ring treatment as the homepage/access-page logos, for
   one consistent logo look site-wide. */
.page-header-logo-wrap{ position:relative; flex:none; width:120px; height:120px; }
.page-header-logo-wrap::before{
  content:""; position:absolute; inset:-6px; border-radius:50%;
  background:conic-gradient(from 0deg,
    rgba(255,176,32,.18) 0%, rgba(255,176,32,1) 10%, rgba(255,176,32,.18) 24%,
    rgba(255,140,0,.45) 50%, rgba(255,176,32,.18) 68%, rgba(255,176,32,.18) 100%);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 5px), #000 calc(100% - 5px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 5px), #000 calc(100% - 5px));
  filter:drop-shadow(0 0 10px rgba(255,176,32,.85)) drop-shadow(0 0 18px rgba(255,140,0,.5));
  animation:gateLogoRingSpin 6s linear infinite;
}
.page-header-logo-rainbow{
  position:absolute; inset:-11px; border-radius:50%; pointer-events:none;
  background:conic-gradient(from 0deg,
    #ff3b3b, #ff9d2d, #ffe62d, #4dff5b, #2de0ff, #3b6bff, #b13bff, #ff3bd6, #ff3b3b);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px));
  filter:drop-shadow(0 0 10px rgba(255,255,255,.4));
  opacity:.85;
  animation:heroBadgeRainbowSpin 9s linear infinite;
}
.page-header-logo{
  position:relative; z-index:1;
  width:100%; height:100%; border-radius:50%; object-fit:cover; display:block;
  background:#000;
  box-shadow:0 0 0 1px var(--panel-border);
}
@media(prefers-reduced-motion:reduce){ .page-header-logo-wrap::before, .page-header-logo-rainbow{ animation:none; } }
.page-header-text{ flex:1 1 420px; min-width:280px; text-align:left; }
.page-header-text .hero-kicker, .page-header-text .hero-title, .page-header-text .boot-line{ text-align:left; }
@media(max-width:640px){
  .page-header-inner{ justify-content:center; text-align:center; }
  .page-header-logo-wrap{ width:88px; height:88px; }
  .page-header-text{ text-align:center; }
  .page-header-text .hero-kicker, .page-header-text .hero-title, .page-header-text .boot-line{ text-align:center; }
}

.vial-hero-brand{ display:flex; align-items:center; gap:16px; margin-bottom:6px; }
.vial-hero-brand .hero-kicker{ margin-bottom:0; }
.vial-hero-logo-wrap{ position:relative; flex:none; width:64px; height:64px; }
.vial-hero-logo-wrap::before{
  content:""; position:absolute; inset:-4px; border-radius:50%;
  background:conic-gradient(from 0deg,
    rgba(255,176,32,.18) 0%, rgba(255,176,32,1) 10%, rgba(255,176,32,.18) 24%,
    rgba(255,140,0,.45) 50%, rgba(255,176,32,.18) 68%, rgba(255,176,32,.18) 100%);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
  filter:drop-shadow(0 0 8px rgba(255,176,32,.85)) drop-shadow(0 0 14px rgba(255,140,0,.5));
  animation:gateLogoRingSpin 6s linear infinite;
}
.vial-hero-logo-rainbow{
  position:absolute; inset:-7px; border-radius:50%; pointer-events:none;
  background:conic-gradient(from 0deg,
    #ff3b3b, #ff9d2d, #ffe62d, #4dff5b, #2de0ff, #3b6bff, #b13bff, #ff3bd6, #ff3b3b);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
  filter:drop-shadow(0 0 8px rgba(255,255,255,.4));
  opacity:.85;
  animation:heroBadgeRainbowSpin 9s linear infinite;
}
.vial-hero-logo{
  position:relative; z-index:1;
  width:100%; height:100%; border-radius:50%; object-fit:cover; display:block;
  background:#000;
  box-shadow:0 0 0 1px var(--panel-border);
}
@media(max-width:500px){ .vial-hero-logo-wrap{ width:48px; height:48px; } }
@media(prefers-reduced-motion:reduce){ .vial-hero-logo-wrap::before, .vial-hero-logo-rainbow{ animation:none; } }
.page-header .boot-line{
  font-family:var(--font-mono); font-size:12px; color:var(--cyan-soft); letter-spacing:1px;
  max-width:520px; margin:18px auto 0; text-align:left; opacity:.85;
}
.page-header .boot-line span{color:var(--magenta-soft);}

/* ================= HERO CARD (compact status readout) ================= */
/* Uses the dedicated --card-* tokens (not --panel/--text) so it always follows the light/dark
   toggle even when nested in a section whose own colors are pinned permanently dark. */
.hero-card{
  max-width:420px; margin:32px auto 0; padding:20px 24px; text-align:left;
  background:var(--card-bg) !important; border-color:var(--card-border) !important;
}
.hero-card-title{
  font-family:var(--font-mono); font-size:10.5px; letter-spacing:2px; color:var(--card-accent);
  margin-bottom:12px; text-transform:uppercase;
}
.hero-card-row{
  display:flex; justify-content:space-between; gap:12px;
  font-family:var(--font-mono); font-size:12.5px; color:var(--card-text-dim);
  padding:7px 0; border-top:1px dashed var(--card-border);
}
.hero-card-row:first-of-type{border-top:none;}
.hero-card-row span:last-child{color:var(--card-text); text-align:right;}
.status-dot{
  width:7px; height:7px; border-radius:50%; background:#3ddc97;
  display:inline-block; margin-right:6px; box-shadow:0 0 8px #3ddc97;
}

/* ================= VIAL HERO (shop.html) ================= */
.vial-hero{
  /* Same as .hero — background is intentionally always dark, so pin text colors locally. */
  --text: #f4f5f9;
  --text-dim: #93a0b8;
  --cyan-soft: #8ff4ff;
  --cyan: #24e5ff;
  --magenta-soft: #ff8fc9;
  --panel: rgba(13,14,22,.78);
  --panel-solid: #0d0e16;
  --panel-border: rgba(140,220,255,.16);
  position:relative; padding:150px 6vw 70px;
  display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:center;
  /* Solid opaque base first — same reasoning as .page-header: never let light mode's
     pale body background bleed through the semi-transparent overlay gradient. */
  background-color:#030308;
  background-image:
    linear-gradient(rgba(3,3,8,.55), rgba(3,3,8,.9)),
    repeating-linear-gradient(90deg, rgba(255,45,143,.04) 0 2px, transparent 2px 60px);
  border-bottom:1px solid var(--panel-border);
  overflow:hidden;
}
.vial-hero-title{
  color:var(--text);
  font-family:var(--font-display); font-weight:900; letter-spacing:.5px;
  font-size:clamp(28px,4vw,44px); line-height:1.15; margin:16px 0;
}
.boot-line{
  font-family:var(--font-mono); font-size:12px; color:var(--cyan-soft); letter-spacing:1px;
  max-width:480px; margin:14px 0 0; opacity:.85;
}
.boot-line span{color:var(--magenta-soft);}
.vial-hero-controls{display:flex; gap:14px; flex-wrap:wrap; margin-top:30px; align-items:stretch;}
.vial-hero-controls .select-wrap{flex:1; min-width:220px;}
.vial-hero-controls .cat-select{height:100%;}
.btn-buy{
  background:var(--cyan); color:#022; font-weight:800; font-family:var(--font-hud);
  box-shadow:0 0 24px rgba(36,229,255,.5), 0 0 50px rgba(36,229,255,.25);
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
  border:none;
}
.btn-buy:hover{box-shadow:0 0 34px rgba(36,229,255,.7), 0 0 70px rgba(36,229,255,.35); transform:translateY(-2px);}

.vial-hero-visual{position:relative; aspect-ratio:1/1.05; max-width:460px; margin:0 auto; width:100%;}
.vial-hero-visual::before{
  content:''; position:absolute; inset:6%; z-index:0; border-radius:50%;
  background:radial-gradient(circle, rgba(36,229,255,.16), rgba(255,45,143,.08) 55%, transparent 72%);
  filter:blur(18px);
  animation:vialGlowPulse 5s ease-in-out infinite;
}
@keyframes vialGlowPulse{ 0%,100%{ opacity:.7; transform:scale(1); } 50%{ opacity:1; transform:scale(1.06); } }
@media(prefers-reduced-motion:reduce){ .vial-hero-visual::before{ animation:none; } }
.vial-hero-visual canvas{
  position:absolute; inset:0; width:100%; height:100%; z-index:1;
  /* Tight, brand-gradient outline glow hugging the rendered vial's actual silhouette
     (drop-shadow follows the canvas's alpha channel, same trick as the mascot glow). */
  filter:
    drop-shadow(2px 0 5px rgba(36,229,255,.55))
    drop-shadow(-2px 0 5px rgba(255,45,143,.5))
    drop-shadow(0 2px 5px rgba(139,61,255,.45));
}
.vial-label-overlay{
  position:absolute; bottom:8%; left:50%; transform:translateX(-50%);
  width:min(220px,60%); padding:14px 16px; text-align:left; z-index:5;
  background:rgba(8,9,15,.82); border-radius:8px; border:1px solid var(--panel-border);
  box-shadow:0 10px 30px -12px rgba(0,0,0,.6);
}
.vial-label-title{font-family:var(--font-mono); font-size:9px; letter-spacing:1.5px; color:var(--amber); margin-bottom:6px;}
.vial-label-name{font-family:var(--font-display); font-size:14px; font-weight:700; margin-bottom:6px;}
.vial-label-row{font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); display:flex; justify-content:space-between; gap:8px;}
.vial-label-row span{color:var(--cyan-soft);}
.vial-label-warn{font-family:var(--font-mono); font-size:9px; letter-spacing:1px; color:var(--amber); margin-top:8px;}

/* ================= HERO (index.html) — dystopia lab scene ================= */
.hero{
  /* This section's background is intentionally always dark (a cinematic showcase), in both
     themes — so its text colors are pinned here too, independent of the site-wide theme. */
  --text: #f4f5f9;
  --text-dim: #93a0b8;
  --cyan-soft: #8ff4ff;
  --cyan: #24e5ff;
  --magenta-soft: #ff8fc9;
  --panel: rgba(13,14,22,.78);
  --panel-solid: #0d0e16;
  --panel-border: rgba(140,220,255,.16);
  position:relative; min-height:100vh; overflow:hidden;
  display:flex; flex-direction:column; align-items:center; justify-content:flex-end;
  text-align:center; padding:150px 6vw 60px;
  /* The uploaded wallpaper is a wide banner shot — "cover" was cropping large chunks
     of it off the sides on standard desktop/tablet aspect ratios. "contain" always
     shows the whole image intact instead, at whatever size fits, on every screen
     shape (portrait phone, landscape, tablet, desktop); the solid background-color
     fills whatever letterbox gap that leaves. Just enough top/bottom darkening for
     the nav bar and hero-panel to read clearly, no heavy tint blocking the artwork. */
  background-color:#05050b;
  background-image:
    linear-gradient(180deg, rgba(3,3,8,.35) 0%, rgba(3,3,8,.05) 25%, rgba(3,3,8,.15) 60%, rgba(3,3,8,.6) 100%),
    url('../assets/hero-wallpaper.png');
  background-position:center, center 28%;
  background-repeat:no-repeat, no-repeat;
  /* On a tall portrait phone, this wide banner's aspect ratio is so mismatched with
     the screen that "cover" has to zoom in drastically to fill the height, cropping
     out ~80% of the image's width and losing the glass-tube context around the logo.
     Sizing by a fixed viewport-height fraction instead shows much more of the scene
     (less zoom), anchored to the top where the tube/logo sit — the leftover space
     below is filled by the dark gradient, which reads fine since the hero-panel card
     already sits on solid dark background there anyway. */
  background-size:100% 100%, auto 62vh;
  background-position:center, center top;
}
@media(min-aspect-ratio:120/100){
  .hero{ background-size:100% 100%, contain; background-position:center, center 28%; }
}
.hero-skyline{position:absolute; inset:0; z-index:0; opacity:.9;}

/* ---------- faint molecular particles + transient bonds behind the logo ---------- */
.hero-molecules{ position:absolute; inset:0; z-index:1; pointer-events:none; overflow:hidden; }
.mol-node{
  position:absolute; width:3px; height:3px; border-radius:50%;
  background:var(--cyan-soft); box-shadow:0 0 7px 1px var(--cyan-soft);
  opacity:.15; will-change:transform;
  animation:nodeDrift 20s ease-in-out infinite, nodeFade 9s ease-in-out infinite;
  transition:transform 1.8s cubic-bezier(.2,.7,.3,1);
}
.mol-node.magenta{ background:var(--magenta-soft); box-shadow:0 0 7px 1px var(--magenta-soft); }
@keyframes nodeDrift{
  0%,100%{ margin:0; }
  50%{ margin-left:var(--dx,14px); margin-top:var(--dy,-10px); }
}
@keyframes nodeFade{ 0%,100%{ opacity:.14; } 50%{ opacity:.5; } }
.mol-bond{
  position:absolute; height:1px; transform-origin:0 50%;
  background:linear-gradient(90deg, rgba(36,229,255,.4), rgba(255,45,143,.4));
  opacity:0; animation:bondPulse 11s ease-in-out infinite;
}
@keyframes bondPulse{ 0%,65%,100%{ opacity:0; } 78%,88%{ opacity:.45; } }
@media(prefers-reduced-motion:reduce){
  .mol-node{ animation:none; opacity:.2; transition:none; }
  .mol-bond{ animation:none; opacity:0; }
}

/* ---------- circular energy pulse traveling around the hero logo ---------- */
.hero-badge-pulse{
  position:absolute; inset:-6px; border-radius:50%; pointer-events:none; z-index:2;
  background:conic-gradient(from 0deg, transparent 0%, var(--cyan) 4%, var(--magenta) 9%, transparent 15%);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
  opacity:0;
  animation:badgeRingTravel 10s linear infinite, badgeRingFade 10s ease-in-out infinite;
}
@keyframes badgeRingTravel{ to{ transform:rotate(360deg); } }
@keyframes badgeRingFade{ 0%,80%,100%{ opacity:0; } 90%{ opacity:.8; } }
@media(prefers-reduced-motion:reduce){ .hero-badge-pulse{ animation:none; opacity:0; } }
.hero-content{position:relative; z-index:3; max-width:860px;}
.hero-content > *, .hero-panel > *{
  opacity:0; transform:translateY(26px);
  animation:heroReveal .9s cubic-bezier(.22,.8,.3,1) forwards;
}
.hero-content > .hero-panel{ opacity:1; transform:none; animation:none; }
.hero-panel > .hero-kicker{animation-delay:.15s;}
.hero-panel > .hero-title{animation-delay:.32s;}
.hero-panel > .hero-tag{animation-delay:.52s;}
.hero-panel > .hero-actions{animation-delay:.7s;}
.hero-content > .hero-card{animation-delay:.88s;}
@keyframes heroReveal{ to{ opacity:1; transform:translateY(0); } }
@media(prefers-reduced-motion:reduce){
  .hero-content > *, .hero-panel > *{ animation:none; opacity:1; transform:none; }
}

/* Tight amber/orange glow card around the hero's kicker/title/tag/CTA block — a small,
   contained ring rather than a wide bleed into the background. */
.hero-panel{
  position:relative;
  background:linear-gradient(165deg, #0c0a08, #020202);
  backdrop-filter:blur(6px);
  border-radius:18px;
  padding:40px 46px; margin:0 auto;
  box-shadow:0 25px 70px -25px rgba(0,0,0,.65), inset 0 1px 0 rgba(255,255,255,.05),
             0 0 24px rgba(255,176,32,.1);
  overflow:hidden;
}
/* Fine gradient border — reads as brushed gold rather than a flat neon outline. */
.hero-panel::before{
  content:""; position:absolute; inset:0; border-radius:18px; padding:1.5px;
  background:linear-gradient(135deg, rgba(255,210,130,.85), rgba(255,255,255,.12) 35%,
             rgba(255,176,32,.4) 65%, rgba(255,255,255,.08));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  pointer-events:none;
}
@media(max-width:600px){ .hero-panel{ padding:26px 22px; border-radius:14px; } }

.hero-badge{
  position:relative;
  width:clamp(200px,28vw,300px); height:clamp(200px,28vw,300px);
  margin:0 auto 34px;
}
.hero-badge::before{
  content:""; position:absolute; inset:-5px; border-radius:50%; z-index:2;
  background:conic-gradient(from 0deg,
    rgba(255,176,32,.15) 0%, rgba(255,176,32,1) 10%, rgba(255,176,32,.15) 24%,
    rgba(255,176,32,.35) 50%, rgba(255,176,32,.15) 68%, rgba(255,176,32,.15) 100%);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px));
  filter:drop-shadow(0 0 8px rgba(255,176,32,.8));
  animation:heroBadgeRingSpin 6s linear infinite;
}
@keyframes heroBadgeRingSpin{ to{ transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce){ .hero-badge::before{ animation:none; background:var(--amber); } }
.hero-badge::after{
  content:""; position:absolute; inset:0; border-radius:50%;
  pointer-events:none; animation:badgePulse 3.6s ease-in-out infinite;
}
@keyframes badgeSpin{ to{ transform:rotate(360deg); } }
@keyframes badgePulse{
  0%,100%{ box-shadow:0 0 10px rgba(255,176,32,.55), 0 0 20px rgba(255,176,32,.3); }
  50%{ box-shadow:0 0 16px rgba(255,176,32,.75), 0 0 28px rgba(255,176,32,.4); }
}
.hero-badge-logo{
  position:relative; z-index:1;
  width:100%; height:100%; border-radius:50%; object-fit:cover; display:block;
  background:#000;
  box-shadow:0 0 0 1px var(--panel-border);
  transform:scale(1.16);
  transition:transform .35s ease;
}
.hero-badge:hover .hero-badge-logo{ transform:scale(1.205); }

/* A full-spectrum rainbow ring sitting outside the amber ring — the "glow around" the
   logo. The amber ring stays exactly as it was; this is an additional, further-out layer. */
.hero-badge-rainbow{
  position:absolute; inset:-10px; border-radius:50%; z-index:2; pointer-events:none;
  background:conic-gradient(from 0deg,
    #ff3b3b, #ff9d2d, #ffe62d, #4dff5b, #2de0ff, #3b6bff, #b13bff, #ff3bd6, #ff3b3b);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px));
  filter:drop-shadow(0 0 10px rgba(255,255,255,.4));
  opacity:.85;
  animation:heroBadgeRainbowSpin 9s linear infinite;
}
@keyframes heroBadgeRainbowSpin{ to{ transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce){ .hero-badge-rainbow{ animation:none; } }

.hero-kicker{
  font-family:var(--font-mono); font-size:12px; letter-spacing:3px; color:var(--cyan-soft); margin-bottom:18px;
}
.hero-title{
  color:var(--text);
  font-size:clamp(22px,6.4vw,68px);
  font-weight:900; line-height:1.05; letter-spacing:1px;
  text-shadow:0 0 30px rgba(255,45,143,.35);
  overflow-wrap:break-word; word-break:break-word;
}
.hero-title span{
  background:var(--grad-brand); -webkit-background-clip:text; background-clip:text; color:transparent;
}
.hero-motto{
  font-family:var(--font-hud); font-size:15px; letter-spacing:2px; text-transform:uppercase;
  color:var(--cyan-soft); margin-top:14px;
}
.hero-tag{color:var(--text-dim); max-width:580px; margin:18px auto 34px; font-size:19px; font-weight:600;}
.hero-actions{display:flex; gap:16px; justify-content:center; flex-wrap:wrap;}
/* ---------- ambient environmental text (subtle wall/HUD signage) ---------- */
.ambient-label{
  position:absolute; z-index:1; pointer-events:none; user-select:none;
  font-family:var(--font-mono); font-size:10px; letter-spacing:4px; text-transform:uppercase;
  color:var(--cyan-soft); opacity:.16; white-space:nowrap;
}
.ambient-label.dim{opacity:.1;}
@media(max-width:700px){ .ambient-label{display:none;} }

/* ---------- DNA helix motif (recurring brand element) ---------- */
.dna-canvas{display:block;}
.dna-left, .dna-right{
  position:absolute; top:10%; bottom:10%; width:130px; z-index:1;
  pointer-events:none; opacity:.4;
}
.dna-left{left:1%;}
.dna-right{right:1%;}
@media(max-width:900px){ .dna-left, .dna-right{display:none;} }
.dna-footer{width:44px; height:88px; margin:0 auto 16px; opacity:.85;}

/* ================= TRUST BAR ================= */
.trustbar{
  display:flex; flex-wrap:wrap; justify-content:center; gap:0;
  padding:36px 6vw;
  border-top:1px solid var(--panel-border); border-bottom:1px solid var(--panel-border);
  background:var(--bg-alt);
  font-family:var(--font-hud);
}
.trust-item{
  flex:1 1 180px; text-align:center; padding:10px 20px;
}
.trust-item strong{
  display:block; font-family:var(--font-display); font-size:24px;
  background:var(--grad-brand); -webkit-background-clip:text; background-clip:text; color:transparent;
}
.trust-item span{font-size:11px; letter-spacing:1.5px; color:var(--text-dim); text-transform:uppercase;}

/* ================= RESEARCH TICKER (marquee) ================= */
.research-ticker{
  position:relative; overflow:hidden; margin-top:64px;
  border-top:1px solid var(--panel-border); border-bottom:1px solid var(--panel-border);
  background:var(--bg-alt);
  padding:14px 0;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
          mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.ticker-track{
  display:inline-flex; align-items:center; gap:18px; white-space:nowrap;
  animation:tickerScroll 55s linear infinite;
  will-change:transform;
}
.research-ticker:hover .ticker-track{ animation-play-state:paused; }
@keyframes tickerScroll{ from{transform:translateX(0);} to{transform:translateX(-50%);} }
.ticker-item{
  font-family:var(--font-mono); font-size:12.5px; color:var(--text-dim); letter-spacing:.3px;
}
.ticker-item strong{color:var(--cyan-soft); font-weight:600;}
.ticker-sep{color:var(--magenta); opacity:.6; font-size:9px; margin:0 4px; vertical-align:middle;}

/* ================= QUOTE BLOCK ================= */
.quote-block{
  max-width:820px; margin:0 auto; text-align:center;
  padding:90px 6vw;
}
.quote-block blockquote{
  font-family:var(--font-body); font-style:italic; font-weight:500;
  font-size:clamp(20px,3vw,32px); line-height:1.5; color:var(--text);
}
.quote-block cite{
  display:block; margin-top:22px; font-style:normal; font-family:var(--font-mono);
  font-size:12px; letter-spacing:2px; text-transform:uppercase; color:var(--cyan-soft);
}

/* ================= STAT RING (around a 3D centerpiece) ================= */
.stat-ring-wrap{position:relative;}
.stat-chip{
  position:absolute; font-family:var(--font-mono); font-size:10.5px; letter-spacing:.5px;
  color:var(--text-dim); text-align:center; pointer-events:none;
}
.stat-chip strong{display:block; font-family:var(--font-display); font-size:17px; color:var(--cyan-soft); margin-bottom:2px;}
@media(max-width:860px){ .stat-chip{display:none;} }

/* ================= TECH / OPERATION CARDS ================= */
.tech-cards{
  max-width:1100px; margin:50px auto 0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:24px;
}
.tech-card{padding:30px; text-align:left;}
.tech-card h3{font-family:var(--font-display); font-size:18px; margin-bottom:12px; letter-spacing:.3px;}
.tech-card p{font-size:16px; font-weight:600; color:var(--text-dim); margin-bottom:18px;}
.tech-card a{
  font-family:var(--font-hud); font-size:12px; letter-spacing:1.5px; text-transform:uppercase;
  color:var(--cyan-soft); border-bottom:1px solid var(--cyan-soft); padding-bottom:2px;
}

/* ================= JOURNAL / LATEST RESEARCH ================= */
.journal{background:var(--bg-alt); border-top:1px solid var(--panel-border);}
.journal-head{display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:16px; max-width:1300px; margin:0 auto 36px;}
.journal-head .btn{flex-shrink:0;}
.journal-list{
  max-width:1300px; margin:0 auto;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:20px;
}
.journal-item{
  display:block; background:var(--panel); border:1px solid var(--panel-border);
  padding:22px; transition:border-color .2s, transform .2s;
}
.journal-item:hover{border-color:var(--cyan); transform:translateY(-3px);}
.journal-item-cat{font-family:var(--font-mono); font-size:10.5px; letter-spacing:1.5px; text-transform:uppercase; color:var(--cyan-soft); margin-bottom:8px;}
.journal-item-name{font-family:var(--font-display); font-size:17px; margin-bottom:10px;}
.journal-item-excerpt{font-size:15.5px; font-weight:600; color:var(--text-dim); line-height:1.6; margin-bottom:14px;}
.journal-item-link{font-family:var(--font-hud); font-size:12px; letter-spacing:1px; text-transform:uppercase; color:var(--magenta-soft);}

/* ================= SCROLL REVEAL ================= */
.reveal{opacity:0; transform:translateY(26px); transition:opacity .8s ease, transform .8s ease;}
.reveal.in{opacity:1; transform:translateY(0);}

/* ================= CATEGORY SPOTLIGHT ================= */
.cat-spotlight{text-align:center; background:var(--bg-alt); border-bottom:1px solid var(--panel-border); padding-top:48px; padding-bottom:48px;}
.cat-spotlight .section-title{text-align:center;}
.cat-spotlight .section-tag{display:block;}
.cat-spotlight-grid{
  max-width:1100px; margin:24px auto 0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:18px;
}
.cat-spotlight-card{
  --spot:#24e5ff;
  position:relative; background:var(--panel); border:1px solid var(--panel-border);
  border-radius:16px;
  padding:18px 20px 20px; text-align:left; overflow:hidden;
  display:flex; align-items:center; gap:16px;
  transition:border-color .25s, box-shadow .25s, transform .25s;
  cursor:pointer;
}
.cat-spotlight-card:hover{
  border-color:var(--spot); transform:translateY(-4px);
  box-shadow:0 20px 40px rgba(0,0,0,.4), 0 0 40px color-mix(in srgb, var(--spot) 45%, transparent);
}
.lattice-canvas{width:64px; height:64px; display:block; margin:0; flex:none;}
.cat-spotlight-card h3{font-family:var(--font-display); font-size:19px; margin-bottom:8px;}
.cat-spotlight-card > div{display:flex; flex-direction:column;}
.cat-spotlight-link{
  font-family:var(--font-hud); font-size:12px; letter-spacing:1px; text-transform:uppercase;
  color:var(--spot); transition:opacity .2s;
}

/* ================= SHOP ================= */
.shop-head{text-align:center; max-width:640px; margin:0 auto 10px;}
.shop-head .section-sub{margin-left:auto; margin-right:auto;}
.shop-controls{
  max-width:1200px; margin:0 auto 40px;
  display:flex; flex-direction:column; gap:18px;
}
.search-input{
  width:100%; padding:14px 18px;
  background:var(--panel); border:1px solid var(--panel-border); border-radius:10px;
  color:var(--text); font-family:var(--font-mono); font-size:15px;
  transition:border-color .2s, box-shadow .2s;
}
.search-input:focus{outline:none; border-color:var(--cyan); box-shadow:0 0 0 3px rgba(36,229,255,.12);}
.cat-filters{display:flex; flex-wrap:wrap; gap:10px;}
.cat-chip{
  padding:10px 20px; font-size:12px; font-family:var(--font-hud); letter-spacing:.5px;
  border:1px solid var(--panel-border); background:var(--panel); color:var(--text-dim);
  border-radius:999px; cursor:pointer; transition:all .2s;
}
.cat-chip:hover{color:var(--text); border-color:rgba(255,45,143,.4); transform:translateY(-2px); box-shadow:0 6px 16px rgba(0,0,0,.35);}
.cat-chip.active{
  background:var(--grad-brand); color:#08040f; font-weight:700; border-color:transparent;
  box-shadow:0 4px 18px rgba(255,45,143,.25);
}

.select-wrap{position:relative;}
.select-wrap::after{
  content:"\25BE"; position:absolute; right:18px; top:50%; transform:translateY(-50%);
  color:var(--cyan-soft); font-size:14px; pointer-events:none;
}
.cat-select{
  width:100%; padding:14px 44px 14px 18px;
  background:var(--panel); border:1px solid var(--panel-border); border-radius:10px;
  color:var(--text); font-family:var(--font-mono); font-size:14px;
  appearance:none; -webkit-appearance:none; cursor:pointer;
  transition:border-color .2s;
}
.cat-select:focus{outline:none; border-color:var(--cyan);}
.cat-select option{background:var(--panel-solid); color:var(--text);}

.product-grid{
  max-width:1300px; margin:0 auto;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:24px;
  perspective:1000px;
}
.product-card{
  background:var(--panel); border:1px solid var(--panel-border);
  border-radius:16px;
  padding:22px; display:flex; flex-direction:column; gap:10px;
  transition:transform .25s cubic-bezier(.22,.8,.3,1), box-shadow .25s ease, border-color .25s ease, opacity .2s;
  position:relative; overflow:hidden;
  cursor:pointer;
}
.product-card::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:var(--grad-brand); opacity:.55; transition:opacity .25s;
}
.product-card.is-flying{ opacity:0; }
.card-mol{
  height:120px; display:block; margin:-22px -22px 4px; width:calc(100% + 44px);
  background:
    radial-gradient(circle at 35% 40%, rgba(36,229,255,.14), transparent 60%),
    radial-gradient(circle at 70% 60%, rgba(255,45,143,.1), transparent 60%);
}
.card-view-hint{
  font-family:var(--font-mono);
  font-size:10.5px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-dim);
  opacity:0; transform:translateY(4px); transition:opacity .2s, transform .2s;
}
.product-card:hover .card-view-hint{ opacity:1; transform:translateY(0); color:var(--cyan-soft); }
.product-card:hover::before{ opacity:1; }
.product-card:hover{
  box-shadow:0 20px 44px rgba(0,0,0,.45), 0 0 26px rgba(255,45,143,.16), 0 0 26px rgba(36,229,255,.1);
  border-color:rgba(255,45,143,.35);
  transform:translateY(-6px) scale(1.035);
  z-index:1;
}
@media(prefers-reduced-motion:reduce){ .product-card{ transition:box-shadow .25s ease, border-color .25s ease; } }
.card-cat{font-family:var(--font-mono); font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--cyan-soft);}
.card-name{font-family:var(--font-display); font-size:18px; font-weight:700;}
.card-size{font-size:12px; color:var(--text-dim); font-family:var(--font-mono);}
.card-blurb{font-size:16px; font-weight:600; color:var(--text-dim); flex:1;}
.card-meta{display:flex; justify-content:space-between; align-items:center; font-size:14px; font-weight:600; color:var(--text-dim);}
.card-purity{color:var(--magenta-soft); font-weight:600; font-family:var(--font-mono);}
.card-foot{display:flex; align-items:center; justify-content:space-between; margin-top:6px; gap:10px; flex-wrap:wrap;}
.card-price{font-family:var(--font-display); font-size:20px; font-weight:900; color:var(--text);}
.card-qty{display:flex; align-items:center; gap:8px; flex:none;}
.qty-btn{
  width:26px; height:26px; border-radius:50%; flex:none;
  border:1px solid var(--panel-border); background:var(--panel); color:var(--text);
  font-size:15px; line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:border-color .2s, color .2s;
}
.qty-btn:hover{border-color:var(--cyan); color:var(--cyan-soft);}
.qty-val{font-family:var(--font-mono); font-size:14px; min-width:16px; text-align:center;}
.card-add{
  padding:10px 20px; border:1px solid var(--magenta);
  border-radius:999px;
  background:transparent; color:var(--magenta-soft); font-size:12px; letter-spacing:1px;
  font-family:var(--font-hud); cursor:pointer; transition:all .2s; text-transform:uppercase;
}
.card-add:hover{background:var(--grad-brand); color:#08040f; border-color:transparent; transform:translateY(-1px); box-shadow:0 6px 16px rgba(255,45,143,.3);}
.card-add.added{background:var(--cyan); color:#08040f; border-color:transparent;}
.no-results{grid-column:1/-1; text-align:center; color:var(--text-dim); padding:60px 0; font-family:var(--font-mono);}

/* ================= QUALITY ================= */
.quality{
  display:grid; grid-template-columns:1fr 1fr; gap:60px; align-items:center;
  background:var(--bg-alt);
}
.quality-visual{position:relative; aspect-ratio:1/1; max-width:420px; margin:0 auto;}
.quality-visual canvas{width:100%; height:100%;}
.quality-list{list-style:none; margin-top:20px; display:flex; flex-direction:column; gap:14px;}
.quality-list li{padding-left:22px; position:relative; color:var(--text-dim); font-size:17px; font-weight:600;}
.quality-list li::before{
  content:""; position:absolute; left:0; top:8px; width:8px; height:8px; border-radius:50%;
  background:var(--grad-brand); box-shadow:0 0 10px var(--magenta);
}
.quality-list strong{color:var(--text);}

/* ================= MASCOT GALLERY (contact section) ================= */
.mascot-gallery{ max-width:1100px; margin:0 auto 60px; }
/* Group photo of all four mascots, framed in the same premium gradient-border
   treatment as the hero panel. */
.crew-card{
  position:relative; max-width:900px; margin:36px auto; border-radius:18px;
  overflow:hidden; background:#08060c;
}
.crew-card::before{
  content:""; position:absolute; inset:0; border-radius:18px; padding:2px; z-index:1;
  background:conic-gradient(from 0deg, var(--cyan), var(--purple), var(--magenta), var(--amber), var(--cyan));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  animation:heroBadgeRainbowSpin 10s linear infinite;
  pointer-events:none;
}
.crew-img{ width:100%; height:auto; display:block; }
@media(prefers-reduced-motion:reduce){ .crew-card::before{ animation:none; } }
.mascot-grid{
  display:grid; grid-template-columns:repeat(2,1fr); gap:28px;
  margin-top:32px;
}
@media(max-width:700px){ .mascot-grid{ grid-template-columns:1fr; } }
.mascot-card{
  overflow:hidden; padding:0; text-align:left;
  transition:transform .3s cubic-bezier(.22,.8,.3,1), box-shadow .3s ease, border-color .3s ease;
}
.mascot-card:hover{
  transform:translateY(-6px);
  box-shadow:0 24px 50px rgba(0,0,0,.5), 0 0 40px rgba(255,45,143,.18), 0 0 40px rgba(36,229,255,.14);
  border-color:rgba(255,45,143,.4);
}
.mascot-img{ width:100%; aspect-ratio:3/4; object-fit:cover; display:block; }
.mascot-card-body{ padding:22px 24px 26px; }
.mascot-card-body h3{ font-family:var(--font-display); font-size:22px; margin-bottom:8px; }
.mascot-card-body p{ font-size:16px; font-weight:600; color:var(--text-dim); line-height:1.6; }

/* ================= CONTACT ================= */
.contact{display:flex; justify-content:center;}
.contact-card{
  max-width:600px; width:100%; background:var(--panel); border:1px solid var(--panel-border);
  padding:44px; text-align:center;
}
.contact-email{
  display:inline-block; margin:6px 0 30px; font-family:var(--font-mono);
  font-size:18px; color:var(--cyan-soft); border-bottom:1px solid var(--cyan-soft); padding-bottom:2px;
}
.contact-form{display:flex; flex-direction:column; gap:14px; text-align:left;}
.form-row{display:flex; gap:14px; flex-wrap:wrap;}
.form-row input{flex:1; min-width:180px;}
input[type=text], input[type=email], input[type=tel], input[type=number], textarea{
  width:100%; padding:13px 16px; background:var(--bg); border:1px solid var(--panel-border);
  color:var(--text); font-family:var(--font-body); font-size:15px; resize:vertical;
}
input:focus, textarea:focus{outline:none; border-color:var(--cyan);}
.check-row{display:flex; align-items:flex-start; gap:10px; font-size:15px; font-weight:600; color:var(--text-dim);}
.check-row input{width:16px; height:16px; flex:0 0 16px; margin-top:2px; accent-color:var(--magenta);}

/* ================= FOOTER ================= */
.footer{padding:50px 6vw 30px; border-top:1px solid var(--panel-border); background:var(--bg-alt);}
.footer-inner{max-width:900px; margin:0 auto; text-align:center;}
.footer-brand{display:flex; align-items:center; justify-content:center; gap:10px; font-family:var(--font-hud); font-size:14px; letter-spacing:1px; margin-bottom:18px;}
.footer-brand img{width:28px; height:28px; border-radius:6px;}
.footer-tagline{
  font-family:var(--font-mono); font-size:11px; letter-spacing:3px; text-transform:uppercase;
  color:var(--cyan-soft); opacity:.8; margin-bottom:18px;
}
.footer-quote{
  font-family:var(--font-body); font-style:italic; font-size:17px; font-weight:600; color:var(--cyan-soft);
  max-width:480px; margin:0 auto 24px; opacity:.9; line-height:1.6;
}
.footer-disclaimer{font-size:14px; font-weight:600; color:var(--text-dim); line-height:1.7; max-width:720px; margin:0 auto 12px;}
.footer-contact{font-size:15px; font-weight:600; color:var(--text-dim); font-family:var(--font-mono);}
.footer-contact a{color:var(--cyan-soft);}

/* ================= CART DRAWER ================= */
.cart-overlay{
  position:fixed; inset:0; background:rgba(0,0,0,.6); backdrop-filter:blur(3px);
  z-index:300; opacity:0; pointer-events:none; transition:opacity .25s;
}
.cart-overlay.show{opacity:1; pointer-events:auto;}
.cart-drawer{
  position:fixed; top:0; right:0; height:100%; width:min(420px,92vw);
  background:var(--panel-solid); border-left:1px solid var(--panel-border);
  z-index:301; display:flex; flex-direction:column;
  transform:translateX(100%); transition:transform .3s ease;
  box-shadow:-20px 0 60px rgba(0,0,0,.5);
}
.cart-drawer.open{transform:translateX(0);}
.cart-head{display:flex; align-items:center; justify-content:space-between; padding:22px 24px; border-bottom:1px solid var(--panel-border);}
.cart-head h3{font-family:var(--font-display); font-size:16px;}
.cart-close{background:none; border:none; color:var(--text-dim); font-size:26px; cursor:pointer; line-height:1;}
.cart-close:hover{color:var(--magenta-soft);}
.cart-items{flex:1; overflow-y:auto; padding:16px 24px; display:flex; flex-direction:column; gap:16px;}
.cart-item{display:flex; gap:12px; align-items:flex-start; border-bottom:1px solid var(--panel-border); padding-bottom:14px;}
.cart-item-info{flex:1;}
.cart-item-name{font-weight:600; font-size:14.5px;}
.cart-item-size{font-size:12px; color:var(--text-dim); font-family:var(--font-mono);}
.cart-item-controls{display:flex; align-items:center; gap:8px; margin-top:8px;}
.qty-btn{
  width:24px; height:24px; border-radius:2px; border:1px solid var(--panel-border); background:var(--bg);
  color:var(--text); cursor:pointer; font-size:14px; line-height:1;
}
.qty-val{font-size:13px; min-width:16px; text-align:center; font-family:var(--font-mono);}
.cart-item-remove{font-size:11px; color:var(--text-dim); text-decoration:underline; cursor:pointer; margin-left:auto;}
.cart-item-price{font-family:var(--font-mono); font-size:14px; white-space:nowrap;}
.cart-empty{color:var(--text-dim); text-align:center; padding:60px 0; font-size:14px;}
.cart-foot{padding:20px 24px; border-top:1px solid var(--panel-border); max-height:70vh; overflow-y:auto;}
.cart-subtotal{display:flex; justify-content:space-between; align-items:center; font-family:var(--font-display); margin-bottom:10px; font-size:16px;}
.cart-note{font-size:13.5px; font-weight:600; color:var(--text-dim); margin-bottom:14px;}

.cart-verify{
  display:flex; align-items:center; gap:10px; margin:14px 0;
  padding:10px 12px; border:1px solid var(--panel-border); background:rgba(36,229,255,.05);
}
.verify-canvas{width:42px; height:42px; flex-shrink:0;}
.verify-label{flex:1; font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); line-height:1.4;}
.verify-coa-btn{
  background:none; border:1px solid var(--cyan-soft); color:var(--cyan-soft);
  font-family:var(--font-mono); font-size:10px; letter-spacing:.3px;
  padding:7px 10px; cursor:pointer; white-space:nowrap; transition:all .2s;
}
.verify-coa-btn:hover{background:var(--cyan-soft); color:#022;}

/* ================= COA VERIFICATION ================= */
.coa-verify-section{ padding-top:0; }
.coa-verify-card{
  max-width:1000px; margin:0 auto; padding:40px 36px; text-align:left;
}
.coa-verify-card h3{ font-size:clamp(20px,2.6vw,28px); margin-bottom:10px; }
.coa-verify-intro{ color:var(--text-dim); max-width:680px; margin-bottom:28px; }
.coa-verify-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:32px;
}
@media(max-width:760px){ .coa-verify-grid{ grid-template-columns:1fr; } }
.coa-verify-grid h4{
  font-family:var(--font-hud); font-size:13px; letter-spacing:1px; text-transform:uppercase;
  color:var(--cyan-soft); margin-bottom:14px;
}
.coa-verify-grid ul, .coa-verify-grid ol{ padding-left:20px; display:flex; flex-direction:column; gap:10px; }
.coa-verify-grid li{ color:var(--text-dim); font-size:16.5px; font-weight:600; line-height:1.55; }
.coa-verify-grid code{
  font-family:var(--font-mono); background:var(--bg); border:1px solid var(--panel-border);
  padding:1px 6px; border-radius:4px; color:var(--cyan-soft); font-size:13px;
}
.coa-verify-note{ margin-top:16px; font-size:15px; font-weight:600; color:var(--text-dim); font-style:italic; }

.coa-standard-callout{
  font-family:var(--font-hud); font-size:15px; font-weight:700; color:var(--amber);
  letter-spacing:.5px; margin-bottom:6px;
}
.coa-standard-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:18px;
  margin:20px 0;
}
@media(max-width:760px){ .coa-standard-grid{ grid-template-columns:1fr; } }
.coa-standard-item{
  --accent:#3ddc97;
  background:var(--panel); border:1px solid var(--panel-border); border-top:3px solid var(--accent);
  border-radius:10px; padding:18px 18px 16px;
  transition:transform .2s ease, box-shadow .2s ease;
}
.coa-standard-item:hover{ transform:translateY(-3px); box-shadow:0 12px 26px -10px rgba(0,0,0,.5); }
.coa-standard-item.quantity{ --accent:#ffb020; }
.coa-standard-item.purity{ --accent:#24e5ff; }
.coa-standard-num{
  display:inline-flex; align-items:center; justify-content:center;
  width:26px; height:26px; border-radius:50%; margin-bottom:10px;
  background:var(--accent); color:#08040f; font-family:var(--font-mono); font-size:13px; font-weight:800;
  box-shadow:0 0 12px color-mix(in srgb, var(--accent) 60%, transparent);
}
.coa-standard-item h5{ font-family:var(--font-hud); font-size:16px; letter-spacing:.5px; margin-bottom:8px; color:var(--text); text-transform:uppercase; }
.coa-standard-item ul{ list-style:none; display:flex; flex-direction:column; gap:6px; }
.coa-standard-item li{
  font-size:14.5px; font-weight:600; color:var(--text-dim); line-height:1.5;
  padding-left:20px; position:relative;
}
.coa-standard-item li::before{
  content:"✓"; position:absolute; left:0; top:0; color:var(--accent); font-weight:800; font-size:12px;
}

/* Collapsed-by-default accordion variant (used on shop.html) with an animated neon ring. */
.coa-verify-accordion{
  position:relative; max-width:1000px; margin:0 auto; border-radius:16px;
  background:var(--panel-solid); border:1px solid var(--panel-border);
  overflow:hidden;
}
.coa-verify-accordion::before{
  content:""; position:absolute; inset:-3px; z-index:0; border-radius:18px;
  background:conic-gradient(from 0deg, var(--cyan), var(--purple), var(--magenta), var(--cyan));
  opacity:.7; filter:blur(9px);
  animation:coaAccordionSpin 7s linear infinite;
}
.coa-verify-accordion[open]::before{ opacity:.9; filter:blur(11px); }
@keyframes coaAccordionSpin{ to{ transform:rotate(360deg); } }
/* Both the summary and the body need their own opaque background — otherwise the glow
   ring above (painted behind normal-flow content but above the card's own background)
   shows straight through and washes out the text instead of staying a thin edge ring. */
.coa-verify-accordion summary{
  position:relative; z-index:1; background:var(--panel-solid);
  cursor:pointer; list-style:none; padding:22px 28px;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  font-family:var(--font-hud); font-weight:700; font-size:16px; color:var(--text);
}
.coa-verify-accordion summary::-webkit-details-marker{ display:none; }
.coa-verify-accordion summary::after{
  content:"+"; font-size:24px; line-height:1; color:var(--cyan-soft); flex:none;
}
.coa-verify-accordion[open] summary::after{ content:"\2212"; }
.coa-accordion-tag{
  display:block; font-family:var(--font-mono); font-size:10px; letter-spacing:2.5px;
  text-transform:uppercase; color:var(--magenta-soft); margin-bottom:6px; font-weight:400;
}
.coa-verify-accordion-body{ position:relative; z-index:1; background:var(--panel-solid); padding:0 28px 28px; }
@media(prefers-reduced-motion:reduce){ .coa-verify-accordion::before{ animation:none; } }
@media(max-width:640px){
  .coa-verify-accordion summary{ padding:18px 20px; font-size:14px; }
  .coa-verify-accordion-body{ padding:0 20px 22px; }
}

.coa-popup{
  max-height:0; overflow:hidden; opacity:0;
  background:var(--panel-solid); border:1px solid var(--panel-border);
  transition:max-height .32s ease, opacity .28s ease, margin .32s ease, padding .32s ease;
  margin:0; padding:0 16px;
}
.coa-popup.open{max-height:480px; opacity:1; margin:0 0 14px; padding:16px;}
.coa-head{
  display:flex; justify-content:space-between; align-items:center;
  font-family:var(--font-hud); font-size:12px; letter-spacing:1px; color:var(--cyan-soft);
  border-bottom:1px solid var(--panel-border); padding-bottom:10px; margin-bottom:10px;
}
.coa-head .cart-close{font-size:20px;}
.coa-row{
  display:flex; justify-content:space-between; gap:10px;
  font-size:12.5px; font-family:var(--font-mono);
  padding:6px 0; border-bottom:1px dashed rgba(255,255,255,.08);
}
.coa-row span:first-child{color:var(--text-dim);}
.coa-row span:last-child{text-align:right;}
.coa-foot{font-size:10.5px; color:var(--text-dim); margin-top:12px; line-height:1.5;}

.btn-checkout{
  background:#050608; color:#fff; border:1px solid var(--cyan);
  box-shadow:0 0 20px rgba(36,229,255,.25);
}
.btn-checkout:hover{box-shadow:0 0 30px rgba(36,229,255,.45); transform:translateY(-2px);}

/* ================= CHECKOUT MODAL ================= */
.checkout-modal{
  position:fixed; top:50%; left:50%; transform:translate(-50%,-50%) scale(.96);
  width:min(520px,92vw); max-height:88vh; overflow-y:auto;
  background:var(--panel-solid); border:1px solid var(--panel-border);
  padding:32px; z-index:401; box-shadow:0 30px 80px rgba(0,0,0,.6), 0 0 40px rgba(255,45,143,.12);
  opacity:0; pointer-events:none; transition:opacity .25s, transform .25s;
}
.checkout-modal.open{opacity:1; pointer-events:auto; transform:translate(-50%,-50%) scale(1);}
#checkoutOverlay{z-index:400;}
.checkout-modal h3{font-family:var(--font-display); margin-bottom:8px; padding-right:20px;}
.checkout-modal .cart-close{position:absolute; top:18px; right:18px;}
.modal-sub{font-size:15px; font-weight:600; color:var(--text-dim); margin-bottom:20px;}
#checkoutForm{display:flex; flex-direction:column; gap:14px;}
.checkout-summary{
  background:var(--bg); border:1px solid var(--panel-border);
  padding:14px 16px; font-size:13px; color:var(--text-dim); max-height:160px; overflow-y:auto;
  font-family:var(--font-mono);
}
.checkout-summary div{display:flex; justify-content:space-between; padding:3px 0;}
.checkout-summary .sum-total{color:var(--text); font-weight:700; border-top:1px solid var(--panel-border); margin-top:6px; padding-top:8px;}

/* ================= FLYER (card -> detail transit) ================= */
.card-flyer{
  position:fixed; z-index:600;
  background:var(--panel-solid); border:1px solid var(--magenta);
  padding:24px; overflow:hidden; pointer-events:none;
  box-shadow:0 0 40px rgba(255,45,143,.35), 0 0 80px rgba(36,229,255,.15);
  transform-style:preserve-3d; backface-visibility:hidden;
  display:flex; flex-direction:column; gap:8px;
}
.card-flyer .card-cat{font-family:var(--font-mono); font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--cyan-soft);}
.card-flyer .card-name{font-family:var(--font-display); font-size:18px; font-weight:700; color:var(--text);}
.card-flyer .card-size{font-size:12px; color:var(--text-dim);}

/* ================= PRODUCT DETAIL PAGE ================= */
.detail-page{
  position:fixed; inset:0; z-index:500;
  background:radial-gradient(ellipse at 30% 20%, rgba(255,45,143,.2), transparent 55%), var(--bg);
  opacity:0; pointer-events:none; overflow-y:auto;
  transition:opacity .3s ease;
}
.detail-page.open{opacity:1; pointer-events:auto;}
.detail-target{
  position:absolute; top:140px; left:6vw; width:min(480px,40vw); height:420px;
  pointer-events:none; visibility:hidden;
}
.detail-inner{max-width:1200px; margin:0 auto; padding:120px 6vw 100px;}
.detail-back{
  background:none; border:1px solid var(--panel-border); color:var(--text-dim);
  padding:10px 20px; font-family:var(--font-hud); font-size:12px;
  letter-spacing:1px; cursor:pointer; margin-bottom:36px; transition:all .2s;
}
.detail-back:hover{color:var(--cyan-soft); border-color:var(--cyan);}
.detail-grid{display:grid; grid-template-columns:1fr 1fr; gap:60px; align-items:center;}
.detail-visual{position:relative; aspect-ratio:1/1; max-width:480px;}
.detail-visual canvas{width:100%; height:100%;}
.detail-visual-hint{
  position:absolute; bottom:0; left:0; right:0; text-align:center; font-family:var(--font-mono);
  font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-dim);
}
.detail-name{font-family:var(--font-display); font-size:clamp(26px,3.5vw,40px); font-weight:900; margin:10px 0 6px;}
.detail-blurb{color:var(--text-dim); font-size:18px; font-weight:600; margin:16px 0;}
.detail-price{font-family:var(--font-display); font-size:32px; font-weight:900; margin:20px 0;}
.detail-actions{display:flex; align-items:center; gap:16px; margin-bottom:22px; flex-wrap:wrap;}
.qty-stepper{display:flex; align-items:center; gap:12px; border:1px solid var(--panel-border); padding:8px 16px;}
.qty-stepper .qty-btn{width:28px; height:28px; border-radius:50%;}
.qty-stepper .qty-val{min-width:20px; text-align:center; font-family:var(--font-mono);}
.detail-disclaimer{font-size:12px; color:var(--text-dim); border-top:1px solid var(--panel-border); padding-top:16px;}

/* ================= LAB VERIFICATION ================= */
.verify-lookup{max-width:780px; margin:0 auto; text-align:center;}
.verify-lookup-controls{padding:28px; text-align:left;}
.verify-lookup-controls .form-row{margin-bottom:16px;}
.verify-lookup-controls .search-input{flex:1; min-width:200px;}
.verify-empty{
  margin-top:24px; padding:40px 20px; text-align:center;
  color:var(--text-dim); font-family:var(--font-mono); font-size:13px;
  border:1px dashed var(--panel-border);
}
.verify-result{margin-top:24px; padding:28px; text-align:left;}
.coa-doc-head{
  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px;
  font-family:var(--font-hud); font-size:14px; letter-spacing:1.5px; color:var(--cyan-soft);
  border-bottom:1px solid var(--panel-border); padding-bottom:14px; margin-bottom:18px;
}
.coa-doc-status{
  font-family:var(--font-mono); font-size:11px; letter-spacing:1px; color:#3ddc97;
  border:1px solid rgba(61,220,151,.4); padding:4px 10px; background:rgba(61,220,151,.08);
}
.chromatogram{margin-top:26px; border-top:1px solid var(--panel-border); padding-top:20px;}
.chrom-svg{width:100%; height:110px; display:block;}
.chrom-caption{font-family:var(--font-mono); font-size:11px; color:var(--text-dim); margin-top:8px; text-align:center;}

.verify-features{max-width:1200px; margin:0 auto; text-align:center; background:var(--bg-alt); border-top:1px solid var(--panel-border);}
.verify-feature-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:20px;
  margin-top:36px; text-align:left;
}
.verify-feature-card{padding:24px;}
.verify-feature-card h3{font-family:var(--font-hud); font-size:16px; margin-bottom:8px; color:var(--cyan-soft);}
.verify-feature-card p{font-size:15.5px; font-weight:600; color:var(--text-dim);}

/* ================= REFERENCE INDEX (informational, not for sale) ================= */
.ref-grid{
  max-width:1300px; margin:0 auto;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:20px;
}
.ref-card{
  background:var(--panel); border:1px solid var(--panel-border);
  padding:22px; display:flex; flex-direction:column; gap:8px;
  cursor:pointer; position:relative; transition:border-color .2s, box-shadow .2s;
}
.ref-card::before, .ref-card::after{
  content:""; position:absolute; width:12px; height:12px; pointer-events:none;
  border:2px solid var(--cyan-soft); opacity:0; transition:opacity .25s;
}
.ref-card::before{ top:7px; left:7px; border-right:none; border-bottom:none; }
.ref-card::after{ bottom:7px; right:7px; border-left:none; border-top:none; }
.ref-card:hover{border-color:rgba(36,229,255,.4); box-shadow:0 14px 30px rgba(0,0,0,.35);}
.ref-card:hover::before, .ref-card:hover::after{opacity:1;}
.ref-aliases{font-size:11.5px; color:var(--text-dim); font-family:var(--font-mono);}
.ref-teaser{
  font-size:13.5px; color:var(--text-dim); flex:1;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.ref-stats{display:flex; gap:14px; flex-wrap:wrap; font-size:11px; color:var(--text-dim); font-family:var(--font-mono);}
.ref-stats span strong{color:var(--cyan-soft); display:block; font-size:10px; letter-spacing:1px; text-transform:uppercase; font-family:var(--font-hud);}
.ref-view-hint{font-family:var(--font-mono); font-size:10.5px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-dim); opacity:0; transition:opacity .2s;}
.ref-card:hover .ref-view-hint{opacity:1; color:var(--cyan-soft);}

.ref-detail-fields{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:22px 0;}
.ref-field{border-left:2px solid var(--panel-border); padding-left:12px;}
.ref-field-label{font-family:var(--font-mono); font-size:10.5px; letter-spacing:1.5px; text-transform:uppercase; color:var(--cyan-soft);}
.ref-field-value{font-size:16px; font-weight:700; margin-top:2px;}
.ref-notes{font-size:17px; font-weight:600; color:var(--text-dim); line-height:1.7; margin:18px 0;}
.detail-share-actions{display:flex; gap:12px; flex-wrap:wrap; margin-bottom:14px;}
.detail-share-actions .btn{padding:11px 20px; font-size:12px;}
.ref-shop-note{
  font-size:13px; color:var(--text-dim); background:rgba(36,229,255,.06);
  border:1px solid rgba(36,229,255,.2); padding:14px 16px; margin-top:20px;
}
.ref-shop-note a{color:var(--cyan-soft); text-decoration:underline;}

/* ================= RESPONSIVE ================= */
@media(max-width:860px){
  .nav-toggle{display:flex;}
  .nav-links{
    position:absolute; top:100%; left:0; right:0;
    flex-direction:column; gap:0;
    background:var(--nav-bg-solid); backdrop-filter:blur(14px);
    border-bottom:1px solid var(--panel-border);
    max-height:0; overflow:hidden; transition:max-height .25s ease;
  }
  .nav-links.open{max-height:280px;}
  .nav-links a{padding:16px 6vw; border-top:1px solid var(--panel-border);}
  .quality{grid-template-columns:1fr;}
  .detail-grid{grid-template-columns:1fr; gap:30px;}
  .detail-target{width:min(340px,80vw); height:260px; left:6vw; top:110px;}
  .ref-detail-fields{grid-template-columns:1fr;}
  .vial-hero{grid-template-columns:1fr; padding-top:120px; text-align:center;}
  .boot-line{margin-left:auto; margin-right:auto; text-align:left;}
}
@media(max-width:520px){
  section{padding:52px 5vw;}
  .gate-card{padding:32px 22px;}
  .detail-inner{padding:100px 5vw 60px;}
}

/* ================= REDUCED MOTION ================= */
@media(prefers-reduced-motion:reduce){
  *, *::before, *::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  .glitch::before, .glitch::after{ display:none; }
  .grain{ display:none; }
}

/* ================= PROFESSIONAL POLISH =================
   Clean, clinical presentation: no scanlines, film grain, glitch text
   or floating decorative labels. Brand colors and glows stay. */
body::before{ display:none; }
body::after{ opacity:.55; }
.grain{ display:none; }
.glitch::before, .glitch::after{ display:none; }
.ambient-label{ display:none; }
.cart-ship{font-size:14px;opacity:.85;margin-top:-4px;}
.cart-total{padding-top:8px;margin-top:4px;border-top:1px solid var(--panel-border);}

/* back-to-top: bigger, glowing, labelled — on every page */
.back-to-top{right:24px !important;bottom:24px !important;width:auto !important;height:48px !important;padding:0 16px !important;border-radius:999px !important;
  display:inline-flex !important;align-items:center;gap:8px;font:800 12px var(--font-hud);letter-spacing:.12em;text-transform:uppercase;color:#fff !important;
  background:var(--grad-brand) !important;border:0 !important;z-index:160 !important;
  box-shadow:0 0 0 1px rgba(255,255,255,.15),0 0 24px rgba(36,229,255,.45),0 0 48px rgba(255,45,143,.3) !important;}
.back-to-top:hover{transform:translateY(-3px) !important;box-shadow:0 0 0 1px rgba(255,255,255,.25),0 0 30px rgba(36,229,255,.6),0 0 60px rgba(255,45,143,.45) !important;}
.mascot-nav{bottom:90px !important;}

/* checkout disclaimer */
.chk-disclaimer{margin:4px 0 6px;padding:12px 14px;border-radius:12px;font-size:14px;line-height:1.5;color:var(--text-dim);background:rgba(255,176,32,.07);border:1px solid rgba(255,176,32,.35);}
.chk-disclaimer strong{color:var(--amber);}
.checkout-modal .check-row b{color:var(--text);}
