/* Melbourne Candle Co. Brand tokens from "Logos + fonts + Swatches MCCo. Branding.ai". */
:root {
  --ink: #231f20;          /* brand black */
  --ink-2: #4f4a4b;        /* secondary text, 8.4:1 on paper */
  --paper: #fffaf2;        /* page background, warm white */
  --white: #ffffff;
  --cream: #f6e0b1;        /* brand cream tan */
  --cream-soft: #fbf0d8;   /* quiet panels */
  --green: #005433;        /* brand deep green */
  --green-dark: #003d25;
  --sage: #7bb18d;         /* brand sage green */
  --sage-soft: #e4efe6;
  --rule: #e2d8c6;
  --destructive: #b3261e;
  --radius-control: 999px;
  --radius-sm: 6px;
  --radius-lg: 18px;
  --font: "Jost", "Futura", "Century Gothic", system-ui, sans-serif;
  --gutter: clamp(16px, 4vw, 48px);
  --measure: 62ch;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font);
  font-size: 1.0625rem;
  line-height: 1.6;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Display voice: Futura-style geometric headings */
.display {
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -0.015em;
  color: var(--green);
}

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 20;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 10px var(--gutter);
  background: var(--paper);
  border-bottom: 1px solid var(--rule);
}
.brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.brand img { width: 64px; height: auto; }
.brand span { font-weight: 500; font-size: 1.05rem; letter-spacing: 0.02em; }
@media (max-width: 560px) { .brand span { display: none; } .brand img { width: 54px; } }
.site-nav { display: flex; align-items: center; gap: clamp(12px, 3vw, 28px); font-size: 0.98rem; }
.site-nav a { text-decoration: none; }
.site-nav a:hover, .site-nav a[aria-current="page"] { text-decoration: underline; text-decoration-color: var(--sage); text-decoration-thickness: 2px; text-underline-offset: 6px; }
.cart-button {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 16px;
  border: 1px solid var(--green);
  border-radius: var(--radius-control);
  background: var(--paper);
  color: var(--green);
  cursor: pointer;
}
.cart-button:hover { background: var(--sage-soft); }
.cart-button .count {
  min-width: 1.4em; padding: 0 5px;
  border-radius: 999px;
  background: var(--green); color: var(--white);
  font-size: 0.8rem; text-align: center; line-height: 1.5;
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 13px 28px;
  border: 1px solid var(--green);
  border-radius: var(--radius-control);
  background: var(--green); color: var(--white);
  font-weight: 500; letter-spacing: 0.02em; text-decoration: none; cursor: pointer;
}
.btn:hover { background: var(--green-dark); }
.btn[disabled] { opacity: 0.4; cursor: not-allowed; }
.btn-quiet { background: transparent; color: var(--green); }
.btn-quiet:hover { background: var(--sage-soft); }
.text-link { background: none; border: 0; padding: 0; cursor: pointer; color: var(--green); text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Home: hero ---------- */
.hero {
  display: grid; gap: clamp(24px, 4vw, 56px); align-items: center;
  padding: clamp(32px, 6vw, 80px) var(--gutter) clamp(32px, 5vw, 64px);
}
@media (min-width: 900px) { .hero { grid-template-columns: 6fr 5fr; } }
.hero h1 { margin: 0; max-width: 15ch; font-size: clamp(2.6rem, 6.4vw, 5.4rem); }
.hero p { max-width: 46ch; margin: 20px 0 0; font-size: clamp(1.05rem, 1.5vw, 1.25rem); color: var(--ink-2); }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px; margin-top: 28px; }
.hero-media { position: relative; }
.hero-media .photo {
  width: 100%; aspect-ratio: 1 / 1; object-fit: cover;
  border-radius: var(--radius-lg);
  background: var(--cream-soft);
}
.hero-media .wick {
  position: absolute; left: -6%; bottom: -8%;
  width: clamp(96px, 22%, 150px); height: auto;
}

