:root { --ink:#111210; --paper:#f1eee6; --muted:#aaa9a2; --bronze:#bda572; --line:rgba(241,238,230,.18); }
* { box-sizing:border-box; }
html { background:var(--ink); }
body { min-width:280px; margin:0; color:var(--paper); background:var(--ink); font-family:'DM Sans',sans-serif; }
body.menu-open,body.filters-open { overflow:hidden; }
button,input,select { font:inherit; }
button { cursor:pointer; }
a,button,input,select { -webkit-tap-highlight-color:transparent; }
:focus-visible { outline:2px solid var(--bronze); outline-offset:3px; }
[hidden] { display:none!important; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.storebar { position:relative; isolation:isolate; z-index:40; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; height:76px; padding:0 clamp(18px,5vw,80px); border-bottom:1px solid rgba(189,165,114,.17); background:#0c0d0b; }
.storebar::before { content:''; position:absolute; z-index:-1; inset:0 48% 0 0; pointer-events:none; opacity:.36; background:linear-gradient(90deg,rgba(12,13,11,.3),rgba(12,13,11,.85)),url('assets/hero-marble-v2.png') 45% 44% / cover; clip-path:polygon(0 0,100% 0,73% 100%,0 100%); }
.catalog-back { display:inline-flex; align-items:center; justify-content:center; width:44px; min-height:44px; color:var(--paper); text-decoration:none; }
.catalog-back svg { width:25px; height:25px; fill:none; stroke:currentColor; stroke-width:1.5; }
.catalog-back:hover { color:var(--bronze); }
.brand-mark { display:block; width:62px; height:62px; }
.brand-mark img { display:block; width:100%; height:100%; border-radius:50%; object-fit:cover; }
.menu-button { justify-self:end; display:inline-flex; align-items:center; gap:12px; min-height:44px; padding:10px 0 10px 12px; border:0; color:var(--paper); background:none; font:500 10px 'DM Mono',monospace; letter-spacing:.16em; text-transform:uppercase; }
.menu-icon { display:grid; gap:5px; width:25px; }
.menu-icon i { display:block; width:25px; height:1px; background:currentColor; transition:transform .25s,opacity .25s; }
.menu-button[aria-expanded='true'] .menu-icon i:nth-child(1) { transform:translateY(6px) rotate(45deg); }
.menu-button[aria-expanded='true'] .menu-icon i:nth-child(2) { opacity:0; }
.menu-button[aria-expanded='true'] .menu-icon i:nth-child(3) { transform:translateY(-6px) rotate(-45deg); }
.menu-backdrop { position:fixed; inset:0; z-index:35; background:rgba(0,0,0,.6); }
.site-menu { position:fixed; z-index:36; top:0; right:0; display:flex; flex-direction:column; width:min(430px,92vw); height:100dvh; padding:104px 32px 38px; background:#12110f url('assets/hero-marble-v2.png') center / cover; transform:translateX(105%); visibility:hidden; transition:transform .3s,visibility .3s; }
.site-menu.open { transform:none; visibility:visible; }
.menu-kicker { margin:0 0 32px; color:var(--bronze); font:9px 'DM Mono',monospace; letter-spacing:.16em; text-transform:uppercase; }
.site-menu a { padding:19px 0; border-top:1px solid var(--line); color:var(--paper); font:500 34px/1 'Playfair Display',Georgia,serif; text-decoration:none; }
.site-menu a:last-child { border-bottom:1px solid var(--line); }
.site-menu a:hover,.site-menu a:focus-visible,.site-menu a.active { color:var(--bronze); }
.catalog-page { width:min(1220px,100%); margin:0 auto; padding:0 clamp(24px,5vw,64px) 48px; }
h1,h2 { margin:0; font-family:'Playfair Display',Georgia,serif; font-weight:500; }
h1 { font-size:52px; line-height:1.15; letter-spacing:-.035em; }
.category-tabs { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; width:min(520px,100%); min-width:0; margin:0 auto 26px; }
.category-tabs a { display:grid; justify-items:center; gap:9px; min-width:0; padding:0 3px; color:var(--muted); font-size:13px; text-decoration:none; transition:color .2s; }
.category-tabs a[aria-current='page'] { color:var(--paper); }
.category-photo { display:block; width:74px; height:74px; padding:3px; border:1px solid transparent; border-radius:50%; transition:border-color .2s; }
/* These wide posters place the bottle in the left quarter, not at image center. */
.category-photo img { display:block; width:100%; height:100%; border-radius:50%; object-fit:cover; object-position:-10% center; }
.category-tabs a[data-category='all'] img { object-position:center; }
.category-tabs a[aria-current='page'] .category-photo,.category-tabs a:hover .category-photo { border-color:var(--bronze); }
.category-tabs a:hover { color:var(--paper); }
.catalog-tools { display:grid; grid-template-columns:minmax(0,1fr) 48px; align-items:center; width:min(720px,100%); margin:24px auto 22px; border:1px solid var(--line); border-radius:50px; background:rgba(241,238,230,.025); }
.catalog-tools:focus-within { border-color:var(--bronze); }
.search { display:flex; align-items:center; gap:12px; height:46px; padding:0 17px; border:0; background:transparent; }
.search svg,.filter-button svg { width:23px; height:23px; flex:none; fill:none; stroke:currentColor; stroke-width:1.5; }
.search input { min-width:0; width:100%; height:100%; padding:0; border:0; outline:none; color:var(--paper); background:transparent; font-size:14px; }
.search:focus-within { border-color:var(--bronze); }
.search input::placeholder { color:var(--muted); }
.filter-button { position:relative; display:grid; place-items:center; width:48px; height:34px; border:0; border-left:1px solid var(--line); color:var(--paper); background:transparent; }
.filter-button:hover,.filter-button[aria-expanded='true'] { border-color:var(--bronze); }
.filter-button svg circle { fill:var(--ink); }
#filterCount { position:absolute; top:-6px; right:-6px; display:grid; place-items:center; width:18px; height:18px; border-radius:50%; color:var(--ink); background:var(--bronze); font-size:11px; }
.filter-slot select { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23f1eee6' stroke-width='1.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-position:right center; background-size:14px; background-repeat:no-repeat; }
select option { background:#181915; color:var(--paper); }
.selection-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:30px 0 18px; }
.selection-heading h2 { font-size:32px; letter-spacing:-.035em; scroll-margin-top:18px; }
.selection-all { display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:0; border:0; background:none; color:var(--bronze); font-size:12px; white-space:nowrap; }
.selection-all svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.5; }
.suggested-section { grid-column:1/-1; }
.suggested-section:not([hidden]) + .selection-heading { margin-top:34px; padding-top:24px; border-top:1px solid var(--line); }
@media (min-width:1001px) {
  .catalog-content { display:grid; grid-template-columns:minmax(0,1fr) minmax(320px,.85fr); column-gap:48px; }
  .catalog-tools { align-self:center; margin:24px 0; }
  .category-tabs { width:100%; margin:18px 0 20px; }
  .promo-banner,.selection-heading,.gallery,.empty { grid-column:1/-1; }
}
.gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:26px; row-gap:30px; align-items:start; }
.recommendation-grid { grid-template-columns:repeat(2,minmax(0,1fr)); max-width:720px; }
.product { min-width:0; color:inherit; background:transparent; animation:card-enter .35s backwards; animation-delay:calc(var(--card-order,0) * 45ms); }
.product--updated { animation:none; }
.product-art { position:relative; display:grid; place-items:center; width:100%; aspect-ratio:1; overflow:hidden; background:#252620; color:var(--muted); text-decoration:none; border-radius:3px; clip-path:polygon(0 0,calc(100% - 13px) 0,100% 13px,100% 100%,0 100%); }
.product-art img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; transition:transform .3s,opacity .2s; }
.product-art:active img { opacity:.85; }
.product-art:focus-visible { outline-offset:-4px; }
.product-placeholder { display:flex; flex-direction:column; align-items:center; gap:10px; padding:12px; text-align:center; }
.product-placeholder svg { width:38px; height:38px; fill:none; stroke:currentColor; stroke-width:1.2; }
.product-placeholder span { max-width:14ch; font-size:12px; }
.product-copy { display:grid; gap:3px; padding-top:8px; }
.product-brand { margin:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:var(--muted); font-size:12px; line-height:1.3; }
.product h3 { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; margin:0; color:var(--paper); font:500 21px/1.3 'Playfair Display',Georgia,serif; letter-spacing:-.025em; }
.product h3 a { color:inherit; text-decoration:none; }
.product-presentations { display:grid; grid-template-columns:1fr 1fr; min-width:0; margin-top:3px; border-bottom:1px solid var(--line); }
.product-presentations button { min-width:0; min-height:44px; padding:0 4px; margin-bottom:-1px; border:0; border-bottom:2px solid transparent; color:var(--muted); background:transparent; font-size:12px; white-space:nowrap; letter-spacing:-.025em; }
.product-presentations button[aria-pressed='true'] { color:var(--paper); border-bottom-color:var(--bronze); }
.product-presentations button:hover:not(:disabled) { color:var(--paper); }
.product-presentations button:disabled { color:#777a71; cursor:not-allowed; }
.product-presentations button:focus-visible { outline-offset:-3px; }
.product-footer { display:flex; align-items:center; justify-content:space-between; gap:5px; min-width:0; }
.product-price { font-size:24px; font-weight:500; letter-spacing:-.04em; line-height:1.2; white-space:nowrap; font-variant-numeric:tabular-nums; }
.product-action { display:inline-flex; align-items:center; justify-content:flex-end; gap:7px; min-width:44px; min-height:44px; color:var(--bronze); font-size:14px; text-decoration:none; white-space:nowrap; }
.product-action svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.5; transition:transform .2s; }
.product-action:hover svg { transform:translateX(3px); }
@media (hover:hover) and (prefers-reduced-motion:no-preference) { .product-art:hover img { transform:scale(1.015); } }
@keyframes card-enter { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }
.empty { padding:48px 16px; text-align:center; }
.empty p { margin:0; color:var(--muted); font-size:16px; }
.empty button { min-height:44px; margin-top:14px; padding:8px 0; border:0; border-bottom:1px solid var(--bronze); color:var(--paper); background:none; font-size:13px; }
.filter-dialog { width:min(440px,calc(100% - 32px)); max-height:85svh; padding:0; overflow:auto; border:1px solid var(--line); border-radius:10px; color:var(--paper); background:#171814; }
.filter-dialog::backdrop { background:rgba(0,0,0,.72); }
.filter-panel { display:flex; flex-direction:column; gap:22px; padding:24px; }
.filter-header { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.filter-header h2 { font-size:28px; }
.filter-header button { width:44px; height:44px; flex:none; border:1px solid var(--line); border-radius:5px; color:var(--paper); background:none; font-size:25px; }
.filter-slot { display:grid; gap:8px; font-size:12px; color:var(--muted); }
.filter-slot select { width:100%; height:48px; appearance:none; padding:0 38px 0 14px; border:1px solid var(--line); border-radius:5px; color:var(--paper); background-color:#10110e; background-position:calc(100% - 14px) center; font-size:14px; }
.filter-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-top:6px; }
.filter-footer button { min-height:44px; border:0; color:var(--bronze); background:none; font-size:12px; }
#applyFilters { padding:0 18px; border-radius:5px; color:#17140f; background:var(--bronze); font-size:14px; font-weight:500; }
@media (min-width:601px) and (max-width:1000px) { .gallery { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:760px) {
  .storebar { height:56px; padding:0 12px; }
  .brand-mark { width:46px; height:46px; }
  .menu-button-label { display:none; }
  .catalog-page { padding:0 16px 32px; }
  h1 { font-size:40px; }
  .category-tabs { gap:8px; margin-bottom:20px; }
  .category-tabs a { font-size:12px; }
  .category-photo { width:64px; height:64px; }
  .catalog-tools { grid-template-columns:minmax(0,1fr) 44px; margin:18px auto 16px; }
  .filter-button { width:44px; }
  .product-presentations button { font-size:11px; }
  .product-price { font-size:22px; }
}
@media (max-width:600px) {
  .storebar { height:48px; }
  .brand-mark { width:42px; height:42px; }
  .hero-copy { display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
  h1 { font-size:32px; line-height:1.15; }
  .category-tabs { margin-bottom:18px; }
  .category-tabs a { gap:6px; font-size:11px; }
  .category-photo { width:60px; height:60px; }
  .search { height:44px; }
  .filter-button { height:30px; }
  .search { padding:0 11px; gap:9px; }
  .search input { font-size:13px; }
  .search svg { width:20px; height:20px; }
  .catalog-tools { margin:14px auto 16px; }
  .selection-heading { margin:22px 0 13px; }
  .selection-heading h2 { font-size:25px; }
  .selection-all { font-size:11px; gap:5px; }
  .gallery { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:14px; row-gap:16px; }
  .product-copy { padding-top:5px; gap:2px; }
  .product h3 { font-size:16px; line-height:1.3; }
  .product-brand { font-size:11px; }
  .product-presentations { margin-top:2px; }
  .product-presentations button { min-height:36px; padding:0 1px; font-size:11.5px; }
  .product-price { font-size:20px; }
  .product-action { gap:4px; font-size:12px; }
  .product-action svg { width:16px; height:16px; }
  .product-placeholder svg { width:28px; height:28px; }
  .product-placeholder span { font-size:10px; }
  .filter-dialog { width:100%; max-width:100%; margin:auto 0 0; border-radius:12px 12px 0 0; border-bottom:0; }
  .filter-panel { padding-bottom:max(24px,env(safe-area-inset-bottom)); }
}
@media (max-width:350px) {
  .catalog-page { padding-inline:12px; }
  .gallery { column-gap:10px; }
  .product-presentations button { min-height:40px; font-size:11px; letter-spacing:-.025em; line-height:1.25; }
  .presentation-size { display:block; }
  .product-price { font-size:18px; }
  .product-action { gap:3px; font-size:11px; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }
