/* Dealio's single typography source of truth.
   Editorial roles are opt-in. Commerce defaults to Manrope; admin is always Manrope. */
@font-face {
  font-family: 'DM Serif Display';
  src: url('/assets/fonts/dm-serif-display.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: 'Manrope';
  src: url('/assets/fonts/manrope.woff2') format('woff2');
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
}
:root {
  --font-display: 'DM Serif Display', Georgia, serif;
  --font-body: 'Manrope', Arial, sans-serif;
  --font-wordmark: var(--font-body);
  --text-body: 16px;
  --text-ui: 14px;
  --text-meta: 13px;
  --text-label: 12px;
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;
  --size-h1: clamp(32px, 4vw, 52px);
  --size-h2: clamp(30px, 3vw, 36px);
  --size-h3: clamp(22px, 2vw, 28px);
  --size-display-h1: clamp(44px, 5vw, 76px);
  --size-display-h2: clamp(34px, 3.5vw, 52px);
  --size-editorial: clamp(25px, 2vw, 34px);
}
body {
  font: var(--weight-regular) var(--text-body)/1.6 var(--font-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
button, input, select, textarea { font: inherit; }
input, select, textarea { font-size: 16px; line-height: 1.5; }
button, .button, .text-link { font-family: var(--font-body); font-size: var(--text-ui); font-weight: var(--weight-semibold); line-height: 1.5; letter-spacing: -.01em; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-body); font-weight: var(--weight-semibold); line-height: 1.15; letter-spacing: -.03em; overflow-wrap: anywhere; }
h1 { font-size: var(--size-h1); line-height: 1.08; }
h2 { font-size: var(--size-h2); }
h3 { font-size: var(--size-h3); }
p { line-height: 1.6; }
strong, b { font-weight: var(--weight-semibold); }
label, .check { font-size: var(--text-ui); line-height: 1.55; }
small, .small { font-size: var(--text-meta); line-height: 1.55; }
.eyebrow { font-size: var(--text-label); font-weight: var(--weight-semibold); letter-spacing: .13em; line-height: 1.5; }
.breadcrumbs, .badge, .swatch-row, .rating, .hero-controls span { font-family: var(--font-body); font-size: var(--text-meta); line-height: 1.5; }
.badge { font-weight: var(--weight-medium); letter-spacing: .02em; }
details>summary:after { font: var(--weight-medium) 20px/1.2 var(--font-body); }
.display-h1, .display-h2, .editorial-heading { font-family: var(--font-display); font-weight: var(--weight-regular); font-synthesis: none; }
.display-h1 { font-size: var(--size-display-h1); line-height: .98; letter-spacing: -.03em; }
.display-h2 { font-size: var(--size-display-h2); line-height: 1.05; letter-spacing: -.025em; }
.editorial-heading { font-size: var(--size-editorial); line-height: 1.1; letter-spacing: -.02em; }
.room-card h3 { font-size: clamp(26px, 2vw, 36px); }
.room-card h3 span { font: var(--weight-medium) 18px/1.1 var(--font-body); }
.room-card p { font-size: 15px; line-height: 1.55; color: var(--muted); }
.hero p, .editorial-copy>p, .collection-banner p, .brand-statement p, .section-heading>p { font-size: var(--text-body); line-height: 1.6; }
.hero-secondary, .hero-bottom a { font-size: var(--text-meta); }
.hero-bottom, .look-caption { font-size: var(--text-label); letter-spacing: .08em; }
.editorial-note { font-size: 18px; font-weight: var(--weight-medium); }
.wordmark { font-family: var(--font-wordmark); font-size: 40px; font-weight: var(--weight-semibold); letter-spacing: .045em; line-height: 1.1; }
.wordmark span { font: var(--weight-medium) 8px/1.6 var(--font-body); letter-spacing: .18em; }
.footer-brand .wordmark { font-size: 34px; }
.drawer-head .wordmark { font-size: 34px; }
.desktop-nav { font-size: 14px; font-weight: var(--weight-medium); letter-spacing: -.01em; line-height: 1.5; }
.announcement { font-size: var(--text-label); letter-spacing: .03em; }
.bag-button span { font-size: 9px; line-height: 1; }
.menu-drawer nav>a, .menu-drawer nav>details>summary, .menu-drawer nav>details>a, .menu-secondary a { font: var(--weight-medium) 16px/1.5 var(--font-body); letter-spacing: -.01em; }
.trust-strip strong { font-size: var(--text-meta); font-weight: var(--weight-semibold); }
.trust-strip span { font-size: var(--text-label); }
.trust-strip p { line-height: 1.55; }
.product-meta h3, .bag-row h3, .cart-item h3, .hotspot h3, .search-result strong, .summary-product strong { font-family: var(--font-body); font-size: 16px; font-weight: var(--weight-medium); line-height: 1.45; letter-spacing: -.015em; }
.product-meta p, .cart-item p, .bag-row p, .search-result span, .summary-product small, .pdp-promises span, .stock { font-size: var(--text-meta); line-height: 1.55; }
.price, .pdp-price, .cart-item>strong, .summary-product>span, .mobile-purchase>span, .hotspot p { font-family: var(--font-body); font-size: 17px; font-weight: var(--weight-semibold); line-height: 1.45; letter-spacing: -.025em; font-variant-numeric: lining-nums tabular-nums; }
.price del, .pdp-price del { font-size: 14px; font-weight: var(--weight-regular); }
.purchase-panel h1 { font-size: clamp(28px, 3vw, 40px); font-weight: var(--weight-medium); line-height: 1.15; }
.purchase-panel>p, .accordion p { font-size: 15px; }
.pdp-price { font-size: 18px; }
.accordion>summary { font-size: 14px; font-weight: var(--weight-semibold); }
.product-image .quick-add { font-size: 14px; font-weight: var(--weight-semibold); }
.filter-bar>label, .filter-bar>span { font-size: var(--text-ui); }
.filter-bar select, .filters input, .filters select, .coupon-form input, .newsletter input[type=email] { font-size: 16px; }
.order-summary h2, .checkout-form h2, .drawer-head h2, .cookie-banner h2 { font-size: clamp(26px, 3vw, 30px); }
.summary-line { font-size: 15px; }
.summary-line.total { font-size: 18px; font-weight: var(--weight-semibold); }
.shipping-option small, .auth-links, .checkout-title>p, .checkout-header, .gallery-main>span, .bag-progress { font-size: var(--text-meta); }
.shipping-option strong { font-size: 16px; font-weight: var(--weight-semibold); }
.auth-content h1 { font-size: var(--size-h1); }
.auth-image>span { font: var(--weight-medium) clamp(30px, 3vw, 44px)/1.15 var(--font-body); letter-spacing: -.03em; }
.account-nav a { font-size: 14px; font-weight: var(--weight-medium); }
.prose p { font-size: 16px; line-height: 1.8; }
.newsletter h2 { font-size: clamp(30px, 3vw, 40px); }
.newsletter p, .consent, .footer-brand>span, .footer-column a, .footer-bottom, .cookie-banner p { font-size: var(--text-meta); line-height: 1.6; }
.footer-brand p { font-size: 20px; font-weight: var(--weight-medium); }
.footer-column summary { font-size: var(--text-label); font-weight: var(--weight-semibold); letter-spacing: .08em; }
.footer-column summary:after { font-size: 16px; }
.footer-contact a, .social-links a, .footer-bottom-links { font-size: var(--text-meta); line-height: 1.6; }
.footer-bottom-links .text-link { font-size: var(--text-meta); font-weight: var(--weight-regular); }
.notice, .flash, #toast { font-size: 14px; }
table { font-size: 14px; line-height: 1.55; }
th { font-size: 12px; font-weight: var(--weight-semibold); letter-spacing: .04em; }
.dimension-diagram text { font-family: var(--font-body); font-size: 12px; }
/* A scoped token override also prevents editorial fonts in admin auth/footer chrome. */
.admin-app { --font-display: var(--font-body); --font-wordmark: var(--font-body); font-family: var(--font-body); }
.admin-app h1 { font-family: var(--font-body); font-size: clamp(36px, 4vw, 52px); font-weight: var(--weight-semibold); line-height: 1.08; letter-spacing: -.04em; }
.admin-app h2 { font-family: var(--font-body); font-size: 28px; font-weight: var(--weight-semibold); line-height: 1.15; letter-spacing: -.035em; }
.admin-app h3 { font-size: 24px; letter-spacing: -.025em; }
.admin-app .low-stock-heading { font-size: 30px; margin-bottom: 8px; }
.low-stock-caption { font-size: 14px; font-weight: var(--weight-regular); color: var(--muted); }
.stats-grid span { font-size: 13px; font-weight: var(--weight-medium); line-height: 1.5; color: var(--muted); }
.stats-grid strong { font-family: var(--font-body); font-size: clamp(38px, 4vw, 54px); font-weight: var(--weight-medium); line-height: 1; letter-spacing: -.05em; font-variant-numeric: lining-nums tabular-nums; overflow-wrap: anywhere; }
.admin-sidebar>.wordmark { font-size: 36px; font-weight: var(--weight-semibold); }
.admin-sidebar nav a, .admin-sidebar>a:not(.wordmark), .admin-sidebar .text-link, .admin-sidebar>details>summary { font-size: 14px; font-weight: var(--weight-medium); line-height: 1.5; }
.admin-sidebar nav a.active { font-weight: var(--weight-semibold); }
.admin-sidebar-foot a, .admin-sidebar-foot .text-link { font-size: 14px; font-weight: var(--weight-medium); line-height: 1.5; }
.admin-nav-heading { font-size: 11px; font-weight: var(--weight-semibold); letter-spacing: .12em; line-height: 1.5; }
.admin-footer { font-size: var(--text-meta); line-height: 1.6; }
.admin-footer-brand strong { font-weight: var(--weight-semibold); }
.admin-tag { font-size: var(--text-label); font-weight: var(--weight-semibold); letter-spacing: .08em; line-height: 1.5; }
.admin-main td { font-size: 14px; }
.admin-main th { font-size: 12px; }
.admin-form .muted, .sales-bars>div { font-size: 14px; }
.sales-bars strong { font-weight: var(--weight-medium); font-variant-numeric: tabular-nums; }
@media(max-width:1150px) { .header-inner>.wordmark { font-size: 34px; } }
@media(max-width:640px) {
  :root { --text-body: 16px; --size-h1: clamp(30px, 8vw, 36px); --size-h2: clamp(30px, 8vw, 36px); --size-display-h1: clamp(42px, 10vw, 50px); --size-display-h2: clamp(30px, 8vw, 38px); }
  .hero h1 { font-size: clamp(42px, 10vw, 50px); }
  .hero-copy .eyebrow { font-size: 11px; letter-spacing: .1em; }
  .header-inner>.wordmark { font-size: 32px; }
  .footer-brand .wordmark { font-size: 30px; }
  .checkout-header .wordmark { font-size: 32px; }
  .checkout-header>span { font-size: 12px; }
  .trust-strip strong, .trust-strip span { font-size: 12px; }
  .announcement { font-size: 11px; }
  .hero-bottom, .look-caption { font-size: 10px; }
  .product-meta h3 { font-size: 15px; }
  .price { font-size: 16px; }
  .filter-bar>label { font-size: 0; } /* Existing visually hidden mobile sort label. */
  .admin-app h1 { font-size: clamp(30px, 8vw, 36px); }
  .admin-app h2 { font-size: 26px; }
  .admin-app .low-stock-heading { font-size: 30px; }
  .admin-sidebar>.wordmark { font-size: 32px; }
  .stats-grid strong { font-size: 38px; }
}
