/* Readability layer. Load after the page, shop, account and pickup styles.
   Keep display headings, brand artwork and photography at their existing sizes.
   Header, navigation, footer, cookie banner and contact layouts have their own rules. */

/* Editorial copy: comfortable reading without flattening the heading hierarchy. */
body.smish-site :is(.site-hero-copy > p, .site-editorial-copy p,
  .site-world-grid p, .site-shop-feature p, .site-title > p,
  .site-character p, .site-release-feature p, .site-gallery-grid p,
  .site-art-detail p, .site-streaming p, .site-flag-copy p,
  .site-island-city p, .site-song-unavailable p, .site-app-lead,
  .site-island-intro > p, .site-island-chapter-heading p,
  .site-island-invitation p, .site-island-evening p) {
  font-size: 16px;
  line-height: 1.75;
}

body.smish-site :is(.site-hero-copy > p, .site-editorial-copy p,
  .site-world-grid p, .site-shop-feature p, .site-title > p,
  .site-character p, .site-release-feature p, .site-gallery-grid p,
  .site-art-detail p, .site-streaming p, .site-flag-copy p,
  .site-island-city p, .site-song-unavailable p, .site-app-lead) {
  color: #62675d;
}

body.smish-site :is(.site-breadcrumb, .site-ticker,
  .site-section-title > span, .site-album-grid p, .site-song-label,
  .site-song-credits dt, .site-app-availability,
  .site-app-qr figcaption > span, .site-app-picture-caption,
  .site-app-picture-caption > span:first-child,
  .site-island-arrival figcaption, .site-island-chapter figcaption,
  .site-flag-photo-details, .site-invitation-paths) {
  font-size: 13px;
  line-height: 1.6;
}

body.smish-site main .site-eyebrow {
  font-size: 13px;
  line-height: 1.6;
  letter-spacing: .1em;
}

body.smish-site :is(.site-button, .site-link, .site-character-index,
  .site-island-route a, .site-island-button, .site-album-actions,
  .site-song-artist, .site-song-credits, .site-gallery-search span,
  .site-app-qr strong) {
  font-size: 15px;
  line-height: 1.5;
}

body.smish-site .site-song-lyrics { font-size: 17px; line-height: 1.85; }
body.smish-site .site-app-store small { font-size: 12px; line-height: 1.4; }
body.smish-site .site-app-store strong { font-size: 16px; line-height: 1.4; }

/* Catalogue and product details: purchase information has priority over captions. */
.sm-shop {
  --sm-muted: #62675b;
  font-size: 16px;
  line-height: 1.6;
}

.sm-shop .sm-dialog { font-size: 16px; line-height: 1.6; }

.sm-shop :is(.sm-hero-copy > p, .sm-story-copy p, .sm-details p,
  .sm-partners p, .sm-empty p, .sm-cart-empty p) {
  font-size: 16px;
  line-height: 1.75;
  color: var(--sm-muted);
}

.sm-shop .sm-product-detail-copy > p:not(.sm-detail-subtitle) {
  font-size: 16px;
  line-height: 1.75;
  color: var(--sm-muted);
}

.sm-shop :is(.sm-eyebrow, .sm-breadcrumbs, .sm-shopbar-note,
  .sm-hero-caption, .sm-hero-index, .sm-hero-label span,
  .sm-heading-count, .sm-results, .sm-product-meta,
  .sm-product-meta > span:last-child, .sm-brand-row > span:last-child,
  .sm-product-personality, .sm-product-number, .sm-story-art-caption,
  .sm-detail-number, .sm-thumbnails span, .sm-gallery-arrows span,
  .sm-small, .sm-product-legal) {
  font-size: 13px;
  line-height: 1.6;
}

.sm-shop :is(.sm-eyebrow, .sm-product-meta) { letter-spacing: .06em; }
.sm-shop :is(.sm-product-meta, .sm-product-personality, .sm-product-number,
  .sm-results, .sm-heading-count, .sm-hero-caption, .sm-hero-label span,
  .sm-story-art-caption, .sm-detail-number) { color: var(--sm-muted); }