/* ---------- Home: the gazetteer ---------- */
.gazetteer { padding: 0 var(--gutter) clamp(40px, 7vw, 80px); }
.finder-band {
  display: grid; gap: 8px 24px; align-items: end;
  padding: clamp(22px, 3vw, 32px) clamp(18px, 3vw, 36px);
  border-radius: var(--radius-lg);
  background: var(--cream);
  margin-bottom: 32px;
}
@media (min-width: 760px) { .finder-band { grid-template-columns: 1fr auto; } }
.finder-band .tram { display: none; width: clamp(150px, 16vw, 210px); height: auto; margin-bottom: -6px; }
@media (min-width: 760px) { .finder-band .tram { display: block; } }
.finder { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px 18px; }
.finder label { font-weight: 600; font-size: 1.1rem; color: var(--green); }
.finder input {
  flex: 1 1 260px;
  min-width: 0;
  padding: 6px 0;
  border: 0; border-bottom: 2px solid var(--green);
  background: transparent;
  font-weight: 500;
  font-size: clamp(1.5rem, 3.6vw, 2.4rem);
  line-height: 1.15;
}
.finder input::placeholder { color: #8c7f68; }
.finder input:focus { outline: none; border-bottom-width: 4px; }
.finder .hint { flex-basis: 100%; margin: 0; color: var(--ink-2); font-size: 0.95rem; }

.index {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
  gap: 26px 32px;
}
.index-group { break-inside: avoid; }
.index-group h2 {
  margin: 0 0 6px;
  font-size: clamp(2.6rem, 5vw, 3.6rem);
  color: var(--sage);
}
.index-group ul { list-style: none; margin: 0; padding: 0; }
.index-group li a {
  display: block;
  padding: 3px 0;
  text-decoration: none;
  font-size: 1.05rem;
}
.index-group li a:hover, .index-group li a:focus-visible { color: var(--green); text-decoration: underline; text-underline-offset: 4px; }
.index-empty { padding: 24px 0; font-size: 1.15rem; }
.index-status { color: var(--ink-2); }

/* ---------- Home: request a location ---------- */
.request {
  display: grid; gap: clamp(20px, 4vw, 48px); align-items: center;
  margin: 0 var(--gutter) clamp(40px, 7vw, 80px);
  padding: clamp(24px, 4vw, 48px);
  border-radius: var(--radius-lg);
  background: var(--sage-soft);
}
@media (min-width: 900px) { .request { grid-template-columns: 3fr 8fr; } }
.request .wick { width: clamp(140px, 60%, 260px); height: auto; margin: 0 auto; }
.request h2 { margin: 0 0 8px; font-size: clamp(2rem, 4.4vw, 3.2rem); }
.request p { margin: 0 0 20px; max-width: 54ch; color: var(--ink-2); }
.form-grid { display: grid; gap: 14px 18px; }
@media (min-width: 640px) { .form-grid { grid-template-columns: 1fr 1fr; } .form-grid .full { grid-column: 1 / -1; } }
.form-grid label { display: flex; flex-direction: column; gap: 6px; font-weight: 500; font-size: 0.95rem; }
.form-grid input, .form-grid textarea {
  width: 100%; padding: 11px 14px;
  border: 1px solid #b9cdbf; border-radius: var(--radius-sm);
  background: var(--white);
}
.form-grid textarea { min-height: 96px; resize: vertical; }
.form-grid input:focus, .form-grid textarea:focus { outline: 2px solid var(--green); outline-offset: 1px; border-color: var(--green); }
.form-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.form-status { margin: 0; font-size: 0.95rem; }
.form-status.ok { color: var(--green); font-weight: 500; }
.form-status.err { color: var(--destructive); }

/* ---------- Product tiles (home + shop) ---------- */
.range { padding: clamp(40px, 7vw, 88px) var(--gutter); border-top: 1px solid var(--rule); }
.range h2, .page-head h1 { margin: 0 0 24px; font-size: clamp(2.2rem, 5vw, 3.8rem); }
.tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 28px; }
.tile { position: relative; display: flex; flex-direction: column; }
.tile a.tile-link { display: flex; flex-direction: column; text-decoration: none; }
.tile-media {
  aspect-ratio: 4 / 5;
  background: var(--cream-soft);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: grid; place-items: center;
}
.tile-media img { width: 100%; height: 100%; object-fit: cover; }
.tile-media .placeholder-word { font-size: clamp(2rem, 4.4vw, 3rem); text-align: center; padding: 16px; }
.tile-name { margin: 14px 0 2px; font-weight: 500; font-size: 1.2rem; overflow-wrap: anywhere; }
.tile-price { margin: 0; color: var(--ink-2); }
.tile .btn { margin-top: 14px; align-self: flex-start; }
.tile.skeleton .tile-media { animation: none; }

