/* ==========================================================================
   CQIP Catalogue — Frontend Styles
   Minimal, themeable. Uses CSS custom properties for easy overriding.
   ========================================================================== */

/* ---- Root defaults — ensures variables are always defined ----------------
   Declared on :root so CQIP elements outside .cqip-catalogue (single
   product pages, taxonomy headers, related products in Breakdance templates)
   always have a resolved value.

   Breakdance global style variables are used where available so the
   catalogue inherits the site's brand automatically. Override on
   .cqip-catalogue for catalogue-specific values.
   ------------------------------------------------------------------------- */
:root {
    /* Inherit from Breakdance global styles if set, otherwise use CQIP defaults.
       Breakdance exposes: --bde-color-accent, --bde-color-text, --bde-font-body */
    --cqip-primary:         var(--bde-color-accent, #000000);
    --cqip-primary-dark:    #222222;
    --cqip-text:            var(--bde-color-text, #1f2937);
    --cqip-muted:           #6b7280;
    --cqip-card-border:     #e8e8e8;
    --cqip-card-shadow:     0 1px 2px rgba(0,0,0,.05);
    --cqip-card-radius:     4px;
    --cqip-col:             3;
    --cqip-gap:             1.5rem;
    --cqip-filter-width:    260px;
    --cqip-filter-bg:       #fafafa;
    --cqip-font:            var(--bde-font-body, inherit);
    --cqip-sale:            #c0392b;
    --cqip-oos:             #9ca3af;
    --cqip-star-filled:     #f59e0b;
    --cqip-star-empty:      #e5e7eb;
    --cqip-in-stock-color:  #16a34a;
    --cqip-out-stock-color: #9ca3af;
    --cqip-wishlist-active: #d4054f;
    --cqip-skeleton-base:   #f0f0f0;
    --cqip-skeleton-shine:  #e0e0e0;
    --cqip-error-bg:        #fef2f2;
    --cqip-error-color:     #c0392b;
    --cqip-btn-radius:      4px;
    --cqip-btn-font-size:   .875rem;
    --cqip-btn-font-weight: 600;
}

/* ---- Per-catalogue overrides (catalogue grid context only) ---------------
   Override here for catalogue-specific values that differ from global site
   styles. Values set here take precedence over :root within .cqip-catalogue.
   ------------------------------------------------------------------------- */
.cqip-catalogue {
    --cqip-col:          3;
    --cqip-gap:          1.5rem;
    --cqip-filter-width: 260px;
    --cqip-filter-bg:    #fafafa;
}

[x-cloak] { display: none !important; }

/* ---- Layout ---------------------------------------------------------------- */
.cqip-catalogue {
    display: flex !important;
    gap: var(--cqip-gap);
    align-items: flex-start;
    font-family: var(--cqip-font);
    color: var(--cqip-text);
    width: 100%;
    box-sizing: border-box;
}

/* Ensure Breakdance shortcode wrapper doesn't constrain layout */
.bde-shortcode .cqip-catalogue,
.bde-shortcode:has(.cqip-catalogue) {
    display: block;
    width: 100%;
}
.bde-shortcode .cqip-catalogue {
    display: flex !important;
}

.cqip-catalogue__main {
    flex: 1 1 0% !important;
    min-width: 0;
}

/* ---- Filter sidebar -------------------------------------------------------- */
.cqip-filters {
    width: var(--cqip-filter-width);
    flex-shrink: 0;
    background: var(--cqip-filter-bg);
    border: 1px solid var(--cqip-card-border);
    border-radius: var(--cqip-card-radius);
    padding: 1.25rem;
    position: sticky;
    top: 1rem;
    transition: width .2s ease, opacity .2s ease;
}

/* Collapsed state on desktop */
.cqip-catalogue--filters-hidden .cqip-filters {
    display: none;
}

.cqip-filters__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.cqip-filters__title {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
}

.cqip-filters__close {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 1.5rem;
    line-height: 1;
    color: var(--cqip-muted);
    padding: 0 4px;
}

.cqip-filters__actions {
    display: flex;
    gap: .5rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--cqip-card-border);
}

/* Filter groups */
.cqip-filter-group {
    border-bottom: 1px solid var(--cqip-card-border);
    padding-bottom: .5rem;
    margin-bottom: .5rem;
}

.cqip-filter-group__toggle {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: none;
    border: none;
    padding: .6rem 0;
    cursor: pointer;
    font-size: .9rem;
    font-weight: 600;
    color: var(--cqip-text);
}

.cqip-chevron {
    transition: transform .2s;
}
.cqip-chevron--open {
    transform: rotate(180deg);
}

.cqip-filter-group__options {
    padding: .25rem 0 .5rem;
    max-height: 240px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: #d1d5db transparent;
}

.cqip-filter-group__options::-webkit-scrollbar {
    width: 4px;
}

.cqip-filter-group__options::-webkit-scrollbar-track {
    background: transparent;
}

.cqip-filter-group__options::-webkit-scrollbar-thumb {
    background: #d1d5db;
    border-radius: 2px;
}

.cqip-filter-option {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .3rem 0;
    cursor: pointer;
    font-size: .875rem;
    color: var(--cqip-text);
}

.cqip-filter-option__input {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    cursor: pointer;
    accent-color: var(--cqip-primary);
}

.cqip-filter-option__label {
    flex: 1;
}

.cqip-filter-option__count {
    font-size: .75rem;
    color: var(--cqip-muted);
}

.cqip-filter-option__colour-swatch {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 1px solid rgba(0,0,0,.15);
    flex-shrink: 0;
}

/* Price inputs */
.cqip-price-inputs {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .5rem 0;
}

.cqip-price-input-wrap {
    flex: 1;
}

.cqip-price-label {
    display: block;
    font-size: .75rem;
    color: var(--cqip-muted);
    margin-bottom: .2rem;
}

.cqip-price-separator {
    color: var(--cqip-muted);
    margin-top: 1rem;
}

.cqip-input,
.cqip-price-input {
    width: 100%;
    padding: .4rem .6rem;
    border: 1px solid var(--cqip-card-border);
    border-radius: 4px;
    font-size: .875rem;
    color: var(--cqip-text);
    background: #fff;
}

.cqip-input:focus {
    outline: 2px solid var(--cqip-primary);
    outline-offset: 1px;
    border-color: var(--cqip-primary);
}

/* ---- Sort bar -------------------------------------------------------------- */
.cqip-sort-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .75rem 0;
    border-bottom: 1px solid var(--cqip-card-border);
    margin-bottom: 1rem;
    gap: 1rem;
    flex-wrap: wrap;
}

