/* ============================================================
   Niswatun Theme — Single Product Page
   assets/css/single-product.css
   ============================================================ */

/* ── Design tokens (local scope) ── */
:root {
    --sp-rose:        #C9878A;
    --sp-rose-dark:   #A8666A;
    --sp-rose-light:  #EDD9DA;
    --sp-ivory:       #FAF7F2;
    --sp-ivory-dark:  #F2EDE5;
    --sp-charcoal:    #2E2B28;
    --sp-mid:         #5A5754;
    --sp-muted:       #7A7370;
    --sp-border:      #E8E2DA;
    --sp-white:       #FFFFFF;
    --sp-serif:       'Cormorant Garamond', Georgia, serif;
    --sp-sans:        'Jost', 'Lato', sans-serif;
    --sp-radius:      4px;
    --sp-ease:        0.22s ease;
}


/* ============================================================
   SPLIT LAYOUT
   ============================================================ */

.niswatun-product__split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 56px;
    align-items: start;
    max-width: 1200px;
    margin: 40px auto 0;
    padding: 0 24px;
}

@media ( max-width: 900px ) {
    .niswatun-product__split {
        grid-template-columns: 1fr;
        gap: 28px;
        padding: 0 16px;
        margin-top: 24px;
    }
}

/* ── Gallery column — sticky on desktop ── */
.niswatun-product__gallery-col {
    position: sticky;
    top: 24px;
}

@media ( max-width: 900px ) {
    .niswatun-product__gallery-col { position: static; }
}

/* ── Details column ── */
.niswatun-product__details-col { padding-top: 4px; }

.niswatun-product__details-inner {
    display: flex;
    flex-direction: column;
    gap: 18px;
}


/* ============================================================
   GALLERY
   ============================================================ */

.niswatun-gallery { position: relative; }

/* Sale badge */
.niswatun-gallery__sale-badge {
    position: absolute;
    top: 14px;
    left: 14px;
    z-index: 10;
    background: var(--sp-rose);
    color: var(--sp-white);
    font-family: var(--sp-sans);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 5px 13px;
    border-radius: 100px;
    pointer-events: none;
}

/* Main stage */
.niswatun-gallery__stage {
    position: relative;
    overflow: hidden;
    border-radius: var(--sp-radius);
    background: var(--sp-ivory-dark);
    aspect-ratio: 4 / 5;
    cursor: zoom-in;
}

.niswatun-gallery__slides {
    width: 100%;
    height: 100%;
    position: relative;
}

.niswatun-gallery__slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 0.4s ease;
    margin: 0;
}

.niswatun-gallery__slide.is-active {
    opacity: 1;
    position: relative;
}

.niswatun-gallery__main-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
    display: block;
    pointer-events: none;
}

/* Counter */
.niswatun-gallery__counter {
    position: absolute;
    bottom: 14px;
    left: 50%;
    transform: translateX( -50% );
    background: rgba( 0,0,0,0.42 );
    color: rgba( 255,255,255,0.9 );
    font-family: var(--sp-sans);
    font-size: 11px;
    letter-spacing: 0.08em;
    padding: 4px 12px;
    border-radius: 100px;
    pointer-events: none;
    backdrop-filter: blur( 4px );
    -webkit-backdrop-filter: blur( 4px );
}

/* Arrows */
.niswatun-gallery__arrow {
    position: absolute;
    top: 50%;
    transform: translateY( -50% );
    z-index: 5;
    width: 40px;
    height: 40px;
    background: rgba( 255,255,255,0.88 );
    backdrop-filter: blur( 6px );
    -webkit-backdrop-filter: blur( 6px );
    border: none;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--sp-charcoal);
    transition: background var(--sp-ease), transform var(--sp-ease);
    box-shadow: 0 2px 8px rgba( 0,0,0,0.12 );
}

.niswatun-gallery__arrow--prev { left: 12px; }
.niswatun-gallery__arrow--next { right: 12px; }

.niswatun-gallery__arrow:hover {
    background: var(--sp-white);
    transform: translateY( -50% ) scale( 1.07 );
}

.niswatun-gallery__arrow svg {
    width: 18px;
    height: 18px;
    display: block;
}

/* Thumbnails */
.niswatun-gallery__thumbnails {
    display: flex;
    gap: 8px;
    margin-top: 10px;
    flex-wrap: wrap;
}

