/**
 * =============================================================================
 * WOLLUX - Category Grid Styles
 * =============================================================================
 *
 * File    : assets/css/wollux-category-grid.css
 * Scope   : [wollux_category_grid] and [wollux_subcategory_grid] output
 *
 * Structure:
 *   1.  Design tokens (CSS custom properties)
 *   2.  Grid layout
 *   3.  Category card — wrapper
 *   4.  Category card — image
 *   5.  Category card — body (title, count, description, CTA)
 *   6.  Category card — has-children modifier
 *   6b. Category card — inline subcat quick-links (show_subcats="true")
 *   7.  Category card — subcategory modifier
 *   8.  Empty & error states
 *   9.  Responsive breakpoints
 *
 * Theming:
 *   All visual values are CSS custom properties prefixed --wollux-cat-*.
 *   Override in your theme CSS or Elementor Custom CSS without editing
 *   this file:
 *     :root { --wollux-cat-accent: #yourcolor; }
 *
 *   Tokens intentionally share the same naming pattern as
 *   wollux-product-grid.css so a single :root override covers both.
 *
 * =============================================================================
 */


/* =============================================================================
 * 1. DESIGN TOKENS
 * ============================================================================= */

:root {
    /* --- Brand --- */
    --wollux-cat-accent:            #489000;   /* Match --wollux-color-accent */
    --wollux-cat-accent-dark:       #27ae60;
    --wollux-cat-accent-light:      #eafaf1;
    --wollux-cat-accent-overlay:    rgba(46, 204, 113, 0.08);

    /* --- Neutrals --- */
    --wollux-cat-bg:                #ffffff;
    --wollux-cat-surface:           #f8f8f6;
    --wollux-cat-border:            #e8e8e4;
    --wollux-cat-text-primary:      #1a1a1a;
    --wollux-cat-text-secondary:    #666660;
    --wollux-cat-text-muted:        #999993;
    --wollux-cat-placeholder-bg:    #ededea;

    /* --- Count badge --- */
    --wollux-cat-count-bg:          var(--wollux-cat-surface);
    --wollux-cat-count-text:        var(--wollux-cat-text-muted);
    --wollux-cat-count-border:      var(--wollux-cat-border);

    /* --- Children indicator --- */
    --wollux-cat-children-bar:      var(--wollux-cat-accent);

    /* --- Inline subcat quick-links --- */
    --wollux-cat-subcat-bg:         transparent;
    --wollux-cat-subcat-bg-hover:   var(--wollux-cat-accent-light);
    --wollux-cat-subcat-text:       var(--wollux-cat-text-secondary);
    --wollux-cat-subcat-text-hover: var(--wollux-cat-accent-dark);
    --wollux-cat-subcat-icon-size:  16px;
    --wollux-cat-subcat-divider:    var(--wollux-cat-border);
    --wollux-cat-subcat-font-size:  0.825rem;

    /* --- Typography --- */
    --wollux-cat-font-base:         inherit;
    --wollux-cat-font-size-title:   1.15rem;
    --wollux-cat-font-size-desc:    0.875rem;
    --wollux-cat-font-size-cta:     0.875rem;
    --wollux-cat-font-size-count:   0.7rem;
    --wollux-cat-font-weight-title: 600;
    --wollux-cat-font-weight-cta:   500;

    /* --- Spacing --- */
    --wollux-cat-grid-gap:          1.5rem;
    --wollux-cat-card-padding:      1.25rem;
    --wollux-cat-image-ratio:       60%;       /* Image aspect ratio (height/width %) */

    /* --- Decoration --- */
    --wollux-cat-card-radius:       12px;
    --wollux-cat-card-shadow:       0 2px 10px rgba(0, 0, 0, 0.06);
    --wollux-cat-card-shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.12);
    --wollux-cat-image-overlay:     linear-gradient(
                                        to bottom,
                                        transparent 40%,
                                        rgba(0, 0, 0, 0.04) 100%
                                    );

    /* --- Transitions --- */
    --wollux-cat-transition:        0.22s ease;
}


/* =============================================================================
 * 2. GRID LAYOUT
 * ============================================================================= */

.wollux-catgrid {
    display: grid;
    gap: var(--wollux-cat-grid-gap);
    margin: 0;
    padding: 0;
    list-style: none;
    width: 100%;
}

.wollux-catgrid--cols-2 { grid-template-columns: repeat(2, 1fr); }
.wollux-catgrid--cols-3 { grid-template-columns: repeat(3, 1fr); }
.wollux-catgrid--cols-4 { grid-template-columns: repeat(4, 1fr); }

/* Subcategory grid: slightly smaller gap — feels nested */
.wollux-catgrid--subcategory {
    --wollux-cat-grid-gap: 1.25rem;
}


