/*
  WordPress-only styles for the Artive theme.

  Everything global (tokens, fonts, reset, .display / .script / .muted,
  header, footer, buttons, BigLink, CTA) comes from the marketing build's
  shell bundle. This file only adds what WordPress renders that the static
  site doesn't: blog listings, articles, long-form prose and WooCommerce.
  It must only use the design tokens, never new colours.
*/

/* ---------- Page heads ------------------------------------------------- */

.archive-head {
  padding-top: calc(var(--header-h) + clamp(3rem, 8vw, 7rem));
  padding-bottom: var(--space-block);
}

.archive-head__title .section-heading__title,
.archive-head .section-heading__title {
  font-size: var(--fs-d1);
  text-wrap: balance;
}

/* ---------- Topic filter ----------------------------------------------- */

.topics {
  margin-top: 2rem;
}

.topics ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.topics a {
  display: inline-flex;
  align-items: center;
  min-height: 2.5rem;
  padding: 0.25rem 1rem;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-tag);
  font-size: 1rem;
  color: var(--c-text-muted);
  transition:
    border-color var(--dur-fast) ease,
    color var(--dur-fast) ease;
}

.topics a[aria-current='page'] {
  border-color: var(--c-accent);
  color: var(--c-text);
}

@media (hover: hover) and (pointer: fine) {
  .topics a:hover {
    border-color: var(--c-text-dim);
    color: var(--c-text);
  }
}

/* ---------- Post grid + cards ------------------------------------------ */

.post-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding-bottom: var(--space-section);
}

.post-card__link {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--c-surface);
}

.post-card__media {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--c-surface-2);
}

.post-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(0.25);
  transition:
    transform var(--dur-slow) var(--ease-out),
    filter var(--dur-slow) var(--ease-out);
}

/* No featured image: the topic set as an outlined plate, like the BX / CX tags. */
.post-card__plate {
  display: flex;
  align-items: flex-end;
  height: 100%;
  padding: 1.5rem;
  font-size: clamp(3.5rem, 7vw, 7rem);
  line-height: 0.85;
  color: transparent;
  -webkit-text-stroke: 1px var(--c-accent);
  overflow-wrap: anywhere;
}

.post-card__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 0.75rem;
  padding: 1.5rem;
}

.post-card__title {
  font-size: var(--fs-d4);
  line-height: 0.95;
  text-wrap: balance;
}

.post-card__excerpt {
  max-width: 36rem;
  text-wrap: pretty;
}

.post-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  margin-top: auto;
  padding-top: 1rem;
  border-top: var(--border);
  font-size: 1rem;
}

@media (hover: hover) and (pointer: fine) {
  .post-card__link:hover .post-card__media img {
    transform: scale(1.04);
    filter: none;
  }
  .post-card__link:hover .post-card__title {
    color: var(--c-accent);
  }
}

/* Lead story: full width, image beside copy. */
.post-card--featured {
  grid-column: 1 / -1;
}

.post-card--featured .post-card__link {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
}

.post-card--featured .post-card__media {
  aspect-ratio: 16 / 10;
}

.post-card--featured .post-card__body {
  padding: clamp(1.5rem, 3vw, 2.5rem);
}

.post-card--featured .post-card__title {
  font-size: var(--fs-d2);
}

.empty-state {
  padding-bottom: var(--space-section);
}

@media (max-width: 1100px) {
  .post-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .post-card--featured .post-card__link {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 640px) {
  .post-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ---------- Pagination ------------------------------------------------- */

.pagination {
  padding-bottom: var(--space-section);
}

.pagination ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.pagination a,
.pagination span {
  display: grid;
  place-items: center;
  min-width: 3rem;
  min-height: 3rem;
  padding-inline: 1rem;
  border: var(--border);
  font-weight: 700;
}

.pagination .current {
  border-color: var(--c-accent);
}

/* ---------- Article ---------------------------------------------------- */

.article__head {
  padding-top: calc(var(--header-h) + clamp(2rem, 5vw, 4rem));
}

.article__back {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 2.75rem;
  font-weight: 700;
  color: var(--c-text-muted);
}

.article__back-arrow {
  width: 1rem;
  height: 1rem;
  color: var(--c-accent);
  transform: rotate(-90deg);
}

@media (hover: hover) and (pointer: fine) {
  .article__back:hover {
    color: var(--c-text);
  }
}

.article__title {
  margin-top: clamp(2.5rem, 6vw, 5rem);
  font-weight: inherit;
}

.article__title .display {
  display: block;
  max-width: 22ch;
  font-size: var(--fs-d2);
  text-wrap: balance;
}

.article__meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: var(--space-block) 0 0;
  border-block: var(--border);
}

.article__meta > div {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  padding: 1rem 0;
}

.article__meta > div + div {
  padding-left: 1.5rem;
  border-left: var(--border);
}

.article__meta dt {
  font-size: 1.5rem;
}

.article__meta dd {
  margin: 0;
  font-weight: 700;
}

.article__meta dd a {
  display: inline-block;
  padding-block: 0.25rem; /* 24px+ tap target */
}

@media (hover: hover) and (pointer: fine) {
  .article__meta a:hover {
    color: var(--c-accent);
  }
}

.article__hero {
  margin-top: 8px;
}

.article__hero img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.article__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  padding-block: var(--space-section);
}

