/*!
 * Osso Suppliers showcase · (C) 2026 Osso City Lighting · GPL-2.0-or-later
 * Uses the Osso template's CSS variables, with fallbacks so it also works under other templates.
 */
.osso-suppliers {
  --_line: var(--osso-line, rgba(0, 0, 0, .12));
  --_accent: var(--osso-accent, #b08d57);
  --_bg: var(--osso-bg, #fff);
  --_bg-alt: var(--osso-bg-alt, #f5f2ec);
  --_text: var(--osso-text, #1d2630);
  --_muted: var(--osso-muted, #5f6670);
  --_radius: var(--osso-radius, 4px);
  --_ease: var(--osso-ease, cubic-bezier(.22, .61, .36, 1));
  --_gap: clamp(.75rem, 1.6vw, 1.5rem);
}

.osso-suppliers .visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0);
  white-space: nowrap; border: 0;
}

/* Filter chips */
.osso-suppliers__filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .5rem;
  margin: -1rem auto clamp(2rem, 4vw, 3rem);
}

.osso-suppliers__filter {
  padding: .5rem 1.1rem;
  border: 1px solid var(--_line);
  border-radius: 999px;
  background: transparent;
  color: var(--_text);
  font: inherit;
  font-size: .75rem;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color .25s, color .25s, border-color .25s;
}

.osso-suppliers__filter:hover { border-color: var(--_text); }
.osso-suppliers__filter[aria-pressed="true"] { background: var(--_text); border-color: var(--_text); color: var(--_bg); }

/* Grid */
.osso-suppliers__grid {
  display: grid;
  grid-template-columns: repeat(var(--_cols, 4), minmax(0, 1fr));
  grid-auto-flow: row dense;
  gap: var(--_gap);
}

.osso-suppliers__grid--cols-2 { --_cols: 2; }
.osso-suppliers__grid--cols-3 { --_cols: 3; }
.osso-suppliers__grid--cols-4 { --_cols: 4; }
.osso-suppliers__grid--cols-5 { --_cols: 5; }
.osso-suppliers__grid--cols-6 { --_cols: 6; }

@media (max-width: 1100px) {
  .osso-suppliers__grid--cols-4,
  .osso-suppliers__grid--cols-5,
  .osso-suppliers__grid--cols-6 { --_cols: 3; }
}

@media (max-width: 760px) {
  .osso-suppliers__grid { --_cols: 2 !important; }
}

.osso-supplier {
  position: relative;
  min-width: 0;
}

.osso-supplier[hidden] { display: none; }

/* Tile (collapsed) */
.osso-supplier__tile {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  aspect-ratio: var(--osso-tile-ratio, 3/2);
  padding: 12% 14%;
  border: 1px solid var(--_line);
  border-radius: var(--_radius);
  background: var(--_bg);
  color: var(--_text);
  cursor: pointer;
  overflow: hidden;
  transition: border-color .35s var(--_ease), box-shadow .35s var(--_ease), transform .35s var(--_ease);
}

.osso-section--bg-light .osso-supplier__tile { background: var(--_bg); }

.osso-suppliers--card .osso-supplier__tile {
  border-color: transparent;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .05), 0 12px 28px -18px rgba(0, 0, 0, .25);
}

.osso-suppliers--grid .osso-suppliers__grid { gap: 0; border-top: 1px solid var(--_line); border-left: 1px solid var(--_line); }
.osso-suppliers--grid .osso-supplier__tile { border-width: 0 1px 1px 0; border-radius: 0; }
.osso-suppliers--grid .osso-supplier.is-open { border-right: 1px solid var(--_line); border-bottom: 1px solid var(--_line); }

.osso-supplier__tile:hover,
.osso-supplier__tile:focus-visible {
  border-color: color-mix(in srgb, var(--_accent) 70%, transparent);
  box-shadow: 0 18px 40px -26px rgba(0, 0, 0, .35);
  transform: translateY(-2px);
}

.osso-suppliers--grid .osso-supplier__tile:hover { transform: none; box-shadow: inset 0 0 0 1px var(--_accent); }

.osso-supplier__logo {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  transition: transform .5s var(--_ease), filter .4s var(--_ease), opacity .4s var(--_ease);
}

.osso-suppliers--mono .osso-supplier__logo { filter: grayscale(1); opacity: .75; }
.osso-suppliers--mono .osso-supplier__tile:hover .osso-supplier__logo,
.osso-suppliers--mono .osso-supplier__tile:focus-visible .osso-supplier__logo { filter: none; opacity: 1; }

.osso-supplier__tile:hover .osso-supplier__logo { transform: scale(1.04); }

.osso-supplier__name {
  font-family: var(--osso-font-heading, Georgia, serif);
  font-size: calc(1.5rem * var(--osso-heading-scale, 1));
  text-align: center;
  line-height: 1.15;
}

.osso-supplier__hint {
  position: absolute;
  left: 0; right: 0; bottom: .9rem;
  font-size: .64rem;
  font-weight: 600;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--osso-accent-ink, #7b633d);
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .35s var(--_ease), transform .35s var(--_ease);
}

.osso-supplier__tile:hover .osso-supplier__hint,
.osso-supplier__tile:focus-visible .osso-supplier__hint { opacity: 1; transform: none; }

@media (hover: none) {
  .osso-supplier__hint { display: none; }
}

/* Open state: the tile gives way to a full-width panel */
.osso-supplier.is-open { grid-column: 1 / -1; }
.osso-supplier.is-open .osso-supplier__tile { display: none; }

.osso-supplier__panel {
  position: relative;
  padding: clamp(1.5rem, 3.5vw, 3rem);
  border: 1px solid var(--_line);
  border-radius: var(--_radius);
  background: var(--_bg);
  box-shadow: 0 30px 60px -40px rgba(0, 0, 0, .35);
}

.osso-supplier.is-open .osso-supplier__panel { animation: osso-panel-in .55s var(--_ease) both; }

@keyframes osso-panel-in {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: none; }
}