.niswatun-gallery__thumb {
    width: 70px;
    height: 88px;
    border: 2px solid var(--sp-border);
    border-radius: var(--sp-radius);
    overflow: hidden;
    padding: 0;
    background: var(--sp-ivory-dark);
    cursor: pointer;
    transition: border-color var(--sp-ease), transform var(--sp-ease);
    flex-shrink: 0;
}

.niswatun-gallery__thumb.is-active,
.niswatun-gallery__thumb:hover {
    border-color: var(--sp-rose);
    transform: scale( 1.04 );
}

.niswatun-gallery__thumb-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
    display: block;
}


/* ============================================================
   DETAILS PANEL
   ============================================================ */

/* Category label */
.niswatun-product__category-label { margin: 0; }

.niswatun-product__category-link {
    font-family: var(--sp-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--sp-rose);
    text-decoration: none;
    transition: color var(--sp-ease);
}

.niswatun-product__category-link:hover { color: var(--sp-rose-dark); }

/* Product title */
.niswatun-product__title {
    font-family: var(--sp-serif);
    font-size: clamp( 28px, 3vw, 40px );
    font-weight: 400;
    color: var(--sp-charcoal);
    line-height: 1.18;
    letter-spacing: 0.01em;
    margin: 0;
}

/* Price */
.niswatun-product__price-wrapper {
    display: flex;
    align-items: baseline;
    gap: 10px;
    flex-wrap: wrap;
}

.niswatun-product__price-wrapper .woocommerce-Price-amount {
    font-family: var(--sp-sans);
    font-size: 22px;
    font-weight: 600;
    color: var(--sp-charcoal);
}

.niswatun-product__price-wrapper del {
    opacity: 0.5;
}

.niswatun-product__price-wrapper del .woocommerce-Price-amount {
    font-size: 16px;
    font-weight: 400;
    color: var(--sp-muted);
    text-decoration: line-through;
}

.niswatun-product__price-wrapper ins {
    text-decoration: none;
}

.niswatun-product__price-wrapper ins .woocommerce-Price-amount {
    color: var(--sp-rose-dark);
    font-size: 22px;
    font-weight: 700;
}

/* Short description */
.niswatun-product__short-description {
    font-family: var(--sp-sans);
    font-size: 14px;
    line-height: 1.8;
    color: var(--sp-mid);
    border-top: 1px solid var(--sp-border);
    padding-top: 16px;
}

.niswatun-product__short-description ul {
    padding-left: 18px;
    margin: 8px 0;
    list-style: none;
}

.niswatun-product__short-description ul li {
    position: relative;
    padding-left: 14px;
    margin-bottom: 5px;
}

.niswatun-product__short-description ul li::before {
    content: '—';
    position: absolute;
    left: 0;
    color: var(--sp-rose-light);
    font-size: 12px;
}

/* ── Add to Cart form ── */
.niswatun-product__atc-form { margin: 0; }

.niswatun-product__atc-row {
    display: flex;
    gap: 10px;
    align-items: stretch;
}

/* Quantity stepper */
.niswatun-product__qty-wrapper {
    display: flex;
    align-items: stretch;
    border: 1.5px solid var(--sp-border);
    border-radius: var(--sp-radius);
    overflow: hidden;
    height: 52px;
    flex-shrink: 0;
    background: var(--sp-white);
    transition: border-color var(--sp-ease);
}

.niswatun-product__qty-wrapper:focus-within {
    border-color: var(--sp-rose);
}

.niswatun-product__qty-btn {
    width: 44px;
    height: 100%;
    background: var(--sp-ivory);
    border: none;
    font-size: 20px;
    font-weight: 300;
    color: var(--sp-muted);
    cursor: pointer;
    transition: background var(--sp-ease), color var(--sp-ease);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    line-height: 1;
    user-select: none;
    -webkit-user-select: none;
}

.niswatun-product__qty-btn:hover:not( :disabled ) {
    background: var(--sp-rose-light);
    color: var(--sp-rose-dark);
}

.niswatun-product__qty-btn:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}

.niswatun-product__qty-input {
    width: 52px;
    height: 100%;
    border: none;
    border-left: 1px solid var(--sp-border);
    border-right: 1px solid var(--sp-border);
    text-align: center;
    font-family: var(--sp-sans);
    font-size: 15px;
    font-weight: 500;
    color: var(--sp-charcoal);
    background: var(--sp-white);
    -moz-appearance: textfield;
    appearance: textfield;
    outline: none;
}

