/* Impluse shop (doc 107). Same rules as style.css: tokens only (--imp-*), logical properties, no important-flags, never redefines an admin variable. */
.imp-muted { color: var(--imp-ink-soft); font-size: .85rem; }
.imp-link { text-decoration: underline; text-underline-offset: 3px; font-size: .85rem; }
.imp-pills { display: flex; flex-wrap: wrap; gap: .5rem; }
.imp-pill { display: inline-flex; align-items: center; min-block-size: 40px; padding: .5rem 1.25rem; border: 1px solid var(--imp-line); border-radius: 999px; font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; background: var(--imp-white); color: var(--imp-ink); transition: background .2s, color .2s, border-color .2s; }
.imp-pill:hover { border-color: var(--imp-ink); }
.imp-pill.is-active, .imp-pill.active { background: var(--imp-ink); color: var(--imp-white); border-color: var(--imp-ink); }
.imp-btn--ghost { background: transparent; color: var(--imp-ink); }
.imp-alert { border: 1px solid var(--imp-danger); border-radius: var(--imp-radius-sm); padding: .75rem 1rem; margin-block-end: 1rem; color: var(--imp-danger); }
.imp-alert ul { margin: 0; padding: 0; list-style: none; }
.imp-empty { text-align: center; padding-block: 4rem; }
.imp-badge--digital { inset-block-start: auto; inset-block-end: .8rem; background: var(--imp-white); color: var(--imp-ink); }

.imp-shop { padding-block: 1.5rem 4rem; }
.imp-shop-head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem; margin-block-end: 1.5rem; }
.imp-shop-title { margin: 0; }
.imp-shop-layout { display: grid; grid-template-columns: 17rem minmax(0, 1fr); gap: clamp(1.5rem, 3vw, 3rem); align-items: start; }

.imp-filters { display: grid; gap: 1.5rem; }
.imp-filters-head, .imp-filters-scrim { display: none; }
.imp-filter-search { position: relative; }
.imp-filter-search input { inline-size: 100%; border-radius: 999px; padding-inline-end: 2.5rem; }
.imp-filter-search i { position: absolute; inset-block-start: 50%; inset-inline-end: 1rem; translate: 0 -50%; color: var(--imp-ink-soft); pointer-events: none; }
.imp-filter-group { border-block-start: 1px solid var(--imp-line); padding-block-start: 1.25rem; }
.imp-filter-title { font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; margin: 0 0 .9rem; }
.imp-filter-list, .imp-chips, .imp-swatches, .imp-rating-list { list-style: none; margin: 0; padding: 0; }
.imp-filter-list li a { display: flex; justify-content: space-between; gap: .75rem; padding: .4rem .75rem; margin-inline: -.75rem; border-radius: var(--imp-radius-sm); font-size: .9rem; color: var(--imp-ink-soft); }
.imp-filter-list li a:hover { background: var(--imp-surface); color: var(--imp-ink); }
.imp-filter-list li.active a, .imp-filter-list li a.active { background: var(--imp-ink); color: var(--imp-white); }
.imp-count { opacity: .6; font-size: .8rem; }
.imp-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.imp-chips li a { display: inline-flex; align-items: center; min-block-size: 36px; padding: .3rem .9rem; border: 1px solid var(--imp-line); border-radius: 999px; font-size: .78rem; color: var(--imp-ink); text-transform: capitalize; }
.imp-chips li.active a, .imp-chips li a.active, .imp-chips li.show-value a { background: var(--imp-ink); color: var(--imp-white); border-color: var(--imp-ink); }
.imp-swatches { display: flex; flex-wrap: wrap; gap: .6rem; }
.imp-swatches li a { display: block; inline-size: 2rem; block-size: 2rem; border-radius: 50%; border: 1px solid var(--imp-line); }
.imp-swatches li.active a { outline: 2px solid var(--imp-ink); outline-offset: 2px; }
.imp-rating-list li { margin-block-end: .25rem; }
.imp-rating-list li a { display: inline-flex; gap: .1rem; padding: .25rem .5rem; margin-inline-start: -.5rem; border-radius: 999px; color: var(--imp-ink); }
.imp-rating-list li.active a { background: var(--imp-surface); outline: 1px solid var(--imp-ink); }
.imp-price-values { display: flex; justify-content: space-between; margin-block-start: .9rem; font-size: .85rem; }
.imp-filters .noUi-target { border: 0; box-shadow: none; background: var(--imp-line); block-size: 4px; margin-inline: .5rem; }
.imp-filters .noUi-connect { background: var(--imp-ink); }
.imp-filters .noUi-handle { inline-size: 18px; block-size: 18px; inset-block-start: -7px; border-radius: 50%; background: var(--imp-ink); border: 2px solid var(--imp-white); box-shadow: 0 0 0 1px var(--imp-ink); cursor: grab; }
.imp-filters .noUi-handle::before, .imp-filters .noUi-handle::after { display: none; }

.imp-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1rem; margin-block-end: 1.25rem; }
.imp-filters-open { display: none; }
.imp-sort .nice-select { border: 1px solid var(--imp-line); border-radius: 999px; block-size: 44px; line-height: 42px; padding-inline: 1.25rem 2.5rem; font-size: .85rem; float: none; }
.imp-sort .nice-select .list { border-radius: var(--imp-radius-sm); }
.imp-selected { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-block-end: 1.25rem; }
.imp-selected .selected-flex-list { align-items: center; }

