/* Pre-launch readability and consistency pass.
   Generated from the theme's own selectors: every rule that rendered text below
   12px is restated here at 12px, and action controls at 13px. Loaded after all
   module stylesheets so identical selectors win on source order. No layout,
   colour or content changes. */

/* Minimum readable size: labels, meta and captions (78 rules) */
.cart-count,
.gallery-work-meta,
.journal-card-label,
.nacre-footer-pending small,
.nacre-selection-status,
.nacre-swatch,
.nacre-swatch-copy small,
.nacre-swatch-copy strong,
.nacre-swatch-stock,
.nc-adjust-row small,
.nc-adjust-row>span,
.nc-archive-card-meta small,
.nc-archive-card-meta span,
.nc-archive-footer,
.nc-buy-card small,
.nc-card-facts dt,
.nc-card-state,
.nc-collection-viewer-fallback,
.nc-coming-status,
.nc-current-selection,
.nc-custom-block>.nc-price-note,
.nc-custom-intro small,
.nc-explorer-count,
.nc-explorer-hint,
.nc-filter-block legend,
.nc-filter-choice small,
.nc-home-v2 .nc-book-label,
.nc-home-v2 .nc-category,
.nc-home-v2 .nc-collector-location,
.nc-home-v2 .nc-collector-note,
.nc-home-v2 .nc-craft-caption,
.nc-home-v2 .nc-edition .nc-eyebrow,
.nc-home-v2 .nc-expression-flag,
.nc-home-v2 .nc-expression-no,
.nc-home-v2 .nc-eyebrow,
.nc-home-v2 .nc-film-caption,
.nc-home-v2 .nc-film-state,
.nc-home-v2 .nc-film-title,
.nc-home-v2 .nc-hero .nc-eyebrow,
.nc-home-v2 .nc-hero-bottom,
.nc-home-v2 .nc-lab-references figcaption,
.nc-home-v2 .nc-mosaic .nc-eyebrow,
.nc-home-v2 .nc-mosaic-four .nc-mosaic-image-label,
.nc-home-v2 .nc-mosaic-four .nc-mosaic-middle .nc-eyebrow,
.nc-home-v2 .nc-stagger figcaption,
.nc-home-v2 .nc-status,
.nc-home-v2 .nc-stock,
.nc-my-card-badge,
.nc-my-card-copy small,
.nc-my-card-state,
.nc-my-cards-dev,
.nc-my-cards-loading,
.nc-my-cards-private,
.nc-my-cards-progress strong,
.nc-my-cards-stats span,
.nc-original-row small,
.nc-preview-caption,
.nc-preview-disclaimer,
.nc-preview-sticky>small,
.nc-price-extents,
.nc-product-collection,
.nc-product-purchase-notes span,
.nc-series-node-body small,
.nc-series-node-index,
.nc-series-rail-flag,
.nc-shop-entrance-copy small,
.nc-shop-entrance-copy strong,
.nc-site-search h3,
.nc-size-row small,
.nc-style-card small,
.nc-style-card strong,
.nc-upload-zone small,
.product-card-status,
.product-card-tag,
.site-header .primary-nav>a,
.verified-badge,
body.single-product .nc-product-page .onsale,
body.woocommerce-account .nacre-account-pending small { font-size: 12px; }

/* Buttons, tabs, filters and links (13 rules) */
.nc-adjust-chips button,
.nc-buy-page .nc-product-type-nav a,
.nc-custom-preview .button,
.nc-filter-chip,
.nc-home-v2 .nc-button,
.nc-home-v2 .nc-link,
.nc-home-v2 .nc-mosaic .nc-link,
.nc-home-v2 .nc-mosaic-four .nc-mosaic-middle .nc-link,
.nc-home-v2 .nc-tabs button,
.nc-lightbox-copy .text-link,
.nc-my-card-action,
.nc-preview-actions button,
.nc-size-row span { font-size: 13px; }

/* Individual targets kept at 12px */
.nc-dialog-source,
.nc-entry-status,
.nc-example-link { font-size: 12px; }

/* Individual targets kept at 15px */
.nc-home-v2[lang="en"] .nc-hero .nc-hero-cta { font-size: 15px; }

/* Header navigation: keep it legible on 1301-1500px laptop widths, where a
   module override had dropped it to 10px. */
@media (min-width: 1301px) and (max-width: 1500px) {
  .site-header .primary-nav { gap: 16px; }
  .site-header .primary-nav > a { font-size: 12px; }
}