.niswatun-product__qty-input::-webkit-inner-spin-button,
.niswatun-product__qty-input::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Add to Bag button — full dusty rose, white text */
.niswatun-product__atc-btn,
.niswatun-product__atc-btn.single_add_to_cart_button,
.niswatun-product__atc-btn.button {
    flex: 1;
    height: 52px;
    background: var(--sp-rose) !important;
    color: var(--sp-white) !important;
    border: none !important;
    border-radius: var(--sp-radius) !important;
    font-family: var(--sp-sans) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: 0.14em !important;
    text-transform: uppercase !important;
    cursor: pointer !important;
    transition: background var(--sp-ease), transform 0.15s ease, box-shadow var(--sp-ease) !important;
    box-shadow: 0 2px 12px rgba( 169, 102, 106, 0.3 ) !important;
    white-space: nowrap;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 24px !important;
    text-decoration: none !important;
}

.niswatun-product__atc-btn:hover:not( :disabled ),
.niswatun-product__atc-btn.single_add_to_cart_button:hover:not( :disabled ) {
    background: var(--sp-rose-dark) !important;
    color: var(--sp-white) !important;
    transform: translateY( -2px ) !important;
    box-shadow: 0 6px 18px rgba( 169, 102, 106, 0.38 ) !important;
}

.niswatun-product__atc-btn:active {
    transform: translateY( 0 ) !important;
    box-shadow: 0 1px 6px rgba( 169, 102, 106, 0.2 ) !important;
}

.niswatun-product__atc-btn:disabled {
    background: #C9C5C0 !important;
    color: var(--sp-white) !important;
    cursor: not-allowed !important;
    box-shadow: none !important;
    transform: none !important;
}

/* SKU / meta */
.niswatun-product__meta {
    font-family: var(--sp-sans);
    font-size: 12px;
    color: var(--sp-muted);
    letter-spacing: 0.06em;
    margin: 0;
    padding-top: 4px;
}

.niswatun-product__meta span + span::before {
    content: ' · ';
    margin: 0 4px;
}

/* Wishlist */
.niswatun-product__wishlist-wrapper { margin-top: 2px; }

.niswatun-product__wishlist-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--sp-sans);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.06em;
    color: var(--sp-muted);
    text-decoration: none;
    transition: color var(--sp-ease);
    padding: 4px 0;
}

.niswatun-product__wishlist-link:hover { color: var(--sp-rose); }

.niswatun-icon--wishlist {
    width: 17px;
    height: 17px;
    flex-shrink: 0;
    transition: fill var(--sp-ease), stroke var(--sp-ease);
}

.niswatun-product__wishlist-link:hover .niswatun-icon--wishlist {
    stroke: var(--sp-rose);
}


/* ============================================================
   TABS SECTION (Description / Reviews)
   ============================================================ */

.niswatun-product__tabs-section {
    max-width: 1200px;
    margin: 56px auto 0;
    padding: 0 24px 64px;
}

/* Tab navigation */
.niswatun-product__tabs-section .woocommerce-tabs ul.tabs {
    display: flex;
    gap: 0;
    list-style: none;
    padding: 0;
    margin: 0 0 0;
    border-bottom: 2px solid var(--sp-border);
    position: relative;
}

.niswatun-product__tabs-section .woocommerce-tabs ul.tabs li {
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
}

.niswatun-product__tabs-section .woocommerce-tabs ul.tabs li a {
    display: block;
    font-family: var(--sp-sans);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--sp-muted);
    text-decoration: none;
    padding: 14px 24px 12px;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    transition: color var(--sp-ease), border-color var(--sp-ease);
    position: relative;
}

.niswatun-product__tabs-section .woocommerce-tabs ul.tabs li.active a,
.niswatun-product__tabs-section .woocommerce-tabs ul.tabs li a:hover {
    color: var(--sp-charcoal);
    border-bottom-color: var(--sp-rose);
}

/* Tab panels */
.niswatun-product__tabs-section .woocommerce-tabs .woocommerce-Tabs-panel {
    padding: 36px 0 0;
    border: none;
    background: transparent;
}

/* Description content */
.niswatun-product__tabs-section .woocommerce-Tabs-panel--description h2 {
    font-family: var(--sp-serif);
    font-size: 22px;
    font-weight: 500;
    color: var(--sp-charcoal);
    margin: 0 0 16px;
}

.niswatun-product__tabs-section .woocommerce-Tabs-panel p {
    font-family: var(--sp-sans);
    font-size: 14px;
    line-height: 1.85;
    color: var(--sp-mid);
    margin-bottom: 14px;
    max-width: 680px;
}

