/* Shared by every theme: reset, layout primitives, accessibility helpers.
   Themes define the custom properties declared on :root below. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; min-height: 100vh; font-family: var(--font-body); color: var(--color-text); background: var(--color-bg); line-height: 1.5; }
img, svg { max-width: 100%; height: auto; display: block; }
a { color: var(--color-link); }
button { font: inherit; cursor: pointer; }
input, select, textarea { font: inherit; }
ul[class] { list-style: none; margin: 0; padding: 0; }
h1, h2, h3 { font-family: var(--font-display); line-height: 1.2; margin: 0 0 .5em; }

.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; }
.skip-link { position: absolute; left: -999px; top: .5rem; padding: .5rem 1rem; background: var(--color-accent); color: var(--color-on-accent); z-index: 100; }
.skip-link:focus { left: .5rem; }
:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; }

.page { width: min(100% - 2rem, var(--page-width, 72rem)); margin-inline: auto; }
.main { padding-block: var(--space-l, 2rem); }
.page-title { font-size: clamp(1.6rem, 3vw, 2.4rem); }

.product-grid { display: grid; gap: var(--space-m, 1.25rem); grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.product-card__media { position: relative; margin: 0; aspect-ratio: 1; overflow: hidden; background: var(--color-surface-alt); }
.product-card__image { width: 100%; height: 100%; object-fit: cover; }
.product-card__link { text-decoration: none; color: inherit; display: block; }
.product-card .status { position: absolute; top: .5rem; left: .5rem; }

.carousel__viewport { overflow: hidden; }
.carousel__track { display: flex; gap: var(--space-m, 1.25rem); transition: transform .5s ease; }
.carousel__slide { flex: 0 0 min(100%, 18rem); }
.carousel__controls { display: flex; gap: .5rem; justify-content: flex-end; margin-top: .75rem; }

.gallery__main { margin: 0; }
.gallery__zoom { padding: 0; border: 0; background: none; display: block; width: 100%; }
.gallery__thumbs { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .75rem; }
.gallery__thumb { padding: 0; border: 2px solid transparent; background: none; }
.gallery__thumb.is-active { border-color: var(--color-accent); }
.gallery__lightbox { border: 0; padding: 0; background: rgb(0 0 0 / .92); max-width: 100vw; max-height: 100vh; }
.gallery__lightbox::backdrop { background: rgb(0 0 0 / .8); }
.gallery__lightbox img { max-width: 95vw; max-height: 90vh; width: auto; height: auto; margin: auto; }
.gallery__close { position: fixed; top: 1rem; right: 1rem; font-size: 2rem; line-height: 1; background: none; border: 0; color: #fff; }

.field { margin-bottom: var(--space-m, 1.25rem); }
.field label { display: block; margin-bottom: .25rem; font-weight: 600; }
.field input:not([type="checkbox"]), .field select, .field textarea { width: 100%; padding: .6rem .75rem; border: 1px solid var(--color-border); border-radius: var(--radius-s, 4px); background: var(--color-surface); color: inherit; }
.field--checkbox { display: flex; gap: .5rem; align-items: center; }
.field--checkbox label { margin: 0; font-weight: 400; }
.field__help { font-size: .9rem; opacity: .8; margin: .25rem 0 0; }
.field__errors { color: var(--color-error); margin: .25rem 0 0; padding-left: 1rem; }
.form--narrow { max-width: 28rem; }
.button { display: inline-block; padding: .6rem 1.2rem; border: 1px solid var(--color-accent); border-radius: var(--radius-s, 4px); background: var(--color-accent); color: var(--color-on-accent); text-decoration: none; }
.flash { padding: .75rem 1rem; border-radius: var(--radius-s, 4px); background: var(--color-surface-alt); border-left: 4px solid var(--color-accent); }
.flash--error { border-left-color: var(--color-error); }

.pagination { display: flex; gap: 1rem; align-items: center; justify-content: center; margin-top: var(--space-l, 2rem); }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { transition-duration: 0s !important; animation-duration: 0s !important; scroll-behavior: auto !important; }
}

.breadcrumb { font-size: .9rem; margin-bottom: var(--space-m, 1.25rem); }
.subcategories { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: var(--space-m, 1.25rem); }
.chip { display: inline-block; padding: .3rem .8rem; border: 1px solid var(--color-border); border-radius: 999px; text-decoration: none; color: inherit; }
.result-count { color: var(--color-muted, inherit); }
.home-block { margin-top: var(--space-l, 2rem); }
.home-block__header { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: var(--space-m, 1.25rem); }
.product { display: grid; gap: var(--space-l, 2rem); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 48rem) { .product { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); } }
.product__description { margin-block: var(--space-m, 1.25rem); }
.filters__row { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); align-items: end; margin-bottom: var(--space-l, 2rem); }
.filters .field { margin-bottom: 0; }
.error-page { text-align: center; padding-block: var(--space-l, 2rem); }
.error-page__code { font-family: var(--font-display); font-size: 5rem; margin: 0; opacity: .3; }
.questions { margin-top: var(--space-l, 2rem); padding-top: var(--space-m, 1.25rem); border-top: 1px solid var(--color-border); }

/* Honeypot field: invisible to people, filled by bots */
.honeypot { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.form-links { margin-top: var(--space-m, 1.25rem); }
.field--invalid input { border-color: var(--color-error); }
.account-section { margin-top: var(--space-l, 2rem); padding-top: var(--space-m, 1.25rem); border-top: 1px solid var(--color-border); }
.account-section--danger h2 { color: var(--color-error); }
.button--danger { background: var(--color-error); border-color: var(--color-error); color: #fff; }
