/* AWANZ — Monolith Gold storefront (Frappe Webshop theme override). Dark only. */
:root {
  --mw-ground: #0b0b0a;
  --mw-surface: #141311;
  --mw-surface-2: #1b1916;
  --mw-line: #26231f;
  --mw-line-strong: #36322c;
  --mw-text: #efe8da;
  --mw-muted: #b3aa99;
  --mw-dim: #7d7668;
  --mw-accent: #c9a96e;
  --mw-accent-deep: #a8884e;
  --mw-accent-soft: rgba(201, 169, 110, 0.14);
  --mw-good: #7fa98a;
  --mw-warn: #d3a55b;
  --mw-crit: #c4736a;
  --mw-display: 'Unbounded', 'Arial Black', 'Helvetica Neue', Arial, sans-serif;
  --mw-body: 'Jost', 'Futura', 'Helvetica Neue', Arial, sans-serif;
  --mw-max: 1320px;
  --mw-gutter: clamp(20px, 4vw, 56px);
}

/* ------------------------------------------------------------------ */
/* Global skin: every website page (login, /me, /orders, item groups)   */
/* ------------------------------------------------------------------ */
html,
body {
  background: var(--mw-ground);
  color: var(--mw-text);
  font-family: var(--mw-body);
  font-weight: 300;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
}
body {
  font-size: 15px;
  line-height: 1.6;
}
a {
  color: var(--mw-accent);
}
a:hover {
  color: var(--mw-text);
  text-decoration: none;
}
h1, h2, h3, h4, h5, .h1, .h2, .h3 {
  font-family: var(--mw-display);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  color: var(--mw-text);
}
.navbar.navbar-light,
.navbar {
  background: var(--mw-ground) !important;
  border-bottom: 1px solid var(--mw-line);
}
.navbar .navbar-brand, .navbar .nav-link, .navbar .dropdown-item, .navbar-light .navbar-nav .nav-link {
  color: var(--mw-muted) !important;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
}
.web-footer, footer.web-footer, .web-footer .container {
  background: var(--mw-ground) !important;
  color: var(--mw-dim) !important;
  border-top: 1px solid var(--mw-line);
}
.web-footer a, .web-footer .footer-link { color: var(--mw-muted) !important; }
.page-card, .card, .frappe-card, .form-card, .web-form, .web-form-container, .dropdown-menu, .modal-content, .list-group-item {
  background: var(--mw-surface) !important;
  border: 1px solid var(--mw-line) !important;
  border-radius: 0 !important;
  color: var(--mw-text);
  box-shadow: none !important;
}
.page-card-head, .card-header, .modal-header, .modal-footer { border-color: var(--mw-line) !important; background: transparent !important; }
.form-control, .input-with-feedback, input.form-control, textarea.form-control, select.form-control, .frappe-control input {
  background: var(--mw-surface-2) !important;
  border: 1px solid var(--mw-line-strong) !important;
  border-radius: 0 !important;
  color: var(--mw-text) !important;
  box-shadow: none !important;
  font-family: var(--mw-body);
}
.form-control:focus { border-color: var(--mw-accent) !important; }
.form-control::placeholder { color: var(--mw-dim); }
label, .control-label, .form-label, .text-muted, .small, small { color: var(--mw-muted) !important; }
.btn, .btn-sm, .btn-lg {
  border-radius: 0 !important;
  font-family: var(--mw-body);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  padding: 12px 22px;
  box-shadow: none !important;
}
.btn-primary, .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary:disabled {
  background: var(--mw-accent) !important;
  border-color: var(--mw-accent) !important;
  color: var(--mw-ground) !important;
}
.btn-primary:hover { background: var(--mw-text) !important; border-color: var(--mw-text) !important; }
.btn-default, .btn-secondary, .btn-light, .btn-default:hover, .btn-light:hover {
  background: transparent !important;
  border: 1px solid var(--mw-line-strong) !important;
  color: var(--mw-text) !important;
}
.btn-default:hover, .btn-light:hover { border-color: var(--mw-accent) !important; color: var(--mw-accent) !important; }
.table, .table td, .table th { color: var(--mw-text); border-color: var(--mw-line) !important; }
.table thead th { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--mw-dim); font-weight: 500; border-bottom: 1px solid var(--mw-line-strong) !important; }
hr { border-color: var(--mw-line); }
.indicator-pill, .badge { border-radius: 0 !important; }
.page-breadcrumbs, .breadcrumb, .breadcrumb a { color: var(--mw-dim) !important; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; background: transparent !important; }
.page_content { padding-bottom: 0; }
/* login page */
.for-login .page-card, .for-signup .page-card, .for-forgot .page-card, .for-login-with-email-link .page-card { max-width: 420px; }
.for-login .page-card-head h4, .for-signup .page-card-head h4 { font-family: var(--mw-display); font-size: 14px; letter-spacing: 0.2em; }
.login-content .btn-login, .login-content .btn-primary { width: 100%; }
.social-logins .btn { background: transparent !important; }

/* ------------------------------------------------------------------ */
/* Storefront pages (body.mw-shop)                                      */
/* ------------------------------------------------------------------ */
body.mw-shop, body.mw-shop.product-page { background: var(--mw-ground) !important; margin: 0; }
body.mw-shop .page_content, body.mw-shop .page-content-wrapper, body.mw-shop .container.page-container, body.mw-shop .web-page-content, body.mw-shop main.mw-main { padding: 0; margin: 0; max-width: none; background: transparent; }
body.mw-shop .page-header, body.mw-shop .page-breadcrumbs, body.mw-shop .page-header-actions-block { display: none; }
body.mw-shop * { box-sizing: border-box; }
body.mw-shop img { max-width: 100%; display: block; }
body.mw-shop button { font-family: inherit; cursor: pointer; }