.cqip-sort-bar__left,
.cqip-sort-bar__right {
    display: flex;
    align-items: center;
    gap: .75rem;
}

.cqip-results-count {
    font-size: .875rem;
    color: var(--cqip-muted);
}

.cqip-sort-label {
    font-size: .875rem;
    color: var(--cqip-muted);
    white-space: nowrap;
}

.cqip-select {
    padding: .4rem .6rem;
    border: 1px solid var(--cqip-card-border);
    border-radius: 4px;
    font-size: .875rem;
    background: #fff;
    color: var(--cqip-text);
    cursor: pointer;
}

.cqip-view-toggle {
    display: flex;
    border: 1px solid var(--cqip-card-border);
    border-radius: 4px;
    overflow: hidden;
}

.cqip-view-btn {
    background: none;
    border: none;
    padding: .4rem .5rem;
    cursor: pointer;
    color: var(--cqip-muted);
    display: flex;
    align-items: center;
}

.cqip-view-btn--active {
    background: var(--cqip-primary);
    color: #fff;
}

.cqip-filter-count {
    background: var(--cqip-primary);
    color: #fff;
    font-size: .7rem;
    font-weight: 700;
    border-radius: 999px;
    padding: 1px 6px;
    min-width: 18px;
    text-align: center;
}

/* ---- Active filter chips --------------------------------------------------- */
.cqip-active-filters {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: 1rem;
}

.cqip-chip {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .3rem .75rem;
    background: var(--cqip-primary);
    color: #fff;
    border: none;
    border-radius: 999px;
    font-size: .8rem;
    cursor: pointer;
    transition: background .15s;
}

.cqip-chip:hover {
    background: var(--cqip-primary-dark);
}

.cqip-chip--clear {
    background: #e5e7eb;
    color: var(--cqip-text);
}

.cqip-chip--clear:hover {
    background: #d1d5db;
}

.cqip-chip__remove {
    font-size: 1rem;
    line-height: 1;
    opacity: .8;
}

/* ---- Product grid ---------------------------------------------------------- */
.cqip-grid {
    display: grid;
    gap: var(--cqip-gap);
}

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

/* ---- Product card ---------------------------------------------------------- */
.cqip-card {
    background: #fff;
    border: 1px solid var(--cqip-card-border);
    border-radius: var(--cqip-card-radius);
    box-shadow: var(--cqip-card-shadow);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: box-shadow .2s, transform .2s;
}

