/* DOTY homepage design system. Existing markup, content and behavior are retained. */
body.home {
  --color-background: #ffffff;
  --color-surface: #f8f3ed;
  --color-surface-warm: #f2e8de;
  --color-text: #291d19;
  --color-text-muted: #746761;
  --color-primary: #a85e3b;
  --color-primary-hover: #88462d;
  --color-primary-soft: #c9966b;
  --color-gold: #b78a50;
  --color-border: #e8ded6;
  --color-success: #277a4b;
  --color-error: #b33a35;
  /* Stronger border for input recognition; gold remains decorative. */
  --color-control-border: #95847a;
  --color-disabled: #e8ded6;
  --font-heading: Georgia, serif;
  --font-body: Arial, sans-serif;
  --font-hero: clamp(3.25rem, 6vw, 5.75rem);
  --font-section: clamp(2.25rem, 4vw, 3.5rem);
  --font-subtitle: clamp(1.5rem, 2.5vw, 1.875rem);
  --font-large: 1.125rem;
  --font-normal: 1rem;
  --font-small: 0.875rem;
  --font-button: 0.9375rem;
  --line-body: 1.6;
  --line-heading: 1.12;
  --space-1: 8px;
  --space-2: 16px;
  --space-3: 24px;
  --space-4: 32px;
  --space-5: 40px;
  --space-6: 48px;
  --space-8: 64px;
  --space-12: 96px;
  --space-16: 128px;
  --container-max: 1440px;
  --page-gutter: 48px;
  --section-space: 96px;
  --control-height: 52px;
  --icon-target: 44px;
  --icon-small: 20px;
  --icon-normal: 24px;
  --icon-large: 32px;
  --radius-small: 4px;
  --radius-card: 6px;
  --shadow-card: 0 2px 8px rgb(41 29 25 / 3%);
  --shadow-hover: 0 8px 24px rgb(41 29 25 / 7%);
  --focus-ring: 0 0 0 3px #ffffff, 0 0 0 6px #88462d;
  --motion-fast: 150ms;
  --motion-normal: 220ms;
  --motion-ease: cubic-bezier(0.2, 0.7, 0.3, 1);
  --home-caramel: var(--color-primary);
  --home-ink: var(--color-text);
  --home-border: var(--color-border);
  --ink: var(--color-text);
  --muted: var(--color-text-muted);
  --gold: var(--color-gold);
  --line: var(--color-border);
  --cream: var(--color-surface);
  color: var(--color-text);
  background: var(--color-background);
  font-family: var(--font-body);
  font-size: var(--font-normal);
  line-height: var(--line-body);
}

