/* ============================================================
   Katana Upsell Box — Frontend  v1.2.0
   Layout: Peek carousel · Info panel · Dot nav
   ============================================================ */

/* ── CSS Variables ─────────────────────────────────────────── */
.kub-upsell-box {
    --kub-gold:         #c9a96e;
    --kub-title-color:  var(--kub-gold);   /* overridden individually */
    --kub-price-color:  var(--kub-gold);
    --kub-btn-bg:       var(--kub-gold);
    --kub-card-bg:      #141418;
    --kub-text:         #ddd8d0;
    --kub-btn-text:     #0c0c0e;
    --kub-heading-font: 'Cinzel', 'Times New Roman', serif;
    --kub-body-font:    'Cormorant Garamond', 'Georgia', serif;
    --kub-sz:           13px;

    --kub-gold-bright:  color-mix(in srgb, var(--kub-gold) 80%, white);
    --kub-gold-dim:     color-mix(in srgb, var(--kub-gold) 50%, black);
    --kub-border:       color-mix(in srgb, var(--kub-card-bg) 50%, #555);
    --kub-border-hover: color-mix(in srgb, var(--kub-gold) 40%, black);
    --kub-card-hover:   color-mix(in srgb, var(--kub-card-bg) 90%, white);
    --kub-text-muted:   color-mix(in srgb, var(--kub-text) 40%, transparent);

    --kub-danger:       #8b2020;
    --kub-success-bg:   #1a2e1a;
    --kub-success-text: #8ecf8e;
    --kub-error-bg:     #2e1a1a;
    --kub-error-text:   #cf8e8e;
    --kub-radius:       16px;
    --kub-ease:         cubic-bezier(0.25, 0.46, 0.45, 0.94);
    --kub-t:            0.22s;

    font-family: var(--kub-body-font);
    color: var(--kub-text);
}

/* ── Box Container ─────────────────────────────────────────── */
.kub-upsell-box {
    margin: 2.5rem 0 1.5rem;
    position: relative;
    user-select: none;
}

/* ── Header ────────────────────────────────────────────────── */
.kub-upsell-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.8rem;
    margin-bottom: 1.4rem;
    padding-bottom: 0.9rem;
    border-bottom: 1px solid var(--kub-border);
    position: relative;
}
.kub-upsell-header::after {
    content: '';
    position: absolute;
    bottom: -1px; left: 50%; transform: translateX(-50%);
    width: 3rem; height: 2px;
    background: linear-gradient(90deg, transparent, var(--kub-gold), transparent);
}
.kub-upsell-title {
    font-family: var(--kub-heading-font);
    font-size: calc(var(--kub-sz) * 0.75);
    font-weight: 700;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--kub-title-color);
    margin: 0; padding: 0; border: none; background: none; line-height: 1;
}
.kub-decor { color: var(--kub-gold-dim); font-size: 0.7rem; opacity: 0.6; }

/* ══════════════════════════════════════════════════════════════
   CAROUSEL
══════════════════════════════════════════════════════════════ */
.kub-carousel {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 1.2rem;
}

.kub-carousel-clip {
    flex: 1;
    overflow: hidden;
    position: relative;
    /* Vertical padding so scaled slides don't clip */
    padding: 12px 0;
}

.kub-carousel-track {
    display: flex;
    align-items: center;
    /* transform: translateX set by JS */
    transition: transform 0.48s var(--kub-ease);
    will-change: transform;
}

/* ── Slide ── */
.kub-slide {
    flex-shrink: 0;
    /* width: set by JS */
    transition: transform 0.48s var(--kub-ease), opacity 0.48s ease;
    transform-origin: center center;
    cursor: pointer;
}

.kub-slide-inner {
    border-radius: var(--kub-radius);
    overflow: hidden;
    aspect-ratio: 1 / 1;
    background: color-mix(in srgb, var(--kub-card-bg) 70%, black);
    border: 1px solid var(--kub-border);
    box-shadow: 0 8px 24px rgba(0,0,0,0.45);
    transition: box-shadow 0.48s ease, border-color 0.48s ease;
    position: relative;
}

.kub-slide-active .kub-slide-inner {
    border-color: color-mix(in srgb, var(--kub-gold) 35%, transparent);
    box-shadow:
        0 16px 48px rgba(0,0,0,0.65),
        0 0 0 1px color-mix(in srgb, var(--kub-gold) 18%, transparent);
}

.kub-slide-img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
    transition: opacity 0.18s ease;
    will-change: opacity;
}
.kub-slide-img.kub-img-out { opacity: 0; }

/* ── Arrow buttons ── */
.kub-arrow {
    flex-shrink: 0;
    width: 34px; height: 34px;
    border-radius: 50%;
    border: 1px solid var(--kub-border);
    background: var(--kub-card-bg);
    color: var(--kub-text);
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: background var(--kub-t), border-color var(--kub-t), color var(--kub-t), opacity var(--kub-t), transform var(--kub-t);
    font-size: 18px;
    line-height: 1;
    padding: 0;
    z-index: 3;
}
.kub-arrow svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
.kub-arrow:hover:not(:disabled):not(.kub-arrow-disabled) {
    background: var(--kub-gold);
    color: var(--kub-btn-text);
    border-color: var(--kub-gold);
    transform: scale(1.08);
}
.kub-arrow:disabled,
.kub-arrow.kub-arrow-disabled {
    opacity: 0.2;
    cursor: default;
    pointer-events: none;
}

/* ══════════════════════════════════════════════════════════════
   INFO PANEL  (name · attrs · price · button)
══════════════════════════════════════════════════════════════ */
.kub-info-panels {
    position: relative;
    min-height: 3rem; /* prevents layout shift */
}

