/* ==========================================================================
   KOTRANIX — Design Tokens
   ========================================================================== */

:root{
  /* ---- Metal + void palette (dark, default) ---- */
  --void:        #05080a;
  --deep:        #0a141c;
  --teal-glow:   #0f2e3d;
  --surface:     #0d151b;
  --surface-2:   #131e26;
  --border:      rgba(200, 214, 222, 0.10);
  --border-strong: rgba(200, 214, 222, 0.22);

  --metal-100:   #f3f5f7;
  --metal-300:   #c9d2d8;
  --metal-500:   #8b98a1;
  --metal-700:   #4c5760;

  --text-1:      #f3f5f7;
  --text-2:      #aab4bc;
  --text-3:      #71808a;

  --plasma:      #4fb8ff;
  --plasma-dim:  #2a5b78;
  --ember:       #ff8a4c;
  --ember-dim:   #6b3c22;

  --success:     #4fd68a;

  --radius-s: 8px;
  --radius-m: 14px;
  --radius-l: 22px;
  --radius-xl: 32px;

  --ease-out: cubic-bezier(.16,1,.3,1);
  --ease-in-out: cubic-bezier(.65,0,.35,1);

  --font-display: 'Space Grotesk', 'Inter', sans-serif;
  --font-body: 'Inter', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;

  --shell-max: 1280px;
  --nav-h: 76px;

  color-scheme: dark;
}

[data-theme="light"]{
  --void:        #f6f7f8;
  --deep:        #eef1f3;
  --teal-glow:   #dfeaf0;
  --surface:     #ffffff;
  --surface-2:   #f1f3f5;
  --border:      rgba(20, 30, 36, 0.09);
  --border-strong: rgba(20, 30, 36, 0.16);

  --metal-100:   #10171c;
  --metal-300:   #33404a;
  --metal-500:   #5b6b74;
  --metal-700:   #aab4bc;

  --text-1:      #0e1519;
  --text-2:      #47555e;
  --text-3:      #7a8890;

  --plasma:      #0d84d6;
  --plasma-dim:  #cfe9fa;
  --ember:       #e06a2c;
  --ember-dim:   #ffe4d2;

  color-scheme: light;
}

/* ==========================================================================
   Reset
   ========================================================================== */

*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin: 0;
  background: var(--void);
  color: var(--text-1);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  transition: background .4s var(--ease-in-out), color .4s var(--ease-in-out);
  overflow-x: hidden;
}
img{ max-width: 100%; display: block; }
a{ color: inherit; text-decoration: none; }
ul{ list-style: none; margin: 0; padding: 0; }
button{ font: inherit; cursor: pointer; }
input, select, textarea{ font: inherit; }

::selection{ background: var(--plasma); color: #04121c; }

:focus-visible{
  outline: 2px solid var(--plasma);
  outline-offset: 3px;
  border-radius: 4px;
}

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ==========================================================================
   Utility
   ========================================================================== */

.shell{
  max-width: var(--shell-max);
  margin: 0 auto;
  padding: 0 32px;
}
.eyebrow{
  font-family: var(--font-mono);
  font-size: 12.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--plasma);
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.eyebrow::before{
  content: '';
  width: 22px;
  height: 1px;
  background: var(--plasma);
}
h1,h2,h3,h4{
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--text-1);
}
.section{
  padding: 128px 0;
  position: relative;
}
.section-head{
  max-width: 640px;
  margin-bottom: 64px;
}
.section-head h2{
  font-size: clamp(30px, 4vw, 46px);
  line-height: 1.08;
  margin-top: 18px;
}
.section-head p{
  margin-top: 18px;
  color: var(--text-2);
  font-size: 17px;
  max-width: 520px;
}
.section-head.center{
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}
.section-head.center .eyebrow{ justify-content: center; }
.section-head.center .eyebrow::before{ display:none; }
.section-head.split{
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  max-width: none;
  gap: 32px;
  flex-wrap: wrap;
}

.btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 15px 28px;
  border-radius: 100px;
  font-size: 14.5px;
  font-weight: 600;
  letter-spacing: .01em;
  border: 1px solid transparent;
  transition: transform .35s var(--ease-out), background .3s, border-color .3s, color .3s, box-shadow .3s;
  white-space: nowrap;
}
.btn:active{ transform: scale(.96); }
.btn-primary{
  background: linear-gradient(135deg, var(--metal-100), var(--metal-300) 60%, var(--metal-100));
  color: #0a1116;
  box-shadow: 0 0 0 1px var(--border-strong), 0 12px 30px -12px rgba(79,184,255,.35);
}
.btn-primary:hover{ transform: translateY(-2px); box-shadow: 0 0 0 1px var(--border-strong), 0 18px 34px -10px rgba(79,184,255,.5); }
.btn-ghost{
  background: transparent;
  color: var(--text-1);
  border-color: var(--border-strong);
}
.btn-ghost:hover{ border-color: var(--plasma); color: var(--plasma); transform: translateY(-2px); }
.btn-plasma{
  background: var(--plasma);
  color: #04121c;
  box-shadow: 0 12px 30px -12px rgba(79,184,255,.6);
}
.btn-plasma:hover{ transform: translateY(-2px); box-shadow: 0 16px 36px -10px rgba(79,184,255,.75); }
.btn-sm{ padding: 11px 20px; font-size: 13px; }
.btn svg{ width: 16px; height: 16px; }

.chip{
  font-family: var(--font-mono);
  font-size: 11.5px;
  letter-spacing: .04em;
  padding: 6px 12px;
  border-radius: 100px;
  border: 1px solid var(--border-strong);
  color: var(--text-2);
}

/* reveal-on-scroll (layer build) */
.reveal{
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .9s var(--ease-out), transform .9s var(--ease-out), clip-path .9s var(--ease-out);
  clip-path: inset(0 0 100% 0);
}
.reveal.is-visible{
  opacity: 1;
  transform: translateY(0);
  clip-path: inset(0 0 0% 0);
}
.reveal-stagger.is-visible > *{ transition-delay: calc(var(--i, 0) * 90ms); }

/* ==========================================================================
   Background atmosphere
   ========================================================================== */

.atmosphere{
  position: fixed;
  inset: 0;
  z-index: -2;
  background:
    radial-gradient(60% 45% at 18% 0%, var(--teal-glow), transparent 60%),
    var(--void);
  transition: background .5s var(--ease-in-out);
}
.grain{
  position: fixed;
  inset: 0;
  z-index: -1;
  opacity: .035;
  pointer-events: none;
  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");
}
[data-theme="light"] .grain{ opacity: .02; }

/* ==========================================================================
   Announcement bar
   ========================================================================== */