/* Shared hover/focus feedback for text links and footer navigation. */
/* Browser default for <small> (~0.8em) dropped two labels below the floor. */
small { font-size: 12px; }
.journal-card-label { font-size: 12px; }

.text-link, .nc-example-link, .nc-my-card-action, .footer-inner a, .footer-legal a {
  transition: color 160ms ease, opacity 160ms ease;
}
.text-link:hover, .nc-example-link:hover, .nc-my-card-action:hover,
.footer-inner a:hover, .footer-legal a:hover {
  color: var(--gold);
}
.footer-inner a:focus-visible, .footer-legal a:focus-visible, .text-link:focus-visible {
  outline: 2px solid var(--gold-soft);
  outline-offset: 3px;
}

/* Product page: keep the buy column readable and the purchase action obvious. */
body.single-product .nc-product-page div.product .woocommerce-tabs ul.tabs li a { font-size: 13px; }
body.single-product .nc-product-page .summary .single_add_to_cart_button {
  font-size: 13px;
  letter-spacing: .04em;
  min-height: 48px;
  padding: 0 28px;
}
body.single-product .nc-product-page .summary .woocommerce-product-rating,
body.single-product .nc-product-page .summary .woocommerce-review-link,
body.single-product .nc-product-page .summary .stock {
  font-size: 12px;
}
body.single-product .nc-product-page .nc-product-benefits { font-size: 14px; }
body.single-product .nc-product-page .woocommerce-product-attributes td,
body.single-product .nc-product-page .woocommerce-product-attributes th { font-size: 14px; }

/* My Cosmos member area: dashboard head, modules, member pages. */
.nacre-member-head {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 4px 0 28px;
  border-bottom: 1px solid var(--hairline);
}

.nacre-member-avatar {
  flex: none;
  display: block;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  overflow: hidden;
  border: 1px solid var(--hairline);
  background: var(--paper-muted);
}

.nacre-member-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.nacre-member-intro h2 {
  margin: 6px 0 6px;
  font-family: var(--display);
  font-size: clamp(24px, 2.6vw, 34px);
  font-weight: 400;
  line-height: 1.2;
}

.nacre-member-intro p {
  margin: 0;
  color: var(--text-muted);
  font-size: 15px;
  line-height: 1.7;
}

.nacre-member-modules {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin: 32px 0 0;
}

.nacre-member-module {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  padding: 22px;
  border: 1px solid var(--hairline);
  border-radius: 2px;
}

.nacre-member-module.is-pending {
  background: var(--paper-muted);
}

.nacre-member-module .section-index { margin-bottom: 0; }

.nacre-member-value {
  font-family: var(--display);
  font-size: 40px;
  font-weight: 400;
  line-height: 1;
  color: var(--text);
}

.nacre-member-module p {
  margin: 0;
  color: var(--text-muted);
  font-size: 14px;
  line-height: 1.7;
}

.nacre-member-module .button { margin-top: auto; }

.nacre-member-also { margin: 36px 0 0; }

.nacre-account-shortcuts {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 12px;
}

.nacre-account-shortcuts a {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 0 14px;
  border: 1px solid var(--hairline);
  border-radius: 999px;
  font-size: 13px;
  color: var(--text);
  transition: color 160ms ease, border-color 160ms ease;
}

.nacre-account-shortcuts a:hover,
.nacre-account-shortcuts a:focus-visible { color: var(--gold); border-color: var(--gold); }

.nacre-account-note {
  margin: 28px 0 0;
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.75;
}

.woocommerce-MyAccount-navigation .nacre-account-pending span {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 12px 0;
  color: var(--text-faint);
}

.woocommerce-MyAccount-navigation .nacre-account-pending small {
  font-size: 12px;
  letter-spacing: .04em;
}

/* Member pages (Nacre Points, My Rewards). */
.nacre-member-status {
  padding: 20px 22px;
  border: 1px solid var(--hairline);
  border-left: 3px solid var(--gold);
  background: var(--paper-muted);
}

.nacre-member-status p {
  margin: 0;
  color: var(--text);
  font-size: 16px;
  line-height: 1.7;
}

.nacre-member-rules {
  margin: 28px 0 0;
  padding-left: 20px;
  color: var(--text-muted);
  font-size: 16px;
  line-height: 1.9;
}

.nacre-member-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin: 32px 0 0;
}

.nacre-member-card {
  padding: 24px;
  border: 1px solid var(--hairline);
  border-radius: 2px;
}