.osso-supplier__panel-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem 2rem;
  padding-right: 3rem;
  padding-bottom: clamp(1.25rem, 2.5vw, 2rem);
  margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
  border-bottom: 1px solid var(--_line);
}

.osso-supplier__panel-logo { flex: 1 1 auto; min-width: 0; }

.osso-supplier__panel-logo img {
  display: block;
  width: auto;
  height: auto;
  max-width: min(320px, 100%);
  max-height: 72px;
  object-fit: contain;
}

.osso-supplier__panel-name { margin: 0 !important; }

.osso-supplier__website { flex: none; }

.osso-supplier__close {
  position: absolute;
  top: clamp(1rem, 2.2vw, 1.75rem);
  right: clamp(1rem, 2.2vw, 1.75rem);
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 1px solid var(--_line);
  border-radius: 50%;
  background: var(--_bg);
  color: var(--_text);
  cursor: pointer;
  transition: transform .35s var(--_ease), border-color .25s, background-color .25s, color .25s;
}

.osso-supplier__close:hover { transform: rotate(90deg); border-color: var(--_text); background: var(--_text); color: var(--_bg); }
.osso-supplier__close svg { width: 1.2rem; height: 1.2rem; }

.osso-supplier__panel-body {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(1.75rem, 4vw, 4rem);
  align-items: center;
}

.osso-supplier__panel-body--text-only { grid-template-columns: minmax(0, 1fr); max-width: 760px; }

.osso-supplier__desc {
  margin: 0 0 1.5rem !important;
  font-family: var(--osso-font-heading, Georgia, serif);
  font-size: calc(clamp(1.15rem, 1.5vw, 1.4rem) * var(--osso-heading-scale, 1));
  line-height: 1.5;
  color: var(--_text);
}

.osso-supplier__desc--quote { font-style: italic; }
.osso-supplier__desc--quote::before { content: "\201C"; }
.osso-supplier__desc--quote::after { content: "\201D"; }

.osso-supplier__types {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.osso-supplier__types li {
  padding: .35rem .8rem;
  border: 1px solid var(--_line);
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--_muted);
}

/* Product carousel */
.osso-supplier__gallery { position: relative; }

.osso-supplier__slides {
  position: relative;
  height: clamp(240px, 52vh, 460px);
  background: var(--_bg-alt);
  border-radius: var(--_radius);
  overflow: hidden;
}

.osso-supplier__slide {
  position: absolute;
  inset: 0;
  margin: 0;
  display: grid;
  place-items: center;
  padding: clamp(.75rem, 2vw, 1.5rem);
  opacity: 0;
  transition: opacity .8s var(--_ease);
}

.osso-supplier__slide.is-active { opacity: 1; }

.osso-supplier__slide img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  mix-blend-mode: multiply; /* blends white product-photo backgrounds into the panel */
}

.osso-supplier__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 1rem;
}

.osso-supplier__arrow {
  display: grid;
  place-items: center;
  width: 2.5rem;
  height: 2.5rem;
  padding: 0;
  border: 1px solid var(--_line);
  border-radius: 50%;
  background: transparent;
  color: var(--_text);
  cursor: pointer;
  transition: border-color .25s, background-color .25s, color .25s;
}

.osso-supplier__arrow:hover { background: var(--_text); border-color: var(--_text); color: var(--_bg); }
.osso-supplier__arrow svg { width: 1.2rem; height: 1.2rem; }

.osso-supplier__count {
  min-width: 4.5em;
  text-align: center;
  font-size: .75rem;
  font-weight: 500;
  letter-spacing: .18em;
  color: var(--_muted);
  font-variant-numeric: tabular-nums;
}

@media (max-width: 760px) {
  .osso-supplier__slides { height: auto; aspect-ratio: 1 / 1; }
  .osso-supplier__panel-body { grid-template-columns: 1fr; }
  .osso-supplier__panel-head { flex-direction: column; align-items: flex-start; }
  .osso-supplier__panel-logo img { max-height: 56px; }
  .osso-supplier__gallery { order: -1; }
}

@media (prefers-reduced-motion: reduce) {
  .osso-supplier__slide { transition: none; }
  .osso-supplier.is-open .osso-supplier__panel { animation: none; }
}