.niswatun-product__tabs-section .woocommerce-Tabs-panel ul,
.niswatun-product__tabs-section .woocommerce-Tabs-panel ol {
    font-family: var(--sp-sans);
    font-size: 14px;
    line-height: 1.8;
    color: var(--sp-mid);
    padding-left: 20px;
    margin-bottom: 14px;
    max-width: 680px;
}

/* Reviews panel */
.niswatun-product__tabs-section #reviews #comments {
    margin-bottom: 32px;
}

.niswatun-product__tabs-section #reviews h2,
.niswatun-product__tabs-section #reviews h3 {
    font-family: var(--sp-serif);
    font-size: 22px;
    font-weight: 500;
    color: var(--sp-charcoal);
    margin: 0 0 20px;
    border: none;
}

/* Review form */
.niswatun-product__tabs-section #review_form .comment-form {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px 28px;
}

.niswatun-product__tabs-section #review_form .comment-form-author,
.niswatun-product__tabs-section #review_form .comment-form-email {
    grid-column: auto;
}

.niswatun-product__tabs-section #review_form .comment-form-comment,
.niswatun-product__tabs-section #review_form .stars,
.niswatun-product__tabs-section #review_form .form-submit {
    grid-column: 1 / -1;
}

.niswatun-product__tabs-section #review_form label {
    font-family: var(--sp-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--sp-muted);
    display: block;
    margin-bottom: 6px;
}

.niswatun-product__tabs-section #review_form input[type="text"],
.niswatun-product__tabs-section #review_form input[type="email"],
.niswatun-product__tabs-section #review_form textarea {
    width: 100%;
    border: none;
    border-bottom: 1.5px solid var(--sp-border);
    border-radius: 0;
    background: transparent;
    padding: 10px 0;
    font-family: var(--sp-sans);
    font-size: 14px;
    color: var(--sp-charcoal);
    outline: none;
    transition: border-color var(--sp-ease);
    box-shadow: none;
}

.niswatun-product__tabs-section #review_form input[type="text"]:focus,
.niswatun-product__tabs-section #review_form input[type="email"]:focus,
.niswatun-product__tabs-section #review_form textarea:focus {
    border-bottom-color: var(--sp-rose);
}

.niswatun-product__tabs-section #review_form textarea {
    min-height: 100px;
    resize: vertical;
}

/* Submit button */
.niswatun-product__tabs-section #review_form #submit {
    background: var(--sp-rose);
    color: var(--sp-white);
    border: none;
    border-radius: var(--sp-radius);
    padding: 13px 32px;
    font-family: var(--sp-sans);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background var(--sp-ease), transform 0.15s ease;
    box-shadow: 0 2px 10px rgba( 169, 102, 106, 0.28 );
}

.niswatun-product__tabs-section #review_form #submit:hover {
    background: var(--sp-rose-dark);
    transform: translateY( -1px );
}

/* Star rating in review form */
.niswatun-product__tabs-section .stars a {
    color: var(--sp-rose) !important;
    font-size: 20px !important;
}

/* Existing reviews */
.niswatun-product__tabs-section .woocommerce-Reviews .review {
    border-bottom: 1px solid var(--sp-border);
    padding: 20px 0;
    list-style: none;
}

.niswatun-product__tabs-section .woocommerce-Reviews .review .meta {
    font-family: var(--sp-sans);
    font-size: 12px;
    color: var(--sp-muted);
    margin-bottom: 8px;
}

.niswatun-product__tabs-section .woocommerce-Reviews .review .meta strong {
    color: var(--sp-charcoal);
    font-weight: 600;
}

.niswatun-product__tabs-section .woocommerce-Reviews .review .description p {
    font-size: 14px;
    line-height: 1.75;
    color: var(--sp-mid);
    margin: 0;
}


/* ============================================================
   RELATED PRODUCTS
   ============================================================ */

.niswatun-product__tabs-section ~ .related,
.woocommerce .related,
.woocommerce .upsells {
    max-width: 1200px;
    margin: 0 auto 64px;
    padding: 0 24px;
}

.woocommerce .related h2,
.woocommerce .upsells h2 {
    font-family: var(--sp-serif);
    font-size: clamp( 22px, 2.5vw, 32px );
    font-weight: 400;
    color: var(--sp-charcoal);
    margin: 0 0 28px;
    letter-spacing: 0.01em;
}


/* ============================================================
   LIGHTBOX
   ============================================================ */

.niswatun-lightbox {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.28s ease;
}

.niswatun-lightbox.is-open {
    opacity: 1;
    pointer-events: all;
}