.article__body .prose {
  grid-column: 2;
}

@media (max-width: 900px) {
  .article__meta {
    grid-template-columns: minmax(0, 1fr);
  }
  .article__meta > div + div {
    padding-left: 0;
    border-left: 0;
    border-top: var(--border);
  }
  .article__body {
    grid-template-columns: minmax(0, 1fr);
  }
  .article__body .prose {
    grid-column: 1;
  }
}

/* ---------- Long-form prose -------------------------------------------- */

.prose {
  max-width: 46rem;
  color: var(--c-text-muted);
  font-size: var(--fs-body);
  line-height: 1.6;
  letter-spacing: -0.02em;
}

.prose > * + * {
  margin-top: 1.25em;
}

.prose h2 {
  margin-top: 2.5em;
  font-family: var(--font-display);
  font-size: var(--fs-d4);
  font-weight: 600;
  line-height: 0.95;
  letter-spacing: var(--ls-display);
  text-transform: uppercase;
  color: var(--c-text);
  text-wrap: balance;
}

.prose h3,
.prose h4 {
  margin-top: 2em;
  font-size: var(--fs-lead);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.03em;
  color: var(--c-text);
}

.prose h2 + *,
.prose h3 + *,
.prose h4 + * {
  margin-top: 0.75em;
}

.prose strong,
.prose b {
  color: var(--c-text);
}

.prose a {
  color: var(--c-text);
  text-decoration: underline;
  text-decoration-color: var(--c-accent);
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}

@media (hover: hover) and (pointer: fine) {
  .prose a:hover {
    color: var(--c-accent);
  }
}

.prose ul,
.prose ol {
  padding-left: 1.25em;
}

.prose ul {
  list-style: square;
}

.prose ol {
  list-style: decimal;
}

.prose li + li {
  margin-top: 0.5em;
}

.prose li::marker {
  color: var(--c-accent);
}

.prose blockquote {
  margin-inline: 0;
  padding-left: 1.5rem;
  border-left: 3px solid var(--c-accent);
  font-size: var(--fs-lead);
  font-weight: 700;
  line-height: 1.3;
  color: var(--c-text);
}

/* Editor media never outgrows the column (block figures can lay out at the
   image's intrinsic width otherwise). */
.prose figure,
.prose .wp-block-image,
.prose img,
.prose video,
.prose iframe {
  max-width: 100%;
  margin-inline: 0;
}

.prose .wp-block-image {
  display: block;
}

.prose img {
  height: auto;
}

.prose figcaption {
  margin-top: 0.5rem;
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  letter-spacing: 0;
}

.prose hr {
  border: 0;
  border-top: var(--border);
}

.prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: 1rem;
}

.prose th,
.prose td {
  padding: 0.75rem;
  border: var(--border);
  text-align: left;
}

.prose code {
  padding: 0.1em 0.35em;
  background: var(--c-surface-2);
  font-size: 0.9em;
}

/* ---------- Keep reading ----------------------------------------------- */

.keep-reading {
  padding-top: var(--space-block);
  border-top: var(--border);
}

.keep-reading .section-heading {
  margin-bottom: var(--space-block);
}

/* ---------- Generic pages ---------------------------------------------- */

.page-shell__body {
  padding-bottom: var(--space-section);
}

/* ---------- WooCommerce ------------------------------------------------ */

.shop {
  padding-top: calc(var(--header-h) + clamp(2rem, 5vw, 4rem));
  padding-bottom: var(--space-section);
}

.woocommerce-breadcrumb {
  margin-bottom: 2rem;
  font-size: var(--fs-small);
  color: var(--c-text-muted);
}

.woocommerce-breadcrumb a,
.woocommerce div.product .product_meta a {
  display: inline-block;
  padding-block: 0.25rem; /* 24px+ tap target */
  color: var(--c-text);
  text-decoration: underline;
  text-decoration-color: var(--c-accent);
  text-underline-offset: 3px;
}

.shop .product_title,
.shop .page-title {
  font-family: var(--font-display);
  font-size: var(--fs-d2);
  font-weight: 600;
  line-height: var(--lh-display);
  letter-spacing: var(--ls-display);
  text-transform: uppercase;
}

.shop .price {
  display: block;
  margin-block: 1rem;
  font-size: var(--fs-h3);
  font-weight: 700;
  color: var(--c-text);
}

.shop .price del {
  color: var(--c-text-dim);
}

.shop .price ins {
  text-decoration: none;
}

.shop .woocommerce-product-details__short-description,
.shop .woocommerce-Tabs-panel {
  color: var(--c-text-muted);
}

