/* Catalog-only layout; shared header, footer and home card sizing stay in app.css. */
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

.catalog-filters__body {
    scrollbar-width: thin;
    scrollbar-color: rgb(165 31 45 / 35%) transparent;
}
.catalog-filters__body::-webkit-scrollbar { width: 6px; }
.catalog-filters__body::-webkit-scrollbar-track { background: transparent; }
.catalog-filters__body::-webkit-scrollbar-thumb {
    border-radius: 999px;
    background: rgb(165 31 45 / 35%);
}
.catalog-filters__body::-webkit-scrollbar-thumb:hover { background: rgb(165 31 45 / 65%); }
.catalog-filters__body::-webkit-scrollbar-corner { background: transparent; }
.catalog { padding-top: 46px; padding-bottom: 80px; }
.catalog-breadcrumbs { display: flex; gap: 10px; align-items: center; margin: 0 12px 14px; font-size: 14px; line-height: 20px; }
.catalog-breadcrumbs a { text-decoration: none; }
.catalog-breadcrumbs a:hover { text-decoration: underline; }
.catalog h1 { margin: 0 12px 42px; font-size: 40px; font-weight: 700; line-height: 1.3; letter-spacing: -.035em; }
.catalog-layout { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 24px; align-items: start; }
.catalog-sidebar { position: sticky; top: 122px; z-index: 5; border: 1px solid var(--border); border-radius: 16px; background: var(--surface); }
.catalog-filters { padding: 20px 19px; }
.catalog-filter-group { min-width: 0; margin: 0 0 24px; padding: 0; border: 0; }
.catalog-filter-group + .catalog-filter-group { padding-top: 24px; border-top: 1px solid var(--border); }
.catalog-filter-group legend { float: left; width: 100%; margin-bottom: 10px; padding: 0; font-size: 18px; font-weight: 600; line-height: 24px; }
.catalog-filter-group legend + * { clear: both; }
.catalog-option { display: flex; align-items: center; gap: 12px; min-height: 30px; font-size: 16px; line-height: 22px; cursor: pointer; }
.catalog-option input, .catalog-sort-option input { flex-shrink: 0; width: 18px; height: 18px; margin: 0; accent-color: var(--red); cursor: pointer; }
.catalog-option__count { margin-left: auto; font-size: 14px; }
.catalog-more { padding: 8px 0 0; border: 0; background: none; font-size: 14px; cursor: pointer; }
.catalog-filter-note { color: var(--muted); font-size: 14px; }
.catalog-price { margin-bottom: 24px; }
.catalog-price legend { font-size: 16px; }
.catalog-price__inputs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.catalog-price__inputs input { width: 100%; height: 40px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 10px; background: var(--page); font-size: 14px; color: var(--text); appearance: textfield; -moz-appearance: textfield; }
.catalog-price__inputs input::-webkit-inner-spin-button, .catalog-price__inputs input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.catalog-price__range { position: relative; height: 26px; margin-top: 6px; --range-start: 0%; --range-end: 100%; }
.catalog-price__track { position: absolute; top: 11px; left: 8px; right: 8px; height: 4px; background: linear-gradient(to right, #d8d2c9 var(--range-start), var(--red) var(--range-start), var(--red) var(--range-end), #d8d2c9 var(--range-end)); }
.catalog-price__range input { position: absolute; inset: 0; width: 100%; height: 26px; margin: 0; padding: 0; background: transparent; appearance: none; -webkit-appearance: none; pointer-events: none; }
.catalog-price__range input:focus-visible { outline-offset: 2px; }
.catalog-price__range input::-webkit-slider-runnable-track { height: 4px; background: transparent; }
.catalog-price__range input::-moz-range-track { height: 4px; background: transparent; }
.catalog-price__range input::-webkit-slider-thumb { width: 16px; height: 16px; margin-top: -6px; border: 0; border-radius: 50%; background: var(--red); appearance: none; -webkit-appearance: none; pointer-events: auto; cursor: ew-resize; }
.catalog-price__range input::-moz-range-thumb { width: 16px; height: 16px; border: 0; border-radius: 50%; background: var(--red); pointer-events: auto; cursor: ew-resize; }
.catalog-filters__actions { display: flex; flex-direction: column; align-items: stretch; gap: 10px; }
.catalog-apply { min-height: 40px; padding: 9px 8px; background: var(--green); font-size: 16px; }
.catalog-apply:not(:disabled):hover { background: #123c2f; }
.catalog-apply__mobile { display: none; }
.catalog-reset { display: block; padding: 2px 8px; color: #646464; font-size: 14px; text-decoration: none; text-align: center; }
.catalog-reset:hover { text-decoration: underline; }
.catalog-results { min-width: 0; scroll-margin-top: 116px; }
.catalog-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; margin-bottom: 8px; }
.catalog-total { margin: 0 16px; font-size: 16px; line-height: 24px; }
.catalog-sort { position: relative; display: flex; min-width: 0; }
.catalog-sort-select { position: relative; width: 224px; max-width: 100%; }
.catalog-sort-trigger { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; height: 40px; padding: 0 14px 0 16px; border: 1px solid var(--border); border-radius: 10px; background: var(--page); color: var(--text); font: inherit; font-size: 16px; line-height: 22px; text-align: left; cursor: pointer; transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease; }
.catalog-sort-trigger:hover { border-color: #cfc6bc; background: #fbfaf7; }
.catalog-sort-trigger:focus { outline: none; }
.catalog-sort-trigger:focus-visible { border-color: rgb(165 31 45 / 55%); box-shadow: 0 0 0 3px rgb(165 31 45 / 10%); }
.catalog-sort-trigger[aria-expanded='true'] { border-color: rgb(165 31 45 / 50%); background: var(--surface); box-shadow: 0 0 0 3px rgb(165 31 45 / 8%); }
.catalog-sort-trigger__chevron { flex: 0 0 auto; width: 8px; height: 8px; margin-top: -4px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform .16s ease, margin .16s ease; }
.catalog-sort-trigger[aria-expanded='true'] .catalog-sort-trigger__chevron { margin-top: 4px; transform: rotate(225deg); }
.catalog-sort-menu { position: absolute; z-index: 40; top: calc(100% + 6px); right: 0; width: 100%; padding: 6px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); box-shadow: 0 12px 30px rgb(25 25 25 / 12%); }
.catalog-sort-menu[hidden] { display: none; }
.catalog-sort-menu__option { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 38px; padding: 8px 10px; border: 0; border-radius: 8px; background: transparent; color: var(--text); font: inherit; font-size: 15px; line-height: 20px; text-align: left; cursor: pointer; }
.catalog-sort-menu__option:hover, .catalog-sort-menu__option:focus-visible { outline: none; background: var(--page); }
.catalog-sort-menu__option.is-selected { background: rgb(165 31 45 / 8%); color: var(--red); font-weight: 500; }
.catalog-sort-menu__check { visibility: hidden; flex: 0 0 auto; color: var(--red); font-size: 15px; line-height: 1; }
.catalog-sort-menu__option.is-selected .catalog-sort-menu__check { visibility: visible; }
.catalog-sort-submit { display: none; }
.catalog-mobile-controls { display: none; }
.catalog-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 292px)); justify-content: space-between; align-items: start; gap: 24px; }
.catalog-grid .gift-card__title { overflow-wrap: anywhere; }
.catalog-grid .gift-card__title a::after { position: absolute; inset: 0; content: ''; border-radius: 16px; }
.catalog-grid .gift-card__meta { margin-top: 0; }
.catalog-grid .gift-card__button { position: relative; z-index: 1; }
.catalog-pagination { display: flex; justify-content: center; align-items: center; gap: 8px; margin-top: 56px; }
.catalog-page { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 40px; height: 40px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text); font-size: 16px; line-height: 20px; text-decoration: none; }
.catalog-page.is-current { border-color: var(--red); background: var(--red); color: var(--page); }
.catalog-page--arrow, .catalog-page--ellipsis { border-color: transparent; background: transparent; }
.catalog-page--arrow { font-size: 30px; }
.catalog-page[aria-disabled='true'] { color: #c5c5c3; }
.catalog-page[href]:hover { border-color: var(--red); }
.catalog-empty { min-height: 220px; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; }
.catalog-empty p { margin: 0 0 16px; color: var(--text); }
.catalog-dialog { position: fixed; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: var(--surface); color: var(--text); overscroll-behavior: contain; }
.catalog-dialog::backdrop { background: rgb(0 0 0 / 52%); }
.catalog-dialog__heading { display: flex; flex: 0 0 auto; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--border); }
.catalog-dialog__heading h2 { margin: 0; font-size: 20px; line-height: 28px; font-weight: 600; }
.catalog-filter-dialog { inset: 0 0 0 auto; width: min(340px, calc(100% - 32px)); height: 100vh; height: 100dvh; overflow: hidden; }
.catalog-filter-dialog[open] { display: flex; flex-direction: column; }
.catalog-filter-slot { display: flex; flex: 1; min-height: 0; }
.catalog-filter-slot .catalog-filters { display: flex; flex-direction: column; width: 100%; min-height: 0; padding: 0; }
.catalog-filter-slot .catalog-filters__body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 20px; }
.catalog-filter-slot .catalog-option { min-height: 36px; }
.catalog-filter-slot .catalog-filters__actions { flex-shrink: 0; padding: 12px 20px max(16px, env(safe-area-inset-bottom)); border-top: 1px solid var(--border); background: var(--surface); }
.catalog-filter-slot .catalog-reset { order: -1; }
.catalog-filter-slot .catalog-apply { background: var(--red); min-height: 44px; }
.catalog-filter-slot .catalog-apply:not(:disabled):hover { background: #8b1925; }
.catalog-filter-slot .catalog-apply__desktop { display: none; }
.catalog-filter-slot .catalog-apply__mobile { display: inline; }
.catalog-sort-dialog { inset: auto 0 0; width: 100%; max-height: 85vh; max-height: 85dvh; border-radius: 20px 20px 0 0; overflow-y: auto; padding-bottom: max(16px, env(safe-area-inset-bottom)); }
.catalog-sort-option { display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 12px 20px; cursor: pointer; }
.catalog-sort-option:hover { background: var(--page); }
@media (min-width: 1024px) {
    .catalog-sidebar {
        max-height: calc(100vh - 146px);
        max-height: calc(100dvh - 146px);
        overflow: hidden;
    }
    .catalog-filters {
        display: flex;
        flex-direction: column;
        max-height: inherit;
        padding: 0;
    }
    .catalog-filters__body {
        min-height: 0;
        overflow-y: auto;
        overscroll-behavior: contain;
        scrollbar-gutter: stable;
        padding: 20px 19px 0;
    }
    .catalog-filters__actions {
        flex-shrink: 0;
        padding: 0 19px 20px;
        background: var(--surface);
    }
}
@media (min-width: 1024px) and (max-width: 1199px) {
    .catalog-layout { grid-template-columns: 240px minmax(0, 1fr); }
    .catalog-grid { grid-template-columns: repeat(2, minmax(0, 292px)); }
}
@media (max-width: 1023px) {
    .catalog { padding-top: 26px; padding-bottom: 48px; }
    .catalog-breadcrumbs { margin: 0 0 12px; }
    .catalog h1 { margin: 0 0 16px; font-size: 32px; line-height: 40px; letter-spacing: -.025em; }
    .catalog-layout { display: flex; flex-direction: column; gap: 24px; }
    .catalog-sidebar { position: static; width: 100%; }
    .catalog-results { width: 100%; scroll-margin-top: 90px; }
    .catalog-toolbar { flex-direction: column; align-items: stretch; gap: 16px; margin-bottom: 20px; }
    .catalog-total { margin: 0; font-size: 14px; line-height: 20px; }
    .catalog-sort-select { width: 100%; }
    .catalog-mobile-controls { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
    .catalog-control { display: flex; align-items: center; gap: 10px; height: 44px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); text-align: left; font-size: 14px; line-height: 20px; }
    .catalog-filter-icon { width: 18px; height: 12px; border-block: 2px solid var(--red); background: linear-gradient(var(--red), var(--red)) center / 100% 2px no-repeat; }
    .catalog-filter-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 4px; margin-left: auto; border: 1px solid #ce1c2e; border-radius: 20px; font-size: 12px; }
    .catalog-sort-icon { font-size: 20px; }
    .catalog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
    .catalog-grid .gift-card { flex: initial; min-height: 0; padding: 9px; border-radius: 10px; box-shadow: none; }
    .catalog-grid .gift-card__image { border-radius: 0; }
    .catalog-grid .gift-card__title { margin: 12px 0 4px; min-height: 40px; font-size: 15px; line-height: 20px; font-weight: 600; }
    .catalog-grid .gift-card__meta { margin: 0 0 12px; font-size: 12px; line-height: 16px; }
    .catalog-grid .gift-card__capacity { margin: -6px 0 10px; font-size: 12px; line-height: 16px; }
    .catalog-grid .gift-card__price { font-size: 18px; line-height: 24px; }
    .catalog-grid .gift-card__bottom { flex-direction: column; align-items: stretch; gap: 8px; }
    .catalog-grid .gift-card__button { width: 100%; min-height: 40px; padding: 10px 4px; font-size: 14px; line-height: 20px; }
    .catalog-grid .gift-card__badge { top: 17px; left: 17px; padding: 2px 8px; font-size: 12px; line-height: 16px; border-radius: 3px; }
    .catalog-pagination { gap: 4px; margin-top: 48px; }
    .catalog-page { flex-basis: 36px; height: 36px; font-size: 14px; }
    .catalog-page--arrow { font-size: 28px; }
    .catalog-empty { padding: 24px 16px; }
}
@media (max-width: 374px) {
    .catalog-page { flex-basis: 28px; height: 36px; }
    .catalog-pagination { gap: 3px; }
    .catalog h1 { font-size: 30px; line-height: 38px; }
}

/* The results anchor is a scroll target, not an interactive control. */
.catalog-results:focus, .catalog-results:focus-visible { outline: none; }
.catalog-facet-status { margin: 0 0 12px; color: var(--muted); font-size: 13px; }
.catalog-filters[aria-busy='true'] .catalog-option__count { visibility: hidden; }