.announce{
  background: var(--surface-2);
  border-bottom: 1px solid var(--border);
  overflow: hidden;
  height: 38px;
}
.announce-track{
  display: flex;
  align-items: center;
  gap: 64px;
  height: 100%;
  width: max-content;
  animation: marquee 26s linear infinite;
}
.announce-track span{
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: .04em;
  color: var(--text-2);
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.announce-track span::before{ content: '◆'; color: var(--plasma); font-size: 8px; }
@keyframes marquee{
  from{ transform: translateX(0); }
  to{ transform: translateX(-50%); }
}

/* ==========================================================================
   Nav
   ========================================================================== */

.nav{
  position: sticky;
  top: 0;
  z-index: 100;
  height: var(--nav-h);
  display: flex;
  align-items: center;
  background: color-mix(in srgb, var(--void) 72%, transparent);
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  border-bottom: 1px solid transparent;
  transition: border-color .4s, background .4s;
}
.nav.scrolled{ border-bottom-color: var(--border); }
.nav .shell{ display: flex; align-items: center; justify-content: space-between; gap: 24px; }

.brand{ display: flex; align-items: center; gap: 10px; }
.brand img{ height: 26px; width: auto; }

.nav-links{ display: flex; align-items: center; gap: 34px; }
.nav-links a{
  font-size: 14px;
  font-weight: 500;
  color: var(--text-2);
  position: relative;
  padding: 6px 0;
  transition: color .25s;
}
.nav-links a::after{
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  background: var(--plasma);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--ease-out);
}
.nav-links a:hover{ color: var(--text-1); }
.nav-links a:hover::after{ transform: scaleX(1); }
.nav-links a.is-active-link{ color: var(--text-1); }
.nav-links a.is-active-link::after{ transform: scaleX(1); background: var(--text-1); }

.nav-actions{ display: flex; align-items: center; gap: 14px; }

.icon-btn{
  width: 40px; height: 40px;
  display: grid; place-items: center;
  border-radius: 100px;
  border: 1px solid var(--border-strong);
  background: transparent;
  color: var(--text-1);
  position: relative;
  transition: border-color .3s, background .3s, transform .3s;
}
.icon-btn:hover{ border-color: var(--plasma); transform: translateY(-1px); }
.icon-btn svg{ width: 18px; height: 18px; }
.icon-flip{ transform: rotate(180deg); transform-origin: center; }

.theme-toggle .sun,.theme-toggle .moon{ position:absolute; transition: opacity .3s, transform .4s var(--ease-out); }
[data-theme="dark"] .theme-toggle .sun{ opacity:0; transform: rotate(-90deg) scale(.5); }
[data-theme="dark"] .theme-toggle .moon{ opacity:1; transform: rotate(0) scale(1); }
[data-theme="light"] .theme-toggle .sun{ opacity:1; transform: rotate(0) scale(1); }
[data-theme="light"] .theme-toggle .moon{ opacity:0; transform: rotate(90deg) scale(.5); }

.cart-count{
  position: absolute;
  top: -4px; right: -4px;
  background: var(--ember);
  color: #1a0b02;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 700;
  width: 17px; height: 17px;
  border-radius: 50%;
  display: grid; place-items: center;
  transform: scale(0);
  transition: transform .35s var(--ease-out);
}
.cart-count.show{ transform: scale(1); }

.nav-burger{ display: none; }

/* ==========================================================================
   Hero
   ========================================================================== */

.hero{
  position: relative;
  padding: 108px 0 90px;
  min-height: calc(100vh - var(--nav-h) - 38px);
  display: flex;
  align-items: center;
}
.hero .shell{ display: grid; grid-template-columns: 1.05fr .95fr; gap: 40px; align-items: center; }

.hero-copy .eyebrow{ margin-bottom: 22px; }
.hero-copy h1{
  font-size: clamp(42px, 5.4vw, 74px);
  line-height: .98;
  background: linear-gradient(180deg, var(--metal-100) 24%, var(--metal-300) 90%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.hero-copy h1 em{
  font-style: normal;
  background: linear-gradient(120deg, var(--plasma), #8fe0ff 55%, var(--plasma));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.hero-copy p{
  margin-top: 26px;
  font-size: 18px;
  color: var(--text-2);
  max-width: 480px;
}
.hero-cta{ display: flex; gap: 14px; margin-top: 38px; flex-wrap: wrap; }

.hero-specs{
  display: flex;
  gap: 28px;
  margin-top: 56px;
  padding-top: 28px;
  border-top: 1px solid var(--border);
}
.hero-specs div{ display: flex; flex-direction: column; gap: 4px; }
.hero-specs .n{ font-family: var(--font-display); font-size: 26px; font-weight: 600; }
.hero-specs .l{ font-family: var(--font-mono); font-size: 11.5px; letter-spacing: .04em; color: var(--text-3); }

/* hero build visual */
.hero-visual{ position: relative; height: 520px; }
.build-stage{
  position: absolute; inset: 0;
  display: flex; align-items: flex-end; justify-content: center;
  padding-bottom: 30px;
}
.build-object{ position: relative; width: 260px; }
.build-object svg{ width: 100%; height: auto; display: block; }
.layer-line{
  transform-origin: center;
  animation: layerRise 3.2s var(--ease-out) infinite;
}
@keyframes layerRise{
  0%{ opacity: 0; transform: translateY(6px) scaleX(.85); }
  12%{ opacity: 1; transform: translateY(0) scaleX(1); }
  85%{ opacity: 1; }
  100%{ opacity: 1; }
}
.nozzle{
  position: absolute;
  left: 50%;
  width: 3px; height: 26px;
  background: linear-gradient(var(--plasma), transparent);
  transform: translateX(-50%);
  animation: nozzleMove 3.2s var(--ease-in-out) infinite;
  filter: drop-shadow(0 0 6px var(--plasma));
}
@keyframes nozzleMove{
  0%{ top: 92%; }
  100%{ top: -4%; }
}
.build-platform{
  position: absolute;
  bottom: -6px; left: 50%; transform: translateX(-50%);
  width: 320px; height: 10px;
  border-radius: 100px;
  background: linear-gradient(90deg, transparent, var(--metal-500), transparent);
  opacity: .5;
  filter: blur(1px);
}
.build-glow{
  position: absolute; inset: auto 0 0 0; height: 260px;
  background: radial-gradient(closest-side, var(--plasma-dim), transparent 70%);
  opacity: .55;
  filter: blur(30px);
  pointer-events: none;
}
.orbit-ring{
  position: absolute;
  pointer-events: none;
  border: 1px dashed var(--border-strong);
  border-radius: 50%;
  animation: spin 40s linear infinite;
}
.orbit-ring.r1{ width: 420px; height: 420px; top: 8%; left: 50%; transform: translateX(-50%); }
.orbit-ring.r2{ width: 320px; height: 320px; bottom: 4%; left: 50%; transform: translateX(-50%); animation-direction: reverse; animation-duration: 30s; }
@keyframes spin{ to{ transform: translateX(-50%) rotate(360deg); } }

.hero-float-chip{
  position: absolute;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-m);
  padding: 12px 16px;
  display: flex; align-items: center; gap: 10px;
  box-shadow: 0 20px 40px -20px rgba(0,0,0,.5);
  animation: floatY 5s var(--ease-in-out) infinite;
  backdrop-filter: blur(10px);
}
.hero-float-chip.c1{ top: 8%; left: -4%; animation-delay: .3s; }
.hero-float-chip.c2{ bottom: 14%; right: -6%; animation-delay: 1s; }
.hero-float-chip .dot{ width: 8px; height: 8px; border-radius: 50%; background: var(--success); box-shadow: 0 0 8px var(--success); }
.hero-float-chip strong{ font-size: 13px; display: block; }
.hero-float-chip span{ font-family: var(--font-mono); font-size: 10.5px; color: var(--text-3); }
@keyframes floatY{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-14px); } }