.mw-wrap { max-width: var(--mw-max); margin: 0 auto; padding: 0 var(--mw-gutter); }
.mw-label { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--mw-muted); font-weight: 500; }
.mw-label.dim { color: var(--mw-dim); }
.mw-label.gold { color: var(--mw-accent); }
.mw-display { font-family: var(--mw-display); font-weight: 800; text-transform: uppercase; letter-spacing: -0.01em; line-height: 1.05; }
.mw-display.xl { font-size: clamp(34px, 5.4vw, 74px); font-weight: 900; letter-spacing: -0.02em; }
.mw-display.lg { font-size: clamp(24px, 3vw, 40px); }
.mw-display.md { font-size: clamp(18px, 2vw, 24px); }
.mw-display.sm { font-size: 14px; letter-spacing: 0.02em; }
.mw-price { font-family: var(--mw-display); font-weight: 800; color: var(--mw-accent); letter-spacing: -0.01em; font-variant-numeric: tabular-nums; }
.mw-muted { color: var(--mw-muted); }
.mw-dim { color: var(--mw-dim); }
.mw-rule { border: 0; border-top: 1px solid var(--mw-line); margin: 0; }
.mw-rule.strong { border-top-color: var(--mw-line-strong); }

/* header */
.mw-header { position: sticky; top: 0; z-index: 50; background: rgba(11, 11, 10, 0.92); backdrop-filter: blur(14px); border-bottom: 1px solid var(--mw-line); }
.mw-header .mw-wrap { display: flex; align-items: center; height: 72px; gap: 28px; }
.mw-wordmark { font-family: var(--mw-display); font-weight: 900; font-size: 18px; letter-spacing: 0.3em; margin-right: -0.3em; color: var(--mw-accent); text-decoration: none; text-transform: uppercase; white-space: nowrap; }
.mw-wordmark:hover { color: var(--mw-text); }
/* v1.3.2 — the tenant's square mark beside the wordmark (header) and above it (footer) */
.mw-brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.mw-brand:hover .mw-wordmark { color: var(--mw-text); }
.mw-mark { width: 34px; height: 34px; object-fit: contain; flex: 0 0 auto; }
.mw-mark-foot { display: block; width: 48px; height: 48px; margin-bottom: 10px; }
/* v0.6 N — brand sub-mark ("AWANZ POS") under the wordmark */
.mw-wordmark { display: inline-flex; flex-direction: column; align-items: flex-start; line-height: 1; letter-spacing: 0.12em; }
.mw-submark { font-family: var(--mw-body); font-weight: 400; font-size: 9px; letter-spacing: 0.32em; color: var(--mw-dim); text-transform: uppercase; margin-top: 4px; }
/* v0.6 N — the category list is vertical-dependent: the smoke-shop catalogue has 11 item groups
   where the jewellery one had 4, and as a non-shrinking flex row of nowrap links it made the whole
   storefront 1840 px wide and scrolled the page sideways. It shrinks and scrolls inside itself now. */
.mw-nav { display: flex; gap: 6px; height: 100%; margin-left: 8px; flex: 0 1 auto; min-width: 0; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
.mw-nav::-webkit-scrollbar { display: none; }
.mw-nav a { flex: 0 0 auto; }
.mw-nav a { display: inline-flex; align-items: center; padding: 0 14px; height: 72px; color: var(--mw-muted); font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; text-decoration: none; border-bottom: 2px solid transparent; font-weight: 500; white-space: nowrap; }
.mw-nav a:hover { color: var(--mw-text); }
.mw-nav a.active { color: var(--mw-accent); border-bottom-color: var(--mw-accent); }
.mw-header .spacer { flex: 1; }
.mw-header .mw-tools { display: flex; align-items: center; gap: 4px; }
.mw-tools a, .mw-tools button { white-space: nowrap; display: inline-flex; align-items: center; gap: 10px; height: 44px; padding: 0 14px; color: var(--mw-muted); font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; text-decoration: none; border: 0; background: transparent; font-weight: 500; }
.mw-tools a:hover { color: var(--mw-text); }
.mw-tools .count { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; padding: 0 6px; border: 1px solid var(--mw-accent); color: var(--mw-accent); font-size: 11px; letter-spacing: 0; }
.mw-tools .cta { border: 1px solid var(--mw-accent); color: var(--mw-accent); }
.mw-tools .mw-burger { display: none; }
@media (max-width: 900px) {
  .mw-nav { display: none; }
  .mw-header .mw-wrap { height: 60px; gap: 14px; }
  .mw-nav a { height: 60px; }
  .mw-tools a span.txt { display: none; }
  .mw-tools .mw-burger { display: inline-flex; }
  .mw-wordmark { font-size: 15px; }
}
.mw-subnav { border-bottom: 1px solid var(--mw-line); background: var(--mw-ground); }
.mw-subnav .mw-wrap { display: flex; gap: 0; overflow-x: auto; scrollbar-width: none; }
.mw-subnav a { flex: 0 0 auto; padding: 16px 18px 14px 0; margin-right: 18px; color: var(--mw-muted); font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; text-decoration: none; font-weight: 500; border-bottom: 1px solid transparent; }
.mw-subnav a.active, .mw-subnav a:hover { color: var(--mw-accent); }

/* drawer (phone) */
.mw-drawer { display: none; position: fixed; inset: 60px 0 0 0; z-index: 60; background: var(--mw-ground); border-top: 1px solid var(--mw-line); padding: 8px var(--mw-gutter) 40px; flex-direction: column; }
.mw-drawer.open { display: flex; }
.mw-drawer a { padding: 18px 0; border-bottom: 1px solid var(--mw-line); color: var(--mw-text); font-size: 12px; letter-spacing: 0.25em; text-transform: uppercase; text-decoration: none; font-weight: 500; }
.mw-drawer a.gold { color: var(--mw-accent); }

/* footer */
.mw-footer { border-top: 1px solid var(--mw-line); margin-top: 120px; padding: 64px 0 48px; color: var(--mw-dim); }
.mw-footer .cols { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; }
/* grid items default to min-width:auto and refuse to shrink below their longest link, which pushed
   the footer (and so the page) past a 390 px screen once store names got long */
.mw-footer .col { min-width: 0; }
.mw-footer .col a, .mw-footer .col div, .mw-footer .col h5 { overflow-wrap: anywhere; }
.mw-footer .col h5 { font-family: var(--mw-body); font-weight: 500; font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--mw-muted); margin: 0 0 16px; }
.mw-footer .col a, .mw-footer .col div { display: block; color: var(--mw-dim); text-decoration: none; font-size: 13px; line-height: 1.9; }
/* v0.6 R — a store link is "<name> · <city>"; each half stays whole, and the city drops to its own
   line before a word is orphaned ("… Broken / Arrow"). */