/* Container, Section, SectionHeader and composable spacing utilities. */
body.home :is(.home-shell, .ds-container) {
  width: calc(100% - 2 * var(--page-gutter));
  max-width: var(--container-max);
  margin-inline: auto;
}
body.home :is(.home-section, .ds-section) {
  padding-top: var(--section-space);
}
body.home :is(.home-heading, .ds-section-header) {
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
body.home .ds-grid {
  display: grid;
  gap: var(--space-3);
  align-items: stretch;
}
body.home .ds-stack > * + * {
  margin-top: var(--space-3);
}
body.home .ds-cluster {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}
body.home :is(.home-categories, .home-products, .home-review-grid) {
  gap: var(--space-3);
  align-items: stretch;
}
body.home :is(.home-header-inner, .home-story, .home-newsletter > .home-shell) {
  gap: var(--space-4);
}

/* Typography: two existing system font families, no external font downloads. */
body.home :is(h1, h2, h3) {
  color: var(--color-text);
}
body.home .home-hero h1 {
  font-family: var(--font-heading);
  font-size: var(--font-hero);
  line-height: 1.04;
  font-weight: 400;
  letter-spacing: -0.035em;
  margin-block: var(--space-2) var(--space-3);
}
body.home .home-hero h1 em {
  color: var(--color-primary-hover);
}
body.home :is(.doty-home h2, #home-favorites h2) {
  font-family: var(--font-heading);
  font-size: var(--font-section);
  font-weight: 400;
  line-height: var(--line-heading);
  letter-spacing: -0.025em;
  margin-bottom: var(--space-2);
}
body.home .home-heading h2 {
  margin-bottom: 0;
}
body.home :is(.home-categories h3, .ds-subtitle) {
  font: 400 var(--font-subtitle) / 1.2 var(--font-heading);
  margin: 0 0 var(--space-1);
}
body.home :is(.home-hero-copy p, .home-finder p) {
  font-family: var(--font-body);
  font-size: var(--font-large);
  line-height: var(--line-body);
  color: var(--color-text);
}
body.home
  :is(.home-story p, .home-review-empty p, .home-review-grid blockquote) {
  font-size: var(--font-normal);
  line-height: var(--line-body);
  color: var(--color-text-muted);
}
body.home
  :is(
    .home-eyebrow,
    .home-nav,
    .home-actions > a,
    .home-actions > button,
    .home-trust small,
    .home-categories p,
    .home-product-type,
    .home-product-notes,
    .home-pills small,
    .home-newsletter p,
    .home-newsletter form > p,
    .home-footer p,
    .home-footer a:not(.home-footer-logo),
    .home-footer button,
    .home-footer-bottom,
    .home-payment,
    .home-status,
    .home-product .added_to_cart
  ) {
  font-family: var(--font-body);
  font-size: var(--font-small);
  line-height: 1.5;
}
body.home .home-eyebrow {
  color: var(--color-primary-hover);
  font-weight: 600;
  letter-spacing: 0.12em;
  margin-bottom: var(--space-2);
}
body.home
  :is(
    .home-categories p,
    .home-product-type,
    .home-pills small,
    .home-newsletter p,
    .home-newsletter form > p,
    .home-footer p,
    .home-footer a:not(.home-footer-logo),
    .home-footer button,
    .home-footer-bottom,
    .home-trust small
  ) {
  color: var(--color-text-muted);
}
body.home .home-footer h2 {
  font: 600 var(--font-small) / 1.5 var(--font-body);
  margin: var(--space-1) 0 var(--space-2);
}
body.home .home-product h3 {
  font: 600 var(--font-normal) / 1.5 var(--font-body);
  min-height: 3em;
  -webkit-line-clamp: 2;
}
body.home .home-product-type {
  margin: var(--space-1) 0;
}
body.home .home-product-notes {
  color: var(--color-primary-hover);
}
body.home .home-footer-logo {
  color: var(--color-primary-hover);
}

/* Buttons: primary, secondary and text/ghost variants share state rules. */
body.home :is(.home-button, .ds-button) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: var(--control-height);
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--color-primary);
  border-radius: var(--radius-small);
  color: var(--color-background);
  background: var(--color-primary);
  font: 600 var(--font-button) / 1.35 var(--font-body);
  text-align: center;
  cursor: pointer;
  transition:
    background-color var(--motion-normal) var(--motion-ease),
    border-color var(--motion-normal) var(--motion-ease),
    box-shadow var(--motion-fast) var(--motion-ease);
}
body.home :is(.home-button, .ds-button):hover {
  color: var(--color-background);
  background: var(--color-primary-hover);
  border-color: var(--color-primary-hover);
}
body.home :is(.home-outline, .ds-button--secondary) {
  background: transparent;
  border-color: var(--color-primary);
  color: var(--color-text);
}
body.home :is(.home-outline, .ds-button--secondary):hover {
  color: var(--color-text);
  background: var(--color-surface);
  border-color: var(--color-primary-hover);
}
body.home :is(.home-text-link, .ds-button--ghost, .home-favorite-row button) {
  color: var(--color-primary-hover);
  background: transparent;
  font: 500 var(--font-button) / 1.5 var(--font-body);
  border: 0;
  border-bottom: 1px solid var(--color-primary-soft);
  padding-block: var(--space-1);
  text-underline-offset: 4px;
  transition: color var(--motion-fast) var(--motion-ease);
}
body.home :is(.home-text-link, .ds-button--ghost):hover {
  color: var(--color-primary-hover);
  text-decoration: underline;
}
body.home .home-product .home-button {
  font-size: var(--font-button);
  padding: var(--space-2) var(--space-1);
  gap: var(--space-1);
}
body.home :is(.home-button, .ds-button):is(:disabled, [aria-disabled="true"]) {
  color: var(--color-text-muted);
  background: var(--color-disabled);
  border-color: var(--color-border);
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}
body.home :is(.home-button, .ds-button):is(.loading, [aria-busy="true"]) {
  opacity: 1;
  cursor: progress;
  background: var(--color-primary-hover);
  border-color: var(--color-primary-hover);
  pointer-events: none;
}
body.home
  :is(.home-button, .ds-button):is(.loading, [aria-busy="true"])::after {
  content: "";
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  border: 2px solid rgb(255 255 255 / 40%);
  border-top-color: var(--color-background);
  border-radius: 50%;
  animation: doty-ds-spin 800ms linear infinite;
}
@keyframes doty-ds-spin {
  to {
    transform: rotate(360deg);
  }
}