.cqip-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,.08);
    transform: translateY(-1px);
}

/* List layout */
.cqip-card--list {
    flex-direction: row;
}

.cqip-card--list .cqip-card__image-wrap {
    width: 180px;
    flex-shrink: 0;
}

.cqip-card__image-wrap {
    position: relative;
    display: block;
    overflow: hidden;
    background: #f9fafb;
    width: 100%;
}

a.cqip-card__image-wrap {
    display: block;
}

.cqip-card--list .cqip-card__image-wrap {
    flex-shrink: 0;
    width: 180px;
}

.cqip-card__image {
    width: 100%;
    height: auto;
    display: block;
    transition: transform .3s;
    padding: .4rem;
    box-sizing: border-box;
}

.cqip-card:hover .cqip-card__image {
    transform: scale(1.04);
}

/* Placeholder — gives the image-wrap a height when no image is available */
.cqip-card__image-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #d1d5db;
    width: 100%;
    min-height: 160px;
    padding: 1rem;
    box-sizing: border-box;
}

.cqip-card__badge {
    position: absolute;
    top: .6rem;
    left: .6rem;
    padding: .2rem .5rem;
    border-radius: 4px;
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.cqip-card__badge--sale { background: var(--cqip-sale); color: #fff; }
.cqip-card__badge--oos  { background: #e5e7eb; color: var(--cqip-muted); }

.cqip-card__body {
    padding: 1rem;
    display: flex;
    flex-direction: column;
    flex: 1;
    gap: .4rem;
}

.cqip-card__brand {
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--cqip-primary);
}

.cqip-card__name {
    margin: 0;
    font-size: .9rem;
    font-weight: 500;
    line-height: 1.3;
}

.cqip-card__name a {
    color: var(--cqip-text);
    text-decoration: none;
}

.cqip-card__name a:hover {
    color: var(--cqip-primary);
}

.cqip-card__price {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    margin-top: auto;
    padding-top: .4rem;
}

.cqip-card__price-rrp,
.cqip-price__rrp {
    font-size: .8rem;
    color: var(--cqip-muted);
    text-decoration: line-through;
}

.cqip-card__price-current,
.cqip-price__current {
    font-size: 1rem;
    font-weight: 700;
    color: var(--cqip-text);
}

.cqip-card__price-current--sale,
.cqip-price__current--sale {
    color: var(--cqip-sale);
}

.cqip-card__footer {
    margin-top: .75rem;
}

/* ---- Buttons --------------------------------------------------------------- */
.cqip-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    padding: .55rem 1.1rem;
    border-radius: var(--cqip-btn-radius);
    font-size: var(--cqip-btn-font-size);
    font-weight: var(--cqip-btn-font-weight);
    cursor: pointer;
    border: 1px solid transparent;
    text-decoration: none;
    transition: background .15s, border-color .15s, color .15s;
    line-height: 1.2;
}

.cqip-btn--primary {
    background: var(--cqip-primary);
    color: #fff;
    border-color: var(--cqip-primary);
}

.cqip-btn--primary:hover {
    background: var(--cqip-primary-dark);
    border-color: var(--cqip-primary-dark);
    color: #fff;
}

.cqip-btn--outline {
    background: transparent;
    color: var(--cqip-primary);
    border-color: var(--cqip-primary);
}

.cqip-btn--outline:hover {
    background: var(--cqip-primary);
    color: #fff;
}

.cqip-btn--ghost {
    background: transparent;
    color: var(--cqip-muted);
    border-color: transparent;
}

.cqip-btn--ghost:hover {
    color: var(--cqip-text);
    border-color: var(--cqip-card-border);
}

.cqip-btn--sm {
    padding: .35rem .75rem;
    font-size: .8rem;
}

.cqip-btn:disabled {
    opacity: .5;
    cursor: not-allowed;
}

.cqip-filter-toggle {
    position: relative;
}

/* ---- Pagination ------------------------------------------------------------ */
.cqip-pagination-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 1.5rem 0;
}

.cqip-pagination__info {
    font-size: .875rem;
    color: var(--cqip-muted);
}

/* ---- Loading --------------------------------------------------------------- */
.cqip-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .75rem;
    padding: 3rem;
    color: var(--cqip-muted);
}

.cqip-spinner {
    width: 24px;
    height: 24px;
    border: 1px solid var(--cqip-card-border);
    border-top-color: var(--cqip-primary);
    border-radius: 50%;
    animation: cqip-spin .7s linear infinite;
}

