:root {
  --bg: #fbf8f3;
  --bg-alt: #f3ede4;
  --panel: rgba(255, 255, 255, 0.88);
  --panel-strong: #fffdf9;
  --line: rgba(128, 94, 49, 0.2);
  --text: #2b241c;
  --text-soft: #65594b;
  --gold: #a77c3f;
  --gold-strong: #88602d;
  --gold-soft: rgba(167, 124, 63, 0.12);
  --white: #34291e;
  --shadow: rgba(75, 53, 28, 0.14);
  --success: #386b43;
  --danger: #a63f36;
  --radius: 24px;
  --container: min(1320px, calc(100% - clamp(2rem, 6vw, 7rem)));
  --header-h: 86px;
  --transition: 240ms ease;
  --serif: 'Georgia', 'Times New Roman', serif;
  --sans: 'Segoe UI', Tahoma, sans-serif;
}

* {box-sizing:border-box;}
html {scroll-behavior:smooth; scroll-padding-top:calc(var(--header-h) + 1rem);}
body {
  margin:0; font-family:var(--sans); font-size:1.0625rem; background:var(--bg); color:var(--text);
  line-height:1.6; letter-spacing:0.01em; overflow-x:hidden;
}
body.menu-open {overflow:hidden;}
img {max-width:100%; display:block;}
a {color:inherit; text-decoration:none;}
button, input, textarea, select {font:inherit;}
button {cursor:pointer;}
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline:2px solid var(--gold);
  outline-offset:3px;
}
main {display:block;}
html, body {min-height:100%;}
body::before {
  content:""; position:fixed; inset:0; pointer-events:none;
  background:radial-gradient(circle at 10% 10%, rgba(214,170,92,0.08), transparent 20%), radial-gradient(circle at 80% 0%, rgba(214,170,92,0.08), transparent 20%);
  z-index:-1;
}

.container, .section-pad, .page-shell {width:var(--container); margin-inline:auto;}
.section-pad {padding:clamp(3.5rem,5vw,6rem) 0;}
.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;
}

h1, h2, h3, h4, .serif {
  font-family:var(--serif); font-weight:600; letter-spacing:-0.04em; margin:0;
}

p {margin:0 0 1rem; color:var(--text-soft);}
small {font-size:0.85rem; line-height:1.5;}
figure {margin:0;}

.eyebrow {
  display:inline-flex; align-items:center; gap:0.75rem; text-transform:uppercase; letter-spacing:0.18em; font-size:0.9rem; color:var(--gold);
}
.eyebrow::before {content:""; width:32px; height:1px; background:var(--gold); display:inline-block; opacity:.8;}