/* IconButton and consistent outline icons. */
body.home :is(.home-header, .doty-home, .home-footer, #home-favorites) svg {
  width: var(--icon-normal);
  height: var(--icon-normal);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
}
body.home
  :is(
    .home-favorite,
    .home-dialog-close,
    .ds-icon-button,
    .home-actions > a,
    .home-actions > button,
    .home-search button
  ) {
  min-width: var(--icon-target);
  min-height: var(--icon-target);
  border-radius: var(--radius-small);
  color: var(--color-text);
  transition:
    background-color var(--motion-fast) var(--motion-ease),
    color var(--motion-fast) var(--motion-ease);
}
body.home :is(.home-favorite, .home-dialog-close, .ds-icon-button) {
  width: var(--icon-target);
  height: var(--icon-target);
  border: 1px solid transparent;
  background: var(--color-background);
  display: inline-grid;
  place-items: center;
  cursor: pointer;
}
body.home
  :is(
    .home-favorite,
    .home-dialog-close,
    .ds-icon-button,
    .home-actions > a,
    .home-actions > button,
    .home-search button
  ):hover {
  background: var(--color-surface);
  color: var(--color-primary-hover);
}
body.home :is(.home-favorite, .ds-icon-button)[aria-pressed="true"] {
  background: var(--color-surface-warm);
  color: var(--color-primary-hover);
  border-color: var(--color-primary);
}
body.home .home-favorite[aria-pressed="true"] svg {
  fill: var(--color-surface-warm);
}
body.home :is(.home-button, .ds-button) svg {
  width: var(--icon-small);
  height: var(--icon-small);
}

/* Shared card system; row height remains managed by the existing grids. */
body.home
  :is(
    .home-product,
    .home-categories > a,
    .home-review-grid article,
    .ds-card
  ) {
  background: var(--color-background);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  min-width: 0;
  transition:
    transform var(--motion-normal) var(--motion-ease),
    box-shadow var(--motion-normal) var(--motion-ease),
    border-color var(--motion-fast) var(--motion-ease);
}
body.home
  :is(
    .home-product,
    .home-categories > a,
    .home-review-grid article,
    .ds-card
  ):hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-hover);
}
body.home
  :is(
    .home-product,
    .home-categories > a,
    .home-review-grid article,
    .ds-card
  ):focus-within {
  border-color: var(--color-primary-hover);
  box-shadow: var(--focus-ring);
}
body.home .home-categories > a {
  overflow: hidden;
}
body.home .home-categories > a > div {
  padding: var(--space-3);
  gap: var(--space-2);
}
body.home .home-product-copy {
  padding: var(--space-2);
}
body.home .home-product-image {
  padding: var(--space-2) var(--space-2) 0;
}
body.home .home-arrow {
  background: var(--color-primary-hover);
  color: var(--color-background);
}
body.home .home-review-grid article {
  padding: var(--space-3);
}
body.home .home-review-grid article > p {
  color: var(--color-primary-hover);
}
body.home .home-review-empty {
  background: var(--color-background);
  border-color: var(--color-border);
  border-radius: var(--radius-card);
  padding: var(--space-4);
  gap: var(--space-3);
}
body.home .home-review-empty > span {
  color: var(--color-primary-hover);
}