/* ==========================================================================
   Stats strip
   ========================================================================== */

.stats-strip{
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 44px 0;
}
.stats-strip .shell{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.stat-item{ text-align: left; }
.stat-item .val{
  font-family: var(--font-display);
  font-size: clamp(28px, 3vw, 40px);
  font-weight: 600;
  display: flex; align-items: baseline; gap: 3px;
}
.stat-item .val .unit{ font-size: 18px; color: var(--plasma); }
.stat-item .lbl{ margin-top: 6px; font-size: 13.5px; color: var(--text-3); }

/* ==========================================================================
   About
   ========================================================================== */

.about .shell{ display: grid; grid-template-columns: .85fr 1.15fr; gap: 72px; align-items: center; }
.about-visual{
  position: relative;
  aspect-ratio: 1/1.05;
  border-radius: var(--radius-xl);
  overflow: hidden;
  border: 1px solid var(--border-strong);
  background:
    linear-gradient(160deg, var(--surface), var(--deep));
}
.about-visual .slices{ position:absolute; inset:0; display:flex; flex-direction:column-reverse; }
.about-visual .slice{
  flex: 1;
  border-top: 1px solid var(--border);
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--plasma) 6%, transparent), transparent);
}
.about-visual .core{
  position: absolute; inset: 18%;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, var(--metal-100), var(--metal-500) 55%, var(--metal-700));
  box-shadow: 0 30px 80px -20px rgba(79,184,255,.35), inset 0 0 40px rgba(0,0,0,.35);
  display: grid; place-items: center;
}
.about-visual .core span{
  font-family: var(--font-mono);
  font-size: 11px;
  color: #08131a;
  letter-spacing: .05em;
}
.about-copy p{ color: var(--text-2); font-size: 16.5px; margin: 20px 0; }
.about-copy .lead{ font-size: 19px; color: var(--text-1); }
.about-values{ display: grid; grid-template-columns: repeat(2,1fr); gap: 20px; margin-top: 34px; }
.about-values li{
  padding: 18px;
  border: 1px solid var(--border);
  border-radius: var(--radius-m);
}
.about-values .n{ font-family: var(--font-mono); font-size: 12px; color: var(--plasma); }
.about-values h4{ font-size: 15px; margin-top: 8px; }
.about-values p{ font-size: 13.5px; margin: 6px 0 0; color: var(--text-3); }

/* ==========================================================================
   Collections
   ========================================================================== */

.filter-tabs{ display: flex; gap: 10px; flex-wrap: wrap; }
.filter-tab{
  padding: 9px 18px;
  border-radius: 100px;
  border: 1px solid var(--border-strong);
  background: transparent;
  color: var(--text-2);
  font-size: 13.5px;
  font-weight: 500;
  transition: all .3s var(--ease-out);
}
.filter-tab:hover{ color: var(--text-1); }
.filter-tab.active{ background: var(--text-1); color: var(--void); border-color: var(--text-1); }

.product-grid{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 22px;
  margin-top: 44px;
}
.product-card{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-l);
  overflow: hidden;
  transition: transform .5s var(--ease-out), border-color .4s, box-shadow .4s;
  display: none;
  animation: cardFadeIn .5s var(--ease-out) both;
}
@keyframes cardFadeIn{
  from{ opacity: 0; transform: translateY(14px); }
  to{ opacity: 1; transform: translateY(0); }
}
.product-card.is-shown{ display: block; }
.product-card:hover{ transform: translateY(-6px); border-color: var(--border-strong); box-shadow: 0 30px 50px -26px rgba(0,0,0,.55); }

.product-media{
  position: relative;
  aspect-ratio: 1/1;
  background: radial-gradient(120% 100% at 30% 0%, var(--teal-glow), var(--surface-2) 65%);
  display: grid; place-items: center;
  overflow: hidden;
}
.product-media svg{ width: 58%; height: 58%; transition: transform .6s var(--ease-out); filter: drop-shadow(0 18px 20px rgba(0,0,0,.35)); }
.product-card:hover .product-media svg{ transform: translateY(-6px) scale(1.04) rotate(-2deg); }
.product-tag{
  position: absolute; top: 14px; left: 14px;
  font-family: var(--font-mono); font-size: 10px; letter-spacing: .05em;
  padding: 5px 10px; border-radius: 100px;
  background: color-mix(in srgb, var(--void) 55%, transparent);
  border: 1px solid var(--border-strong);
  backdrop-filter: blur(6px);
}
.product-quick{
  position: absolute; right: 14px; bottom: 14px;
  width: 38px; height: 38px; border-radius: 50%;
  background: var(--metal-100); color: var(--void);
  display: grid; place-items: center;
  opacity: 0; transform: translateY(8px);
  transition: opacity .3s, transform .3s;
}
.product-card:hover .product-quick{ opacity: 1; transform: translateY(0); }
.product-quick svg{ width: 16px; height: 16px; }

