/* GRUZOWISKO R2.3 — animowane promocje, bez zewnętrznych bibliotek i skryptów. */
:root{--grz-promo-red:#f31846;--grz-promo-blue:#1687ed;--grz-promo-navy:#061935}
.grz-nav-promo{color:#ffcae0!important;font-weight:850!important;letter-spacing:.02em}
.grz-promo-section{position:relative;padding:85px 0 88px;background:radial-gradient(ellipse at 88% 15%,#143f6d 0%,transparent 46%),linear-gradient(135deg,#051126 0%,#071b36 67%,#07152b 100%);overflow:hidden;color:white}
.grz-promo-section::before{content:"";pointer-events:none;position:absolute;inset:0;background:repeating-linear-gradient(118deg,transparent 0,transparent 64px,#ffffff04 65px,#ffffff04 66px);opacity:.45}
.grz-promo-section .shell{position:relative;z-index:1}
.grz-promo-section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:34px}
.grz-promo-eyebrow{font-size:.73rem;font-weight:900;letter-spacing:.2em;color:#62bbff;margin-bottom:12px;text-transform:uppercase}
.grz-promo-section-head h2,.grz-promo-section-head h1{font-size:clamp(1.9rem,4vw,3.6rem);line-height:1.08;letter-spacing:-.045em;margin:0 0 16px;font-weight:900}
.grz-promo-section-head h2 em,.grz-promo-section-head h1 em{color:#36a7ff;font-style:normal}
.grz-promo-section-head p{margin:0;color:#a9c2de;line-height:1.5;max-width:560px}
.grz-promo-spark{display:inline-block;color:#ff3759;font-size:1.4rem;animation:grzSpark 5s ease-in-out infinite;vertical-align:middle}
.grz-promo-showall{color:white!important;border:1px solid #4b6b93;padding:13px 18px;border-radius:10px;font-weight:800;white-space:nowrap;text-decoration:none;background:#0e3253;transition:transform .2s,background .2s}
.grz-promo-showall:hover{transform:translateY(-2px);background:#1a4773}
.grz-promo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.grz-promo-tile{display:block;text-decoration:none!important;color:#0a1e37!important;background:#fff;border:1px solid #dce7f2;border-radius:16px;position:relative;overflow:hidden;isolation:isolate;box-shadow:0 13px 30px #0003;transition:transform .25s ease,box-shadow .25s ease}
.grz-promo-tile:hover{transform:translateY(-6px);box-shadow:0 24px 50px #0005}
.grz-promo-tile:focus-visible{outline:3px solid #61b7ff;outline-offset:3px}
.grz-promo-tile-image{height:170px;position:relative;overflow:hidden;background:linear-gradient(130deg,#e1ebf4,#f8fbff);display:flex;align-items:center;justify-content:center}
.grz-promo-tile-image img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.grz-promo-tile:hover .grz-promo-tile-image img{transform:scale(1.07)}
.grz-promo-placeholder{font-size:4rem;font-weight:950;letter-spacing:-.12em;color:#96acc6;display:flex;align-items:center;flex-direction:column}
.grz-promo-placeholder span{font-size:.55rem;letter-spacing:.28em}
.grz-promo-sticker{position:absolute;z-index:5;top:15px;left:14px;display:inline-flex;align-items:center;justify-content:center;padding:9px 13px;border-radius:10px 10px 10px 2px;color:#fff!important;background:linear-gradient(130deg,#f93654,#d30830);font-weight:950;letter-spacing:-.04em;line-height:1;font-size:1.13rem;transform:rotate(-8deg);box-shadow:0 6px 0 #8c0d27,0 9px 22px #a41b3766;animation:grzPromoTilt 3.8s ease-in-out infinite}
.grz-promo-tile-body{padding:18px 15px 17px}
.grz-promo-tile-series{color:#1687ed;font-weight:900;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}
.grz-promo-tile h3{color:#102844;font-size:.99rem;line-height:1.35;margin:8px 0 16px;font-weight:800;min-height:3.9em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.grz-promo-price-line{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.grz-promo-price-line del,.grz-promo-prices del,.grz-detail-price del{color:#8595a9;font-size:.92rem;text-decoration-thickness:2px}
.grz-promo-price-line strong{color:#e71944;font-size:1.45rem;white-space:nowrap}
.grz-promo-tile-body>small,.grz-promo-omnibus{font-size:.64rem!important;line-height:1.45!important;color:#728198!important;display:block;max-width:100%;margin:4px 0 7px}
.grz-promo-countdown{display:inline-flex;font-size:.72rem;color:#d02b46;font-weight:800;margin-top:8px;align-items:center;gap:6px}
.grz-promo-countdown::before{content:"◷";font-size:1.1rem}
.grz-promo-card-sticker{top:13px!important;right:12px!important;left:auto!important;padding:8px 11px;font-size:.92rem}
.product .product-img{position:relative}
.product .grz-promo-prices{display:flex;gap:9px;align-items:baseline;flex-wrap:wrap}
.product .grz-promo-prices strong{color:#e51943;font-size:1.12rem}
.product .grz-promo-prices del{font-size:.76rem}
.product .price-row{align-items:flex-start}
.product .price-row .grz-promo-omnibus{margin:4px 0 0}
.grz-detail-gallery{position:relative}
.grz-promo-detail-sticker{top:26px;left:22px;font-size:1.8rem;padding:13px 20px}
.grz-detail-price del{display:block;margin-top:7px;font-size:1.13rem}
.grz-detail-price:has(.grz-promo-detail-note){background:#fff6f8;border-color:#ffc0d1}
.grz-detail-price .grz-promo-detail-note{display:block;font-size:.77rem;color:#6c7589;margin:6px 0}
.grz-detail-price:has(.grz-promo-detail-note) strong{color:#e31944}
.grz-promo-related-badge{display:inline-block;padding:4px 7px;border-radius:6px;color:white;background:#e01942;font-weight:900;margin-right:9px}
.grz-promo-listing{padding:55px 0 100px;background:linear-gradient(145deg,#f2f7ff,#fff)}
.grz-promo-listing .grz-promo-section-head{margin:36px 0 40px}
.grz-promo-listing .grz-promo-section-head p{color:#60758f}
.grz-promo-listing-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.grz-promo-listing .grz-promo-tile{box-shadow:0 8px 24px #112c5415}
.grz-promo-empty{padding:80px 0 120px}
.grz-promo-admin-head{background:linear-gradient(117deg,#06152f,#103862);border-radius:17px;padding:30px;color:white;display:flex;justify-content:space-between;align-items:center;gap:20px;margin:22px 0}
.grz-promo-admin-head h2{color:white;margin:4px 0 10px;font-size:clamp(1.3rem,2.5vw,2rem);line-height:1.2}
.grz-promo-admin-head em{color:#71c1ff;font-style:normal}
.grz-promo-admin-head p{color:#b6cadf;margin:0}
.grz-promo-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:10px 0 20px}
.grz-promo-metrics>div{background:#edf5ff;border:1px solid #e0e9f5;padding:20px;border-radius:12px;display:flex;flex-direction:column;gap:6px}
.grz-promo-metrics>div:first-child{background:#081f40;color:white}
.grz-promo-metrics small{font-size:.73rem;font-weight:700;color:inherit;opacity:.8}
.grz-promo-metrics strong{font-size:2rem;font-weight:900}
.grz-promo-formbox{margin:22px 0}
.grz-promo-live-preview{background:linear-gradient(110deg,#071935,#0f2b4f);color:white;border:1px solid #4773ad;border-radius:14px;display:flex;flex-direction:column;gap:8px;padding:22px;margin:23px 0;max-width:600px}
.grz-promo-live-preview>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:20px}
.grz-promo-live-preview>div:first-child>span{font-size:.69rem;letter-spacing:.12em;color:#87caff;font-weight:900}
.grz-promo-live-preview b{background:#e51d47;padding:9px 14px;border-radius:9px;font-size:1.2rem;transform:rotate(5deg)}
.grz-promo-live-preview>div:nth-child(2){display:flex;align-items:baseline;flex-wrap:wrap;gap:20px}
.grz-promo-live-preview del{color:#b2c3d7;font-size:1.2rem}
.grz-promo-live-preview strong{font-size:2.25rem;color:#fff}
.grz-promo-live-preview small{color:#a5b8ce}
.grz-promo-confirm{display:flex!important;align-items:start;gap:10px;line-height:1.5;margin:12px 0!important;font-weight:600!important}
.grz-promo-confirm input{flex:0 0 18px;width:18px;height:18px;margin-top:3px}
.grz-promo-admin-table small{display:block;margin-top:6px;color:#718097}
.grz-promo-table-pct{color:#e31c44;font-size:1.05rem}
.grz-promo-status{display:inline-flex;align-items:center;background:#edf1f7;padding:6px 10px;border-radius:8px;font-weight:900;font-size:.74rem}
.grz-promo-status.live{background:#d9f6e6;color:#057039}
.grz-promo-table-actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.grz-promo-table-actions form{margin:0}
@keyframes grzPromoTilt{0%,100%{transform:rotate(-8deg) scale(1)}50%{transform:rotate(-5deg) scale(1.04)}}
@keyframes grzSpark{0%,100%{transform:rotate(0) scale(1)}50%{transform:rotate(36deg) scale(1.25)}}
@media(max-width:1100px){.grz-promo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.grz-promo-section{padding:52px 0}.grz-promo-section-head,.grz-promo-admin-head{display:block}.grz-promo-showall{display:inline-block;margin-top:18px}.grz-promo-grid{gap:10px}.grz-promo-tile-image{height:118px}.grz-promo-tile h3{font-size:.86rem}.grz-promo-price-line{gap:6px}.grz-promo-price-line strong{font-size:1.12rem}.grz-promo-tile-body{padding:11px}.grz-promo-sticker{font-size:.89rem;top:10px;left:8px;padding:8px}.grz-promo-metrics{gap:6px}.grz-promo-metrics>div{padding:12px}.grz-promo-metrics strong{font-size:1.5rem}.grz-promo-admin-head .button{margin-top:15px}.grz-promo-card-sticker{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){.grz-promo-tile,.grz-promo-tile-image img,.grz-promo-sticker,.grz-promo-spark{animation:none!important;transition:none!important}.grz-promo-tile:hover{transform:none}}


/* =============================================================
   GRUZOWISKO R2.3b: COMPACT PROMOTIONS + PREMIUM MICRO-ANIMATIONS
   Style-only change. Promotions / prices / stock / SEO stay in PHP.
   ============================================================= */

/* Less empty vertical space for 1-8 promotional cards. */
.grz-promo-section {
  padding-block: 46px 48px;
}
.grz-promo-section-head {
  margin-bottom: 22px;
}
.grz-promo-section-head h2 {
  font-size: clamp(2rem, 3.4vw, 3.15rem);
  margin-bottom: 10px;
}
.grz-promo-section-head p {
  max-width: 510px;
}
.grz-promo-section .grz-promo-tile-image {
  height: 155px;
}
.grz-promo-section .grz-promo-tile-body {
  padding: 15px 15px 16px;
}
.grz-promo-section .grz-promo-tile h3 {
  min-height: 2.7em;
  margin: 7px 0 12px;
}

/* Elegant shine passing through the product photography. */
.grz-promo-tile-image::after {
  content: "";
  position: absolute;
  z-index: 2;
  top: -30%;
  left: -62%;
  width: 55%;
  height: 165%;
  pointer-events: none;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.02) 30%, rgba(255,255,255,.34) 52%, rgba(255,255,255,.02) 72%, transparent 100%);
  transform: translate3d(-30%, 0, 0) skewX(-18deg);
  animation: grzPromoR23bShine 6.6s ease-in-out infinite;
}

/* Pulse the badge, not the entire card, to avoid distracting movement. */
.grz-promo-sticker {
  transform-origin: center;
  animation: grzPromoR23bPulse 2.7s ease-in-out infinite;
  will-change: transform;
}
.grz-promo-section .grz-promo-tile {
  box-shadow: 0 14px 28px rgba(0,0,0,.22);
  transition: transform .25s ease, box-shadow .25s ease;
}
.grz-promo-section .grz-promo-tile:hover {
  box-shadow: 0 23px 46px rgba(7,66,128,.45);
}
.grz-promo-countdown {
  animation: grzPromoR23bTimer 2.8s ease-in-out infinite;
}

/* When ONE offer is active, give it an editorial two-column composition.
   This removes the large unused three-column gap from the old 4-column grid. */
@supports selector(.grz-promo-section:has(.grz-promo-tile:only-child)) {
  @media (min-width: 850px) {
    .grz-promo-section:has(.grz-promo-grid > .grz-promo-tile:only-child) {
      padding-block: 32px 34px;
    }
    .grz-promo-section:has(.grz-promo-grid > .grz-promo-tile:only-child) > .shell {
      display: grid;
      grid-template-columns: minmax(0, 1fr) minmax(280px, 335px);
      align-items: center;
      column-gap: clamp(28px, 5.8vw, 96px);
      max-width: 1140px;
    }
    .grz-promo-section:has(.grz-promo-grid > .grz-promo-tile:only-child) .grz-promo-section-head {
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: flex-start;
      gap: 0;
      margin: 0;
    }
    .grz-promo-section:has(.grz-promo-grid > .grz-promo-tile:only-child) .grz-promo-section-head h2 {
      font-size: clamp(2.2rem, 3.5vw, 3.35rem);
    }
    .grz-promo-section:has(.grz-promo-grid > .grz-promo-tile:only-child) .grz-promo-showall {
      margin-top: 24px;
    }
    .grz-promo-section:has(.grz-promo-grid > .grz-promo-tile:only-child) .grz-promo-grid {
      width: 100%;
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: 0;
    }
  }
}

/* Badge also works on catalog product cards, details and promo listing. */
@keyframes grzPromoR23bPulse {
  0%, 100% {
    transform: rotate(-8deg) scale(1);
    box-shadow: 0 6px 0 #8c0d27, 0 9px 22px rgba(164,27,55,.38);
  }
  50% {
    transform: rotate(-6deg) scale(1.10);
    box-shadow: 0 6px 0 #8c0d27, 0 14px 30px rgba(255,31,82,.6), 0 0 0 5px rgba(255,50,91,.10);
  }
}
@keyframes grzPromoR23bShine {
  0%, 54%, 100% { transform: translate3d(-30%,0,0) skewX(-18deg); opacity: 0; }
  60% { opacity: .9; }
  84% { transform: translate3d(430%,0,0) skewX(-18deg); opacity: .85; }
  91% { opacity: 0; }
}
@keyframes grzPromoR23bTimer {
  0%, 100% { opacity: 1; }
  50% { opacity: .76; }
}

@media (max-width: 849px) {
  .grz-promo-section { padding-block: 36px 39px; }
  .grz-promo-section-head { margin-bottom: 20px; }
}
@media (max-width: 700px) {
  .grz-promo-section { padding-block: 29px 32px; }
  .grz-promo-section-head h2 { font-size: clamp(1.85rem, 7.8vw, 2.6rem); }
  .grz-promo-section .grz-promo-tile-image { height: 130px; }
  .grz-promo-section .grz-promo-tile-body { padding: 12px; }
  .grz-promo-section .grz-promo-tile h3 { min-height: 2.6em; }
  .grz-promo-showall { margin-top: 14px; }
}
@media (max-width: 410px) {
  .grz-promo-grid { grid-template-columns: minmax(0, 1fr); }
  .grz-promo-section .grz-promo-tile { max-width: 370px; }
  .grz-promo-section .grz-promo-tile-image { height: 164px; }
}

/* Accessibility, low-power devices and motion sensitivity. */
@media (prefers-reduced-motion: reduce) {
  .grz-promo-sticker,
  .grz-promo-countdown,
  .grz-promo-tile-image::after,
  .grz-promo-spark {
    animation: none !important;
  }
  .grz-promo-sticker { transform: rotate(-8deg); will-change: auto; }
  .grz-promo-tile-image::after { display: none; }
}
