/* Container width, rather than device labels, controls the number of cards. */
.ifpc-catalog { --ifpc-gap:16px; --ifpc-padding:16px; --ifpc-space:24px; --ifpc-image-width:38%; --ifpc-image-height:144px; container-type:inline-size; container-name:ifpc-layout; font-family:inherit; color:inherit; width:100%; margin-block:var(--ifpc-space); }
.ifpc-catalog *, .ifpc-catalog *::before, .ifpc-catalog *::after { box-sizing:border-box; }
.ifpc-catalog .ifpc-nav { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 var(--ifpc-space); }
.ifpc-catalog .ifpc-nav a { display:inline-flex; align-items:center; min-height:44px; padding:8px 14px; border:1px solid #ccd3ce; border-radius:4px; text-decoration:none; color:#214a35; background:#fff; font:inherit; line-height:1.4; }
.ifpc-catalog .ifpc-nav a[aria-current] { color:#fff; background:#214a35; border-color:#214a35; }
.ifpc-catalog .ifpc-filter { display:flex; flex-wrap:wrap; align-items:flex-end; gap:12px; margin:0 0 var(--ifpc-space); }
.ifpc-catalog .ifpc-filter > div { flex:1 1 220px; min-width:0; }
.ifpc-catalog label { display:block; font:inherit; font-weight:600; margin-bottom:6px; }
.ifpc-catalog input, .ifpc-catalog select, .ifpc-catalog button { font:inherit; line-height:1.4; border-radius:4px; min-height:44px; padding:10px 12px; }
.ifpc-catalog input, .ifpc-catalog select { width:100%; max-width:100%; border:1px solid #89968d; color:inherit; background:transparent; }
.ifpc-catalog button { border:1px solid #214a35; background:#214a35; color:#fff; cursor:pointer; }
.ifpc-catalog .ifpc-reset { display:inline-flex; align-items:center; min-height:44px; color:inherit; padding:8px; text-decoration:underline; }
.ifpc-catalog :is(a, button, input, select):focus-visible { outline:3px solid #b56700; outline-offset:3px; }
.ifpc-catalog .ifpc-count { font:inherit; font-size:.875em; margin:0 0 12px; }
.ifpc-catalog .ifpc-grid { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--ifpc-gap); }
.ifpc-catalog .ifpc-card { display:flex; align-items:flex-start; gap:12px; padding:var(--ifpc-padding); border:1px solid #d7ddd8; border-radius:6px; min-width:0; margin:0; background:transparent; }
.ifpc-catalog .ifpc-image { position:relative; flex:0 0 var(--ifpc-image-width); width:var(--ifpc-image-width); height:var(--ifpc-image-height); overflow:hidden; border-radius:3px; background:#f4f5f2; display:flex; align-items:center; justify-content:center; }
.ifpc-catalog .ifpc-image img.ifpc-photo { display:block; width:100%; height:100%; max-width:none; margin:0; padding:0; border:0; border-radius:0; }
.ifpc-catalog .ifpc-placeholder { color:#59645b; font-size:.75em; padding:8px; text-align:center; }
.ifpc-catalog .ifpc-copy { flex:1; min-width:0; overflow-wrap:anywhere; }
.ifpc-catalog .ifpc-title { font-family:inherit; font-size:1.05em; line-height:1.35; font-weight:650; letter-spacing:normal; text-transform:none; margin:0 0 8px; padding:0; color:inherit; }
.ifpc-catalog .ifpc-copy p { font-family:inherit; font-size:.85em; line-height:1.5; margin:0 0 8px; padding:0; color:inherit; }
.ifpc-catalog .ifpc-pack { font-weight:600; }
.ifpc-catalog .ifpc-pages { display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:16px; margin-top:var(--ifpc-space); }
.ifpc-catalog .ifpc-pages a { display:inline-flex; align-items:center; min-height:44px; color:inherit; text-decoration:underline; padding:8px; }
.ifpc-catalog .ifpc-message { padding:20px; border:1px solid #d7ddd8; font:inherit; }
@container (min-width:640px) { .ifpc-catalog .ifpc-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@container (min-width:960px) { .ifpc-catalog .ifpc-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@container (min-width:1320px) { .ifpc-catalog .ifpc-grid { grid-template-columns:repeat(4,minmax(0,1fr)); } }
/* Conservative fallback for older browsers without container queries. */
@supports not (container-type:inline-size) { .ifpc-catalog .ifpc-grid { grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); } }
/* Full image is separate from card crop/zoom settings. The link also works without JS. */
.ifpc-catalog .ifpc-image-link { display:block; width:100%; height:100%; cursor:zoom-in; }
.ifpc-catalog .ifpc-image-link:focus-visible { outline-offset:-4px; }
dialog.ifpc-lightbox { box-sizing:border-box; position:fixed; inset:0; width:min(960px,94vw); max-width:94vw; max-height:94vh; max-height:94dvh; margin:auto; padding:16px; border:0; border-radius:6px; background:#fff; color:#172b20; font-family:inherit; overflow:auto; }
dialog.ifpc-lightbox::backdrop { background:rgba(0,0,0,.8); }
dialog.ifpc-lightbox .ifpc-lightbox-close { display:block; margin:0 0 12px auto; min-height:44px; padding:8px 16px; border:1px solid #214a35; border-radius:4px; background:#214a35; color:#fff; font:inherit; cursor:pointer; }
dialog.ifpc-lightbox .ifpc-lightbox-close:focus-visible { outline:3px solid #b56700; outline-offset:3px; }
dialog.ifpc-lightbox .ifpc-lightbox-photo { display:block; width:100%; height:65vh; height:65dvh; max-height:900px; object-fit:contain; margin:0; padding:0; border:0; transform:none; }
dialog.ifpc-lightbox .ifpc-lightbox-caption, dialog.ifpc-lightbox .ifpc-lightbox-status { margin:12px 0 0; font:inherit; line-height:1.5; overflow-wrap:anywhere; }
dialog.ifpc-lightbox .ifpc-lightbox-status:empty { display:none; }

/* Left sidebar: search first, then categories; results have their own responsive width. */
.ifpc-catalog .ifpc-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:24px; align-items:start; }
.ifpc-catalog .ifpc-sidebar { min-width:0; padding:20px; border-radius:16px; background:#c9251d; color:#fff; }
.ifpc-catalog .ifpc-results { min-width:0; container-type:inline-size; }
.ifpc-catalog .ifpc-sidebar-title { font:inherit; font-weight:700; font-size:1.1em; color:#fff; margin:24px 0 12px; padding:0 0 16px; border-bottom:1px solid rgba(255,255,255,.5); }
.ifpc-catalog .ifpc-sidebar .ifpc-filter { display:flex; flex-direction:column; align-items:stretch; gap:12px; margin:0; }
.ifpc-catalog .ifpc-sidebar .ifpc-filter > div { flex:none; min-width:0; }
.ifpc-catalog .ifpc-sidebar input, .ifpc-catalog .ifpc-sidebar select { background:#fff; color:#222; border:1px solid #fff; }
.ifpc-catalog .ifpc-sidebar button { background:#fff; color:#a71e18; border:1px solid #fff; font-weight:600; }
.ifpc-catalog .ifpc-sidebar .ifpc-reset { color:#fff; align-self:flex-start; }
.ifpc-catalog .ifpc-nav { display:flex; flex-direction:column; gap:4px; margin:0; }
.ifpc-catalog .ifpc-nav a { display:flex; background:transparent; color:#fff; border:0; border-radius:4px; padding:12px 8px; overflow-wrap:anywhere; }
.ifpc-catalog .ifpc-nav a:hover, .ifpc-catalog .ifpc-nav a[aria-current] { background:rgba(0,0,0,.16); color:#fff; }
.ifpc-catalog .ifpc-nav a[aria-current] { font-weight:700; box-shadow:inset 3px 0 #fff; }
.ifpc-catalog .ifpc-sidebar :is(a,button,input,select):focus-visible { outline:3px solid #ffdc72; outline-offset:3px; }
@container ifpc-layout (min-width:900px) { .ifpc-catalog .ifpc-layout { grid-template-columns:minmax(0,var(--ifpc-left,25fr)) minmax(0,var(--ifpc-right,75fr)); } }

.ifpc-catalog .ifpc-badges { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 8px; }
.ifpc-catalog .ifpc-badge { display:inline-block; padding:4px 8px; border-radius:4px; font:inherit; font-size:.75em; line-height:1.4; font-weight:700; overflow-wrap:anywhere; }
.ifpc-catalog .ifpc-badge-new { background:#e2f3e5; color:#17582b; }
.ifpc-catalog .ifpc-badge-out_of_stock { background:#fee6e3; color:#9a2018; }

.ifpc-catalog .ifpc-badge-art { display:inline-flex; max-width:100%; align-items:center; }
.ifpc-catalog .ifpc-badge-art img.ifpc-badge-image { display:block; max-width:100%; height:auto; margin:0; padding:0; border:0; border-radius:0; object-fit:contain; }

.ifpc-catalog .ifpc-sort { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:8px; margin:0 0 16px; }
.ifpc-catalog .ifpc-sort label { margin:0; }
.ifpc-catalog .ifpc-sort select { width:auto; flex:0 1 220px; min-width:0; background:#fff; }
/* Appearance settings; user Custom CSS is emitted after this stylesheet. */
.ifpc-catalog .ifpc-sidebar { background:var(--ifpc-style-sidebar-bg); color:var(--ifpc-style-sidebar-text); border-radius:var(--ifpc-style-sidebar-radius); padding:var(--ifpc-style-sidebar-padding); font-size:var(--ifpc-style-sidebar-font); }
.ifpc-catalog .ifpc-sidebar label, .ifpc-catalog .ifpc-sidebar .ifpc-reset, .ifpc-catalog .ifpc-sidebar .ifpc-nav a { color:var(--ifpc-style-sidebar-text); }
.ifpc-catalog .ifpc-sidebar .ifpc-sidebar-title { color:var(--ifpc-style-sidebar-heading); font-size:var(--ifpc-style-heading-font); }
.ifpc-catalog .ifpc-sidebar .ifpc-nav { gap:var(--ifpc-style-category-gap); }
.ifpc-catalog .ifpc-sidebar .ifpc-nav a { padding-top:var(--ifpc-style-category-padding); padding-bottom:var(--ifpc-style-category-padding); }
.ifpc-catalog .ifpc-sidebar .ifpc-nav a:hover, .ifpc-catalog .ifpc-sidebar .ifpc-nav a[aria-current] { background:var(--ifpc-style-sidebar-active); color:var(--ifpc-style-sidebar-active-text); }
.ifpc-catalog .ifpc-sidebar .ifpc-nav a[aria-current] { box-shadow:inset 3px 0 var(--ifpc-style-sidebar-active-text); }
.ifpc-catalog .ifpc-sidebar input, .ifpc-catalog .ifpc-sidebar select, .ifpc-catalog .ifpc-sort select { background:var(--ifpc-style-input-bg); color:var(--ifpc-style-input-text); border:1px solid var(--ifpc-style-input-border); border-radius:var(--ifpc-style-input-radius); }
.ifpc-catalog .ifpc-sidebar .ifpc-filter button, .ifpc-catalog .ifpc-sort button { border-radius:var(--ifpc-style-button-radius); font-size:var(--ifpc-style-button-font); padding:var(--ifpc-style-button-padding-y) var(--ifpc-style-button-padding-x); }
.ifpc-catalog .ifpc-sidebar .ifpc-filter button { background:var(--ifpc-style-search-bg); color:var(--ifpc-style-search-text); border-color:var(--ifpc-style-search-bg); }
.ifpc-catalog .ifpc-sidebar .ifpc-filter button:hover { background:var(--ifpc-style-search-hover); color:var(--ifpc-style-search-hover-text); border-color:var(--ifpc-style-search-hover); }
.ifpc-catalog .ifpc-sort button { background:var(--ifpc-style-apply-bg); color:var(--ifpc-style-apply-text); border-color:var(--ifpc-style-apply-bg); }
.ifpc-catalog .ifpc-sort button:hover { background:var(--ifpc-style-apply-hover); color:var(--ifpc-style-apply-hover-text); border-color:var(--ifpc-style-apply-hover); }
.ifpc-catalog .ifpc-sort label { color:var(--ifpc-style-sort-text); }

.ifpc-catalog .ifpc-page-numbers { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.ifpc-catalog .ifpc-page-number { display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; padding:8px; border:1px solid currentColor; border-radius:6px; box-sizing:border-box; }
.ifpc-catalog .ifpc-page-number[aria-current="page"] { background:var(--ifpc-style-apply-bg,#214a35); color:var(--ifpc-style-apply-text,#fff); font-weight:700; }
.ifpc-catalog .ifpc-page-jump { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:8px; margin:0; }
.ifpc-catalog .ifpc-page-jump input[type="number"] { width:5.5em; min-height:44px; padding:8px; font:inherit; color:inherit; background:#fff; border:1px solid #ccd2d6; border-radius:6px; }
.ifpc-catalog .ifpc-page-jump button { min-height:44px; font:inherit; padding:8px 16px; border:1px solid transparent; border-radius:var(--ifpc-style-button-radius,6px); background:var(--ifpc-style-apply-bg,#214a35); color:var(--ifpc-style-apply-text,#fff); cursor:pointer; }
.ifpc-catalog .ifpc-page-jump button:hover { background:var(--ifpc-style-apply-hover,#173828); color:var(--ifpc-style-apply-hover-text,#fff); }
.ifpc-catalog .ifpc-pages a:focus-visible, .ifpc-catalog .ifpc-page-jump input:focus-visible, .ifpc-catalog .ifpc-page-jump button:focus-visible { outline:2px solid currentColor; outline-offset:3px; }

/* Active search context, including searches with no matches. */
.ifpc-catalog .ifpc-search-summary{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:0 0 16px;padding:14px 16px;border:1px solid #d5dfdc;border-left:4px solid currentColor;border-radius:6px;background:#f6f8f7;color:#263c35;overflow-wrap:anywhere}
.ifpc-catalog .ifpc-search-summary>span{min-width:0;flex:1 1 220px}
.ifpc-catalog .ifpc-search-term{font-weight:700}
.ifpc-catalog .ifpc-clear-search{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:underline;flex-shrink:0}
.ifpc-catalog .ifpc-clear-search:focus-visible{outline:2px solid currentColor;outline-offset:4px}

/* A definite mobile width prevents Elementor's column flex sizing from
   measuring the inline-size-contained catalog at an intrinsic zero width.
   Scope to shortcode widgets that actually contain this catalog. */
@media (max-width:767px) {
  .elementor .elementor-widget-shortcode:has(.ifpc-catalog) { width:100%; }
}

/* Show children of the selected category and keep its ancestor path open. */
.ifpc-catalog .ifpc-nav .ifpc-subcategories { display:flex; flex-direction:column; gap:var(--ifpc-style-category-gap,4px); margin-inline-start:14px; padding-inline-start:8px; border-inline-start:1px solid currentColor; min-width:0; }
