/* Shared public catalogue filter controls.
   Scoped deliberately so checkout, account and admin forms are unaffected. */

.catalogue-filter-panel {
  --catalogue-filter-ink: #153f23;
  --catalogue-filter-green: #6d9464;
  --catalogue-filter-green-dark: #557c4f;
  --catalogue-filter-sage: #e4ebdc;
  --catalogue-filter-cream: #fbf8ef;
  --catalogue-filter-paper: #fffefa;
  --catalogue-filter-border: #ccd6c5;
  --catalogue-filter-muted: #687266;
  display: grid;
  gap: 14px;
  padding: 24px;
  border: 2px solid var(--catalogue-filter-green-dark);
  border-radius: 20px;
  background: var(--catalogue-filter-cream);
  color: var(--catalogue-filter-ink);
  box-shadow: 0 18px 42px rgba(21, 63, 35, .08);
}

.catalogue-filter-panel .catalogue-filter-heading {
  display: flex;
  align-items: center;
  gap: 13px;
  margin: 0 0 4px;
}

.catalogue-filter-panel .catalogue-filter-heading > span:first-child,
.catalogue-filter-panel .catalogue-filter-icon {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  display: grid;
  place-items: center;
  border-radius: 14px;
  background: var(--catalogue-filter-sage);
  color: var(--catalogue-filter-ink);
}

.catalogue-filter-panel .catalogue-filter-heading h2 {
  margin: 3px 0 0 !important;
  color: var(--catalogue-filter-ink);
}

.catalogue-filter-panel .catalogue-filter-field {
  display: grid;
  gap: 8px;
  min-width: 0;
  margin: 0;
}

.catalogue-filter-panel label,
.catalogue-filter-panel fieldset legend {
  display: block;
  margin: 0;
  color: var(--catalogue-filter-ink);
  font-size: .9rem;
  font-weight: 800;
  line-height: 1.35;
}

.catalogue-filter-panel input[type="search"],
.catalogue-filter-panel select {
  width: 100%;
  min-width: 0;
  min-height: 46px;
  margin: 0;
  border: 1px solid var(--catalogue-filter-border);
  border-radius: 12px;
  background-color: var(--catalogue-filter-paper);
  color: var(--catalogue-filter-ink);
  font: inherit;
  font-size: .94rem;
  line-height: 1.3;
  box-shadow: inset 0 1px 2px rgba(21, 63, 35, .025);
}

.catalogue-filter-panel input[type="search"] {
  padding: 11px 14px;
}

.catalogue-filter-panel select {
  appearance: none;
  padding: 11px 42px 11px 14px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23557c4f' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 13px center;
  background-size: 18px;
  cursor: pointer;
}

.catalogue-filter-panel .catalogue-search-field {
  position: relative;
}

.catalogue-filter-panel .catalogue-search-field > svg {
  position: absolute;
  top: 50%;
  left: 14px;
  z-index: 1;
  width: 18px;
  height: 18px;
  color: var(--catalogue-filter-green-dark);
  transform: translateY(-50%);
  pointer-events: none;
}

.catalogue-filter-panel .catalogue-search-field input[type="search"] {
  padding-left: 42px;
}

.catalogue-filter-panel input[type="search"]:hover,
.catalogue-filter-panel select:hover {
  border-color: var(--catalogue-filter-green);
}

.catalogue-filter-panel input[type="search"]:focus-visible,
.catalogue-filter-panel select:focus-visible {
  border-color: var(--catalogue-filter-green-dark);
  outline: 3px solid rgba(109, 148, 100, .28);
  outline-offset: 2px;
}

.catalogue-filter-panel input[type="search"]:disabled,
.catalogue-filter-panel select:disabled {
  border-color: #d9ddd4;
  background-color: #f0f0ea;
  color: #7d857b;
  cursor: not-allowed;
  opacity: .74;
}

.catalogue-filter-panel fieldset.catalogue-filter-field {
  padding: 0;
  border: 0;
}

.catalogue-filter-panel .catalogue-checkbox {
  display: flex !important;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 8px 10px;
  border: 1px solid transparent;
  border-radius: 12px;
  cursor: pointer;
  transition: background-color .16s ease, border-color .16s ease;
}

.catalogue-filter-panel .catalogue-checkbox:hover {
  border-color: rgba(109, 148, 100, .45);
  background: rgba(228, 235, 220, .55);
}

.catalogue-filter-panel .catalogue-checkbox input[type="checkbox"] {
  appearance: none;
  box-sizing: border-box;
  width: 20px;
  height: 20px;
  min-width: 20px;
  min-height: 20px;
  max-width: 20px;
  max-height: 20px;
  flex: 0 0 20px;
  margin: 0;
  padding: 0;
  border: 1px solid var(--catalogue-filter-green);
  border-radius: 5px;
  background-color: var(--catalogue-filter-paper);
  background-position: center;
  background-repeat: no-repeat;
  background-size: 14px;
  cursor: pointer;
}

.catalogue-filter-panel .catalogue-checkbox input[type="checkbox"]:checked {
  border-color: var(--catalogue-filter-green-dark);
  background-color: var(--catalogue-filter-green-dark);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23fffefa' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 4 4L19 6'/%3E%3C/svg%3E");
}

.catalogue-filter-panel .catalogue-checkbox input[type="checkbox"]:focus-visible {
  outline: 3px solid rgba(109, 148, 100, .32);
  outline-offset: 3px;
}

.catalogue-filter-panel .catalogue-checkbox input[type="checkbox"]:disabled {
  border-color: #c9cec5;
  background-color: #eceee9;
  cursor: not-allowed;
  opacity: .72;
}

.catalogue-filter-panel .catalogue-checkbox:has(input:disabled) {
  color: #7d857b;
  cursor: not-allowed;
  opacity: .74;
}

.catalogue-filter-panel .shop-reset-button {
  width: 100%;
  min-height: 46px;
  margin: 4px 0 0;
  padding: 10px 16px;
}

.catalogue-filter-panel .collection-filter-note,
.catalogue-filter-panel .shop-filter-note,
.catalogue-filter-panel .care-guide-sidebar-note {
  color: var(--catalogue-filter-muted);
}

.catalogue-filter-panel [hidden] {
  display: none !important;
}

@media (min-width: 701px) and (max-width: 1100px) {
  .catalogue-filter-panel {
    position: static !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .catalogue-filter-panel .catalogue-filter-span {
    grid-column: 1 / -1;
  }
}

@media (max-width: 700px) {
  .catalogue-filter-panel {
    position: static !important;
    grid-template-columns: minmax(0, 1fr);
    padding: 20px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .catalogue-filter-panel *,
  .catalogue-filter-panel *::before,
  .catalogue-filter-panel *::after {
    scroll-behavior: auto !important;
    transition-duration: .001ms !important;
  }
}
