/* ============================================================
   VISUALLY EPIC — print shop (dark, Saal portal embed)
   ============================================================ */

/* ---------- header ---------- */
.s-hero { position: relative; padding: calc(var(--nav-h) + 90px) 0 70px; overflow: hidden;
  background: linear-gradient(180deg, #060c18 0%, var(--void) 100%); }
.s-aurora { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .6; mix-blend-mode: screen; pointer-events: none; }
.s-stars { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .55; mix-blend-mode: screen; pointer-events: none;
  -webkit-mask-image: linear-gradient(180deg, #000 30%, transparent 90%); mask-image: linear-gradient(180deg, #000 30%, transparent 90%); }
.s-hero-in { position: relative; z-index: 2; }
.s-hero h1 { font-size: clamp(2.8rem, 7vw, 5.4rem); margin: 18px 0 20px; }
.s-hero h1 .g { background: linear-gradient(100deg, var(--gold-soft), var(--gold)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.s-hero p { color: var(--mut); max-width: 640px; font-size: 1.02rem; }
.s-hero strong { color: var(--ink); }

/* ---------- picked piece banner ---------- */
.picked {
  display: flex; align-items: center; gap: 22px; margin: 34px 0 0;
  background: linear-gradient(120deg, rgba(240, 166, 58, .1), rgba(67, 232, 165, .06));
  border: 1px solid rgba(240, 166, 58, .4); border-radius: 16px; padding: 18px 22px;
  animation: pickedIn .6s var(--ease);
  position: relative;
}
@keyframes pickedIn { from { opacity: 0; transform: translateY(14px) } }
.picked img { width: 110px; height: 82px; object-fit: cover; border-radius: 10px; box-shadow: 0 10px 26px rgba(0,0,0,.5); }
.picked small { display: block; font-size: .68rem; letter-spacing: .3em; text-transform: uppercase; color: var(--gold-soft); margin-bottom: 4px; }
.picked h3 { font-size: 1.25rem; }
.picked p { color: var(--mut); font-size: .88rem; margin-top: 6px; max-width: 560px; }
.picked p a { color: var(--aurora); border-bottom: 1px solid rgba(67, 232, 165, .4); }
.picked-x {
  position: absolute; top: 12px; right: 14px; background: none; border: 0; color: var(--mut);
  font-size: .95rem; transition: color .3s;
}
.picked-x:hover { color: var(--ink); }
@media (max-width: 640px) { .picked { flex-direction: column; align-items: flex-start; } }

/* ---------- steps ---------- */
.s-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; padding: 60px 0 10px; }
.step {
  border: 1px solid var(--line); border-radius: 16px; padding: 28px;
  background: rgba(140, 175, 225, .04); position: relative; overflow: hidden;
  transition: transform .4s var(--ease), border-color .4s;
}
.step:hover { transform: translateY(-6px); border-color: rgba(67, 232, 165, .4); }
.step-no {
  font-family: var(--disp); font-weight: 800; font-size: 3.2rem;
  background: linear-gradient(180deg, rgba(67, 232, 165, .5), rgba(67, 232, 165, .06));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.step h3 { margin: 10px 0 8px; font-size: 1.15rem; }
.step p { color: var(--mut); font-size: .92rem; }
.step a { color: var(--aurora); border-bottom: 1px solid rgba(67, 232, 165, .35); }
@media (max-width: 800px) { .s-steps { grid-template-columns: 1fr; } }

/* ---------- materials ---------- */
.s-materials { display: flex; gap: 14px; flex-wrap: wrap; padding: 34px 0 20px; }
.mat {
  flex: 1 1 200px; border: 1px solid rgba(240, 166, 58, .3); border-radius: 14px; padding: 18px 20px;
  background: linear-gradient(160deg, rgba(240, 166, 58, .07), transparent 60%);
  transition: transform .35s var(--ease), border-color .35s, box-shadow .35s;
}
.mat:hover { transform: translateY(-4px); border-color: var(--gold); box-shadow: 0 14px 34px rgba(240, 166, 58, .12); }
.mat b { display: block; font-family: var(--disp); letter-spacing: .06em; color: var(--gold-soft); margin-bottom: 4px; }
.mat span { color: var(--mut); font-size: .84rem; }

/* ---------- portal ---------- */
.s-portal { padding: 50px 0 90px; }
.portal-chrome {
  border: 1px solid var(--line); border-radius: 18px; overflow: hidden;
  background: #0a1120; box-shadow: 0 40px 100px rgba(0, 0, 0, .55);
}
.portal-bar {
  display: flex; align-items: center; gap: 8px; padding: 13px 18px;
  background: rgba(140, 175, 225, .06); border-bottom: 1px solid var(--line);
}
.dot { width: 11px; height: 11px; border-radius: 50%; }
.dot.r { background: #ff6057 } .dot.y { background: #ffbd2e } .dot.g { background: #28c840 }
.portal-title {
  margin-left: 12px; font-size: .74rem; letter-spacing: .18em; text-transform: uppercase; color: var(--mut);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.portal-pop { margin-left: auto; font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; color: var(--aurora); white-space: nowrap; }
.portal-pop:hover { text-decoration: underline; }
#portalFrame { display: block; width: 100%; height: min(78vh, 900px); border: 0; background: #f4f4f4; }
.portal-note { margin-top: 16px; text-align: center; font-size: .8rem; color: var(--mut); }