.mw-footer .col a .nm { white-space: nowrap; }
.mw-footer .col a .ct { white-space: nowrap; color: var(--mw-line-strong); }
.mw-footer .col a .ct::before { content: '· '; }
.mw-footer .col a:hover .ct { color: var(--mw-dim); }
.mw-footer .col a:hover { color: var(--mw-accent); }
.mw-footer .legal { margin-top: 56px; padding-top: 20px; border-top: 1px solid var(--mw-line); display: flex; justify-content: space-between; gap: 16px; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; }
.mw-footer .wm { font-family: var(--mw-display); font-weight: 900; font-size: 26px; letter-spacing: 0.3em; color: var(--mw-accent); margin-bottom: 16px; }
@media (max-width: 900px) { .mw-footer .cols { grid-template-columns: 1fr 1fr; gap: 28px; } .mw-footer .legal { flex-direction: column; } .mw-footer { margin-top: 72px; padding-top: 44px; } }

/* buttons */
.mw-btn { display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: 52px; padding: 0 28px; border: 1px solid var(--mw-accent); background: var(--mw-accent); color: var(--mw-ground); font-family: var(--mw-body); font-weight: 500; font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; text-decoration: none; transition: background 160ms, color 160ms, border-color 160ms; white-space: nowrap; }
.mw-btn:hover { background: var(--mw-text); border-color: var(--mw-text); color: var(--mw-ground); }
.mw-btn.ghost { background: transparent; color: var(--mw-accent); }
.mw-btn.ghost:hover { background: var(--mw-accent-soft); color: var(--mw-text); }
.mw-btn.quiet { background: transparent; border-color: var(--mw-line-strong); color: var(--mw-muted); }
.mw-btn.quiet:hover { border-color: var(--mw-text); color: var(--mw-text); background: transparent; }
.mw-btn.block { width: 100%; }
.mw-btn.sm { min-height: 40px; padding: 0 16px; }
.mw-btn:disabled, .mw-btn[aria-disabled='true'] { opacity: 0.45; pointer-events: none; }
.mw-link { background: none; border: 0; padding: 0; color: var(--mw-accent); font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; font-weight: 500; text-decoration: none; }
.mw-link:hover { color: var(--mw-text); }

/* pills */
.mw-pill { display: inline-flex; align-items: center; gap: 8px; height: 26px; padding: 0 10px; border: 1px solid var(--mw-line-strong); color: var(--mw-muted); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 500; white-space: nowrap; }
.mw-pill.gold { border-color: var(--mw-accent); color: var(--mw-accent); }
.mw-pill.good { border-color: var(--mw-good); color: var(--mw-good); }
.mw-pill.warn { border-color: var(--mw-warn); color: var(--mw-warn); }
.mw-pill.crit { border-color: var(--mw-crit); color: var(--mw-crit); }
.mw-pill .dot { width: 6px; height: 6px; background: currentColor; }

/* forms */
.mw-field { display: flex; flex-direction: column; gap: 8px; margin-bottom: 18px; }
.mw-input, .mw-select, .mw-textarea { width: 100%; min-height: 52px; padding: 12px 16px; background: var(--mw-surface-2); border: 1px solid var(--mw-line-strong); color: var(--mw-text); font-family: var(--mw-body); font-size: 15px; font-weight: 300; outline: none; border-radius: 0; -webkit-appearance: none; appearance: none; }
.mw-input:focus, .mw-select:focus, .mw-textarea:focus { border-color: var(--mw-accent); }
.mw-textarea { min-height: 120px; resize: vertical; }
.mw-select { background-image: linear-gradient(45deg, transparent 50%, var(--mw-muted) 50%), linear-gradient(135deg, var(--mw-muted) 50%, transparent 50%); background-position: calc(100% - 22px) 24px, calc(100% - 16px) 24px; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 44px; }
.mw-error { color: var(--mw-crit); font-size: 13px; }
.mw-note { font-size: 13px; color: var(--mw-dim); line-height: 1.6; }