.nacre-member-card-flag {
  display: inline-block;
  margin-bottom: 12px;
  padding: 5px 10px;
  border: 1px solid currentColor;
  color: var(--gold);
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.nacre-member-card h2 {
  margin: 0 0 10px;
  font-family: var(--display);
  font-size: 22px;
  font-weight: 400;
  line-height: 1.3;
}

.nacre-member-card p {
  margin: 0;
  color: var(--text-muted);
  font-size: 14px;
  line-height: 1.75;
}

@media (max-width: 900px) {
  .nacre-member-modules,
  .nacre-member-cards {
    grid-template-columns: minmax(0, 1fr);
  }

  .nacre-member-head {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }
}

/* Home hero bottom bar: "SCROLL TO EXPLORE" is replaced by the brand line, which
   keeps the same right-hand slot. The empty first slot preserves the controls'
   position, and the mobile rule that hid the old span no longer applies. */
.nc-home-v2 .nc-hero-bottom > .nc-hero-mark {
  display: block;
  width: 0;
}

.nc-home-v2 .nc-hero-bottom > .nc-hero-signature {
  display: inline-flex;
  align-items: center;
  gap: .4em;
  color: rgba(255, 255, 255, 0.92);
  letter-spacing: .14em;
  text-transform: uppercase;
}

@media (max-width: 700px) {
  .nc-home-v2 .nc-hero-bottom > .nc-hero-signature {
    display: inline-flex;
    letter-spacing: .1em;
  }
}

/* Digital Creations: concept cards carry no link, price or cart action. */
.nc-digital .nc-edition.is-concept .nc-edition-stage { cursor: default; }
.nc-digital .nc-edition.is-concept .nc-eyebrow.is-concept-flag { color: var(--gold); }

/* Nacre Gallery: community framing. */
.community-hero .community-tagline {
  font-family: var(--display);
  font-size: clamp(22px, 2.4vw, 30px);
  line-height: 1.35;
  color: #fff;
  margin: 18px 0 12px;
  max-width: 760px;
}

.community-hero .community-note {
  max-width: 720px;
  font-size: 15px;
  line-height: 1.75;
  color: rgba(255, 255, 255, 0.78);
}

.share-lock.is-coming p { color: rgba(255, 255, 255, 0.84); }

.share-lock .share-coming-flag {
  display: inline-block;
  margin-top: 28px;
  padding: 8px 14px;
  border: 1px solid currentColor;
  font-size: 12px;
  letter-spacing: .14em;
  text-transform: uppercase;
}

/* Journal article: readable text measure with room for wide lead images. */
.noctiluca-journal-post .article-layout { max-width: 1100px; }
.noctiluca-journal-post .article-layout > .back-link,
.noctiluca-journal-post .article-layout > h1,
.noctiluca-journal-post .article-layout > .article-meta { max-width: 780px; margin-left: auto; margin-right: auto; }
.noctiluca-journal-post .article-body { max-width: 780px; }

/* Nacre Gallery: avatar rows, quiet engagement icons and the share entry. */
.community-pending {
  max-width: 620px;
  margin: 8px 0 0;
}

.community-pending p {
  margin: 0 0 20px;
  color: var(--text-muted);
  font-size: 16px;
  line-height: 1.75;
}

.community-pending .button {
  margin-top: 0;
}

.gallery-work-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--hairline);
}

.gallery-author {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.gallery-avatar {
  display: grid;
  place-items: center;
  flex: none;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  overflow: hidden;
  border: 1px solid var(--hairline);
  background: var(--paper-muted);
  color: var(--text-muted);
}

.gallery-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.gallery-avatar.is-brand {
  background: var(--ink);
  border-color: rgba(179, 137, 77, 0.5);
}

.gallery-avatar.is-default svg {
  width: 18px;
  height: 18px;
}

.gallery-author-text {
  display: block;
  min-width: 0;
  line-height: 1.35;
}

.gallery-author-text strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.gallery-author-sub {
  display: block;
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: .04em;
}

.gallery-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: none;
}

.gallery-action {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid var(--hairline);
  border-radius: 50%;
  background: transparent;
  color: var(--text-muted);
  touch-action: manipulation;
  transition: color 160ms ease, border-color 160ms ease, background-color 160ms ease;
}

.gallery-action svg {
  width: 16px;
  height: 16px;
}

.gallery-action:hover,
.gallery-action:focus-visible {
  color: var(--text);
  border-color: var(--gold);
}

.gallery-action.is-on {
  color: var(--gold);
  border-color: var(--gold);
}

.gallery-action.is-on svg {
  fill: currentColor;
}

