/*
 * FWMW editorial storefront layer.
 * Presentation only: Horizon owns catalog, search, forms, cart, password, and gift-card behavior.
 */
:root {
  --fwmm-paper: #f4f2ec;
  --fwmm-paper-deep: #eae6dc;
  --fwmm-ink: #1c1b18;
  --fwmm-muted: #5a5750;
  --fwmm-rubric: #a32e22;
  --fwmm-rule: #cfc9bb;
  --fwmm-focus: #2f4b8f;
  --fwmm-serif: var(--font-heading--family, Georgia, serif);
  --fwmm-sans: var(--font-body--family, system-ui, sans-serif);
  --fwmm-reading-measure: 72ch;
}

#MainContent.fwmm-storefront-scope,
.password-main-content,
.gift-card {
  background: var(--fwmm-paper);
  color: var(--fwmm-ink);
}

#MainContent.fwmm-storefront-scope :is(a, button, input, select, textarea, summary):focus-visible,
.password-main-content :is(a, button, input):focus-visible,
.password-dialog :is(button, input):focus-visible,
.gift-card :is(a, button):focus-visible {
  outline: 3px solid var(--fwmm-focus);
  outline-offset: 3px;
}

#MainContent.fwmm-storefront-scope :is(button, .button, input:not([type='checkbox']):not([type='radio']):not([type='hidden']), select, summary),
.password-main-content :is(button, .button, input),
.password-dialog :is(button, input),
.gift-card :is(button, .button) {
  min-height: 44px;
  border-radius: 0;
}

#MainContent.fwmm-storefront-scope :is(input:not([type='checkbox']):not([type='radio']):not([type='hidden']), select, textarea),
.password-main-content input,
.password-dialog input {
  border-radius: 0;
  font-family: var(--fwmm-sans);
}

#MainContent.fwmm-storefront-scope h1,
.password-main-content h1,
.gift-card h1 {
  color: var(--fwmm-ink);
  font-family: var(--fwmm-serif);
  font-size: clamp(2.5rem, 5.6vw, 5rem);
  font-weight: 400;
  letter-spacing: -0.04em;
  line-height: 1;
  text-wrap: balance;
}

#MainContent.fwmm-storefront-scope h2 {
  font-family: var(--fwmm-serif);
  font-weight: 400;
  letter-spacing: -0.025em;
  text-wrap: balance;
}

/* Collection journey and product-result cards */
#MainContent[data-template^='collection'],
#MainContent[data-template^='search'] {
  --fwmm-catalog-cover-max: 84%;
  --fwmm-catalog-title-rows: 3;
}

#MainContent[data-template^='collection'] .product-grid-container,
#MainContent[data-template^='search'] .product-grid-container {
  border-top: 1px solid var(--fwmm-rule);
}

#MainContent[data-template^='collection'] .facets,
#MainContent[data-template^='search'] .facets {
  color: var(--fwmm-ink);
  font-family: var(--fwmm-sans);
}

#MainContent[data-template^='collection'] .product-grid__item,
#MainContent[data-template^='search'] .product-grid__item {
  min-width: 0;
}

#MainContent[data-template^='collection'] .product-grid__card,
#MainContent[data-template^='search'] .product-grid__card {
  display: flex;
  height: 100%;
  flex-direction: column;
  gap: 0;
}

#MainContent[data-template^='collection'] .card-gallery,
#MainContent[data-template^='search'] .card-gallery,
#MainContent[data-template^='collection'] .product-card-gallery,
#MainContent[data-template^='search'] .product-card-gallery {
  display: grid;
  aspect-ratio: 4 / 5;
  place-items: center;
  overflow: hidden;
  padding: 0;
  background: var(--fwmm-paper-deep);
}

#MainContent[data-template^='collection'] .card-gallery .product-media-container,
#MainContent[data-template^='search'] .card-gallery .product-media-container,
#MainContent[data-template^='collection'] .product-card-gallery .product-media-container,
#MainContent[data-template^='search'] .product-card-gallery .product-media-container {
  display: grid;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  place-items: center;
  overflow: hidden;
  padding: 0;
}

#MainContent[data-template^='collection'] .product-card img,
#MainContent[data-template^='search'] .product-card img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Source-derived book covers must preserve their full intrinsic trim ratio. */
img[data-fwmm-source-cover] {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 84%;
  margin: auto;
  object-fit: contain !important;
  object-position: center;
}

#MainContent[data-template^='collection'] .product-card img[data-fwmm-source-cover],
#MainContent[data-template^='search'] .product-card img[data-fwmm-source-cover] {
  width: auto;
  height: auto;
  max-width: var(--fwmm-catalog-cover-max);
  max-height: var(--fwmm-catalog-cover-max);
  object-fit: contain !important;
  object-position: center;
}

#MainContent[data-template^='collection'] .product-card__content,
#MainContent[data-template^='search'] .product-card__content {
  flex: 1;
  align-content: start;
  padding-top: 14px;
  border-top: 1px solid transparent;
}