/* Woo's own buttons take the site's button treatment. */
.woocommerce .button,
.woocommerce button.button,
.woocommerce a.button,
.woocommerce input.button,
.wc-block-components-button:not(.is-link) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 3.5rem;
  padding: 0.875rem 1.25rem;
  border: 1px solid transparent;
  border-radius: 0;
  background: var(--c-accent);
  color: var(--c-on-accent);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  font-weight: 700;
  letter-spacing: var(--ls-tight);
  cursor: pointer;
  transition: background-color var(--dur-fast) ease;
}

.woocommerce .button:hover,
.wc-block-components-button:not(.is-link):hover {
  background: var(--c-accent-press);
  color: var(--c-on-accent);
}

.woocommerce .quantity .qty,
.woocommerce input.input-text,
.woocommerce select,
.woocommerce textarea,
.shop-flow input:not([type='checkbox'], [type='radio']),
.shop-flow select,
.shop-flow textarea {
  min-height: 3.5rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--c-line);
  border-radius: 0;
  background: var(--c-bg);
  color: var(--c-text);
}

.woocommerce input:focus-visible,
.shop-flow input:focus-visible,
.shop-flow select:focus-visible {
  outline: 2px solid var(--c-accent);
  outline-offset: 0;
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.wc-block-components-notice-banner {
  padding: 1rem 1.25rem;
  border: 1px solid var(--c-line);
  border-left: 3px solid var(--c-accent);
  border-radius: 0;
  background: var(--c-surface);
  color: var(--c-text);
  list-style: none;
}

/* Block-based cart / checkout inherit the dark tokens. */
.shop-flow {
  --wp--preset--color--contrast: var(--c-text);
  --wp--preset--color--base: var(--c-bg);
  color: var(--c-text);
}

.shop-flow .wc-block-components-sidebar,
.shop-flow .wc-block-components-totals-wrapper,
.shop-flow .wc-block-cart-items,
.shop-flow .wc-block-components-panel {
  border-color: var(--c-line);
}

.shop-flow .wc-block-components-text-input input,
.shop-flow .wc-block-components-combobox .wc-block-components-combobox-control input,
.shop-flow .wc-blocks-components-select .wc-blocks-components-select__select {
  border-radius: 0;
  border-color: var(--c-line);
  background: var(--c-bg);
  color: var(--c-text);
}

.shop-flow .wc-block-components-text-input label,
.shop-flow .wc-blocks-components-select__label {
  color: var(--c-text-muted);
}

.shop-flow .wc-block-components-order-summary,
.shop-flow .wc-block-components-checkout-step__description,
.shop-flow .wc-block-components-product-metadata {
  color: var(--c-text-muted);
}

/* My Account: navigation as a bordered list like the footer nav. */
.woocommerce-account .woocommerce {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 3fr);
  gap: 3rem;
}

.woocommerce-MyAccount-navigation ul {
  border-top: var(--border);
}

.woocommerce-MyAccount-navigation a {
  display: block;
  padding: 1rem 0;
  border-bottom: var(--border);
  font-weight: 700;
}

.woocommerce-MyAccount-navigation .is-active a {
  color: var(--c-accent);
}

.woocommerce table.shop_table {
  width: 100%;
  border-collapse: collapse;
  border: var(--border);
  border-radius: 0;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
  padding: 1rem;
  border-top: var(--border);
  text-align: left;
}