/* ---------- Home: about the labels ---------- */
.about {
  display: grid; gap: 24px; align-items: center;
  padding: clamp(40px, 7vw, 88px) var(--gutter);
  background: var(--green); color: var(--paper);
}
.about h2 { margin: 0 0 20px; font-size: clamp(2.2rem, 5vw, 3.8rem); color: var(--cream); }
.about p { max-width: var(--measure); margin: 0 0 1em; font-size: 1.1rem; }
.about a { color: var(--cream); }
.about .wick { width: clamp(150px, 50%, 280px); height: auto; margin: 0 auto; }
@media (min-width: 900px) { .about { grid-template-columns: 7fr 4fr; } }

/* ---------- Home: wholesale ---------- */
.wholesale {
  display: grid; gap: 24px; align-items: center;
  padding: clamp(40px, 7vw, 80px) var(--gutter);
}
@media (min-width: 900px) { .wholesale { grid-template-columns: 4fr 7fr; } }
.wholesale .wick { width: clamp(160px, 70%, 300px); height: auto; margin: 0 auto; }
.wholesale h2 { margin: 0 0 12px; font-size: clamp(2rem, 4.4vw, 3.2rem); }
.wholesale p { max-width: 54ch; margin: 0 0 22px; color: var(--ink-2); }

/* ---------- Footer ---------- */
.site-footer { position: relative; margin-top: 64px; background: var(--cream); }
.site-footer .shelf { position: absolute; right: var(--gutter); top: 0; transform: translateY(-82%); width: clamp(170px, 22vw, 260px); height: auto; }
.footer-inner {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px 32px;
  padding: 36px var(--gutter) 40px;
  font-size: 0.95rem;
}
.footer-inner img { width: 84px; height: auto; }
.footer-inner p { margin: 0; }
.footer-links { display: flex; flex-wrap: wrap; gap: 8px 24px; }

/* ---------- Shop page ---------- */
.page-head {
  display: grid; gap: 16px 32px; align-items: end;
  padding: clamp(32px, 6vw, 72px) var(--gutter) 8px;
}
@media (min-width: 760px) { .page-head { grid-template-columns: 1fr auto; } }
.page-head p { max-width: 52ch; margin: 0; color: var(--ink-2); }
.page-head .wick { width: clamp(110px, 12vw, 160px); height: auto; }
.shop-grid { padding: 24px var(--gutter) clamp(48px, 8vw, 96px); }

/* ---------- Product page ---------- */
.crumbs { padding: 16px var(--gutter) 0; font-size: 0.9rem; color: var(--ink-2); }
.crumbs a { color: var(--ink-2); }
.pdp { display: grid; gap: 24px; padding: 16px var(--gutter) clamp(48px, 8vw, 96px); }
@media (min-width: 860px) {
  .pdp { grid-template-columns: minmax(0, 1fr) minmax(320px, 520px); gap: 48px; align-items: start; }
  .pdp-buy { position: sticky; top: 100px; }
}
.pdp-media .main {
  background: var(--cream-soft);
  border-radius: var(--radius-lg);
  display: grid; place-items: center;
  aspect-ratio: 1 / 1;
  max-height: 60vh;
  overflow: hidden;
}
@media (min-width: 860px) { .pdp-media .main { max-height: none; } }
.pdp-media .main img { width: 100%; height: 100%; object-fit: contain; }
.pdp-media .placeholder-word { font-size: clamp(2.4rem, 7vw, 5rem); text-align: center; padding: 20px; overflow-wrap: anywhere; color: var(--green); }
.thumbs { display: flex; gap: 8px; margin-top: 10px; overflow-x: auto; }
.thumbs button { flex: 0 0 76px; height: 76px; padding: 0; border: 1px solid var(--rule); border-radius: var(--radius-sm); overflow: hidden; background: var(--cream-soft); cursor: pointer; }
.thumbs button[aria-pressed="true"] { border: 2px solid var(--green); }
.thumbs img { width: 100%; height: 100%; object-fit: cover; }