/* hero */
.mw-hero { position: relative; border-bottom: 1px solid var(--mw-line); overflow: hidden; }
.mw-hero .mw-wrap { display: grid; grid-template-columns: 1.1fr 0.9fr; min-height: min(78vh, 720px); align-items: center; gap: 48px; padding-top: 56px; padding-bottom: 56px; }
.mw-hero .eyebrow { margin-bottom: 22px; }
.mw-hero p { color: var(--mw-muted); font-size: 17px; max-width: 46ch; margin: 26px 0 36px; font-weight: 300; line-height: 1.7; }
.mw-hero .actions { display: flex; gap: 14px; flex-wrap: wrap; }
.mw-hero .art { position: relative; aspect-ratio: 1; background: var(--mw-surface); border: 1px solid var(--mw-line); overflow: hidden; }
.mw-hero .art img { width: 100%; height: 100%; object-fit: cover; }
/* v0.6 R — the hero caption is the page's, not the picture's (the generated art no longer burns the
   brand / name / group into the bottom of the image). A scrim keeps it readable over any artwork. */
.mw-hero .art::after { content: ''; position: absolute; inset: auto 0 0 0; height: 45%; background: linear-gradient(to top, rgba(11, 11, 10, 0.92) 0%, rgba(11, 11, 10, 0.72) 42%, transparent 100%); pointer-events: none; }
.mw-hero .art .tag { position: absolute; z-index: 1; left: 20px; right: 20px; bottom: 20px; display: flex; flex-direction: column; gap: 6px; }
.mw-hero .art .tag .name { font-weight: 500; }
@media (max-width: 900px) { .mw-hero .mw-wrap { grid-template-columns: 1fr; min-height: 0; padding-top: 40px; } .mw-hero .art { order: -1; max-width: 440px; } }

/* sections */
.mw-section { padding: 88px 0 0; }
.mw-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 34px; }
.mw-section-head .mw-label { margin-bottom: 12px; display: block; }
@media (max-width: 700px) { .mw-section { padding-top: 56px; } .mw-section-head { flex-direction: column; align-items: flex-start; } }

/* collection strip */
.mw-collections { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--mw-line); border: 1px solid var(--mw-line); }
.mw-collections a { display: flex; flex-direction: column; justify-content: flex-end; gap: 10px; min-height: 220px; padding: 26px; background: var(--mw-surface); text-decoration: none; color: var(--mw-text); position: relative; overflow: hidden; transition: background 160ms; }
.mw-collections a:hover { background: var(--mw-surface-2); }
.mw-collections a .n { font-family: var(--mw-display); font-weight: 800; text-transform: uppercase; font-size: 16px; }
.mw-collections a .c { font-size: 12px; color: var(--mw-dim); }
.mw-collections a .arrow { position: absolute; right: 22px; top: 22px; color: var(--mw-accent); font-size: 18px; }
@media (max-width: 900px) { .mw-collections { grid-template-columns: 1fr 1fr; } .mw-collections a { min-height: 150px; } }

/* product grid */
.mw-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--mw-line); border: 1px solid var(--mw-line); }
.mw-grid.three { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1100px) { .mw-grid, .mw-grid.three { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px) { .mw-grid, .mw-grid.three { grid-template-columns: repeat(2, 1fr); } }
.mw-card { position: relative; display: flex; flex-direction: column; background: var(--mw-ground); text-decoration: none; color: var(--mw-text); transition: background 160ms; }
.mw-card:hover { background: var(--mw-surface); color: var(--mw-text); }
.mw-card .img { aspect-ratio: 1; background: var(--mw-surface); overflow: hidden; }
.mw-card .img img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms cubic-bezier(0.2, 0.7, 0.2, 1); }
.mw-card:hover .img img { transform: scale(1.03); }
.mw-card .img .ph { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: var(--mw-line-strong); font-family: var(--mw-display); font-size: 40px; }
.mw-card .body { padding: 20px 20px 24px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.mw-card .group { font-size: 10px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--mw-dim); font-weight: 500; }
.mw-card .name { font-weight: 500; font-size: 15px; line-height: 1.35; min-height: 2.7em; }
.mw-card .meta { font-size: 12px; color: var(--mw-dim); }
.mw-card .bottom { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 10px; }
.mw-card .price { font-family: var(--mw-display); font-weight: 800; font-size: 15px; color: var(--mw-accent); letter-spacing: -0.01em; }
.mw-card .mode { font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--mw-muted); font-weight: 500; }
.mw-card .mode.enquire { color: var(--mw-accent); }
.mw-card .mode.reserve { color: var(--mw-warn); }
.mw-card .flag { position: absolute; top: 14px; left: 14px; }
@media (max-width: 760px) { .mw-card .body { padding: 14px 14px 18px; } .mw-card .name { font-size: 13px; } .mw-card .price { font-size: 13px; } }

/* filter bar */
.mw-filters { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 28px; align-items: center; }
.mw-chip { display: inline-flex; align-items: center; height: 38px; padding: 0 16px; border: 1px solid var(--mw-line-strong); color: var(--mw-muted); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; text-decoration: none; font-weight: 500; }
.mw-chip:hover { color: var(--mw-text); border-color: var(--mw-text); }
.mw-chip.active { color: var(--mw-accent); border-color: var(--mw-accent); }
.mw-filters .count { margin-left: auto; }