@media (max-width: 900px) {
  .woocommerce-account .woocommerce {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ---------- Store: catalogue ------------------------------------------- */

.archive-head__intro {
  max-width: 44rem;
  margin-top: 1.5rem;
  text-wrap: pretty;
}

.product-card__summary {
  font-size: 1rem;
  text-wrap: pretty;
}

.product-card__meta {
  align-items: center;
}

.product-card__price {
  font-size: var(--fs-lead);
  font-weight: 700;
  color: var(--c-text);
}

.product-card__price del {
  margin-right: 0.375rem;
  font-size: 1rem;
  color: var(--c-text-dim);
}

.product-card__price ins {
  text-decoration: none;
}

.product-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-weight: 700;
}

.product-card__arrow {
  width: 1rem;
  height: 1rem;
  color: var(--c-accent);
  transition: transform var(--dur-base) var(--ease-out);
}

@media (hover: hover) and (pointer: fine) {
  .post-card__link:hover .product-card__arrow {
    transform: translate(3px, -3px);
  }
}

/* ---------- Store: single item ----------------------------------------- */

.woocommerce div.product {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: 8px clamp(2rem, 6vw, 6rem);
  align-items: start;
}

.woocommerce div.product div.images,
.woocommerce div.product div.summary {
  float: none;
  width: auto;
  margin: 0;
}

.woocommerce div.product div.images {
  background: var(--c-surface);
}

.woocommerce div.product .product-plate {
  aspect-ratio: 4 / 3;
  background: var(--c-surface);
}

.woocommerce div.product .product-plate .post-card__plate {
  font-size: clamp(4rem, 9vw, 9rem);
}

.woocommerce div.product form.cart {
  display: flex;
  gap: 8px;
  margin-block: 2rem;
}

.woocommerce div.product form.cart .quantity .qty {
  width: 5rem;
  text-align: center;
}

.woocommerce div.product form.cart .single_add_to_button,
.woocommerce div.product form.cart button[type='submit'] {
  flex: 1;
}

.woocommerce div.product .product_meta {
  padding-top: 1rem;
  border-top: var(--border);
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  letter-spacing: 0;
}

/* Description / reviews tabs → one long-form section */
.woocommerce div.product .woocommerce-tabs,
.woocommerce div.product .related,
.woocommerce div.product .upsells {
  grid-column: 1 / -1;
  margin-top: var(--space-block);
  padding-top: var(--space-block);
  border-top: var(--border);
}

.woocommerce div.product .woocommerce-tabs ul.tabs {
  display: flex;
  gap: 0.5rem;
  margin: 0 0 2rem;
  padding: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after {
  display: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
  display: inline-flex;
  align-items: center;
  min-height: 2.5rem;
  padding: 0.25rem 1rem;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-tag);
  font-weight: 500;
  color: var(--c-text-muted);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
  border-color: var(--c-accent);
  color: var(--c-text);
}

.woocommerce div.product .woocommerce-Tabs-panel {
  max-width: 46rem;
  line-height: 1.6;
}

.woocommerce div.product .woocommerce-Tabs-panel > h2:first-child {
  display: none; /* repeats the tab label */
}

.woocommerce div.product .related > h2,
.woocommerce div.product .upsells > h2 {
  margin-bottom: var(--space-block);
  font-family: var(--font-display);
  font-size: var(--fs-d2);
  font-weight: 600;
  line-height: var(--lh-display);
  letter-spacing: var(--ls-display);
  text-transform: uppercase;
}

.woocommerce div.product .related .products,
.woocommerce div.product .upsells .products {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
  display: none;
}

.woocommerce ul.products li.product {
  float: none;
  width: auto;
  margin: 0;
}

@media (max-width: 900px) {
  .woocommerce div.product {
    grid-template-columns: minmax(0, 1fr);
  }
  .woocommerce div.product .related .products,
  .woocommerce div.product .upsells .products {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ---------- Legal pages ------------------------------------------------ */

.legal__updated {
  margin-top: 1.25rem;
  font-size: 1rem;
}

.legal__updated time {
  color: var(--c-text);
}

.legal__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  gap: 3rem;
  align-items: start;
  padding-bottom: var(--space-section);
}

.legal__nav {
  position: sticky;
  top: calc(var(--header-h) + 2rem);
}

.legal__nav ol {
  border-top: var(--border);
}

.legal__nav a {
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
  padding: 0.875rem 0;
  border-bottom: var(--border);
  font-weight: 700;
  color: var(--c-text-muted);
  transition: color var(--dur-fast) ease;
}

.legal__nav a[aria-current='page'] {
  color: var(--c-text);
}

/* Current page: a red bar, not red small text (red on black is only AA at large sizes). */
.legal__nav a[aria-current='page'] {
  box-shadow: inset 3px 0 0 var(--c-accent);
  padding-left: 0.75rem;
}

.legal__nav a[aria-current='page'] .index {
  color: var(--c-text);
}

@media (hover: hover) and (pointer: fine) {
  .legal__nav a:hover {
    color: var(--c-text);
  }
}

/* On the /legal/ index the list is the content, so the side nav hides. */
.page-legal-index .legal__nav {
  display: none;
}

.page-legal-index .legal__body {
  grid-template-columns: minmax(0, 1fr);
}

.prose ul.legal__list {
  margin-top: 2rem;
  padding: 0;
  list-style: none;
  border-top: var(--border);
}

.prose .legal__list li + li {
  margin-top: 0;
}

.prose .legal__list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-block: 1.25rem;
  border-bottom: var(--border);
  color: var(--c-text);
  text-decoration: none;
}

.legal__list .display {
  font-size: var(--fs-d4);
}

.legal__list-arrow {
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
  color: var(--c-accent);
  transition: transform var(--dur-base) var(--ease-out);
}

@media (hover: hover) and (pointer: fine) {
  .prose .legal__list a:hover {
    color: var(--c-accent);
  }
  .prose .legal__list a:hover .legal__list-arrow {
    transform: translate(4px, -4px);
  }
}

/* Unfilled "[placeholders]" from the seed text: impossible to miss. */
.prose mark.todo {
  padding: 0 0.25em;
  background: none;
  outline: 1px dashed var(--c-accent);
  color: var(--c-text);
}

@media (max-width: 900px) {
  .legal__body {
    grid-template-columns: minmax(0, 1fr);
  }
  .legal__nav {
    position: static;
    order: 2;
  }
}

/* ---------- Block cart / checkout: WooCommerce ships its own light form
   styles with high specificity; these win so fields match the site. ------ */

body .wc-block-components-form .wc-block-components-text-input input[type],
body .wc-block-components-text-input input[type],
body .wc-block-components-textarea,
body .wc-blocks-components-select .wc-blocks-components-select__container,
body .wc-block-components-combobox .wc-block-components-combobox-control input.components-combobox-control__input {
  border: 1px solid var(--c-line);
  border-radius: 0;
  background: var(--c-bg);
  color: var(--c-text);
  box-shadow: none;
}

body .wc-blocks-components-select .wc-blocks-components-select__select {
  background: transparent;
  color: var(--c-text);
}

body .wc-block-components-form .wc-block-components-text-input input[type]:focus,
body .wc-block-components-text-input input:focus,
body .wc-blocks-components-select .wc-blocks-components-select__container:focus-within {
  border-color: var(--c-accent);
  box-shadow: 0 0 0 1px var(--c-accent);
}

body .wc-block-components-text-input label,
body .wc-block-components-text-input.is-active label,
body .wc-blocks-components-select .wc-blocks-components-select__label {
  color: var(--c-text-muted);
}

body .wc-block-components-checkbox .wc-block-components-checkbox__input[type='checkbox'] {
  border: 1px solid var(--c-line);
  border-radius: 0;
  background: var(--c-bg);
}

body .wc-block-components-checkbox .wc-block-components-checkbox__mark {
  fill: var(--c-accent);
}

body .wc-block-components-notice-banner,
body .wc-block-components-notice-banner.is-error,
body .wc-block-components-notice-banner.is-info {
  border: 1px solid var(--c-line);
  border-left: 3px solid var(--c-accent);
  border-radius: 0;
  background: var(--c-surface);
  color: var(--c-text);
}

body .wc-block-components-notice-banner > svg {
  fill: var(--c-accent);
  background: none;
}

body .wc-block-checkout__terms,
body .wc-block-checkout__terms a,
body .wc-block-components-checkout-step__description {
  color: var(--c-text-muted);
}

body .wc-block-checkout__terms a {
  color: var(--c-text);
  text-decoration-color: var(--c-accent);
}

body .wc-block-components-order-summary-item__image img {
  background: var(--c-surface-2);
}

body .wc-block-components-totals-wrapper,
body .wc-block-components-sidebar-layout .wc-block-components-main,
body .wp-block-woocommerce-checkout-order-summary-block {
  border-color: var(--c-line);
  border-radius: 0;
}

/* ---------- Events (The Events Calendar) -------------------------------
   The plugin exposes its colours as --tec-* custom properties; they are
   mapped to the site tokens here instead of overriding its selectors. */

:root {
  --tec-font-family-sans-serif: var(--font-sans);
  /* Align the calendar with the site grid: full width, site gutter. */
  --tec-grid-width: 100%;
  --tec-grid-width-default: 100%;
  --tec-grid-gutter-page: var(--gutter);
  --tec-grid-gutter-page-small: var(--gutter);
  --tec-color-background: var(--c-bg);
  --tec-color-background-events: var(--c-bg);
  --tec-color-background-secondary: var(--c-surface);
  --tec-color-background-secondary-hover: var(--c-surface-2);
  --tec-color-background-events-bar: var(--c-surface);
  --tec-color-background-search-container: var(--c-surface);
  --tec-color-background-view-selector: var(--c-surface);
  --tec-color-background-view-selector-tabs: var(--c-surface);
  --tec-color-background-view-selector-list-item-hover: var(--c-surface-2);
  --tec-color-background-subscribe-list-item-hover: var(--c-surface-2);
  --tec-color-background-month-grid: var(--c-bg);
  --tec-color-background-messages: var(--c-surface);
  --tec-color-background-tooltip: var(--c-surface-2);
  --tec-color-background-secondary-datepicker: var(--c-surface);
  --tec-color-background-primary-multiday: var(--c-accent);
  --tec-color-background-primary-multiday-hover: var(--c-accent-press);
  --tec-color-background-secondary-multiday: var(--c-surface-2);
  --tec-color-background-secondary-multiday-hover: var(--c-line);
  --tec-color-background-events-bar-submit-button: var(--c-accent);
  --tec-color-background-events-bar-submit-button-hover: var(--c-accent-press);
  --tec-color-background-events-bar-submit-button-active: var(--c-accent-press);
  --tec-color-text-events-bar-submit-button: var(--c-on-accent);
  --tec-color-text-events-bar-submit-button-hover: var(--c-on-accent);
  --tec-color-text-events-bar-submit-button-active: var(--c-on-accent);

  --tec-color-text-primary: var(--c-text);
  --tec-color-text-primary-light: var(--c-text-muted);
  --tec-color-text-secondary: var(--c-text-muted);
  --tec-color-text-disabled: var(--c-text-dim);
  --tec-color-text-event-title: var(--c-text);
  --tec-color-text-event-title-list: var(--c-text);
  --tec-color-text-events-title: var(--c-text);
  --tec-color-text-event-date: var(--c-text-muted);
  --tec-color-text-secondary-event-date: var(--c-text-muted);
  --tec-color-text-day-of-week-month: var(--c-text-muted);
  --tec-color-text-view-selector-list-item: var(--c-text);
  --tec-color-text-view-selector-list-item-hover: var(--c-text);
  --tec-color-text-events-bar-input: var(--c-text);
  --tec-color-text-events-bar-input-placeholder: var(--c-text-muted);

  --tec-color-border-default: var(--c-line);
  --tec-color-border-secondary: var(--c-line);
  --tec-color-border-tertiary: var(--c-text-dim);
  --tec-color-border-hover: var(--c-text-muted);
  --tec-color-border-active: var(--c-accent);
  --tec-color-border-events-bar: var(--c-line);
  --tec-color-border-secondary-month-grid: var(--c-line);

  --tec-color-accent-primary: var(--c-accent);
  --tec-color-accent-primary-hover: var(--c-accent-press);
  --tec-color-accent-primary-active: var(--c-accent-press);
  --tec-color-accent-primary-background: color-mix(in srgb, var(--c-accent) 20%, transparent);
  --tec-color-accent-secondary: var(--c-text);
  --tec-color-button-primary: var(--c-accent);
  --tec-color-button-primary-hover: var(--c-accent-press);
  --tec-color-button-primary-active: var(--c-accent-press);
  --tec-color-button-primary-background: color-mix(in srgb, var(--c-accent) 15%, transparent);
  --tec-color-button-secondary: var(--c-text);
  --tec-color-link-primary: var(--c-text);
  --tec-color-link-accent: var(--c-text);
  --tec-color-link-accent-hover: var(--c-accent);

  --tec-color-icon-primary: var(--c-accent);
  --tec-color-icon-primary-alt: var(--c-accent);
  --tec-color-icon-secondary: var(--c-text-muted);
  --tec-color-icon-active: var(--c-text);
  --tec-color-icon-events-bar: var(--c-text-muted);
  --tec-color-icon-events-bar-hover: var(--c-text);
  --tec-color-icon-events-bar-active: var(--c-text);
  --tec-color-icon-focus: var(--c-accent);
  --tec-color-event-icon: var(--c-text-muted);
  --tec-color-event-icon-hover: var(--c-text);
  --tec-color-day-marker-month: var(--c-text-muted);
  --tec-color-day-marker-current-month: var(--c-text);
  --tec-color-day-marker-past-month: var(--c-text-dim);
  --tec-color-box-shadow: rgb(0 0 0 / 0.5);
  --tec-color-box-shadow-secondary: rgb(0 0 0 / 0.5);
}

/* Page head above the calendar views, in the site's style. */
.events-head {
  padding-top: calc(var(--header-h) + clamp(3rem, 8vw, 7rem));
  padding-bottom: 1rem;
}

.events-head .section-heading__title {
  font-size: var(--fs-d1);
}

.events-head__intro {
  max-width: 40rem;
  margin-top: 1.5rem;
  text-wrap: pretty;
}

.tribe-common.tribe-events,
.tribe-events-pg-template {
  padding-bottom: var(--space-section);
}

/* Square corners and display type, like the rest of the site. */
.tribe-common .tribe-common-c-btn,
.tribe-common .tribe-events-c-search__button,
.tribe-events .tribe-events-c-subscribe-dropdown__button,
.tribe-events .tribe-events-c-top-bar__today-button,
.tribe-common .tribe-events-c-events-bar__search-container,
.tribe-events .tribe-events-c-events-bar,
.tribe-events .tribe-events-c-view-selector__content {
  border-radius: 0 !important;
}

.tribe-common .tribe-events-calendar-list__event-title,
.tribe-common .tribe-events-calendar-list__event-title-link,
.tribe-events-single .tribe-events-single-event-title {
  font-family: var(--font-display);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: var(--ls-display);
  line-height: 0.95;
}

.tribe-common .tribe-events-calendar-list__event-title-link {
  font-size: var(--fs-d4);
}

.tribe-events-single .tribe-events-single-event-title {
  font-size: var(--fs-d2);
  color: var(--c-text);
}

.tribe-events-single {
  padding-top: calc(var(--header-h) + clamp(2rem, 5vw, 4rem));
}

.tribe-events-single .tribe-events-content,
.tribe-events-single .tribe-events-meta-group,
.tribe-events-single .tribe-events-meta-group dd,
.tribe-events-single .tribe-events-meta-group dt {
  color: var(--c-text-muted);
}

.tribe-events-single .tribe-events-meta-group .tribe-events-single-section-title,
.tribe-events-single .tribe-events-schedule h2 {
  color: var(--c-text);
}

.tribe-events-single a {
  color: var(--c-text);
}

/* The plugin's row gutters use negative margins that poke past the
   viewport on phones; clip them at the calendar container. */
.tribe-events .tribe-events-l-container {
  overflow-x: clip;
}

/* Subscribe / Add to calendar: white label (red small text fails AA). */
.tribe-events .tribe-events-c-subscribe-dropdown__button,
.tribe-events .tribe-events-c-subscribe-dropdown__button-text {
  color: var(--c-text) !important;
}

/* ---------- Store: conversion fixes (inc/shop-cro.php, assets/shop.js) ---- */

/* The saving, next to every sale price. */
.price-saving {
  display: inline-block;
  margin-left: 0.625rem;
  padding: 0.125rem 0.5rem;
  background: var(--c-accent);
  color: var(--c-on-accent);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0;
  vertical-align: middle;
}

.product-card__price .price-saving {
  display: table;
  margin: 0.375rem 0 0;
}

.shop .stock {
  margin-block: 0.5rem 0;
  font-size: 1rem;
  font-weight: 700;
}

.shop .stock.in-stock::before {
  content: '';
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  margin-right: 0.5rem;
  background: var(--c-online);
  vertical-align: 0.1em;
}

.shop .stock.out-of-stock {
  color: var(--c-text-muted);
}

/* Delivery and trust under the add to cart button. */
.buy-notes {
  display: grid;
  gap: 0.5rem;
  margin: -0.5rem 0 2rem;
  font-size: 1rem;
  color: var(--c-text-muted);
}

.buy-notes a {
  color: var(--c-text);
  text-decoration: underline;
  text-decoration-color: var(--c-accent);
  text-underline-offset: 3px;
}

/* Catalogue toolbar: product count and sorting. */
.shop-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 2rem;
}