.product-info{ padding: 18px 20px 22px; }
.product-info .cat{ font-family: var(--font-mono); font-size: 10.5px; color: var(--text-3); letter-spacing: .04em; }
.product-info h4{ font-size: 15.5px; margin-top: 6px; font-weight: 600; }
.product-info .row{ display: flex; align-items: center; justify-content: space-between; margin-top: 12px; }
.product-info .price{ font-family: var(--font-display); font-size: 17px; font-weight: 600; }
.product-info .price .was{ font-family: var(--font-body); font-size: 12px; color: var(--text-3); text-decoration: line-through; margin-left: 6px; font-weight: 400; }
.add-btn{
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--border-strong);
  background: transparent; color: var(--text-1);
  display: grid; place-items: center;
  transition: background .3s, transform .3s, border-color .3s;
}
.add-btn:hover{ background: var(--plasma); border-color: var(--plasma); color: #04121c; transform: rotate(90deg); }
.add-btn svg{ width: 15px; height: 15px; }

.collections-foot{ display: flex; justify-content: center; margin-top: 52px; }

/* ==========================================================================
   Custom quote / configurator
   ========================================================================== */

.quote-section{
  background: linear-gradient(180deg, var(--surface-2), var(--void) 60%);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.quote-grid{ display: grid; grid-template-columns: .95fr 1.05fr; gap: 60px; align-items: flex-start; }
.quote-steps{ display: flex; flex-direction: column; gap: 26px; margin-top: 40px; }
.quote-step{ display: flex; gap: 18px; }
.quote-step .num{
  font-family: var(--font-mono);
  font-size: 12px;
  width: 34px; height: 34px; flex-shrink: 0;
  border-radius: 50%;
  border: 1px solid var(--border-strong);
  display: grid; place-items: center;
  color: var(--text-2);
}
.quote-step h4{ font-size: 15.5px; }
.quote-step p{ font-size: 13.5px; color: var(--text-3); margin: 4px 0 0; }

.quote-card{
  background: var(--surface);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-xl);
  padding: 40px;
  box-shadow: 0 40px 80px -40px rgba(0,0,0,.6);
}
.dropzone{
  border: 1.5px dashed var(--border-strong);
  border-radius: var(--radius-m);
  padding: 34px 20px;
  text-align: center;
  transition: border-color .3s, background .3s;
  cursor: pointer;
}
.dropzone:hover, .dropzone.drag{ border-color: var(--plasma); background: color-mix(in srgb, var(--plasma) 6%, transparent); }
.dropzone svg{ width: 30px; height: 30px; color: var(--plasma); margin: 0 auto 12px; }
.dropzone strong{ font-size: 14.5px; display: block; }
.dropzone span{ font-size: 12.5px; color: var(--text-3); display: block; margin-top: 4px; }
.dropzone input{ display: none; }
.file-chip{ display:none; margin-top:14px; align-items:center; gap:10px; padding:10px 14px; border:1px solid var(--border-strong); border-radius: var(--radius-s); font-size: 13px; text-align:left; }
.file-chip.show{ display: flex; }
.file-chip svg{ width: 16px; height: 16px; color: var(--success); flex-shrink: 0; }

.form-row{ display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 18px; }
.field{ display: flex; flex-direction: column; gap: 8px; }
.field label{ font-size: 12.5px; color: var(--text-3); font-family: var(--font-mono); letter-spacing: .02em; }
.field input, .field select, .field textarea{
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-s);
  padding: 12px 14px;
  color: var(--text-1);
  transition: border-color .3s;
}
.field input:focus, .field select:focus, .field textarea:focus{ border-color: var(--plasma); outline: none; }
.field textarea{ resize: vertical; min-height: 80px; }

.material-picker{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 18px; }
.material-picker input{ display: none; }
.material-picker label{
  display: flex; flex-direction: column; gap: 3px;
  padding: 12px; text-align: center;
  border: 1px solid var(--border);
  border-radius: var(--radius-s);
  cursor: pointer;
  transition: border-color .3s, background .3s;
  font-size: 12px;
}
.material-picker label b{ font-size: 13px; font-family: var(--font-display); }
.material-picker input:checked + label{ border-color: var(--plasma); background: color-mix(in srgb, var(--plasma) 8%, transparent); }

.quote-total{
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 26px; padding-top: 22px; border-top: 1px solid var(--border);
}
.quote-total .lbl{ font-size: 12.5px; color: var(--text-3); font-family: var(--font-mono); }
.quote-total .amt{ font-family: var(--font-display); font-size: 26px; font-weight: 600; }
.quote-card .btn{ width: 100%; margin-top: 20px; }
.quote-note{ font-size: 11.5px; color: var(--text-3); text-align: center; margin-top: 14px; }

/* ==========================================================================
   Process
   ========================================================================== */

.process-rail{ position: relative; margin-top: 60px; }
.process-line{
  position: absolute; top: 27px; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--border-strong) 8%, var(--border-strong) 92%, transparent);
}
.process-grid{ display: grid; grid-template-columns: repeat(5, 1fr); gap: 20px; position: relative; }
.process-step{ text-align: left; }
.process-step .marker{
  width: 54px; height: 54px; border-radius: 50%;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  display: grid; place-items: center;
  font-family: var(--font-mono); font-size: 13px; color: var(--plasma);
  margin-bottom: 22px;
  position: relative; z-index: 1;
}
.process-step h4{ font-size: 15px; }
.process-step p{ font-size: 13px; color: var(--text-3); margin-top: 8px; }

/* ==========================================================================
   Materials
   ========================================================================== */

.materials-grid{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 48px; }
.material-card{
  border: 1px solid var(--border);
  border-radius: var(--radius-l);
  padding: 26px;
  transition: border-color .35s, transform .35s;
}
.material-card:hover{ border-color: var(--border-strong); transform: translateY(-4px); }
.material-card .swatch{ width: 40px; height: 40px; border-radius: 10px; margin-bottom: 18px; }
.material-card.has-media .material-media{
  width: 100%; aspect-ratio: 16/9; border-radius: var(--radius-m); overflow: hidden; margin-bottom: 18px;
}
.material-card.has-media .material-media img{ width: 100%; height: 100%; object-fit: cover; }
.material-card h4{ font-size: 17px; }
.material-card .tech{ font-family: var(--font-mono); font-size: 11px; color: var(--plasma); margin-top: 4px; display:block; }
.material-card p{ font-size: 13.5px; color: var(--text-3); margin-top: 12px; }
.material-specs{ display: flex; gap: 14px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); flex-wrap: wrap; }
.material-specs div{ font-family: var(--font-mono); font-size: 11px; }
.material-specs div b{ display: block; font-size: 13px; color: var(--text-1); font-family: var(--font-display); }
.material-specs div span{ color: var(--text-3); }

/* ==========================================================================
   USP / Why
   ========================================================================== */

.usp-grid{ display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: var(--radius-l); overflow: hidden; margin-top: 48px; }
.usp-card{ background: var(--void); padding: 34px 28px; transition: background .35s; }
.usp-card:hover{ background: var(--surface); }
.usp-card svg{ width: 26px; height: 26px; color: var(--plasma); }
.usp-card h4{ font-size: 15.5px; margin-top: 20px; }
.usp-card p{ font-size: 13.5px; color: var(--text-3); margin-top: 10px; }

/* ==========================================================================
   Gallery
   ========================================================================== */

.gallery-grid{ display: grid; grid-template-columns: repeat(6, 1fr); grid-auto-rows: 130px; gap: 14px; margin-top: 48px; }
.gallery-item{ border-radius: var(--radius-m); border: 1px solid var(--border); position: relative; overflow: hidden; background: var(--surface-2); }
.gallery-item.g1{ grid-column: span 2; grid-row: span 2; }
.gallery-item.g2{ grid-column: span 2; grid-row: span 1; }
.gallery-item.g3{ grid-column: span 2; grid-row: span 2; }
.gallery-item.g4{ grid-column: span 2; grid-row: span 1; }
.gallery-item.g5{ grid-column: span 2; grid-row: span 1; }
.gallery-item.g6{ grid-column: span 2; grid-row: span 1; }
.gallery-item svg{ position: absolute; inset: 0; margin: auto; width: 46%; height: 46%; opacity: .9; }
.gallery-item .fill{ position:absolute; inset:0; }
.gallery-item::after{ content: attr(data-label); position: absolute; left: 14px; bottom: 12px; font-family: var(--font-mono); font-size: 10.5px; color: var(--text-2); }

/* ==========================================================================
   Testimonials
   ========================================================================== */