/* item page */
.mw-item { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); gap: clamp(28px, 5vw, 80px); padding-top: 48px; }
.mw-item .gallery { position: sticky; top: 96px; }
.mw-item .gallery .main { aspect-ratio: 1; background: var(--mw-surface); border: 1px solid var(--mw-line); overflow: hidden; }
.mw-item .gallery .main img { width: 100%; height: 100%; object-fit: cover; }
.mw-item .gallery .thumbs { display: flex; gap: 1px; margin-top: 1px; background: var(--mw-line); border: 1px solid var(--mw-line); }
.mw-item .gallery .thumbs img { width: 96px; height: 96px; object-fit: cover; background: var(--mw-surface); }
.mw-item .info { padding-top: 6px; }
.mw-item .crumbs { display: flex; gap: 10px; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--mw-dim); margin-bottom: 22px; }
.mw-item .crumbs a { color: var(--mw-dim); text-decoration: none; }
.mw-item .crumbs a:hover { color: var(--mw-accent); }
.mw-item h1 { font-size: clamp(22px, 2.6vw, 34px); margin: 0 0 18px; }
.mw-item .price-row { display: flex; align-items: baseline; gap: 18px; margin: 0 0 26px; }
.mw-item .price-row .mw-price { font-size: clamp(22px, 2.4vw, 30px); }
.mw-item .price-row .tax { font-size: 12px; color: var(--mw-dim); }
.mw-item .lead { color: var(--mw-muted); font-size: 15px; line-height: 1.75; max-width: 54ch; margin-bottom: 30px; }
.mw-specs { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border-top: 1px solid var(--mw-line); margin-bottom: 30px; }
.mw-specs div { padding: 14px 0; border-bottom: 1px solid var(--mw-line); }
.mw-specs .k { display: block; font-size: 10px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--mw-dim); margin-bottom: 4px; font-weight: 500; }
.mw-specs .v { font-size: 14px; }
.mw-avail { border: 1px solid var(--mw-line); background: var(--mw-surface); padding: 18px 20px; margin-bottom: 26px; }
.mw-avail .head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.mw-avail ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.mw-avail li { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 14px; }
.mw-avail li .b { display: flex; flex-direction: column; }
.mw-avail li .b .c { font-size: 12px; color: var(--mw-dim); }
.mw-avail li.out { color: var(--mw-dim); }
.mw-cta { display: flex; flex-direction: column; gap: 12px; margin-bottom: 20px; }
.mw-cta .row { display: flex; gap: 12px; flex-wrap: wrap; }
.mw-cta .mw-btn { flex: 1 1 220px; }
.mw-assurance { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; margin-top: 30px; padding-top: 22px; border-top: 1px solid var(--mw-line); }
.mw-assurance div { font-size: 13px; color: var(--mw-muted); line-height: 1.5; }
.mw-assurance div b { display: block; color: var(--mw-text); font-weight: 500; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; margin-bottom: 4px; }
@media (max-width: 900px) { .mw-item { grid-template-columns: 1fr; padding-top: 20px; } .mw-item .gallery { position: static; } }

/* sheet / modal */
.mw-sheet-backdrop { position: fixed; inset: 0; z-index: 80; background: rgba(11, 11, 10, 0.78); display: none; align-items: center; justify-content: center; padding: 20px; }
.mw-sheet-backdrop.open { display: flex; }
.mw-sheet { width: min(560px, 100%); max-height: 92vh; overflow: auto; background: var(--mw-surface); border: 1px solid var(--mw-line-strong); padding: 32px; }
.mw-sheet .head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 24px; }
.mw-sheet .close { background: none; border: 0; color: var(--mw-dim); font-size: 22px; line-height: 1; }
.mw-sheet .close:hover { color: var(--mw-text); }
@media (max-width: 600px) { .mw-sheet { padding: 22px; } .mw-sheet-backdrop { padding: 0; align-items: flex-end; } .mw-sheet { max-height: 96vh; } }

/* cart */
.mw-cart { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 48px; padding-top: 48px; align-items: start; }
@media (max-width: 980px) { .mw-cart { grid-template-columns: 1fr; gap: 28px; padding-top: 24px; } }
.mw-cart h1 { font-size: clamp(22px, 2.4vw, 32px); margin: 0 0 28px; }
.mw-lines { border-top: 1px solid var(--mw-line-strong); }
.mw-line { display: grid; grid-template-columns: 96px 1fr auto; gap: 22px; padding: 22px 0; border-bottom: 1px solid var(--mw-line); align-items: center; }
.mw-line .img { width: 96px; height: 96px; background: var(--mw-surface); border: 1px solid var(--mw-line); overflow: hidden; }
.mw-line .img img { width: 100%; height: 100%; object-fit: cover; }
.mw-line .name { font-weight: 500; font-size: 15px; }
.mw-line .code { font-size: 12px; color: var(--mw-dim); margin-top: 3px; }
.mw-line .qty { display: inline-flex; align-items: center; border: 1px solid var(--mw-line-strong); margin-top: 12px; }
.mw-line .qty button { width: 40px; height: 40px; background: transparent; border: 0; color: var(--mw-muted); font-size: 18px; }
.mw-line .qty button:hover { color: var(--mw-accent); }
.mw-line .qty span { min-width: 40px; text-align: center; font-size: 14px; }
.mw-line .right { text-align: right; display: flex; flex-direction: column; gap: 10px; align-items: flex-end; }
.mw-line .amt { font-family: var(--mw-display); font-weight: 800; font-size: 15px; color: var(--mw-text); }
.mw-line .rm { background: none; border: 0; color: var(--mw-dim); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; }
.mw-line .rm:hover { color: var(--mw-crit); }
@media (max-width: 600px) { .mw-line { grid-template-columns: 72px 1fr; } .mw-line .img { width: 72px; height: 72px; } .mw-line .right { grid-column: 2; align-items: flex-start; flex-direction: row; justify-content: space-between; width: 100%; } }
.mw-summary { border: 1px solid var(--mw-line-strong); background: var(--mw-surface); padding: 28px; position: sticky; top: 96px; }
.mw-summary .row { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; font-size: 14px; color: var(--mw-muted); }
.mw-summary .row.total { border-top: 1px solid var(--mw-line-strong); margin-top: 10px; padding-top: 18px; color: var(--mw-text); align-items: baseline; }
.mw-summary .row.total .mw-price { font-size: 24px; }
.mw-summary .mw-btn { margin-top: 22px; }
.mw-summary .fine { margin-top: 16px; font-size: 12px; color: var(--mw-dim); line-height: 1.6; }
.mw-empty { padding: 96px 0; text-align: center; color: var(--mw-muted); }
.mw-empty .mw-display { margin-bottom: 18px; }

