/* Explain: App-specific component styles for buttons, cards, and other UI elements. - */
.btn-chocolate {
    border: 1px solid var(--primary-color);
    border-radius: 999px;
    background: var(--primary-color);
    color: var(--cream-color);
    box-shadow: 0 14px 32px rgba(61, 28, 0, 0.22);
    transition: transform 220ms ease, box-shadow 220ms ease, background 220ms ease;
}

.btn-chocolate:hover {
    background: var(--primary-hover);
    box-shadow: 0 18px 44px rgba(61, 28, 0, 0.28);
    transform: translateY(-2px);
}

.btn-gold {
    border: 1px solid rgba(212, 175, 55, 0.5);
    border-radius: 999px;
    background: linear-gradient(135deg, var(--accent-color), var(--caramel-color));
    color: var(--primary-color);
    box-shadow: 0 14px 30px rgba(198, 142, 23, 0.22);
    transition: transform 220ms ease, box-shadow 220ms ease;
}

.btn-gold:hover {
    box-shadow: 0 18px 42px rgba(198, 142, 23, 0.28);
    transform: translateY(-2px);
}

.btn-ivory {
    border: 1px solid var(--border-color);
    border-radius: 999px;
    background: rgba(255, 253, 248, 0.84);
    color: var(--primary-color);
    transition: border-color 220ms ease, background 220ms ease, transform 220ms ease;
}

.btn-ivory:hover {
    border-color: var(--accent-color);
    background: var(--cream-color);
    transform: translateY(-1px);
}

.product-card {
    overflow: hidden;
    border: 1px solid rgba(232, 216, 191, 0.86);
    border-radius: var(--radius-card);
    background: rgba(255, 253, 248, 0.82);
    box-shadow: var(--shadow-card);
    transition: transform 260ms ease, box-shadow 260ms ease, border-color 260ms ease;
}

.product-card:hover {
    border-color: rgba(212, 175, 55, 0.62);
    box-shadow: 0 24px 64px rgba(61, 28, 0, 0.16);
    transform: translateY(-5px);
}

.product-card__image {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--surface-deep);
}

.product-card__image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    transition: transform 700ms ease;
}

.product-card:hover .product-card__image img {
    transform: scale(1.055);
}

.gold-divider {
    height: 1px;
    width: 100%;
    background: linear-gradient(90deg, transparent, rgba(212, 175, 55, 0.9), transparent);
}

.category-pill {
    border: 1px solid var(--border-color);
    border-radius: 999px;
    background: rgba(255, 253, 248, 0.8);
    color: var(--text-muted);
    transition: background 200ms ease, color 200ms ease, border-color 200ms ease;
}

.category-pill.is-active,
.category-pill:hover {
    border-color: var(--accent-color);
    background: rgba(212, 175, 55, 0.16);
    color: var(--primary-color);
}

.accordion-panel {
    border-bottom: 1px solid var(--border-color);
}

.accordion-panel summary {
    cursor: pointer;
    list-style: none;
}

.accordion-panel .accordion-icon {
    transition: transform 220ms ease;
}

.accordion-panel[open] .accordion-icon {
    transform: rotate(45deg);
}

.notice-success {
    border: 1px solid rgba(40, 107, 58, 0.24);
    border-radius: 1rem;
    background: rgba(40, 107, 58, 0.08);
    color: var(--success-color);
}

.notice-error {
    border: 1px solid rgba(160, 50, 37, 0.24);
    border-radius: 1rem;
    background: rgba(160, 50, 37, 0.08);
    color: var(--error-color);
}

.mobile-sticky-cta {
    border-top: 1px solid rgba(232, 216, 191, 0.9);
    background: rgba(253, 251, 247, 0.94);
    backdrop-filter: blur(18px);
}

.hero-fade-image {
    z-index: 0;
    opacity: 0;
    pointer-events: none;
    transition: opacity 800ms ease;
}

.hero-fade-image.is-active {
    z-index: 1;
    opacity: 1;
}