.testi-carousel{ margin-top: 48px; width: 100%; }
.testi-viewport{ overflow: hidden; }
.testi-track{
  display: flex; gap: 18px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  padding: 4px clamp(20px, 4vw, 64px) 16px;
  -ms-overflow-style: none; scrollbar-width: none;
}
.testi-track::-webkit-scrollbar{ display: none; }
.testi-card{
  width: 300px; flex-shrink: 0;
  scroll-snap-align: start;
  border: 1px solid var(--border);
  border-radius: var(--radius-l);
  padding: 22px;
  background: var(--surface);
}
.testi-card.has-media{ padding-top: 0; overflow: hidden; }
.testi-media{ margin: 0 -22px 20px; aspect-ratio: 16/9; overflow: hidden; }
.testi-media img{ width: 100%; height: 100%; object-fit: cover; }
.testi-stars{ display: flex; gap: 3px; color: var(--ember); }
.testi-stars svg{ width: 13px; height: 13px; }
.testi-card p{ font-size: 13.5px; margin-top: 14px; color: var(--text-2); line-height: 1.55; }
.testi-person{ display: flex; align-items: center; gap: 10px; margin-top: 18px; }
.testi-avatar{ width: 34px; height: 34px; border-radius: 50%; display:grid; place-items:center; font-family: var(--font-display); font-size: 12px; font-weight: 600; color: #041019; flex-shrink: 0; }
.testi-person strong{ font-size: 12.5px; display: block; }
.testi-person span{ font-size: 11px; color: var(--text-3); }

.testi-controls{ display: flex; align-items: center; justify-content: center; gap: 20px; margin-top: 20px; }
.testi-dots{ display: flex; gap: 8px; }
.testi-dots button{ width: 7px; height: 7px; border-radius: 50%; border: none; background: var(--border-strong); padding: 0; transition: background .3s, transform .3s; }
.testi-dots button.active{ background: var(--plasma); transform: scale(1.3); }

@media (max-width: 860px){
  .testi-card{ width: 260px; }
}

.testimonial-preview{ margin-top: 12px; }
.testimonial-preview img, .testimonial-preview video{ max-width: 100%; max-height: 220px; border-radius: var(--radius-s); border: 1px solid var(--border-strong); }
.quote-file-preview{ margin-top: 12px; }
.quote-file-preview img, .quote-file-preview video{ max-width: 100%; max-height: 200px; border-radius: var(--radius-s); border: 1px solid var(--border-strong); display: block; }

/* ==========================================================================
   FAQ
   ========================================================================== */

.faq-list{ max-width: 780px; margin: 48px auto 0; }
.faq-item{ border-bottom: 1px solid var(--border); }
.faq-q{
  width: 100%; text-align: left;
  display: flex; align-items: center; justify-content: space-between;
  padding: 24px 4px;
  background: transparent; border: none; color: var(--text-1);
  font-family: var(--font-display); font-size: 16.5px; font-weight: 500;
}
.faq-q .plus{ width: 22px; height: 22px; flex-shrink: 0; position: relative; }
.faq-q .plus::before, .faq-q .plus::after{ content:''; position:absolute; background: var(--text-2); transition: transform .35s var(--ease-out); }
.faq-q .plus::before{ top:50%; left:0; right:0; height:1.5px; transform: translateY(-50%); }
.faq-q .plus::after{ left:50%; top:0; bottom:0; width:1.5px; transform: translateX(-50%); }
.faq-item.open .plus::after{ transform: translateX(-50%) rotate(90deg); opacity: 0; }
.faq-a{ max-height: 0; overflow: hidden; transition: max-height .45s var(--ease-in-out); }
.faq-a p{ padding: 0 4px 24px; color: var(--text-2); font-size: 14.5px; max-width: 640px; }

/* ==========================================================================
   CTA banner
   ========================================================================== */

.cta-banner{
  margin: 0 32px;
  max-width: calc(var(--shell-max) - 64px);
  margin-left: auto; margin-right: auto;
  border-radius: var(--radius-xl);
  padding: 76px 60px;
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, var(--deep), var(--teal-glow));
  border: 1px solid var(--border-strong);
  text-align: center;
}
.cta-banner h2{ font-size: clamp(28px, 3.6vw, 42px); max-width: 620px; margin: 0 auto; }
.cta-banner p{ color: var(--text-2); margin-top: 16px; }
.cta-banner .hero-cta{ justify-content: center; margin-top: 30px; }
.cta-banner .orbit-ring{ opacity: .5; }

/* ==========================================================================
   Footer
   ========================================================================== */

.footer{ padding: 100px 0 30px; border-top: 1px solid var(--border); margin-top: 60px; }
.footer-top{ display: grid; grid-template-columns: 1.4fr repeat(3, 1fr) 1.2fr; gap: 40px; }
.footer-brand img{ height: 24px; margin-bottom: 18px; }
.footer-brand p{ color: var(--text-3); font-size: 13.5px; max-width: 260px; }
.footer-social{ display: flex; gap: 10px; margin-top: 22px; }
.footer-col h5{ font-family: var(--font-mono); font-size: 11.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3); margin-bottom: 18px; }
.footer-col ul{ display: flex; flex-direction: column; gap: 12px; }
.footer-col a{ font-size: 13.5px; color: var(--text-2); transition: color .25s; }
.footer-col a:hover{ color: var(--plasma); }
.newsletter-form{ display: flex; gap: 8px; margin-top: 14px; }
.newsletter-form input{ flex:1; min-width:0; background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-s); padding: 11px 14px; color: var(--text-1); font-size: 13px; }
.newsletter-form input:focus{ outline: none; border-color: var(--plasma); }
.newsletter-form button{ width: 42px; flex-shrink:0; border-radius: var(--radius-s); border: none; background: var(--plasma); color: #04121c; display:grid; place-items:center; }
.newsletter-form button svg{ width:16px; height:16px; }
.footer-badges{ display: flex; gap: 10px; margin-top: 20px; flex-wrap: wrap; }
.footer-bottom{ display: flex; justify-content: space-between; align-items: center; margin-top: 80px; padding-top: 24px; border-top: 1px solid var(--border); font-size: 12.5px; color: var(--text-3); flex-wrap: wrap; gap: 12px; }
.footer-bottom .legal-links{ display: flex; gap: 20px; }

/* ==========================================================================
   Cart drawer
   ========================================================================== */

.cart-overlay{ position: fixed; inset: 0; background: rgba(0,0,0,.5); backdrop-filter: blur(3px); z-index: 200; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .4s, visibility 0s linear .4s; }
.cart-overlay.open{ opacity: 1; visibility: visible; pointer-events: auto; transition: opacity .4s; }
.cart-drawer{
  position: fixed; top: 0; right: 0; bottom: 0; width: 400px; max-width: 92vw;
  background: var(--surface); border-left: 1px solid var(--border-strong);
  z-index: 201; padding: 28px; display: flex; flex-direction: column;
  transform: translateX(100%); transition: transform .5s var(--ease-out);
}
.cart-overlay.open .cart-drawer{ transform: translateX(0); }
.cart-head{ display: flex; align-items: center; justify-content: space-between; }
.cart-head h3{ font-size: 18px; }
.cart-items{ margin-top: 26px; display: flex; flex-direction: column; gap: 16px; overflow-y: auto; flex: 1; }
.cart-item{ display: flex; gap: 14px; align-items: center; border-bottom: 1px solid var(--border); padding-bottom: 16px; }
.cart-item .thumb{ width: 56px; height: 56px; border-radius: var(--radius-s); background: var(--surface-2); display: grid; place-items: center; flex-shrink: 0; }
.cart-item .thumb svg{ width: 60%; height: 60%; }
.cart-item .meta{ flex: 1; min-width: 0; }
.cart-item .meta strong{ font-size: 13.5px; display: block; }
.cart-item .meta span{ font-size: 12px; color: var(--text-3); }
.cart-empty{ margin: auto; text-align: center; color: var(--text-3); font-size: 13.5px; }
.cart-foot{ border-top: 1px solid var(--border); padding-top: 20px; margin-top: 12px; }
.cart-foot .row{ display: flex; justify-content: space-between; font-size: 14px; margin-bottom: 16px; }
.cart-foot .btn{ width: 100%; }

/* ==========================================================================
   Toast
   ========================================================================== */

.toast{
  position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%) translateY(20px);
  background: var(--metal-100); color: var(--void);
  padding: 13px 22px; border-radius: 100px; font-size: 13.5px; font-weight: 600;
  display: flex; align-items: center; gap: 10px;
  opacity: 0; pointer-events: none; transition: all .4s var(--ease-out);
  z-index: 300;
}
.toast.show{ opacity: 1; transform: translateX(-50%) translateY(0); }
.toast svg{ width: 16px; height: 16px; color: var(--success); }