@keyframes cqip-spin {
    to { transform: rotate(360deg); }
}

/* ---- No results ------------------------------------------------------------ */
.cqip-no-results {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem;
    text-align: center;
    color: var(--cqip-muted);
    grid-column: 1 / -1;
}

.cqip-no-results__icon {
    opacity: .4;
    margin-bottom: 1rem;
}

.cqip-no-results__title {
    font-size: 1rem;
    font-weight: 600;
    color: var(--cqip-text);
    margin: 0 0 .5rem;
}

.cqip-no-results__hint {
    margin: 0;
    font-size: .875rem;
}

/* ---- Accessibility --------------------------------------------------------- */
.cqip-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
}

/* ---- Responsive ------------------------------------------------------------ */
/* ---- Filter loading skeleton ---------------------------------------------- */
.cqip-filter-loading {
    padding: .5rem 0;
}

.cqip-filter-skeleton {
    height: 20px;
    background: linear-gradient(90deg, var(--cqip-skeleton-base) 25%, var(--cqip-skeleton-shine) 50%, var(--cqip-skeleton-base) 75%);
    background-size: 200% 100%;
    animation: cqip-shimmer 1.2s infinite;
    border-radius: 4px;
    margin-bottom: 12px;
}

@keyframes cqip-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* ---- Brand dropdown -------------------------------------------------------- */
.cqip-filter-group__label {
    display: block;
    font-size: .875rem;
    font-weight: 600;
    color: var(--cqip-text);
    padding: .6rem 0 .5rem;
}

.cqip-select--full {
    width: 100%;
    margin-bottom: .5rem;
}

/* ==========================================================================
   CQIP Single Product Page
   ========================================================================== */

.cqip-single {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1.5rem var(--cqip-gap);
    font-family: var(--cqip-font);
    color: var(--cqip-text);
}

/* ---- Breadcrumb ---- */
.cqip-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .5rem;
    list-style: none;
    margin: 0 0 1.5rem;
    padding: 0;
    font-size: .85rem;
    color: var(--cqip-muted);
}

.cqip-breadcrumb__item a {
    color: var(--cqip-muted);
    text-decoration: none;
}

.cqip-breadcrumb__item a:hover {
    color: var(--cqip-primary);
}

.cqip-breadcrumb__item + .cqip-breadcrumb__item::before {
    content: '/';
    margin-right: .5rem;
    opacity: .5;
}

.cqip-breadcrumb__item--current {
    color: var(--cqip-text);
    font-weight: 500;
}

/* ---- Layout ---- */
.cqip-single .cqip-single__layout {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 3rem;
    align-items: start;
    margin-bottom: 3rem;
}

/* ---- Images ---- */
.cqip-single .cqip-single__images {
    position: sticky;
    top: 1.5rem;
}

.cqip-single .cqip-single__info {
    min-width: 0;
}

.cqip-single__image-primary {
    position: relative;
    border-radius: var(--cqip-card-radius);
    overflow: hidden;
    background: #f9fafb;
    margin-bottom: 1rem;
    min-height: 200px; /* ensures placeholder is visible */
}

.cqip-single__image {
    width: 100%;
    height: auto;
    display: block;
    padding: .5rem;
    box-sizing: border-box;
}

.cqip-single__image-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #d1d5db;
    min-height: 200px;
}

.cqip-single__image-placeholder {
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f9fafb;
    border-radius: var(--cqip-card-radius);
    color: #d1d5db;
    margin-bottom: 1rem;
}

.cqip-single__badge {
    position: absolute;
    top: 1rem;
    left: 1rem;
    padding: .3rem .7rem;
    border-radius: 4px;
    font-size: .8rem;
    font-weight: 700;
    text-transform: uppercase;
}

.cqip-single__badge--sale { background: var(--cqip-sale); color: #fff; }
.cqip-single__badge--oos  { background: #e5e7eb; color: var(--cqip-muted); }

.cqip-single__gallery {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .5rem;
}

.cqip-single__gallery-item {
    aspect-ratio: 1;
    border-radius: 4px;
    overflow: hidden;
    background: #f9fafb;
    border: 1px solid transparent;
    cursor: pointer;
    transition: border-color .15s;
}

.cqip-single__gallery-item:hover {
    border-color: var(--cqip-primary);
}

.cqip-single__gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ---- Info panel ---- */
.cqip-single__brand {
    font-size: .8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--cqip-primary);
    margin: 0 0 .5rem;
}

.cqip-single__brand a {
    color: inherit;
    text-decoration: none;
}

.cqip-single__name {
    font-size: 1.6rem;
    font-weight: 700;
    line-height: 1.2;
    margin: 0 0 1.25rem;
    color: var(--cqip-text);
}

.cqip-single__price {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: 1rem;
}

.cqip-single__price-rrp {
    font-size: 1rem;
    color: var(--cqip-muted);
    text-decoration: line-through;
}

.cqip-single__price-current {
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--cqip-text);
}