.shop-toolbar .woocommerce-result-count {
  margin: 0;
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  letter-spacing: 0;
}

.shop-toolbar .woocommerce-ordering {
  margin: 0;
}

.shop-toolbar select {
  min-height: 2.75rem;
  padding: 0.5rem 2.5rem 0.5rem 1rem;
  border: var(--border);
  border-radius: 0;
  background: var(--c-bg)
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' fill='none' stroke='%23eeeeee' stroke-width='1.5'/%3E%3C/svg%3E")
    no-repeat right 1rem center / 0.75rem;
  color: var(--c-text);
  font-size: 1rem;
  appearance: none;
}

.archive-head .woocommerce-breadcrumb {
  margin-bottom: 1.5rem;
}

/* Product cards: rating and quick add. */
.product-card {
  display: flex;
  flex-direction: column;
}

.product-card .post-card__link {
  flex: 1;
}

.product-card__rating {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 0.5rem;
  font-size: var(--fs-small);
}

.product-card__actions {
  margin-top: 1rem;
}

.product-card__add,
.woocommerce a.product-card__add {
  width: 100%;
  min-height: 3rem;
  padding: 0.625rem 1rem;
  background: transparent;
  border: var(--border);
  color: var(--c-text);
  font-size: 1rem;
  font-weight: 700;
}