.pdp-buy h1 { margin: 0; font-size: clamp(2.2rem, 4.4vw, 3.4rem); }
.pdp-price { margin: 10px 0 22px; font-size: 1.35rem; font-weight: 500; }
.field { margin: 0 0 20px; padding: 0; border: 0; min-width: 0; }
.field legend, .field > label { display: block; margin-bottom: 8px; font-weight: 600; }
.pills { display: flex; flex-wrap: wrap; gap: 8px; }
.pill {
  padding: 7px 15px;
  border: 1px solid var(--rule);
  border-radius: var(--radius-control);
  background: var(--white);
  font-size: 0.95rem;
  cursor: pointer;
}
.pill:hover { border-color: var(--green); }
.pill[aria-pressed="true"] { background: var(--green); color: var(--white); border-color: var(--green); }
.pill[disabled] { opacity: 0.35; text-decoration: line-through; cursor: not-allowed; }
.select {
  width: 100%;
  padding: 12px 40px 12px 16px;
  border: 1px solid var(--green);
  border-radius: var(--radius-sm);
  background: var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23005433' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 16px center;
  appearance: none;
  font-size: 1.05rem;
}
.field-note { margin: 8px 0 0; font-size: 0.9rem; color: var(--ink-2); }
.buy-row { display: flex; gap: 10px; align-items: stretch; }
.stepper { display: inline-flex; align-items: center; border: 1px solid var(--green); border-radius: var(--radius-control); }
.stepper button { width: 40px; height: 100%; border: 0; background: none; font-size: 1.15rem; cursor: pointer; }
.stepper button[disabled] { opacity: 0.35; cursor: not-allowed; }
.stepper span { min-width: 1.6em; text-align: center; font-variant-numeric: tabular-nums; }
.buy-row .btn { flex: 1; }
.reason { margin: 10px 0 0; color: var(--ink-2); font-size: 0.95rem; }
.error { margin: 10px 0 0; color: var(--destructive); font-size: 0.95rem; }
.switch-product { margin: 22px 0 0; }
.switch-product a { color: var(--green); }
.pdp-copy { margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--rule); max-width: var(--measure); }
.pdp-copy h2 { font-weight: 500; font-size: 1.25rem; color: var(--green); }
.pdp-copy p { margin: 0 0 1em; }
.notfound { padding: 64px var(--gutter); }

/* ---------- Cart drawer ---------- */
.drawer-scrim { position: fixed; inset: 0; z-index: 50; display: flex; justify-content: flex-end; background: rgba(35, 31, 32, 0.45); }
.drawer {
  display: flex; flex-direction: column;
  width: 100%; max-width: 440px; height: 100%;
  background: var(--paper);
  outline: none;
}
.drawer-head { display: flex; justify-content: space-between; align-items: center; padding: 18px 22px; border-bottom: 1px solid var(--rule); }
.drawer-head strong { font-size: 1.15rem; font-weight: 500; color: var(--green); }
.drawer-close { border: 0; background: none; font-size: 1.6rem; line-height: 1; cursor: pointer; }
.drawer-body { flex: 1; overflow-y: auto; padding: 20px 22px; }
.drawer-empty { padding: 56px 0; text-align: center; color: var(--ink-2); }
.line { display: flex; gap: 14px; margin-bottom: 22px; }
.line-img { flex: 0 0 64px; height: 64px; border-radius: var(--radius-sm); background: var(--cream-soft); object-fit: cover; }
.line-main { flex: 1; min-width: 0; }
.line-name { margin: 0; font-weight: 500; }
.line-meta { margin: 2px 0 0; font-size: 0.88rem; color: var(--ink-2); }
.line-status { margin: 4px 0 0; font-size: 0.88rem; color: var(--destructive); }
.line-controls { display: flex; align-items: center; gap: 12px; margin-top: 8px; }
.line-controls .stepper button { width: 32px; height: 30px; }
.line-price { text-align: right; font-weight: 500; white-space: nowrap; }
.line-price s { display: block; font-weight: 400; font-size: 0.85rem; color: var(--ink-2); }
.drawer-extras { display: flex; flex-direction: column; gap: 14px; padding-top: 14px; border-top: 1px solid var(--rule); }
.drawer-extras form { display: flex; gap: 8px; }
.drawer-extras input, .drawer-extras textarea { flex: 1; min-width: 0; padding: 9px 12px; border: 1px solid var(--rule); border-radius: var(--radius-sm); background: var(--white); }
.drawer-extras label { display: flex; flex-direction: column; gap: 6px; font-size: 0.9rem; font-weight: 500; }
.drawer-foot { padding: 18px 22px 22px; border-top: 1px solid var(--rule); }
.totals { margin: 0 0 10px; }
.totals div { display: flex; justify-content: space-between; gap: 12px; font-size: 0.95rem; }
.totals .total { margin-top: 6px; padding-top: 8px; border-top: 1px solid var(--rule); font-weight: 600; font-size: 1.05rem; }
.drawer-note { margin: 0 0 14px; font-size: 0.85rem; color: var(--ink-2); }
.drawer-foot .btn { width: 100%; }

