@font-face{font-family:"Cormorant Garamond";src:local("Cormorant Garamond"),url(fonts/CormorantGaramond.ttf) format("truetype");font-weight:300 700;font-style:normal;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(fonts/CormorantGaramond-Italic.ttf) format("truetype");font-weight:300 700;font-style:italic;font-display:swap}
@font-face{font-family:"DM Sans";src:url(fonts/DMSans.ttf) format("truetype");font-weight:100 1000;font-style:normal;font-display:swap}
@font-face{font-family:"DM Sans";src:url(fonts/DMSans-Italic.ttf) format("truetype");font-weight:100 1000;font-style:italic;font-display:swap}
:root{--bg:#0b0b0c;--ch:#17171a;--tx:#ece8e1;--mu:#8d8a85;--serif:"Cormorant Garamond",Didot,"Bodoni 72",Georgia,serif;--sans:"DM Sans","Helvetica Neue",Arial,sans-serif}
*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--tx);font-family:var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.nav{position:fixed;inset:0 0 auto;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:22px 48px;background:linear-gradient(#0b0b0cdd,#0b0b0c00)}
.brand{letter-spacing:.42em;font-size:13px;font-weight:500}.links{display:flex;gap:36px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#cfcac2}.links a:hover{color:#fff}.cart span{color:var(--mu)}
.hero{position:relative;height:100vh;min-height:620px;display:grid;place-items:center;overflow:hidden;background:radial-gradient(ellipse 55% 60% at 50% 42%,#2a2a2e 0%,#141416 55%,#0b0b0c 100%)}
.hero img{height:72vh;max-width:56vw;object-fit:contain;filter:drop-shadow(0 30px 40px #0008)}
.hero-copy{position:absolute;left:48px;bottom:64px}
.eyebrow{font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--mu);margin-bottom:14px}
h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:.01em}h1{font-size:clamp(44px,6vw,92px);line-height:1;margin-bottom:28px}
.cta{display:inline-block;border:1px solid #ece8e166;padding:14px 30px;font-size:11px;letter-spacing:.28em;text-transform:uppercase;transition:.4s}.cta:hover{background:var(--tx);color:var(--bg)}
.gallery{padding:120px 0 80px;background:linear-gradient(var(--bg),var(--ch) 50%,var(--bg))}.ghead{text-align:center;margin-bottom:40px}h2{font-size:clamp(32px,4vw,54px)}
.track{display:flex;gap:28px;overflow-x:auto;scroll-snap-type:x mandatory;padding:40px calc(50vw - 190px);scrollbar-width:none;outline:none;cursor:grab}.track::-webkit-scrollbar{display:none}.track.drag{cursor:grabbing;scroll-snap-type:none}
.card{flex:0 0 380px;scroll-snap-align:center;transition:transform .5s cubic-bezier(.2,.7,.2,1),opacity .5s,filter .5s;transform:scale(var(--s,.8));opacity:var(--o,.4);filter:brightness(var(--b,.5));cursor:pointer;user-select:none}
.card .ph{aspect-ratio:4/5;overflow:hidden;background:radial-gradient(circle at 50% 35%,#2b2b2f,#111 75%);border-radius:2px}.card img{width:100%;height:100%;object-fit:cover;pointer-events:none;transition:transform .8s}.card:hover img{transform:scale(1.03)}
.card .cap{display:flex;justify-content:space-between;align-items:baseline;margin-top:18px}.card .cap b{font-family:var(--serif);font-weight:400;font-size:24px}.card .cap span{font-size:11px;color:var(--mu);letter-spacing:.2em}
.controls{display:flex;justify-content:center;align-items:center;gap:28px;margin-top:20px}.arrow{background:none;border:1px solid #ffffff2a;color:var(--tx);width:44px;height:44px;border-radius:50%;cursor:pointer;font-size:16px;transition:.3s}.arrow:hover{border-color:#fff}
.dots{display:flex;gap:10px}.dots button{width:6px;height:6px;border-radius:6px;border:0;background:#ffffff38;cursor:pointer;transition:.4s;padding:0}.dots button.on{width:26px;background:var(--tx)}
footer{padding:80px 48px 48px;border-top:1px solid #ffffff12;display:grid;gap:14px;color:var(--mu);font-size:13px}footer small{font-size:11px;letter-spacing:.08em;color:#5e5b57}
.detail{position:fixed;inset:0;z-index:50;background:radial-gradient(ellipse 70% 70% at 40% 40%,#1d1d21,#09090a);opacity:0;visibility:hidden;transition:opacity .6s,visibility .6s;overflow-y:auto}
.detail.open{opacity:1;visibility:visible}.dwrap{min-height:100%;display:grid;grid-template-columns:1.6fr 1fr;gap:56px;align-items:center;padding:90px 64px 60px;transform:translateY(30px);transition:transform .7s cubic-bezier(.2,.7,.2,1)}.detail.open .dwrap{transform:none}
.photos{display:grid;grid-template-columns:1fr 1fr;gap:20px}.photos figure{overflow:hidden}.photos img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}.photos figcaption{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--mu);margin-top:10px}
.info h3{font-size:clamp(36px,4vw,60px);line-height:1.05;margin-bottom:18px}.info p{color:#bdb8b0;line-height:1.7;max-width:36ch}.price{margin:28px 0;font-size:14px;letter-spacing:.2em;color:var(--tx)!important}
.close{position:fixed;top:24px;right:32px;width:48px;height:48px;border-radius:50%;background:none;border:1px solid #ffffff33;color:#fff;font-size:26px;cursor:pointer;z-index:2;transition:.3s}.close:hover{background:#fff;color:#000}
@media(max-width:760px){.nav{padding:18px 20px}.links{gap:16px;font-size:10px}.links a:nth-child(2){display:none}.hero-copy{left:22px;bottom:40px}.hero img{height:56vh}
.track{gap:14px;padding:30px calc(50vw - 130px)}.card{flex-basis:260px}.card .cap b{font-size:19px}.dwrap{grid-template-columns:1fr;padding:84px 20px 40px;gap:28px}.photos{gap:10px}}

h1{max-width:11ch;margin-bottom:16px}.sub{font-family:var(--serif);font-style:italic;font-size:20px;color:#bdb8b0;margin-bottom:28px}
@media(min-width:761px){.hero img{transform:translateX(14vw)}}

.viewer{position:relative}.slides{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;background:#141416}.slides::-webkit-scrollbar{display:none}
.slides figure{flex:0 0 100%;scroll-snap-align:center}.slides img{width:100%;height:min(78vh,820px);object-fit:contain;display:block;user-select:none}
.varrow{position:absolute;top:calc(50% - 40px);width:44px;height:44px;border-radius:50%;border:1px solid #ffffff44;background:#0b0b0c88;color:#fff;cursor:pointer;font-size:16px}.vprev{left:14px}.vnext{right:14px}.varrow:hover{background:#fff;color:#000}
.vdots{display:flex;gap:10px;justify-content:center;margin-top:16px}.vdots button{width:6px;height:6px;border-radius:6px;border:0;background:#ffffff38;padding:0;cursor:pointer;transition:.4s}.vdots button.on{width:26px;background:var(--tx)}
.vcap{text-align:center;font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--mu);margin-top:10px}
@media(max-width:760px){.slides img{height:62vh}}

/* Font refresh */
body{font-family:var(--sans);font-size:16px;font-weight:400;line-height:1.6}
h1,h2,h3{font-family:var(--serif);font-weight:600;letter-spacing:.005em}h1{font-weight:700}
.brand{font-family:var(--serif);font-weight:700;font-size:18px;letter-spacing:.32em}
.links,.cta,.eyebrow,.vcap,.photos figcaption,footer small,.card .cap span{font-family:var(--sans);font-weight:500}
.links{font-size:13px}.eyebrow{font-size:12px;font-weight:600}.cta{font-size:12px;font-weight:600}
.card .cap b{font-family:var(--serif);font-weight:600;font-size:26px}.card .cap span{font-size:12px}
.info p,footer p{font-size:16px}.sub{font-weight:600;font-size:22px}
.price{font-family:var(--sans);font-weight:600;font-size:20px!important;letter-spacing:.08em}
footer{font-size:15px}footer small{font-size:12px}
@media(max-width:760px){.links{font-size:11px}.card .cap b{font-size:21px}}

/* White theme */
:root{--bg:#fff;--ch:#f6f6f5;--tx:#1a1a1a;--mu:#6b6b6b;--ln:#e6e6e6}
body{background:#fff;color:var(--tx)}
.nav{background:#ffffffeb;backdrop-filter:blur(8px);border-bottom:1px solid var(--ln);padding:18px 48px}
.links{color:#1a1a1a}.links a:hover{color:#000;text-decoration:underline;text-underline-offset:6px}.cart span{color:var(--mu)}
.hero{background:radial-gradient(ellipse 55% 60% at 60% 45%,#f4f4f3 0%,#fff 70%)}
.hero img{filter:drop-shadow(0 24px 30px #0000002a)}
.sub,.info p{color:#444}
.cta{background:#1a1a1a;color:#fff;border:1px solid #1a1a1a}.cta:hover{background:#fff;color:#1a1a1a}
.gallery{background:#fff;border-top:1px solid var(--ln)}
.card{filter:none;opacity:var(--o,.4)}.card .ph{background:#f6f6f5;border:1px solid var(--ln)}
.arrow{border-color:#d4d4d4;color:var(--tx);background:#fff}.arrow:hover{border-color:#1a1a1a;background:#1a1a1a;color:#fff}
.dots button,.vdots button{background:#d0d0d0}.dots button.on,.vdots button.on{background:#1a1a1a}
footer{background:#fff;border-top:1px solid var(--ln);color:var(--mu)}footer .brand{color:var(--tx)}footer small{color:#8a8a8a}
.detail{background:#fff}
.slides{background:#f6f6f5;border:1px solid var(--ln)}
.varrow{background:#ffffffd9;border-color:#d4d4d4;color:#1a1a1a}.varrow:hover{background:#1a1a1a;color:#fff}
.close{background:#fff;border-color:#d4d4d4;color:#1a1a1a}.close:hover{background:#1a1a1a;color:#fff}
.info{border-left:1px solid var(--ln);padding-left:48px}.price{color:var(--tx)!important;border-top:1px solid var(--ln);border-bottom:1px solid var(--ln);padding:16px 0}
.ph-slot{height:min(78vh,820px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:repeating-linear-gradient(45deg,#f6f6f5 0 14px,#efefee 14px 28px);color:var(--mu);font-size:13px;letter-spacing:.2em;text-transform:uppercase;border:1px dashed #c8c8c8}
.ph-slot small{font-size:11px;letter-spacing:.12em}
.thumbs{display:flex;gap:10px;justify-content:center;margin-top:14px}.thumbs button{width:64px;height:80px;border:1px solid var(--ln);background:#f6f6f5;padding:0;cursor:pointer;overflow:hidden;opacity:.6;transition:.3s}.thumbs button.on{border-color:#1a1a1a;opacity:1}.thumbs img{width:100%;height:100%;object-fit:cover}.thumbs i{font-style:normal;color:var(--mu);font-size:12px}
@media(max-width:760px){.nav{padding:14px 20px}.info{border-left:0;padding-left:0;border-top:1px solid var(--ln);padding-top:24px}.ph-slot{height:62vh}.thumbs button{width:52px;height:64px}}
@media(min-width:761px){.slides img,.ph-slot{height:min(68vh,720px)}.dwrap{padding-top:70px}}

/* Tapstitch-style grid */
.logo{display:flex;align-items:center}.logo img{height:44px;width:auto;display:block}
.gallery{padding:110px 48px 90px}.ghead{margin-bottom:44px}
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;max-width:1320px;margin:0 auto}
.pcard{display:block;background:#fff;border:1px solid #ececec;border-radius:10px;overflow:hidden;transition:box-shadow .3s,border-color .3s}
.pimg{position:relative;aspect-ratio:1/1;background:#f5f5f5}
.pimg img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:6%;transition:opacity .45s ease}
.pimg .p1{padding:0}
.pimg .p2{opacity:0;background:#f5f5f5}
.pmeta{padding:14px 16px 16px;display:grid;gap:4px;border-top:1px solid #f0f0f0}
.pname{font-size:14px;font-weight:500;color:#1a1a1a;line-height:1.35}.pprice{font-size:13px;color:#6b6b6b}
@media(hover:hover){.pcard:hover{border-color:#d9d9d9;box-shadow:0 6px 18px #0000000f}.pcard:hover .p2{opacity:1}.pcard:hover .p1{opacity:0}}
.pcard.force-hover{border-color:#d9d9d9;box-shadow:0 6px 18px #0000000f}.pcard.force-hover .p2{opacity:1}.pcard.force-hover .p1{opacity:0}
.thumbs img{object-fit:contain}
@media(max-width:900px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.gallery{padding:90px 16px 60px}}
@media(max-width:760px){.logo img{height:40px}.pmeta{padding:10px 12px 12px}.pname{font-size:13px}.pprice{font-size:12px}}
@media(max-width:760px){.logo img{height:30px}.links{gap:14px}.cart{white-space:nowrap}}

.pname .ptag{display:block;font-size:11px;font-weight:400;color:#8a8580;letter-spacing:.02em;margin-top:2px}
.pimg{position:relative}.psize{position:absolute;left:10px;bottom:10px;z-index:3;font-size:10.5px;letter-spacing:.03em;color:#fff;background:rgba(0,0,0,.45);padding:3px 7px;border-radius:2px;opacity:0;transition:opacity .3s}
.pcard:hover .psize,.pcard.force-hover .psize{opacity:1}
.info .dtag{font-size:12px;color:#8a8580;letter-spacing:.03em;margin:-4px 0 12px}
.info .ddisc{font-size:12.5px;line-height:1.5;color:#8a8580;border-left:2px solid #ddd;padding-left:10px;margin:10px 0 14px}

/* pure white photo frames */
.pimg,.pimg img,.slides,.slides>*,.slides img{background:#fff!important}
.fw{font-family:"Cormorant Garamond",serif;font-style:italic;font-weight:500;letter-spacing:.005em;color:#fff}

.pgender{display:block;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#8a8580;margin:2px 0}.dgender{margin:0 0 8px}