/* ==========================================================================
   Hero — mouse-scrub character video
   ========================================================================== */

.hero-scrub{
  position: relative;
  min-height: 100vh;
  padding: 0;
  display: flex;
  align-items: center;
  overflow: hidden;
}
.hero-scrub-media{
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: 56%;
  z-index: -1;
  cursor: default;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, black 18%);
  mask-image: linear-gradient(90deg, transparent 0%, black 18%);
}
.hero-scrub-media video{
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: 68% center;
  display: block;
  background: var(--void);
}
.hero-scrub-overlay{
  position: absolute; inset: 0;
  background:
    linear-gradient(90deg, var(--void) 0%, transparent 30%),
    linear-gradient(180deg, color-mix(in srgb, var(--void) 45%, transparent) 0%, transparent 20%, transparent 75%, var(--void) 100%);
}
[data-theme="light"] .hero-scrub-overlay{
  background:
    linear-gradient(90deg, var(--void) 0%, transparent 30%),
    linear-gradient(180deg, color-mix(in srgb, var(--void) 35%, transparent) 0%, transparent 20%, transparent 75%, var(--void) 100%);
}

.hero-scrub-content{ position: relative; z-index: 1; padding: 108px 0 90px; width: 100%; }
.hero-scrub .hero-copy{ max-width: 560px; }
.hero-scrub .hero-copy p{ text-shadow: 0 2px 20px rgba(0,0,0,.4); }

.hero-scrub-hint{
  position: absolute;
  right: 5%; bottom: 34px; left: auto; transform: none;
  z-index: 1;
  display: flex; align-items: center; gap: 10px;
  padding: 10px 18px;
  border-radius: 100px;
  border: 1px solid var(--border-strong);
  background: color-mix(in srgb, var(--void) 55%, transparent);
  backdrop-filter: blur(8px);
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--text-2);
  opacity: 1;
  transition: opacity .6s var(--ease-out);
  pointer-events: none;
}
.hero-scrub-hint svg{ width: 15px; height: 15px; color: var(--plasma); flex-shrink: 0; }
.hero-scrub-hint.is-hidden{ opacity: 0; }

@media (max-width: 960px){
  .hero-scrub-media{ width: 62%; }
}

@media (max-width: 860px){
  .hero-scrub{
    min-height: 0;
    flex-direction: column;
    align-items: stretch;
    padding-top: 0;
  }
  .hero-scrub-media{
    position: relative;
    inset: auto;
    width: 100%;
    height: 46vh;
    min-height: 320px;
    -webkit-mask-image: none;
    mask-image: none;
    order: -1;
  }
  .hero-scrub-media video{ object-position: 60% 20%; }
  .hero-scrub-overlay{
    background:
      linear-gradient(180deg, transparent 55%, var(--void) 100%);
  }
  .hero-scrub-content{ padding: 8px 0 64px; }
  .hero-scrub .hero-copy{ max-width: 100%; text-align: left; }
  .hero-scrub-hint{ display: none; }
}

/* ==========================================================================
   Hero background photo (legacy, kept for any section reusing it)
   ========================================================================== */

.hero-bg{
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
}
.hero-bg img{
  width: 100%; height: 100%;
  object-fit: cover;
  opacity: .22;
  filter: saturate(1.1) contrast(1.05);
  transform: scale(1.05);
}
.hero-bg::after{
  content: '';
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, var(--void) 0%, color-mix(in srgb, var(--void) 55%, transparent) 40%, var(--void) 100%),
    linear-gradient(90deg, var(--void) 0%, transparent 45%);
}
.hero{ position: relative; overflow: hidden; }

/* about circular photo core */
.about-visual .core{ overflow: hidden; }
.about-visual .core img{ width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.about-stamp{
  position: absolute; bottom: 22px; left: 22px;
  font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .05em;
  padding: 7px 12px; border-radius: 100px;
  background: color-mix(in srgb, var(--void) 60%, transparent);
  border: 1px solid var(--border-strong);
  backdrop-filter: blur(6px);
  color: var(--text-1);
}

/* materials banner photo */
.materials-banner{
  width: 220px; height: 84px; border-radius: var(--radius-m);
  overflow: hidden; border: 1px solid var(--border-strong); flex-shrink: 0;
}
.materials-banner img{ width: 100%; height: 100%; object-fit: cover; }

/* ==========================================================================
   Shop: result count + photo/render product media
   ========================================================================== */

.result-count{
  margin: 26px 0 0;
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--text-3);
}

.product-media img{
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .6s var(--ease-out);
}
.product-card:hover .product-media img{ transform: scale(1.06); }
.product-media.is-render{
  background: radial-gradient(120% 100% at 30% 0%, var(--teal-glow), var(--surface-2) 65%);
}
.product-tag.render-tag{ right: 14px; left: auto; background: color-mix(in srgb, var(--ember) 22%, var(--void) 70%); border-color: color-mix(in srgb, var(--ember) 50%, var(--border-strong)); }