.imp-shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); gap: 2rem 1rem; }
.imp-shop-grid .imp-card-media { block-size: auto; aspect-ratio: 322 / 374; }
.imp-pagination { margin-block-start: 3rem; display: flex; justify-content: center; }
.imp-pagination .pagination-list { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.imp-pagination .page-number { display: grid; place-items: center; inline-size: 2.6rem; block-size: 2.6rem; border: 1px solid var(--imp-line); border-radius: 50%; font-size: .85rem; }
.imp-pagination .page-number.current, .imp-pagination .page-number:hover { background: var(--imp-ink); color: var(--imp-white); border-color: var(--imp-ink); }

@media (max-width: 991px) {
    .imp-shop-layout { grid-template-columns: minmax(0, 1fr); }
    .imp-filters-open { display: inline-flex; }
    .imp-filters { position: fixed; inset-block: 0; inset-inline-start: 0; inline-size: min(22rem, 88vw); background: var(--imp-white); z-index: 1100; overflow-y: auto; padding: 1.25rem; translate: -100% 0; transition: translate .3s ease; align-content: start; }
    [dir="rtl"] .imp-filters { translate: 100% 0; }
    .imp-filters-head { display: flex; align-items: center; justify-content: space-between; }
    .imp-filters-scrim { display: block; position: fixed; inset: 0; background: rgba(0, 0, 0, .45); z-index: 1090; opacity: 0; visibility: hidden; transition: opacity .3s; }
    .imp-filters-open-state .imp-filters { translate: 0 0; }
    .imp-filters-open-state .imp-filters-scrim { opacity: 1; visibility: visible; }
}
@media (prefers-reduced-motion: reduce) { .imp-filters, .imp-filters-scrim { transition: none; } }

.imp-shop-cats { margin-block-end: 1.5rem; list-style: none; padding: 0; cursor: pointer; }
.imp-card-author { margin: 0 0 .15rem; }

/* shop footer promo strip (the platform widget uses Tailwind grid classes this theme does not load) */
.impluse section.py-8 { padding-block: 3rem; }
.impluse section.py-8 > .container { max-inline-size: var(--imp-max); margin-inline: auto; padding-inline: var(--imp-gutter); }
.impluse div:has(> .single-promo) { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 1rem; }
.impluse .single-promo { text-align: center; padding: 1.75rem 1rem; border: 1px solid var(--imp-line); border-radius: var(--imp-radius); }
.impluse .single-promo-icon { font-size: 2rem; margin-block-end: .5rem; }
.impluse .single-promo-contents-title { font-size: 1rem; margin: 0; }
.impluse .single-promo-contents-para { color: var(--imp-ink-soft); font-size: .85rem; margin: .35rem 0 0; }

/* quick-view modal */
.impluse .shop-detail-cart-content, .impluse #product-modal { font-family: var(--imp-font); }
.impluse #product-modal .details-title { font-weight: 300; letter-spacing: -.02em; }

/* ── quick view dialog (doc 109) ── */
.imp-quick { position: absolute; inset-inline: .8rem; inset-block-end: .8rem; display: inline-flex; align-items: center; justify-content: center; gap: .4rem; min-block-size: 38px; border: 0; border-radius: 999px; background: rgba(255, 255, 255, .92); color: var(--imp-ink); font: 600 .7rem/1 var(--imp-font); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; opacity: 0; translate: 0 6px; transition: opacity .2s, translate .2s; }
.imp-card:hover .imp-quick, .imp-quick:focus-visible { opacity: 1; translate: 0 0; }
@media (hover: none) { .imp-quick { opacity: 1; translate: 0 0; inline-size: auto; inset-inline-start: auto; } }
.imp-dialog { border: 0; border-radius: var(--imp-radius); padding: 0; inline-size: min(56rem, 94vw); max-block-size: 90vh; overflow: auto; color: var(--imp-ink); background: var(--imp-white); }
.imp-dialog::backdrop { background: rgba(0, 0, 0, .5); }
.imp-dialog-close { position: absolute; inset-block-start: .8rem; inset-inline-end: .8rem; z-index: 2; inline-size: 2.5rem; block-size: 2.5rem; border: 1px solid var(--imp-line); border-radius: 50%; background: var(--imp-white); cursor: pointer; font-size: 1.1rem; }
.imp-dialog-body.is-loading { padding: 4rem; text-align: center; color: var(--imp-ink-soft); }
.imp-qv { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.imp-qv-media { position: relative; background: var(--imp-surface); min-block-size: 22rem; }
.imp-qv-media img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; }
.imp-qv-info { display: grid; gap: 1rem; align-content: center; padding: clamp(1.25rem, 3vw, 2.5rem); }
.imp-qv-title { margin: 0; font-weight: 300; letter-spacing: -.02em; font-size: clamp(1.5rem, 2.4vw, 2rem); }
.imp-qv-price { margin: 0; display: flex; gap: .6rem; align-items: baseline; font-size: 1.4rem; font-weight: 500; }
.imp-qv-summary { margin: 0; line-height: 1.6; }
@media (max-width: 640px) { .imp-qv { grid-template-columns: minmax(0, 1fr); } .imp-qv-media { min-block-size: 16rem; max-block-size: 40vh; } }
@media (prefers-reduced-motion: reduce) { .imp-quick { transition: none; } }

/* round-2 fixes (doc 109) */
.impluse .imp-qv-price, .impluse .imp-qv-price span { color: var(--imp-ink); }
.impluse .imp-qv-price s { color: var(--imp-ink-soft); font-size: 1rem; }
.impluse .imp-share a, .impluse .imp-share i, .impluse .social_share_wrapper_item a { color: var(--imp-ink); }
.impluse .imp-share li { list-style: none; }
.impluse .imp-filter-list .item::before, .impluse .imp-filter-list .item::after, .impluse .imp-filter-list li::before, .impluse .imp-filter-list li::after { display: none; }
.impluse .imp-filter-list li.item.active a, .impluse .imp-filter-list .item a.active { background: var(--imp-ink); color: var(--imp-white); }