.cqip-single__price-current--sale {
    color: var(--cqip-sale);
}

.cqip-single__price-saving {
    font-size: .85rem;
    font-weight: 600;
    color: var(--cqip-sale);
    background: var(--cqip-error-bg);
    padding: .2rem .6rem;
    border-radius: 4px;
}

/* ---- Availability ---- */
.cqip-single__availability {
    margin-bottom: 1rem;
}

.cqip-single__stock {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-size: .875rem;
    font-weight: 600;
}

.cqip-single__stock--in  { color: var(--cqip-in-stock-color); }
.cqip-single__stock--out { color: var(--cqip-muted); }

/* ---- Attributes ---- */
.cqip-single__attr {
    display: flex;
    gap: .75rem;
    font-size: .875rem;
    margin-bottom: .5rem;
    align-items: center;
}

.cqip-single__attr-label {
    color: var(--cqip-muted);
    min-width: 60px;
}

.cqip-single__attr-value {
    font-weight: 500;
}

/* ---- CTA ---- */
.cqip-single__cta {
    margin: 1.5rem 0;
}

.cqip-btn--lg {
    padding: .85rem 1.75rem;
    font-size: 1rem;
    width: 100%;
    justify-content: center;
}

.cqip-single__affiliate-note {
    font-size: .75rem;
    color: var(--cqip-muted);
    text-align: center;
    margin: .5rem 0 0;
}

/* ---- Delivery & Returns ---- */
.cqip-single__delivery {
    background: #f9fafb;
    border: 1px solid var(--cqip-card-border);
    border-radius: var(--cqip-card-radius);
    padding: 1rem 1.25rem;
    margin-bottom: 1.25rem;
}

.cqip-single__delivery-title {
    font-size: .875rem;
    font-weight: 700;
    margin: 0 0 .75rem;
    color: var(--cqip-text);
}

.cqip-single__delivery-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.cqip-single__delivery-list li {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .875rem;
    color: var(--cqip-muted);
}

.cqip-single__delivery-list svg {
    flex-shrink: 0;
    color: var(--cqip-primary);
}

/* ---- Reviews / Stars ---- */
.cqip-single__reviews {
    margin-bottom: 1rem;
}

.cqip-single__stars {
    display: flex;
    align-items: center;
    gap: .25rem;
}

.cqip-star { flex-shrink: 0; }
.cqip-star--filled { fill: var(--cqip-star-filled); color: var(--cqip-star-filled); }
.cqip-star--empty  { fill: var(--cqip-star-empty); color: var(--cqip-star-empty); }

.cqip-single__reviews-count {
    margin-left: .35rem;
    font-size: .875rem;
    font-weight: 600;
    color: var(--cqip-text);
}

.cqip-single__reviews-label {
    font-weight: 400;
    color: var(--cqip-muted);
}

/* ---- Description ---- */
.cqip-single__description {
    border-top: 1px solid var(--cqip-card-border);
    padding-top: 2rem;
    max-width: 740px;
}

.cqip-single__section-title {
    font-size: 1.1rem;
    font-weight: 700;
    margin: 0 0 1rem;
}

.cqip-single__description-body {
    font-size: .9375rem;
    line-height: 1.7;
    color: #374151;
}

.cqip-single__description-body p {
    margin: 0 0 1em;
}

/* ---- Responsive ---- */
/* ==========================================================================
   Single product — improved components
   ========================================================================== */

/* Meta top block */
.cqip-single__meta-top {
    display: flex;
    flex-direction: column;
    gap: .2rem;
    margin-bottom: 1rem;
    font-size: .8rem;
    color: var(--cqip-muted);
}

.cqip-single__meta-row {
    display: flex;
    gap: .4rem;
    align-items: baseline;
    flex-wrap: wrap;
}

.cqip-single__meta-label {
    min-width: 70px;
    color: var(--cqip-muted);
}

.cqip-single__meta-value {
    color: var(--cqip-text);
    font-weight: 500;
}

.cqip-single__meta-value a {
    color: var(--cqip-primary);
    text-decoration: none;
}