.button, .filter-chip, .icon-button, .mini-qty-btn, .text-link, .contact-detail-link {
  transition:transform var(--transition), background var(--transition), border-color var(--transition), opacity var(--transition), box-shadow var(--transition);
}
.button {
  display:inline-flex; align-items:center; justify-content:center; gap:0.6rem; min-height:44px; padding:0.9rem 1.3rem; border-radius:999px; border:1px solid transparent; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; font-size:0.88rem; background:transparent;
}
.button:hover, .filter-chip:hover, .icon-button:hover, .text-link:hover, .mini-qty-btn:hover {transform:translateY(-1px);}
.button-gold {background:linear-gradient(135deg, #d7bd91, #b68b50); color:#241a10; box-shadow:0 12px 30px rgba(148,109,55,.18);}
.button-outline {border-color:var(--gold); background:transparent; color:var(--text);}
.button-dark {background:var(--panel-strong); border-color:var(--line); color:var(--text);}

.text-link {display:inline-flex; align-items:center; gap:0.5rem; color:var(--text); font-weight:600; font-size:0.92rem; letter-spacing:0.03em;}
.light-link {color:var(--white);}

.gold-rule {display:inline-block; width:32px; height:1px; background:var(--gold);}

.cursor-glow {
  position:fixed; left:0; top:0; width:240px; height:240px; pointer-events:none; border-radius:50%; background:radial-gradient(circle, rgba(215,177,109,.24), rgba(215,177,109,.05) 28%, transparent 58%);
  transform:translate(-50%,-50%); opacity:0; z-index:9999; filter:blur(6px); transition:opacity .2s ease;
}
@media (max-width: 900px) { .cursor-glow {display:none;} }

.scroll-progress {position:fixed; inset:0 0 auto 0; height:3px; background:linear-gradient(90deg, var(--gold), transparent); transform-origin:left center; transform:scaleX(0); z-index:1000;}

body:not([data-page="home"]) .loading-screen {display:none;}
.loading-screen {
  position:fixed; inset:0; display:grid; place-items:center; padding:1rem; overflow:auto;
  background:linear-gradient(145deg, #f8e8df, #f5d7d5 52%, #efc4c7); z-index:1500;
  opacity:1; visibility:visible; transition:opacity .55s ease, visibility .55s ease;
}
.loading-screen.hidden {opacity:0; visibility:hidden; pointer-events:none;}
.loading-content {display:flex; width:100%; min-height:100%; flex-direction:column; align-items:center; justify-content:center; gap:0.8rem;}
.loading-brand {font-family:var(--serif); color:#34291e; font-size:clamp(2.5rem, 8vw, 4.4rem); letter-spacing:.22em; font-weight:600;}
.loading-brand-subtitle {margin-top:-.8rem; color:#88602d; font-family:var(--serif); font-size:clamp(1rem, 3vw, 1.4rem); letter-spacing:.15em;}
.loading-caption {color:#8c6738; font-family:var(--serif); font-size:clamp(.82rem, 2.2vw, .95rem); letter-spacing:.16em; text-align:center; text-transform:uppercase;}
.loading-track {width:min(190px, 52vw); height:3px; overflow:hidden; border-radius:999px; background:rgba(167,108,32,.2);}
.loading-track span {display:block; width:42%; height:100%; border-radius:inherit; background:linear-gradient(90deg, #c79642, #e3c178); animation:loadingSweep 1.25s ease-in-out infinite;}
@keyframes loadingSweep {
  from {transform:translateX(-110%);}
  to {transform:translateX(250%);}
}
@media (max-height: 560px) {
  .loading-content {gap:.45rem;}
}
@media (prefers-reduced-motion: reduce) {
  .loading-screen {transition:none;}
  .loading-track span {animation:none; width:58%;}
}

.reveal {opacity:0; transform:translateY(26px); transition:opacity .7s ease, transform .7s ease;}
.reveal.visible {opacity:1; transform:none;}

.toaster {position:fixed; right:1rem; bottom:1rem; z-index:1500; background:#fffdf9; color:var(--text); border:1px solid var(--line); border-radius:999px; padding:0.8rem 1rem; opacity:0; transform:translateY(20px); transition:.3s ease; box-shadow:var(--shadow);}
.toaster.show {opacity:1; transform:none;}

.modal {
  position:fixed; inset:0; display:grid; place-items:center; background:rgba(68,52,31,.28); backdrop-filter:blur(8px); padding:1rem; z-index:1200;
}
.modal.hidden {display:none;}
.modal-content {
  width:min(780px, 100%); max-height:90vh; overflow:auto; background:var(--bg-alt); border:1px solid var(--line); border-radius:30px; box-shadow:0 30px 60px rgba(75,53,28,.18); position:relative;
}
.modal-close {position:absolute; top:1rem; right:1rem; background:rgba(255,255,255,.82); border:1px solid var(--line); color:var(--text); width:44px; height:44px; border-radius:50%;}

.product-card {
  position:relative; padding:0.75rem; border-radius:24px; border:1px solid var(--line); background:#fffdfa; box-shadow:0 10px 32px rgba(75,53,28,.06); transition:box-shadow .3s ease, border-color .3s ease, transform .3s ease;
}
.product-card:hover {border-color:rgba(167,124,63,.38); box-shadow:0 20px 48px rgba(75,53,28,.12); transform:translateY(-3px);}
.product-card-link {display:flex; height:100%; flex-direction:column; color:inherit; text-decoration:none;}
.product-card-link:focus-visible {outline:2px solid var(--gold-strong); outline-offset:4px; border-radius:18px;}
.product-card .card-visual {display:flex; align-items:center; justify-content:center; overflow:hidden; height:clamp(240px, 27vw, 340px); border-radius:18px; background:linear-gradient(145deg, #fffefa, #f0e9df);}
.product-card img {max-width:100%; max-height:100%; width:auto; height:auto; padding:0.8rem; box-sizing:border-box; object-fit:contain;}
.product-card .product-image-unavailable {display:grid; place-items:center; width:100%; height:100%; min-height:0; padding:1.5rem; color:var(--text-soft); text-align:center; font-size:0.88rem; letter-spacing:0.08em; text-transform:uppercase;}
.product-card .card-body {display:grid; align-content:start; justify-items:center; gap:0.45rem; min-height:5.5rem; padding:1rem 0.25rem 0.65rem; text-align:center;}
.product-card h3 {font-size:1.25rem; line-height:1.15; margin:0;}
.product-card-size {color:var(--gold-strong); font-size:0.92rem; font-weight:600; letter-spacing:0.06em;}
.product-card-price {color:var(--text); font-size:1.04rem; font-weight:700; letter-spacing:0.02em;}
.product-wishlist-button {min-height:44px; padding:0.55rem 0.9rem; border:1px solid var(--line); border-radius:999px; background:var(--panel-strong); color:var(--text-soft); font-size:0.88rem;}
.product-wishlist-button.active {border-color:rgba(167,124,63,.48); background:var(--gold-soft); color:var(--text);}

@media (max-width: 620px) {
  .product-card .card-visual {min-height:280px; height:280px;}
  .product-card .product-image-unavailable {min-height:280px; height:280px;}
  .product-card .card-body {min-height:5.7rem;}
  .button {font-size:0.82rem;}
}
@media (prefers-reduced-motion: reduce) {
  .product-card {transition:none;}
}

.footer {
  border-top:1px solid var(--line); margin-top:5rem; background:#f5f0e8; padding:3rem 0 1.5rem;
}
.footer-grid {display:grid; grid-template-columns:1.2fr .8fr .8fr 1fr; gap:2rem; width:var(--container); margin:0 auto 2rem;}
.footer-brand {max-width:300px;}
.footer-links {display:grid; gap:0.7rem;}
.footer-links a {color:var(--text-soft);}
.footer-links .footer-email-link {display:inline-flex; align-items:center; min-height:44px; max-width:100%; overflow-wrap:anywhere;}
.footer-bottom {width:var(--container); margin:0 auto; padding-top:1rem; border-top:1px solid var(--line); display:flex; justify-content:space-between; gap:1rem; color:var(--text-soft); font-size:0.9rem;}
@media (max-width: 900px) { .footer-grid {grid-template-columns:1fr 1fr;} }
@media (max-width: 560px) { .footer-grid {grid-template-columns:1fr;} .footer-bottom {flex-direction:column;} }

.product-detail-layout {display:grid; grid-template-columns:1.1fr .9fr; gap:2rem; align-items:start;}
.masonry-grid {columns:3; column-gap:1rem;}
.masonry-item {display:block; width:100%; margin:0 0 1rem; padding:0; overflow:hidden; break-inside:avoid; border-radius:24px; border:1px solid var(--line); background:var(--panel); cursor:pointer; transition:transform .35s ease, border-color .35s ease, box-shadow .35s ease;}
.masonry-item img {width:100%; height:auto; object-fit:contain;}
.masonry-item:hover {transform:translateY(-3px); border-color:rgba(215,177,109,.55); box-shadow:0 16px 34px rgba(0,0,0,.24);}

@media (max-width: 900px) {
  .product-detail-layout {grid-template-columns:1fr;}
  .masonry-grid {columns:2;}
}
@media (max-width: 560px) {
  .masonry-grid {columns:1;}
}

@media (prefers-reduced-motion: reduce) {
  html {scroll-behavior:auto;}
  *, *::before, *::after {
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    scroll-behavior:auto !important;
    transition-duration:0.01ms !important;
  }
}