/* Input: accessible boundaries, placeholder, invalid and disabled states. */
body.home :is(.home-search, .home-newsletter form > div) {
  gap: var(--space-1);
}
body.home .home-search {
  border: 1px solid var(--color-control-border);
  border-radius: var(--radius-small);
  background: var(--color-background);
}
body.home :is(.home-search input, .home-newsletter input, .ds-input) {
  min-height: var(--control-height);
  padding: var(--space-2);
  font: 400 var(--font-normal) / 1.4 var(--font-body);
  color: var(--color-text);
  background: var(--color-background);
  border: 1px solid var(--color-control-border);
  border-radius: var(--radius-small);
  min-width: 0;
  transition:
    border-color var(--motion-fast) var(--motion-ease),
    box-shadow var(--motion-fast) var(--motion-ease);
}
body.home .home-search input {
  border: 0;
}
body.home
  :is(.home-search input, .home-newsletter input, .ds-input)::placeholder {
  color: var(--color-text-muted);
  opacity: 1;
}
body.home :is(.home-search input, .home-newsletter input, .ds-input):disabled {
  color: var(--color-text-muted);
  background: var(--color-surface-warm);
  cursor: not-allowed;
}
body.home
  :is(.home-search input, .home-newsletter input, .ds-input):is(
    :user-invalid,
    [aria-invalid="true"]
  ) {
  border-color: var(--color-error);
  outline: 2px solid var(--color-error);
  outline-offset: 1px;
}
body.home :is(.ds-label, .ds-help, .ds-error, .ds-success) {
  font-size: var(--font-small);
}
body.home .ds-label {
  display: block;
  margin-bottom: var(--space-1);
  color: var(--color-text);
}
body.home .ds-help {
  color: var(--color-text-muted);
}
body.home .ds-error {
  color: var(--color-error);
}
body.home .ds-success {
  color: var(--color-success);
}
body.home :is(a, button, input, summary, select, textarea):focus-visible {
  outline: 2px solid var(--color-primary-hover);
  outline-offset: 4px;
  box-shadow: var(--focus-ring);
}

/* Badge, Price, StockStatus and existing cart badge. */
body.home :is(.ds-badge, .home-payment, .doty-cart-count) {
  font: 500 var(--font-small) / 1.4 var(--font-body);
  padding: 4px var(--space-1);
  border-radius: var(--radius-small);
  background: var(--color-surface-warm);
  color: var(--color-text);
}
body.home .doty-cart-count {
  background: var(--color-primary-hover);
  color: var(--color-background);
  min-width: 24px;
  height: 24px;
  line-height: 24px;
  padding: 0 4px;
  border-radius: 50%;
  top: -8px;
  right: -8px;
}
body.home :is(.home-product-price, .ds-price) {
  font: 600 1.5rem / 1.3 var(--font-body);
  color: var(--color-primary-hover);
  padding-bottom: var(--space-2);
  font-variant-numeric: tabular-nums;
}
body.home .home-product-price .doty-price-info {
  font-family: var(--font-body);
  font-size: var(--font-small) !important;
  line-height: 1.5;
  color: var(--color-text-muted);
  font-weight: 400;
  margin-top: var(--space-1);
}
body.home .home-product-price .doty-price-info .amount {
  font-size: inherit !important;
}
body.home :is(.ds-stock, .stock.in-stock) {
  color: var(--color-success);
  font-size: var(--font-small);
}
body.home :is(.ds-stock--unavailable, .stock.out-of-stock) {
  color: var(--color-error);
}