.sm-shop :is(.sm-product-meta, .sm-brand-row) { flex-wrap: wrap; row-gap: 4px; }
.sm-shop .sm-product-meta > span:last-child { display: block; }
.sm-shop .sm-brand-row > span:last-child { white-space: normal; }
.sm-shop .sm-product h3 { font-size: 18px; line-height: 1.4; }
.sm-shop .sm-product h3 button { min-height: 36px; }
.sm-shop .sm-price { font-size: 18px; line-height: 1.4; font-weight: 500; }
.sm-shop .sm-product-bottom { flex-wrap: wrap; gap: 4px 12px; padding-top: 12px; }
.sm-shop .sm-add { font-size: 15px; line-height: 1.5; min-height: 42px; gap: 7px; }
.sm-shop .sm-detail-subtitle { font-size: 16px; line-height: 1.65; color: var(--sm-muted); }
.sm-shop .sm-detail-price { font-size: 26px; line-height: 1.4; }
.sm-shop .sm-specs { gap: 20px 16px; }
.sm-shop .sm-specs dt { font-size: 14px; line-height: 1.5; }
.sm-shop .sm-specs dd { font-size: 16px; line-height: 1.5; overflow-wrap: anywhere; }
.sm-shop .sm-product-legal summary { font-size: 15px; line-height: 1.5; }
.sm-shop .sm-product-detail-copy > p.sm-small { font-size: 13px; line-height: 1.65; }
.sm-shop .sm-recommendation strong { font-size: 16px; line-height: 1.45; }
.sm-shop .sm-recommendation small { font-size: 15px; line-height: 1.5; }

/* Controls remain comfortable to read and tap; editable values are at least 16px. */
.sm-shop :is(.sm-button, .sm-underlined, .sm-text-button, .sm-story-link,
  .sm-partner-links a, .sm-filters button, .sm-cart-continue,
  .sm-checkout-back, .sm-retry),
.sm-shop .sm-shop-actions .sm-text-button {
  font-size: 15px;
  line-height: 1.5;
}

.sm-shop :is(.sm-section-heading > p, .sm-values, .sm-hero-label strong,
  .sm-quick-view) { font-size: 14px; line-height: 1.6; }
.sm-shop .sm-filters button > span { font-size: 13px; color: var(--sm-muted); }
.sm-shop .sm-count { min-width: 24px; height: 24px; font-size: 12px; line-height: 1; }
.sm-shop .sm-breadcrumbs { flex-wrap: wrap; }
.sm-shop .sm-controls { flex-wrap: wrap; }
.sm-shop .sm-search-sort { flex-wrap: wrap; row-gap: 0; }
.sm-shop .sm-search input,
.sm-shop .sm-sort select { font-size: 16px; line-height: 1.5; }
.sm-shop .sm-sort select { max-width: 210px; }
.sm-shop .sm-search input::placeholder { color: var(--sm-muted); }

/* Cart and checkout: names, amounts, field labels and consent stay readable. */
.sm-shop .sm-cart-item-copy h3 { font-size: 17px; line-height: 1.4; }
.sm-shop .sm-cart-item-copy p { font-size: 13px; line-height: 1.6; }
.sm-shop .sm-cart-item-right strong { font-size: 16px; line-height: 1.5; }
.sm-shop .sm-quantity button { width: 40px; height: 40px; font-size: 20px; line-height: 1; }
.sm-shop .sm-quantity output { min-width: 32px; font-size: 16px; line-height: 1.5; }
.sm-shop .sm-cart-total { font-size: 20px; line-height: 1.5; }
.sm-shop :is(.sm-price, .sm-detail-price, .sm-quantity output,
  .sm-cart-item-right strong, .sm-cart-total, .sm-order-summary) {
  font-variant-numeric: tabular-nums;
}

.sm-shop :is(.sm-checkout > label, .sm-form-row > label,
  .sm-checkout-fields > label, .sm-company-details > label,
  .sm-pickup-search > label, .sm-company-details summary,
  .sm-choice, .sm-consent) { font-size: 15px; line-height: 1.6; }