/* boutique picker */
.mw-boutiques { display: grid; gap: 1px; background: var(--mw-line); border: 1px solid var(--mw-line); margin: 18px 0 26px; }
.mw-boutique { display: grid; grid-template-columns: 24px 1fr auto; gap: 16px; align-items: center; padding: 18px 20px; background: var(--mw-surface); cursor: pointer; text-align: left; border: 0; color: var(--mw-text); width: 100%; }
.mw-boutique:hover { background: var(--mw-surface-2); }
.mw-boutique .radio { width: 16px; height: 16px; border: 1px solid var(--mw-line-strong); display: inline-flex; align-items: center; justify-content: center; }
.mw-boutique .radio::after { content: ''; width: 8px; height: 8px; background: transparent; }
.mw-boutique.selected { background: var(--mw-surface-2); }
.mw-boutique.selected .radio { border-color: var(--mw-accent); }
.mw-boutique.selected .radio::after { background: var(--mw-accent); }
.mw-boutique .n { display: block; font-weight: 500; font-size: 15px; }
.mw-boutique .a { display: block; font-size: 12px; color: var(--mw-dim); margin-top: 2px; }
.mw-boutique .s { font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 500; color: var(--mw-good); }
.mw-boutique .s.transfer { color: var(--mw-warn); }
.mw-boutique .s.no { color: var(--mw-crit); }

/* steps */
.mw-steps { display: flex; gap: 0; border: 1px solid var(--mw-line); margin-bottom: 32px; }
.mw-steps div { flex: 1; padding: 14px 16px; font-size: 10px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--mw-dim); border-right: 1px solid var(--mw-line); font-weight: 500; display: flex; gap: 10px; align-items: center; }
.mw-steps div:last-child { border-right: 0; }
.mw-steps div.done { color: var(--mw-muted); }
.mw-steps div.active { color: var(--mw-accent); background: var(--mw-accent-soft); }
.mw-steps div i { font-style: normal; width: 20px; height: 20px; border: 1px solid currentColor; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; letter-spacing: 0; }

/* order / account */
.mw-narrow { max-width: 760px; margin: 0 auto; padding-top: 56px; }
.mw-panel { border: 1px solid var(--mw-line); background: var(--mw-surface); padding: 28px; margin-bottom: 20px; }
.mw-panel .head { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 18px; }
.mw-kv { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 24px; }
.mw-kv .k { font-size: 10px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--mw-dim); font-weight: 500; margin-bottom: 4px; }
.mw-kv .v { font-size: 15px; }
.mw-timeline { display: flex; gap: 0; margin: 22px 0 6px; }
.mw-timeline div { flex: 1; position: relative; padding-top: 16px; font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--mw-dim); font-weight: 500; }
.mw-timeline div::before { content: ''; position: absolute; left: 0; right: 0; top: 4px; height: 1px; background: var(--mw-line-strong); }
.mw-timeline div::after { content: ''; position: absolute; left: 0; top: 0; width: 9px; height: 9px; background: var(--mw-line-strong); }
.mw-timeline div.done { color: var(--mw-muted); }
.mw-timeline div.done::before, .mw-timeline div.done::after { background: var(--mw-accent); }
.mw-timeline div.now { color: var(--mw-accent); }
.mw-timeline div.now::after { background: var(--mw-accent); box-shadow: 0 0 0 4px var(--mw-accent-soft); }
.mw-points { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1px; background: var(--mw-line); border: 1px solid var(--mw-line); margin: 20px 0; }
.mw-points div { background: var(--mw-surface-2); padding: 22px 20px; }
.mw-points .big { font-family: var(--mw-display); font-weight: 800; font-size: clamp(22px, 3vw, 34px); color: var(--mw-accent); margin-top: 8px; letter-spacing: -0.01em; }
.mw-points .sub { font-size: 12px; color: var(--mw-dim); margin-top: 6px; }
@media (max-width: 640px) { .mw-points { grid-template-columns: 1fr; } .mw-kv { grid-template-columns: 1fr; } }
.mw-progress { height: 4px; background: var(--mw-line); margin: 14px 0 8px; }
.mw-progress i { display: block; height: 100%; background: var(--mw-accent); }
.mw-orders { border-top: 1px solid var(--mw-line-strong); }
.mw-orders a { display: grid; grid-template-columns: 1fr auto; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--mw-line); color: var(--mw-text); text-decoration: none; }
.mw-orders a:hover { color: var(--mw-accent); }
.mw-orders .t { font-weight: 500; }
.mw-orders .d { font-size: 12px; color: var(--mw-dim); margin-top: 3px; }
.mw-toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%); z-index: 90; background: var(--mw-surface-2); border: 1px solid var(--mw-accent); color: var(--mw-text); padding: 14px 22px; font-size: 13px; display: none; max-width: min(92vw, 520px); }
.mw-toast.show { display: block; }
.mw-toast.crit { border-color: var(--mw-crit); }

