/* ============================================================
   Special offers page. Builds on gallery.css (same :root tokens,
   buttons, .wrap/.sechead/.chipset/.sel) and only adds what an
   offer needs: struck-through old price, discount badge, stock pill.
   ============================================================ */

.off-hero {
  position: relative;
  background: linear-gradient(160deg, var(--maroon-2), var(--maroon) 45%, var(--maroon-3));
  color: #fff; text-align: center; padding: 48px 20px 44px; overflow: hidden;
}
.off-hero:before {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(circle at 50% 120%, rgba(201,162,39,.28), transparent 60%);
}
.off-hero .frame { position: absolute; inset: 16px; border: 1px solid rgba(201,162,39,.45); pointer-events: none; }
.off-hero .frame:after { content: ""; position: absolute; inset: 6px; border: 1px solid rgba(201,162,39,.22); }
.off-hero .hero-in { position: relative; max-width: 720px; margin: 0 auto; }
.off-hero h1 { font-family: var(--serif); font-size: clamp(2rem, 5vw, 3.2rem); font-weight: 700; margin: 12px 0 8px; }
.off-hero h1 em { font-style: normal; color: var(--gold-lt); }
.off-hero p { color: #f0e2cd; font-weight: 300; max-width: 540px; margin: 0 auto; }

/* ---------- toolbar ---------- */
.off-tools { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; }
.off-tools .grow { flex: 1; }

/* ---------- grid ---------- */
.off-grid {
  display: grid; gap: 30px 24px;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}

.off-card {
  background: #fff; border: 1px solid var(--line); border-radius: 4px;
  overflow: hidden; display: flex; flex-direction: column;
  box-shadow: var(--shadow); transition: transform .16s ease, box-shadow .16s ease;
}
.off-card:hover { transform: translateY(-4px); box-shadow: 0 16px 38px rgba(74,18,25,.16); }
/* Dim the photo, not the whole card — a parent opacity washes out the
   "Sold out" pill that is the one thing a customer needs to read. */
.off-card.soldout .off-shot img { filter: grayscale(.45); opacity: .78; }
.off-card.soldout .off-body { opacity: .88; }

.off-shot { position: relative; background: #f2e9d6; }
.off-shot img { width: 100%; aspect-ratio: 3/4; object-fit: cover; }
.off-shot:after { content: ""; position: absolute; inset: 9px; border: 1px solid rgba(201,162,39,.5); pointer-events: none; }

.disc-badge {
  position: absolute; top: 0; left: 0; z-index: 2;
  background: linear-gradient(180deg, var(--gold-lt), var(--gold)); color: #3a2600;
  font-size: .8rem; font-weight: 700; letter-spacing: .04em; padding: 7px 13px;
}
.stock-pill {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  background: rgba(44,11,16,.9); color: #fff; font-size: .72rem;
  padding: 5px 11px; border-radius: 999px; letter-spacing: .03em;
}
.stock-pill.low   { background: #b03a2e; }
.stock-pill.out   { background: #4a1219; color: var(--gold-lt); }

.off-body { padding: 15px 16px 18px; display: flex; flex-direction: column; flex: 1; }
.off-body h3 { font-family: var(--serif); font-size: 1.3rem; font-weight: 600; color: var(--maroon); margin: 3px 0 0; }
.off-price { display: flex; align-items: baseline; gap: 10px; margin: 10px 0 2px; flex-wrap: wrap; }
.off-price .was { color: var(--muted); font-size: .95rem; text-decoration: line-through; }
.off-price .now { color: var(--maroon); font-size: 1.5rem; font-weight: 700; line-height: 1; }
.off-price .now small { font-size: .78rem; font-weight: 400; color: var(--muted); margin-left: 3px; }
.off-save { font-size: .84rem; color: var(--ok); font-weight: 600; }
.off-note { font-size: .86rem; color: #5b4a41; margin-top: 10px; }
.off-acts { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; padding-top: 14px; }
.off-acts .btn { flex: 1; min-width: 120px; }

@media (max-width: 760px) {
  .off-grid { grid-template-columns: repeat(auto-fill, minmax(165px, 1fr)); gap: 22px 14px; }
  .off-body h3 { font-size: 1.1rem; }
  .off-price .now { font-size: 1.25rem; }
  .off-hero { padding: 34px 16px 32px; }
}

/* ---- phone: this page has no tab bar, so keep ONE useful way back and let it
   read in full. The other two links are sections of the collection page. ---- */
@media (max-width: 760px) {
  .mainnav .navlink:not(:first-child) { display: none; }
  .mainnav .navlink:first-child { white-space: nowrap; }
  .tb-in { gap: 8px; }
  .brand-main { font-size: 1.05rem; }
}