@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
/* ---------- Account and wholesale ---------- */
.lead { font-size: 1.15rem; color: var(--ink-2); max-width: 56ch; }
.account-page, .ws-hero {
  display: grid; gap: clamp(20px, 4vw, 48px); align-items: center;
  padding: clamp(32px, 6vw, 72px) var(--gutter);
}
@media (min-width: 860px) { .account-page, .ws-hero { grid-template-columns: 7fr 4fr; } }
.account-page h1, .ws-hero h1 { margin: 0 0 12px; font-size: clamp(2.4rem, 5.6vw, 4.2rem); }
.account-page .wick, .ws-hero .wick { width: clamp(150px, 60%, 280px); height: auto; margin: 0 auto; }
.perk { margin: 24px 0; padding: 20px 24px; border-radius: var(--radius-lg); background: var(--sage-soft); max-width: 60ch; }
.perk h2 { margin: 0 0 8px; font-weight: 500; font-size: 1.35rem; color: var(--green); }
.perk p { margin: 0 0 8px; }
.account-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.ws-status { margin-top: 18px; }
.ok-banner { padding: 14px 18px; border-radius: var(--radius-sm); background: var(--sage-soft); color: var(--green); font-weight: 500; }
.ws-terms { padding: 0 var(--gutter) clamp(32px, 6vw, 64px); }
.ws-terms h2 { margin: 0 0 18px; font-size: clamp(2rem, 4.4vw, 3rem); }
.ws-steps { max-width: 70ch; padding-left: 1.3em; margin: 0 0 22px; }
.ws-steps li { margin: 0 0 10px; }
.ws-facts { display: flex; flex-wrap: wrap; gap: 10px 28px; list-style: none; margin: 0; padding: 16px 20px; border-radius: var(--radius-lg); background: var(--cream); }
.request .full-span { grid-column: 1 / -1; }
.cart-min { margin: 0 0 12px; padding: 10px 12px; border-radius: var(--radius-sm); background: var(--cream-soft); font-size: 0.92rem; }

/* Wholesale application: dropdowns and product checkboxes */
.form-grid select { width: 100%; padding: 11px 14px; border: 1px solid #b9cdbf; border-radius: var(--radius-sm); background: var(--white); font: inherit; color: inherit; }
.form-grid select:focus { outline: 2px solid var(--green); outline-offset: 1px; border-color: var(--green); }
.form-grid .checks { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px 22px; min-width: 0; }
.form-grid .checks legend { font-weight: 500; font-size: 0.95rem; margin-bottom: 8px; padding: 0; }
.form-grid .checks label { flex-direction: row; align-items: center; gap: 8px; font-weight: 400; }
.form-grid .checks input { width: auto; padding: 0; accent-color: var(--green); }