/* ================= GENERATOR NADRUKÓW ================= */
.gb-gen{max-width:1100px;margin:0 auto;color:#F4EEF7}
.gb-gen__warn{padding:14px 18px;border-radius:12px;margin:0 0 22px;font-size:14px;
  background:rgba(255,180,0,.12);border:1px solid rgba(255,180,0,.4);color:#FFD98A}
.gb-gen__grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}

/* --- Podgląd --- */
.gb-gen__stage{position:sticky;top:100px}
.gb-gen__canvas{position:relative;aspect-ratio:1/1;border-radius:22px;overflow:hidden;
  border:1px solid rgba(255,255,255,.1);
  background:radial-gradient(circle at 50% 40%,rgba(255,31,122,.14),transparent 60%),#0F0916}
.gb-gen__mock{position:absolute;inset:0;width:100%;height:100%}
.gb-gen__mock[hidden]{display:none}
.gb-gen__body{fill:#FFFFFF;stroke:rgba(0,0,0,.22);stroke-width:.5;transition:fill .25s ease}
.gb-gen__detail{fill:rgba(0,0,0,.10);transition:fill .25s ease}
/* Cieniowanie i szwy — półprzezroczyste, więc czytelne na każdym kolorze. */
.gb-gen__shade{stroke:rgba(0,0,0,.28);fill:rgba(0,0,0,.07)}

.gb-gen__area{position:absolute;display:flex;align-items:center;justify-content:center;overflow:hidden;
  touch-action:none;cursor:grab;border-radius:4px;
  transition:box-shadow .2s ease,outline-color .2s ease;
  outline:1px dashed transparent;outline-offset:3px}
.gb-gen__area:hover{outline-color:rgba(255,79,216,.55)}
.gb-gen__area.is-dragging{cursor:grabbing;outline-color:#FF4FD8;
  box-shadow:0 0 0 9999px rgba(8,5,12,.28)}
.gb-gen__area[hidden]{display:none}
.gb-gen__print{max-width:100%;max-height:100%;object-fit:contain;pointer-events:none;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.25))}
.gb-gen__drag{position:absolute;left:0;right:0;bottom:52px;text-align:center;margin:0;
  color:#8E82A0;font-size:12.5px;letter-spacing:.04em;pointer-events:none}
.gb-gen__drag[hidden]{display:none}
.gb-gen__hint{position:absolute;left:0;right:0;bottom:22px;text-align:center;margin:0;
  color:#7E7189;font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.gb-gen__hint[hidden]{display:none}
.gb-gen__note{color:#6E6379;font-size:13px;line-height:1.55;margin:14px 0 0}

/* --- Panel --- */
.gb-gen__panel{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);
  border-radius:22px;padding:30px 26px}
.gb-gen__step{display:flex;align-items:center;gap:12px;margin:26px 0 14px}
.gb-gen__step:first-child{margin-top:0}
.gb-gen__step h3{margin:0;font-size:15px;font-weight:900;letter-spacing:.06em;
  text-transform:uppercase;color:#fff}
.gb-gen__num{width:28px;height:28px;flex:none;border-radius:50%;display:flex;
  align-items:center;justify-content:center;font-size:13px;font-weight:900;color:#fff;
  background:linear-gradient(100deg,#FF1F7A,#8B3DFF)}

/* Wybór produktu */
.gb-gen__types{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.gb-gen__type{padding:13px 8px;border-radius:12px;cursor:pointer;font-family:inherit;
  border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);
  color:#C9BED0;font-size:13px;font-weight:800;transition:.18s}
.gb-gen__type:hover{border-color:rgba(255,79,216,.5);color:#fff}
.gb-gen__type.is-on{border-color:transparent;color:#fff;
  background:linear-gradient(100deg,#FF1F7A,#8B3DFF);box-shadow:0 8px 22px rgba(255,31,122,.38)}

/* Kolory */
.gb-gen__colors{display:flex;flex-wrap:wrap;gap:10px}
.gb-gen__color{width:40px;height:40px;border-radius:50%;cursor:pointer;padding:0;
  border:2px solid rgba(255,255,255,.2);transition:.18s;position:relative}
.gb-gen__color:hover{transform:scale(1.08)}
.gb-gen__color.is-on{border-color:#FF4FD8;box-shadow:0 0 0 4px rgba(255,79,216,.22)}

/* Upload */
.gb-gen__drop{display:block;padding:30px 20px;border-radius:16px;cursor:pointer;text-align:center;
  border:2px dashed rgba(255,255,255,.2);background:rgba(255,255,255,.03);transition:.2s}
.gb-gen__drop:hover,.gb-gen__drop.is-over{border-color:#FF4FD8;background:rgba(255,79,216,.07)}
.gb-gen__dropText{display:block;color:#fff;font-weight:800;font-size:15px;margin-bottom:6px}
.gb-gen__dropHint{display:block;color:#6E6379;font-size:12.5px;line-height:1.5}

/* Suwaki */
.gb-gen__adjust.is-locked{opacity:.4;pointer-events:none}
.gb-gen__adjust{transition:opacity .3s ease}
.gb-gen__slider{display:block;margin-bottom:16px}
.gb-gen__slider span{display:block;color:#C9BED0;font-size:12px;font-weight:800;
  letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}
.gb-gen__slider input[type="range"]{width:100%;accent-color:#FF1F7A;cursor:pointer}

/* Zakup */
.gb-gen__buy{display:grid;grid-template-columns:90px 1fr;gap:10px}
.gb-gen__qty{padding:15px 12px;border-radius:12px;text-align:center;font-family:inherit;
  border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);
  color:#fff;font-size:16px;font-weight:800}
.gb-gen__qty:focus{outline:none;border-color:#FF4FD8}
.gb-gen__add{padding:17px 20px;border:0;border-radius:99px;cursor:pointer;font-family:inherit;
  background:linear-gradient(100deg,#FF1F7A,#FF4FD8 45%,#8B3DFF);background-size:220% auto;
  color:#fff;font-weight:900;font-size:14px;letter-spacing:.05em;text-transform:uppercase;
  box-shadow:0 10px 28px rgba(255,31,122,.42);
  transition:transform .2s ease,box-shadow .2s ease,background-position .5s ease}
.gb-gen__add:hover:not(:disabled){transform:translateY(-2px);background-position:100% center}
.gb-gen__add:disabled{opacity:.6;cursor:wait;transform:none}

.gb-gen__msg{margin:16px 0 0;padding:13px 16px;border-radius:12px;font-size:14px;line-height:1.5}
.gb-gen__msg[hidden]{display:none}
.gb-gen__msg.is-err{background:rgba(255,77,77,.12);border:1px solid rgba(255,77,77,.4);color:#FFB3B3}
.gb-gen__msg.is-ok{background:rgba(255,31,122,.12);border:1px solid rgba(255,79,216,.45);color:#fff}
.gb-gen__msg a{color:#FF4FD8;font-weight:800}

@media(max-width:860px){
  .gb-gen__grid{grid-template-columns:1fr;gap:22px}
  .gb-gen__stage{position:static}
  .gb-gen__panel{padding:24px 18px}
}
@media (prefers-reduced-motion:reduce){
  .gb-gen__type,.gb-gen__color,.gb-gen__add,.gb-gen__body{transition:none!important}
}