/* Floating share entry: gallery page only, clear of the bottom-left launcher. */
.gallery-share-fab {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 140;
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  padding: 0;
  border: 1px solid rgba(179, 137, 77, 0.5);
  border-radius: 50%;
  background: #0a0a0b;
  color: #e9eaee;
  box-shadow: 0 12px 30px rgba(15, 14, 12, 0.28);
  touch-action: manipulation;
  transition: transform 200ms ease, border-color 200ms ease, color 200ms ease;
}

.gallery-share-fab svg {
  width: 22px;
  height: 22px;
}

.gallery-share-fab:hover,
.gallery-share-fab:focus-visible {
  transform: translateY(-2px);
  border-color: var(--gold);
  color: var(--gold);
}

.gallery-share-tip {
  position: absolute;
  right: calc(100% + 12px);
  white-space: nowrap;
  padding: 8px 12px;
  border-radius: 2px;
  background: #0a0a0b;
  color: #e9eaee;
  font-size: 12px;
  letter-spacing: .06em;
  opacity: 0;
  visibility: hidden;
  transition: opacity 160ms ease, visibility 160ms ease;
}

.gallery-share-fab:hover .gallery-share-tip,
.gallery-share-fab:focus-visible .gallery-share-tip {
  opacity: 1;
  visibility: visible;
}

/* Keep the transient toast clear of the share entry, on the gallery page only. */
body:has(.gallery-share-fab) .toast {
  bottom: calc(24px + 72px);
}

@media (max-width: 760px) {
  .gallery-work-footer {
    flex-wrap: wrap;
  }

  .gallery-share-fab {
    right: 16px;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    width: 52px;
    height: 52px;
  }

  .gallery-share-tip {
    display: none;
  }

  body:has(.gallery-share-fab) .toast {
    bottom: calc(16px + env(safe-area-inset-bottom, 0px) + 66px);
  }
}

.gallery-share-hint {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  color: var(--text-muted);
}

/* Dialog shell for comments and the share form (reuses the existing form styles). */
.gallery-dialog {
  width: min(520px, calc(100vw - 32px));
  max-height: 86vh;
  overflow: auto;
  padding: 32px;
  border: 1px solid var(--hairline);
  background: #fff;
  color: var(--text);
}

.gallery-dialog-wide {
  width: min(640px, calc(100vw - 32px));
}

.gallery-dialog::backdrop {
  background: rgba(10, 9, 8, 0.62);
}

.gallery-dialog-close {
  float: right;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid var(--hairline);
  border-radius: 50%;
  background: transparent;
  color: var(--text-muted);
  touch-action: manipulation;
}

.gallery-dialog-close svg {
  width: 15px;
  height: 15px;
}

.gallery-dialog h2 {
  margin: 10px 0 0;
  font-family: var(--display);
  font-size: 26px;
  font-weight: 400;
}

.gallery-dialog-note {
  margin: 12px 0 18px;
  color: var(--text-muted);
  font-size: 14px;
  line-height: 1.7;
}

.gallery-dialog textarea {
  display: block;
  width: 100%;
  box-sizing: border-box;
  min-height: 96px;
  padding: 12px 14px;
  margin-bottom: 16px;
  border: 1px solid var(--hairline);
  background: var(--paper-muted);
  color: var(--text);
  font: inherit;
  resize: vertical;
}

/* Announcement bar: solid black, silver-white, centred and static (no marquee).
   Overrides the later dark-gradient variant in styles.css. */
.promo-strip {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 36px;
  padding: 0 16px;
  background: #0a0a0b;
  color: #e9eaee;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .05em;
  text-align: center;
  overflow: hidden;
}

.promo-strip > span {
  white-space: nowrap;
}

/* homepage.css hid the bar on the home page so the full-bleed hero could sit under
   the transparent header. Show it there as a fixed bar and offset the fixed header
   and page by the same height, so the hero still starts right under the header. */
/* Announcement height lives on <body> so a route that hides the bar also releases
   the space it occupied (no leftover gap above the header). */
body {
  --nacre-promo-h: 36px;
}

body.nacre-promo-off {
  --nacre-promo-h: 0px;
}

body.nacre-promo-off .promo-strip {
  display: none;
}

.nc-home-v2-active {
  padding-top: var(--nacre-promo-h);
}

.nc-home-v2-active .promo-strip {
  display: flex;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 120;
}

.nc-home-v2-active .site-header {
  top: var(--nacre-promo-h);
}

@media (max-width: 380px) {
  .promo-strip {
    height: 32px;
    font-size: 12px;
    letter-spacing: .02em;
    padding: 0 10px;
  }

  body {
    --nacre-promo-h: 32px;
  }
}