/* gallery with real photos */
.gallery-item.has-photo{ padding: 0; }
.gallery-item.has-photo img{ width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.gallery-item.has-photo::before{
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgba(0,0,0,.65));
  z-index: 1;
}
.gallery-item.has-photo::after{ z-index: 2; color: #fff; }
.gallery-item svg{ color: var(--text-2); }

/* ==========================================================================
   Product Detail Modal (PDP)
   ========================================================================== */

.pdp-overlay{
  position: fixed; inset: 0; z-index: 220;
  background: rgba(0,0,0,.6); backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity .35s var(--ease-out), visibility 0s linear .35s;
}
.pdp-overlay.open{ opacity: 1; visibility: visible; pointer-events: auto; transition: opacity .35s var(--ease-out); }
.pdp-card{
  position: relative;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-xl);
  max-width: 980px; width: 100%;
  max-height: 88vh;
  overflow-y: auto;
  transform: translateY(24px) scale(.98);
  transition: transform .4s var(--ease-out);
  box-shadow: 0 60px 120px -40px rgba(0,0,0,.7);
}
.pdp-overlay.open .pdp-card{ transform: translateY(0) scale(1); }
.pdp-close{ position: absolute; top: 18px; right: 18px; z-index: 5; background: var(--surface); }
.pdp-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 0; }

.pdp-media{ padding: 32px; background: var(--surface-2); border-radius: var(--radius-xl) 0 0 var(--radius-xl); }
.pdp-media-main{
  aspect-ratio: 1/1; border-radius: var(--radius-l); overflow: hidden;
  background: radial-gradient(120% 100% at 30% 0%, var(--teal-glow), var(--surface-2) 65%);
  display: grid; place-items: center;
}
.pdp-media-main img{ width: 100%; height: 100%; object-fit: cover; }
.pdp-media-main svg{ width: 55%; height: 55%; }
.pdp-thumbs{ display: flex; gap: 10px; margin-top: 14px; }
.pdp-thumbs .thumb{
  width: 60px; height: 60px; border-radius: var(--radius-s); overflow: hidden;
  border: 1px solid var(--border); cursor: pointer; opacity: .6; transition: opacity .25s, border-color .25s;
  display: grid; place-items: center; background: var(--surface);
}
.pdp-thumbs .thumb.active{ opacity: 1; border-color: var(--plasma); }
.pdp-thumbs .thumb img{ width: 100%; height: 100%; object-fit: cover; }
.pdp-thumbs .thumb svg{ width: 60%; height: 60%; }

.pdp-info{ padding: 40px 40px 40px 32px; }
.pdp-info .cat{ font-family: var(--font-mono); font-size: 11px; color: var(--text-3); letter-spacing: .05em; }
.pdp-info h3{ font-size: 26px; margin-top: 8px; font-family: var(--font-display); }
.pdp-price-row{ display: flex; align-items: center; gap: 14px; margin-top: 12px; }
.pdp-price{ font-family: var(--font-display); font-size: 22px; font-weight: 600; }
.pdp-desc{ margin-top: 14px; font-size: 14.5px; color: var(--text-2); line-height: 1.65; }

.pdp-specs{ display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin: 22px 0; padding: 18px; border: 1px solid var(--border); border-radius: var(--radius-m); }
.pdp-specs div{ font-family: var(--font-mono); font-size: 11px; }
.pdp-specs div b{ display: block; font-family: var(--font-display); font-size: 13.5px; color: var(--text-1); margin-top: 2px; }
.pdp-specs div span{ color: var(--text-3); }

.option-group{ margin-top: 20px; }
.option-group label{ font-family: var(--font-mono); font-size: 11.5px; color: var(--text-3); letter-spacing: .03em; display: block; margin-bottom: 10px; }
.option-group label span{ color: var(--text-1); font-family: var(--font-body); }

.option-pills{ display: flex; gap: 8px; flex-wrap: wrap; }
.pill{
  padding: 9px 15px; border-radius: 100px; border: 1px solid var(--border-strong);
  background: transparent; color: var(--text-2); font-size: 13px; font-weight: 500;
  transition: all .25s var(--ease-out); cursor: pointer;
}
.pill:hover{ color: var(--text-1); }
.pill.active{ background: var(--text-1); color: var(--void); border-color: var(--text-1); }
.pill .delta{ font-family: var(--font-mono); font-size: 10.5px; opacity: .7; margin-left: 5px; }

.swatch-row{ display: flex; gap: 10px; }
.swatch{
  width: 30px; height: 30px; border-radius: 50%;
  border: 2px solid transparent; outline: 1px solid var(--border-strong); outline-offset: 2px;
  cursor: pointer; transition: outline-color .25s, transform .25s;
}
.swatch.active{ outline-color: var(--plasma); transform: scale(1.08); }

.qty-stepper{
  display: inline-flex; align-items: center; gap: 0;
  border: 1px solid var(--border-strong); border-radius: 100px; overflow: hidden;
}
.qty-stepper button{
  width: 38px; height: 38px; background: transparent; border: none; color: var(--text-1); font-size: 17px;
  transition: background .2s;
}
.qty-stepper button:hover{ background: var(--surface-2); }
.qty-stepper span{ width: 40px; text-align: center; font-family: var(--font-mono); font-size: 14px; }

.pdp-actions{ display: flex; gap: 12px; margin-top: 26px; flex-wrap: wrap; }
.pdp-actions .btn{ flex: 1; min-width: 160px; }

@media (max-width: 780px){
  .pdp-grid{ grid-template-columns: 1fr; }
  .pdp-media{ border-radius: var(--radius-xl) var(--radius-xl) 0 0; }
}

/* ==========================================================================
   Legal / support pages
   ========================================================================== */

.legal-head{ max-width: 720px; margin-bottom: 44px; }
.legal-head h1{ font-size: clamp(30px, 4vw, 44px); margin-top: 16px; font-family: var(--font-display); font-weight: 600; }
.legal-updated{ margin-top: 12px; font-family: var(--font-mono); font-size: 12px; color: var(--text-3); }

.legal-body{ max-width: 720px; padding-bottom: 100px; }
.legal-body h2{ font-size: 19px; margin-top: 40px; margin-bottom: 12px; font-family: var(--font-display); font-weight: 600; }
.legal-body h2:first-child{ margin-top: 0; }
.legal-body p{ font-size: 15px; color: var(--text-2); line-height: 1.75; margin-bottom: 4px; }
.legal-body ul{ margin: 10px 0 4px; padding-left: 20px; }
.legal-body li{ font-size: 15px; color: var(--text-2); line-height: 1.75; margin-bottom: 6px; list-style: disc; }
.legal-body a{ color: var(--plasma); text-decoration: underline; text-underline-offset: 2px; }

.contact-info-list{ display: flex; flex-direction: column; gap: 20px; margin-top: 40px; }
.contact-info-item{ display: flex; gap: 14px; align-items: flex-start; }
.contact-info-icon{
  width: 42px; height: 42px; border-radius: 50%; flex-shrink: 0;
  background: var(--surface-2); border: 1px solid var(--border-strong);
  display: grid; place-items: center;
}
.contact-info-icon svg{ width: 18px; height: 18px; color: var(--plasma); }
.contact-info-item b{ font-size: 14px; display: block; }
.contact-info-item span{ font-size: 13px; color: var(--text-3); }

/* ==========================================================================
   Shop page (shop.html)
   ========================================================================== */