/* =============================================================================
 * 3. CATEGORY CARD — WRAPPER
 * ============================================================================= */

.wollux-catcard {
    display: flex;
    flex-direction: column;
    background: var(--wollux-cat-bg);
    border: 1px solid var(--wollux-cat-border);
    border-radius: var(--wollux-cat-card-radius);
    box-shadow: var(--wollux-cat-card-shadow);
    overflow: hidden;
    transition:
        box-shadow var(--wollux-cat-transition),
        transform  var(--wollux-cat-transition);
}

.wollux-catcard:hover {
    box-shadow: var(--wollux-cat-card-shadow-hover);
    transform: translateY(-3px);
}

/* Inner wrapper — now a <div>, not an <a> */
.wollux-catcard__inner {
    display: flex;
    flex-direction: column;
    flex: 1;
    color: inherit;
    text-decoration: none;
}


/* =============================================================================
 * 4. CATEGORY CARD — IMAGE
 * ============================================================================= */

.wollux-catcard__image-wrap {
    position: relative;
    width: 100%;
    padding-top: var(--wollux-cat-image-ratio);
    overflow: hidden;
    background: var(--wollux-cat-placeholder-bg);
}

/* Subtle gradient overlay on image */
.wollux-catcard__image-wrap::after {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--wollux-cat-image-overlay);
    pointer-events: none;
}

.wollux-catcard__image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--wollux-cat-transition);
}

.wollux-catcard:hover .wollux-catcard__image {
    transform: scale(1.05);
}

/* Placeholder — no image available */
.wollux-catcard__image-wrap--placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--wollux-cat-placeholder-bg);
}

.wollux-catcard__placeholder-letter {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 3rem;
    font-weight: 700;
    color: var(--wollux-cat-text-muted);
    text-transform: uppercase;
    line-height: 1;
    user-select: none;
}


/* =============================================================================
 * 5. CATEGORY CARD — BODY
 * ============================================================================= */

.wollux-catcard__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: var(--wollux-cat-card-padding);
    gap: 1rem;
}

/* Header row: title + count badge side by side */
.wollux-catcard__header {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.wollux-catcard__title {
    font-family: var(--wollux-cat-font-base);
    font-size: var(--wollux-cat-font-size-title);
    font-weight: var(--wollux-cat-font-weight-title);
    color: var(--wollux-cat-text-primary);
    margin: 0;
    line-height: 1.25;
    flex: 1;
}

/* Title link — inherits title style, no underline unless hovered */
.wollux-catcard__title-link {
    color: inherit;
    text-decoration: none;
}

.wollux-catcard__title-link:hover {
    color: var(--wollux-cat-accent-dark);
}

.wollux-catcard__title-link:focus-visible {
    outline: 2px solid var(--wollux-cat-accent);
    outline-offset: 2px;
    border-radius: 2px;
}

/* Product count badge */
.wollux-catcard__count {
    display: inline-block;
    font-size: var(--wollux-cat-font-size-count);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--wollux-cat-count-text);
    background: var(--wollux-cat-count-bg);
    border: 1px solid var(--wollux-cat-count-border);
    padding: 0.15rem 0.5rem;
    border-radius: 100px;
    white-space: nowrap;
    flex-shrink: 0;
}

/* Short description */
.wollux-catcard__desc {
    font-size: var(--wollux-cat-font-size-desc);
    color: var(--wollux-cat-text-secondary);
    line-height: 1.55;
    margin: 0;
}

/* CTA — outline button, pinned to bottom of card body */
.wollux-catcard__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    margin-top: auto;
    padding: 0.55rem 1rem;
    font-size: var(--wollux-cat-font-size-cta);
    font-weight: var(--wollux-cat-font-weight-cta);
    color: var(--wollux-cat-accent);
    text-decoration: none;
    border: 2px solid var(--wollux-cat-accent);
    border-radius: 5px;
    background: transparent;
    transition:
        color            var(--wollux-cat-transition),
        background       var(--wollux-cat-transition),
        border-color     var(--wollux-cat-transition);
}

.wollux-catcard__cta:hover,
.wollux-catcard:hover .wollux-catcard__cta {
    color: #ffffff;
    background: var(--wollux-cat-accent);
    border-color: var(--wollux-cat-accent);
}

.wollux-catcard__cta:focus-visible {
    outline: 2px solid var(--wollux-cat-accent);
    outline-offset: 3px;
    border-radius: 5px;
}

/* Arrow icon — Material Icon, matches subcat list arrow */
.wollux-catcard__cta .material-icons {
    font-size: var(--wollux-cat-subcat-icon-size) !important;
    line-height: 1;
    flex-shrink: 0;
    transition: transform var(--wollux-cat-transition);
    user-select: none;
}

.wollux-catcard__cta:hover .material-icons,
.wollux-catcard:hover .wollux-catcard__cta .material-icons {
    transform: translateX(3px);
}