.cqip-single__meta-value a:hover {
    text-decoration: underline;
}

.cqip-single__meta-value strong {
    color: var(--cqip-primary);
}

/* Stars inline */
.cqip-single__stars-inline {
    display: flex;
    align-items: center;
    gap: .2rem;
    margin-bottom: .75rem;
}

.cqip-single__stars-label {
    font-size: .8rem;
    color: var(--cqip-muted);
    margin-left: .25rem;
}

/* Price improvements */
.cqip-single__price {
    margin-bottom: 1rem;
}

.cqip-single__price-row {
    display: flex;
    align-items: baseline;
    gap: .75rem;
    flex-wrap: wrap;
}

.cqip-single__price-saving {
    display: inline-block;
    margin-top: .35rem;
    font-size: .8rem;
    font-weight: 600;
    color: var(--cqip-sale);
    background: var(--cqip-error-bg);
    padding: .2rem .6rem;
    border-radius: 4px;
}

/* Availability row */
.cqip-single__availability-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .75rem;
    margin-bottom: 1.25rem;
    font-size: .85rem;
}

.cqip-single__colour-tag {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    color: var(--cqip-text);
}

.cqip-single__colour-swatch {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 1px solid rgba(0,0,0,.15);
    display: inline-block;
    flex-shrink: 0;
}

.cqip-single__variants-note {
    color: var(--cqip-muted);
    font-size: .8rem;
}

/* CTA — large, dominant */
.cqip-btn--cta {
    width: 100%;
    justify-content: center;
    padding: 1rem 1.5rem;
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: .02em;
    border-radius: 4px;
    gap: .6rem;
}

.cqip-single__affiliate-note {
    text-align: center;
    font-size: .72rem;
    color: var(--cqip-muted);
    margin: .4rem 0 0;
}

/* Delivery inline list */
.cqip-single__delivery-inline {
    list-style: none;
    margin: 0;
    padding: .75rem 0 0;
    display: flex;
    flex-direction: column;
    gap: .4rem;
    border-top: 1px solid var(--cqip-card-border);
}

.cqip-single__delivery-inline li {
    display: flex;
    align-items: center;
    gap: .45rem;
    font-size: .82rem;
    color: var(--cqip-muted);
}

.cqip-single__delivery-inline svg {
    flex-shrink: 0;
    color: var(--cqip-primary);
}

/* Thumbnail strip */
.cqip-single__thumbs {
    display: flex;
    gap: .5rem;
    margin-top: .75rem;
    flex-wrap: wrap;
}

.cqip-single__thumb {
    width: 68px;
    border: 1px solid var(--cqip-card-border);
    border-radius: 4px;
    overflow: hidden;
    padding: 0;
    background: #f9fafb;
    cursor: pointer;
    transition: border-color .15s;
    flex-shrink: 0;
}

.cqip-single__thumb img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: contain;
    padding: 2px;
    box-sizing: border-box;
}

.cqip-single__thumb--active,
.cqip-single__thumb:hover {
    border-color: var(--cqip-primary);
}

/* Tabs */
.cqip-single__tabs {
    border-top: 1px solid var(--cqip-card-border);
    margin-top: 2.5rem;
    padding-top: 0;
}

.cqip-single__tab-nav {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--cqip-card-border);
    margin-bottom: 0;
}

.cqip-single__tab-btn {
    background: none;
    border: none;
    border-bottom: 1px solid transparent;
    margin-bottom: -2px;
    padding: .85rem 1.25rem;
    font-size: .875rem;
    font-weight: 600;
    color: var(--cqip-muted);
    cursor: pointer;
    transition: color .15s, border-color .15s;
}

.cqip-single__tab-btn:hover {
    color: var(--cqip-text);
}

.cqip-single__tab-btn--active {
    color: var(--cqip-text);
    border-bottom-color: var(--cqip-primary);
}

.cqip-single__tab-panel {
    padding: 1.5rem 0;
}

.cqip-single__tab-panel--hidden {
    display: none;
}

/* Additional info table */
.cqip-single__info-table {
    border-collapse: collapse;
    width: 100%;
    max-width: 500px;
    font-size: .875rem;
}

.cqip-single__info-table th,
.cqip-single__info-table td {
    padding: .6rem .75rem;
    text-align: left;
    border-bottom: 1px solid var(--cqip-card-border);
}

.cqip-single__info-table th {
    width: 140px;
    color: var(--cqip-muted);
    font-weight: 600;
    background: var(--cqip-filter-bg);
}