.product-card__add.loading {
  opacity: 0.6;
}

.product-card .added_to_cart {
  display: none; /* the cart drawer opens instead */
}

@media (hover: hover) and (pointer: fine) {
  .product-card__add:hover,
  .woocommerce a.product-card__add:hover {
    background: var(--c-accent);
    border-color: var(--c-accent);
    color: var(--c-on-accent);
  }
}

/* Sticky add to cart, phones only, once the main button scrolls away. */
.sticky-buy {
  position: fixed;
  inset: auto 0 0;
  z-index: calc(var(--z-header) - 1);
  display: none;
  align-items: center;
  gap: 1rem;
  padding: 0.75rem var(--gutter) calc(0.75rem + env(safe-area-inset-bottom));
  background: var(--c-bg);
  border-top: var(--border);
  transform: translateY(100%);
  transition: transform var(--dur-base) var(--ease-out);
}

.sticky-buy[data-show='true'] {
  transform: none;
}

.sticky-buy__info {
  display: grid;
  min-width: 0;
  flex: 1;
}

.sticky-buy__name {
  overflow: hidden;
  font-size: 0.9375rem;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sticky-buy__price {
  font-size: 0.9375rem;
  color: var(--c-text-muted);
}

.woocommerce .sticky-buy__button,
.sticky-buy__button {
  min-height: 3rem;
  padding: 0.5rem 1.25rem;
}

@media (max-width: 900px) {
  .sticky-buy:not([hidden]) {
    display: flex;
  }
}

/* Back-in-stock alert. */
.stock-alert {
  margin-block: 2rem;
  padding: 1.25rem;
  border: var(--border);
}

.stock-alert__label {
  display: block;
  margin-bottom: 0.75rem;
  font-weight: 700;
}

.stock-alert__row {
  display: flex;
  gap: 8px;
}

.stock-alert__row input {
  flex: 1;
  min-width: 0;
}

.stock-alert__note,
.stock-alert__error {
  margin-top: 0.75rem;
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  letter-spacing: 0;
}

.stock-alert__error {
  color: var(--c-text);
}

/* Free delivery progress: a bar under the message. */
.free-delivery {
  --progress: 0;
  margin: 0;
  font-size: 0.9375rem;
  font-weight: 700;
}

.free-delivery::after {
  content: '';
  display: block;
  height: 4px;
  margin-top: 0.5rem;
  background: linear-gradient(90deg, var(--c-accent) calc(var(--progress) * 100%), var(--c-line) 0);
}

/* Cart drawer */
.cart-drawer {
  position: fixed;
  inset: 0;
  z-index: calc(var(--z-menu) + 2);
}

.cart-drawer[hidden] {
  display: none;
}

.cart-drawer__scrim {
  position: absolute;
  inset: 0;
  background: rgb(0 0 0 / 0.7);
  opacity: 0;
  transition: opacity var(--dur-base) ease;
}

.cart-drawer__panel {
  position: absolute;
  inset: 0 0 0 auto;
  display: flex;
  flex-direction: column;
  width: min(28rem, 100%);
  background: var(--c-bg);
  border-left: var(--border);
  transform: translateX(calc(100% * var(--motion)));
  opacity: 0;
  transition:
    transform var(--dur-base) var(--ease-out),
    opacity var(--dur-base) ease;
  outline: none;
}

.cart-drawer[data-open='true'] .cart-drawer__scrim,
.cart-drawer[data-open='true'] .cart-drawer__panel {
  opacity: 1;
  transform: none;
}

.drawer-open body {
  overflow: hidden;
}

.cart-drawer__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem var(--gutter-drawer, 1.5rem);
  border-bottom: var(--border);
}