.shop-breadcrumb{ display: flex; align-items: center; gap: 8px; margin-bottom: 28px; font-size: 13px; color: var(--text-3); }
.shop-breadcrumb a{ color: var(--text-3); transition: color .2s; }
.shop-breadcrumb a:hover{ color: var(--plasma); }
.shop-breadcrumb svg{ width: 14px; height: 14px; }
.shop-breadcrumb span{ color: var(--text-2); }

.shop-layout{ display: grid; grid-template-columns: 240px 1fr; gap: 44px; align-items: flex-start; }

.shop-filters{
  position: sticky; top: calc(var(--nav-h) + 24px);
  display: flex; flex-direction: column; gap: 28px;
  padding: 24px; border: 1px solid var(--border); border-radius: var(--radius-l);
}
.shop-filter-block label{ font-family: var(--font-mono); font-size: 11.5px; color: var(--text-3); letter-spacing: .03em; display: block; margin-bottom: 12px; }
.shop-filter-block label span{ color: var(--text-1); font-family: var(--font-body); }

.shop-search-field{ position: relative; }
.shop-search-field svg{ position: absolute; left: 12px; top: 50%; transform: translateY(-50%); width: 15px; height: 15px; color: var(--text-3); }
.shop-search-field input{
  width: 100%; padding: 10px 12px 10px 36px;
  background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-s);
  color: var(--text-1); font-size: 13.5px;
}
.shop-search-field input:focus{ outline: none; border-color: var(--plasma); }

.shop-check-list{ display: flex; flex-direction: column; gap: 10px; }
.shop-check{ display: flex; align-items: center; gap: 10px; font-size: 13.5px; color: var(--text-2); cursor: pointer; }
.shop-check input{ accent-color: var(--plasma); width: 15px; height: 15px; flex-shrink: 0; }
.shop-check:hover{ color: var(--text-1); }

.shop-filter-block input[type="range"]{ width: 100%; accent-color: var(--plasma); }

.shop-results-head{ display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 8px; }
.shop-sort{ display: flex; align-items: center; gap: 10px; }
.shop-sort label{ font-family: var(--font-mono); font-size: 11.5px; color: var(--text-3); }
.shop-sort select{
  background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-s);
  color: var(--text-1); padding: 8px 12px; font-size: 13px;
}

.shop-empty{ text-align: center; padding: 60px 20px; color: var(--text-3); }
.shop-empty p{ margin-bottom: 16px; }

@media (max-width: 960px){
  .shop-layout{ grid-template-columns: 1fr; }
  .shop-filters{ position: static; flex-direction: row; flex-wrap: wrap; gap: 20px 32px; }
  .shop-filter-block{ flex: 1; min-width: 200px; }
}
@media (max-width: 620px){
  .shop-filters{ flex-direction: column; }
}

/* ==========================================================================
   Responsive
   ========================================================================== */


.journey{ margin-top: 0; }
.journey-head{ text-align: center; margin-bottom: 40px; }
.journey-head h3{ font-family: var(--font-display); font-size: clamp(22px, 2.6vw, 30px); margin-top: 14px; }
.journey-strip{
  display: flex; align-items: flex-start; justify-content: center; gap: 8px;
  flex-wrap: wrap; padding: 36px 28px; border: 1px solid var(--border); border-radius: var(--radius-xl);
  background: var(--surface);
}
.journey-stage{ display: flex; flex-direction: column; align-items: center; text-align: center; width: 178px; gap: 4px; }
.journey-icon{
  width: 64px; height: 64px; border-radius: 50%;
  background: var(--surface-2); border: 1px solid var(--border-strong);
  display: grid; place-items: center; margin-bottom: 6px;
  overflow: hidden;
}
.journey-num{ font-family: var(--font-mono); font-size: 11px; color: var(--plasma); letter-spacing: .04em; }
.journey-icon svg{ width: 26px; height: 26px; color: var(--plasma); }
.journey-photo-icon img{ width: 100%; height: 100%; object-fit: cover; }
.journey-swatches{ display: flex; gap: 4px; padding: 0; }
.journey-swatches span{ width: 16px; height: 16px; border-radius: 50%; display: block; }
.journey-stage b{ font-size: 14px; margin-top: 2px; }
.journey-stage span:last-child{ font-size: 12px; color: var(--text-3); line-height: 1.5; }
.journey-arrow{ width: 20px; height: 20px; color: var(--text-3); flex-shrink: 0; margin-top: 22px; }

@media (max-width: 1080px){
  .product-grid{ grid-template-columns: repeat(3, 1fr); }
  .usp-grid{ grid-template-columns: repeat(2, 1fr); }
  .process-grid{ grid-template-columns: repeat(3, 1fr); row-gap: 40px; }
  .process-line{ display: none; }
  .footer-top{ grid-template-columns: 1fr 1fr; }
}

@media (max-width: 860px){
  .nav-links{
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    position: fixed;
    top: var(--nav-h);
    left: 0; right: 0;
    background: var(--void);
    border-bottom: 1px solid var(--border);
    padding: 10px 20px 22px;
    transform: translateY(-12px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s var(--ease-out), transform .3s var(--ease-out);
  }
  .nav-links.open-mobile{ opacity: 1; transform: translateY(0); pointer-events: auto; }
  .nav-links a{ width: 100%; padding: 12px 0; border-bottom: 1px solid var(--border); }
  .nav-burger{ display: grid; }
  .hero .shell{ grid-template-columns: 1fr; }
  .hero-visual{ height: 380px; order: -1; }
  .about .shell{ grid-template-columns: 1fr; }
  .quote-grid{ grid-template-columns: 1fr; }
  .materials-grid{ grid-template-columns: repeat(2, 1fr); }
  .gallery-grid{ grid-template-columns: repeat(4, 1fr); grid-auto-rows: 110px; }
  .stats-strip .shell{ grid-template-columns: repeat(2, 1fr); row-gap: 26px; }
}

@media (max-width: 620px){
  .materials-banner{ display: none; }
  .shell{ padding: 0 20px; }
  .section{ padding: 84px 0; }
  .product-grid{ grid-template-columns: repeat(2, 1fr); gap: 14px; }
  .usp-grid{ grid-template-columns: 1fr; }
  .process-grid{ grid-template-columns: 1fr 1fr; }
  .journey-strip{ flex-direction: column; align-items: stretch; gap: 22px; padding: 24px; }
  .journey-arrow{ display: none; }
  .journey-stage{ width: 100%; align-items: flex-start; text-align: left; }
  .materials-grid{ grid-template-columns: 1fr; }
  .form-row{ grid-template-columns: 1fr; }
  .material-picker{ grid-template-columns: repeat(3, 1fr); }
  .gallery-grid{ grid-template-columns: repeat(2, 1fr); }
  .gallery-item.g1, .gallery-item.g3{ grid-column: span 2; grid-row: span 1; }
  .footer-top{ grid-template-columns: 1fr; gap: 36px; }
  .footer-bottom{ flex-direction: column; align-items: flex-start; }
  .cta-banner{ padding: 54px 26px; margin: 0 16px; }
  .section-head.split{ flex-direction: column; align-items: flex-start; }
}