/* ==========================================================================
   Taxonomy Archive (category, tag, brand)
   ========================================================================== */

.cqip-taxonomy {
    max-width: 1400px;
    margin: 0 auto;
    padding: 1.5rem var(--cqip-gap);
    font-family: var(--cqip-font);
}

.cqip-taxonomy__header {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    margin-bottom: 1.5rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid var(--cqip-card-border);
}

.cqip-taxonomy__hero-img {
    width: 80px;
    height: 80px;
    object-fit: cover;
    border-radius: 50%;
    flex-shrink: 0;
}

.cqip-taxonomy__title {
    font-size: 1.75rem;
    font-weight: 800;
    margin: 0 0 .25rem;
    color: var(--cqip-text);
}

.cqip-taxonomy__count {
    font-size: .9rem;
    color: var(--cqip-muted);
    margin: 0;
}

.cqip-taxonomy__description {
    max-width: 740px;
    font-size: .9375rem;
    line-height: 1.7;
    color: #374151;
    margin-bottom: 1.5rem;
}

.cqip-taxonomy__description p {
    margin: 0 0 .75em;
}

/* SEO footer description (hidden from normal view, visible to crawlers) */
.cqip-taxonomy__seo-footer {
    display: none;
}

/* ==========================================================================
   Related Products
   ========================================================================== */

.cqip-single__related {
    margin-top: 3rem;
    padding-top: 2rem;
    border-top: 1px solid var(--cqip-card-border);
}

.cqip-single__related-title {
    font-size: 1.1rem;
    font-weight: 700;
    margin: 0 0 1.25rem;
    color: var(--cqip-text);
}

.cqip-single__related-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
}

.cqip-related-card {
    display: block;
    text-decoration: none;
    color: var(--cqip-text);
    border: 1px solid var(--cqip-card-border);
    border-radius: var(--cqip-card-radius);
    overflow: hidden;
    transition: box-shadow .15s, transform .15s;
    background: #fff;
}

.cqip-related-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,.08);
    transform: translateY(-1px);
}

.cqip-related-card__img-wrap {
    overflow: hidden;
    background: #f9fafb;
}

.cqip-related-card__img-wrap img {
    width: 100%;
    height: auto;
    display: block;
    transition: transform .2s;
    padding: .25rem;
    box-sizing: border-box;
}

.cqip-related-card:hover .cqip-related-card__img-wrap img {
    transform: scale(1.04);
}

.cqip-related-card__img-placeholder {
    width: 100%;
    height: 100%;
    background: #f3f4f6;
}

.cqip-related-card__info {
    padding: .75rem;
}

.cqip-related-card__brand {
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--cqip-primary);
    margin: 0 0 .25rem;
}