.cart-drawer__head h2 {
  font-size: var(--fs-d4);
}

.cart-drawer__close {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: var(--border);
}

.cart-drawer__close svg {
  width: 14px;
  height: 14px;
}

.cart-drawer__body {
  flex: 1;
  overflow-y: auto;
  padding: 1.25rem 1.5rem;
}

.cart-drawer__items {
  display: grid;
  gap: 1rem;
}

.cart-drawer__item {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 1rem;
  align-items: center;
  padding-bottom: 1rem;
  border-bottom: var(--border);
  font-size: 1rem;
}

.cart-drawer__item img {
  width: 72px;
  height: 72px;
  object-fit: cover;
  background: var(--c-surface);
}

.cart-drawer__name {
  display: grid;
  gap: 0.25rem;
  font-weight: 700;
}

.cart-drawer__name .muted {
  font-weight: 500;
  font-size: var(--fs-small);
}

.cart-drawer__foot {
  display: grid;
  gap: 1rem;
  padding: 1.25rem 1.5rem calc(1.25rem + env(safe-area-inset-bottom));
  border-top: var(--border);
}

.cart-drawer__subtotal {
  display: flex;
  justify-content: space-between;
  font-size: var(--fs-lead);
}

.cart-drawer .cart-drawer__checkout {
  width: 100%;
}

