#S-3D {
  position: relative; height: 100vh; min-height: 620px;
  background: transparent; overflow: hidden;
}
#N3D { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; cursor: grab; }
#N3D:active { cursor: grabbing; }

/* Text container — same width as shop */
.N3-TXT-WRAP {
  position: absolute; inset: 0; z-index: 5; pointer-events: none;
  max-width: 1200px; margin: 0 auto; padding: 0 44px;
}
.N3-TXT {
  position: absolute; z-index: 5; pointer-events: none; max-width: 480px;
  transition: opacity .4s;
}
/* Position classes — within the 1200px container */
.N3-TXT.pos-center { top: 50%; left: 50%; transform: translate(-50%,-50%); text-align: center; }
.N3-TXT.pos-center .N3-SUB { margin-left: auto; margin-right: auto; }
.N3-TXT.pos-left { top: clamp(60px,10vh,120px); left: 0; transform: none; text-align: left; }
.N3-TXT.pos-right { top: clamp(60px,10vh,120px); right: 0; left: auto; transform: none; text-align: right; }
.N3-TXT.pos-right .N3-SUB { margin-left: auto; }
.N3-TXT.pos-bottom { bottom: clamp(80px,12vh,140px); left: 50%; top: auto; transform: translateX(-50%); text-align: center; }
.N3-TXT.pos-bottom .N3-SUB { margin-left: auto; margin-right: auto; }
.N3-EY {
  font-family: var(--M); font-size: 9px; letter-spacing: .22em;
  text-transform: uppercase; color: var(--m2); margin-bottom: 14px;
  display: flex; align-items: center; gap: 10px;
}
.N3-H {
  font-size: clamp(32px, 5.5vw, 72px); font-weight: 900;
  letter-spacing: -.04em; line-height: 1.05; color: var(--k);
}
.N3-H span { color: var(--p1); }
.N3-SUB {
  font-size: clamp(14px, 1.2vw, 17px); color: var(--m);
  max-width: 420px; margin-top: 14px; line-height: 1.7; font-weight: 300;
  transition: opacity .5s cubic-bezier(.16,1,.3,1);
}

/* Phase dots */
.N3-DOTS {
  position: absolute; bottom: 28px; left: 50%; transform: translateX(-50%);
  z-index: 5; display: flex; gap: 10px;
}
.N3-DOT {
  width: 6px; height: 6px; border-radius: 50%;
  background: rgba(139,92,246,.12); cursor: pointer; pointer-events: auto;
  transition: all .4s cubic-bezier(.34,1.56,.64,1);
}
.N3-DOT.on { background: var(--p1); transform: scale(1.4); box-shadow: 0 0 8px rgba(139,92,246,.3); }

@media(max-width:768px){
  .N3-TXT{top:60px;left:20px;max-width:85%}
  .N3-H{font-size:clamp(26px,7vw,44px)}
}
