/* ══════════════════════════════════════
   Modal "Dla kogo jest ten voucher?"
   ══════════════════════════════════════ */

.gmyru-vmodal[hidden] { display: none !important; }

.gmyru-vmodal {
    position: fixed;
    inset: 0;
    z-index: 999999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    box-sizing: border-box;
}

.gmyru-vmodal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, .72);
    backdrop-filter: blur(2px);
}

.gmyru-vmodal__box {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 440px;
    max-height: 90vh;
    overflow-y: auto;
    box-sizing: border-box;
    /* padding-right zostawia miejsce na X, żeby nie nachodził na treść */
    padding: 26px 26px 22px;
    background: #141014;
    border: 1px solid #2a1f28;
    border-radius: 14px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, .55);
    font-family: 'Outfit', sans-serif;
    color: #fff;
}

/* X przyklejony do ramki okna, NIE do przewijanej treści — przy długim
   modalu na mobile musi zostać widoczny. */
.gmyru-vmodal__x {
    position: sticky;
    top: 0;
    float: right;
    margin: -8px -8px 0 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    padding: 0;
    background: rgba(255, 255, 255, .06);
    border: 1px solid #2a1f28;
    border-radius: 50%;
    color: #cfcfcf;
    cursor: pointer;
    transition: background .18s ease, color .18s ease;
}
.gmyru-vmodal__x svg { width: 16px; height: 16px; }
.gmyru-vmodal__x:hover { background: rgba(233, 30, 140, .14); color: #fff; }
.gmyru-vmodal__x:focus-visible { outline: 2px solid #e91e8c; outline-offset: 2px; }

.gmyru-vmodal__title {
    margin: 0 0 6px;
    padding: 0;
    font-size: 20px;
    font-weight: 700;
    line-height: 1.25;
    color: #fff;
}

.gmyru-vmodal__product {
    margin: 0 0 18px;
    font-size: 12px;
    line-height: 1.5;
    color: #8a8a8a;
}

.gmyru-vmodal__label {
    display: block;
    margin-bottom: 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #9a9a9a;
}

.gmyru-vmodal__input {
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding: 13px 14px;
    background: rgba(255, 255, 255, .04);
    border: 1px solid #2a1f28;
    border-radius: 10px;
    color: #fff;
    font-family: inherit;
    font-size: 15px;
    line-height: 1.3;
    transition: border-color .18s ease, background .18s ease;
}
.gmyru-vmodal__input::placeholder { color: rgba(255, 255, 255, .25); }
.gmyru-vmodal__input:focus {
    outline: none;
    border-color: #e91e8c;
    background: rgba(255, 255, 255, .06);
}
.gmyru-vmodal__input.has-error { border-color: #ff5c5c; }

.gmyru-vmodal__meta {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-top: 8px;
}
.gmyru-vmodal__hint {
    flex: 1 1 auto;
    font-size: 11px;
    line-height: 1.5;
    color: #7a7a7a;
}
.gmyru-vmodal__count {
    flex: 0 0 auto;
    font-size: 11px;
    font-weight: 600;
    color: #7a7a7a;
    font-variant-numeric: tabular-nums;
}
.gmyru-vmodal__count.is-near { color: #e91e8c; }

.gmyru-vmodal__error {
    margin: 10px 0 0;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.4;
    color: #ff5c5c;
}
.gmyru-vmodal__error[hidden] { display: none; }

.gmyru-vmodal__actions {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 20px;
}

.gmyru-vmodal__submit {
    flex: 1 1 auto;
    padding: 14px 20px;
    background: #e91e8c;
    border: none;
    border-radius: 50px;
    color: #4B1528;
    font-family: inherit;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .1em;
    text-transform: uppercase;
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
    box-shadow: 0 10px 26px rgba(233, 30, 140, .32);
}
.gmyru-vmodal__submit:hover {
    transform: translateY(-1px);
    box-shadow: 0 14px 32px rgba(233, 30, 140, .45);
}
.gmyru-vmodal__submit:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.gmyru-vmodal__submit.is-loading { opacity: .6; cursor: wait; }

.gmyru-vmodal__cancel {
    flex: 0 0 auto;
    padding: 14px 18px;
    background: transparent;
    border: 1px solid #2a1f28;
    border-radius: 50px;
    color: #9a9a9a;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: color .18s ease, border-color .18s ease;
}
.gmyru-vmodal__cancel:hover { color: #fff; border-color: #e91e8c; }
.gmyru-vmodal__cancel:focus-visible { outline: 2px solid #e91e8c; outline-offset: 2px; }

/* ══════════════════════════════════════
   "Dla: Ktoś · Zmień" — jedna linia

   WooCommerce renderuje te dane jako <dl class="variation"> z <dt>/<dd>,
   czyli domyślnie trzy bloki jeden pod drugim. Składamy je z powrotem
   w wiersz. Zawężone przez :has(.variation-Dla), żeby nie ruszyć wariantów
   zwykłych produktów (rozmiar, kolor), które mają wyglądać jak dotąd.
   ══════════════════════════════════════ */
dl.variation:has(.variation-Dla) {
    display: inline !important;
    margin: 4px 0 0 !important;
    padding: 0 !important;
    font-size: 11px !important;
    line-height: 1.5 !important;
}
dl.variation:has(.variation-Dla) dt,
dl.variation:has(.variation-Dla) dd,
dl.variation:has(.variation-Dla) dd p {
    display: inline !important;
    margin: 0 !important;
    padding: 0 !important;
    float: none !important;
    clear: none !important;
    font-size: 11px !important;
    line-height: 1.5 !important;
}
dl.variation:has(.variation-Dla) dt.variation-Dla {
    color: #7a7a7a !important;
    font-weight: 600 !important;
    /* Odstęp po dwukropku — inline'owe <dt> i <dd> stykałyby się bez tego */
    margin-right: 5px !important;
}
dl.variation:has(.variation-Dla) dd.variation-Dla {
    color: #cfcfcf !important;
    font-weight: 600 !important;
}

/* Link "Zmień" — ostatni w <dd>, po separatorze */
.gmyru-voucher-sep {
    display: inline !important;
    margin: 0 4px !important;
    color: #7a7a7a !important;
    font-weight: 600 !important;
}
.gmyru-voucher-change {
    display: inline !important;
    font-size: 11px;
    font-weight: 700;
    color: #e91e8c !important;
    text-decoration: underline !important;
    text-underline-offset: 2px;
    cursor: pointer;
    white-space: nowrap;
}
.gmyru-voucher-change:hover { color: #ff6ec7 !important; }

/* ══════════════════════════════════════
   Ilość przy voucherze — zawsze 1 sztuka
   ══════════════════════════════════════ */

/* Strona produktu-vouchera */
body.gmyru-voucher-single form.cart .quantity,
body.gmyru-voucher-single .single_variation_wrap .quantity,
body.gmyru-voucher-single form.cart .qty,
body.gmyru-voucher-single form.cart .gmyru-qty-btn {
    display: none !important;
}

/* Koszyk i wysuwany koszyk — pole ilości oraz przyciski +/- z motywu */
.gmyru-voucher-item .quantity,
.gmyru-voucher-item input.qty,
.gmyru-voucher-item .gmyru-qty-btn,
.gmyru-voucher-item .gmyru-qty-minus,
.gmyru-voucher-item .gmyru-qty-plus,
.gmyru-voucher-item .gmyru-mini-qty,
.gmyru-voucher-item .quantity .plus,
.gmyru-voucher-item .quantity .minus {
    display: none !important;
}
.gmyru-voucher-qty {
    display: inline-block !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    color: #8a8a8a !important;
    white-space: nowrap !important;
}

/* ══════════════════════════════════════
   Komunikaty błędów poza koszykiem i checkoutem

   Wartości przepisane 1:1 z Koszyk-checkout-calezamowienie.php (reguły
   .woocommerce-cart/.woocommerce-checkout .woocommerce-error). Tamten CSS
   ładuje się wyłącznie na koszyku i checkoucie, a walidacja dodania vouchera
   wyświetla komunikat na liście produktów — dlatego ten sam wygląd musi być
   dostępny również tam. Zmieniasz tam kolory — zmień i tutaj.
   ══════════════════════════════════════ */
body:not(.woocommerce-cart):not(.woocommerce-checkout) .woocommerce-error,
body:not(.woocommerce-cart):not(.woocommerce-checkout) ul.woocommerce-error {
    background: rgba(252, 129, 129, .08) !important;
    border: 1px solid rgba(252, 129, 129, .25) !important;
    border-radius: 12px !important;
    color: #fc8181 !important;
    padding: 14px 20px !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    list-style: none !important;
    margin-bottom: 20px !important;
}
body:not(.woocommerce-cart):not(.woocommerce-checkout) .woocommerce-error::before,
body:not(.woocommerce-cart):not(.woocommerce-checkout) .woocommerce-error li::before {
    display: none !important;
    content: none !important;
}
body:not(.woocommerce-cart):not(.woocommerce-checkout) .woocommerce-error li {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
body:not(.woocommerce-cart):not(.woocommerce-checkout) .woocommerce-error li + li {
    margin-top: 8px !important;
}

/* Blokada scrolla tła przy otwartym modalu */
body.gmyru-vmodal-open { overflow: hidden; }

@media (max-width: 768px) {
    .gmyru-vmodal { padding: 12px; align-items: flex-start; padding-top: 24px; }
    .gmyru-vmodal__box {
        max-width: 100%;
        max-height: 90vh;
        padding: 20px 18px 18px;
        border-radius: 14px;
    }
    .gmyru-vmodal__title { font-size: 18px; }
    .gmyru-vmodal__actions { flex-direction: column-reverse; align-items: stretch; }
    .gmyru-vmodal__cancel, .gmyru-vmodal__submit { width: 100%; }
}