.kub-info-panel {
    display: none;
}

.kub-info-panel.kub-info-active {
    display: block;
    animation: kubSlideUp 0.28s var(--kub-ease) both;
}

@keyframes kubSlideUp {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Product name */
.kub-info-name {
    font-family: var(--kub-heading-font);
    font-size: calc(var(--kub-sz) * 1.15);
    font-weight: 600;
    letter-spacing: 0.03em;
    color: var(--kub-text);
    text-align: center;
    margin: 0 0 0.7rem;
    padding: 0; border: none; background: none;
}
.kub-info-name a { color: inherit; text-decoration: none; transition: color var(--kub-t); }
.kub-info-name a:hover { color: var(--kub-gold); }

/* ── Attributes ── */
.kub-card-attrs {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    padding: 0.32rem 0.5rem;
    background: rgba(255,255,255,0.025);
    border: 1px solid var(--kub-border);
    border-radius: 8px;
    transition: border-color var(--kub-t), box-shadow var(--kub-t);
    margin-bottom: 0.75rem;
    overflow: hidden;
}
.kub-card-attrs.kub-needs-selection {
    border-color: var(--kub-danger);
    box-shadow: 0 0 0 2px rgba(139,32,32,0.3);
    animation: kub-shake 0.32s ease;
}
@keyframes kub-shake {
    0%,100% { transform: translateX(0); }
    25%     { transform: translateX(-5px); }
    75%     { transform: translateX(5px); }
}

.kub-attr-group {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
}
.kub-attr-label {
    font-family: var(--kub-heading-font);
    font-size: calc(var(--kub-sz) * 0.65);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--kub-text-muted);
    white-space: nowrap;
    flex-shrink: 0;
    padding-right: 0.35rem;
    border-right: 1px solid var(--kub-border);
}
.kub-attr-options {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.25rem;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    flex: 1;
    padding-bottom: 1px;
}
.kub-attr-options::-webkit-scrollbar { display: none; }
.kub-attr-btn {
    background: transparent;
    border: 1px solid var(--kub-border);
    border-radius: 4px;
    color: var(--kub-text-muted);
    font-family: var(--kub-body-font);
    font-size: calc(var(--kub-sz) * 0.88);
    line-height: 1.2;
    padding: 0.2rem 0.5rem;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background var(--kub-t), border-color var(--kub-t), color var(--kub-t), transform var(--kub-t);
}
.kub-attr-btn:hover:not(.active) { border-color: var(--kub-gold-dim); color: var(--kub-text); transform: translateY(-1px); }
.kub-attr-btn.active { background: var(--kub-gold); border-color: var(--kub-gold); color: var(--kub-btn-text); font-weight: 600; }

/* ── Footer (price + button) ── */
.kub-card-footer {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    flex-wrap: nowrap;
    padding-top: 0.6rem;
    border-top: 1px solid var(--kub-border);
}

.kub-card-price {
    font-family: var(--kub-body-font);
    font-size: calc(var(--kub-sz) * 1.5);
    font-weight: 500;
    color: var(--kub-price-color);
}
.kub-card-price ins { text-decoration: none; }
.kub-card-price del { font-size: calc(var(--kub-sz) * 1.1); opacity: 0.45; margin-right: 0.25rem; }

/* ── Add to Order button ── */
.kub-atc-btn {
    display: inline-flex; align-items: center; gap: 0.4rem;
    background: var(--kub-btn-bg);
    border: none; border-radius: 6px;
    color: var(--kub-btn-text);
    font-family: var(--kub-heading-font);
    font-size: calc(var(--kub-sz) * 0.7);
    font-weight: 700; letter-spacing: 0.1em; line-height: 1;
    padding: 0.6rem 1rem;
    cursor: pointer; white-space: nowrap; flex-shrink: 0;
    transition: background var(--kub-t), transform var(--kub-t), box-shadow var(--kub-t), color var(--kub-t);
}
.kub-atc-btn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--kub-btn-bg) 80%, white);
    transform: translateY(-1px);
    box-shadow: 0 4px 14px color-mix(in srgb, var(--kub-btn-bg) 45%, transparent);
}
.kub-atc-btn:active:not(:disabled) { transform: translateY(0); }
.kub-atc-btn:disabled { cursor: not-allowed; }
.kub-atc-btn.kub-loading { background: var(--kub-gold-dim); opacity: 0.7; }
.kub-atc-btn.kub-added  { background: var(--kub-success-bg); color: var(--kub-success-text); }
.kub-atc-btn.kub-error  { background: var(--kub-error-bg);   color: var(--kub-error-text); }
.kub-atc-btn.kub-out-of-stock { background: color-mix(in srgb, var(--kub-card-bg) 60%, #333); color: var(--kub-text-muted); border: 1px solid var(--kub-border); }
.kub-btn-plus { font-size: calc(var(--kub-sz) * 1.1); font-weight: 300; }

/* ── Dot navigation ── */
.kub-dots {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 7px;
    margin-top: 0.9rem;
}
.kub-dot {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--kub-border);
    border: none; padding: 0; cursor: pointer;
    transition: background 0.2s, transform 0.25s, width 0.25s;
}
.kub-dot:hover:not(.kub-dot-active) { background: var(--kub-gold-dim); }
.kub-dot-active {
    background: var(--kub-gold);
    transform: scale(1.5);
}

/* ── Responsive ── */
@media (max-width: 480px) {
    .kub-arrow { width: 28px; height: 28px; font-size: 15px; }
}