.cart-drawer__links {
  display: flex;
  justify-content: space-between;
  font-size: 1rem;
}

.cart-drawer__links a,
.cart-drawer__links button {
  padding-block: 0.5rem;
  text-decoration: underline;
  text-decoration-color: var(--c-accent);
  text-underline-offset: 3px;
}

.cart-drawer__secure {
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  letter-spacing: 0;
}

/* Block cart / checkout order summary extras */
.order-extras {
  display: grid;
  gap: 0.875rem;
  padding: 1rem 0;
}

.order-extras__secure {
  margin: 0;
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  letter-spacing: 0;
}

.order-extras a {
  color: var(--c-text);
  text-decoration: underline;
  text-decoration-color: var(--c-accent);
  text-underline-offset: 3px;
}

.order-extras__continue {
  justify-self: start;
  font-size: 1rem;
  font-weight: 700;
}

/* Focused checkout: logo, "Secure checkout" and a way back, nothing else. */
.checkout-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem var(--gutter);
  border-bottom: var(--border);
}

.checkout-head__logo img {
  width: 96px;
}

.checkout-head__secure {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 700;
}

.checkout-head__secure svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: var(--c-online);
  stroke-width: 1.8;
}

.checkout-head__back {
  font-size: 1rem;
  text-decoration: underline;
  text-decoration-color: var(--c-accent);
  text-underline-offset: 3px;
}

/* The header isn't fixed here, so the page doesn't need to clear it. */
body:has(.checkout-head) .archive-head {
  padding-top: clamp(2rem, 5vw, 4rem);
}

.checkout-foot {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem 2rem;
  padding: 2rem var(--gutter);
  border-top: var(--border);
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  letter-spacing: 0;
}

.checkout-foot ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
}

.checkout-foot a {
  display: inline-block;
  padding-block: 0.25rem;
  color: var(--c-text);
}

@media (max-width: 640px) {
  .checkout-head__back {
    display: none; /* the logo and the browser's back cover it */
  }
}

/* Design subscription: next steps on the thank-you page (mu-plugins/artive-subscriptions.php). */
.ds-next {
  display: grid;
  gap: 1rem;
  margin-block: 2rem;
  padding: clamp(1.25rem, 3vw, 2rem);
  border: var(--border);
  border-left: 4px solid var(--c-accent);
  background: var(--c-surface);
}

.ds-next h2 {
  font-family: var(--font-display);
  font-size: var(--fs-d4);
  font-weight: 600;
  line-height: var(--lh-display);
  text-transform: uppercase;
}

.ds-next p {
  margin: 0;
  color: var(--c-text-muted);
}