/* =============================================================================
 * 6. CATEGORY CARD — HAS-CHILDREN MODIFIER
 * ============================================================================= */

/*
 * Cards for parent categories that have child categories — no extra
 * border styling needed; the subcat list itself is the visual indicator.
 */
.wollux-catcard--has-children {
    /* border-left intentionally removed — subcat list serves as indicator */
}


/* =============================================================================
 * 6b. CATEGORY CARD — INLINE SUBCAT QUICK-LINKS
 * =============================================================================
 *
 * Rendered when show_subcats="true" on [wollux_category_grid].
 * Sits inside .wollux-catcard__body between description and CTA.
 * Each row is a direct <a> tag — valid because the card wrapper is
 * now a <div>, not an <a>.
 * ============================================================================= */

.wollux-catcard__subcats {
    list-style: none;
    margin: 0.25rem 0 0;
    padding: 0.5rem 0 0;
    border-top: 1px solid var(--wollux-cat-subcat-divider);
    display: flex;
    flex-direction: column;
}

.wollux-catcard__subcat-item {
    margin: 0;
}

.wollux-catcard__subcat-link {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.45rem 0.25rem;
    border-bottom: 1px solid var(--wollux-cat-subcat-divider);
    color: var(--wollux-cat-subcat-text);
    text-decoration: none;
    font-size: var(--wollux-cat-subcat-font-size);
    font-weight: 500;
    background: var(--wollux-cat-subcat-bg);
    transition:
        color        var(--wollux-cat-transition),
        background   var(--wollux-cat-transition),
        padding-left var(--wollux-cat-transition);
}

.wollux-catcard__subcat-item:last-child .wollux-catcard__subcat-link {
    border-bottom: none;
}

.wollux-catcard__subcat-link:hover {
    color: var(--wollux-cat-subcat-text-hover);
    padding-left: 0.5rem;
}

.wollux-catcard__subcat-link:focus-visible {
    outline: 2px solid var(--wollux-cat-accent);
    outline-offset: 1px;
    border-radius: 3px;
}

/* Google Material Icon inside subcat link */
.wollux-catcard__subcat-icon {
    font-size: var(--wollux-cat-subcat-icon-size) !important;
    line-height: 1;
    flex-shrink: 0;
    color: var(--wollux-cat-accent);
    transition: transform var(--wollux-cat-transition);
    user-select: none;
}

.wollux-catcard__subcat-link:hover .wollux-catcard__subcat-icon {
    transform: translateX(2px);
}

.wollux-catcard__subcat-name {
    flex: 1;
    line-height: 1.3;
}

/* =============================================================================
 * 7. SUBCATEGORY GRID MODIFIER
 * ============================================================================= */

/*
 * When rendered as subcategories, cards are slightly more compact —
 * they appear nested below a parent category header on the page.
 */
.wollux-catgrid--subcategory .wollux-catcard {
    --wollux-cat-image-ratio:       52%;
    --wollux-cat-font-size-title:   1rem;
    --wollux-cat-card-padding:      1rem;
}

.wollux-catgrid--subcategory .wollux-catcard {
    border-left: none; /* Remove parent indicator on child cards */
}


/* =============================================================================
 * 8. EMPTY & ERROR STATES
 * ============================================================================= */

.wollux-catgrid__empty,
.wollux-catgrid__error {
    font-size: 0.95rem;
    text-align: center;
    padding: 3rem 1rem;
    width: 100%;
}

.wollux-catgrid__empty {
    color: var(--wollux-cat-text-muted);
}

.wollux-catgrid__error {
    color: #c0392b;
    background: #fdf2f2;
    border-radius: 6px;
    border: 1px solid #f5c6c6;
}


/* =============================================================================
 * 9. RESPONSIVE BREAKPOINTS
 * ============================================================================= */

/* Tablet — ≤1024px */
@media (max-width: 1024px) {
    .wollux-catgrid--cols-4 { grid-template-columns: repeat(3, 1fr); }
    .wollux-catgrid--cols-3 { grid-template-columns: repeat(2, 1fr); }
}

/* Phablet — ≤768px */
@media (max-width: 768px) {
    .wollux-catgrid--cols-4,
    .wollux-catgrid--cols-3,
    .wollux-catgrid--cols-2 { grid-template-columns: repeat(2, 1fr); }

    :root {
        --wollux-cat-grid-gap:    1rem;
        --wollux-cat-card-padding: 1rem;
    }
}

/* Mobile — ≤480px: single column */
@media (max-width: 480px) {
    .wollux-catgrid--cols-4,
    .wollux-catgrid--cols-3,
    .wollux-catgrid--cols-2 { grid-template-columns: 1fr; }

    :root {
        --wollux-cat-image-ratio: 52%;
    }
}