#MainContent[data-template^='collection'] .product-card__content :is(h3, .product-title),
#MainContent[data-template^='search'] .product-card__content :is(h3, .product-title) {
  font-family: var(--fwmm-serif);
  font-size: 1.05rem;
  line-height: 1.3;
}

#MainContent[data-template^='collection'] .product-card__content > .contents > .text-block,
#MainContent[data-template^='search'] .product-card__content > .contents > .text-block {
  min-height: calc(var(--fwmm-catalog-title-rows) * 1.3em);
  align-items: flex-start;
}

#MainContent[data-template^='collection'] .product-card__content > product-price,
#MainContent[data-template^='search'] .product-card__content > product-price {
  margin-top: auto;
}

#MainContent[data-template^='collection'] .price,
#MainContent[data-template^='search'] .price {
  color: var(--fwmm-ink);
  font-family: var(--fwmm-sans);
  font-size: 0.8125rem;
  font-weight: 600;
}

#MainContent[data-template^='collection'] .fwmm-card-meta,
#MainContent[data-template^='search'] .fwmm-card-meta {
  margin: 4px 0 0;
  min-height: 1.4em;
  color: var(--fwmm-muted);
  font-family: var(--fwmm-sans);
  font-size: 0.75rem;
  line-height: 1.4;
}

#MainContent[data-template='collection'] .fwmm-grouped-products {
  min-width: 0;
}

#MainContent[data-template='collection'] .fwmm-grouped-products__grid {
  display: grid;
  min-width: 0;
  gap: clamp(52px, 7vw, 88px);
}

#MainContent[data-template='collection'] .fwmm-product-group {
  display: grid;
  gap: 24px;
}

#MainContent[data-template='collection'] .fwmm-product-group h2 {
  margin: 0;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--fwmm-rule);
  font-size: clamp(1.75rem, 3vw, 2.75rem);
}

#MainContent[data-template='collection'] .fwmm-product-group .product-grid {
  margin: 0;
}

#MainContent[data-template='list-collections'] .section-resource-list {
  padding-block: clamp(52px, 8vw, 96px);
}

#MainContent[data-template='list-collections'] .collection-card {
  border-top: 1px solid var(--fwmm-rule);
  border-radius: 0;
  padding-top: 18px;
}

#MainContent[data-template='list-collections'] .collection-card__image {
  background: var(--fwmm-paper-deep);
}

#MainContent[data-template='list-collections'] .collection-card__image img {
  object-fit: contain;
}

/* Contact form states */
#MainContent[data-template='page.contact'] .page-width-content,
#MainContent[data-template='page.contact'] .contact-form {
  max-width: var(--fwmm-reading-measure);
  margin-inline: auto;
}

#MainContent[data-template='page.contact'] .contact-form__form {
  gap: 18px;
  padding: clamp(22px, 4vw, 38px);
  border: 1px solid var(--fwmm-rule);
  background: var(--fwmm-paper-deep);
}

#MainContent[data-template='page.contact'] .contact-form__input {
  min-height: 52px;
  border: 1px solid var(--fwmm-rule);
  background: var(--fwmm-paper);
  color: var(--fwmm-ink);
  font-size: max(1rem, 16px);
}

#MainContent[data-template='page.contact'] .contact-form__error,
#MainContent[data-template='page.contact'] .contact-form__success {
  padding: 14px 16px;
  border: 1px solid currentColor;
  background: var(--fwmm-paper);
  font-family: var(--fwmm-sans);
}

#MainContent[data-template='page.contact'] .contact-form__error {
  color: var(--fwmm-rubric);
}

/* Native cart page. The globally available drawer is isolated in fwmm-shell.css. */
#MainContent[data-template^='cart'] .cart-page {
  gap: clamp(32px, 6vw, 72px);
  padding-block: clamp(40px, 7vw, 84px);
}

#MainContent[data-template^='cart'] .cart-page__summary {
  border: 1px solid var(--fwmm-rule);
  border-radius: 0;
  background: var(--fwmm-paper-deep);
}

#MainContent[data-template^='cart'] .cart-items--dividers .cart-items__table-row {
  border-color: var(--fwmm-rule);
}

#MainContent[data-template^='cart'] .cart-items__media img {
  object-fit: contain;
  background: var(--fwmm-paper-deep);
}

#MainContent[data-template^='cart'] .cart-title {
  font-family: var(--fwmm-serif);
  font-weight: 400;
}

#MainContent[data-template^='cart'] .cart-items__empty-button {
  min-height: 48px;
}

/* Search, generic/policy, and not-found pages */
#MainContent[data-template^='search'] .search-page__header {
  padding-block: clamp(48px, 8vw, 88px) 36px;
  border-bottom: 1px solid var(--fwmm-rule);
}

#MainContent[data-template^='search'] .search-page__header > * {
  max-width: 760px;
}