.cqip-related-card__name {
    font-size: .82rem;
    line-height: 1.3;
    margin: 0 0 .35rem;
    color: var(--cqip-text);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.cqip-related-card__price {
    font-size: .875rem;
    font-weight: 700;
    color: var(--cqip-text);
    margin: 0;
}

/* ---- Page container ------------------------------------------------------- */
.cqip-page-container {
    max-width: 1400px;
    margin: 0 auto;
    padding: 1.5rem 1.25rem;
}

.cqip-page-container .cqip-taxonomy {
    max-width: none;
    padding: 0;
}

/* ==========================================================================
   RESPONSIVE SYSTEM
   ≥1280px     : 4-col grid, sidebar always visible
   1024–1279px : 3-col grid, sidebar visible
   768–1023px  : 2-col grid, sidebar visible (tablet)
   480–767px   : 2-col grid, sidebar becomes full-screen drawer
   ≤479px      : 1-col or horizontal card, sidebar drawer
   ========================================================================== */

/* ---- 1280px: 4→3 columns ------------------------------------------------- */
@media (max-width: 1280px) {
    .cqip-grid--grid.cqip-grid--cols-4 {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* ---- 1023px: any multi-col → 2 columns ----------------------------------- */
@media (max-width: 1023px) {
    .cqip-grid--grid.cqip-grid--cols-3,
    .cqip-grid--grid.cqip-grid--cols-4 {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ---- 900px: single product stacks --------------------------------------- */
@media (max-width: 900px) {
    .cqip-single .cqip-single__layout {
        grid-template-columns: 1fr !important;
        gap: 1.5rem;
    }

    .cqip-single .cqip-single__images {
        position: static;
        max-width: 480px;
        margin: 0 auto;
    }

    .cqip-single__name {
        font-size: 1.3rem;
    }

    .cqip-single__related-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .cqip-single__gallery {
        grid-template-columns: repeat(4, 1fr);
    }
}

/* ---- 767px: sidebar becomes drawer, phone landscape ---------------------- */
@media (max-width: 767px) {
    .cqip-catalogue {
        flex-direction: column !important;
        gap: 0;
    }

    /* Drawer */
    .cqip-filters {
        position: fixed !important;
        top: 0;
        left: 0;
        width: min(85vw, 320px) !important;
        height: 100% !important;
        z-index: 9999;
        border-radius: 0;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        transform: translateX(-110%);
        transition: transform .25s ease;
        box-shadow: none;
    }

    .cqip-catalogue--filters-hidden .cqip-filters {
        display: block; /* override desktop hidden state */
        transform: translateX(-110%);
    }

    .cqip-filters--open {
        transform: translateX(0) !important;
        box-shadow: 6px 0 24px rgba(0,0,0,.25);
    }

    /* Scrim behind drawer — clicking it closes the panel */
    .cqip-filters--open::after {
        content: '';
        position: fixed;
        inset: 0;
        background: rgba(0,0,0,.45);
        z-index: -1;
    }

    .cqip-filters__close {
        display: block !important;
    }

    /* Grid */
    .cqip-grid--grid {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: .75rem;
    }

    /* Sort bar */
    .cqip-sort-bar {
        flex-wrap: wrap;
        gap: .5rem;
        padding: .75rem 0;
    }

    .cqip-sort-bar__left {
        flex: 1 1 auto;
    }

    /* Reduce padding */
    .cqip-single,
    .cqip-taxonomy {
        padding: 1rem .75rem;
    }

    .cqip-pagination-wrap {
        gap: .25rem;
    }

    /* Breadcrumb — allow truncation */
    .cqip-breadcrumb__item {
        max-width: 140px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .cqip-breadcrumb__item--current {
        max-width: 180px;
    }
}

/* ---- 479px: phone portrait ----------------------------------------------- */
@media (max-width: 479px) {
    /* Single column, normal vertical cards */
    .cqip-grid--grid {
        grid-template-columns: 1fr !important;
        gap: .6rem;
    }

    /* Reset any horizontal card overrides */
    .cqip-card {
        flex-direction: column !important;
    }

    .cqip-card__image-wrap {
        width: 100% !important;
    }

    /* Hide view toggle */
    .cqip-view-toggle {
        display: none;
    }

    /* Tighter single product */
    .cqip-single__name {
        font-size: 1.1rem;
    }

    .cqip-single__price-current {
        font-size: 1.35rem;
    }

    .cqip-btn--cta {
        font-size: .9rem;
        padding: .8rem 1rem;
    }

    /* Related products: 2 col */
    .cqip-single__related-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: .5rem;
    }

    .cqip-related-card__info {
        padding: .5rem;
    }

    .cqip-related-card__name {
        font-size: .75rem;
    }

    .cqip-related-card__price {
        font-size: .8rem;
    }

    /* Taxonomy */
    .cqip-taxonomy__header {
        flex-direction: column;
        align-items: flex-start;
        gap: .75rem;
    }

    .cqip-taxonomy__title {
        font-size: 1.25rem;
    }
}

/* ---- TI Wishlist integration ---------------------------------------------- */
.cqip-card__footer {
    padding: 0 1rem 0;
}

.cqip-card__wishlist {
    padding: .4rem 1rem .75rem;
    text-align: center;
    border-top: 1px solid var(--cqip-card-border);
    margin-top: .5rem;
}

.cqip-card__wishlist .tinv-wraper {
    display: block;
}

.cqip-card__wishlist .tinvwl_add_to_wishlist_button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--cqip-muted);
    font-size: .8rem;
    padding: .25rem;
    transition: color .15s;
    width: 100%;
}

.cqip-card__wishlist .tinvwl_add_to_wishlist_button:hover,
.cqip-card__wishlist .tinvwl_add_to_wishlist_button.tinvwl-product-in-list {
    color: var(--cqip-wishlist-active);
}

/* Single product wishlist button */
.cqip-single__cta .tinv-wraper {
    margin: .75rem 0;
}

.cqip-single__cta .tinvwl_add_to_wishlist_button {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    color: var(--cqip-muted);
    font-size: .875rem;
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
    transition: color .15s;
}

.cqip-single__cta .tinvwl_add_to_wishlist_button:hover,
.cqip-single__cta .tinvwl_add_to_wishlist_button.tinvwl-product-in-list {
    color: var(--cqip-wishlist-active);
}