/* Existing sections: surfaces, spacing and type only; order stays unchanged. */
body.home .home-benefit-bar {
  background: var(--color-surface);
  color: var(--color-text);
  font-size: var(--font-small);
  gap: var(--space-4);
  padding: var(--space-1) var(--space-3);
}
body.home .home-benefit-bar span + span {
  border-color: var(--color-border);
  padding-left: var(--space-4);
}
body.home .home-benefit-bar svg {
  color: var(--color-primary-hover);
  stroke-width: 1.5;
}
body.home .home-header {
  background: var(--color-background);
  border-color: var(--color-border);
}
body.home .home-header-inner {
  min-height: 96px;
  padding-block: var(--space-2);
}
body.home .home-nav {
  gap: var(--space-3);
}
body.home .home-menu > div {
  border-color: var(--color-border);
  box-shadow: var(--shadow-hover);
}
body.home .home-menu a {
  padding: var(--space-2);
}
body.home .home-menu a:hover {
  background: var(--color-surface);
}
body.home .home-hero {
  background: var(--color-surface);
}
body.home .home-hero-copy {
  padding-block: var(--space-6);
}
body.home .home-hero-copy p {
  margin-bottom: var(--space-4);
}
body.home .home-buttons {
  gap: var(--space-2);
}
body.home .home-trust {
  padding-block: var(--space-4);
  border-color: var(--color-border);
}
body.home :is(.home-trust > div, .ds-trust-item) {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  border-color: var(--color-border);
}
body.home .home-trust strong {
  font-size: var(--font-normal);
  font-weight: 600;
}
body.home .home-trust svg {
  width: var(--icon-large);
  height: var(--icon-large);
  color: var(--color-primary-hover);
}
body.home .home-center {
  margin-top: var(--space-4);
}
body.home .home-status {
  min-height: var(--space-3);
  margin-block: var(--space-2);
}
body.home .home-finder {
  margin-top: var(--section-space);
  padding-block: var(--space-6);
  background: var(--color-surface);
}
body.home .home-finder > .home-shell {
  gap: var(--space-4);
}
body.home .home-pills {
  gap: var(--space-2);
}
body.home .home-pills a {
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-button);
  border-color: var(--color-border);
  background: var(--color-background);
  min-height: var(--control-height);
  transition:
    background-color var(--motion-normal) var(--motion-ease),
    border-color var(--motion-fast) var(--motion-ease);
}
body.home .home-pills a:hover {
  border-color: var(--color-primary-hover);
  background: var(--color-surface-warm);
}
body.home .home-story {
  gap: var(--space-6);
}
body.home .home-newsletter {
  margin-top: var(--section-space);
  padding-block: var(--space-6);
  background: var(--color-surface);
}
body.home .home-newsletter form > p {
  margin-top: var(--space-2);
}
body.home .home-footer {
  background: var(--color-background);
  border-color: var(--color-border);
}
body.home .home-footer-grid {
  padding-block: var(--space-6);
  gap: var(--space-4);
}
body.home .home-footer-bottom {
  padding-block: var(--space-3);
  border-color: var(--color-border);
}
body.home .home-footer a:not(.home-footer-logo) {
  margin-block: var(--space-1);
}
body.home #home-favorites {
  border-color: var(--color-border);
  border-radius: var(--radius-card);
  padding: var(--space-4);
}
body.home .home-favorite-row {
  padding-block: var(--space-2);
  gap: var(--space-3);
  border-color: var(--color-border);
}

