.product-body{padding-top:var(--headerH);background:var(--paper)}.catalogue-product-page{max-width:1620px;margin:0 auto;padding:clamp(40px,4.5vw,72px) var(--gutter) 110px}.catalogue-product-main{display:grid;grid-template-columns:minmax(0,1.32fr) minmax(300px,.6fr);gap:clamp(40px,5vw,84px);align-items:start}.catalogue-gallery{min-width:0}.catalogue-primary-frame{position:relative;width:min(100%,1200px,calc((115svh - var(--headerH)) * var(--media-ar,.6667)));margin:auto;aspect-ratio:var(--media-ratio,2/3);background:var(--cream);overflow:hidden}.catalogue-primary-image{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;object-position:center;background:var(--cream);transition:opacity .2s ease}
/* Horizontal same-product gallery. Native overflow + scroll-snap handles touch swipe,
   trackpad/wheel and click-drag, so no second carousel library is needed. */
.catalogue-gallery-track{display:flex;height:100%;width:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;-ms-overflow-style:none}
.catalogue-gallery-track::-webkit-scrollbar{display:none}
.catalogue-gallery-track:focus-visible{outline:2px solid var(--maroon);outline-offset:-2px}
.catalogue-gallery-slide{position:relative;flex:0 0 100%;height:100%;scroll-snap-align:center;scroll-snap-stop:always;display:grid;place-items:center}
.catalogue-gallery-track.is-static{overflow-x:hidden;scroll-snap-type:none}.catalogue-thumbs{display:flex;gap:10px;overflow-x:auto;padding:14px 0 6px;scrollbar-width:none}.catalogue-thumbs::-webkit-scrollbar{display:none}.catalogue-thumb{flex:0 0 auto;width:74px;height:92px;padding:0;border:1px solid transparent;background:var(--cream);overflow:hidden;opacity:.55}.catalogue-thumb.active{opacity:1;border-color:var(--ink)}.catalogue-thumb img{width:100%;height:100%;display:block;object-fit:contain;background:var(--cream)}.catalogue-product-info{padding-top:5vw;max-width:440px}.catalogue-product-info h1{margin:8px 0 20px;font:clamp(52px,7vw,92px)/.9 var(--serif);font-weight:400}.catalogue-product-info p{color:var(--muted);font-size:var(--fs-lead);line-height:1.75}.catalogue-collection-link{display:inline-block;margin-top:28px;padding-bottom:7px;border-bottom:1px solid var(--ink);font-size:var(--fs-label);letter-spacing:.13em;text-transform:uppercase}.catalogue-related{margin-top:clamp(90px,12vw,160px)}.catalogue-related>small,.catalogue-related>h2{text-align:center}.catalogue-related h2{margin:7px 0 35px;font:clamp(38px,5vw,64px) var(--serif);font-weight:400}.catalogue-related-row{display:flex;gap:18px;overflow-x:auto;padding-bottom:16px;scrollbar-width:none}.catalogue-related-row::-webkit-scrollbar{display:none}.catalogue-related-card{flex:0 0 220px}.catalogue-related-card-image{background:var(--cream);aspect-ratio:var(--related-ratio,2/3)}.catalogue-related-card img{display:block;width:100%;height:100%;object-fit:contain;background:var(--cream)}.catalogue-related-card small{margin:12px 0 5px}.catalogue-related-card h3{margin:0;font:25px var(--serif);font-weight:400}.catalogue-not-found{min-height:55vh;display:grid;place-content:center;text-align:center}.catalogue-not-found h1{font:60px var(--serif);font-weight:400}@media(max-width:900px){.catalogue-product-main{grid-template-columns:1fr}.catalogue-product-info{padding-top:20px;max-width:700px}.catalogue-primary-frame{max-width:760px}}@media(max-width:600px){.catalogue-product-page{padding:40px var(--gutter) 80px}.catalogue-primary-frame{width:min(100%,calc((100svh - var(--headerH) - 100px) * var(--media-ar,.6667)))}.catalogue-thumb{width:64px;height:80px}.catalogue-related-card{flex-basis:62vw}}

/* ---- gallery autoplay toggle ----
   Sits on the existing .catalogue-primary-frame (position:relative) and after
   the track in the DOM, so it stacks above the slides without restructuring the
   preserved gallery. Small glass chip in the site's ink-on-cream language; the
   pause/play glyph is drawn from pseudo-elements so no icon markup is swapped
   and the accessible name lives on the button's aria-label. */
.catalogue-gallery-toggle{position:absolute;right:14px;bottom:14px;z-index:3;width:44px;height:44px;display:grid;place-items:center;padding:0;border:1px solid rgba(23,19,17,.16);border-radius:50%;background:rgba(251,250,247,.82);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink);cursor:pointer;opacity:.72;transition:opacity .2s ease,background .2s ease,transform .2s ease}
.catalogue-gallery-toggle:hover,.catalogue-gallery-toggle:focus-visible{opacity:1;background:rgba(251,250,247,.96)}
.catalogue-gallery-toggle:active{transform:scale(.94)}
.catalogue-gallery-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.catalogue-gallery-toggle-icon{position:relative;display:block;width:12px;height:12px}
.catalogue-gallery-toggle-icon::before,.catalogue-gallery-toggle-icon::after{content:"";position:absolute;top:0;width:3px;height:12px;background:currentColor;transition:opacity .2s ease,width .2s ease,height .2s ease,border-width .2s ease}
/* playing -> show pause (two bars) */
.catalogue-gallery-toggle-icon::before{left:1px}
.catalogue-gallery-toggle-icon::after{right:1px}
/* paused -> the bars collapse into a single play triangle */
.catalogue-gallery-toggle[aria-pressed="true"] .catalogue-gallery-toggle-icon::before{left:0;width:0;height:0;background:none;border-left:10px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent}
.catalogue-gallery-toggle[aria-pressed="true"] .catalogue-gallery-toggle-icon::after{opacity:0}
@media(max-width:600px){.catalogue-gallery-toggle{right:10px;bottom:10px;width:40px;height:40px}}
@media(prefers-reduced-motion:reduce){.catalogue-gallery-toggle,.catalogue-gallery-toggle-icon::before,.catalogue-gallery-toggle-icon::after{transition:none}}