/* plain page (terms etc.) */
.mw-prose { max-width: 72ch; color: var(--mw-muted); line-height: 1.8; }
.mw-prose h2 { font-size: 18px; margin: 36px 0 12px; }


/* ---------------------------------------------------------------------------
   v0.6 Q — /rewards public program page
--------------------------------------------------------------------------- */
.rw-hero { padding: 72px 0 40px; text-align: center; }
.rw-hero .eyebrow { font-size: 11px; letter-spacing: .32em; text-transform: uppercase; color: var(--mw-accent); }
.rw-hero h1 { font-family: var(--mw-display); font-weight: 900; font-size: clamp(32px, 6vw, 64px); letter-spacing: -0.02em; text-transform: uppercase; margin: 14px 0 10px; color: var(--mw-text); line-height: 1.02; }
.rw-hero .lead { color: var(--mw-muted); font-size: 17px; max-width: 620px; margin: 0 auto; font-weight: 300; }
.rw-earn { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--mw-line); border: 1px solid var(--mw-line); margin: 28px 0; }
.rw-earn > div { background: var(--mw-surface); padding: 28px 20px; text-align: center; }
.rw-earn .num { font-family: var(--mw-display); font-weight: 900; font-size: 40px; color: var(--mw-accent); letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.rw-earn .lbl { font-size: 11px; letter-spacing: .28em; text-transform: uppercase; color: var(--mw-dim); margin-top: 8px; }
.rw-earn .sub { color: var(--mw-muted); font-size: 13px; margin-top: 6px; }
.rw-perks { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; margin: 18px 0 40px; }
.rw-perk { border: 1px solid var(--mw-line); padding: 22px; background: var(--mw-surface); }
.rw-perk .t { font-family: var(--mw-display); font-weight: 800; font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--mw-text); }
.rw-perk .x { color: var(--mw-muted); font-size: 14px; margin-top: 8px; line-height: 1.5; font-weight: 300; }
.rw-join { border: 1px solid var(--mw-accent); padding: 32px; background: var(--mw-surface); max-width: 560px; margin: 0 auto 56px; }
.rw-join h2 { font-family: var(--mw-display); font-weight: 800; font-size: 18px; text-transform: uppercase; letter-spacing: .04em; margin: 0 0 6px; color: var(--mw-text); }
.rw-join .hint { color: var(--mw-dim); font-size: 13px; margin-bottom: 18px; }
.rw-join label { display: block; font-size: 11px; letter-spacing: .25em; text-transform: uppercase; color: var(--mw-dim); margin: 12px 0 6px; }
.rw-join input[type=text], .rw-join input[type=email], .rw-join input[type=tel], .rw-join input[type=date] { width: 100%; height: 48px; background: var(--mw-ground); border: 1px solid var(--mw-line); color: var(--mw-text); padding: 0 14px; font-family: var(--mw-body); font-size: 15px; }
.rw-join input:focus { outline: none; border-color: var(--mw-accent); }
/* v0.6 R — consent checkboxes.
   The native control rendered as a 1 px hairline glyph on this dark skin: on the one box the law
   cares about (21+) a customer could not tell checked from unchecked. These are real 22 px boxes in
   the gold system with a drawn tick, a visible focus ring, and the required one carried in its own
   bordered block labelled "Required". */