@media (min-width: 1600px) {
  body.home {
    --section-space: 128px;
  }
}
@media (max-width: 1200px) {
  body.home {
    --page-gutter: 24px;
    --section-space: 96px;
  }
  body.home .home-header-inner {
    gap: var(--space-3);
  }
  body.home .home-nav {
    gap: var(--space-2);
  }
}
@media (max-width: 900px) {
  body.home {
    --section-space: 64px;
  }
  body.home .home-benefit-bar {
    gap: var(--space-2);
  }
  body.home .home-benefit-bar span + span {
    padding-left: var(--space-2);
  }
  body.home .home-header-inner {
    gap: var(--space-2);
  }
  body.home .home-story {
    gap: var(--space-3);
  }
  body.home .home-categories > a > div {
    padding: var(--space-2);
  }
  body.home .home-arrow {
    flex-shrink: 0;
  }
  body.home .home-newsletter > .home-shell {
    gap: var(--space-3);
  }
}
@media (max-width: 600px) {
  body.home {
    --page-gutter: 16px;
    --section-space: 48px;
    --control-height: 48px;
  }
  body.home .home-benefit-bar {
    gap: var(--space-1);
    padding: var(--space-1) var(--space-2);
    align-items: center;
    text-align: center;
  }
  body.home .home-benefit-bar span {
    flex: 1;
  }
  body.home .home-benefit-bar span + span {
    padding-left: var(--space-1);
  }
  body.home .home-actions {
    gap: var(--space-1);
  }
  body.home .home-actions > a,
  body.home .home-actions > button {
    font-size: var(--font-small);
  }
  body.home .home-header .brand {
    width: 120px;
  }
  body.home .home-header .brand img {
    width: 180px;
    left: -30px;
    top: -7px;
  }
  body.home .home-nav {
    flex-wrap: wrap;
    gap: var(--space-2);
  }
  body.home .home-menu summary {
    padding-block: var(--space-1);
  }
  body.home .home-hero-copy {
    padding-block: var(--space-4);
  }
  body.home .home-hero-copy p {
    font-size: var(--font-large);
  }
  body.home .home-trust {
    gap: var(--space-3) var(--space-2);
  }
  body.home .home-trust > div {
    align-items: flex-start;
    gap: var(--space-1);
  }
  body.home .home-trust svg {
    width: var(--icon-normal);
    height: var(--icon-normal);
  }
  body.home .home-trust strong {
    font-size: var(--font-small);
  }
  body.home .home-products {
    gap: var(--space-2);
  }
  body.home .home-product-copy {
    padding: var(--space-1);
  }
  body.home .home-product-image {
    padding: var(--space-1) var(--space-1) 0;
  }
  body.home .home-product h3 {
    font-size: var(--font-small);
  }
  body.home .home-product-type {
    min-height: 4.5em;
  }
  body.home .home-product .home-button {
    min-height: 64px;
    gap: 4px;
    padding-inline: 4px;
  }
  body.home .home-product .home-button svg {
    width: 18px;
    height: 18px;
  }
  body.home .home-product .home-button.loading::after {
    display: none;
  }
  body.home .home-product-price {
    font-size: 1.375rem;
  }
  body.home .home-favorite {
    top: 4px;
    right: 4px;
  }
  body.home .home-finder,
  body.home .home-newsletter {
    padding-block: var(--space-4);
  }
  body.home .home-pills {
    gap: var(--space-1);
  }
  body.home .home-pills a {
    padding: var(--space-2);
  }
  body.home .home-review-empty {
    padding: var(--space-3);
    gap: var(--space-2);
  }
  body.home .home-review-empty p {
    font-size: var(--font-normal);
  }
  body.home .home-newsletter form > div {
    flex-wrap: wrap;
    gap: var(--space-2);
  }
  body.home .home-newsletter input {
    flex-basis: 100%;
    width: 100%;
  }
  body.home .home-newsletter button {
    width: 100%;
  }
  body.home .home-footer-grid {
    gap: var(--space-3);
  }
  body.home .home-footer-bottom {
    gap: var(--space-2);
  }
}
@media (max-width: 350px) {
  body.home .home-header .brand {
    width: 125px;
  }
  body.home .home-header .brand img {
    width: 187px;
    left: -31px;
    top: -9px;
  }
  body.home .home-actions {
    gap: 0;
  }
  body.home .home-actions > a,
  body.home .home-actions > button {
    min-width: 44px;
  }
  body.home .home-hero h1 {
    overflow-wrap: anywhere;
  }
}
@media (prefers-reduced-motion: reduce) {
  body.home {
    --motion-fast: 0ms;
    --motion-normal: 0ms;
  }
  body.home *,
  body.home *::before,
  body.home *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  body.home .home-button.loading::after {
    border-color: var(--color-background);
  }
}