.niswatun-lightbox__backdrop {
    position: absolute;
    inset: 0;
    background: rgba( 10, 8, 6, 0.93 );
    backdrop-filter: blur( 10px );
    -webkit-backdrop-filter: blur( 10px );
}

.niswatun-lightbox__wrap {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    padding: 24px;
}

.niswatun-lightbox__img {
    max-width: 88vw;
    max-height: 88vh;
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: 2px;
    transition: opacity 0.22s ease;
    display: block;
    box-shadow: 0 24px 80px rgba( 0,0,0,0.5 );
}

.niswatun-lightbox__img.is-loading { opacity: 0.25; }

.niswatun-lightbox__close {
    position: absolute;
    top: 20px;
    right: 20px;
    width: 44px;
    height: 44px;
    background: rgba( 255,255,255,0.1 );
    border: 1px solid rgba( 255,255,255,0.18 );
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: #fff;
    transition: background var(--sp-ease);
    z-index: 2;
}

.niswatun-lightbox__close:hover { background: rgba( 255,255,255,0.2 ); }
.niswatun-lightbox__close svg { width: 18px; height: 18px; }

.niswatun-lightbox__arrow {
    position: absolute;
    top: 50%;
    transform: translateY( -50% );
    width: 48px;
    height: 48px;
    background: rgba( 255,255,255,0.08 );
    border: 1px solid rgba( 255,255,255,0.16 );
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: #fff;
    transition: background var(--sp-ease), transform var(--sp-ease);
    z-index: 2;
}

.niswatun-lightbox__arrow--prev { left: 20px; }
.niswatun-lightbox__arrow--next { right: 20px; }

.niswatun-lightbox__arrow:hover {
    background: rgba( 255,255,255,0.18 );
    transform: translateY( -50% ) scale( 1.07 );
}

.niswatun-lightbox__arrow svg { width: 22px; height: 22px; }

.niswatun-lightbox__counter {
    position: absolute;
    bottom: 24px;
    left: 50%;
    transform: translateX( -50% );
    color: rgba( 255,255,255,0.55 );
    font-family: var(--sp-sans);
    font-size: 12px;
    letter-spacing: 0.08em;
}

@media ( max-width: 600px ) {
    .niswatun-lightbox__arrow { display: none; }
    .niswatun-lightbox__img { max-width: 95vw; max-height: 85vh; }
}


/* ============================================================
   STICKY ADD TO CART BAR (mobile only)
   ============================================================ */

.niswatun-sticky-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 9000;
    background: var(--sp-white);
    border-top: 1px solid var(--sp-border);
    padding: 12px 16px;
    transform: translateY( 100% );
    transition: transform 0.3s cubic-bezier( .4, 0, .2, 1 );
    box-shadow: 0 -4px 20px rgba( 0,0,0,0.08 );
}

.niswatun-sticky-bar.is-visible { transform: translateY( 0 ); }

.niswatun-sticky-bar__inner {
    display: flex;
    align-items: center;
    gap: 16px;
    max-width: 600px;
    margin: 0 auto;
}

.niswatun-sticky-bar__title {
    font-family: var(--sp-serif);
    font-size: 15px;
    color: var(--sp-charcoal);
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.niswatun-sticky-bar__btn {
    background: var(--sp-rose);
    color: var(--sp-white);
    border: none;
    border-radius: var(--sp-radius);
    padding: 12px 24px;
    font-family: var(--sp-sans);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    cursor: pointer;
    white-space: nowrap;
    transition: background var(--sp-ease);
}

.niswatun-sticky-bar__btn:hover { background: var(--sp-rose-dark); }

@media ( min-width: 901px ) {
    .niswatun-sticky-bar { display: none !important; }
}


/* ============================================================
   MISC FIXES
   ============================================================ */

/* Prevent WooCommerce default float layout from interfering */
.woocommerce div.product div.images,
.woocommerce div.product div.summary,
.woocommerce-product-gallery {
    float: none !important;
    width: 100% !important;
    margin: 0 !important;
}

/* Stock status */
.niswatun-product__details-inner .stock {
    font-family: var(--sp-sans);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.niswatun-product__details-inner .stock.in-stock { color: #6DA98B; }
.niswatun-product__details-inner .stock.out-of-stock { color: #C44; }

/* WooCommerce notices on product page */
.niswatun-woo-notices .woocommerce-message,
.niswatun-woo-notices .woocommerce-error,
.niswatun-woo-notices .woocommerce-info {
    border-radius: var(--sp-radius);
    font-family: var(--sp-sans);
    font-size: 14px;
}

/* Page wrapper */
.woocommerce-page { min-height: 60vh; }