.rw-join .consent { display: flex; gap: 12px; align-items: flex-start; font-size: 13px; color: var(--mw-muted); margin-top: 12px; line-height: 1.45; cursor: pointer; }
.rw-join .consent input[type='checkbox'] {
  appearance: none;
  -webkit-appearance: none;
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  margin: 0;
  background: var(--mw-ground);
  border: 1.5px solid var(--mw-line-strong);
  display: inline-block;
  position: relative;
  cursor: pointer;
  transition: border-color 140ms, background 140ms;
}
.rw-join .consent:hover input[type='checkbox'] { border-color: var(--mw-accent); }
.rw-join .consent input[type='checkbox']:checked { background: var(--mw-accent); border-color: var(--mw-accent); }
.rw-join .consent input[type='checkbox']:checked::after {
  content: '';
  position: absolute;
  left: 6px;
  top: 2px;
  width: 7px;
  height: 12px;
  border: solid var(--mw-ground);
  border-width: 0 2.5px 2.5px 0;
  transform: rotate(45deg);
}
.rw-join .consent input[type='checkbox']:focus-visible { outline: 2px solid var(--mw-accent); outline-offset: 2px; }
.rw-join .consent.required {
  align-items: flex-start;
  margin-top: 18px;
  padding: 14px 16px;
  border: 1px solid var(--mw-line-strong);
  background: var(--mw-surface-2);
  color: var(--mw-text);
}
.rw-join .consent.required:has(input:checked) { border-color: var(--mw-accent); }
.rw-join .consent.required .req {
  display: block;
  font-size: 10px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--mw-accent);
  margin-bottom: 4px;
}
.rw-join button { margin-top: 20px; width: 100%; height: 52px; background: var(--mw-accent); color: var(--mw-ground); border: 0; font-family: var(--mw-body); font-weight: 500; font-size: 12px; letter-spacing: .28em; text-transform: uppercase; cursor: pointer; }
.rw-join button[disabled] { opacity: .5; cursor: default; }
.rw-join .ok { color: var(--mw-good, #7FA98A); margin-top: 14px; font-size: 14px; }
.rw-join .err { color: var(--mw-crit, #C4736A); margin-top: 14px; font-size: 13px; }
.rw-list { border-top: 1px solid var(--mw-line); margin: 0 0 40px; }
.rw-list .row { display: flex; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--mw-line); font-size: 14px; color: var(--mw-muted); }
.rw-list .row b { color: var(--mw-text); font-weight: 500; }
.rw-section-title { font-size: 11px; letter-spacing: .32em; text-transform: uppercase; color: var(--mw-accent); margin: 36px 0 14px; }
.rw-legal { color: var(--mw-dim); font-size: 12px; line-height: 1.6; max-width: 720px; margin: 0 auto 64px; text-align: center; }
@media (max-width: 720px) { .rw-earn { grid-template-columns: 1fr; } .rw-hero { padding-top: 40px; } }


/* --- v0.8 QA A2 / A3 / A4 / U4 — the storefront on a 360 px phone --------------------------------
   A2  the availability pill listed every city that had stock inside `white-space: nowrap`
       (730 px min-content) and pushed the product page 435 px sideways at 390 px. The label is a
       summary now (`webshop/core.py::availability_summary`) and this is the disclosure that opens
       the full list — plus a hard guard so no label can ever widen the page again.
   A3  the checkout collection picker (`.mw-boutique`, `24px 1fr auto`) had no phone breakpoint,
       so the address column could not shrink: 104 px of sideways scroll at 390 px.
   A4  Previous / Next for the listing.
   U4  360 px (small Android): the header tools + the rewards panel overflowed by 17-19 px.
   ---------------------------------------------------------------------------------------------- */
.mw-pill { max-width: 100%; min-width: 0; }
/* v0.8 QA U3 — the framework navbar (only /login and the error pages use it) ships a toggler at
   `rgba(0,0,0,.5)` on this dark ground: 1.07:1, i.e. invisible. It is a real control on a phone. */
.navbar .navbar-toggler { color: var(--mw-muted); border: 1px solid var(--mw-line-strong); }
.navbar .navbar-toggler:hover { color: var(--mw-text); }
.navbar .navbar-toggler:focus-visible { outline: 2px solid var(--mw-accent); outline-offset: 2px; }

/* v0.8 QA U1 — the developer credit in the storefront footer */
.mw-footer .dev-credit a, .mw-footer .awanz-dev-credit { color: var(--mw-dim); text-decoration: none; }
.mw-footer .dev-credit a:hover, .mw-footer .awanz-dev-credit:hover { color: var(--mw-accent); }
.mw-avail .head { flex-wrap: wrap; }
.mw-avail-more { min-width: 0; max-width: 100%; }
.mw-avail-more > summary { display: inline-flex; cursor: pointer; list-style: none; }
.mw-avail-more > summary::-webkit-details-marker { display: none; }
.mw-avail-more > summary::after { content: '+'; margin-left: 8px; color: currentColor; opacity: 0.7; letter-spacing: 0; }
.mw-avail-more[open] > summary::after { content: '\2212'; }
.mw-avail-more > summary:focus-visible { outline: 2px solid var(--mw-accent); outline-offset: 2px; }
.mw-avail-more .cities { margin-top: 10px; font-size: 13px; line-height: 1.6; color: var(--mw-muted); overflow-wrap: anywhere; }

.mw-pager { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 36px; }
.mw-pager .mw-label { text-align: center; }

.mw-boutique { min-width: 0; }
/* the four-step checkout header is a flex row of uppercase, letter-spaced labels: at min-content
   it is 491 px wide and flex items do not shrink below that, which is what actually pushed
   /shop/checkout 104 px sideways on a 390 px phone (the collection picker below it is fixed too) */
.mw-steps div { min-width: 0; }
@media (max-width: 640px) {
  .mw-steps { margin-bottom: 24px; }
  .mw-steps div { padding: 10px 8px; gap: 6px; font-size: 9px; letter-spacing: 0.12em; justify-content: center; text-align: center; }
  .mw-steps div i { width: 18px; height: 18px; flex: 0 0 18px; }
}
.mw-boutique .n, .mw-boutique .a { overflow-wrap: anywhere; }
@media (max-width: 600px) {
  .mw-boutique { grid-template-columns: 20px minmax(0, 1fr); gap: 12px; padding: 16px; }
  .mw-boutique .s { grid-column: 2; }
}

/* the rewards strip on the shop home: one column once the two buttons no longer fit beside the copy */
.mw-cta-panel { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; align-items: center; padding: 36px; }
.mw-cta-panel .actions { display: flex; gap: 12px; flex-wrap: wrap; }
@media (max-width: 760px) { .mw-cta-panel { grid-template-columns: minmax(0, 1fr); padding: 26px 20px; } }

@media (max-width: 400px) {
  .mw-header .mw-wrap { gap: 8px; }
  .mw-wordmark { font-size: 13px; letter-spacing: 0.06em; }
  /* narrower padding, but every header control stays a 44 px touch target (WCAG 2.5.5) */
  .mw-tools a, .mw-tools button { padding: 0 6px; gap: 6px; min-width: 44px; justify-content: center; }
  .mw-tools { gap: 0; }
  .mw-btn { padding: 0 18px; }
}
/* --- end v0.8 QA A2 / A3 / A4 / U4 --- */