#MainContent[data-template^='search'] .main-collection-grid__empty,
#MainContent[data-template^='collection'] .main-collection-grid__empty {
  min-height: 280px;
  align-content: center;
  text-align: center;
}

#MainContent.fwmm-storefront-scope[data-template='page'] .page-width-content,
#MainContent.fwmm-storefront-scope[data-template^='page.'] .page-width-content {
  max-width: calc(var(--fwmm-reading-measure) + 72px);
  padding-block: clamp(48px, 8vw, 96px);
}

#MainContent.fwmm-storefront-scope[data-template^='page'] .rte {
  max-width: var(--fwmm-reading-measure);
  color: var(--fwmm-muted);
  font-family: var(--fwmm-serif);
  font-size: 1.0625rem;
  line-height: 1.75;
}

/* Shopify policy pages are long-form reading surfaces, not promotional display sections. */
.shopify-policy__container {
  max-width: 72ch;
  padding: clamp(40px, 7vw, 72px) 24px;
}

.shopify-policy__title {
  margin-bottom: 24px;
}

.shopify-policy__body {
  font-family: var(--fwmm-sans);
  font-size: 1rem;
  line-height: 1.65;
}

.shopify-policy__body h2 {
  margin-block: 2.25rem 1rem;
  font-family: var(--fwmm-serif);
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 1.15;
  text-wrap: balance;
}

.shopify-policy__body h3 {
  margin-block: 1.75rem 0.75rem;
  font-size: 1.25rem;
  line-height: 1.3;
}

#MainContent[data-template='404'] .section-content-wrapper {
  max-width: 760px;
  min-height: min(64vh, 620px);
  margin-inline: auto;
  border-block: 1px solid var(--fwmm-rule);
}

/* Password is the unauthenticated storefront surface. */
.password-main-content .password-content {
  max-width: 760px;
  padding: clamp(28px, 6vw, 64px);
  border: 1px solid var(--fwmm-rule);
  background: var(--fwmm-paper-deep);
}

.password-dialog {
  border: 1px solid var(--fwmm-rule);
  border-radius: 0;
  background: var(--fwmm-paper);
  color: var(--fwmm-ink);
}

.password-dialog__title {
  font-family: var(--fwmm-serif);
  font-weight: 400;
}

/* Gift-card logic and printable code remain theme-owned. */
.gift-card {
  font-family: var(--fwmm-sans);
}

.gift-card__main {
  border: 1px solid var(--fwmm-rule);
  border-radius: 0;
  background: var(--fwmm-paper-deep);
  box-shadow: none;
}

.gift-card__code,
.gift-card__qr-code {
  border-radius: 0;
  background: #fff;
}

/* Blog index and article reading system */
#MainContent[data-template^='blog'] .blog-posts {
  --page-content-width: min(1120px, calc(100vw - 48px));
  padding-block: clamp(48px, 8vw, 92px);
}

#MainContent[data-template^='blog'] .blog-posts-container {
  gap: 0;
  border-top: 1px solid var(--fwmm-rule);
  border-left: 1px solid var(--fwmm-rule);
}

#MainContent[data-template^='blog'] .blog-post-item {
  border: 0;
  border-right: 1px solid var(--fwmm-rule);
  border-bottom: 1px solid var(--fwmm-rule);
  border-radius: 0;
  padding: clamp(20px, 3vw, 34px);
  background: var(--fwmm-paper);
}

#MainContent[data-template^='blog'] .blog-post-card__title-link,
#MainContent[data-template^='article'] h1,
#MainContent[data-template^='article'] h2 {
  font-family: var(--fwmm-serif);
}

#MainContent[data-template^='blog'] .blog-post-card img {
  border-radius: 0;
}

#MainContent[data-template^='article'] .section-content-wrapper {
  max-width: 920px;
  margin-inline: auto;
  padding-block: clamp(48px, 8vw, 96px);
}

#MainContent[data-template^='article'] .blog-post-content,
#MainContent[data-template^='article'] .blog-post-comments-container {
  width: 100%;
  max-width: var(--fwmm-reading-measure);
  margin-inline: auto;
}

#MainContent[data-template^='article'] .blog-post-content {
  color: var(--fwmm-muted);
  font-family: var(--fwmm-serif);
  font-size: 1.125rem;
  line-height: 1.8;
}

@media (max-width: 749px) {
  #MainContent[data-template^='collection'] .product-grid,
  #MainContent[data-template^='search'] .product-grid {
    gap: 28px 12px;
  }

  #MainContent[data-template='page.contact'] .contact-form__form {
    padding: 20px;
  }

  #MainContent[data-template^='blog'] .blog-posts-container {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 360px) {
  #MainContent[data-template^='collection'] .product-grid,
  #MainContent[data-template^='search'] .product-grid {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  #MainContent.fwmm-storefront-scope *,
  .password-main-content *,
  .password-dialog *,
  .gift-card * {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}