.sm-shop .sm-checkout input:not([type=checkbox]),
.sm-shop .sm-checkout textarea,
.sm-shop .sm-checkout select,
.sm-shop .sm-checkout-review select { font-size: 16px; line-height: 1.5; }
.sm-shop .sm-checkout input::placeholder,
.sm-shop .sm-checkout textarea::placeholder { color: #6d7265; }
.sm-shop .sm-checkout-steps { font-size: 13px; line-height: 1.6; }
.sm-shop .sm-choice small { font-size: 13px; line-height: 1.6; }
.sm-shop :is(.sm-checkout-notice, .sm-postal-notice, .sm-checkout-message,
  .sm-dialog-status, .sm-commerce-banner, .sm-review-contact,
  .sm-order-delivery, .sm-toast) { font-size: 15px; line-height: 1.65; }
.sm-shop .sm-toast button { font-size: 14px; line-height: 1.5; }
.sm-shop .sm-order-summary > div { font-size: 16px; line-height: 1.5; }
.sm-shop .sm-order-summary .sm-summary-total { font-size: 22px; line-height: 1.4; }

/* Account dialogs: use the same form scale as checkout. Only two legacy button
   declarations need !important because their existing sizes use it as well. */
.smish-account { --account-muted: #62675b; font-size: 16px; line-height: 1.65; }
.smish-account :is(.smish-account-eyebrow, .smish-account-loading,
  .smish-account-fine, .smish-account-badge, .smish-account-order small,
  .smish-account-order-status, .smish-account-order-items small,
  .smish-account-pagination, .smish-account-timeline time) {
  font-size: 13px;
  line-height: 1.6;
}
.smish-account :is(.smish-account-nav button, .smish-account-methods button,
  .smish-account-muted, .smish-account-message, .smish-account-card p,
  .smish-account-check, .smish-account-confirm, .smish-account-timeline li) {
  font-size: 15px;
  line-height: 1.6;
}
.smish-account .smish-account-empty { font-size: 16px; line-height: 1.65; }
.smish-account .smish-account-form label:not(.smish-account-check) {
  font-size: 15px;
  line-height: 1.5;
}
.smish-account .smish-account-form input::placeholder { color: #6d7265; }
.smish-account .smish-account-primary,
.smish-account .smish-account-link { font-size: 15px !important; line-height: 1.5; }
.smish-account :is(.smish-account-details, .smish-account-order strong,
  .smish-account-order-items li, .smish-account-order-items strong) {
  font-size: 16px;
  line-height: 1.55;
}
.smish-account .smish-account-details.is-totals { font-variant-numeric: tabular-nums; }

/* Address and pickup details: preserve map geometry, marker size and zoom icons. */
.sm-shop :is(.sm-address-option, .sm-pickup-view-buttons button,
  .sm-pickup-selected, .sm-pickup-popup-select) { font-size: 15px; line-height: 1.6; }
.sm-shop .sm-pickup-view-buttons button { min-height: 42px; }
.sm-shop :is(.sm-address-option small, .sm-address-status,
  .sm-pickup-origin p, .sm-pickup-selected > small, .sm-pickup-map-note,
  .sm-pickup-popup-hours) { font-size: 13px; line-height: 1.65; color: var(--sm-muted); }
.sm-shop .sm-pickup-origin h3 { font-size: 16px; line-height: 1.5; }
.sm-pickup-map .leaflet-popup-content { font-size: 15px; line-height: 1.6; }
.sm-pickup-map .sm-pickup-popup strong { font-size: 16px; line-height: 1.5; }
.sm-pickup-map .leaflet-control-attribution { font-size: 12px; line-height: 1.5; }

/* Let text reflow before shrinking it. The product grid and image dimensions
   stay unchanged, including the two-column catalogue on phones. */
@media (min-width: 1000px) {
  body.smish-site :is(.site-hero-copy > p, .site-editorial-copy p,
    .site-title > p, .site-app-lead, .site-island-intro > p) { font-size: 17px; }
}

@media (max-width: 700px) {
  .sm-shop .sm-product h3 { font-size: 17px; }
  .sm-shop .sm-product-bottom { align-items: flex-start; }
  .sm-shop .sm-product-meta { gap: 4px 8px; }
  .sm-shop .sm-search { flex: 1 1 150px; }
  .sm-shop .sm-sort { flex: 1 1 175px; padding-left: 0; border-left: 0; }
  .sm-shop .sm-sort select { max-width: 100%; }
  .sm-shop .sm-hero .sm-button { gap: 20px; }
  .sm-shop .sm-specs { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}

@media (max-width: 420px) {
  .sm-shop .sm-cart-item { display: grid; grid-template-columns: 60px minmax(0, 1fr); gap: 12px; }
  .sm-shop .sm-cart-item-right {
    grid-column: 2;
    flex-direction: row-reverse;
    align-items: center;
    gap: 12px;
    padding-bottom: 0;
  }
  .sm-shop .sm-cart-item-right button { padding: 8px; }
  .smish-account .smish-account-fields,
  .smish-account .smish-account-fields.is-three { grid-template-columns: 1fr; }
}
